암호학 (Cryptography)

"Cryptography is the practice and study of techniques for secure communication in the presence of adversarial behavior."

— 현대 암호학의 학술적 정의와 통신 보안 개론서 서두 중.

"수학자들이 평생을 바쳐 짠 무적의 256비트 암호 알고리즘도, 결국 어설픈 신입 개발자가 깃허브 퍼블릭 저장소에 비밀키를 커밋해 올리는 한 줄의 대참사 앞에서는 무참히 무력화된다." 비밀번호를 평문으로 DB에 저장했다가 털려서 뉴스룸에 나오지 않으려면 제발 bcrypt 라이브러리라도 부르자.(...)

1. 개요

암호학은 제3자가 데이터를 훔쳐보거나 위조하는 악의적인 행위로부터 정보를 안전하게 지키기 위한 수학적 기술과 학문을 지칭한다.

과거에는 군사적 비밀 메시지 전송용으로만 쓰였으나, 오늘날 인터넷 전자상거래, 블록체인 가상화폐, 그리고 매일 로그인할 때 거치는 HTTPS 통신 등 모든 현대 IT 인프라의 뼈대를 안전하게 수호하는 수학적인 마지막 방패로 기능하고 있다. 암호학이 없는 IT 생태계는 단 1초 만에 개인정보가 공공재로 털려버리는 약육강식의 정글로 전락하게 된다.(...)

2. 대칭키 vs 비대칭키, 그리고 일방향 해시 함수

2.1. 양방향 암호화: 대칭키 vs 비대칭키

암호화한 데이터를 원래대로 되돌릴 수 있는(복호화 가능) 양방향 암호화는 크게 두 진영으로 나뉜다.

  • 대칭키 암호화 (Symmetric Encryption): 암호화할 때 쓰는 키와 복호화할 때 쓰는 키가 똑같다. 대표적으로 AES-256이 있다. 연산 속도가 눈부시게 빠르지만, 통신 상대방에게 이 똑같은 키를 어떻게 안전하게 보낼 것인가 하는 '키 전달의 한계'라는 딜레마가 있다.
  • 비대칭키 암호화 (Asymmetric Encryption): 암호화용 공개키(Public Key)와 복호화용 개인키(Private Key)가 한 쌍을 이룬다. 대표적으로 RSA와 타원곡선암호(ECC)가 있다. 공개키는 만천하에 공개하고, 개인키만 본인이 꽁꽁 숨겨둔다. 키 배송 문제를 완벽하게 해결했으나, 복잡한 소수 연산 수학이 들어가기 때문에 대칭키에 비해 연산 속도가 무지막지하게 느리다는 치명적인 약점이 있다.1

2.2. 일방향 암호화: 해시 함수와 bcrypt 솔팅 (Salting)

원래 데이터로의 복호화가 절대 불가능한 암호화 방식이다. 사용자의 패스워드를 저장할 때 쓰인다.

  • 단순 해시 (SHA-256 / MD5): 아무리 긴 비밀번호를 넣어도 고정된 길이의 해시값으로 변환된다. 그러나 해커들은 미리 해시 값들을 계산해 둔 거대한 사전 파일(Rainbow Table)을 사용해 원래 패스워드를 1초 만에 역추적해 낸다. 게다가 고성능 GPU 연산 덕분에 무지성 대입(Brute Force)으로도 금방 뚫린다.
  • bcrypt 패스워드 솔팅 (Salting): 패스워드를 으깨기 전에 임의의 무작위 값(Salt)을 비밀번호 앞에 소금 치듯 챱챱 뿌린 후 해싱한다. 심지어 해시 연산을 수만 번 반복하여 고의로 연산 속도를 늦추는 키 스트레칭 기술이 들어가, 고성능 해킹 장비를 동원하더라도 연산 비용 부담 때문에 대입 공격이 원천 봉쇄된다.2

3. 실전의 집합체, TLS 핸드셰이크

3.1. 대칭키와 비대칭키의 절묘한 콜라보레이션

