암호화 알고리즘

비대칭키

긋대디 2018. 12. 27. 13:21

공개키 암호(Public key cryptosystem)

공개키 암호는 비밀키 암호와 달리 송신자와 수신자가 다른 키를 사용하여 비밀 통신을 수행한다. 송신자는 수신자의 공개키에 해당하는 정보를 사용하여 데이터를 암호화하여 네트워크를 통해 전송한다. 수신자는 자신의 공개키에 해당하는 비밀키로 암호화된 데이터를 복호화하여 평문을 복원한다.

공개키 암호는 다른 유저와 키를 공유하지 않더라도 암호를 통한 안전한 통신을 한다는 장점을 갖는다. 각 사용자는 자신에게 전송하기 위해 사용될 키를 공개하고, 공개된 키 정보로 암호화된 정보를 복호화할 수 있는 키를 비밀로 보유하고 있음으로써 누구나 암호화할 수 있지만 공개키에 대응되는 비밀키를 가진 당사자만 복호화할 수 있는 특징을 가진다. n명의 사용자로 구성된 네트워크를 고려하면 각 사용자는 공개키와 비밀키 두 개를 보유하고 있으므로 네트워크 전체적으로 2n개의 키가 요구된다. 그리고 각 유저는 2개의 키만 보유하고 있으면 된다.

공개키 암호는 수학적인 난제를 기반으로 설계되어 있고, 암호화나 복호화를 수행하기 위한 연산이 복잡한 수학 연산을 기반으로 구성되기 때문에 효율성은 비밀키 암호에 비해 높지 않다. 공개키 암호의 경우에는 모두가 확인할 수 있는 공개키에 대응되는 비밀키가 각 사용자만 알고 있는 정보이기 때문에 광범위한 인증 기능이 제공된다.

대표적인 공개키 암호 알고리즘은 다음과 같다

RSA(Rivest, Shamir and Adleman)

RSA[25]는 공개키 암호 시스템으로 암호화와 인증에 사용된다. RSA는 일반 정수론적인 면에서 정의되었다. 이 시스템은 큰 수의 인수분해의 어려움에 안전성을 두고 있다. 전자 서명의 길이는 RSA 시스템에서의 키 길이와 같다. RSA 시스템을 깨는 문제가 인수분해 문제로 귀결된다는 완전한 수학적 증명의 부족과 인수분해 문제가 NP-hard임에도 불구하고, RSA는 수많은 국제기구의 표준일 뿐만 아니라 산업 표준으로 권장되고 있다.

ElGamal

이산 대수 문제의 어려움에 기반을 둔 최초의 공개키 암호 알고리즘인 ElGamal[26]은 1984년 스탠퍼드 대학의 암호 학자 T. ElGamal에 의해 제안되었다. ElGamal으로 암호화하면 메시지의 길이가 두 배로 늘어나는 특징이 있다. 하지만 암호화할 때 난수를 이용하므로 같은 메시지에 대해 암호화하여도 암호화할 때마다 서로 다른 암호문을 얻게 되는데, 이것은 정보보호 측면에서 큰 장점이 된다. RSA에서는 난수를 사용하지 않기 때문에 같은 메시지에 대한 암호문은 항상 같다는 특징이 있는데, 이것은 공격자가 암호문을 복호화하지 않고도 평문을 추측할 수 있는 단점이 된다. 그러므로 실제 적용 시 RSA는 난수를 사용하는 OAEP(Optimal Asymmetric Encryption Padding)이라는 난수화 패딩 알고리즘과 함께 사용된다.

ECC(Elliptic Curve Cryptosystem, 타원 곡선 암호 시스템)

타원 곡선(Elliptic Curves)은 약 150년 전부터 수학적으로 광범위한 연구가 있어 왔다. ECC[27]는 10여 년 전 비트 당 안전도가 타 공개키 시스템보다 효율적이라는 것이 알려졌고, 최근 높은 속도의 구현이 가능하게 되었다. 또한, ECC는 전원의 양이 한정된 이동 통신 기기의 암호화에 적용될 수 있으며, 차세대 공개키 암호 방법으로 주목 받고 있다.

전자 서명(Digital signature)

