서명 (Signature)
서명(Signature)은 개인 키를 실제로 공개하지 않고도 개인 키를 가지고 있음을 증명할 수 있게 해주는 정보입니다. 전자적으로 전송되는 문서의 진위 여부를 확인하는 데 사용됩니다. 암호화폐에서는 트랜잭션에 붙는 디지털 서명이 “이 자금을 쓸 권한이 있는 사람이 이 트랜잭션을 승인했다”는 증거가 됩니다.
작동 원리
디지털 서명은 공개 키 암호화를 기반으로 합니다. 키는 두 개로, 하나는 비공개(개인 키), 다른 하나는 공개(공개 키)입니다.
- 서명: 서명자는 메시지(보통 메시지의 해시)와 자신의 개인 키로 서명 값을 계산합니다.
- 검증: 누구나 메시지, 서명 값, 서명자의 공개 키만으로 서명이 올바른지 확인할 수 있습니다. 검증 과정에서 개인 키는 필요하지 않고 드러나지도 않습니다.
비트코인과 이더리움은 타원곡선 서명 알고리즘(ECDSA, secp256k1)을 쓰며, 비트코인은 탭루트 업그레이드 이후 슈노르 서명도 지원합니다.
실생활 비유
- 계약 서명: 종이 계약에 서명할 때 주민등록번호 같은 민감한 정보를 모두 적지 않아도, 서명은 본인이 조건에 동의했다는 고유한 표시가 됩니다.
- 화가의 그림 서명: 화가의 서명은 기법이나 비밀을 드러내지 않지만, 그 그림이 특정 화가의 작품임을 보여 줍니다.
다만 손글씨 서명은 모든 문서에서 똑같지만, 디지털 서명은 메시지마다 값이 달라집니다. 메시지가 조금만 바뀌어도 서명이 맞지 않으므로 한 문서의 서명을 다른 문서에 옮겨 붙일 수 없습니다.
디지털 서명이 보장하는 것
- 인증: 해당 개인 키를 가진 사람이 서명했음을 확인해 메시지가 주장하는 출처에서 왔는지 확인합니다.
- 무결성: 전송 중에 메시지가 조작되지 않았음을 보장하며, 내용이 바뀌면 서명이 무효가 됩니다.
- 부인 방지: 개인 키 소유자만이 서명을 생성할 수 있으므로 보낸 사람이 메시지를 보냈다는 사실을 부인하기 어렵습니다. 비밀 키를 공유하는 MAC과 구별되는 점입니다.
한계
- 키 관리: 개인 키의 안전한 저장 및 관리가 필요합니다. 개인 키가 유출되면 누구나 그 소유자 명의로 서명할 수 있고, 암호화폐라면 자금을 빼낼 수 있습니다.
- 공개 키의 신뢰: 서명은 “이 공개 키의 주인”이 서명했음을 증명할 뿐이므로, 공개 키가 실제로 누구의 것인지는 인증서나 다른 방법으로 따로 확인해야 합니다.
- 복잡성: 암호화 서명을 구현하고 이해하는 것은 특히 기술적이지 않은 사용자에게 복잡할 수 있습니다.
응용 분야
- 디지털 문서: 계약, 인증서 및 기타 법적 문서의 진위성 및 무결성을 보장합니다.
- 이메일 보안: 이메일 통신에서 보낸 사람의 신원과 메시지 무결성을 확인합니다.
- 소프트웨어 배포: 인터넷에서 다운로드한 소프트웨어와 업데이트가 정당한 개발자의 것이며 조작되지 않았음을 확인합니다.
- 암호화폐: 트랜잭션을 승인하며, 노드는 서명이 올바르지 않은 트랜잭션을 거부합니다.
이 글은 학습을 위한 일반 정보이며 투자 권유나 법률 자문이 아닙니다. 가상자산은 가격 변동이 크고 원금 손실 위험이 있습니다.