Chuỗi 24 ký tự hạt giống (seedphrase, recovery phrase, mnemonic seeds) là khóa master của ví. Chuỗi ký tự này dài và không thể nào đoán ra được.
Vì sao lại không thể nào đoán ra được, điều này có tin tưởng được không?
Cùng xem lại thuật toán tạo ra chuỗi 24 ký tự này là như thế nào!
Có nhiều loại chuỗi ký tự hạt giống, trong đó thì chuỗi có 24 ký tự thì có độ an toàn cao nhất. Ledger sử dụng BIP-39 Word list để tạo ra chuỗi 24 ký tự này.
BIP-39 word list là một danh sách cách từ, bao gồm 2048 từ. Mỗi từ sẽ tương ứng với một số thứ tự. Vậy thì chi tiết cách tạo ra 24 ký tự hạt giống là như sau:
Ví lạnh Ledger tạo chuỗi 256 bits
1. Máy Ledger tạo một chuỗi gồm 256 bits ngẫu nhiên bằng cách sử dụng trình tạo số ngẫu nhiên thực Random Number Generator (RNG) được tích hợp trong Phần tử bảo mật của thiết bị.
Trình tạo số ngẫu nhiên thực (RNG) được đánh giá bởi bên thứ 3 và đạt được độ bảo mật cao nhất: EAL5+, AIS-31.
Ví lạnh Ledger tạo ra 8 bits tiếp theo
2. Mã hóa SHA có tên đầy đủ là Secure Hash Algorithm hay còn gọi là thuật giải băm an toàn. Đây là tổ hợp 5 thuật giải băm mật được phát triển bởi NSA (National Security Agency) – Cục An ninh Quốc gia Mỹ và được xuất bản thành chuẩn của chính phủ Mỹ bởi NIST (National Institute of Standards and Technology) – Viện Công nghệ và chuẩn quốc gia Mỹ.
Năm thuật giải SHA chuẩn bao gồm:
SHA-1: Trả lại kết quả dài 160 bit
SHA-224: Trả lại kết quả dài 224 bit
SHA-256: Trả lại kết quả dài 256 bit
SHA-384: Trả lại kết quả dài 384 bit
SHA-512: Trả lại kết quả dài 512 bit
Máy Ledger sử dụng 8 bit đầu tiên của 256 bits trên, và dùng mã hóa SHA-256 để tạo ra 8 bits và đưa vào cuối của chuỗi bit ở (1) để tạo nên chuỗi 264 bits.
Ví lạnh chia nhóm bits tạo ra 24 nhóm
3. Tất cả 264 bits này được cắt thành 24 nhóm, mỗi nhóm gồm 11 bits
Dùng 24 nhóm làm chỉ mục để lấy ra 24 từ trong BIP-39
4. Mỗi nhóm 11 bits này sẽ tương ứng với một số trong phạm vi từ 0 – 2047, từ số tương ứng của mỗi nhóm tạo được chỉ mục để lấy ra 24 ký tự từ BIP39 word list bitcoin
Kết quả và checksum
Kết quả của quá trình trên tạo nên một bộ khóa duy nhất trong số (2 ^ 256 = 115.792.089.237.316.195.423.570.985.008 687.907.853.269.984.665.640.564.039.457.584.007.913.129.639.936) bộ khóa có thể tạo ra. Chú ý rằng, 24 ký tự chưa phải là 24 ký tự cuối cùng để sử dụng làm bộ khóa. Trong đó thì 23 ký tự đầu được tạo ra thì ký tự cuối cùng được tạo ra từ ramdom 3 bits bất kỳ và sử dụng 8 bits lấy ra bằng cách dùng SHA-256 hash. Điều này có nghĩa là từ cuối cùng có thể hoạt động giống như một tổng kiểm tra – nếu bạn nhập một từ gốc không chính xác vào thiết bị trong khi khôi phục nó, thì thiết bị có thể phát hiện ra rằng từ gốc đã nhập không hợp lệ.
Kiến thức tổng hợp từ nguồn: Ledger Developer Document