2020.10.20

'알고리즘이 정보를 보호하는 방법'··· 암호 기법의 의미와 종류

Josh Fruhlinger | CSO
암호 기법(Cryptography)은 정보를 의도하지 않은 수신자가 파악할 수 없는 형태로 바꾸어 보호하는 학문이다. 암호 기법에서는 인간이 판독할 수 있는 원본 메시지인 평문(plaintext)이 알고리즘(Algorithm) 또는 일련의 수학적 연산에 의해 정보가 없는 관찰자에게 기버리시(Gibberish), 즉, 암호문(Ciphertext)처럼 보이게 된다.

암호 기법 시스템은 의도한 수신자가 암호화된 메시지를 (항상 그런 것은 아니지만 일반적으로 암호문을 평문으로 바꾸어) 활용할 수 있도록 하는 수단이 필요하다.


암호 기법과 암호화의 차이

암호화(Encryption)는 평문을 암호문으로 바꾸는 과정이다(Crypt라는 단어는 무덤을 연상시키지만 그리스어로 ‘숨겨진’ 또는 ‘비밀’이라는 의미다). 암호화는 암호 기법의 중요한 부분이지만 학문 전체를 아우르지는 못한다. 반대말은 복호화(Decryption)이다.

암호화 과정의 중요한 측면은 거의 항상 알고리즘과 키(Key)가 수반된다는 점이다. 키는 또 다른 정보(거의 대부분 숫자)이며 암호화를 위해 알고리즘이 평문에 적용되는 방식을 지정한다. 일부 메시지가 암호화되는 방식을 알더라도 키가 없으면 복호화 하기가 어렵거나 불가능하다.


암호 기법의 역사

암호 기법의 구체적인 내용을 이해하는 데 좋은 방법은 알려진 암호 기법의 초기 형태를 살펴보는 것이다. 이것을 카이사르 암호(Caesar cipher)라고 부르는 이유는 줄리어스 시저가 자신의 비밀 우편을 위해 사용했기 때문이다. 카이사르 자서전의 저자 수에토니우스가 말했듯이 “그에게 비밀이 있는 경우 알파벳의 문자의 숫자를 바꾸어 암호로 썼다... 이걸 해독하여 이해하고 싶은 사람은 A 대신에 D를 사용하는 등 알파벳의 4번째 글자를 치환해야 했다.”

수에토니우스의 설명은 암호 기법의 2가지 요소인 알고리즘과 키로 나누어 볼 수 있다. 여기에서 알고리즘은 단순하다. 각 글자를 나중에 알파벳의 다른 글자로 대체하는 것이다. 키는 알파벳의 많은 글자를 찾아 암호문을 만드는 방식이다. 수에토니우스가 설명한 암호의 버전에서는 3이지만 다른 변형도 가능하다. 예를 들어, 4의 키가 있으면 A가 E가 된다.

이 예에서 몇 가지를 확실히 짚고 넘어가야 한다. 이런 암호화는 원하는 메시지를 비밀스럽게 전송하는 꽤 단순한 방법을 제공한다. 암호 문구 시스템으로 “피자를 주문하자”는 말이 “나는 갈리아를 침략할 것이다”는 말이 되게 할 수도 있다.

이런 종류의 코드를 해석하려면 의사소통 체인의 양 끝 사람이 코드 문구책이 있어야 하며, 미리 생각하지 않은 새로운 문구는 암호화할 수 없다. 카이사르 암호를 통해 생각할 수 있는 모든 메시지를 암호화할 수 있다. 복잡한 코드책보다는 정보를 전달해 보관하기가 더 쉽고 안전하지만 소통하는 모든 사람이 알고리즘과 키를 미리 알아야 한다는 것이 문제다.

카이사르 암호는 환자식 암호(Substitution Cipher)라고도 부른다. 왜냐하면 각 글자가 다른 글자로 치환되기 때문이며, 이에 대한 다른 변형 방식에서는 문자 블록이나 단어 전체를 치환한다. 

