[암호시스템]
대칭키/공개키 암호에 대한 개관
-암호의 종류-
기밀성을 전제로 암호는 2가지로 나눌 수 있습니다.
1. 대칭키 암호 :
송신자와 수신자 모두 같은 키를 사용
2. 공개키(비대칭키) 암호 :
송신자와 수신자 서로 다른 키를 사용
1. 대칭키 암호
대칭키 암호는 쉽게 생각하면 열쇠와 같습니다. 잠글 때와 열 때 모두 같은 키를 사용하기 때문입니다. 대칭키 암호의 종류는 다양하지만 그중에서 가장 많이 사용되는 암호는 미국 표준 DES와 AES입니다.
암호는 해독하는 것이 불가능한 것이 아니라, 해독하는데 걸리는 시간을 매우 크게 하여 물리적으로 해독이 가능하지 못하게 하는 것입니다. 그래서 컴퓨터의 성능이 좋아질수록 암호가 해독될 가능성이 높아지고, 이에 대응하기 위해서 대칭 암호의 경우 암호를 더 복잡하고 길게 만들어서 해독하지 못하도록 대응합니다. DES가 바로 그런 예입니다.
DES의 경우 1977년도에 개발된 암호로 그 당시 컴퓨터로는 해독하는데 거의 불가능한 시간이 필요하다고 보았지만 컴퓨터의 발달로 안전하지 않게 되었기때문입니다. 그 결과 triple-DES이라는 DES를 세번 결합하는 방식이 사용되었고 후에는 더 안전한 AES 암호가 개발되게 되었습니다.
2. 대칭키 암호의 한계와 해결 방법
대칭키를 이용할 경우 처음 통신 시에 키를 교환하면서 키가 노출되는 상황이 생기게 됩니다. 만약 도청(스니핑)을 당하고 있다면 공격자는 그 키를 악용할 수 있습니다. 이러한 문제를 키 배송 문제라고 하고, 해결할 수 있는 방법은 다음과 같습니다.
1) 키의 사전 공유 : 사용자들끼리 통신 전에 키를 직접 교환하는 것
2) 키 배포 센터(KDC, Key Distribution Center) 이용 : 믿을 만한 대칭키를 배포해 주는 센터를 이용하는 것(신뢰할 만한 제3자를 이용하는 것) 하지만, 인원이 많아질수록 부하가 커집니다.
3) Diffie-Hellman 키 교환 이용 : 이산 대수의 어려움에 기반한 공개 방식의 키 교환 방식
4) 공개키 암호 이용 : 암호화 키와 복호화 키가 다른 암호 이용하기
3. 공개키 암호
대칭키의 키 배송 문제 해결을 위해서 개발된 공개키 암호는 암호화 하는 키와 복호화 하는 키가 다릅니다. 그래서 하나의 키를 알게 되더라도 그에 대응하는 다른 키를 알아내기 어렵다는 특징을 가집니다. 또한, n 명의 사용자 일 때 n(n-1)/2개의 키가 필요한 대칭키와는 달리 n명의 사용자 일때 2n개의 키만 필요로 하기 때문에 더 효율적입니다.
데이터를 암호화할 때 사용하여 기밀성을 위해 사용할 수도 있지만, 전자서명과 같이 무결성, 인증, 부인방지를 위해서 사용할 수도 있습니다.
공개키 중 가장 많이 사용되는 것은 RSA 암호로 소인수 분해의 어려움에 기초하여 만들어졌습니다.
4. 공개키 이용 시 중간자 공격
공개키의 경우 키 배송 문제는 해결할 수 있을지 모르겠지만 중간자 공격(MITM, man-in-the-middle attack)에 취약합니다.
A와 B가 공개키을 사용하고 C라는 공격자가 있다고 가정해 봅시다. C가 중간에서 A가 공개해 놓은 공개키를 C의 공개키로 바꿔서 B에게 준다면, B는 그것이 A의 공개키인 줄 알고 C의 공개키로 메시지를 암호화하여 전송합니다.
C는 그 메시지를 중간에서 가져와서 자신의 개인키로 복호화 할 수 있습니다. 메시지를 확인한 후에 자신이 원하는 내용으로 수정한 뒤에 그 메시지를 A의 공개키로 암호한 해서 A에게 다시 전송한다면 A는 B에게 온 메시라고 속게 됩니다.
이런 중간자 공격 문제를 해결하기 위해 PKI(공개키 기반구조)가 나타나게 되었습니다. PKI는 인증기관이 중간에서 공개키를 인증해 주어서 사용자 간에 신뢰할 수 있는 공개키를 사용하게 해주는 구조입니다. 우리가 흔히 사용하는 공인인증서도 공개키와 PKI를 이용하고 있습니다.
5. 하이브리드 암호
공개키의 경우 대칭키와 같은 강도의 보안성을 유지하기 위해서 더 큰 크기의 암호가 필요합니다. 고속인 대칭키에 비해서 공개키는 속도가 느린 암호입니다. 그렇기 때문에 빠르게 데이터를 주고 받는 것이 중요한 통신에서는 공개키를 사용하여 암호화하는 것은 비효율적입니다. 그래서 고안된 것이 하이브리드 암호입니다.
하이브리드 암호는 공개키 암호화 방식과 대칭키 암호화 방식을 결합한 암호로, 메시지를 대칭키로 암호화하고 그 키 값만 공개키 방식으로 암호화하는 방식입니다. 그러면 대칭키의 키 배송 문제를 해결하고, 공개키의 느린속도를 보완할 수 있습니다.