시작하며
인터넷 보안은 다양한 프로토콜과 알고리즘을 사용합니다. 보안 강화에 대한 요구가 높아지면서 좀더 안전하고 신뢰할 수 있는 암호화기법에 대한 요구가 늘고 있습니다. 인터넷 전화 보안에서는 TLS와 SRTP가 필수적인 암호화 프로토콜이지만, 세부적인 해쉬 함수와 암호화 알고리즘은 계속 변화하고 있습니다.
기존의 3DES 는 슈퍼키의 존재에 대한 의문과 해킹 가능성에 대한 우려로 인해 AES로, 해쉬의 대표적인 알고리즘이였던 MD5는 SHA로 대체되었습니다. 이제 PKI의 근간이 되는 키관리 및 키 교환 알고리즘도 RSA와 ECC가 경합을 벌이고 있습니다. 새롭게 대두된 ECC에 대해 살펴보겠습니다.
위의 내용을 잘 이해하기 어려우신 분들은 Secure UC에 대한 기초 내용을 설명한 아래 카테고리를 먼저 참조하여 읽으시길 권합니다.
http://www.nexpert.net/category/Secure%20UC
공개키 암호 알고리즘 개요
공개키 암호 알고리즘은 크게 소인수 분해를 이용한 알고리즘과 이산대수 문제를 이용한 알고리즘으로 나뉩니다.
간단하게 정리해봅니다.
- 소인수분해 문제기반 암호 알고리즘
어떤 수 A를 두 수의 곱으로 나타낼 수 있을 때 (A = B*C) 두 수 B와 C를 인수라 하고, B와C가 소수일 경우 소인수라고 합니다. 소인수가 충분히 큰 수일 경우 인수 분해하기가 매우 어렵다는 원리를 이용한 암호 기법입니다. 즉, 두 개의 큰 소수 (백자리 이상) B와 C 가 있을 때 B와 C를 알면 A를 찾기 쉽지만, A만 가지고 소수 B와 C로 인수분해하기는 어렵습니다. 소수는 1과 자기자신으로만 나누어지기 때문입니다. 그래서 새로운 소수를 찾는 것이 중요하고, 많은 수학자들이 소수를 찾는 방법이나 원리를 연구합니다. 소수를 찾는 새로운 공식을 만든다면 수학자들의 노벨상인 필즈상을 받을 수도 있습니다. ^^
소인수 분해를 이용한 대표적인 암호화 알고리즘이 RSA입니다.
- 이산 대수 문제기반 암호 알고리즘
어떤 수 A를 B의 C승으로 나타내는 낼 때 (A=B^C), C의 값을 찾는 것을 이산대수 문제니입니다. 2^C = 8이라면 C가 3인 것을 찾는 것인데 아래 그림처럼 타원 곡선 (Elliptic curve)으로 옮겨 놓으면 풀기가 매우 어렵다는 원리에서 출발한 암호화가 ECC입니다.
제가 한참을 찾아보았으나 이산대수 문제가 왜 어려운지를 설명한 내용을 도저히 이해하기가 어려웠습니다. 그래서 그냥 외우기로 했습니다. -,-:? 그냥 ECC는 풀기 어려운 암호화 기법이다 정도로.. 머 개발할 것도 아니므로
ECC (Elliptic curve cryptography)의 개요
ECC는 타원곡선 암호에 기반한 공개키 암호방식입니다. 1985년 닐코블리츠와 빅터 밀러가 거의 같은 시기에 독립적으로 제안하였습니다. ECC는 RSA 보다 매우 짧은 길이의 키를 사용하면서도 비슷한 수준의 안정성을 제공하는 것이 특징입니다. 아래표에서 보듯이 RSA 암호 시스템의 1024 비트 정도의 안전도를 제공하는 ECC의 키길이는 160 비트 정도면 됩니다.
현재 ECC는 암호화에는 사용되지 않으며, 전자서명과 키교환 부분에서 주로 응용되고 있습니다.
- 전자서명 (ECDSA, Elliptic Curve Digital Signature Algorithm)
ECDSA는 미국 연방 표준 서명 알고리즘인 DSA (FIPS 186)를 타원곡선 알고리즘으로 변환한 것으로 사용자 인증에 활용됩니다. - 키교환알고리즘 (ECDH, Elliptic Curve Diff-Hellman)
ECDH는 RSA의 Diff-Hellman 키교환 알고리즘과 마찬가지로 키교환을 위한 알고리즘입니다.
ECC의 현황
웹상의 자료들을 살펴보니 ECC가 분명히 RSA보다 상대적으로 안전한 알고리즘이라는 의견이 지배적입니다. 그러나 상대적으로 복잡하고 실제 구현을 위해 전문 지식이 필요하여 업계 전반으로 확대되는 데에는 많은 시간이 필요하다고 합니다. 또한, 특정 타원 곡선 유형에서는 쉽게 풀리는 문제점이 지적되고 있습니다.
- 2010년 12월 소니는 PlayStation3에 ECDSA 개인키가 해킹되었으며, 잘못된 알고리즘 사용이 원인이였습니다.
- 2011년 3월 29일 서버의 TLS 개인키가 노출될 수 있는 가능성이 제기되어 OpenSSL 1.0.0e에서 수정되었습니다.
- 2013년 8월 자바 SecureRandom 클래스의 결함이 발견되었습니다.
한국 정보통신기술협회 관련 자료
http://en.wikipedia.org/wiki/Elliptic_Curve_DSA
라인하트 (CCIEV #18487) _______________________________________________________________
ucwana@gmail.com (라인하트의 구글 이메일)
http://twitter.com/ucwana (라인하트의 트위터 )
http://twitter.com/nexpertnet (넥스퍼트 블로그의 트위터, 최신 업데이트 정보 및 공지 사항)
http://groups.google.com/group/cciev (시스코 UC를 공부하는 사람들이 모인 구글 구룹스)
http://groups.google.com/group/ucforum (UC를 공부하는 사람들이 모인 구글 구룹스)
세상을 이롭게 하는 기술을 지향합니다. ____________________________________________________