Categories
Blockchain

Bitcoin và ẩn danh 2: Cách deanonymize Bitcoin

6.2. Cách deanonymize Bitcoin

Như đã đề cập trước đây, Bitcoin chỉ là bút danh, vì vậy tất cả các giao dịch hoặc địa chỉ của bạn có thể được liên kết với nhau. Chúng ta hãy xem xét kỹ hơn điều đó có thể xảy ra như thế nào.

Hình 6.1 cho thấy một đoạn trích của trang quyên góp Wikileaks (bao gồm cả phần trích dẫn ở đầu chương). Lưu ý nút làm mới bên cạnh địa chỉ đóng góp. Như bạn có thể mong đợi, việc nhấp vào nút sẽ thay thế địa chỉ quyên góp bằng một địa chỉ hoàn toàn mới, được tạo mới. Tương tự như vậy, nếu bạn làm mới trang hoặc đóng nó và truy cập nó sau, nó sẽ có một địa chỉ khác, chưa từng thấy trước đây. Đó là bởi vì Wikileaks muốn đảm bảo rằng mỗi khoản đóng góp mà họ nhận được sẽ chuyển đến một khóa công khai mới mà họ tạo ra chỉ cho mục đích đó. Wikileaks đang tận dụng tối đa khả năng tạo các bút danh mới. Trên thực tế, đây là phương pháp hay nhất để ẩn danh được sử dụng bởi ví Bitcoin.

HÌNH 6.1. Đoạn trích từ trang quyên góp Wikileaks.

HÌNH 6.1. Đoạn trích từ trang quyên góp Wikileaks. Lưu ý biểu tượng làm mới bên cạnh địa chỉ Bitcoin. Wikileaks tuân theo phương pháp hay nhất của Bitcoin là tạo địa chỉ nhận mới cho mọi khoản đóng góp.

Bạn có thể nghĩ rằng các địa chỉ khác nhau này phải không thể liên kết được. Wikileaks nhận từng khoản đóng góp riêng biệt và có lẽ nó cũng có thể chi tiêu từng khoản đóng góp riêng biệt. Nhưng những hoạt động này có thể được liên kết với nhau, như bây giờ chúng ta đang thảo luận.

Liên kết

Giả sử Alice muốn mua một ấm trà có giá 8 BTC (nhiều khả năng là 0,08 BTC, theo tỷ giá hối đoái năm 2015). Ngoài ra, giả sử rằng bitcoin của cô ấy ở ba đầu ra riêng biệt chưa được chi tiêu tại các địa chỉ khác nhau có số tiền tương ứng là 3, 5 và 6 BTC. Alice thực sự không có địa chỉ với 8 BTC ở trong đó, vì vậy cô ấy phải kết hợp hai đầu ra của mình làm đầu vào cho một giao dịch duy nhất mà cô ấy trả cho cửa hàng (Hình 6.2).

Địa chỉ ẩn

Giả sử Bob muốn quảng cáo địa chỉ quyên góp của mình trên một bảng quảng cáo, ngoài trang web của anh ấy. Giờ đây, không có cách nào để hiển thị một địa chỉ khác cho mỗi người dùng và dường như không thể tránh khỏi các khoản đóng góp mà trang web nhận được tại địa chỉ này sẽ có thể dễ dàng liên kết đến trang của Bob.

Một giải pháp gọn gàng cho vấn đề này là sử dụng các địa chỉ ẩn (stealth addresses). Nó cho phép người nhận Bob đăng một địa chỉ tĩnh “vĩnh viễn” mà từ đó bất kỳ người gửi nào Alice cũng có thể lấy được các địa chỉ mới, mà chỉ Bob mới biết khóa cá nhân.

Làm thế nào là điều này được thực hiện? Nhớ lại rằng khóa công khai ECDSA có dạng gx, trong đó x là khóa riêng và địa chỉ là H(gx). Để kích hoạt địa chỉ ẩn, Bob sẽ phải quảng cáo chính khóa công khai, thay vì giá trị băm ngắn hơn nhiều. Sau đó, Alice có thể chọn một giá trị ngẫu nhiên r, tính (gx)r = gxr và gửi tiền vào khóa công khai này. Nếu Alice có thể gửi riêng giá trị r cho Bob, anh ta có thể tính khóa riêng chính xác xr để chi tiêu số tiền được gửi đến gxr.

