시드 구문에서 비밀키 만드는 법
지난 3화에서 시드구문으로 비밀키를 만든다는 이야길 했습니다. 오늘은 이 과정에 대해 좀 더 자세히 알아볼게요. 읽어보시면 생각보다 복잡하게 구현되어 있는 걸 알 수 있으실 거에요.
대략적인 과정은 이렇습니다. 12개 혹은 24개의 단어로부터 512bit의 숫자(seed)를 생성합니다. 이 seed를 master seed로 256비트의 마스터 키와 256비트의 chain code를 만듭니다. 마스터 키와 chain code를 사용해서 자식키 생성 함수를 적당히 호출하면 지갑의 비밀키가 생성됩니다.
12개 혹은 24개의 단어로부터 512의 seed를 만드는 과정은 bip39 문서에서 자세히 찾아보실 수 있어요. 조금 간략히 설명하자면 단어를 전부 이어붙인 뒤 해시를 해서 512비트의 정보를 만듭니다.
512비트로부터 자식 지갑을 만들어내는 과정은 bip32 문서에서 자세히 찾아보실 수 있어요. 이것도 간략히 설명하자면 부모키를 적당히 안전하게 해시해서 자식키를 만들어 냅니다. 자식키로 부모키를 추측하지못하도록 chain code를 사용하구요. 부모키에서 자식키를 만드는 이유는 비밀 정보 하나로 지갑을 여러개 만들기 위해서입니다.
중간 중간 해시함수가 많이 사용되죠? 블록체인에서는 해시 함수를 매우 많은 곳에서 사용해요. 여기 저기서 보다 보면 익숙해질 거에요. |