대칭키알고리즘 Part.1
연인 사이인 두 사람이 다른 사람 몰래 편지를 주고받기로 하고 자물쇠가 달려있는 작은 상자와 이를 열 수 있는 열쇠를 각자 하나씩 가지고 있다고 가정해 보겠습니다. 두 사람은 서로에게 보낼 편지를 써서 상자에 넣은 후 자물쇠를 잠그고 보낸다면 열쇠를 가지고 있는 두 사람만이 비밀편지를 볼 수 있겠지요? 중간에 누군가가 상자를 가로챈다고 하더라도 열쇠를 가진 두 사람 이외에는 누구도 상자를 열어볼 수 없기 때문에 비밀편지 내용은 누설되지 않게 될 것입니다.
대칭키 알고리즘은 기본적으로 이러한 상황과 거의 유사합니다. 전자문서(비밀편지)가 대칭키(열쇠)로 암호화되면 똑같은 대칭키를 가지고 있는 상대방만이 이 전자문서를 복호화할 수 있으며, 누군가가 암호화된 전자문서를 입수하여도 이를 복호화하지는 못하기 때문에 입수한 사람에게는 아무 의미가 없는 문서가 될 뿐입니다.
대칭키 암호 방식
군사적인 목적이든 개인적인 목적이든 은밀한 편지를 보내고자 하는 인간의 욕구는 동서고금을 막론하고 항상 존재하였던 것으로 이해할 수 있습니다. 고대 스파르타시대에 사용된 것으로 알려지는 스키탈레 암호법 이래로 1970년대 공개키 알고리즘이 등장하기 전까지 암호라고 하면 대부분 대칭키 알고리즘을 의미하는 것이었습니다. 오늘날 컴퓨터로 계산하는 대칭키 알고리즘은 고도로 어려운 수학적 방법 같은 것을 사용하는 것이 아니고 이전까지 손으로 계산하여야 했던 여러 과정을 복잡하게 재구성한 것에 지나지 않는다고 볼 수 있습니다.
대칭키 알고리즘에 사용되는 키는 대칭키, 단일키, 공용키, 관용키 등과 같은 여러 가지 이름이 있지만 키를 바라보는 시각의 차이일 뿐 모두 동일합니다. 대칭키 알고리즘에서는 미리 약속된 대칭키를 사용하지 않을 경우 암호문과 대칭키를 함께 보낼 수 없기 때문에 암호문을 전달하는 경로와는 다른 경로로 대칭키를 안전하게 전달하여야 합니다. 암호학에서는 대칭키를 전달하는 것을 대칭키 교환 또는 키 교환이라고 하며, 적절한 대칭키 교환 방법이 대칭키 알고리즘을 활용하는 데 있어 가장 어려운 문제의 하나입니다.
앞의 비밀편지의 예에서 다음과 같은 생각을 하는 사람이 있을 지도 모릅니다. 비밀상자를 가로챈 사람이 지구상에 존재할 수 있는 모든 열쇠를 가지고 있다고 한다면 얼마나 빨리 상자를 열 수 있을까요? 지구상에 서로 다른 열쇠가 1만개 있고 한번 열기를 시도하는데 1초씩 걸린다고 가정하면 평균적으로 83분 정도면 해당 열쇠를 찾을 수 있습니다. 대칭키 알고리즘에도 똑같은 상황을 적용할 수 있을까요? 그렇습니다. 비밀편지와 유사한 사상에서 출발하였기 때문에 대칭키 알고리즘도 같은 상황에 직면할 수 있으며, 오히려 누구나 간단하게 키를 만들 수 있기 때문에 어떤 면에서는 상자 열기보다 더 위험에 처할 수 있습니다. 이 경우에는 키의 갯수를 늘이는 방법으로 문제를 해결할 수 있습니다. 즉, 서로 다른 키가 1만개가 아니라 1억 개라면 같은 조건에서 열쇠를 찾는데에는 약 1년 6개월이 필요하기 때문입니다.
요즘 사용하고 있는 대칭키 알고리즘은 2128개( >1038) 정도의 서로 다른 키가 존재하기 때문에 같은 조건이라면 평균적으로 5×1030년이 걸릴 것입니다. 참고로 지구의 나이는 대략 4.6×109년(46억년) 정도 된다고 합니다.
대표적인 대칭키 알고리즘으로는 DES, triple-DES, RC4, IDEA, AES 등의 외산 알고리즘과 SEED, ARIA 등의 국산 알고리즘이 있습니다. 우리나라 공인인증체계에서는 SEED를 주로 사용하며 제한적인 부분에서 DES, triple-DES, RC4를 사용하고 있습니다.
- DES(Data Encryption Standard)는 1970년대 초 미국 상무부가 정부와 민간의 조달 등에서 사용할 목적으로 공개 모집된 것 중 IBM이 제안한 것을 미국 국가안전보장국(NSA)이 수정해 표준(FIPS PUB 46-2)으로 만든 알고리즘입니다.
- triple-DES는 DES의 키 길이가 짧은 약점을 보완하기 위해 DES 알고리즘을 동일하게 사용하면서 키를 2개 또는 3개 사용하여 한 번의 암호화과정에 DES암호화(첫 번째 키)-DES복호화(두 번째 키)-DES암호화(첫 번째 또는 세 번째 키)의 세 단계 DES 연산을 수행하는 알고리즘입니다.
- AES(Advanced Encryption Standard)는 미국 국립표준기술연구소(NIST)가 기존의 DES 알고리즘을 대체할 차세대 암호 표준을 공개 모집하여 선정한 알고리즘입니다. 공개 모집된 알고리즘 중에서 Rijndael 알고리즘이 최종적으로 AES로 선정되었으며, 2001년 11월 FIPS PUB 197로 표준화되었다. 지난 2005년 11월에는 ISO/IEC 국제표준화회의에서 국제표준으로 확정되었습니다.
- SEED는 민간부분에서 정보와 개인프라이버스 보호를 위해 한국정보보호진흥원(KISA)과 한국전자통신연구원(ETRI) 주도하에 개발된 대칭키 알고리즘입니다. 1999년 9월 국내 단체표준화(TTA.KO-12.0004)를 완료하였으며, 2005년 11월에는 ISO/IEC 국제표준화회의에서 국제표준으로 확정되었습니다.
- ARIA는 국가기관 및 지방자치단체간, 대국민 행정서비스 정보보호를 위해 국가정보원과 국가보안기술연구소(NSRI) 주도하에 학계, 연구소, 정부기관 공동연구로 개발된 대칭키 알고리즘입니다.