본문으로 바로가기

HTTPS 와 SSL (3)- 공개키

category 웹/웹 보안 2019. 7. 11. 20:40

2019/07/06 - [웹/웹 보안] - HTTPS 와 SSL (2)-대칭키 (openssl 암호화)

 

HTTPS 와 SSL (2)-대칭키 (openssl 암호화)

SSL 인증서 인증서라는 말은 인증을 하기위한 문서라고 표현합니다. SSL인증서는 클라이언트와 서버 간 통신 할 때 제 3자가 보증을 해준다는 것입니다. 즉 클라이언트가 서버에 접속 할 때 서버는 이 인증서를 클..

dlwjdcks5343.tistory.com

앞서 설명한 대칭키는 단점이 존재한다.

 

대칭키로 암호화도하고 복호화를 진행하기 때문에 서로 전달하는 것이 어렵다.

 

대칭키가 유출이 된다. 그러면 그냥 끝인 것이다.

 

이러한 것을 보완하고자 공개키 방식이 나오게 되었다.

 

총 두 개의 키를 갖는다. 바로 공개키(public key)와 비공개키(private key)

 

비공개키는 자신이 가지고 있고 공개키를 상대방에게 전달한다. 이를 받은 사람은 이를 이용해서 암호화를 진행한다.

 

비공개키 소유자는 비공개키로 암호화 된 것을 복호화한다. 

 

즉 대칭키와 달리 공개키가 오고가기 때문에 보안 상 위험이 없다. 왜냐 공개키로는 복호화를 하지 못하기 때문이다.

 

하지만 전자서명이라는 것이 존재한다.

 

위 설명과 대조적으로 비공개키를 가지고 암호화를 하고 공개키를 전달한다. 공개키를 받으면 이를 통해 복호화 한다.

 

왜 이런 위험한 짓을 하느냐..?

 

그래서 전자서명이 존재하는 것이다. 전자서명은 공개키와 쌍을 이루는 비공개키에 의해서 암호화가 됬다는 것이다.

 

즉 공개키가 데이터 전송자의 신원을 보장한다. 

 

직접 실습을 해보겠다.

 

우선 rsa라는 디렉토리를 만든다.

mkdir rsa

그 후 아래 명령어를 쳐서 1024bit 길이를 갖는 키를 생성하자. 이 bit가 높을 수록 안전하다.

openssl genrsa -out private.pem 1024;

이 명령어는 rsa를 통해 out으로 private.pem을 1024bit길이 가진 것으로 비공개키를 생성한다라는 뜻이다.

다음 비공개키를 가지고 public.pem이라는 공개키를 생성할 것이다. 이 키를 나에게 정보를 보여줄 사람에게 제공한다.

 

아래 명령어를 쳐주자

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

이 명령어의 의미는 rsa로 존재하는 private.pem을 out으로 공개키 public.pem을 생성한다라는 뜻이다.

즉 공개키가 생성이 되었다.

 

내용을 확인해보자.

 

private.pem인 비공개키를 확인해 보았다. 무척 해석하기 힘든 외계어이다..

 

마찬가지로 public.pem이 잘 생성 된 것을 확인 할 수 있다. 

 

이 public.pem을 정보를 제공할 사람에게 전송한다고 치자.

 

우선 Hi leejeongchan 이라는 메시지가 담긴 텍스트 파일을 생성하자.

echo 'Hi leejeongchan' > file.txt

이 파일을 비공개키를 가진 이에게 보여줄 예정이다. 그럼 file.txt를 전송받은 public.pem으로 암호화를 진행해야한다.

 

명령어는 아래와 같다.

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

즉 public.pem을 가지고 file.txt를 암호화하여 file.ssl로 만든 것이다.

즉 file.ssl이 보인다.

 

file.ssl 내용

그럼 이를 수신받은(비공개키를 가진) 사람은 비공개키를 통해 복호화를 진행한다. 

 

명령어는 아래와 같다.

 

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

decrypted.txt가 생성된 것을 볼 수 있다. 이는 전달 받은 file.ssl을 비공개키를 통해 복호화한 결과이다.

결과는 아래와 같다.

 

 

' > 웹 보안' 카테고리의 다른 글

HTTPS 와 SSL (2)-대칭키 (openssl 암호화)  (0) 2019.07.06
HTTPS 와 SSL (1)-간단한 개념  (0) 2019.07.05