Trang chủ Bitcoin Private key, Public key, Address trong Bitcoin là gì? Đâu là sự...

Private key, Public key, Address trong Bitcoin là gì? Đâu là sự khác biệt giữa chúng?

lúc 19:00
SHARE

Mục tiêu của bài viết

  1. Nắm được các khái niệm về Private key, Public keyBitcoin Address
  2. Đánh giá được tính bảo mật trên cơ chế xây dựng nên các khái niệm trên và thuật toán tạo ra nó.

Giới thiệu về Bitcoin

alt text

Bitcoin là đồng tiền kỹ thuật số đầu tiên trên thế giới, thành công nhờ công nghệ blockchain đằng sau nó cho phép xác thực được giao dịch bỏ qua được chi phí trung gian. Hiện nay bitcoin đã trở nên rất phổ biến và có lẽ không xa lạ với mọi người nữa. Bạn có thể tìm hiểu chi tiết về Bitcoin qua bài viết dưới đây.

Khái niệm Bitcoin.

1 Bitcoin (Ký hiệu : BTC, XBT) là 1 digital currency (thể hiện được số hóa). Cũng giống như các loại tiền tệ khác, bản thân nó không có giá trị, mà giá trị nằm ở việc chúng ta đồng ý để trao đổi hàng hóa của mình với nó, và chúng ta tin rằng người khác cũng làm như vậy. Về mặt kỹ thuật, bitcoin không tồn tại ở 1 nơi cố định, mà bitcoin được xác định bằng các giao dịch dùng nó.

Thông tin về lượng Bitcoin của mỗi người nằm trong 1 ledger (cuốn sổ cái) mà cũng có thể gọi chính là 1 blockchain.
Ledge lưu các giao dịch mà nhờ vào đó ta tính được lượng bitcoin của 1 tài khoản là bao nhiêu.

Một blockchain là chuỗi các block lưu các facts, mà trong bitcoin đó chính là các giao dịch (transaction). Mình lấy Ví dụ đơn giản về ledger bitcoin ở dưới đây.

alt text

Và dựa vào đó ta tính được số BTC mà mỗi user cầm là :
A : 1
B : 0.25
C : 0.75

Bạn sẽ để ý rằng ở block ban đầu (còn gọi là genesis block) có đoạn là {} -> A : 2. Điều này thể hiện rằng 2 BTC này thuộc 1 loại giao dịch đặc biệt gọi là coinbase, có thể hiểu là A đã bỏ công sức để đào ra block đầu tiên, và phần thường cho A là 2 BTC đó.

Bitcoin có thể có được bằng 1 trong 2 cách sau :

  1. Giao dịch với người khác : ta dùng tiền mặt hoặc vật phẩm để đổi lấy btc của họ
  2. Đào bitcoin (mining) : Ta nhận được bitcoin từ 1 trong 2 nguồn là phần thưởng khi đào được 1 block (coinbase) hoặc là phí khi xác thực giao dịch của người khác (transaction fee).

Có thể mình sẽ trình bày cụ thể hơn ở 1 bài viết khác, ở bài viết này mình chỉ trình bày đến đây. Tiếp theo mình sẽ đề cập đến ví bitcoin (wallet)

Wallet (Ví)

Về khái niệm Wallet, nếu trong thực tế wallet là 1 cái ví vật lý bên trong có chứa thẻ creditcard, tiền, chứng minh thư…, Google Wallet thì là 1 cái ví được số hóa, còn Bitcoin Wallet thì cũng có thể hiểu đơn giản như Google Wallet – 1 cái ví điện tử – 1 chương trình giúp ta quản lý Bitcoin của mình. Nếu bỏ qua những xử lý bên trong của những phần mềm wallet và hỏi rằng điều gì không thể thiếu và làm nên 1 wallet thì đó là cặp private key và public key, chúng xác định nên tính độc nhất của 1 wallet. Và vì public key là cái cần phải public cho cộng đồng biết để họ xác nhận giao dịch cho chúng ta, nên private key là cái quan trọng hơn và cần phải giữ bí mật.

alt text

Như sơ đồ trên đây, từ Private key ta có thể sinh ra được Public key, và từ Public key ta sinh ra được address (địa chỉ bitcoin). Nên thực tế ta chỉ cần biết Private key là đủ, public key ta có thể sinh ra từ nó được, mặc dù đảo ngược là không thể đánh giá mặt toán học.

Private key là thứ quan trọng nhất và không được để mt.

Vậy lần lượt chúng ta sẽ đi qua từng khái niệm.

1. Private key

Link offical : https://en.bitcoin.it/wiki/Private_key

Một private key trông như thế này, và luôn bắt đầu với 5 :

5Kb8kLf9zgWQnogidDA76MzPL6TsZZY36hWXMssSzNydYXYB9KF

Dưới đây là 1 số đặc điểm của private key