대부분의 역사에서 암호 기법은 정부와 군사 통신의 보안을 위해 배포된 다양한 환자식 암호로 구성되어 있었다. 중세 아랍의 수학자들은 이 학문, 특히 암호화의 미학을 발전시켰다. 연구원들이 특정 언어의 특정 글자가 다른 것들보다 더 많이 사용된다는 사실을 발견하면서 패턴을 인식하기가 더 쉬워진 경우도 있다.

하지만 대부분의 근대 암호화는 현대의 기준으로 보았을 때 놀랍도록 단순하며, 그 이유는 분명하다. 컴퓨터가 출현하기 전에는 수학적 변형을 암호화 또는 복호화가 가치가 있을 만큼 충분히 신속하게 수행하기가 어려웠다.

사실, 컴퓨터와 암호 기법의 발전은 밀접한 관련성이 있다. 현대 컴퓨터의 전도가 된 차분기관(Difference Engine)에 대한 아이디어를 제시한 찰스 배비지도 암호 기법에 관심이 있었다. 2차 세계대전 중 독일인들은 전기 기계식 에니그마(Enigma) 기계를 사용해 메시지를 암호화했고, 알려진 대로 영국에서 앨런 튜링이 이끄는 팀이 유사한 기계를 개발해 코드를 해독했으며, 그 과정에서 최초의 근대 컴퓨터의 기초가 수립되었다. 컴퓨터가 보급되면서 암호 기법이 급격히 복잡해졌지만 수십 년 이상 스파이와 장군들의 영역으로 남아 있었다. 하지만 1960년대가 되면서 상황이 달라지기 시작했다.


네트워크 보안의 암호 기법

최초의 컴퓨터 네트워크가 구성되면서 민간인들은 암호 기법의 중요성에 대해 생각하기 시작했다. 컴퓨터들은 단순히 상대방에 대한 직접 연결뿐 아니라 개방된 네트워크를 통해 대화하고 있었고, 이런 네트워킹이 다양한 측면에서 혁신적이었지만 네트워크를 통해 이동하는 데이터를 훔치기가 너무 쉬웠다. 그리고 금융 서비스가 초기의 컴퓨터 통신 사용례가 되면서 정보를 보호할 수 있는 방법을 찾아야 했다.

IBM이 1960년대 말에 ‘루시퍼(Lucifer)’라는 암호화 방법으로 이를 주도했으며, 결국 미국 표준기술연구소(US National Bureau of Standards)는 이를 최초의 ‘데이터 암호화 표준(Data Encryption Standard, DES)’으로 성문화했다. 인터넷의 중요성이 커지고 더 많은 개선된 암호화가 필요하게 되면서 현재 전 세계로 날아다니는 데이터의 상당 부분이 앞으로 설명할 다양한 기법을 통해 암호화되고 있다.


암호 기법의 용도

지금까지 군사 보안 유지부터 인터넷에서 금융 데이터를 안전하게 전송하는 것까지 구체적인 암호 기법의 구체적인 적용에 관해 설명했다. 하지만 더 큰 그림에서 보면, 암호 기법을 활용해 달성하고자 하는 광범위한 사이버보안 목표가 존재하며, 사이버보안 컨설턴트 그레이 케슬러는 이렇게 설명했다. 암호 기법을 활용해 보안 전문가는 다음과 같은 목표를 수행할 수 있다.
 
  • 데이터 내용 기밀 보호
  • 메시지 발송자와 수신자의 신원 인증
  • 데이터의 무결성을 확보해 데이터가 변경되지 않았음을 입증
  • 예정된 발송자가 정말로 이 메시지를 발송했음을 입증(부인 방지의 원칙)

이런 목표 가운데 일부는 CIA(Confidentiality(기밀성) Integrity(무결성) Availability(가용성)) 3원칙에서 변형된 것이다. 첫 번째 용도는 데이터를 암호화해 보호하는 것이다. 다른 것들은 설명이 필요하기 때문에 다른 암호 기법 유형을 설명하면서 살펴보자.

 
암호 기법의 유형

