Next-Squad/Interview-Question

[Network] 15. 비대칭키 또는 공개키 암호화 방식은 무엇인가요?

naneun opened this issue · 1 comments

15. 비대칭키 또는 공개키 암호화 방식은 무엇인가요?

키워드

대칭키, 공개키, 암호화

대칭키 암호화 방식

  1. 암복호화에 서로 같은 키를 사용한다. 따라서, 키를 나누는 과정이 필요하다.
  2. 내가 키로 암호화한 내용을 대칭키를 갖고 있는 다른 사용자가 해당 키로 복호화할 수 있다.
  3. 키의 길이가 짧아 암복호화가 빠르다.

공개키 암호화 방식

  1. 암복호화에 서로 다른 키를 사용한다.
  2. 비밀키는 나 이외의 다른 사용자가 알아서는 안 되는 키다.
  3. 공개키는 누구나 알 수 있도록 공개되어있기 때문에 따로 키를 나누는 과정이 필요 없다.
  4. 내가 비밀키로 암호화하면 공개키를 알고 있는 다른 사용자가 공개키로 복호화할 수 있다
  5. 다른 사용자가 공개키로 암호화하면 나는 비밀키로 복호화할 수 있다.
  6. 키의 길이가 길어서 암복호화가 느리다.

ex) 디지털 서명

  • 공개키 암호화 방식을 사용한다.
  • 전달하고자 하는 정보를 비밀키로 암호화하면 서명을 얻어낼 수 있다.
  • 이 서명을 다른 사용자에게 전달하고 해당 사용자는 이 서명을 공개키로 복호화하면 정보를 얻어낼 수 있다.

ex) HTTPS

서버 측 사전 준비

  1. 서버는 인증기관 (CA) 로부터 인증서를 발급 받기 위해 서버의 정보가 포함된 인증서 발급 요청을 한다.
  2. 인증기관은 서버, 인증기관에 대한 정보 및 서버 측 공개키가 포함된 인증서를 서버에 발급해 준다.

클라이언트의 요청

  1. 클라이언트가 서버에 요청하면 서버는 클라이언트에게 인증기관으로부터 발급 받은 인증서를 발급한다.
  2. 웹 브라우저가 사전에 인증기관의 공개키를 갖고 있기 때문에 이를 통해 클라이언트는 인증서 내의 서버의 공개키를 얻을 수 있다.
  3. 클라이언트는 대칭키를 만든 후 이를 인증서로부터 얻어낸 서버 측의 공개키로 암호화하여 서버에 전달한다.

데이터 교환

  1. 서버는 클라이언트가 전달한 암호화된 대칭키를 받고 이를 비밀키로 복호화하여 대칭키를 얻어낼 수 있다.
  2. 클라이언트, 서버 양측 모두 대칭키를 갖게 되고 이로써, 이후 데이터를 주고 받을 때 대칭키 암호화 방식을 사용할 수 있게 된다.

대칭키 암호화 방식을 사용하는 이유

  1. 대칭키 암호화 방식이 공개키 암호화 방식에 비해 빠르다.
  2. 따라서, 데이터를 전송하는데 있어서는 대칭키 암호화 방식을 사용하기 위해 대칭키를 공개키로 암호화해서 전달한다.