Phương pháp này không lý tưởng, vì Alice phải gửi r cho Bob và các giao dịch Bitcoin phải hoạt động ngay cả khi Bob ngoại tuyến. Để khắc phục điều này, có nhiều giao thức phức tạp hơn cho phép Alice nhúng r vào chính giao dịch Bitcoin một cách hiệu quả. Sau đó, Bob sau đó có thể quét chuỗi khối, phát hiện các giao dịch dành cho anh ta và khôi phục khóa cá nhân. Cách tiếp cận này được sử dụng trong Dark Wallet, một chiếc ví được thiết kế để tăng tính riêng tư và một khái niệm tương tự cũng được sử dụng trong altcoin CryptoNote.

HÌNH 6.2. Giao dịch đa đầu vào.

HÌNH 6.2. Giao dịch đa đầu vào. Để thanh toán cho ấm trà, Alice phải tạo một giao dịch duy nhất có đầu vào ở hai địa chỉ khác nhau. Khi làm như vậy, Alice tiết lộ rằng hai địa chỉ này được kiểm soát bởi một thực thể duy nhất.

Nhưng giao dịch này tiết lộ điều gì đó. Nó được ghi lại vĩnh viễn trong chuỗi khối và bất kỳ ai nhìn thấy nó đều có thể suy ra rằng hai đầu vào cho giao dịch rất có thể nằm dưới sự kiểm soát của cùng một người dùng. Nói cách khác, chi tiêu được chia sẻ là bằng chứng về việc cùng kiểm soát các địa chỉ đầu vào khác nhau. Tất nhiên có thể có ngoại lệ. Có lẽ Alice và Bob là bạn cùng phòng và đồng ý mua chung ấm trà bằng cách mỗi người cung cấp một đầu vào giao dịch. Nhưng nhìn chung, đầu vào chung bao hàm sự kiểm soát chung.

Nhưng nó không dừng lại ở đó. Đối thủ có thể lặp lại quá trình này và liên kết chuyển tiếp toàn bộ một cụm giao dịch như thuộc về một thực thể duy nhất. Nếu một địa chỉ khác được liên kết với một trong hai địa chỉ của Alice theo cách này, thì kẻ thù biết rằng cả ba địa chỉ đều thuộc cùng một thực thể và anh ta có thể sử dụng quan sát này để phân cụm các địa chỉ. Nói chung, nếu một kết quả đầu ra tại một địa chỉ mới được sử dụng cùng với một đầu ra từ bất kỳ địa chỉ nào trong cụm, thì địa chỉ mới này cũng có thể được thêm vào cụm.

Trong Phần 6.4, chúng ta thảo luận về một kỹ thuật ẩn danh được gọi là “CoinJoin”, hoạt động bằng cách vi phạm giả định này. Nhưng hiện tại, nếu bạn giả sử rằng mọi người đang sử dụng phần mềm ví Bitcoin thông thường mà không có bất kỳ kỹ thuật ẩn danh đặc biệt nào, thì phương pháp liên kết địa chỉ bằng cách phân cụm này có xu hướng khá mạnh mẽ. Chúng ta vẫn chưa biết cách liên kết các cụm này với danh tính trong thế giới thực, nhưng chúng ta sẽ sớm làm được điều đó.

Thay đổi ngẫu nhiên địa chỉ

Phiên bản đầu tiên của thư viện Bitcoin-Qt (hiện được gọi là Bitcoin Core) có một lỗi luôn đặt địa chỉ thay đổi làm đầu ra đầu tiên trong giao dịch có hai đầu ra. Do đó, việc xác định địa chỉ thay đổi trong nhiều giao dịch là rất nhỏ. Lỗi này đã được sửa vào năm 2012, nhưng nó làm nổi bật một điểm quan trọng: phần mềm ví có một vai trò quan trọng trong việc bảo vệ ẩn danh. Nếu bạn đang phát triển phần mềm ví, có rất nhiều cạm bẫy bạn nên biết; Đặc biệt, bạn nên chọn vị trí thay đổi địa chỉ một cách ngẫu nhiên để tránh cho kẻ thù quá nhiều!

