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]
대소문자에 따라 지갑이 달라질 수 있습니다
같은 니모닉 단어라도 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를 백업 없이 잃으면 접근을 복구하지 못할 수 있습니다.