다양한 암호 기법 알고리즘이 사용되고 있지만 일반적으로 비밀 키 암호 기법, 공개키 암호 기법 및 해시 함수로 분류할 수 있다. 암호 기법 영역에서는 저마다 각각의 역할이 있다.

- 비밀 키 암호 기법 
앞서 설명한 카이사르 암호는 비밀 키 암호 기법의 좋은 예다. 카이사르와 100인 대장이 암호화된 메시지를 교환하는 경우, 두 당사자들은 키를 알아야 한다. 여기에서는 평문을 암호문으로 바꾸거나 그 반대의 경우를 위해 알파벳을 앞/뒤로 몇 글자나 이동해야 하는가이다. 하지만 키는 둘 사이에 비밀로 유지해야 한다. 

예를 들어, 메시지와 함께 키를 전송할 수 없다. 왜냐하면 둘 다 적의 손에 들어가게 되면 쉽게 해독해 처음부터 암호화의 목적이 무산될 수 있기 때문이다. 카이사르와 그의 100인 대장은 아마도 먼 곳에서 전쟁을 치르는 상황에서는 덜 이상적이었겠지만 서로 직접 만났을 때 키에 관해 논의해야 했을 것이다.

대칭 키(Symmetric Key)라고도 부르는 비밀 키는 데이터 보안을 위해 널리 사용되고 있다. 예를 들어, 로컬 하드 드라이브의 보안에 매우 유용할 수 있다. 같은 사용자가 보호되는 데이터를 암호화 및 복호화 하기 때문에 비밀 키 공유는 문제가 되지 않는다. 비밀 키 암호 기법도 사용해 인터넷을 통해 전송되는 메시지를 보호할 수 있다. 하지만 이를 위해서는 다음 형태의 암호 기법과 함께 배치해야 한다.

- 공개 키 암호 기법 
카이사르는 100인 대장들과 직접 대화할 수 있었지만 은행과의 전자 통신을 암호화하기 위해 은행에 찾아가 은행원에게 비공개 키가 무엇인지 파악하고 싶지는 않을 것이다. 그러면 온라인 뱅킹의 목적이 무색해질 것이다. 일반적으로 안전하게 기능하기 위해 인터넷은 내재적으로 안전하지 못한 네트워크를 통해 서로 대화하면서 안전한 통신을 위해 당사자들과 소통하는 수단이 필요하다. 이것은 공개 키 암호 기법을 통해 가능하다.

비대칭 키(Asymmetric Key)라고도 부르는 공개 키 암호 기법에서는 각 참여자가 2개의 키를 갖고 있다. 하나는 공개되어 있고 소통하고자 하는 당사자에게 전송된다. 해당 키를 사용해 메시지를 암호화한다. 하지만 다른 키는 비공개이고 그 누구와도 공유하지 않으며, 메시지를 복호화 하기 위해 필요하다. 

비유하자면, 공개 키는 편지함의 슬롯을 편지를 넣을 수 있도록 넓게 열어놓는다. 자신에게 편지를 보낼 가능성이 있는 사람에게 이런 치수를 제공한다. 비공개 키는 편지를 꺼낼 수 있도록 편지함을 여는 데 사용하는 것이다.

한 키를 사용해 메시지를 암호화하고 다른 키를 사용해 복호화 하는 방법에 관한 수학은 카이사르 암호의 키가 작동하는 방식보다 덜 직관적이다. 이 과정의 핵심적인 원리는 2개의 키가 실제로 서로 수학적으로 연결되어 있기 때문에 비공개 키에서 공개 키를 얻는 것은 쉽지만 반대의 경우는 그렇지가 않다. 예를 들어, 비공개 키는 2개의 매우 큰 소수일 수 있으며, 둘을 곱해야 공개 키를 얻을 수 있다.

