본문 바로가기

CS/Network

(Network) HTTPS와 SSL 인증서(2) - 공개키

공개키 방식은 키가 두 가지가 존재한다.

 

대칭키 방식은 이전 포스팅에서 언급하였듯이 하나의 키를 사용하기 때문에 멀리서 통신하는 상황이라면 도중에 intercept 할 수 있다고 하였다.

 

공개키 방식은 두 개의 키를 갖기 때문에 A키로 암호화를 하면 B키로 복호화할 수 있고 B키로 암호화하면 a키로 복호화할 수 있는 방식이다.

두 개의 키 중 하나를 비공개 키로 하고 나머지는 공개 키로 지정한다. 비 공개키는 전송시키지 않는다는 점이 중요하다.

  • 이때 공개키는 누구에게나 제공이 가능하다.

이렇게 하면 키를 전송하는 일이 발생하지 않기 때문에 멀리 통신하는 상황이라도 도중에 가로챌 수 없다.

 

  1. 공개키를 가진 사람이 암호화를 해서 비 공개키를 가지고 있는 사람에게 전송하는 경우
  2. 비밀키를 가진 사람이 암호화를 해서 비 공개키를 가지고 있는 사람에게 전송하는 경우

- 비밀키가 모든 사람이 공유된다면 해당 요청 정보에 대한 인증이 가능해진다.

 


실습

비밀키 생성

openssl genrsa -out private.pem 1024

파일 생성 확인

공개키 생성

openssl rsa -in private.pem -out public.pem -outform PEM -pubout

암호화할 내용 생성

echo 'coding everybody' > file.txt

해당 내용 암호화

openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl

공개키를 사용하여 암호화를 진행 - 비 공개키를 가지고 있는 사람에게 은밀하게 정보 전달

누군가가 해당 내용을 열어보려고 해도 알 수가 없어진다.

비 공개키를 가지고 있는 누군가가 해당 내용을 복호화

openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt

공개키가 아닌 비공개 키로 해당 파일을 복호화 


References

 

'CS > Network' 카테고리의 다른 글

(Network) TCP vs UDP  (0) 2020.05.10
(Network) SSL 인증서  (0) 2020.04.28
(Network) HTTPS와 SSL 인증서(1) - 대칭키  (0) 2020.04.28
(Network) HTTP/1.0 VS HTTP/1.1  (0) 2020.04.19
(Network) HTTP/1.1 VS HTTP/2  (1) 2020.04.12