Skip to content

Latest commit

 

History

History
54 lines (32 loc) · 3.62 KB

File metadata and controls

54 lines (32 loc) · 3.62 KB

#https

Secure Socket Layer를 통해서 모든 통신을 암호화 시킨다.

여기서 암호화는 인증서( CA(Certificate authority)를 대부분 사용, 사설 기간 사용시 빨간색으로 https에 인증된 기간이 아니라고 뜬다. . 인증서 기간이 지나도 빨간색으로 뜬다.)를 통한 공개키 암호화

https를 사용할때 모든 http요청과 응답 데이터는 네트워크로 보내지기 전에 암호화된다. https는 http의 하부에 전송 레벨 암호 보안 계층을 제공함으로써 동작, ssl(secure socket layer) 로 구현

/img/Evernote%20Snapshot%2020150111%20215743.jpg

/img/Evernote%20Snapshot%2020150111%20215938.jpg

ssl 동작 방식 http://img1.daumcdn.net/thumb/R1920x0/?fname=http%3A%2F%2Fcfile2.uf.tistory.com%2Fimage%2F1726E6364F9E45F71937D6

HTTP는 일반적인 평문 전달 방식으로 데이터를 전송시 서버와 클라이언트가 주고 받는 메시지를 감청하는 것이 매 우 쉽습니다. 이를 Secure Socket Layer를 통해서 모든 통신을 암호화 시키는 작업이 포함된 것이 https 입니다. 암 호화 방식은 MD5, sha1, DES 등 다양한 방법을 사용합니다.

여기서 암호화는 인증서( CA(Certificate authority)를 대부분 사용)를 통한 공개키와 대칭키를 혼합한 암호화를 합니다. (공개키는 암호화/복호화시 자원이 많이 소모 되며, 대칭키는 키를 공유하기 때문에 도청의 위험이 있음) https를 사용할때 모든 http요청과 응답 데이터는 네트워크로 보내지기 전에 암호화되며 https는 http의 하부에 전송 레벨 암호 보안 계층을 제공함으로써 동작하며 osi7계층 중 세션 계층에서 ssl(secure socket layer) 로 구현 되어 있습니다.

Https 통신은 http의 일반적인 핸드쉐이크에서 암호화를 위해 몇 단계가 추가 됩니다.

  1. 클라이언트가 서버에 접속합니다. 이때 클라이언트에서 생성한 랜덤한 데이터, 클라이언트가 지원하는 암호화 방 식들, 이미 SSL 핸드쉐이크를 했다면 세션 아이디를 넘겨 줍니다.

  2. 서버는 클라리언트에게 응답으로 서버측에서 생성한 랜덤한 데이터, 서버가 선택한 클라이언트의 암호화 방식, 서버가 가지고 있는 인증서를 넘겨줍니다.

  3. 클라이언트는 서버의 인증서가 CA에 의해 발급된 정상적인 인증서인지를 확인하기 위해 클라이언트에 있는 CA 리스트를 확인합니다. 만약 CA리스트에 없는 인증서라면 사용자에게 경로 메시지를 출력합니다. 정상적인 인증서 인지 확인 하기 위해 CA의 공개키로 인증서를 복호화를 시도하여 인증서가 맞는지 확인합니다.

  4. 클라이언트는 1번과 2번의 랜덤한 데이터를 조합해 랜덤키를 생성합니다. 이 키는 세션 암호화 키로 대칭키로 사 용됩니다.

  5. 4번의 키를 인증서의 공개키로 암호화 후 서버로 전송합니다.

  6. 서버는 전송 받은 데이터를 자신의 비공개키로 복호화 하면 클라이언트가 가진 랜덤키를 서버가 가지게 됩니다. 해당 키로 이후의 모든 데이터는 암호화 한 후 통신하게 되며 해당 키는 세션키로 사용합니다.

  7. 클라이언트와 서버는 핸드쉐이크 단계의 종료를 서로에게 알립니다.

참고 : https 와 ssl 인증서 (https://opentutorials.org/course/228/4894)