공개 키 암호 기법을 위해 필요한 연산은 훨씬 더 복잡하고 자원 집약적이기 때문에 비밀 키 인프라가 필요하다. 다행히도 이것을 사용해 온라인으로 전송하는 모든 메시지를 보호할 필요는 없다. 대신에 한 당사자가 공개 키 암호 기법을 사용해 다른 암호 기법 키가 포함된 메시지를 암호화한다. 그리고 안전하지 못한 인터넷을 통해 안전하게 전송된 이 키가 공개 키가 되어 비밀 키 암호화를 통해 암호화되는 훨씬 긴 통신 세션을 암호로 바꾼다.

이런 방식으로 공개 키 암호 기법이 기밀성을 뒷받침한다. 하지만 이런 공개 키도 공개 키 인프라(Public Key Infrastructure) 또는 PKI라고 알려진 더 큰 함수 세트의 일부이다. PKI는 주어진 공개 키를 특정 사람 또는 기관과 연계시키는 수단을 제공한다. 이를 통해 공개 키로 암호화된 메시지가 발송자의 신원을 확인하여 인증 및 부인 방지를 실시한다.

- 해시 함수(Hash functions) 
공개 및 비공개 키 암호 기법 알고리즘은 모두 평문을 암호문으로 변환한 후 다시 평문으로 변환하게 된다. 반면에 해시 함수는 단방향 암호화 알고리즘이다. 평문을 암호화하면 결과 암호문(일명 해시)으로부터 절대로 복구할 수 없다.

이 때문에 해시 함수가 다소 무의미해 보일 수 있다. 하지만 해시 함수의 핵심은 같은 해시를 생성하는 2개의 평문이 존재하지 않는다는 점이다(수학적으로 정확한 말은 아니지만 실제로 사용 중인 해시 함수의 경우 발생 가능성이 일반적으로 무시할 수 있을 만큼 낮다).

따라서 해싱 알고리즘이 데이터 무결성 확보를 위해 좋은 도구가 된다. 예를 들어, 메시지와 함께 해시를 전송할 수 있다. 메시지를 수신하면 메시지 텍스트에서 같은 해싱 알고리즘을 실행한다. 생성한 해시가 메시지와 수반되는 것과 다른 경우 메시지가 전송 중 변경되었다는 것을 알 수 있다.

해싱을 사용해 비밀번호(password)의 기밀성을 확보하기도 한다. 비밀번호를 평문으로 저장하면 데이터 유출 발생 시 사용자들이 계정 및 신원 도난에 취약해지기 때문에 중대한 보안 금지 행위이다(그래도 대기업들은 여전히 그렇게 하고 있다). 대신에 해시된 버전의 사용자 비밀번호를 저장한다면 해커가 방어선을 무력화하더라도 이를 복호화해 다른 곳에 사용할 수 없을 것이다. 정당한 사용자가 비밀번호로 로그인하면 이를 해시해 파일에 있는 해시와 비교 확인하면 된다.


암호 기법 예시 및 기법

앞서 설명한 3가지 유형의 암호화를 이해하는 기법과 알고리즘이 많다. 이것들은 일반적으로 꽤 복잡하며 이번 기사의 범위를 벗어나기 때문에 보편적으로 사용되는 예시에 대해 자세히 알 수 있는 링크를 포함시켰다. 

- 비밀 키 암호 기법 
트리플 DES(Triple DES): 앞서 논의한 DES의 최신 후속 제품  
AES(Advanced Encryption Standard): 국가 표준으로 사용되었던 DES의 취약점을 보안하기 위해 고안된 암호 표준 
보안 전문가 브루스 슈나이어의 블로피시(Blowfish)와 그 후속작 투피시(Twofish)

- 공개 키 암호 기법 
디피-헬만 키 교환(Diffie-Hellman key exchange)
RSA
엘가멜(ElGamal)

- 해시 함수 
특수 목적을 가진 아주 다양한 해시 함수가 있다. 해시 함수의 목록은 위키피디아에서 볼 수 있다. editor@itworld.co.kr