전자 서명(Digital Signature)은 우리가 일상생활에서 신원을 확인하거나 거래를 하려고 할 때 주민등록증이나 인감 날인 또는 서명 등이 필요하듯이, 인터넷 상에서도 이를 확실히 보장해 주는 수단이 바로 전자 서명이다. 즉, 전자 서명은 인증서 형태로 발급되는 자신만의 디지털 인감이며 서명인 것이다. 결국, 전자 서명은 어떤 사람이 그 문서를 작성했다는 것을 증명하는 방법이므로 전자 서명을 하기 위해서는 어떤 문서에 그 문서를 자신의 개인키로 암호화해서 첨부하는 것이다. 이렇게 암호화된 것은 공개키에 의해서 복호화되어서 원문과 비교될 수 있다. 그러므로 이 방법을 사용하면 어떠한 사람이 서명했다는 것을 증명할 수 있다.

전자 서명은 DSA(Digital Signature Algorithm), RSA Signature, ECDSA (Elliptic Curve Digital Signature Algorithm)이 주로 사용된다. DSA는 미국 연방 표준 FIPS 186에 명시되어 있으며 1,024~15,360 사이의 키 사이즈를 가지며 메시지 다이제스트 함수인 SHA-256/384/512 등을 이용하여 구성된다. RSA 서명은 ANSI X9.31 또는 PKCS#1 v1.5 이상의 문서에 명시되어 있으며 키 사이즈는 1,024 비트부터 256 비트씩 증가하고, 두 개의 표준은 다른 포맷을 가진다. ECDSA는 미국 연방 표준 FIPS 186인 DSA를 타원 곡선에 적용한 것으로 ANSI X9.62로 표준화되어 있으며 국제적으로 가장 널리 사용되고 있다. 국내에서도 기존의 전자 서명 표준인 KCDSA의 타원 곡선 변형을 EC-KCDSA라는 이름으로 2006년 TTA 표준으로 제정한 바 있다. 또한 미 연방 정부 표준이 FIPS 186-2에서는 X9.62 표준을 그대로 따르되, 다만 연방 정부용으로 사용하기 위한 권장 곡선을 추가로 제공하고 있으며 최소 160 비트 이상의 키 사이즈를 가진다.

PKCS[29]는 미국의 RSA사가 개발한 암호 작성 시스템으로 이는 애플, 마이크로소프트, DEC, 로터스, 선, MIT 등 컨소시엄 공동으로 개발한 것이다. PKCS는 인터넷 상에서 안전한 정보 교환을 이루기 위해 산업계 내부에서 사용되는 일련의 비공식 표준 프로토콜이며, PKCS 표준은 PKCS#1부터 PKCS#15까지 있다. 여기에는 RSA 암호화, 패스워드 기반의 암호화, 확장된 인증서 구문법, 이메일 보안용으로 RSA가 제안한 S/MIME를 위한 암호 메시지 구문법, 안전이 보장된 전자 우편을 위한 표준 등이 포함되어 있다.

PKCS#1 :
RSA Cryptography Standard.
PKCS#2 :
PKCS#1에 통합됨.
PKCS#3 :
Diffie-Hellman Key Agreement Standard.
PKCS#4 :
PKCS#1에 통합됨.
PKCS#5 :
Password-based Encryption Standard.
PKCS#6 :
Extended-Certificate Syntax Standard.
PKCS#7 :
Cryptographic Message Syntax Standard.
PKCS#8 :
Private-Key Information Syntax Standard.
PKCS#9 :
Selected Attribute Types.
PKCS#10 :
Certification Request Syntax Standard.
PKCS#11 :
Cryptographic Token Interface Standard.
PKCS#12 :
Personal Information Exchange Syntax Standard.
PKCS#13 :
Elliptic Curve Cryptography Standard.
PKCS#14 :
Pseudo-random Number Generation.
PKCS#15 :
Cryptographic Token Information Format Standard.

 

'암호화 알고리즘' 카테고리의 다른 글

스마트폰용 암호라이브러리  (0) 2018.12.27
해쉬 함수  (0) 2018.12.27
대칭키  (0) 2018.12.27
암호화 역사  (0) 2018.12.27
쉽게보는 ARIA 알고리즘 - 라운드  (0) 2018.12.26