Ví bitcoin ở góc độ mã hóa

0
47
tiền ảo bitcoin

Từ “ví” được sử dụng để mô tả một số thứ khác nhau trong bitcoin.
Ở cấp độ cao, ví là một ứng dụng đóng vai trò như giao diện người dùng. Các wallet kiểm soát quyền truy cập vào tiền của người dùng, quản lý khóa và địa chỉ, theo dõi số dư, tạo và ký kết các giao dịch.
Chi tiết hơn, từ quan điểm của một lập trình viên, từ “wallet” đề cập đến dữ liệu cấu trúc dùng để lưu trữ và quản lý khóa của người dùng.
Trong bài viết này, chúng ta sẽ xem xét ý nghĩa thứ hai, nơi ví là vật chứa đựng khóa riêng tư, thường được triển khai dưới dạng tệp có cấu trúc hoặc cơ sở dữ liệu đơn giản.

Tổng quan về công nghệ ví Bitcoin

Trong phần này, chúng tôi tóm tắt các công nghệ khác nhau được sử dụng để tạo ví bitcoin thân thiện với người dùng, an toàn và linh hoạt.
Một quan niệm sai lầm phổ biến về bitcoin là ví bitcoin chứa bitcoin. Trong trên thực tế, ví chỉ chứa các khóa. Các “đồng tiền” được ghi lại trong chuỗi khối trên mạng bitcoin. Người dùng kiểm soát các đồng tiền trên mạng bằng cách ký kết các giao dịch với chìa khóa trong ví của họ. Theo một nghĩa nào đó, ví bitcoin là một chuỗi khóa.

Có hai loại ví chính, được phân biệt bằng việc khóa chúng có
tain có liên quan đến nhau hay không.
Loại đầu tiên là ví không xác định, trong đó mỗi khóa được tạo độc lập
từ một số ngẫu nhiên. Các khóa không liên quan đến nhau. Loại ví này là còn được gọi là ví JBOK từ cụm từ “Just a Bunch Of Keys.”
Loại ví thứ hai là ví xác định, nơi tất cả các khóa đều có nguồn gốc từ
một khóa chính duy nhất, được gọi là hạt giống. Tất cả các khóa trong loại ví này đều liên quan đến nhau và có thể được tạo ra lại nếu một người có hạt giống ban đầu. Có một số các phương pháp dẫn xuất khóa khác nhau được sử dụng trong ví xác định.

– Phương pháp dẫn xuất được sử dụng phổ biến sử dụng cấu trúc giống cây và được gọi là xác định phân cấp hoặc ví HD.
– Ví xác định được khởi tạo từ một hạt giống. Để làm cho chúng dễ sử dụng hơn, hạt giống được mã hóa thành các từ tiếng Anh, còn được gọi là các từ mã dễ nhớ.
Tạo một ví HD Wallet từ Seed

Ví HD được tạo từ một hạt gốc duy nhất, là một chuỗi 128, 256 hoặc 512 bit 512 bit. Thông thường, hạt giống này được tạo ra từ một phép ghi nhớ như được trình bày chi tiết trong phần trước.
Mọi khóa trong ví HD đều có nguồn gốc xác định từ hạt giống gốc này,
giúp bạn có thể tạo lại toàn bộ ví HD từ hạt giống đó trong bất kỳ
Ví HD. Điều này giúp dễ dàng sao lưu, khôi phục, xuất và nhập ví HD
khai thác hàng nghìn hoặc thậm chí hàng triệu chìa khóa chỉ bằng cách chuyển duy nhất các ghi nhớ mà hạt giống gốc được bắt nguồn từ.
Quá trình tạo khóa chính và mã chuỗi chính cho ví HD là thể hiện trong sau

Hạt giống gốc được nhập vào thuật toán HMAC-SHA512 và kết quả băm là được sử dụng để tạo khóa cá nhân chính (m) và mã chuỗi chính (c). Sau đó, khóa cá nhân chính (m) tạo khóa công khai chính tương ứng (M) sử dụng quy trình nhân đường cong elliptic thông thường m * G.
Mã chuỗi (c) được sử dụng để giới thiệu entropy trong hàm tạo khóa con từ khóa cha, như chúng ta sẽ thấy trong phần tiếp theo.

Dẫn xuất khóa con riêng của ví Bitcoin

Ví HD sử dụng chức năng dẫn xuất khóa con (CKD) để lấy các khóa con từ khóa cha.

