암호(Encryption)는 크게 대칭형 암호 (또는 대칭키 암호)와 비대칭형 암호 (공개키 암호)로 나눌 수 있다. 많이 사용되는 RSA 암호는 공개키 암호 방식이다.
공개키 암호의 기본적인 개념을 이해하는 것이 처음에는 조금 어렵다. 암호 이론에서 기본적인 전제는 모든 통신 내용은 도청이 된다고 가정하는 것이다. 암호는 통신이 도청이 되었을 때 메세지를 보호하는 것이 목적이다.
1) 대칭키 암호
대칭키(Symmetric Key) 암호는 비밀키 1개로 암호화와 복호화를 모두 하는 것으로 다음 그림과 같이 메세지를 보낸다.
1. A는 B에게 비밀키를 전달한다.
2. A는 그 비밀키를 사용하여 평문을 암호화하여 암호문을 만든다.
3. A는 암호문을 B에게 전달한다.
4. B는 A에게서 받은 암호문을 비밀키를 이용하여 복호화하여 평문을 만든다.
이와 같은 대칭키 암호 방식에서 가장 문제가 되는 것은 1번항에서 비밀키를 전달하는 것이다. 도청이 될 수 있기 때문에 통신으로는 보낼 수 없고 물리적으로 직접 만나서 비밀키를 전달해야 한다. 비밀키를 자주 바꾸거나 거리가 멀 경우 매우 비효율적인 방법이 될 수 있다.
2) 공개키 암호
공개키(Public Key) 암호는 공개키와 개인키 2개를 사용한다. 공개키로는 평문을 암호화하는데 쓰이고 개인키는 암호문을 복호화하는데 쓰인다. 여기서, 암호화/복호화 알고리즘의 중요한 특징은 공개키로는 암호화만 할수 있고 복호화는 할수 없고 개인키로는 복호화만 할수 있고 암호화는 할수 없으며, 한쌍으로 만든 비밀키와 개인키는 같은 쌍으로만 암호화/복호화가 가능하다는 것이다.
공개키 암호 방식의 메세지 전달은 다음 그림과 같이 한다.
1. B는 공개키와 개인키 한쌍을 만든다.
2. B는 공개키를 A에게 전달한다.
3. A는 B에게서 받은 공개키로 평문을 암호화한다.
4. A는 암호문을 B에게 전달한다.
5. B는 받은 암호문을 1번항에서 만든 개인키로 복호화하여 평문을 얻는다.
이와 같은 공개키 암호 방식에서 A와 B사이에 전달되는 것은 공개키와 암호문 밖에 없다. 공개키로는 암호화는 할수 있지만 복호화가 안되기 때문에 도청되어도 크게 상관이 없다. 공개키 암호 방식은 공개키/개인키를 바꿀때 통신으로 공개키만 보내면 되기 때문에 매우 편리하며 키를 자주 바꿀 수 있어 보안이 더 향상될 수 있다.
'컴퓨터 > 프로그래밍' 카테고리의 다른 글
인텔 CPU 보안 버그 멜트다운 (0) | 2018.01.07 |
---|---|
버블 정렬 알고리즘 (0) | 2016.05.23 |
오토마타 이론 (0) | 2016.02.28 |
UltraEdit (0) | 2016.02.20 |
MSX BASIC 프로그램 (0) | 2016.02.17 |
댓글