개발 공부/네트워크 기초

HTTPS, https 암호화 방법, 공개키, 개인키,hash, salt 기본 개념정리

크롱이크 2021. 8. 5. 23:11

http vs https

http

HTTP는 하이퍼 텍스트 전송 프로토콜의(Hypertext Transfer Protocol)의 약자이다.

서로 다른 시스템들 사이에서 통신을 주고받게 해주는 가장 기초적인 프로토콜

일반 HTTP 프로토콜의 문제점은 서버에서부터 브라우저로 전송되는 정보가 암호화되지 않는다는 것이다.

https

HTTPS는 하이퍼 텍스트 전송 프로토콜 보안(Hypertext Transfer Protocol Secure)의 약자이다.

https는 쉽게 말해서 https 프로토콜에 보안 기능을 추가한 것이다.

사용자가 사이트에 제공하는 정보를 암호화하는데, 쉽게 말해서 데이터를 암호로 바꾼다고 생각하면 쉽다.

이렇게 전송된 데이터는 중간에서 누군가 훔쳐 낸다고 하더라도 데이터가 암호화되어있기 때문에 해독할 수 없다.

그 외에도 HTTPS는 TLS(전송 계층 보안) 프로토콜을 통해서도 보안을 유지한다.

 

https에서 꼭 기억할 것!

1) https는 웹사이트의 무결성을 보호한다.

-전송 중에 외부로부터 데이터가 변조되지 않는다.

2) 사용자의 개인정보를 보호한다.(기밀성)

 

https의 암호화 방법

1) 대칭키 암호화 방법 => hash

2) 비대칭키 암호화 방법 => https에서 많이 사용되고, 서로가 서로를 풀 수 있다.

 2-1)공개키(Public key) 

사용자들에게 노출되는 키이다. 클라이언트가 가지고 있다.

브라우저에 저장, 인증서 저장 공간이 있다.

cert.pem

2-2) 개인키(private key)

서버에서 주는  이다

key.pem

 

hash

우리의 비밀번호를 그대로 노출시키지 않기위해서 비빌번호를 암호화해서 

디비와 서버에 가진다.

어떠한 문자열에 '임의의 연산'을 적용하여 다른 문자열로 변환하는 것

1. 모든 값에 대해 해시 값을 계산하는데 오래걸리지 않아야 한다.

2. 최대한 해시 값을 피해야 하며, 모든 값은 고유한 해시 값을 가진다.

3. 아주 작은 단위의 변경이라도 완전히 다른 해시 값을 가져야 한다.

복호화는 해쉬로 가능한가?

언제가는 가능하지만...사실상 불가능 몇십년걸림

 

해쉬해보기

https://emn178.github.io/online-tools/sha256.html

 

 

salt

암호화해야 하는 값에 어떤 '별도의 값'을 추가하여 결과를 변형하는 것

 

1)암호화만 해놓는다면 해시된 결과가 늘 동일

2)암호화된 해시 값과 salt(공개키) 를 추가하여 해쉬를 진행한다면 더욱 강력해진 암호가 된다.

Key Derivation Function : salt hash 여러번 해서 복잡도를 늘리는 방식

 

반응형