RSA 암호화
비대칭키 암호화의 필요
1. AES와 같은 대칭키 암호화는 두 사람이 주고받는 정보가 빼앗기더라도 내용을 알 수 없게 할 수 있게 하였다.
대칭키 암호화는 매우 안전하고 간편하지만 매우 심오한 문제를 만들었다.
"키 배송 문제"
두 사람이 대칭키 암호를 주고받으려면 우선 비밀키를 공유해야 하는데, 이 키를 전송하는 도중에 빼앗기면 암호는 아무런 소용이 없다. 그렇다고 키를 안 보내면 암호화를 할 수 없다. 이것이 키 배송 문제이다. 어떻게 하면 키를 안전하게 공유할 수 있을까?
2. 인터넷으로 파일이 공유되면서 어떤 파일을 내가 만들었고, 그 이후로 수정된 적이 없음을 보증해야 할 일이 생겼다. 바로 디지털 서명의 필요성이 드러난 것이다. 디지털 서명은 누구나 풀 수 있지만 누구나 만들 수는 없어야 한다. 기존의 대칭키 암호화 방식은 디지털 서명을 확인하기 위한 키와 디지털 서명을 하기 위한 키가 같기 때문에 서명 용도로 쓸 수 없다. 디지털 서명에 쓸 암호화 알고리즘은 암호를 만들기 위한 키와 풀기 위한 키가 달라야 한다.
위 1, 2번의 설명은 비대칭키가 왜 필요한지 잘 설명한다. 위의 경우에 사용할 수 있는 암호는 암호의 기능은 가지는데 암호를 만들 때(암호화)랑 풀 때(복호화)의 키가 달라야 한다.
이러한 암호를 키가 대칭이 아니다(다르다)라 하여 "비대칭키 암호화"라고 한다.
비대칭키 암호화의 원리
비대칭키 암호화에는 "공개키(Public Key)"와 "비밀키(Private Key)"로 키가 2개 있다.
이때 공개키와 비밀키는 수학적인 성질로 인해 다음과 같은 특징을 가진다.
- 공개키를 이용해서 비밀키를 계산할 수 없다.
- 비밀키를 이용해서 공개키를 계산할 수 있다.
- 공개키를 사용하여 만든 암호를 만들 때는 비밀키만을 사용해야 한다.
- 비밀키를 사용하여 만든 암호를 풀 때는 공개키만을 사용해야 한다(다만 암호의 종류에 따라 이는 지원하지 않을 수 있다).
암호 통신:
- 엘리스와 밥이 비대칭키 암호화를 사용하여 메시지를 주고받는다. 앨리스는 공개키와 비밀키를 만들어서 밥에게 공개키를 공유한다. 이때 공격자(이브)도 공개키를 공유받는다.
- 밥은 앨리스에게 보내고자 하는 정보를 공개키를 이용해서 암호화하여 전송한다. 이때 밥과 이브는 이 암호를 풀 수 없다.
- 앨리스는 밥이 보낸 암호를 비밀키를 이용해서 복호화한다. 하지만 비밀키가 없는 이브는 암호를 풀 수 없다.
인증서:
- 엘리스가 공개키와 비밀키를 한 쌍 만들고 공개키를 공개한다.
- 엘리스가 파일을 만들고 파일의 해시값을 비밀키로 암호화한다(서명한다).
- 밥이 엘리스의 파일을 받은 후 엘리스의 공개키로 엘리스가 보낸 해시값을 복호화한다.
- 밥이 복호화한 해시값이 파일의 해시값과 일치한다면 그 파일은 엘리스가 만든 것이 맞고, 그 이후로 변경된 적이 없는 것이다.
위의 과정은 모두 공개키로는 비밀키를 알 수 없으며, 비밀키는 키를 만든 사람이 알고 있다는 성질에서 왔다. 인증서에서도 오직 엘리스만이 비밀키를 사용해서 서명을 할 수 있기 때문에 유효한 서명을 가진 파일은 엘리스가 만들었다고 할 수 있는 것이다.
이 글에서는 비대칭키 암호화에 대해 알아보았다. 비대칭키 암호화는 키 배송 문제를 해결한 매우 획기적인 암호이지만 구현 방법상 매우 느리다. 따라서 통신의 처음에 키를 공유하는데 쓰고 이후의 통신은 대칭키 암호화를 사용한다.
또한 비대칭키 암호화를 사용하는 이는 절대로 자신의 비밀키를 공유해서는 안된다. 인터넷이 비밀키를 업로드해서도 안 된다. 자칫하다가는 누군가가 내가 만든 파일인 양 악성파일을 서명해서 유포할 수도 있고, 내가 하는 통신을 몰래 엿들을 수도 있다.
'컴퓨터' 카테고리의 다른 글
FTP 서버 구축 (0) | 2021.12.12 |
---|---|
ARP 스푸핑 공격 - 개념 (0) | 2021.10.05 |
해시(Hash) (0) | 2021.07.22 |
데이터베이스 Pt. 1 (0) | 2021.07.19 |