본문 바로가기

블로그

LG CNS 기술블로그 DX Lounge에서 최신 IT 소식을 만나보세요!

보안

암호 이야기 2편 – 암호 알고리즘에 대하여

2016.10.19

암호는 평문을 암호문으로 만들 때 사용하는 키와 암호문을 다시 원래의 평문으로 만들 때 사용되는 키가 동일한지 아니면 서로 다른 키를 사용하는지에 따라 대칭키 암호와 공개키 암호로 나누어집니다.

대칭키 암호는 암호화에 사용되는 키와 복호화에 사용되는 키가 동일한 것으로, 송신자와 수신자가 동일한 키를 소유하고 있기 때문에 두 사람 모두 키에 대한 비밀을 유지하고 있어야 합니다.

만약, 송신자와 수신자 둘 중 한 사람이라도 키를 노출한다면 그 키로 생성된 암호문은 더 이상 안전을 보장할 수 없습니다. 따라서 대칭키 암호에서는 키의 비밀 유지가 가장 중요하며 이 키를 비밀키라고 합니다.

l 대칭키 암호

대칭키 암호는 암호화와 복호화를 수행하는데 소모되는 시간이 매우 짧은 장점이 있어서 하드디스크에 저장된 파일을 암호화하거나 인터넷 뱅킹에서 전송되는 정보를 암호화하는데 사용되고 있습니다. 일반적으로 암호 알고리즘은 공개되기 때문에 암호문을 해독하기 위해서는 암호화에 사용된 비밀키만 찾으면 되기 때문에 대칭키 암호에서는 키의 비밀 유지가 가장 중요합니다.

비밀키를 소유하지 않은 제3자가 암호문을 해독하는 것은 매우 어려운 일이나 불가능하지만은 않습니다. 암호문을 해독하려고 노력하는 것은 암호화에 사용된 비밀키를 찾으려는 노력이며 만약 비밀키를 찾게 되면 그 키로 암호화된 모든 암호문은 쉽게 해독이 가능합니다.

이와 같이 암호화에 사용된 키를 찾는 작업은 컴퓨터의 성능과 연관되기 때문에 현재는 안전하다고 판단된 암호 알고리즘이라고 할지라도 10년 또는 20년 후에는 안정성을 보장하지 못할 수도 있습니다. 1970년대 미국에서 표준화된 대칭키 암호 알고리즘인 DES는 64비트 길이의 비밀키를 사용하고 90년대 중반까지 은행 등에서 데이터를 암호화하는데 사용했습니다.

그러나 90년대 후반 DES(Data Encryption Standard)의 안전성을 보장할 수 없게 되어 128비트 이상의 키를 사용하는 새로운 암호 알고리즘인 AES(Advanced Encryption Standard)를 개발하여 사용하고 있습니다.

대칭키 암호에서 128비트 이상의 비밀키를 사용하여 암호문을 생성할 경우 암호문만으로 키를 찾는 것은 현재의 컴퓨터 성능에서는 불가능하다고 판단하고 있습니다. 따라서 AES나 국내에서 개발된 암호 알고리즘인 SEED와 같이 128비트 이상의 키를 사용하는 대칭키 암호는 안전하다고 평가되고 있습니다.

그러나 향후 컴퓨터 기술이 더욱 발전하게 되면 현재 사용되고 있는 대칭키 암호 또한 더 이상 사용할 수 없게 될 수 있습니다.

따라서 현재의 암호를 대체할 수 있는 새로운 암호 알고리즘 개발에 대한 필요성이 점점 더 증가하고 있어 전 세계적으로 암호를 연구하는 학자들은 새로운 암호를 개발하는데 집중하고 있으며, 최근에는 양자 암호가 개발되어 보다 해킹이 불가능한 양자암호시스템을 상용화하려고 노력하고 있습니다.

대칭키 암호는 파일이나 이메일 등을 암호화하는데 매우 효과적으로 사용되는 암호입니다. 그러나 멀리 떨어져 있는 사람과 암호화된 파일이나 이메일을 송, 수신하기 위해서는 비밀키를 전달할 수 있는 방법이 제공되어야 합니다.

예를 들면 한국 학생이 미국 학생에게 이메일을 암호화하여 전송하고자 할 경우, 먼저 미국 학생에게 암호화에 사용되는 비밀키를 미리 알려줘야 합니다. 만약, 전화 통화나 이메일을 통해 비밀키를 전달하게 되면 통신망에 비밀키가 그대로 노출되기 때문에 비밀키가 안전하게 전달되는 것을 보장할 수 없습니다.

비밀키를 안전하게 전달할 수 있는 가장 좋은 방법은 직접 만나서 전달하는 것입니다. 그러나 멀리 떨어져 있는 사람에게 비밀키를 전달을 위해 직접 만나는 것은 시간적이나 경제적인 측면에서 매우 비효율적입니다. 따라서 이와 같은 문제를 해결할 수 있는 방법이 필요하며 이러한 문제 해결을 위해 개발된 암호 알고리즘이 공개키 암호입니다.

l 공개키 암호

공개키 암호에서는 암호문을 생성할 때 사용하는 키를 공개키라고 정의하고 암호문을 평문으로 바꾸는데 사용하는 키를 비밀키 또는 개인키라고 합니다. 공개키는 모든 사람들이 알 수 있도록 공개하기 때문에 공개키라고 하며, 비밀키는 수신자 혼자만 알고 있어야 하는 키로 비밀을 유지해야 되는 키를 말합니다.

