Mối quan hệ giữa Public Key và Private Key — Public Key Cryptography
Public Key Cryptography là một dạng mã khóa học, mật mã học với 2 loại keys được sử dụng: Public và Private.
Vì cả hai đều được gọi là Key, chìa khóa, nên mục đích bất cứ chìa khóa nào là để khóa và mở khóa. Tưởng tượng như bạn có một ổ khóa đặc biệt, có thể vặn được tới 3 vị trí khác nhau: A, B, C. Trong đó B là vị trí trung tâm, A nằm bên trái, và C nằm bên phải. Ổ khóa chỉ có thể mở ra khi được vặn tới vị trí B. Và bạn đang giữ trong tay hai chìa khóa: Public và Private. Public key có thể vặn được từ A > B > C. Private key chỉ có thể vặn được từ C > B > A (ngược lại). Bạn bắt đầu hình dung ra vấn đề chưa? Khi bạn dùng public key để khóa ổ khóa lại (vặn từ A > C), chỉ người nào có cái private key mới có thể mở ra. Và ngược lại: Khi bạn dùng Private Key để khóa ổ khóa lại (vặn từ C > A) Người nào có Public Key của bạn sẽ mở ra được.
Nên nhớ, private key bạn cất giấu ở một nơi chỉ mình bạn biết, và public key thì bạn có thể làm ra nhiều cái sơ cua và gửi cho bạn bè, người thân, hay cả mạng lưới Bitcoin đều biết cái public key này của bạn. Với một ổ khóa 2 chìa như vậy chúng ta có thể làm được nhiều điều thú vị như sau:
- Nếu có một người nào đó dùng public key của bạn để khóa (mã hóa) một thông điệp và gửi cho bạn, chỉ có bạn, người đang giữ private key tương ứng mới có thể mở khóa.
- Bạn có thể “ký tên” (mã khóa một thông điệp) với private key của mình. Và tất cả mọi người đều có thể xác nhận thông điệp đó đích thị là do bạn gửi bởi vì chỉ có một mình bạn là có cái private key tương ứng với public key đó.
- Bạn vừa có thể ký tên với private key của mình, vừa có thể mã khóa nó với public key của người khác.
Một số thuật ngữ khác
Wallet: Ví/bóp tiền để giữ bitcoins, có thể là một chương trình được download và install vào máy tính của bạn (an toàn nhất, chi tiết ở cuối bài), hoặc Iphone, Android, hoặc những website có cung cấp dịch vụ wallet, chẳng hạn như trang blockchain.info.
Cryptography: Mật mã học, mã khóa học, được dùng trong Bitcoin để bảo đảm tính an toàn và bảo mật của hệ thống.
Cryptocurrency: Từ ghép giữa crypto và currency. Nếu hiểu currency là tiền và crypto là mã thì cryptocurrency có thể được dịch là “tiền mã”, tuy nhiên có lẽ từ này đã có bản quyền rồi.
Double spend: Hành vi gửi đi cùng một số lượng bitcoins tới hai nơi khác nhau cùng một lúc. Ví dụ như bạn chỉ có 500 USD tính bằng bitcoin nhưng lại cùng một lúc đặt mua 2 cái iphones 5 ở 2 websites khác nhau. Điều này sẽ không thể thực hiện được trong mạng lưới Bitcoin vì đã có cái Block Chain, mục đích chính của block chain là để tạo ra được một sự đồng thuận, nhất trí, thống nhất giữa tất cả thành viên trong mạng lưới để quyết định xem transaction nào sẽ được xác nhận và hợp lệ.
Hash rate: Tốc độ, sức mạnh tính toán của mạng lưới Bitcoin. Ví dụ: Hash rate = 10 Th/s = 10 ức (trillion) phép tính một giây.
Signature: Chữ ký. Giống như khi bạn ký tên vào một tờ check (người Việt đọc là séc) nào đó để gửi cho người khác để chứng minh cái check này là từ bạn gửi vì đó là chữ ký của bạn, thì Bitcoincũng có một chế độ hoạt động tương tự: Khi bạn gửi bitcoin cho một người khác thì chương trình sẽ tự động tạo ra một chữ ký với private key của bạn, transaction này sau đó sẽ được loan báo lên mạng lưới, những thành viên trong mạng lưới sẽ kiểm tra xem cái chữ ký này có phải đúng thật là của bạn hay không với public key của bạn.
Tất cả những chi tiết này xảy ra một cách tự động, nên đối với một người dùng bình thường thì thật sự cũng không cần quan tâm tới lắm. Đối với một người dùng bình thường thì tất cả những gì bạn cần làm khi gửi bitcoin cho người khác là nhập địa chỉ của người đó vào và số bitcoin muốn gửi và bấm nút Send, chấm hết.
Anonymity – Bitcoin cho bạn sự riêng tư
Người dùng bitcoin không cần phải đăng ký tài khoản, không cần nhà bank, không cần thẻ tín dụng, không cần email, không cần phải có user-name hay passwords, không cần biết tên tuổi, địa chỉ, giới tính, quốc tịch, màu da, đẳng cấp, tầng lớp, trình độ… để nhận hay gửi bitcoins. Số bitcoins bạn có được chỉ đơn giản nằm trong một hay nhiều địa chỉ mà bạn có. Và số bitcoins đó thuộc về người nào đang giữ cái private key (nằm trong file wallet.dat), và chỉ khi có được cái private key đó thì mới có thể gửi bitcoin được, vì nếu không có private key thì sẽ không “ký tên” (sign) được. Khi bạn gửi bitcoins cho một người thì họ chỉ biết được số bitcoin đó là từ bạn gửi, nhưng không thể biết được ai là người đã sở hữu số bitcoins đó trước bạn.
Người ta có thể biết được số bitcoin đang có trong một địa chỉ chứ không thể biết được đích danh AI đang sở hữu địa chỉ đó. Vì thế nên ví dụ như bạn có 1 tỷ tiền bitcoins, bạn sẽ không gom hết vào một địa chỉ duy nhất, mà phải chia ra làm nhiều địa chỉ khác nhau. Vì số tiền càng lớn thì sẽ càng bị mạng lưới chú ý theo dõi, và sự thật là như vậy.
Lưu ý: Mỗi MỘT public key sẽ có MỘT private key tương ứng với nó. Public key và Private key tương tự như hai cặp song sinh. Public key được tạo ra từ Private key, nhưng không thể làm được ngược lại. Nói cho dễ hiểu ví dụ như 4 chia 3 dư 1, 1 ở đây là public key, dù bạn biết 1 nhưng bạn không thể nào biết được 4 và 3, bởi vì có vô hạn những con số có thể chia cho nhau mà cũng dư 1.
Lưu ý khác: Trong bài trước tôi có nói public key và address là giống nhau, bài này có đính chính một chút là thật ra nó không hoàn toàn giống nhau. Public key sau khi được thanh lọc qua một vài hàm băm (hash function) thì ta sẽ có được một address, địa chỉ.
Ai? Công ty nào điều hành Bitcoin?
Không một ai hay công ty nào điều hành Bitcoin. Bitcoin được vận hành bởi tất cả những người dùng Bitcoin, những người đang sử dụng Bitcoin Client.
Bitcoin Client là gì?
Bitcon clients là những phần mềm, chương trình chạy Bitcoin, hay còn có một tên gọi thông thường khác là Wallet. Có nhiều loại clients khác nhau được sử dụng cho nhiều mục đích khác nhau. Chẳng hạn như:
- Bitcoin-QT Client (Download tại http://bitcoin.org/): Chương trình nguyên thủy được lập trình bởi Satoshi Nakamoto, người khai sinh ra Bitcoin. Phù hợp với những người đam mê, các thợ đào, developers, lập trình viên, doanh nghiệp.
- MultiBit Client (Download tại https://multibit.org/): Nhanh gọn nhẹ trung bình, phù hợp với người dùng trung bình.
- Electrum Client (Download tại http://electrum.org/): Nhanh gọn nhẹ nhất. Có thể phù hợp cho tất cả.
No comments :