1.1. private key là 1 số biểu diễn bởi 256 bit

Vậy thì về lý thuyết thì ta sẽ có 2256 (~1077) private key, nhưng thực tế thì Bitcoin sử dụng 1 chuẩn gọi là secp256k1 ECDSA, và làm cho range nhỏ hơn 1 chút nhưng không đáng kể, range vẫn là 1 con số lớn nằm trong khoảng đó và làm cho việc đoán nó trở nên bất khả thi.

Giả sử ta là hacker, về mặt lý thuyết thì ta có thể tạo 1 script, cho nó chạy từ 1 cho đến (~1077), sinh lần lượt ra public key và address tương ứng. Rồi kiểm tra xem trong đó có đồng nào không bằng cách nhập address vào đây , nếu có thì gửi vào tài khoản của mình.

Về lý thuyết thì ta có thể làm được như vậy, nhưng thực tế người ta cho rằng range của private key là quá lớn để có thể đoán (~1077). Để so sánh thì có ước tính cho rằng có khoảng (~1047) phân tử nước và (~1018) hạt cát trên trái đất, và con số này còn là rất nhỏ so với range của private key, con số này có thể gần hơn với số thiên hà quan sát được là (~1080).

1.2. Mất Private key, tài khoản sẽ thất lạc vĩnh viễn.

Vậy ta sẽ nghĩ đến là “Nếu chẳng may mình mất private key thì sao?”, thì mình nghĩ điều đó đồng nghĩa với việc gần như không thể tìm lại được bằng cách suy luận từ pubic key, và bitcoin trong đó sẽ thất lạc vĩnh viễn. Thực tế ta cũng có 1 điều tra thể hiện rằng 1 phần số bitcoin tồn tại hiện nay là vô chủ, có thể có ai đó thực sự quên, hoặc là vốn dĩ họ đã không biết và giao hoàn toàn cho sàn giao dịch, và sàn giao dịch bị hack. Ở biểu đồ thể hiện thị phần nắm bitcoin ở 1 điều tra vào 10/2013, ta có thể thấy 4.1% lượng bitcoin được đánh giá là vô chủ.

1.3. Sinh private key như thế nào.

Như mình đã nói ở phần trên, để 1 private key hợp lệ thì nó cần là 1 số biểu diễn dưới dạng 256 bit và thỏa mãn chuẩn secp256k1.
Kết hợp 2 yếu tố đó, ta có thể viết 1 script sinh ngẫu nhiên 1 số 256 bit trong khoảng từ
0x1
đến
0x1 to 0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4140
thì private key được coi như hợp lệ.

–> Đến đây ta có thể hiểu được độ bảo mật của bitcoin liên quan đến range của private key như thế nào.

Thường chuỗi 1 private key sẽ bắt đầu với 5, ví dụ như sau:

5J3mBbAH58CpQ3Y5RNJpUKPE62SQ5tfcvU2JpbnkeyhfsYB1Jcn

Có lẽ khái niệm Private key – 1 số 256 bit rất đơn giản. Thuật toán từ private key sinh ra public key và address sẽ phức tạp hơn 1 chút. Mình sẽ đề cập đến sau đây.

2. Public key

Công thức tính public key đơn giản hóa như sau :

Public_key = Private_key * G 
  • * ở đây có thể hiểu tương tự như phép nhân số học 2 * 2 = 4 , khác ở chỗ là đây có thể nói là 1 phép nhân hình học thì dễ hình dung hơn.
  • G là 1 giá trị cố định và đã biết được gọi là generation point và đây cũng là 1 điểm hình học.

Người ta đánh giá rằng tìm ra 1 thuật đoán đảo ngược suy luận được private key từ public key cũng khó tương đương với việc thử tất cả các giá trị của private key.

Vậy để hiểu về phép nhân hình học * ở trên, trước hết mình sẽ trình bày về đường cong hình học dưới đây.

alt text

Đây là đồ thị của hàm : y2 mod p = (x3+7) mod p

Trong bitcoin p là giá trị rất lớn p = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F

Để dễ hình dung thì giả sử lấy p bằng 17, ta sẽ có được tương ứng cặp (x, y) = (1, 5) thỏa mãn hàm trên.

Tiếp đến mình đề cập đến 1 số tính chất của đường cong này như sau :

  • Điểm vô định (Point of infinity) : Tương tự như số 0 trong toán học, ta có 1 + 0 = 1 thì trong đồ thị này ta cũng có ý nghĩa của điểm vô định gần giống như vậy. Nếu P1 là điểm trên đường cong và P2 là điểm vô định thì P1 + P2 = P1.
  • Phép cộng : Cũng tương tự như phép cộng số học. Nếu trong số học ta có 1 + 1 = 2 thì trong đồ thị giả sử ta có 2 điểm P1, P2 nằm trên đường cong thì ta có P1 + P2 = P3 cũng là 1 điểm trên đường cong.