2020.10.20

'알고리즘이 정보를 보호하는 방법'··· 암호 기법의 의미와 종류

Josh Fruhlinger | CSO
암호 기법(Cryptography)은 정보를 의도하지 않은 수신자가 파악할 수 없는 형태로 바꾸어 보호하는 학문이다. 암호 기법에서는 인간이 판독할 수 있는 원본 메시지인 평문(plaintext)이 알고리즘(Algorithm) 또는 일련의 수학적 연산에 의해 정보가 없는 관찰자에게 기버리시(Gibberish), 즉, 암호문(Ciphertext)처럼 보이게 된다.

암호 기법 시스템은 의도한 수신자가 암호화된 메시지를 (항상 그런 것은 아니지만 일반적으로 암호문을 평문으로 바꾸어) 활용할 수 있도록 하는 수단이 필요하다.


암호 기법과 암호화의 차이

암호화(Encryption)는 평문을 암호문으로 바꾸는 과정이다(Crypt라는 단어는 무덤을 연상시키지만 그리스어로 ‘숨겨진’ 또는 ‘비밀’이라는 의미다). 암호화는 암호 기법의 중요한 부분이지만 학문 전체를 아우르지는 못한다. 반대말은 복호화(Decryption)이다.

암호화 과정의 중요한 측면은 거의 항상 알고리즘과 키(Key)가 수반된다는 점이다. 키는 또 다른 정보(거의 대부분 숫자)이며 암호화를 위해 알고리즘이 평문에 적용되는 방식을 지정한다. 일부 메시지가 암호화되는 방식을 알더라도 키가 없으면 복호화 하기가 어렵거나 불가능하다.


암호 기법의 역사

암호 기법의 구체적인 내용을 이해하는 데 좋은 방법은 알려진 암호 기법의 초기 형태를 살펴보는 것이다. 이것을 카이사르 암호(Caesar cipher)라고 부르는 이유는 줄리어스 시저가 자신의 비밀 우편을 위해 사용했기 때문이다. 카이사르 자서전의 저자 수에토니우스가 말했듯이 “그에게 비밀이 있는 경우 알파벳의 문자의 숫자를 바꾸어 암호로 썼다... 이걸 해독하여 이해하고 싶은 사람은 A 대신에 D를 사용하는 등 알파벳의 4번째 글자를 치환해야 했다.”

수에토니우스의 설명은 암호 기법의 2가지 요소인 알고리즘과 키로 나누어 볼 수 있다. 여기에서 알고리즘은 단순하다. 각 글자를 나중에 알파벳의 다른 글자로 대체하는 것이다. 키는 알파벳의 많은 글자를 찾아 암호문을 만드는 방식이다. 수에토니우스가 설명한 암호의 버전에서는 3이지만 다른 변형도 가능하다. 예를 들어, 4의 키가 있으면 A가 E가 된다.

이 예에서 몇 가지를 확실히 짚고 넘어가야 한다. 이런 암호화는 원하는 메시지를 비밀스럽게 전송하는 꽤 단순한 방법을 제공한다. 암호 문구 시스템으로 “피자를 주문하자”는 말이 “나는 갈리아를 침략할 것이다”는 말이 되게 할 수도 있다.

이런 종류의 코드를 해석하려면 의사소통 체인의 양 끝 사람이 코드 문구책이 있어야 하며, 미리 생각하지 않은 새로운 문구는 암호화할 수 없다. 카이사르 암호를 통해 생각할 수 있는 모든 메시지를 암호화할 수 있다. 복잡한 코드책보다는 정보를 전달해 보관하기가 더 쉽고 안전하지만 소통하는 모든 사람이 알고리즘과 키를 미리 알아야 한다는 것이 문제다.

카이사르 암호는 환자식 암호(Substitution Cipher)라고도 부른다. 왜냐하면 각 글자가 다른 글자로 치환되기 때문이며, 이에 대한 다른 변형 방식에서는 문자 블록이나 단어 전체를 치환한다. 