실무에서 우리가 매일 쓰는 HTTPS 통신은 대칭키와 비대칭키의 단점은 버리고 장점만 취한 하이브리드 아키텍처다. 이를 TLS Handshake라고 부른다.3

  1. 웹 브라우저가 은행 사이트에 접속하면, 은행은 자신의 공개키가 담긴 인증서를 브라우저에 보낸다.
  2. 브라우저는 안전한 통신에 사용할 임시 대칭키를 무작위로 생성한 뒤, 은행의 공개키로 암호화해서 은행에 보낸다.
  3. 은행은 오직 자신만 가지고 있는 개인키로 이를 안전하게 복호화하여 임시 대칭키를 획득한다.
  4. 이 시점부터 둘 사이의 모든 본문 데이터는 연산 속도가 엄청나게 빠른 대칭키를 이용해 실시간 암호화 및 복호화를 전개한다.

4. 암호학 무용지물 밈

4.1. 보안 고인물들의 $5 렌치 해킹 드립

암호학자들은 알고리즘의 비트 수를 올려 해킹하는 데 수억 년의 계산 시간이 걸리게 만드는 완벽한 암호 시스템을 설계했다고 자부한다. 하지만 해킹계의 전설적인 드립에 따르면, 실상 해커들은 어렵게 슈퍼컴퓨터를 돌려 암호를 깨는 대신 패스워드 소유자를 붙잡아 '5달러짜리 쇠 렌치'로 뚝배기를 때리며 비밀번호를 불게 만든다. 이 기가 막힌 실화는 기술적 보안보다 물리적 보안과 사회 공학적 낚시(Phishing) 공격이 현실에서는 훨씬 무서운 위협임을 유쾌하게 폭로한다.(...)

5. 여담

  • 자체 암호 알고리즘 금지령: 보안 생태계에서 절대 금기시되는 규칙 중 하나는 바로 "직접 고유한 암호 알고리즘을 발명해서 쓰지 말라"이다. 아무리 코딩을 잘하는 개발자라도 수학적인 검증 없이 독자적인 알고리즘을 짜면 수많은 취약점이 존재하여 10분 만에 털린다. 무조건 표준으로 검증된 라이브러리(bcrypt, AES)를 끌어다 쓰는 것이 신성한 업계 룰이다.
  • 컴퓨터 과학의 아버지, 앨런 튜닝: 암호학은 컴퓨터 과학의 탄생에도 깊이 기여했다. 제2차 세계대전 당시 앨런 튜링이 이끄는 천재 팀이 독일군의 악명 높은 암호 기계 '이그니그마(Enigma)'를 해독하기 위해 최초의 전자식 컴퓨터의 모태를 설계하여 연합군을 대승리로 이끌었기 때문이다.
  • 양자 컴퓨터의 종말론: 미래에 양자 컴퓨터가 상용화되면, 현존하는 모든 비대칭키 암호체계(RSA, ECC 등)의 수학적 난제인 소인수분해가 단 몇 초 만에 풀려버려 인터넷 금융망이 붕괴할 것이라는 괴담이 돌고 있다. 이 때문에 최근 전 세계 암호학계는 양자 컴퓨터로도 깰 수 없는 '격자 기반 포스트 양자 암호(PQC)' 표준 제정에 밤낮없이 매달리고 있다.

6. 관련 문서

각주

  1. 비대칭키 연산 속도는 대칭키에 비해 수백 배에서 수천 배 느리기 때문에 대용량 텍스트 데이터를 통째로 비대칭키로 암호화하는 미련한 짓은 금물이다.

  2. bcrypt 외에도 최근에는 GPU 연산 자체를 하드웨어적으로 극히 제한하기 위해 메모리 사용량까지 비용에 강제하는 argon2 알고리즘이 권장되고 있다.

  3. 우리가 브라우저 주소창에서 열쇠 모양 배지 아이콘을 보는 순간, 이 TLS 하이브리드 암호 마술이 백그라운드에서 매끄럽게 완결되었음을 의미한다.