서명 키와 보안 키

Vela 지갑은 Safe이고, Safe에는 소유자가 있습니다. Vela 지갑의 소유자는 최대 일곱 개, 임계값은 1입니다. 서명 키 하나만으로도 거래를 승인할 수 있다는 뜻입니다. 이를 1-of-n이라고 씁니다.

서명 키가 될 수 있는 것

세 종류가 있고, 자유롭게 섞어 쓸 수 있습니다.

방식무엇인가대표적인 예
플랫폼지금 쓰는 기기에 내장된 인증자이 휴대폰이나 노트북의 Face ID / Touch ID. iCloud 키체인이나 Google 비밀번호 관리자가 동기화
가까운 기기코드를 스캔해서 연결하는 다른 기기WebAuthn 하이브리드 전송으로 휴대폰이 데스크톱 대신 서명
보안 키USB나 NFC로 연결하는 분리형 인증자YubiKey 등 FIDO2 키

세 가지 모두 P-256 곡선을 쓰는 WebAuthn 자격 증명입니다. Safe 입장에서는 구분이 없습니다. 모두 소유자이고, Safe의 패스키 모듈이 온체인에서 같은 방식으로 서명을 검증합니다. (첫 번째 키는 Safe의 공유 서명자가 검증하고, 추가한 키는 각자의 작은 서명자 컨트랙트가 검증합니다. 이 컨트랙트는 지갑이 어떤 체인에 처음 배포될 때 Safe의 팩토리가 만듭니다.)

앱별로 쓸 수 있는 키 종류는 다음과 같습니다.

앱이 기기가까운 휴대폰(QR)보안 키
웹 지갑, 브라우저 확장 프로그램지원지원브라우저를 통해 USB 또는 NFC
데스크톱(macOS, Windows, Linux)macOS와 Windows지원USB
Android지원(Google Play 서비스 필요)지원USB
iOS지원지원USB-C 또는 Lightning YubiKey, 펌웨어 5.8 이상

데스크톱 앱의 “이 기기” 옵션(Touch ID, Windows Hello)과 Windows 지원 전반은 최근에 추가되어 다른 방식보다 테스트가 덜 되었습니다. 지금 데스크톱에서는 휴대폰이나 보안 키가 믿을 만한 선택입니다.

보안 키는 예비용뿐 아니라 첫 번째 서명 키로도 쓸 수 있습니다. 지갑이 Apple이나 Google 계정에 전혀 기대지 않기를 원한다면, 보안 키 두 개로 지갑을 만들고 하나는 안전한 곳에 보관하세요. (어디에도 동기화되지 않는 키 하나만 있는 지갑은 만들 수 없습니다. 그 기기 하나를 잃으면 지갑도 잃게 되므로, 앱이 두 번째 키를 요청합니다.)

왜 생성할 때 정해야 하나

많은 분이 놀라는 부분이라, 변명 대신 작동 원리를 적습니다.

지갑 주소는 소유자 목록으로부터 도출됩니다. Vela는 모든 서명 키의 공개 키가 들어 있는 Safe 초기 설정 데이터로 CREATE2 주소를 계산하며, 이 계산은 온체인에 아무것도 배포되기 전에 이루어집니다. 그래서 아직 존재하지 않는 주소로 자금을 받을 수 있습니다.

주소에 관해서는 결론이 산술로 정해집니다. 키 목록이 다르면 주소도 다릅니다. 나중에 서명 키를 하나 더 추가하면 지금의 지갑이 확장되는 것이 아니라, 새 주소에 새 지갑이 계산될 뿐이고 그 지갑에는 자금이 전혀 없습니다.

그래서 “나중에 키를 추가할 수 있나요?”라는 질문에는 솔직한 답이 두 가지입니다.

  • 자금을 넣기 전이라면: 가능합니다. 그 주소는 아직 아무것에도 묶이지 않았으니, 원하는 키로 지갑을 다시 만들면 됩니다.
  • 자금을 넣은 뒤라면: 그 주소가 곧 자금이 있는 곳입니다. 지갑이 이미 배포된 체인에서는 Safe 자체 기능으로 소유자를 바꿀 수 있습니다. 하지만 아직 배포되지 않은 모든 체인에서는 같은 주소가 여전히 처음의 키를 뜻하므로, 체인마다 소유자 목록이 서로 어긋나게 됩니다. 여러 체인의 소유자 목록을 맞춰 두는 것은 가능하고 실제로 그렇게 하는 스마트 지갑도 있지만, Vela는 아직 이 기능을 만들지 않았기 때문에 소유자 변경을 제공하지 않습니다. 키 구성은 지갑을 만들 때 계획하세요.

실제로 무엇을 막아 주나

기기 분실. 서명 키가 둘 이상이면 휴대폰을 잃어도 번거로운 정도로 끝납니다. 다른 키로 서명하면 되니까요. 키가 하나뿐이고 OS 동기화까지 꺼져 있다면, 휴대폰을 잃는 것은 곧 지갑을 잃는 것입니다. 그래서 “패스키는 자동으로 동기화됩니다”라는 말은 사용자가 직접 관리하는 설정에 대한 설명이지, 우리가 대신 해 줄 수 있는 보장이 아닙니다.

더는 믿을 수 없는 플랫폼 계정. 패스키가 iCloud 키체인이나 Google 비밀번호 관리자에 있다면, 그 계정을 장악한 사람이 패스키를 쓸 수 있을지도 모릅니다. 보안 키는 직접 가지고 있고, 어디에도 동기화되지 않습니다.

그리고 1-of-n은 양날의 검이라서 막아 주지 못하는 것도 있습니다. 키를 하나 더하는 것은 자물쇠를 하나 더 다는 것이 아니라 들어오는 길을 하나 더 내는 것입니다. 서명 키 중 어느 하나라도 손에 넣은 사람은 혼자서 서명할 수 있습니다. 키가 많을수록 분실에는 강해지고, 도난에 노출되는 면은 넓어집니다. 이것이 트레이드오프이고, 선택은 사용자의 몫입니다.

키가 유출되었을 수 있다면

키는 삭제할 수 없습니다. 키 중 하나가 다른 사람 손에 들어갔을 수 있다면(잠금이 풀린 채 없어진 휴대폰, 누군가 본 기기 암호, 더는 통제할 수 없는 Apple이나 Google 계정 등), 믿을 수 있는 키로 새 지갑을 만들어 자산을 전부 옮기세요. 이전 주소는 모든 네트워크에서 그 키로 계속 자금을 쓸 수 있는 상태로 남으며, 나중에 누군가 그 주소로 보내는 자금도 마찬가지입니다.

복구와 추가는 다릅니다

둘은 서로 다른 일이고, 문서에서도 구분해서 다룹니다.

  • 복구와 로그인 — 이미 가진 키로 새 기기에서 기존 지갑에 다시 들어가는 일.
  • 이 페이지 — 어떤 키를 둘지 처음부터 정하는 일.