대부분의 역사에서 암호 기법은 정부와 군사 통신의 보안을 위해 배포된 다양한 환자식 암호로 구성되어 있었다. 중세 아랍의 수학자들은 이 학문, 특히 암호화의 미학을 발전시켰다. 연구원들이 특정 언어의 특정 글자가 다른 것들보다 더 많이 사용된다는 사실을 발견하면서 패턴을 인식하기가 더 쉬워진 경우도 있다.

하지만 대부분의 근대 암호화는 현대의 기준으로 보았을 때 놀랍도록 단순하며, 그 이유는 분명하다. 컴퓨터가 출현하기 전에는 수학적 변형을 암호화 또는 복호화가 가치가 있을 만큼 충분히 신속하게 수행하기가 어려웠다.

사실, 컴퓨터와 암호 기법의 발전은 밀접한 관련성이 있다. 현대 컴퓨터의 전도가 된 차분기관(Difference Engine)에 대한 아이디어를 제시한 찰스 배비지도 암호 기법에 관심이 있었다. 2차 세계대전 중 독일인들은 전기 기계식 에니그마(Enigma) 기계를 사용해 메시지를 암호화했고, 알려진 대로 영국에서 앨런 튜링이 이끄는 팀이 유사한 기계를 개발해 코드를 해독했으며, 그 과정에서 최초의 근대 컴퓨터의 기초가 수립되었다. 컴퓨터가 보급되면서 암호 기법이 급격히 복잡해졌지만 수십 년 이상 스파이와 장군들의 영역으로 남아 있었다. 하지만 1960년대가 되면서 상황이 달라지기 시작했다.


네트워크 보안의 암호 기법

최초의 컴퓨터 네트워크가 구성되면서 민간인들은 암호 기법의 중요성에 대해 생각하기 시작했다. 컴퓨터들은 단순히 상대방에 대한 직접 연결뿐 아니라 개방된 네트워크를 통해 대화하고 있었고, 이런 네트워킹이 다양한 측면에서 혁신적이었지만 네트워크를 통해 이동하는 데이터를 훔치기가 너무 쉬웠다. 그리고 금융 서비스가 초기의 컴퓨터 통신 사용례가 되면서 정보를 보호할 수 있는 방법을 찾아야 했다.

IBM이 1960년대 말에 ‘루시퍼(Lucifer)’라는 암호화 방법으로 이를 주도했으며, 결국 미국 표준기술연구소(US National Bureau of Standards)는 이를 최초의 ‘데이터 암호화 표준(Data Encryption Standard, DES)’으로 성문화했다. 인터넷의 중요성이 커지고 더 많은 개선된 암호화가 필요하게 되면서 현재 전 세계로 날아다니는 데이터의 상당 부분이 앞으로 설명할 다양한 기법을 통해 암호화되고 있다.


암호 기법의 용도

지금까지 군사 보안 유지부터 인터넷에서 금융 데이터를 안전하게 전송하는 것까지 구체적인 암호 기법의 구체적인 적용에 관해 설명했다. 하지만 더 큰 그림에서 보면, 암호 기법을 활용해 달성하고자 하는 광범위한 사이버보안 목표가 존재하며, 사이버보안 컨설턴트 그레이 케슬러는 이렇게 설명했다. 암호 기법을 활용해 보안 전문가는 다음과 같은 목표를 수행할 수 있다.
 
  • 데이터 내용 기밀 보호
  • 메시지 발송자와 수신자의 신원 인증
  • 데이터의 무결성을 확보해 데이터가 변경되지 않았음을 입증
  • 예정된 발송자가 정말로 이 메시지를 발송했음을 입증(부인 방지의 원칙)

이런 목표 가운데 일부는 CIA(Confidentiality(기밀성) Integrity(무결성) Availability(가용성)) 3원칙에서 변형된 것이다. 첫 번째 용도는 데이터를 암호화해 보호하는 것이다. 다른 것들은 설명이 필요하기 때문에 다른 암호 기법 유형을 설명하면서 살펴보자.

 
암호 기법의 유형