Về mặt hình học, trong trường hợp P1 + P2 = P3 ở trên thì ta sẽ có được P3 bằng cách nối 2 điểm P1, P2 tạo thành 1 đoạn thẳng. Đoạn thẳng này sẽ cắt đường cong tại duy nhất 1 điểm P3′ (x, y) thì P3 sẽ là điểm đối xứng với nó qua trục x (x, -y)

Điểm vô định có 2 tính chất như sau :

  • Trường hợp mà P1, P2 là 2 điểm đối xứng với nhau qua trục x, thì đoạn thẳng nối chúng sẽ không cắt đường cong, và P3 lúc này được gọi là điểm vô định.
  • Trường hợp P1, P2 là cùng 1 điểm, thì đoạn thẳng nối 2 điểm này sẽ được kéo dài ra, tạo thành 1 tiếp tuyến với đường cong. Tiếp tuyến này sẽ cắt đường cong duy nhất 1 điểm P3′, đối xứng với nó là P3. Và ta nói rằng P1 + P1 = P1 + P2 = P3. (Hoặc 2*P1 = P3)

Từ những khái niệm trên, ta đi đến định nghĩa về phép nhân

Với k là thừa số, ta có k * P = P + P + P + … + P (k lần). Cũng tương tự như số học, khác là P ở đây là 1 điểm hình học.

Vậy đến đây ta sẽ quay trở lại với công thức tính public key ở trên.

Public_key = Private_key * G 

Trong công thức trên, G chính là 1 điểm trong đồ thị trên. Và vì G là điểm biết trước, chung cho tất các user, nên ta sẽ có :

Public_key chính là số lần nhân G với Private_key lần về mặt hình học
alt text

Giả sử G như trong hình vẽ trên, nếu private key là 2 thì ta sẽ có public key sinh ra chính là điểm 2G trên đồ thị.

Đến đây mình kết thúc định nghĩa về public key. Tiếp đến mình sẽ nói về Address

3. Address

1 Address là chuỗi ký tự bao gồm các chữ và số, dưới đây là sample 1 address. 1 address thường bắt đầu với số 1

 1J7mdg5rbQyUHENYdx39WVWK7fsLpEoXZy

Bitcoin address mang ý nghĩa là “nơi nhận” trong 1 transaction. Ánh xạ trong thực tế, nó cũng giống như là địa chỉ nhà bạn gái khi ta đặt dịch vụ gửi hoa đến ngày sinh nhật, hay là địa chỉ gửi bưu kiện… Thường address là thể hiện của public key sau 1 lớp mã hóa, nhưng trong bitcoin cũng không nhất thiết là như vậy. Address có thể mang tính trừu tượng như “Gửi đến các nạn nhân hứng chịu cơn bão miên Trung” hoặc là Script (Pay-to-Script-Hash (P2SH)). Trong bài viết này mình sẽ chỉ đề cập đến address thể hiện cho public key.

So với tính toán public key từ private key ở trên thì dẫn xuất address từ public key, đơn giản hơn, mô tả ở công thức dưới đây.

 Address = RIPEMD160 (SHA256(public_key))
  • SHA256 : Thuật toán mã hóa Secure Hash Algorithm
  • RIPEMD160 : Thuật toán mã hóa RACE Integrity Primitives Evaluation Message Digest

Mặc dù có phần trình bày về address đến đây có hơi ngắn, nhưng mình nghĩ có lẽ đủ để có cái nhìn khái quát về address, và ta nắm được rằng address dẫn xuất từ public key, và trước đó nữa là private key.

Trong thực tế, để thuận tiện cho việc tính toán ở các node và dễ dàng lưu trữ, tránh nhầm lẫn, các khái niệm trên được mã hóa thêm 1 lớp nữa như dụ như Base58Check (Loại bỏ các ký tự 0, O, l, I), gắn thêm version, checksum.. Các bạn có thể tham khảo cụ thể hơn ở các tài liệu mình ghi dưới cuối bài.

Tổng kết

Bitcoin nói riêng và tiền kỹ thuật số nói chung đang trở thành xu thế và lĩnh vực nóng trong thời gian gần đây, những kiến thức về chúng và blockchain có thể mở ra rất nhiều cơ hội mới. Hi vọng bài viết của mình có thể cung cấp cho các bạn 1 cách nhìn rõ ràng hơn trên góc độ kỹ thuật.

Xem thêm:

Theo: TapchiBitcoin/Kipalog

• Cập nhật tin tức tại Telegram

Nexo

Vay Crypto chỉ từ 5,9% lãi suất hàng năm - bạn có thể sử dụng tiền một cách hiệu quả mà không cần bán coin. Kiếm tới 8% tiền lãi mỗi năm bằng stablecoin, USD, EUR & GBP với mức bảo hiểm lên tới 100 triệu.



SHARE

MỚI CẬP NHẬT