488 / 736BIP39-P

BIP39 passphrase

복구 단어에 더하는 또 하나의 비밀

같은 복구 단어라도 passphrase를 더하면 다른 지갑을 사용할 수 있습니다. 어떤 보호가 생기는지, 왜 오타가 빈 지갑을 여는지, 복구를 어렵게 만들지 않으려면 무엇이 필요한지 알아봅니다.

BIP39 passphrase는 지갑이 복구 단어, 즉 Seed Phrase와 함께 사용하는 선택 사항인 비밀 문자열입니다. 이 두 가지가 어떤 키에 접근할지를 결정합니다. passphrase를 사용했다면 복구할 때도 필요하며 기기의 PIN으로 대신할 수 없습니다. 보호 수단이 하나 늘지만 잃어버릴 수 있는 것도 하나 늘어납니다. Bitcoin을 사용하는 데 필수는 아닙니다.

passphrase 없이 만든 지갑과 그 복구 단어가 있다고 생각해 보세요. 그 단어만으로 같은 키들을 도출할 수 있습니다. passphrase를 입력하면 지갑은 두 입력을 바탕으로 키의 출발점이 되는 다른 값인 seed를 계산합니다. 그 결과 다른 지갑에 접근하게 됩니다. 원래 지갑에 잠금장치를 하나 더 다는 방식이 아닙니다. PIN은 보통 기기의 잠금을 풀지만 passphrase는 키 자체를 결정하는 데 쓰입니다. “25번째 단어”라고 부르기도 하지만 한 단어일 필요도, BIP39 단어 목록에 있는 단어일 필요도 없습니다. [1] [2]

일반 계정에서는 오타를 내면 보통 “비밀번호가 틀렸습니다”라는 메시지가 나옵니다. 여기서는 같은 실수로 다른 지갑, 대개 잔액이 없는 지갑이 열릴 수 있습니다. BIP39에는 passphrase의 체크섬이 없기 때문입니다. 원래의 비트코인이 지워진 것은 아닙니다. 먼저 백업, 정확한 입력, 올바른 계정과 복구 설정을 확인하세요. 대소문자와 공백도 구별됩니다. 기술적인 예외는 있습니다. Unicode의 é와 e 뒤에 결합 악센트를 붙인 표기처럼 일부 표현은 NFKD 정규화를 거치면 같아집니다. 그래도 실제로는 정확한 표기를 보관하고 글자가 비슷해 보인다는 이유로 판단하지 마세요. 앱이 자체 확인 절차나 검사를 추가할 수도 있습니다. [1] [2]

누군가 복구 단어를 얻더라도 충분히 예측하기 어려운 passphrase는 올바른 지갑에 접근하기를 훨씬 어렵게 만들 수 있습니다. 다만 계속 비밀로 유지되고 쉽게 추측할 수 없어야 합니다. 생일, 유명한 인용문, 다른 곳에서 쓰던 비밀번호는 약한 선택입니다. 단어를 가진 공격자는 여러분의 기기에 묻지 않고 자기 컴퓨터에서 오프라인으로 추측을 시험할 수 있습니다. 기기의 PIN이나 시도 횟수 제한으로는 이 공격을 막을 수 없습니다. 일반적인 백업과 복구가 아직 익숙하지 않다면 먼저 그것부터 익히세요. 구성을 복잡하게 만든다고 저절로 더 안전해지지는 않습니다. [1] [2]

새 passphrase를 입력하기 시작해도 원래 지갑의 자금은 여전히 원래 키의 통제를 받습니다. 옮기려면 먼저 새 지갑과 복구 과정을 확인한 다음 실제로 비트코인을 보내야 합니다. passphrase가 없는 지갑에서 옮길 때도 마찬가지입니다. PIN 변경과 혼동하지 마세요. 기기에 접근하는 방법을 바꾸는 것만으로 새로운 비트코인 키가 만들어지지는 않습니다. [2] [3]