HÌNH 6.3. Thay đổi địa chỉ.

HÌNH 6.3. Thay đổi địa chỉ. Để trả tiền cho ấm trà, Alice phải tạo một giao dịch với một đầu ra sẽ đến tay người bán và một đầu ra khác gửi lại tiền lẻ cho chính mình.

Quay trở lại ví dụ của chúng ta, giả sử giá của ấm trà đã tăng từ 8 BTC lên 8,5 BTC. Alice không còn có thể tìm thấy một tập hợp các kết quả đầu ra chưa sử dụng mà cô ấy có thể kết hợp để tạo ra thay đổi chính xác cần thiết cho ấm trà. Thay vào đó, cô ấy khai thác thực tế rằng các giao dịch có thể có nhiều đầu ra, như trong Hình 6.3. Một trong những kết quả đầu ra là địa chỉ thanh toán của cửa hàng và đầu ra kia là địa chỉ “thay đổi” do Alice sở hữu.

Bây giờ hãy xem xét giao dịch này từ quan điểm của một đối thủ. Họ có thể suy ra rằng hai địa chỉ đầu vào thuộc về cùng một người dùng. Họ có thể nghi ngờ thêm rằng một trong các địa chỉ đầu ra cũng thuộc về cùng một người dùng đó, nhưng họ không có cách nào để xác định đó là địa chỉ nào. Chỉ vì đầu ra 0,5 nhỏ hơn không có nghĩa là đó là địa chỉ thay đổi. Alice có thể có 10.000 BTC trong một giao dịch và cô ấy có thể chi 8,5 BTC vào ấm trà và gửi lại 9.991,5 BTC còn lại cho chính mình. Trong trường hợp đó, đầu ra lớn hơn trên thực tế là địa chỉ thay đổi.

Một dự đoán tốt hơn một chút là nếu ấm trà chỉ có giá 0,5 BTC, thì Alice sẽ không phải tạo một giao dịch với hai đầu vào khác nhau, vì đầu vào 3 BTC hoặc 6 BTC đã đủ. Nhưng hiệu quả của loại heuristic này phụ thuộc hoàn toàn vào chi tiết triển khai của phần mềm ví thường được sử dụng. Không có gì ngăn cản các ví (hoặc người dùng) kết hợp các giao dịch ngay cả khi không thực sự cần thiết.

Thành ngữ sử dụng

Chi tiết triển khai của loại này được gọi là thành ngữ sử dụng (idioms of use). Vào năm 2013, một nhóm các nhà nghiên cứu do Sarah Meiklejohn dẫn đầu đã tìm thấy một thành ngữ sử dụng đúng với hầu hết các phần mềm ví và dẫn đến một phương pháp heuristic mạnh mẽ để xác định các địa chỉ thay đổi. Cụ thể, họ phát hiện ra rằng ví thường tạo một địa chỉ mới khi yêu cầu thay đổi địa chỉ. Do cách sử dụng thành ngữ này, các địa chỉ thay đổi thường là các địa chỉ chưa từng xuất hiện trước đây trong chuỗi khối. Ngược lại, đầu ra nonchange thường không phải là địa chỉ mới và có thể đã xuất hiện trước đó trong chuỗi khối. Kẻ thù có thể sử dụng kiến thức này để phân biệt các địa chỉ thay đổi và liên kết chúng với các địa chỉ đầu vào.

Khai thác thành ngữ sử dụng có thể dễ mắc lỗi. Thực tế là địa chỉ thay đổi là địa chỉ mới chỉ xảy ra là một tính năng của phần mềm ví. Nó đã đúng vào năm 2013 khi các nhà nghiên cứu thử nghiệm nó. Có thể nó vẫn đúng, nhưng cũng có thể không. Người dùng có thể chọn ghi đè hành vi mặc định này. Quan trọng nhất, một người dùng nhận thức được kỹ thuật này có thể dễ dàng tránh khỏi nó. Thậm chí vào năm 2013, các nhà nghiên cứu đã phát hiện ra rằng nó tạo ra nhiều kết quả khẳng định giả, trong đó kỹ thuật này tập hợp các địa chỉ lại với nhau mà không thực sự thuộc về cùng một thực thể. Họ báo cáo rằng phương pháp này cần sự giám sát và can thiệp thủ công đáng kể để loại bỏ những khẳng định giả này.

