키 재사용 (Key Reuse)

중급암호학수정일

키 재사용(key reuse)은 같은 암호 키, 또는 같은 키와 같은 일회성 값(논스·IV)을 여러 번이나 여러 용도에 다시 쓰는 것을 말합니다. 블록 암호의 키처럼 반복 사용을 전제로 설계된 경우도 있지만, 암호학과 블록체인에서 이 말은 대개 보안을 무너뜨리는 위험한 관행을 가리킵니다.

자세히 알아보기

무엇을 재사용하느냐에 따라 위험이 크게 다릅니다.

  • 같은 키로 여러 메시지 암호화: AES 같은 현대 블록 암호는 올바른 운용 모드와 함께라면 하나의 키로 많은 데이터를 암호화하도록 설계되었습니다. 그래도 NIST SP 800-57은 키마다 사용 기간(암호 기간)을 정해 교체하도록 권고합니다.
  • 키와 논스·IV를 함께 재사용: 스트림 암호나 CTR 모드에서 같은 키와 같은 논스로 두 메시지를 암호화하면 두 암호문의 XOR이 두 평문의 XOR과 같아져 내용이 드러납니다. AES-GCM에서는 여기에 더해 인증까지 깨져 위조가 가능해지므로, NIST SP 800-38D는 같은 키 아래 IV가 겹치지 않도록 엄격히 요구합니다.
  • 한 키를 여러 용도에 사용: 같은 키로 암호화와 서명을 함께 하거나 여러 프로토콜에 쓰면, 한쪽의 결과가 다른 쪽 공격에 이용될 수 있습니다. 그래서 키 하나는 한 가지 용도에만 쓰는 키 분리 원칙을 따릅니다.

ECDSA 서명에서는 서명마다 쓰는 비밀 난수 k가 특히 중요합니다. 같은 개인키로 두 메시지에 같은 k를 쓰면, 공개된 두 서명만으로 k를 계산하고 이어서 개인키까지 구할 수 있습니다. RFC 6979는 이 위험을 줄이려고 개인키와 메시지에서 k를 결정적으로 만드는 방법을 정했습니다.

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

2013년 8월 안드로이드의 난수 생성기 결함으로 일부 비트코인 지갑 앱이 서명에 같은 k를 다시 써서 개인키가 노출되었고, bitcoin.org는 해당 지갑 사용자에게 새 주소로 자금을 옮기라고 공지했습니다. 이처럼 서명 난수의 재사용은 곧바로 자산 탈취로 이어질 수 있습니다.

주소 재사용(address reuse)도 같은 계열의 문제입니다. 같은 주소로 여러 번 받으면 블록체인이 공개 장부이므로 누구나 그 주소의 거래를 하나로 묶어 볼 수 있어 사생활 보호가 약해집니다. 그래서 비트코인 지갑은 받을 때마다 새 주소를 만드는 방식을 권장합니다.

쉽게 말하면

같은 열쇠로 매일 현관문을 여는 것은 괜찮지만, 그 열쇠로 집과 사무실과 금고를 모두 열게 하거나, 한 번만 쓰라고 받은 일회용 번호표를 두 번 내미는 것은 곤란합니다. 문제는 반복 그 자체보다 무엇을 어디에 다시 쓰느냐에 있습니다.

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