Http, Https

송은석·2022년 12월 2일
0

핵심 키워드 | 암호화, 복호화, 공유키, 공개키, 전자 인증서, 전자 서명, 신분 사칭, 데이터 탈취, 데이터 위변조, 메시지 다이제스트, 해시, SSL/TLS, SSH

기존 웹 통신 방식(http) 은 평문 전송이었으므로 중간에 데이터 탈취 시 대응 방법이 없었다.

따라서 암호화를 하게 되었다.

공유키, 공개키

암호화의 2가지 방법이 있는데,

  1. 공유키 방식
  • 서버와 클라이언트 모두 같은 키를 가지고 데이터를 암복호화하는 방식으로, 빠르고 쉽게 암복호화가 가능하다는 장점이 있다.
  1. 공개키 방식
  • 서버가 공개키와 개인키를 가지고 있고, 통신 시 클라이언트에 공개키를 전달한다. 공개키와 개인키는 상호적으로 암복호화가 가능하며, 하나만 가지고서는 불가하다.
  • 공개키를 전달 받은 클라이언트는 이를 통해 서버와 데이터를 암복호화하며 통신할 수 있다.
  • 이 방식을 사용하면 클라이언트가 서버에 전달하는 데이터는 확실히 지킬 수 있으나, 공개키는 탈취될 수 있으므로 서버가 클라이언트에게 전달하는 데이터는 탈취되어 복호화될 수 있다.

전자 인증서

암호화를 통해 데이터를 지킬 수 있으나, 서버 자체가 믿을 수 있는지는 확인할 수 없다. 따라서 인증 기관을 통해 인증서를 발급 받은 서버를 신뢰한다는 방법을 세울 수 있는데, 이 때 전자 인증서를 사용한다.

서버는 자신의 인증을 위해 인증 기관에 자신의 정보와 공개키를 전달하여 인증서 발급을 요청한다. 인증 기관은 확인 후 전자 인증서를 발급한다. 전자 인증서는 인증 기관과 서버의 정보, 전자 서명, 공개 키를 포함한다.

전자 인증서를 발급 받은 서버는 이 때 부터 클라이언트에게 전자 인증서를 전달한다. 클라이언트는 전자 인증서를 통해 서버를 신뢰하고 통신을 할 수 있게 된다.

전자 인증서에 포함된 전자 서명은 데이터의 위변조를 막는 역할을 하게 된다. 방식은 다음과 같다. 서버는 데이터를 먼저 해시화하여 메시지 다이제스트를 구하고, 이를 다시 개인키로 암호화 한다. 이렇게 만들어진 것이 전자 서명이다.

클라이언트는 전자 인증서의 전자 서명을 다시 공개 키로 복호화하여 메시지 다이제스트를 구한다. 그리고 함께 온 데이터를 해시화 하여 메시지 다이제스트를 구한다. 이 둘을 비교하여 나온 결과가 동일하면, 클라이언트는 데이터가 위변조되지 않았음을 확인할 수 있게 된다.

SSL/TLS은 이러한 전자 인증서를 사용하여 통신을 인증하는 방식이다. SSL을 통해 데이터 위변조를 막고, 서버를 증명할 수 있으며(신분 사칭을 막고), 정보 유출을 막을 수 있다. 기존 전자 인증서를 사용한 방법에서 공유키가 더해진 방식이다.

서버는 클라이언트에게 전자 인증서를 보내고, 클라이언트는 공개키를 확인 후 난수를 생성하여 이를 공개키로 암호화한다. 이를 공유키라고 한다. 클라이언트는 이 공유키를 서버로 보내고, 서버는 개인키를 통해 공유키를 복호화해서 난수를 확인할 수 있다. 이제 서버와 클라이언터는 합의된 공유키로 데이터를 암호화해서 통신을 할 수 있게 된다.


SSH

SSH도 거의 동일한 방식으로 이루어지며, 대신 전자 인증서 대신 공개키와 개인키로만 과정을 수행한다는 점이 다르다.

SSH는 공개키와 개인키를 서버와 클라이언트 중 어디에서 가지고 있는가에 따라 차이가 있는데, 서버에서 공개키와 개인키를 가지고 있으면 패스워드 인증 방식, 클라이언트에서 공개키와 개인키를 가지고 시작하면 공개키 인증 방식이라고 하게 된다.


참고

- 책 | Tcp/Ip 쉽게 더 쉽게, 리브로웍스
profile
Done is better than perfect🔥

0개의 댓글