Gắn các nhận dạng trong thế giới thực vào các cụm

Hình 6.4 cho thấy cách Meiklejohn et al. phân nhóm các địa chỉ Bitcoin bằng cách sử dụng các thành ngữ sử dụng cơ bản làm phương pháp heuristics. Nhưng biểu đồ không được gắn nhãn—danh tính chưa được gắn vào các cụm.

Chúng ta có thể đưa ra một số phỏng đoán có học thức dựa trên những gì chúng ta biết về nền kinh tế Bitcoin. Trở lại năm 2013, Mt. Gox là sàn giao dịch Bitcoin lớn nhất, vì vậy chúng ta có thể đoán rằng vòng tròn lấp đầy lớn nhất đại diện cho các địa chỉ do họ kiểm soát. Chúng ta cũng có thể nhận thấy rằng cụm nhỏ bên trái có một khối lượng nhỏ (được biểu thị bằng vòng tròn nhỏ được lấp đầy) bằng bitcoin, mặc dù có số lượng giao dịch lớn nhất. Điều này phù hợp với mô hình của dịch vụ cờ bạc Satoshi Dice, một trò chơi phổ biến mà bạn gửi tiền cược nhỏ bằng bitcoin. Nhìn chung, đây không phải là một cách tuyệt vời để xác định các cụm. Nó yêu cầu kiến thức và phỏng đoán và sẽ chỉ hoạt động cho các dịch vụ nổi bật nhất.

HÌNH 6.4. Phân cụm địa chỉ.

HÌNH 6.4. Phân cụm địa chỉ. Trong bài báo năm 2013 “Nắm giữ Bitcoin: Đặc trưng các khoản thanh toán giữa những người đàn ông không có tên”, Meiklejohn et al. đã kết hợp phương pháp phân tích chi tiêu được chia sẻ và phương pháp phân tích địa chỉ thay đổi mới để phân cụm các địa chỉ Bitcoin. Kích thước của các vòng tròn này đại diện cho lượng tiền chảy vào các cụm đó và mỗi cạnh đại diện cho một giao dịch.

Gắn thẻ bằng cách giao dịch

Điều gì về việc chỉ cần truy cập trang web của mỗi sàn giao dịch hoặc người bán và tìm kiếm địa chỉ họ quảng cáo để nhận bitcoin? Tuy nhiên, điều đó không hoàn toàn hiệu quả vì hầu hết các dịch vụ sẽ quảng cáo một địa chỉ mới cho mọi giao dịch và địa chỉ được hiển thị cho bạn vẫn chưa có trong chuỗi khối. Bạn cũng không cần phải chờ đợi vì địa chỉ đó sẽ không bao giờ được hiển thị cho bất kỳ ai khác.

Cách duy nhất để suy ra địa chỉ một cách đáng tin cậy là thực sự giao dịch với nhà cung cấp dịch vụ đó—gửi bitcoin, mua một mặt hàng, v.v. Khi bạn gửi bitcoin đến hoặc nhận bitcoin từ nhà cung cấp dịch vụ, sau đó bạn sẽ biết một trong các địa chỉ của họ, địa chỉ này sẽ sớm kết thúc trong chuỗi khối (và ở một trong các cụm). Sau đó, bạn có thể gắn thẻ toàn bộ cụm đó với danh tính của nhà cung cấp dịch vụ.

Đây chính xác là những gì mà các nhà nghiên cứu “Nắm giữ Bitcoin” (và những người khác kể từ đó) đã làm. Họ đã mua nhiều thứ, tham gia các nhóm khai thác, sử dụng các sàn giao dịch Bitcoin, dịch vụ ví và các trang web cờ bạc, và tương tác theo nhiều cách khác nhau với các nhà cung cấp dịch vụ, thực hiện 344 giao dịch.

