TIL 46일차 - https 원리

박진현·2021년 8월 14일
0

TIL

목록 보기
46/71
  1. 평문으로 서버와 클라이언트가 통신하다보니 통신중 데이터가 탈취당하면 모든게 노출된다
  2. 데이터를 암호화하여 통신할 필요성이 생겼다
  3. 암호키를 생성하여 데이터를 암호화 하여 보내고, 암호키를 통해 데이터를 복호화 하여 해석한다
  4. 서버와 클라이언트가 같은 암호키를 가져야 한다
  5. 암호키를 통해 암호화 통신 하기 전, 같은 암호를 공유하기 위한 통신을 할 때 암호키가 탈취당하게 된다면 결국 데이터가 노출될 것이다
  6. 암호키를 안전하게 주고받을 방법이 필요하다
  7. 소수 해석 함수를 이용하여 한 쌍이 되는 암호키를 생성한다
  8. 이렇게 생성된 암호키 A, B 는 다음과 같은 특성을 가진다
  • A 를 통해 암호화 한 데이터는 B 를 통해서만 해석할 수 있다
  • B 를 통해 암호화 한 데이터는 A 를 통해서만 해석할 수 있다
  1. 서버가 암호키 A, B 를 생성하여 클라이언트에게 암호키 B 를 전달하고, 클라이언트는 암호키 C, D 를 생성하여 서버에게 D 를 전달한다
  2. 클라이언트가 서버에게 데이터를 보낼 때에는 암호키 B 를 통해 암호화 하여 서버로 보내고, 서버는 받은 데이터를 암호키 A 를 통해 복호화 한다. 서버는 암호키 D 를 통해 암호화 하여 보내고, 클라이언트는 C 를 통해 복호화한다.
  3. 이 경우, 데이터 해석에 필요한 암호키 A 와 C 는 결코 통신에 노출되지 않기 때문에 통신이 안전해진다
  4. 하지만, 이러한 비대칭 암호키를 이용한 암호화 통신은 많은 연산이 필요해서 효율적이지않다
  5. 같은 암호키를 사용하여 암호화, 복호화 하는 경우 성능이 빠르지만 암호키를 교환하는 도중 암호키가 탈취당할 위험이 생기고, 비대칭 암호키를 사용하면 안전한 대신 성능이 느리다
  6. 같은 암호화를 사용하는 방식을 채택하는 대신, 해당 암호키를 비대칭 암호화 방식으로 교환하여 안전하게 암호키를 교환한다면 문제가 해결된다
  7. 서버가 비대칭 암호키 A, B 를 생성하여 클라이언트에게 B 를 전달한다
  8. 클라이언트는 암호화 통신에 사용할 대칭 암호키 C 를 생성하고, 전달받은 B 암호키를 통해 암호화 하여 서버에게 전달한다
  9. 서버는 받은 데이터를 A 암호키를 통해 복호화 하여 클라이언트가 생성한 암호키 C 를 획득한다
  10. 서버와 클라이언트는 안전하게 암호키 C 를 교환하였으며, 앞으로 걱정없이 암호키 C 를 이용해 데이터를 암호화 하여 통신할 수 있다
  11. 인터넷 제공자는 악의적이거나 보안이 취약한 서비스에 대하여 이용자에게 경고하여야 한다. 또한, 해당 연결이 '올바른(탈취당한것이 아닌 등)' 연결인지 확인하여야 한다. 이러한 인터넷 환경을 위해 서버가 신뢰할 수 있는 서버인지를 보증하는 기관 시스템이 필요하게 되었다
  12. 인증 기관은 인증서 제공을 위해 비대칭 암호키 A, B 를 생성하고 암호키 B 를 브라우저 회사에게 알린다
  13. 서비스 서버가 인증 기관에 인증서 서비스를 요청하면 인증 기관이 비대칭 암호키 C, D 를 생성하고 암호키 C 와 서비스 서버 정보를 인증 기관의 암호키 A 로 암호화 하여 인증서를 만들어 서버에게 제공한다. 이때, 암호키 D 도 서버에게 함께 제공한다
  14. 클라이언트가 서버에게 연결을 요청하면, 서버는 클라이언트에게 인증서를 제공한다
  15. 클라이언트는 인증서를 받아 브라우저에서 해당 인증 기관의 암호키 B 를 가져와 복호화 하여 서버의 정보와 암호키 C 를 획독한다
  16. 인증서가 보증하는 서버의 정보가 복호화된 정보와 일치하는지를 확인하여 인증서의 유효성을 입증한다
  17. 클라이언트가 대칭 암호키를 생성하여 암호키 C 를 통해 서버에게 전달하고 보안 통신을 수립한다
  18. 보안상의 문제로, 인증 기관은 여러 단계로 이루어진다. 하위 인증기관은 자신의 인증서 정보를 상위 인증 기관에게 인증 요청하고, 상위 인증 기관은 비대칭 암호키 A, B 를 생성하고 B 를 브라우저에게 알리며 A 를 통해 하위 인증 기관의 인증서를 암호화 하여 제공한다
  19. 이러한 인증서 해석은 인증서에 포함된 인증 정보와 공개키를 통해 복호화된 인증 정보를 비교하여 정보가 불일치할 경우 이용자에게 보안 경고를 표시하는 용도로 사용된다. 또한, 브라우저에 등록된 신뢰할 수 있는 인증 기관이 아닌 인증 기관이 발급한 인증서인 경우에도 표시한다
  20. 또한, 인증서에 기록된 서버 정보와 불일치한 정보의 서버에 연결을 수립하려는 경우, 브라우저가 이를 거부하게 된다
profile
👨🏻‍💻 호기심이 많고 에러를 좋아하는 프론트엔드 개발자 박진현 입니다.

0개의 댓글