Sự ra đời của Bitcoin hứa hẹn mở ra một tương lai mới của ngành tài chính, ngân hàng nhà nước khi người dùng không cần phụ thuộc vào bên trung gian, chịu phí thanh toán thanh toán thanh toán thanh toán thanh toán thanh toán thanh toán thanh toán thanh toán thanh toán thanh toán thanh toán thanh toán thanh toán thanh toán giao dịch cao hay chờ cả tuần trời để nhận được tiền được gửi về từ người thân ở nước ngoài. Tuy nhiên, Bitcoin cũng bị mang tiếng xấu khi tiếp tay cho những hoạt đồng ngầm như rửa tiền hay mua và bán vũ khí do đặc thù ẩn danh của nó. Vậy, Bitcoin có thực sự trọn vẹn ẩn danh như tất cả tất cả tất cả chúng ta đã tưởng ?
Bitcoin is a secure and anonymous digital currency — WikiLeaks
Bitcoin won’t hide you from the NSA’s prying eyes — Wired UK
1. Về mặt thuật ngữ
Anonymous theo từ điển Cambridge giải nghĩa như sau: without the name of the author, giver etc being known or given
(dịch là vô danh).
Pseudonymity tạm dịch là khuyết danh.
Khi tham gia vào mạng Bitcoin, người dùng được định danh bằng địa chỉ thông tin thông tin thông tin thông tin thông tin thông tin tài khoản (address). Tuy không phải là tên thật nhưng cũng không trọn vẹn là vô danh trên mạng, nên nếu xét về mặt thuật ngữ chính cống thì Bitcoin chỉ được xem là Pseudonymity thay vì Anonymous. Tuy nhiên để đơn giản, chúng ta thường gọi Bitcoin là một mạng lưới mạng lưới mạng lưới mạng lưới hệ thống ẩn danh.
2. Tính ẩn danh
Một hệ thống trọn vẹn ẩn danh là một hệ thống bảo vệ rằng từ định danh trên hệ thống không hề hoặc rất khó để truy ra thông tin thật của những thành phần tham gia. Liệu Bitcoin có đảm bảo điều đó hay không ?
- Khi một node phát tán giao dịch của địa chỉ lên mạng, những node khác hoàn toàn hoàn toàn hoàn toàn hoàn toàn hoàn toàn có thể biết địa chỉ IP của node từ đó truy ra vị những thông tin ví dụ điển hình như vị tri địa lý
- Bạn đi mua BTC trên những sàn giao dịch và cần phân phối những thông tin như thẻ tín dụng, email … Thông tin cá nhân.
- Ví như bạn mua đi mua 1 cốc cà phê bằng Bitcoin, người chủ quán sẽ biết được địa chỉ bitcoin này là của bạn.
- Các thông tin về mọi giao dịch (người gửi, người nhận, giá trị) đều được public trên blockchain. Nếu tài khoản của bạn bị gán với định danh thật thì người ta có thể xem được toàn bộ lịch sử vẻ vang giao dịch của bạn.
3. Mixing
Một số lưu ý:
- Thông thường, những input của giao dịch đến từ một tài khoản. Tuy nhiên, giao thức Bitcoin không yêu cầu những input của một giao dịch phải cùng đến từ 1 tài khoản.
- Địa chỉ được trả lại tiền thừa trong output của giao dịch không nhất thiết phải giống địa chỉ ở input.Thường thì ở những ví địa chỉ ở output sẽ là một địa chỉ khác của người gửi.
- Tuy đã đổi địa chỉ sau mỗi lần giao dịch nhưng việc input của giao dịch chỉ có một tài khoản nên việc truy vết người nhận cũng như giá trị giao dịch cũng không mấy khó khăn.
Mixing là dịch vụ sẽ gộp nhiều input từ nhiều tài khoản khác nhau, điều đó sẽ khiến việc truy vết output nào của tài khoản nào sẽ khó khăn vất vả vất vả vất vả hơn rất nhiều.
Chúng ta cùng quan sát hình minh họa bên trên khi giao dịch 2 sử dụng giao thức CoinJoin:
- Giao dịch 2 có 3 input: 1 của địa chỉ 1C3, 2 của 1A1
- Giao dịch có 2 output đều có giá trị 0.8 BTC, đều này sẽ gây khó khăn hơn cho việc truy vết giao dịch.
Độ khó sẽ càng tăng cao hơn khi input giao dịch đến từ 10-20 hay thậm chí 50 tài khoản khác nhau
Các bạn có thể tìm hiểu thêm thêm 2 giao dịch sau sử dụng lần lượt 2 input và 3 input.
Có 2 loại dịch vụ Mixing:
- Tập trung (Centralized): Bạn cần tin yêu vào dịch vụ, những dịch vụ tập trung chuyên sâu kiểu này có thể lừa đảo (với dịch vụ ko uy tín) hoặc sử dụng trái phép những thông tin giao dịch của bạn như cung cấp cho bên thứ 3 chẳng hạn. Các dịch vụ tương đối nổi tiếng như SmartMix hay ChipMixer
- Phi tập trung (Decentralized): Giải quyết được những yếu tố sống sót của những dịch vụ Mixing tập trung. Phần này chúng ta sẽ khám phá và khám phá về CoinJoin.
Các ví có tích hợp CoinJoin như Wasabi hay Samourai. Các ví này còn tích hợp thêm giao thức TOR để ẩn địa chỉ IP của bên gửi
4. ZeroCoin/ZeroCash
Zero Knowledge Proof (ZKP)
Trước khi tìm hiểu và khám phá và khám phá ZeroCoin/ZeroCash là gì ? Chúng ta sẽ cùng xem qua Zero Knowledge Proof (Một chính sách quan trọng được dùng trong ZeroCoin/ZeroCash).
ZKP có 2 thành phần: Verifier và Prover. Cơ chế ZKP đạt được khi Prover chứng tỏ cho Verifier rằng mình biết điều này nhưng không cần bật mý đơn cử cụ thể về thông tin.
Nghe có vẻ hơi khó hiểu Chúng ta sẽ có minh họa bằng một ví dụ đơn thuần sau:
- Alice có 2 quả bóng kích cỡ giống hệt nhau, chỉ khác về màu sắc. Tuy nhiên, cô bị mù màu nên không hề phân biệt được sự khác nhau về sắc tố giữa 2 quả bóng và cho rằng 2 quả bóng không khác gì nhau.
- Bob nói với Alice rằng: “2 quả bóng này có màu khác nhau đấy”. Nhưng làm sao Alice có thể biết được rằng Bob không nói dối ?
- Alice sẽ quy ước với Bob về số hiệu của 2 quả bóng (quả bên tay trái là quả số 1, quả bên tay phải là quả số 2 chẳng hạn).
- Tiếp đó,cô dấu 2 quả bóng sau lưng và xáo chúng đi rồi đưa ra 1 quả bóng cho Bob xem. Cứ như vậy nhiều lần, nếu lần nào Bob cũng nói đúng số hiệu của quả bóng thì Alice tin được rằng Bob không nói dối do nếu Bob nói dối thì xác xuất đoán mò mỗi lần là 0.5 (nếu nhiều lần thì xác xuất đoán mò đúng hết của Bob sẽ là cực kỳ thấp) .
- Bob đã chứng tỏ cho Alice tin rằng 2 quả bóng có màu khác nhau nhưng không cần bật mý chi tiết về sắc tố của 2 quả bóng.
Nếu muốn tìm hiểu chi tiết hơn về Zero Knowledge Proof thì những bạn có thể tham khảo bài viết Zero Knowledge Proof và privacy trên Blockchain – Part 1 của tác giả Nguyen Anh Tien.
ZeroCoin
ZeroCoin là giao thức được đề xuất kiến nghị bởi một nhóm những nhà khoa học thuộc những ĐH hàng đầu thế giới như MIT, Tel Aviv, Johns Hopkins nhằm mục đích mục đích mục đích tăng tính riêng tư, ẩn danh trên mạng Bitcoin. ZeroCoin sử dụng những thuật toán mã hóa và chính sách ZKP nhằm ẩn giấu hoàn toàn nguồn gốc những giao dịch, ngăn ngừa sự truy vết giao dịch và định danh tác nhân trên mạng.
Mục tiêu của những nhà tăng trưởng ZeroCoin nguyên văn là:
Our goal is to build a cryptocurrency where your neighbors, friends and enemies can’t see what you bought or for how much.
Nôm na là xây dựng một hệ thống tiền kỹ thuật số hoàn toàn ẩn danh, nơi mà bạn sẽ không thể bị truy vết
Lưu ý: ZeroCoin chưa được triển khai trên mạng Bitcoin vì khi implement ZeroCoin cần phải triển khai ở tầng giao thức, độ phức tạp cao cũng như cần sự đồng thuận từ cộng đồng cũng như đội ngũ phát triển.
Ý tưởng
Ý tưởng của ZeroCoin nhằm giúp ẩn danh trên Bitcoin là đổi từ một lượng Bitcoin này thành một lượng Bitcoin tương ứng trải qua đồng trung gian có tên là zerocoin. Từ đó, việc truy vết giao dịch sẽ là bất khả thi vì lượng Bitcoin bắt đầu không có liên hệ gì với lượng Bitcoin được chuyển đổi. Hình thức này có sự tương đương với việc rửa tiền được thực hiện bởi những cá thể hay tổ chức phi pháp.
Cụ thể quá trình
Quy đổi bitcoin ra zerocoin
- Tạo 1 số ít seri S và 1 số ít bí hiểm r.
- Tính Commit(S, r). Commitment scheme là một thuật toán ở mã, trong phạm vi bài viết chúng ta sẽ không tìm hiểu chi tiết về thuật toán này. Nếu muốn tìm hiểu thêm những bạn có thể tham khảo ở đây
- Publish commitment lên blockchain. List commiment được ký hiệu {c1, c2, …, cn}.
Quy đổi lại zerocoin thành bitcoin
Với giao dịch quy đổi lại zerocoin thành bitcoin, người dùng cần chứng minh mình là người đã tạo ra lượng zerocoin đó. Nói chi tiết hơn là chứng minh mình là người biết số bí hiểm r của một trong những commitment đang được lưu trên blockchain.
- Tạo giao dịch có kèm theo số seri S (tiết lộ S). Có nghĩa là: “Tôi biết một số ít r mà Commit(S, r) thuộc {c1, c2, …, cn}”.
- Miner sẽ xác nhận giao dịch. Với số seri S, miner có thể kiểm tra xem S có thuộc một trong những commitment hay không nhưng sẽ không biết cụ thể số seri S là thuộc commitment nào ? (Miner chỉ biết S chứ không biết r).
- Kiểm tra số seri S đã được dùng trong giao dịch nào chưa ? (tránh double-spend).
- Output giao dịch là lượng bitcoin quy đổi.
Tính ẩn danh
Yếu tố tạo ra sự sự ẩn danh của zerocoin qua 2 quy trình trên:
- Trong suốt quá trình, r không bị lộ.
- Không ai biết số seri S nào tương ứng với lượng zerocoin nào. Từ đó mất dấu liên hệ giữa đồng Bitcoin bắt đầu dùng đổi quy đổi thành zerocoin và đồng Bitcoin mới.
Hạn chế
- Phức tạp, cần phải triển khai ở tầng giao thức (protocol). Cần sự đồng thuận của phần đông cộng đồng và đội ngũ phát triển.
- Do dùng cơ chế quy đổi và các hàm mã hóa nên zerocoin rất chậm (khoảng 2 tx/s).
- Chưa ẩn được giá trị của giao dịch.
ZeroCash
ZeroCash là người tiếp sau của ZeroCoin nhằm khắc phục các hạn chế của người anh em. ZeroCash là nền tảng để đội ngũ tăng trưởng tạo ra 1 đồng coin mới là Zcash.
Đặc điểm của ZeroCash:
- Sử dụng một kỹ thuật mới có tên là
zero-knowledge succinct noninteractive arguments of knowledge
(zk-SNARKs). - Nhanh hơn ZeroCoin.
- Ẩn đi giá trị input giao dịch.
Về chi tiết kỹ thuật của ZeroCash được vận dụng trong Zcash, xin phép được hẹn các bạn ở một bài viết không xa.
Kết luận
Trong bài viết này, mình đã trình làng về các khái niệm, các phương thức, giao thức ẩn danh áp dụng trên Bitcoin. Tất nhiên vẫn còn thiếu sót một số cái tên chưa được đề cập đến như CoinWitness, v..v. Phần miêu tả giao thức ZerCoin cũng mới chỉ tiếp cận về mặt khái niệm, tư tưởng chứ chưa đi sâu, chi tiết các hoạt động giải trí của thuật toán. Trong một ngày không xa, hẹn gặp lại mọi người trong bài viết về Zcash
Tài liệu tham khảo
Bitcoin and Cryptocurrency Technologies
Bitcoin Magazine
BitCoin Wiki
Zero Knowledge Proof và privacy trên Blockchain – Part 1
https://medium.com/cobo-vault/bitcoin-mixing-a-brief-research-into-centralized-vs-decentralized-390ea83fa6ad