다양한 암호 기법 알고리즘이 사용되고 있지만 일반적으로 비밀 키 암호 기법, 공개키 암호 기법 및 해시 함수로 분류할 수 있다. 암호 기법 영역에서는 저마다 각각의 역할이 있다.

- 비밀 키 암호 기법 
앞서 설명한 카이사르 암호는 비밀 키 암호 기법의 좋은 예다. 카이사르와 100인 대장이 암호화된 메시지를 교환하는 경우, 두 당사자들은 키를 알아야 한다. 여기에서는 평문을 암호문으로 바꾸거나 그 반대의 경우를 위해 알파벳을 앞/뒤로 몇 글자나 이동해야 하는가이다. 하지만 키는 둘 사이에 비밀로 유지해야 한다. 

예를 들어, 메시지와 함께 키를 전송할 수 없다. 왜냐하면 둘 다 적의 손에 들어가게 되면 쉽게 해독해 처음부터 암호화의 목적이 무산될 수 있기 때문이다. 카이사르와 그의 100인 대장은 아마도 먼 곳에서 전쟁을 치르는 상황에서는 덜 이상적이었겠지만 서로 직접 만났을 때 키에 관해 논의해야 했을 것이다.

대칭 키(Symmetric Key)라고도 부르는 비밀 키는 데이터 보안을 위해 널리 사용되고 있다. 예를 들어, 로컬 하드 드라이브의 보안에 매우 유용할 수 있다. 같은 사용자가 보호되는 데이터를 암호화 및 복호화 하기 때문에 비밀 키 공유는 문제가 되지 않는다. 비밀 키 암호 기법도 사용해 인터넷을 통해 전송되는 메시지를 보호할 수 있다. 하지만 이를 위해서는 다음 형태의 암호 기법과 함께 배치해야 한다.

- 공개 키 암호 기법 
카이사르는 100인 대장들과 직접 대화할 수 있었지만 은행과의 전자 통신을 암호화하기 위해 은행에 찾아가 은행원에게 비공개 키가 무엇인지 파악하고 싶지는 않을 것이다. 그러면 온라인 뱅킹의 목적이 무색해질 것이다. 일반적으로 안전하게 기능하기 위해 인터넷은 내재적으로 안전하지 못한 네트워크를 통해 서로 대화하면서 안전한 통신을 위해 당사자들과 소통하는 수단이 필요하다. 이것은 공개 키 암호 기법을 통해 가능하다.

비대칭 키(Asymmetric Key)라고도 부르는 공개 키 암호 기법에서는 각 참여자가 2개의 키를 갖고 있다. 하나는 공개되어 있고 소통하고자 하는 당사자에게 전송된다. 해당 키를 사용해 메시지를 암호화한다. 하지만 다른 키는 비공개이고 그 누구와도 공유하지 않으며, 메시지를 복호화 하기 위해 필요하다. 

비유하자면, 공개 키는 편지함의 슬롯을 편지를 넣을 수 있도록 넓게 열어놓는다. 자신에게 편지를 보낼 가능성이 있는 사람에게 이런 치수를 제공한다. 비공개 키는 편지를 꺼낼 수 있도록 편지함을 여는 데 사용하는 것이다.

한 키를 사용해 메시지를 암호화하고 다른 키를 사용해 복호화 하는 방법에 관한 수학은 카이사르 암호의 키가 작동하는 방식보다 덜 직관적이다. 이 과정의 핵심적인 원리는 2개의 키가 실제로 서로 수학적으로 연결되어 있기 때문에 비공개 키에서 공개 키를 얻는 것은 쉽지만 반대의 경우는 그렇지가 않다. 예를 들어, 비공개 키는 2개의 매우 큰 소수일 수 있으며, 둘을 곱해야 공개 키를 얻을 수 있다.

