[얄팍한 코딩사전]Https

devdevedddddd·2023년 1월 2일

Https

Hyper Text Transfer Protocol Secure

http 에 비해 S 가 추가되었다.

http 로 전송하게 되면 데이터가 노출된다. (암호화 되지 않음)

다른 하나는 접속한 사이트가 진짜인지 확인해준다.

피싱 사이트 등을 판별하기 위함이다.

기관으로부터 검증된 사이트만 주소에 https 사용이 허가되기 때문이다.

    1. 내가 사이트에 보내는 정보들을 제 3자가 못 보게 한다.
    1. 접속한 사이트가 믿을만한 곳인지를 알려준다.

대칭키와 비대칭키

  • 대칭키

메시지를 보내는 쪽과 받는 쪽이 메시지를 암호화하고 이를 다시 메시지로 바꾸는 즉 복호화하는 같은 방식을 공유하는거다.

컴퓨터에서 사용하는 대칭키는 이 표와 같다.

상대방에게 보내고자 하는 메시지를 이 '키'와 함께 어떤 알고리즘에 넣고 돌리면

이처럼 알수 없는 암호문이 완성된다.

거꾸로 알고리즘을 돌리면 이것을 복호화라고 하고 메시지가 나온다.

그런데 문제는, 처음 한번은 한쪽에서 다른 한 쪽으로 이 키를 전송해야 하는데,

중간에 누가 가로채면 문제가 발생한다.

  • 비 대칭키

각기 다른 한 쌍의 키가 있다. 서로 다르기 때문에 '비대칭키' 라고 불린다.

이 암호화 방식은 보통 '공개키' 라고 불린다.

여기서는 A 키로 암호화하면 B 키로만 복호화 할 수 있고,
B 키로만 암호화하면 A키로만 복호화할 수 있다.

네이버 서버는 이 두 키 들 중 하나는 비밀로 보관하고 (이걸 '개인키' 라고 부른다)
다른 하나를 그냥 대중에게 공개한다. 누구나 볼 수 있도록 (이걸 '공개키'라고 한다.)

누가 가로채면, 같은 공개키로는 암호문을 풀 수 없다.

이걸 볼 수 있는 건 이 개인키를 가진 네이버 뿐이다.

그렇다면, 이 사이트가 네이버인지 어떻게 판별할까?

그건 정보를 네이버에서 보내줄 때 일부 값을 네이버의 개인키로 암호화해서 보낸다.

그럼 공개키로 복호화 되면 신뢰할 수 있다고 판단한다.

공개된 공개키의 검증을 하는 기관, Certificate Authority, 줄여서 CA

엄격한 인증 과정을 거쳐야 이 기관이 될 수 있다.

브라우저에 이 기관들이 내장되어있다.

클라이언트가 처음 서버에 접근 할 때, 서버를 신뢰하지 않기 때문에

일종의 확인과정을 거치는데 이를 handshake, 악수라고 한다.

악수하는 법은 클라이언트가 서버에 무작위 데이터를 생성해 전송하고 마찬가지로 서버역시 무작위 데이터를 생성해 전송한다. 그리고 해당 서버의 인증서를 실어보낸다.

이걸로 서버와 클라이언트는 악수를 한거다.

클라이언트는 이 인증서가 진짜인지 브라우저에 내장된 CA 들의 정보를 통해 확인한다.

CA의 비대칭 키 기법을 사용해서, 개인키로 암호화된 것을 보내주고

이 것을 가지고 공개키로 복호화 처리해본다.

만약 이 CA 리스트 중에 이 인증서가 해당하는 것이 없다면

"not secure" 경고가 뜨는 것이다.

그리고 성공적으로 복호화된 인증서에는 이 서버의 공개키가 포함되어있다.

그래서 이 공개키로 메시지를 암호화해서 비대칭키 방식으로 통신해서 보안을 지키게 된다.

그런데 실제로는 비대칭과 대칭키 둘다 혼합해서 사용한다.

대칭키보다 비대칭키는 소모비용이 크기 때문이다.

그래서 대칭키를 통해서 암호화 복호화를 하고, 그 대칭키를 공유할 때 비대칭키를 사용한다.

처음에 악수할 때 생성된 두 무작위 데이터를 혼합해서 어떤 임시키를 만든다.

이 임시키는 서버의 공개키로 암호화 돼서 서버로 보내진 다음
양쪽에서 일련의 과정을 거쳐 동일한 대칭키가 만들어지는 것이다.

이제 이 대칭키는 서버와 클라이언트만 가지고 있으니까 안전하다 !!!

오늘날 이 https 로 서비스하는 것은 최소한의 필수 요건이다.

http

인터넷 상의 커뮤니케이션 방식

인터넷에서 데이터 통신을 할 때는 http 형식으로 통신한다고 반드시 명시해줘야 한다.

profile
노력과 성장을 기록합니다.

0개의 댓글