공개키 암호에서는 누구나 공개키로 암호문을 생성할 수 있지만 암호문을 해독하기 위해 사용되는 비밀키는 수신자만 가지고 있는 방법으로 키 관리를 하기 때문에 다양한 분야에서 사용되고 있습니다. 공개키 암호에서는 서로 다른 두 개의 키를 사용하고 있어 항상 공개키와 비밀키를 모두 생성해야 합니다.

만약, 한 학급 30명의 학생이 개인적으로 작성한 숙제 파일을 암호화한 후 이메일로 첨부하여 선생님께 제출한다고 가정할 때, 대칭키 암호를 사용하는 경우와 공개키 암호를 사용할 경우 다음과 같은 차이점이 있습니다.

대칭키 암호를 이용하여 암호화된 파일을 전송할 경우, 학생은 선생님과 1:1로 관계이므로 학생 입장에서는 선생님과 공동으로 사용하는 하나의 비밀키만 알고 있으면 되고 이 비밀키로 파일을 암호화하여 선생님께 전송하면 안전하게 숙제를 제출할 수 있게 됩니다.

그러나 선생님 입장에서는 학생들과 1:30의 관계가 되기 때문에 선생님은 학생 수에 해당하는 30개의 비밀키를 알고 있어야 하고 각각의 학생들의 비밀키에 대한 비밀을 유지해야 합니다. 따라서 학생 수가 많으면 많을수록 선생님께서 비밀을 유지해야 하는 키의 수는 점점 더 늘어나게 되어 많은 키에 대한 비밀을 유지하는 것이 매우 어려워질 수 있습니다.

공개키 암호를 이용할 경우, 선생님은 공개키와 비밀키 한 쌍을 생성한 후 공개키는 30명의 학생들에게 알려주고 비밀키는 선생님 혼자만 알고 있으면됩니다. 선생님이 학생 30명의 암호화된 파일을 전송받더라도 하나의 비밀키로 모든 학생들이 보내온 파일을 복호화 할 수 있습니다.

학생들은 공개키로 암호화하여 전송하기 때문에 암호화는 쉽게 수행할 수 있지만 다른 학생들이 생성한 암호화된 파일은 볼 수 없고, 비밀키를 보유하고 계신 선생님만이 복호화 할 수 있습니다. 공개키 암호는 대칭키 암호에서 가장 큰 단점인 키의 비밀을 유지하고 관리해야 되는 문제를 해결할 수 있습니다.

따라서 앞에서 설명한 미국 학생에게 비밀키를 전달하기 위한 방법으로 공개키 암호를 사용할 경우, 한국 학생은 미국 학생의 공개키를 이용하여 자신의 비밀키를 암호화하여 전달하면 미국 학생은 자신만이 알고 있는 비밀키를 이용하여 복호화 하면 한국 학생의 비밀키를 안전하게 수신 받을 수 있어 키 전송 문제를 해결할 수 있습니다.

대표적 공개키 암호인 RSA는 Ron Rivest, Adi Shamir 그리고 Leonard Adleman 세 사람에 의해 개발되었습니다. 이것은 대칭키 암호와는 다르게 수학적 연산을 수행하기 때문에 암호화와 복호화를 수행하는데 대칭키 암호에 비하여 매우 많은 시간이 소모됩니다. 따라서, 일반적으로 파일이나 이메일 등의 암호화는 대칭키 암호를 이용하고, RSA는 대칭키 암호에서 사용하는 키 전송과 디지털 서명 등에 응용되고 있습니다.

l 디지털 서명

디지털 서명(Digital Signature)은 특정 사용자가 다수의 타인에게 본인임을 증명하기 위한 인증 용도로 사용할 수 있으며, 그림에 나타낸 것과 같이 공개키와 비밀키는 일반적인 메시지 암호화 과정과 반대로 사용됩니다. 디지털 서명에서 메시지를 비밀키로 암호화하여 생성된 암호문을 디지털 서명이라고 하고, 공개키로 암호문을 복호화 하는 것은 서명을 검증하는 것에 해당합니다.

공개키 암호에서는 공개키와 짝을 이루고 있는 비밀키로만 암호문을 복호화 할 수 있으며, 반대로 비밀키로 암호문을 생성하였을 경우에도 그 비밀키와 짝을 이루고 있는 공개키로만 복호화 할 수 있습니다. 따라서 디지털 서명에서는 공개키와 짝을 이루고 있는 비밀키로 암호문을 생성해야만 디지털 서명을 검증하고 서명을 생성한 사람이 누구인지 확인할 수 있습니다.

대칭키 암호는 하나의 비밀키를 사용하여 암호화를 수행하기 때문에 메시지 암호화를 위한 용도로만 사용하지만, 공개키 암호는 두 개의 서로 다른 키를 사용하기 때문에 암호화에 사용되는 키에 따라 응용 분야가 달라집니다.

즉, 공개키를 사용하여 암호문을 생성하는 경우에는 메시지를 암호화하는 용도로 사용하고, 반대로 비밀키로 암호문을 생성하고 공개키로 복호화 하는 것은 디지털 서명을 생성하고 검증하는 용도로 사용합니다.

글 | 이승대 교수 | 남서울대학교 전자공학과

[‘암호 이야기 _ 암호와 함께하는 생활’ 연재 현황]

  • [1편] 암호 이야기 1편 – 암호와 함께하는 생활 http://blog.lgcns.com/1210
  • [2편] 암호 이야기 2편 – 암호 알고리즘에 대하여 http://blog.lgcns.com/1230
  • [3편] 디지털 콘텐츠를 지키는 워터마크(Watermark) http://blog.lgcns.com/1252

챗봇과 대화를 할 수 있어요