지갑 설명자를 위한 간단한 백업 계획

이 기사는 기계로 번역되었습니다
원문 표시

저자: salvatoshi

출처: https://delvingbitcoin.org/t/a-simple-backup-scheme-for-wallet-accounts/1607

설명자를 백업하는 것은 단일 서명이 아닌 지갑 계정의 경우 매우 중요합니다. 설명자를 잃어버리면 이론적으로 지갑을 복구하는 데 충분한 시드 단어가 손실되지 않더라도 자금 손실과 같은 치명적인 결과를 초래할 수 있기 때문입니다. 이는 단순한 다중 서명 지갑에도 해당되는데, 단 하나의 xpub에서만 정보가 손실되면 지갑을 복구할 수 없게 될 수 있기 때문입니다.

표준이 부족했기 때문에 사람들은 다양한 백업 솔루션을 만들었고, 심지어 일부는 그것을 금속판에 새기기까지 했습니다.

저는 이런 접근 방식은 좋지 않으며 피해야 한다고 생각합니다. 설명자는 시드 단어가 아니므로 이론과 실제 운영에서 완전히 다르게 처리해야 합니다.

이 글에서는 간략하게 배경을 설명하고, 소프트웨어 지갑에서 채택할 수 있는 지갑 계좌 백업 표준 에 대한 이상적인 구조가 무엇인지 간략하게 설명하겠습니다.

동기: 기밀 유지 vs. 개인정보 보호

시드워드는 비밀로 유지되며 자금을 쓸 수 있는 핵심 자료를 보호하는 데 사용됩니다. 시드 단어 접근 제한이 위반되면 공격자가 자금(최소한 관련 키로 보호되는 특정 제어)의 소유권을 얻는다는 의미입니다. 따라서 공격자에게 시드 단어에 접근하는 것은 매우 귀중한 것이며, 잠재적으로 높은 보상이 있을 수 있기 때문에 비용이 더 많이 들고 정교한 공격에 투자할 의향이 있습니다.

따라서, 씨앗 단어 의 경우 :

  • 전자 백업은 리스크 높습니다 . 하드웨어 서명자는 소프트웨어 지갑을 실행하는 장치와 별도로 안전한 칩에 시드 단어를 저장하도록 특별히 설계되었습니다.
  • 시드 단어의 중복 백업도 리스크 가 높습니다 . 시드 단어는 물리적 장치로 보호해야 하며, 여러 위치에 여러 사본을 저장하면 포괄적인 보호가 더 어려워집니다.

설명자(및 그 동생인 xpub )는 비공개 로 설정해야 합니다. 이를 건드리면 공격자가 사용자의 자금을 엿볼 수 있게 됩니다. 물론 이는 나쁜 일이지만, 돈을 그냥 빼내는 것만큼 가치 있지는 않습니다. 공격자는 이를 이용해 사용자에 대한 정보를 얻고 추가 ​​공격을 수행할 수 있지만 공격이 너무 비용이 많이 들고 복잡해지면 공격에 대한 관심을 잃을 수 있습니다 .

설명자 에 대해 :

  • 전자 백업은 불가피합니다 . 이 계정을 사용하는 모든 참여자는 반드시 자신의 소프트웨어 지갑에서 전자 백업을 사용해야 합니다.
  • 추가적인 중복 백업의 리스크 최소화됩니다 .

따라서 물리적, 전자적, 하드 드라이브 또는 클라우드 스토리지 등 설명자의 여러 백업을 생성하는 것은 자금 손실 리스크 줄이는 효과적인 방법입니다. 시드 단어의 중복 백업을 생성하는 것보다 리스크 더 크지 않습니다.

부적절한 시드 단어 관리로 인해 발생하는 자금 손실 리스크 근본적으로 해결하기 위해 Liana 지갑과 같은 시간 잠금 복구 메커니즘을 사용하는 것이 좋습니다.

그렇다면 설명자와 지갑 용어를 올바르게 백업하려면 어떻게 해야 할까요?

물리적 백업은 쉽습니다. 프린터만 있으면 됩니다. 중복 백업이 있는 경우에는 종이 백업이 적합합니다. 이 글에서는 전자 백업에 대해서만 다루겠습니다.

전자 백업의 바람직한 속성

  • 암호화 : 이를 통해 백업을 클라우드 제공업체나 공개 포럼과 같은 신뢰할 수 없는 환경에 저장할 수 있습니다.
  • 접근 제어를 하세요. 암호 해독은 의도된 참여자(일반적으로 공동 서명자의 하위 집합)만이 할 수 있어야 합니다.
  • 구현이 쉽습니다 . 복잡한 도구를 사용할 필요가 없습니다.
  • 공급업체 독립적 : 이상적으로는 모든 하드웨어 서명 장치를 사용하여 구현할 수 있어야 합니다.
  • 결정론 : 동일한 부하에 대해 백업 결과가 동일합니다. 그다지 중요하지는 않지만 있으면 좋을 것 같아요.

간단한 결정론적 암호화 백업 계획(초안)

우리는 각 참가자의 xpub를 사용하여 페이로드(이 경우 설명자 자체)를 간단히 암호화하여 설명자를 해독할 수 있습니다.

