2. 비대칭키 암호
(1) 공개키 암호
비대칭키 암호는 공개키 암호(Public-key Encryption)라고도 하며, 대칭키 암호와 달리 암·복호화에 서로 다른 키를 사용하는 알고리즘입니다. 송신자는 수신자의 공개키를 이용하여 암호화하며, 수신자는 자신의 공개키로 암호화된 암호문을 자신의 개인키로 복호화할 수 있습니다. 공개키 암호는 수학적인 난제를 기반으로 설계되어 있고 암복호화에 복잡한 수학 연산을 사용하기 때문에, 대칭키 암호에 비해 효율성이 떨어질 수 있습니다. 하지만, 여러 송신자가 하나의 공개키로 암호화를 수행하기 때문에 사용자가 많더라도 키를 관리하는 데에 유리합니다. 대표적인 알고리즘으로 RSA, ElGamal, ECC 등이 있습니다.
(2) 전자 서명
전자 서명(Digital Signature)은 인터넷 상에서 본인임을 증명하기 위해 서명을 하는 수단으로, 공개키 암호를 거꾸로 활용하는 방식입니다. 송·수신자의 역할이 반대로 되어, 개인키를 소유한 사람만이 전자 서명 알고리즘을 통해 평문에 대한 서명 값을 생성할 수 있습니다. 생성된 서명 값에 대하여 공개키를 이용하면 평문을 검증할 수 있기 때문에, 누구나 그 서명을 검증할 수 있게 됩니다. 대표적인 전자 서명 알고리즘으로 DSA, RSA SIgnature, ECDSA 등이 있습니다.
3. 해시 함수
해시 함수(Hash Function)는 임의의 길이의 메시지를 입력으로 받아 고정된 길이의 해시 값을 출력하는 함수입니다. 해시 함수에는 암호 키가 사용되지 않기 때문에, 같은 입력에 대해서 항상 같은 해시 값을 얻을 수 있습니다. 이러한 성질로 인해 입력 메시지에 대한 변경할 수 없는 증거 값을 만들어냄으로서, 주로 무결성을 제공하는 목적으로 사용됩니다.
안전한 해시 함수는 역상 저항성, 제 2 역상 저항성, 충돌 저항성을 가져야 합니다.
– 역상 저항성 : 어떤 해시 값에 대하여, 원래 입력 값을 찾는 것이 어려워야 하며, 이를 일방향성(One-wayness)이라고도 합니다.
– 제 2 역상 저항성 : 입력 값에 대하여, 그 입력값의 해시 값과 같은 해시 값을 같은 또다른 입력값을 찾는 것이 어려워야 합니다.
– 충돌 저항성 : 같은 해시 값을 갖는 두 입력 값을 찾는 것이 어려워야 합니다.
해시 함수는 데이터가 통신 중 변조되지 않았다는 무결성 검증이 필요할 때, 메시지인증코드(MAC, Message Authentication Code)의 형태로 사용될 수 있습니다. 또한, 해시 함수는 전자서명에도 활용될 수 있습니다. 전체 메시지가 아닌 짧은 해시 값에 전자 서명을 계산하면 효율적으로 서명 값을 생성할 수 있습니다. 원래 메시지가 아닌 해시 값에 대해 서명을 하였지만 같은 해시 값을 갖는 다른 메시지를 찾는 것이 어렵기 때문에, 이 서명은 메시지에 대한 서명이라고 인정됩니다. 대표적인 해시 함수로는 MD5, HAS-160, SHA-1, SHA-2, SHA-3 등이 있습니다.