본문으로 건너뛰기

니모닉 개수와 보안

아주 간단히 말하면, “24개 단어로 된 니모닉”이 “12개 단어로 된 니모닉”보다 보안적으로 더 강력합니다. 왜냐하면 24개 단어는 12개 단어에 비해 훨씬 더 많은 조합(즉, 엔트로피)을 만들어내기 때문입니다.


1. 니모닉이란 무엇인가

  • 니모닉(Mnemonic): 비트코인 지갑에서 비밀키(Private Key)를 복구하거나 새 지갑을 생성할 때 사용하는 단어의 조합입니다.
  • 비트코인 BIP-0039 표준에 따르면, 특정한 2048개 단어 리스트에서 정해진 개수(12개, 15개, 18개, 21개, 24개 등)의 단어를 순서대로 배열합니다.

2. 12개 단어와 24개 단어의 차이

  1. 엔트로피(Entropy)의 크기

    • 12개 단어: 128비트(entropy) + 4비트(checksum)
    • 24개 단어: 256비트(entropy) + 8비트(checksum)
    • 쉽게 말해, 24개 단어는 12개 단어보다 2배 이상 많은 비트를 사용하므로, 무작위 대입 공격(브루트포스)을 통해 니모닉을 맞출 가능성은 사실상 훨씬 더 낮아집니다.
  2. 조합의 수

    • 12개 단어(128비트) 경우: 약 2^128(약 3.4 × 10^38) 가지
    • 24개 단어(256비트) 경우: 약 2^256(약 1.16 × 10^77) 가지
    • 숫자만 봐도 24개 단어의 경우가 훨씬 더 많은 조합을 갖게 됩니다.

3. 엔트로피란 무엇인가

  • 무작위성(Randomness): 결과가 정해져 있지 않고, 각 결과가 일어날 확률이 골고루 퍼져 있을수록 ‘엔트로피’가 높습니다.
  • 확실함(Certainty): 결과를 미리 알 수 있다면 ‘엔트로피’가 낮습니다.
정보

[예시 1: 동전 던지기]

  • 앞뒤가 완전히 공평한 동전을 던지면, 앞(Head) 또는 뒤(Tail)가 나올 확률이 각각 50%입니다.
  • 결과가 예측 불가능하고 각각 똑같이 나올 수 있으므로, 엔트로피가 최대가 됩니다.

[예시 2: 주사위 굴리기]

  • 6면체 주사위의 한 면이 나올 확률은 각각 약 16.7%(1/6)입니다.
  • 각 면이 골고루 나올 수 있으므로 결과를 예측하기가 쉽지 않고, 엔트로피가 높습니다.
  • 동전보다 결과가 더 다양하므로, 동전 한 번 던지기보다 주사위 한 번 굴리기의 엔트로피가 더 큽니다.

4. 주의할 점

  • 암호학적 보안강도: 12자리 < 12자리+패스프레이즈 < 24자리 < 24자리+패프
  • 그러나 니모닉의 개수보다 엔트로피가 높은 것이 보안성이 높습니다.
  • 니모닉 24개(256비트 값)라도 무작위성이 부족하면 입력값을 예측할 수 있으므로 보안성이 낮아질 수 있습니다.
  • 예를 들어, Sha256에 “1”이라는 값을 넣어도 결과값은 256비트인데 이 값은 누구나 입력 시도해 볼 수 있는 값에서 나온거라 ”표면적으론 256비트 이지만 무질서도가 부족하고 그래서 보안성이 낮다“라고 얘기할 수 있습니다.
  • 엔트로피가 충분한(재반복 해내기 힘든 무작위성이 충분한 입력값에서 나온 256비트) 256비트는 보안성이 높다고 얘기할 수 있습니다.
  • “1”이라는 단순한 값을 넣어 나온 256비트는 엔트로피가 부족하지만 패스프레이즈 입력값이 누구나 시도해볼만한 값이 아니라면 이 또한 보안성이 높다고 할 수 있습니다.
  • 브루트 포스 하기 힘들 정도의 패스프레이즈 값이라면 니모닉의 부족한 엔트로피를 커버할 수도 있을 것입니다.
경고
  • 그러면 패스프레이즈를 복잡하게 사용하면 보안성이 높아지니 매우 좋은 것일까요?
  • 보안성은 높아질 수 있지만, 복잡한 패스프레이즈를 잊어버리면 영원히 비트코인을 찾을 수 없게 됩니다.
  • 보안과 편의성, 기억과 기록 사이에서 스스로 통제 가능한 방법을 찾아야 합니다.
  • 최소 수준인 12자리 니모닉의 암기와 기록 이외의 다른 보안성 강화 방법은 반작용도 있을 수 있으니 자신에게 맞는 방법을 찾으시기 바랍니다.