다중 서명
비트코인의 개인키는 돈을 움직일 수 있는 열쇠입니다. 열쇠가 하나뿐이면 개인키와 이를 복원할 복구 단어·백업을 모두 잃었을 때 돈이 영영 잠기고, 개인키가 도난당했을 때는 누군가 돈을 가져갈 수 있습니다. 재발급 창구나 거래 취소 절차도 없습니다.
다중 서명은 이런 위험을 줄이기 위해 열쇠 여러 개를 나누어 두고, 그중 정해 둔 개수 이상이 서명해야 비트코인이 움직이도록 잠그는 방식입니다. 열쇠 여러 개로 잠그는 금고와 같습니다. 열쇠 하나만으로는 열리지 않습니다.
열쇠를 나누어 두는 원리
예를 들어 열쇠 구멍이 세 개 있는 금고에 열쇠 세 개를 만들고, 그중 두 개만 있으면 열리도록 설정할 수 있습니다. 하나는 직접 보관하고, 하나는 믿을 만한 가족에게 맡기며, 나머지 하나는 멀리 떨어진 보관함에 둘 수 있습니다.
이렇게 하면 도둑이 훔친 열쇠 한 개만으로는 금고를 열 수 없습니다. 반대로 2-of-3 구성에서는 열쇠 하나를 잃어버려도 남은 두 개를 모으면 돈을 움직일 수 있습니다. 다만 2-of-2처럼 두 개 모두가 필요한 구성에서는 한 키를 잃으면 지출할 수 없습니다. 일반적으로 n개 중 m개의 키가 필요한 구성은 최대 n−m개의 키 손실을 감당할 수 있지만, 실제 복구에는 서명 장치 구성 정보도 필요합니다.
다중 서명의 조건은 서명 장치와 출력 구성을 설계할 때 정해 둡니다. 주소를 생성하는 행위 자체가 장부에 조건을 기록하는 것은 아닙니다. 자금을 받을 때는 주소 유형에 따라 잠금 조건 전체 또는 그 조건을 식별하는 값이 거래 출력에 기록됩니다. 예를 들어 P2SH·P2WSH 구성에서는 잠금 조건인 스크립트 자체가 아니라 그 해시를 출력에 기록하고, 나중에 지출할 때 해당 스크립트와 필요한 서명을 제시해 조건을 검증합니다.
서명 장치는 개인키를 관리하고 그 키로 거래에 서명하는 도구입니다. 돈을 보내려면 송금 내용을 담은 거래에 각 키 보유자가 자신의 서명을 추가해야 합니다. 정해 둔 수의 서명이 조건에 맞게 모인 거래만 유효합니다. 다른 사람의 개인키가 없으면 그 키에 해당하는 서명을 대신 만들 수는 없습니다. 네트워크에 참여한 컴퓨터들은 이 조건을 확인하고, 서명이 부족한 거래는 받아들이지 않습니다.
필요한 서명 수를 정하는 방법
열쇠 수와 필요한 서명 수는 상황에 맞게 정할 수 있습니다.
- 세 개 가운데 두 개가 필요한 방식
- 다섯 개 가운데 세 개가 필요한 방식
- 두 개 모두가 필요한 방식
열쇠를 많이 만들고 여러 장소에 나누어 둘수록 한 곳의 사고에는 강해질 수 있습니다. 그러나 관리해야 할 열쇠와 복구 절차가 늘어나므로 사용은 더 번거로워집니다. 열쇠를 한 서랍에 모두 넣어 두면 다중 서명의 장점을 충분히 살릴 수 없습니다.
여러 사람이 함께 관리할 때
다중 서명은 회사나 단체의 자금을 여러 사람이 관리할 때 유용합니다. 예를 들어 임원 세 명 가운데 두 명이 동의해야 자금이 움직이도록 설정하면, 한 사람의 실수나 변심만으로 돈이 빠져나가는 일을 막을 수 있습니다. 부부가 공동 저축을 함께 관리하는 방식에도 적용할 수 있습니다.
혼자 사용하는 경우에도 열쇠를 집과 직장, 멀리 떨어진 보관 장소에 나누어 두는 구성이 가능합니다. 예를 들어 2-of-3 구성에서는 한 곳이 털리거나 열쇠 하나를 잃어버려도 남은 두 열쇠로 지출할 수 있습니다. 다만 개인키만으로 충분하지 않을 수 있습니다. 전체 공개키, 파생 경로, 서명 임계값, 각 키의 식별 정보가 담긴 서명 장치 설정이나 출력 디스크립터 등 복구에 필요한 구성 정보도 백업하고, 실제로 복구 가능한지 미리 확인해야 합니다.
다중 전송과 다른 점
다중 서명과 다중 전송은 이름이 비슷하지만 뜻이 다릅니다.
다중 전송은 한 번의 거래로 여러 사람에게 돈을 보내는 기능입니다. 봉투 하나에 여러 장의 수표를 담아 보내는 것에 가깝습니다. 여기서 여러 개인 것은 받는 쪽, 즉 거래의 도착지입니다.
반면 다중 서명에서 여러 개인 것은 돈을 움직이는 데 필요한 열쇠와 서명입니다. 받는 사람의 수와는 관계가 없습니다. 다중 전송은 여러 곳으로 보내는 기능이고, 다중 서명은 여러 열쇠로 금고를 여는 방식입니다.
다중 서명의 부담
다중 서명은 보안을 높일 수 있지만 비용과 관리 부담도 따릅니다. 거래에 여러 서명이 포함되므로 거래 데이터가 커지고, 보내는 데 드는 비용이 늘어날 수 있습니다. 열쇠 하나만 사용하는 방식보다 복구 절차도 복잡합니다.
따라서 열쇠를 서로 다른 장소와 사람에게 분산하는 것뿐 아니라, 필요한 서명 수와 복구 방법, 서명 장치 구성 정보의 백업까지 함께 설계해야 합니다.
개인키의 역할은 개인키에서 더 자세히 확인할 수 있습니다.