정확한 passphrase를 안전하게 기록하고 정당하게 필요한 상황에서 누가 찾을 수 있을지도 생각하세요. 복구 단어와 따로 보관하면 두 가지가 함께 유출될 위험이 줄어듭니다. 하지만 자신의 복구나 상속까지 막아서는 안 됩니다. 강력한 passphrase를 잊었고 백업도 없다면 되찾지 못할 수 있습니다. 큰 금액을 넣기 전에 해당 지갑의 신뢰할 수 있는 절차로 복구를 시험하세요. 주소 유형과 지갑이 계정을 찾을 위치를 알려 주는 파생 경로 등 필요한 설정도 보관해야 합니다. Output Descriptor는 이런 규칙을 기계가 읽을 수 있게 설명한 것입니다. 이를 지원하는 지갑에서는 중요한 백업 자료가 될 수 있지만, 잃어버린 passphrase를 대신하지는 못합니다. [2] [3]

서로 다른 passphrase로 별도의 지갑을 사용할 수 있습니다. 그래서 소액만 담은 미끼 지갑을 유지하는 사람도 있습니다. 하지만 공격자가 그것을 보고 전부 공개했다고 믿으리라는 보장은 없습니다. 결제 기록, 백업 또는 다른 흔적으로 추가 자산이 드러날 수 있습니다. 비밀번호 추측을 막는 것과 신체적 위협을 동반한 강요에서 안전한 것은 다른 문제입니다. [1]

지갑을 사용하려고 이 계산을 직접 할 필요는 없습니다. BIP39는 복구 단어를 PBKDF2-HMAC-SHA512의 password 입력으로 전달합니다. 다른 입력은 salt라 부르며 "mnemonic" + passphrase 형태입니다. 여기서 salt는 추가 입력의 기술적 이름이지, 따로 만들어 내거나 백업해야 하는 또 하나의 비밀이 아닙니다. 복구 단어를 이 입력에 덧붙이는 것도 아닙니다. 두 문자열 모두 NFKD 정규화와 UTF-8 인코딩을 거칩니다. 2048회 반복하면 512비트, 즉 64바이트 길이의 seed가 만들어집니다. passphrase를 쓰지 않으면 그 문자열은 비어 있지만 salt에는 여전히 "mnemonic"이 들어갑니다. 결과가 길거나 계산을 반복한다고 해서 추측하기 쉬운 passphrase가 강한 비밀로 바뀌지는 않습니다. [1]

예시 · BIP39-P

대소문자에 따라 지갑이 달라질 수 있습니다

같은 니모닉 단어라도 passphrase가 “alpha”인지 “Alpha”인지에 따라 BIP 39는 다른 시드를 파생합니다. 이는 짧은 예시이며 안전한 비밀번호가 아닙니다. 명세에는 passphrase 체크섬이 없어 오타로 다른, 보통 비어 있는 지갑이 열릴 수 있습니다. 앱은 자체 검사를 추가할 수 있습니다.

더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 BIP 39, PBKDF2, BIP39 checksum, 자기 수탁. 다음 항목에서도 이 글을 참조합니다 Seed Phrase, BIP 39, Cold Storage, Gap Limit.

01Passphrase는 복구 단어나 PIN과 같은 것인가요?

아닙니다. BIP 39는 복구 단어와 선택 사항인 passphrase를 함께 사용합니다. passphrase를 설정했다면 단어만으로는 원래 지갑에 접근할 수 없고 PIN으로 대신할 수도 없습니다. 복구에는 주소 유형이나 계정을 찾을 위치를 알려 주는 파생 경로 같은 추가 정보가 필요할 수도 있습니다.

02passphrase는 유출된 니모닉 단어를 보호하나요?

충분히 예측하기 어렵고 단어와 함께 유출되지 않은 passphrase는 올바른 시드 파생을 어렵게 할 수 있습니다. 하지만 단어를 가진 공격자는 오프라인으로 후보를 시도할 수 있으므로 짧거나 예측 가능한 passphrase는 신뢰할 만한 보호가 아닙니다. 강력한 passphrase를 백업 없이 잃으면 접근을 복구하지 못할 수 있습니다.

DOC · 001BIP39 — Mnemonic generation and seed conversion명세 DOC · 002Trezor — What is a passphrase문서 DOC · 003BIP380 — Output Script Descriptors명세
개정일: 1차 출처 우선 · 투자 조언이 아닙니다