비대칭키(Asymmetric Key) 암호 알고리즘이란?
-
비대칭키(Asymmetric Key) 암호화는 다른 말로
공개키 암호 알고리즘
라고 알려져 있습니다. 이는 하나의 키가 아닌 암호화에 쓰이는 키 값과 복호화에 쓰이는 키 값이 다른 것을 의미합니다. -
비대칭 키의 종류는 다음과 같이 있습니다.
- RSA(Rivest, Shamir and Adleman)은 대표적인 공개키 암호 알고리즘입니다. RSA는 공개키 암호 시스템으로 암호화와 인증에 사용되고, RSA는 오늘날 사용되는 공개키 암호 방식의 가장 일반적인 공개 알고리즘입니다.
- ElGamal 이산 대수 문제의 어려움에 기반을 둔 최초의 공개키 암호 알고리즘인 ElGamal은 1984년 스탠퍼드 대학의 암호 학자 T. ElGamal에 의해 제안되었습니다.
- ECC(Elliptic Curve Cryptosystem)타원곡선(Elliptic Curve)은 약 150년 전부터 수학적으로 광범위한 연구가 있었습니다. 이러한 수학적 원리를 이용하여 차세대 공개키 암호 방법으로 주목 받고 있습니다.
- DSA(SEED)는 전자상거래, 금융, 무선통신 등에서 전송되는 개인정보와 같은 중요한 정보를 보호하기 위해 1999년 2월 한국인터넷진흥원과 한국의 암호 전문가들이 순수 한국 기술로 개발한 128-비트 블록암호입니다.
-
비대칭키 암호화는
양방향 암호화
로써, 복호화가 가능한 암호 알고리즘입니다. 공개키 암호는 대칭키 암호의 키 전달에 있어서 취약점을 해결하고자 한 노력의 결과로 탄생했습니다. 한 쌍의 키가 존재하며, 하나는 특정 사람만이 가지는 개인키(또는 비밀키)이고 다른 하나는 누구나 가질 수 있는 공개키입니다. 공개키 암호화 방식은 암호학적으로 연관된 두 개의 키를 만들어서 하나는 자기가 안전하게 보관하고 다른 하나는 상대방에게 공개합니다.개인키로 암호화 한 정보
는 그 쌍이 되는 공개키로만 복호화가 가능하고,공개키로 암호화한 정보
는 그 쌍이 되는 개인키로만 복호화가 가능합니다. - 만약, 개인이 비밀통신을 할 경우 비대칭키 암호화보다 대칭키 암호를 사용할 수 있지만, 다수가 통신을 할 때에는 키의 개수가 급증하게 되어 큰 어려움이 따른다. 이런 어려움을 극복하기 위해 나타난 것이 공개키 암호이다. 공개키 암호는 다른 유저와 키를 공유하지 않더라도 암호를 통한 안전한 통신을 할 수 있다는 장점을 있다.
RSA(Rivest, Shamir and Adleman)란?
-
RSA는 로널드 리베스트(Ronald Rivest)와 아디 샤미르(Adi Shamir), 레너드 애들먼(Leonard Adleman) 등 3명의 수학자에 의해 개발된 알고리즘을 사용하는 인터넷 공개키 암호화 및 인증시스템입니다. 3명의 이름 가운데 첫 글자를 모아 붙인 용어입니다.
암호화뿐만 아니라 전자서명이 가능한 최초의 알고리즘
으로 알려져 있습니다. RSA가 갖는 전자서명 기능은 인증을 요구하는 전자 상거래 등에 RSA의 광범위한 활용을 가능하게 하였다. -
RSA에서는 두 개의 키(Key)를 사용합니다. 여기서 키란 메시지를 열고 잠그는 상수(constant), 즉 숫자를 의미합니다.
-
RSA는
소인수 분해의 난해함에 기반
하여, 공개키만을 가지고는 개인키를 쉽게 짐작할 수 없도록 디자인되어 있습니다. 보다 이해하기 쉬운 예를 들어보면 다음과 같습니다. -
A라는 사람에게 B라는 사람이 메시지를 전하고자 할 때 B는 A의 열린 자물쇠를 들고 와 그의 메시지를 봉인(
공개키 암호화 과정
에 해당)하고, 그런 다음 A에게 전해 주면, 자물쇠의 열쇠(개인키
에 해당)를 가지고 있는 A가 그 메시지를 열어보는(개인키 복호화 과정
에 해당) 식이 됩니다. 중간에 그 메시지를 가로채는 사람은 그 열쇠를 가지고 있지 않으므로 메시지를 열람할 수 없습니다.
-
RSA는
-
이 알고리즘은 두 개의 큰 소수 (소수는 그 숫자와 1로만 나누어지는 수)들의 곱과, 추가 연산을 통해 하나는 공개키를 구성하고 또하나는 개인키를 구성합니다. 이 때 사용되는 두 세트의 수 체계를 유도하는 작업이 수반됩니다. 한 번 그 키들이 만들어지면, 원래의 소수는 더 이상 중요하지 않으며, 버릴 수 있습니다. 공개 및 개인키 둘 모두는 암호화/복호화를 위해 필요하지만, 오직
개인키의 소유자만
이 이를 알아야 합니다. RSA 시스템을 사용하면, 개인키는 절대로 인터넷을 통해 보내지지 않습니다.