공개 키 암호 기법을 위해 필요한 연산은 훨씬 더 복잡하고 자원 집약적이기 때문에 비밀 키 인프라가 필요하다. 다행히도 이것을 사용해 온라인으로 전송하는 모든 메시지를 보호할 필요는 없다. 대신에 한 당사자가 공개 키 암호 기법을 사용해 다른 암호 기법 키가 포함된 메시지를 암호화한다. 그리고 안전하지 못한 인터넷을 통해 안전하게 전송된 이 키가 공개 키가 되어 비밀 키 암호화를 통해 암호화되는 훨씬 긴 통신 세션을 암호로 바꾼다.

이런 방식으로 공개 키 암호 기법이 기밀성을 뒷받침한다. 하지만 이런 공개 키도 공개 키 인프라(Public Key Infrastructure) 또는 PKI라고 알려진 더 큰 함수 세트의 일부이다. PKI는 주어진 공개 키를 특정 사람 또는 기관과 연계시키는 수단을 제공한다. 이를 통해 공개 키로 암호화된 메시지가 발송자의 신원을 확인하여 인증 및 부인 방지를 실시한다.

- 해시 함수(Hash functions) 
공개 및 비공개 키 암호 기법 알고리즘은 모두 평문을 암호문으로 변환한 후 다시 평문으로 변환하게 된다. 반면에 해시 함수는 단방향 암호화 알고리즘이다. 평문을 암호화하면 결과 암호문(일명 해시)으로부터 절대로 복구할 수 없다.

이 때문에 해시 함수가 다소 무의미해 보일 수 있다. 하지만 해시 함수의 핵심은 같은 해시를 생성하는 2개의 평문이 존재하지 않는다는 점이다(수학적으로 정확한 말은 아니지만 실제로 사용 중인 해시 함수의 경우 발생 가능성이 일반적으로 무시할 수 있을 만큼 낮다).

따라서 해싱 알고리즘이 데이터 무결성 확보를 위해 좋은 도구가 된다. 예를 들어, 메시지와 함께 해시를 전송할 수 있다. 메시지를 수신하면 메시지 텍스트에서 같은 해싱 알고리즘을 실행한다. 생성한 해시가 메시지와 수반되는 것과 다른 경우 메시지가 전송 중 변경되었다는 것을 알 수 있다.

해싱을 사용해 비밀번호(password)의 기밀성을 확보하기도 한다. 비밀번호를 평문으로 저장하면 데이터 유출 발생 시 사용자들이 계정 및 신원 도난에 취약해지기 때문에 중대한 보안 금지 행위이다(그래도 대기업들은 여전히 그렇게 하고 있다). 대신에 해시된 버전의 사용자 비밀번호를 저장한다면 해커가 방어선을 무력화하더라도 이를 복호화해 다른 곳에 사용할 수 없을 것이다. 정당한 사용자가 비밀번호로 로그인하면 이를 해시해 파일에 있는 해시와 비교 확인하면 된다.


암호 기법 예시 및 기법

앞서 설명한 3가지 유형의 암호화를 이해하는 기법과 알고리즘이 많다. 이것들은 일반적으로 꽤 복잡하며 이번 기사의 범위를 벗어나기 때문에 보편적으로 사용되는 예시에 대해 자세히 알 수 있는 링크를 포함시켰다. 

- 비밀 키 암호 기법 
트리플 DES(Triple DES): 앞서 논의한 DES의 최신 후속 제품  
AES(Advanced Encryption Standard): 국가 표준으로 사용되었던 DES의 취약점을 보안하기 위해 고안된 암호 표준 
보안 전문가 브루스 슈나이어의 블로피시(Blowfish)와 그 후속작 투피시(Twofish)

- 공개 키 암호 기법 
디피-헬만 키 교환(Diffie-Hellman key exchange)
RSA
엘가멜(ElGamal)

- 해시 함수 
특수 목적을 가진 아주 다양한 해시 함수가 있다. 해시 함수의 목록은 위키피디아에서 볼 수 있다. editor@itworld.co.kr

X