Trong Hình 6.5, chúng ta lại hiển thị các cụm của Hình 6.4, nhưng lần này với các nhãn được đính kèm. Các phỏng đoán của chúng ta về Mt. Gox và Satoshi Dice là đúng, nhưng các nhà nghiên cứu có thể xác định được nhiều nhà cung cấp dịch vụ khác mà sẽ khó xác định nếu không giao dịch với họ.

HÌNH 6.5. Các cụm được gắn nhãn.

HÌNH 6.5. Các cụm được gắn nhãn. Bằng cách giao dịch với các nhà cung cấp dịch vụ Bitcoin khác nhau, Meiklejohn et al. đã có thể gắn các danh tính trong thế giới thực vào các cụm của chúng.

Xác định cá nhân

Chúng ta có thể làm điều tương tự cho các cá nhân không? Đó là, liệu chúng ta có thể kết nối các cụm nhỏ tương ứng với các cá nhân với danh tính ngoài đời thực của họ không?

Trực tiếp giao dịch. Bất kỳ ai giao dịch với một cá nhân—một người bán trực tuyến hoặc ngoại tuyến, một sàn giao dịch hoặc một người bạn chia hóa đơn bữa tối bằng Bitcoin—đều biết ít nhất một địa chỉ thuộc về cá nhân đó.

Thông qua các nhà cung cấp dịch vụ. Trong quá trình sử dụng Bitcoin trong một vài tháng hoặc vài năm, hầu hết người dùng cuối cùng sẽ tương tác với một sàn giao dịch hoặc nhà cung cấp dịch vụ tập trung khác. Các nhà cung cấp dịch vụ này thường yêu cầu người dùng cung cấp danh tính của họ—thường thì về mặt pháp lý họ bắt buộc phải có, như chúng ta thảo luận trong Chương 7. Nếu cơ quan thực thi pháp luật muốn xác định người dùng, họ có thể chuyển sang các nhà cung cấp dịch vụ này.

Bất cẩn. Mọi người thường đăng địa chỉ Bitcoin của họ trên các diễn đàn công khai. Một lý do phổ biến là yêu cầu đóng góp. Khi ai đó làm điều này, nó tạo ra một liên kết giữa danh tính của họ và một trong các địa chỉ của họ. Nếu họ không sử dụng các dịch vụ ẩn danh mà chúng ta thảo luận trong các phần sau, họ có nguy cơ bị vô hiệu hóa ẩn danh tất cả các giao dịch của họ.

Các cuộc tấn công vào quyền riêng tư trở nên hiệu quả hơn theo thời gian. Lịch sử cho thấy rằng các thuật toán hủy ẩn danh thường cải thiện theo thời gian khi dữ liệu được công bố công khai, khi nhiều nhà nghiên cứu nghiên cứu vấn đề và xác định các kỹ thuật tấn công mới. Bên cạnh đó, có nhiều thông tin bổ trợ hơn mà những kẻ tấn công có thể sử dụng để gắn danh tính vào các cụm. Đây là điều cần lo lắng nếu bạn quan tâm đến quyền riêng tư.

Các kỹ thuật hủy ẩn danh được kiểm tra cho đến nay đều dựa trên việc phân tích đồ thị của các giao dịch trong chuỗi khối. Chúng được gọi chung là phân tích đồ thị giao dịch.

Vô hiệu hóa ẩn danh lớp mạng

Một cách hoàn toàn khác mà người dùng có thể bị hủy ẩn danh không dựa vào biểu đồ giao dịch. Hãy nhớ lại rằng để đăng một giao dịch lên chuỗi khối, người ta thường truyền nó đến mạng ngang hàng của Bitcoin, nơi các tin nhắn được gửi đi không nhất thiết phải được ghi lại vĩnh viễn trong chuỗi khối.