아이디어 1 : 우리는 더 잘할 수 있다. 우리는 무작위 32바이트 대칭 키 $s$를 생성하고, 각 공개 키로 $s$를 암호화한 다음, $s$를 사용하여 페이로드를 암호화합니다. 이렇게 하면 백업 크기가 $O(n·|data|)$에서 $O(n + |data|)$로 줄어듭니다(여기서 $n$은 공개 키의 개수입니다).

번역자 주: 참여자(공개 키)의 수가 n인 경우 모든 참여자가 복호화할 수 있도록 하기 위해 각 사람의 xpub를 직접 사용하여 페이로드의 암호화된 사본 n개를 암호화하므로 $n·|data|$가 됩니다. 하지만 대칭 키를 사용하여 페이로드를 암호화하는 경우 페이로드의 암호화된 사본은 1개만 존재하고 다른 하나는 대칭 키 s의 암호화된 사본 n개(고정 길이)이므로 $n이 됩니다. + |데이터|$.

아이디어 2 : 설명자를 이미 알고 있는 참가자에게는 감출 것이 없습니다. 따라서 설명자에 접근할 수 없는 사람에게는 비밀로 유지하기 위해 기밀 유지가 축소될 수 있습니다. 각 공동 서명자는 이미 공개 키(지갑 계정의 xpub)를 가지고 있으므로 이 키를 암호화 키로 재사용할 수 있습니다. 그러나 비대칭 암호화의 경우 복호화에 개인 키가 필요합니다. 개인 키가 사용자 정의 암호 해독 논리로 쉽게 프로그래밍될 수 없는 보안 칩에 저장될 수 있으므로 이는 바람직하지 않습니다. 반대로, 공개 키 자체의 엔트로피를 재사용하여 대칭 키를 생성하고 이를 사용하여 공유 비밀 값 $s$를 "암호화"할 수 있습니다. 그런 다음 공개 키 $p_i$를 사용하는 모든 참여자 $i$에 대해 대칭 키 $s_i = \operatorname{sha256}(``\textrm{BACKUP_INDIVIDUAL_SECRET}” | p_i)$를 도출합니다. 이렇게 하면 비대칭 암호화를 피할 수 있으며, 보안 칩에서 공개 키에만 접근하면 됩니다. 이는 모든 비트코인 ​​서명 장치에 이미 구현되어 있는 기능입니다.

아이디어 3 : 이 과정에서 유일한 무작위성은 공유 비밀 값 $s$입니다. 이를 완전히 결정론적으로 만들려면 설명자의 결합된 엔트로피를 사용하여 설명자를 아는 모든 사람이 알 수 있는 결정론적 공유 비밀 값을 도출할 수 있습니다. 설명자의 다른 xpubs가 $p_1, p_2, \dots, p_n$(사전식 순서)이라고 가정하면 간단한 선택은 다음과 같습니다. $s = \operatorname{sha256}(``\textrm{BACKUP_DECRYPTION_SECRET}” | p_1 | p_2 | \dots | p_n)$.

다음 섹션에서는 이 모든 아이디어를 하나로 모을 것입니다.

계획

다음에서 백업될 페이로드 $data$는 정의되지 않았지만 (최소한) 설명자나 BIP388 지갑 용어가 포함될 것입니다. 연산자 "⊕"는 비트 단위 XOR(배타적 OR) 연산을 나타냅니다.

  • $p_1, p_2, \dots, p_n$이 설명자/지갑 용어의 공개 키이고 사전순으로 오름차순으로 정렬되어 있습니다.
  • $s = \operatorname{sha256}(``\textrm{백업_복호화_비밀}” | p_1 | p_2 | \dots | p_n)$
  • $s_i = \operatorname{sha256}(``\textrm{BACKUP_INDIVIDUAL_SECRET}” | p_i)$로 설정합니다.
  • $c_i = s \oplus s_i$라고 하자.
  • AES-GCM 알고리즘을 사용하여 대칭 키 $s$로 페이로드 $data$를 암호화합니다.

최종 백업은 $c_i$ 목록과 $data$의 암호화된 사본입니다.

복호화

백업된 페이로드를 해독하려면 특정 공개 키 $p$의 소유자가 $s를 계산합니다. = \operatorname{sha256}(``\textrm{BACKUP_INDIVIDUAL_SECRET}” | p)$는 각 $c_i$에 대한 대칭 키 $c_i \oplus s$를 계산하고 대칭 키를 사용하여 페이로드를 해독합니다.

안전 고려 사항

결정론적 암호화는 정의상 암호화에서 일반적으로 사용되는 " 의미적 보안 " 속성을 충족하지 않습니다. 그러나 우리의 맥락에서 적대자는 평문을 얻을 수 없으며 다른 평문은 동일한 비밀 값 $s$로 암호화되지 않을 것이라고 가정하는 것이 안전합니다.

미래의 작업

이를 통해 모든 소프트웨어 지갑이 동일한 표준을 채택할 수 있도록 보다 공식적인 사양이 정립되기를 바랍니다.

출처
면책조항: 상기 내용은 작자의 개인적인 의견입니다. 따라서 이는 Followin의 입장과 무관하며 Followin과 관련된 어떠한 투자 제안도 구성하지 않습니다.
라이크
즐겨찾기에 추가
코멘트