공개키 방식은 키가 두 가지가 존재한다.
대칭키 방식은 이전 포스팅에서 언급하였듯이 하나의 키를 사용하기 때문에 멀리서 통신하는 상황이라면 도중에 intercept 할 수 있다고 하였다.
공개키 방식은 두 개의 키를 갖기 때문에 A키로 암호화를 하면 B키로 복호화할 수 있고 B키로 암호화하면 a키로 복호화할 수 있는 방식이다.
두 개의 키 중 하나를 비공개 키로 하고 나머지는 공개 키로 지정한다. 비 공개키는 전송시키지 않는다는 점이 중요하다.
- 이때 공개키는 누구에게나 제공이 가능하다.
이렇게 하면 키를 전송하는 일이 발생하지 않기 때문에 멀리 통신하는 상황이라도 도중에 가로챌 수 없다.
- 공개키를 가진 사람이 암호화를 해서 비 공개키를 가지고 있는 사람에게 전송하는 경우
- 비밀키를 가진 사람이 암호화를 해서 비 공개키를 가지고 있는 사람에게 전송하는 경우
- 비밀키가 모든 사람이 공유된다면 해당 요청 정보에 대한 인증이 가능해진다.
실습
비밀키 생성
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 |