Trong thuật ngữ mạng, chuỗi khối được gọi là lớp ứng dụng và mạng ngang hàng là lớp mạng. Việc hủy ẩn danh lớp mạng lần đầu tiên được Dan Kaminsky chỉ ra tại hội nghị Mũ đen năm 2011. Anh ấy nhận thấy rằng khi một nút tạo ra một giao dịch, nó sẽ kết nối với nhiều nút cùng một lúc và phát đi giao dịch đó. Nếu có đủ nhiều nút trên mạng thông đồng với nhau (hoặc được điều hành bởi cùng một đối thủ), họ có thể tìm ra nút đầu tiên để phát bất kỳ giao dịch nào. Có lẽ, đó sẽ là một nút được điều hành bởi người dùng đã tạo giao dịch. Sau đó, kẻ thù có thể liên kết giao dịch với địa chỉ IP của nút. Địa chỉ IP gần với danh tính trong thế giới thực; có nhiều cách để cố gắng làm lộ người đứng sau địa chỉ IP. Do đó, việc hủy ẩn danh lớp mạng là một vấn đề nghiêm trọng đối với quyền riêng tư (Hình 6.6).

HÌNH 6.6. Bỏ ẩn danh ở cấp độ mạng.

HÌNH 6.6. Bỏ ẩn danh ở cấp độ mạng. Như Dan Kaminsky đã chỉ ra trong bài nói chuyện về Black Hat năm 2011, “nút đầu tiên thông báo cho bạn về một giao dịch có thể là nguồn gốc của nó”. Heuristic này được khuếch đại khi nhiều nút hợp tác và xác định cùng một nguồn.

May mắn thay, vấn đề ẩn danh thông tin liên lạc này đã là chủ đề của nghiên cứu đáng kể. Như đã thảo luận trong Phần 6.1, hệ thống được triển khai rộng rãi được gọi là Tor có thể được sử dụng để giao tiếp ẩn danh.

Có một số lưu ý khi sử dụng Tor làm giải pháp ẩn danh tầng mạng cho Bitcoin. Đầu tiên, các tương tác tinh vi có thể xảy ra giữa giao thức Tor và bất kỳ giao thức nào được phủ lên nó, dẫn đến những cách mới để vi phạm tính ẩn danh. Thật vậy, các nhà nghiên cứu đã phát hiện ra các vấn đề bảo mật tiềm ẩn khi sử dụng Bitcoin-over-Tor, vì vậy điều này phải được thực hiện hết sức thận trọng. Thứ hai, các công nghệ giao tiếp ẩn danh khác có thể phù hợp hơn để sử dụng trong Bitcoin. Tor được thiết kế dành cho các hoạt động “độ trễ thấp”, chẳng hạn như duyệt web, nơi bạn không muốn ngồi chờ quá lâu. Nó thực hiện một số thỏa hiệp để đạt được sự ẩn danh với độ trễ thấp. Để so sánh, Bitcoin là một hệ thống có độ trễ cao, vì phải mất một thời gian để các giao dịch được xác nhận trong chuỗi khối. Về lý thuyết, ít nhất, bạn có thể muốn sử dụng một kỹ thuật ẩn danh thay thế như mix net (xem Phần 6.3), nhưng khi viết bài này, Tor có lợi thế là một hệ thống thực tế có cơ sở người dùng lớn và tính bảo mật đã được nghiên cứu kỹ lưỡng.

HÌNH 6.7. Sự pha trộn.

HÌNH 6.7. Sự pha trộn. Người dùng gửi tiền cho một bên trung gian và nhận lại tiền đã được gửi bởi những người dùng khác. Điều này làm cho việc theo dõi tiền của người dùng trên chuỗi khối trở nên khó khăn hơn.

Cho đến nay, chúng ta đã thấy rằng các địa chỉ khác nhau có thể được liên kết với nhau bằng phân tích đồ thị giao dịch và chúng cũng có thể được liên kết với danh tính trong thế giới thực. Chúng ta cũng đã thấy rằng một giao dịch hoặc địa chỉ có thể được liên kết với một địa chỉ IP dựa trên mạng ngang hàng. Vấn đề thứ hai tương đối dễ giải quyết, ngay cả khi nó chưa thể được coi là hoàn toàn giải quyết được. Vấn đề trước phức tạp hơn nhiều và phần còn lại của chương này đề cập đến các cách giải quyết nó.

Leave a Reply

Your email address will not be published. Required fields are marked *