안녕하세요.
방프개입니다.
오늘은 비대칭키 암호에 대해 소개해보려고 합니다.
앞서 DES/AES 알고리즘에 대해 소개해드렸었는데요.
DES/AES는 대칭키 알고리즘으로 비대칭키와는 차이가 있습니다.
대칭키 알고리즘을 사용했을 때 발생할 수 있는 문제가 바로 키 배송 문제(Key Distribution Problem) 인데요.
키 배송 문제를 해결하기 위한 방법에는 4가지 정도가 있습니다.
① 키의 사전 공유에 의한 해결
② 키 배포 센터에 의한 해결(온라인 키 분배)
③ Diffie-Hellman 키 교환에 의한 해결
④ 공개키 암호에 의한 해결
차례대로 살펴보도록 하겠습니다.
키의 사전 공유에 의한 해결
키 사전 분배란 키 관리기관(TA, Trusted Authority)이 사전에 임의의 두 사용자 A, B에게
비밀 경로를 통하여 임의의 키 K(a,b) = K(b, a)를 선택하여 전달하는 방법입니다.
이 방법은 일반적으로 TA와 네트워크 상의 모든 사용자 사이에 안전한 통로가 필요하며,
사용자가 많은 경우에 TA는 물론 사용자들도 많은 키를 관리해야 하는 문제점이 있습니다.
키 배포 센터에 의한 해결(온라인 키 분배)
암호 통신이 필요해질 때마다 통신용 키를 키배포 센터(KDC, Key Distribution Center)라는
신뢰받는 제3자에 의뢰해서 개인과 키 배포 센터 사이에서만 키를 사전에 공유하는 것입니다.
(KDC는 TA와 의미가 비슷한데 네트워크 상의 모든 사용자와 필요할 때마다 키를 공유하는 방법입니다.)
- 송신자는 키 배포 센터에서 수신자에게 통신하고 싶다고 신청한다.
- 키 배포 센터는 의사난수 생서기를 이용하여 세선키 K를 생성한다. (이번 통신만을 위한 일시적인 키)
- 키 배포 센터는 데이터베이스에서 송신자의 키(KA)와 수신자의 키(KB)를 꺼낸다.
- 키 배포 센터는 송신자의 키를 이용하여 세션키를 암호화해서 송신자에게 보낸다.
- 키 배포 센터는 수신자의 키를 사용해서 세션키를 암호화해서 수신자에게 보낸다.
- 송신자는 키 배포 센터에서 온 세션키를 복호화해서 세션키를 얻는다.
- 송신자는 세션키를 이용하여 수신자에게 보낼 메일을 암호화해서 수신자에게 보낸다.
- 수신자는 키 배포 센터에서 온 세션키를 복호화해서 세션키를 얻는다.
- 수신자는 세션키를 사용하여 송신자에게 온 암호문을 복호화한다.
- 송신자와 수신자는 세션키를 삭제한다.
Diffie-Hellman 키 교환에 의한 해결
최초의 비밀키 교환 프로토콜 로 공개키 암호방식의 개념을 이용해 두 사용자 간에 공통의 암호화 키를
안전하게 공유할 수 있는 방법을 제시했으며, 많은 키 분배 방식에 관한 연구의 기본이 된 방법입니다.
Diffie-Hellman 프로토콜 방법에서는 양쪽 통신 주체가 KDC 없이 대칭 세션키를 생성합니다.
또한, 키 교환이라는 이름이 붙어 있지만 실제로는 키를 교환하는 것이 아니라 공유할 키를
계산해 만들어 내는 것이고 이산대수 문제 를 풀기 어렵다는 사실이 키 교환을 뒷받침하고 있습니다.
Diffie-Hellman의 안정성에 대해 살펴보겠습니다.
1. 이산대수 공격
> 키 교환의 안전성은 이산대수 문제를 풀기 어렵다는데 기반을 두고 있습니다.
> 도청자가 R1과 R2를 가로챌 수 있을 것입니다. 만약 도청자가 G^X mod N에서 X 를 구하고
G^Y mod N 에서 Y를 구할 수 있다면 비밀키가 더 이상 비밀이 되지 못합니다.
2. 서비스 거부 공격(DoS, Denial of Service)
> Diffie-Hellman 기법은 지수 함수에 기초하고 있으므로 계산이 복잡할수록 비밀키 생성에
큰 지연시간이 발생할 수 있습니다.
> 따라서 Diffie-Hellman기법은 제 3자에 의한 DoS 공격에 대한 취약점을 가지고 있습니다.
즉, 악의적으로 제 3자가 IP 스푸핑 등을 통해 위조한 키 생성 요청을 동시에 다수 요청함으로써
키 생성 부담으로 서버가 마비되도록 공격할 수 있습니다.
3. 중간자 공격(man-in-the-middle-attack)
> 키 교환 프로토콜은 인증단계 가 없기 때문에 중간자 공격에 취약합니다.
이런 공격을 막기 위해서는 전자서명과 공개키 인증서 등이 필요합니다.
공개키 암호에 의한 해결
대칭키 암호에서는 '암호화키'와 '복호화키'는 같은 것입니다.
그러나 공개키 암호에서는 '암호화키'와 '복호화키'가 다른 것입니다.
따라서 수신자는 미리 '암호화키'를 송신자에게 알려 줍니다. 이렇게 하면 복호화할 수 있는 것은
'복호화키'를 가지고 있는 수신자뿐이므로 '복호화키'를 수신자에게 배송할 필요가 없습니다.
마지막에 공개키 암호가 등장하였는데요. 공개키 암호란 무엇인지 알아보도록 하겠습니다.
공개키 암호(Public-key cryptography)
대칭키 암호는 평문을 복잡한 형태로 변환해 기밀성을 유지합니다.
하지만 공개키 암호는 수학적으로 해결하기 곤란한 문제를 토대로 해서 기밀성을 유지하는데요.
공개키 암호에서는 '암호화키'와, '복호화키'가 분리되어 있습니다.
송신자는 '암호화키'를 사용해 메시지를 암호화하고, 수신자는 '복호화키'를 사용해 암호문을 복호화합니다.
대표적인 공개키 암호로는 RSA가 있고 RSA는 인수분해 문제 해결의 어려움을 이용한 것으로
암호화뿐만 아니라 전자서명의 용도로도 사용되고 있습니다.
이외에도 Rabin 암호 시스템이 인수분해 문제 해결의 어려움을 활용해 암호화를 하고 있고
이산대수 문제 해결의 어려움을 활용하는 것으로는 ElGamal, DSA, ECC 등이 있습니다.
이상으로 비대칭키 암호화에 대해 알아봤습니다.
각각의 장단점이 있어 상호보완적으로 활용되고 있다고 하니
대칭키와 비대칭키를 비교하며 공부를 하는 것이 좋을 것 같습니다.
감사합니다.
'IT > 정보보안' 카테고리의 다른 글
[정보보안] 해시함수와 응용 (0) | 2020.09.20 |
---|---|
[정보보안] AES(Advanced Encryption Standard) 알고리즘이란? (0) | 2020.09.17 |
[정보보안] DES(Data Encryption Standard) 알고리즘이란? (0) | 2020.09.16 |