공개 키 암호 (Public Key Cryptography)

중급암호학수정일

공개 키 암호는 누구에게나 공개하는 공개 키와 본인만 보관하는 개인 키, 서로 다른 한 쌍의 키를 쓰는 암호 방식으로, 암호화·전자서명·키 교환에 쓰입니다.

자세히 알아보기

대칭 키 암호는 암호화와 복호화에 같은 키를 쓰므로, 통신 전에 키를 안전하게 나눠 갖는 문제(키 분배 문제)가 생깁니다. 공개 키 암호(비대칭 암호)는 1976년 디피와 헬만의 키 교환 논문으로 시작되어 이 문제를 풀었습니다. 공개 키는 공개해도 되고, 개인 키는 공개 키로부터 현실적인 시간 안에 계산할 수 없습니다. 이 안전성은 소인수분해, 이산로그, 타원곡선 이산로그 같은 계산 난제에 기대고 있습니다.

주요 용도는 세 가지입니다.

  • 암호화: 공개 키로 암호화하면 해당 개인 키로만 복호화할 수 있습니다. 실무에서는 긴 데이터를 직접 암호화하지 않고, 공개 키로 대칭 키를 전달한 뒤 AES 등으로 본문을 암호화하는 하이브리드 방식을 씁니다.
  • 전자서명: 개인 키로 서명하고 공개 키로 누구나 검증합니다. 서명자를 증명하고 위변조를 막습니다.
  • 키 교환: 디피-헬만(ECDH 포함)으로 도청자가 있는 채널에서도 공통 비밀을 만듭니다.

대표 알고리즘은 RSA(1977), 디피-헬만, 타원곡선 암호(ECDSA, Ed25519, X25519)입니다. 초기 머클-헬만 배낭 암호는 1980년대 초에 깨졌습니다. RSA는 2048비트 이상을 쓰며, 같은 안전성에서 키가 훨씬 짧은 타원곡선 방식이 널리 쓰입니다. 양자 컴퓨터는 이 계산 난제들을 풀 수 있어서, NIST는 2024년 ML-KEM(FIPS 203), ML-DSA(FIPS 204), SLH-DSA(FIPS 205) 같은 양자 내성 표준을 발표했습니다.

블록체인·암호화폐에서는

비트코인, 이더리움, 트론은 모두 secp256k1 타원곡선의 ECDSA 서명을 쓰고, 비트코인은 2021년 탭루트로 슈노르 서명(BIP340)도 도입했습니다. 지갑 주소는 공개 키를 해시해 만들고, 트랜잭션은 개인 키로 서명해 "이 코인의 주인이 보냈다"는 것을 증명합니다. 블록체인은 트랜잭션을 암호화하지 않습니다. 쓰이는 것은 주로 서명 기능입니다. 개인 키를 잃으면 자산에 접근할 수 없고, 유출되면 누구나 자산을 옮길 수 있습니다.

쉽게 말하면

누구나 넣을 수 있는 우체통 투입구(공개 키)와, 주인만 가진 우체통 열쇠(개인 키)입니다.

예시

비트코인 송금의 흐름은 다음과 같습니다. ① 지갑이 개인 키에서 공개 키를, 공개 키를 해시해 주소를 만듭니다. ② 송금할 때 지갑은 트랜잭션 내용을 해시하고 개인 키로 서명합니다. ③ 네트워크의 노드는 트랜잭션에 포함된 공개 키와 서명으로 검증만 하며, 개인 키는 한 번도 네트워크에 나오지 않습니다.

안전성 비교의 대략적인 기준으로, NIST 지침에서 128비트 보안 수준은 RSA 3072비트, 타원곡선 256비트 키에 해당합니다. 그래서 같은 보안 수준에서 타원곡선 키와 서명이 훨씬 짧고, 블록 공간이 귀한 블록체인에 적합합니다.

이 글은 학습을 위한 일반 정보이며 투자 권유나 법률 자문이 아닙니다. 가상자산은 가격 변동이 크고 원금 손실 위험이 있습니다.