Các hàm dẫn xuất khóa con dựa trên hàm băm một chiều kết hợp:
• Khóa cá nhân hoặc khóa công khai chính (khóa không nén ECDSA)
• Hạt giống được gọi là mã chuỗi (256 bit)
• Một số chỉ mục (32 bit)
Mã chuỗi được sử dụng để giới thiệu dữ liệu ngẫu nhiên xác định cho quy trình, để biết chỉ mục và khóa con là không đủ để lấy các khóa con khác. Việc nhập khóa con không giúp bạn có thể tìm thấy các anh chị em của nó, trừ khi bạn cũng có mã chuỗi. Hạt mã đề ban đầu (ở gốc cây) được tạo ra từ hạt, trong khi các mã chuỗi con tiếp theo được lấy từ mỗi mã chuỗi mẹ. Ba mục này (khóa cha, mã chuỗi và chỉ mục) được kết hợp và băm thành tạo các khóa con, như sau.
– Khóa công khai chính, mã chuỗi và số chỉ mục được kết hợp và băm
với thuật toán HMAC-SHA512 để tạo ra một băm 512 bit. Hàm băm 512-bit này là chia thành hai nửa 256 bit. 256 bit nửa bên phải của đầu ra băm trở thành mã chuỗi cho khoa con. 256 bit nửa bên trái của hàm băm được thêm vào khóa riêng tư cha để tạo ra khóa riêng con. Trong Hình đưới đây, chúng ta thấy điều này được minh họa với chỉ mục được đặt thành 0 để tạo ra con “không” (đầu tiên theo chỉ mục) của khóa mẹ

Ví Bitcoin sử dụng khóa con có nguồn gốc

Các khóa cá nhân con không thể phân biệt được với các khóa không xác định (ngẫu nhiên). Vì hàm dẫn xuất là hàm một chiều nên không thể sử dụng khóa con để tìm khóa cha. Khóa con cũng không thể được sử dụng để tìm bất kỳ anh chị em nào. nếu bạn có con thứ n, bạn không thể tìm thấy anh chị em của nó, chẳng hạn như con n – 1 hoặc con n + 1, hoặc bất kỳ con nào khác là một phần của chuỗi. Chỉ khóa cha và chuỗi mã có thể lấy được tất cả các con. Nếu không có mã chuỗi con, khóa con không thể được sử dụng để lấy bất kỳ cháu nào. Bạn cần cả khóa cá nhân con và mã chuỗi con để bắt đầu một nhánh mới và lấy ra các cháu. Vậy khóa cá nhân con có thể được sử dụng để làm gì? Nó có thể được sử dụng để làm khóa công khai và địa chỉ bitcoin. Sau đó, nó có thể được sử dụng để ký kết các giao dịch để chi tiêu bất cứ thứ gì được trả cho địa chỉ đó.

Khóa mở rộng của ví Bitcoin

Như chúng ta đã thấy trước đó, hàm dẫn xuất khóa có thể được sử dụng để tạo phần tử con ở bất kỳ cấp độ của cây, dựa trên ba yếu tố đầu vào: khóa, mã chuỗi và chỉ mục của khóa con mong muốn. Hai thành phần thiết yếu là mã khóa và mã chuỗi, và kết hợp chúng được gọi là một khóa mở rộng. Thuật ngữ “chìa khóa mở rộng” cũng có thể được coi là như là “khóa mở rộng” bởi vì khóa như vậy có thể được sử dụng để lấy con.
Các khóa mở rộng được lưu trữ và biểu diễn đơn giản dưới dạng ghép nối của 256-bit khóa và mã chuỗi 256 bit thành một chuỗi 512 bit. Có hai loại mở rộng chìa khóa. Khóa cá nhân mở rộng là sự kết hợp của khóa cá nhân và mã chuỗi và có thể được sử dụng để lấy các khóa cá nhân con (và từ chúng, các khóa công khai con). Một khóa công khai mở rộng là khóa công khai và mã chuỗi, có thể được sử dụng để tạo khóa con công khai (chỉ công khai).
Hãy nghĩ về một khóa mở rộng như là gốc của một nhánh trong cấu trúc cây ví HD. Với gốc của nhánh, bạn có thể lấy được phần còn lại của nhánh. Khóa mở rộng riêng tư có thể tạo một nhánh hoàn chỉnh, trong khi khóa công khai mở rộng chỉ có thể tạo một nhánh các khóa công khai.

Khóa mở rộng bao gồm khóa cá nhân hoặc khóa công khai và mã chuỗi.vMột khóa mở rộng có thể tạo con, tạo nhánh của chính nó trong
cấu trúc cây. Chia sẻ một khóa mở rộng cung cấp quyền truy cập vào
toàn bộ chi nhánh.

Dẫn xuất khóa con công khai Bitcoin

Một đặc điểm rất hữu ích của ví HD là khả năng lấy khóa con công khai từ khóa mẹ công khai mà không cần có khóa riêng. Điều này cung cấp cho chúng tôi hai cách để lấy khóa công khai con:

  • hoặc từ khóa riêng tư con,
  • hoặc trực tiếp từ khóa công khai mẹ.

(continue)

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây