Dấu vân tay ví điện tử phá hủy quyền riêng tư của Payjoin như thế nào?

Bài viết này được dịch máy
Xem bản gốc

Tác giả: Armin Sabouri

Nguồn: https://payjoin.org/blog/2026/03/25/wallet-fingerprints-payjoin-privacy/

Khi tạo một giao dịch, phần mềm ví điện tử đưa ra hàng tá quyết định nhỏ: sắp xếp các dữ liệu đầu vào, lựa chọn loại tiền tệ, ước tính phí giao dịch và mã hóa chữ ký; vân vân. Mẫu hình được tạo ra bởi những quyết định này được gọi là "dấu vân tay ví điện tử", nó thay đổi một cách có hệ thống giữa các triển khai phần mềm khác nhau, và do đó có thể được sử dụng để xác định phần mềm ví điện tử nguồn tạo ra giao dịch trên blockchain.

Một số dấu vân tay có tính xác định. Ví dụ, khi tạo chữ ký ECDSA, Bitcoin Core liên tục thử các số ngẫu nhiên khác nhau ("mài") để đảm bảo chữ ký cuối cùng có "giá trị r thấp" (dẫn đến chữ ký ngắn hơn). Do đó, nếu chữ ký dài 72 byte, Bitcoin Core có thể bị loại trừ ngay lập tức khỏi danh sách các tác nhân tạo ra chữ ký đó . Các dấu vân tay khác mang tính xác suất: tỷ lệ phí giao dịch từ các phần mềm ví khác nhau thể hiện các phân bố điển hình. Lỗi cũng có thể trở thành dấu vân tay. Mỗi lần bảo trì cung cấp bằng chứng độc lập, và những bằng chứng này, khi kết hợp lại, có thể rất có lợi. Ishaana Misra đã thực hiện một nghiên cứu toàn diện về dấu vân tay ví ( bản dịch tiếng Trung ).

Dấu vân tay ví có thể nâng cao hiệu quả của phân tích nhóm ví – phương pháp sử dụng các dấu hiệu hành vi để nhóm các đầu ra giao dịch (tiền) có liên quan. Để biết bối cảnh thông tin về phân tích nhóm, hãy xem bài đăng trên blog của Yuval Kogman ( bản dịch tiếng Trung ) kể về lịch sử của phân tích nhóm ví . Các nghiên cứu gần đây về việc sử dụng dấu vân tay ví để hỗ trợ phân tích dấu hiệu hiện có (chẳng hạn như nhận dạng đầu ra tiền thừa ) đã chứng minh những cải tiến đáng kể so với các phương pháp phỏng đoán thô. Kappos và cộng sự đã chứng minh rằng việc kết hợp dấu vân tay từ các giao dịch lân cận với phân tích số có thể cải thiện độ chính xác của phân tích nhóm; phương pháp này đã được xác thực bằng dữ liệu thực tế. Điều này trực tiếp đe dọa mô hình bảo mật của các giao dịch Payjoin: nó dựa trên việc không thể phân biệt giữa đầu vào của người gửi và người nhận. Dấu vân tay ví, có khả năng phân biệt nguồn đầu vào, mang lại khả năng phân tích nhóm mà Payjoin đã cố gắng phá vỡ.

(Ghi chú của người dịch: "heuristics" trong bài viết này được dịch là "phân tích manh mối" hoặc "phân tích theo phương pháp heuristic".)

Bài viết này sử dụng góc nhìn đó để quan sát các giao dịch payjoin thực tế.

Hai lớp liên kết

Về lý thuyết, các giao dịch payjoin dường như không khác gì các giao dịch một chiều thông thường. Các nhà phân tích sử dụng phương pháp phán đoán truyền thống có thể phân loại sai các giao dịch này, gộp đầu vào (tiền) của người gửi và người nhận vào cùng một nhóm. Do đó, bước đầu tiên trong việc nhận biết các giao dịch payjoin là phát hiện sự can thiệp của con người trong các giao dịch hợp tác này.

Công trình nghiên cứu của Simin Ghesmati và cộng sự đã chứng minh cách thức các điểm bất thường trong việc lựa chọn đầu vào (cụ thể là cách sắp xếp các đầu vào dư thừa) có thể được sử dụng để phát hiện các giao dịch payjoin và phân biệt chủ sở hữu của đầu vào và đầu ra. Nhận dạng dấu vân tay ví cung cấp một tín hiệu khác cho cùng nhiệm vụ này.

Nếu người gửi và người nhận sử dụng phần mềm ví khác nhau, dấu vân tay có thể tiết lộ đầu vào và đầu ra nào thuộc về ai. Sau khi suy đoán sự khác biệt về quyền sở hữu, phương pháp phân cụm "Nhận dạng Quyền sở hữu Đầu vào (CIOH)" tiêu chuẩn có thể được áp dụng cho đầu vào của mỗi người tham gia, do đó, từ góc độ phân tích, payjoin tương đương với một cặp giao dịch thông thường (thanh toán một chiều).

Tín hiệu vân tay của ví truyền tải thông tin ở hai cấp độ:

  • Trong một giao dịch duy nhất : Các tín hiệu này giúp phân biệt chủ sở hữu của các đầu vào và đầu ra khác nhau trong một giao dịch. Đầu ra nào là tiền thừa (trả lại cho người gửi), và đầu ra nào là tiền thanh toán (gửi cho người nhận)? Việc xác định chính xác đầu ra tiền thừa rất quan trọng vì nó liên kết giao dịch hiện tại của người gửi với giao dịch tiếp theo của họ. Dấu vân tay có thể tiết lộ điều này trực tiếp: do phần mềm ví điện tử mà người gửi sử dụng, các đầu ra tiền thừa có thể kế thừa các đặc điểm giống nhau (như với một đầu vào nhất định).
  • Giữa các giao dịch : Ý nghĩa của các tín hiệu hiển thị trên biểu đồ giao dịch:
    • Theo chiều ngược lại : Mỗi dữ liệu đầu vào được tạo ra từ một số giao dịch trước đó, có thể mang dấu ấn riêng biệt.
    • Tiến về phía trước : Mọi khoản đầu ra đều có thể được chi tiêu trong tương lai, và các giao dịch chi tiêu chúng cũng có thể mang dấu ấn riêng.

Do đó, mục tiêu của việc phân tích blockchain đối với giao dịch payjoin là:

  1. Đã phát hiện dấu vết của các giao dịch hợp tác.
  2. Sử dụng các tín hiệu trong giao dịch và tín hiệu giữa các giao dịch để xác định sự khác biệt giữa người gửi và người nhận.
  3. Áp dụng phân tích kinh nghiệm tiêu chuẩn cho các cụm đã được phân biệt.

Trường hợp 1: Samourai Payjoin

Giao dịch : 8dba6657...

Quan sát giá trị của từng trường trong giao dịch này, không có gì đáng ngờ. nSequence (giá trị số của trường) của hai đầu vào giống nhau, cả hai đều sử dụng loại khóa công khai P2WPKH và ngăn xếp dữ liệu chứng thực của chúng trông tương tự nhau. Tín hiệu đáng ngờ đến từ độ dài (số byte) của chữ ký.

Chữ ký mã hóa DER (ECDSA) cho đầu vào 0 là 71 byte (r thấp); chữ ký cho đầu vào 1 là 72 byte (r cao). Một ví thường xuyên thực hiện giao dịch sẽ chỉ tạo ra chữ ký r thấp; một ví không thực hiện giao dịch sẽ chỉ tạo ra chữ ký r thấp với xác suất 50%. Do đó, sự hiện diện của cặp chữ ký r thấp/r cao trong một giao dịch không phải là bằng chứng mạnh mẽ về sự hợp tác. Tuy nhiên, nếu một trong đó các đầu vào đến từ một cụm ví luôn thực hiện giao dịch, và lần nó xuất hiện cùng với một đầu vào r cao, thì xác suất chúng thuộc về hai cụm ví khác nhau sẽ cao hơn nhiều.

Sử dụng tính bất đối xứng của chữ ký làm yếu tố phân biệt tiềm năng: Người tham gia A có lượng tiền đầu vào r thấp, và người tham gia B có lượng tiền đầu vào r cao; người trước có mệnh giá 50.000 satoshi, và người sau có 3.999.216 satoshi. Chúng ta có thể kiểm tra hai kịch bản đầu ra khả thi:

Trường hợp 1 : Đầu ra 0 (9752 Satoshi) thuộc về A, và đầu ra 1 (403 9216 Satoshi) thuộc về B.

  • Người tham gia A: 50.000 người vào, 9.752 người ra; dòng tiền ròng chảy ra là 40.248 người.
  • Người tham gia B: 399.9216 lượt vào, 403.9216 lượt ra; dòng tiền ròng vào là 40.000.
  • Ý nghĩa: A đã trả cho B 40.000 satoshi (248 satoshi còn lại là phí giao dịch).

Trường hợp 2 : Đầu ra 0 (9752 satoshi) thuộc về B, và đầu ra 1 (403 9216 satoshi) thuộc về A.

  • Người tham gia A: 50.000 vào, 4.039.216 ra; dòng tiền ròng vào khoảng 4 triệu satoshi.
  • Người tham gia B: 399.9216 lượt vào, 9.752 lượt ra; dòng tiền ròng chảy ra là 398.9464.
  • Ý nghĩa: A đã trả cho B 40.000 satoshi (248 satoshi còn lại là phí giao dịch).

Kịch bản 1 có nghĩa là khoản thanh toán chính xác là 40.000 satoshi; Kịch bản 2 có nghĩa là 3.989.216 satoshi. Thuật toán phán đoán số nguyên có xu hướng ưu tiên Kịch bản 1. Các giao dịch chi tiêu tiếp theo củng cố kết luận này: đầu ra 0 cũng được chi tiêu với chữ ký r thấp (phù hợp với đầu vào của A trong giao dịch này); đầu ra 1 cũng được chi tiêu với chữ ký r cao (phù hợp với đầu vào của B trong giao dịch này).

Như vậy, hệ thống Payjoin đã bị bãi bỏ: sự phân biệt quyền sở hữu giữa đầu vào và đầu ra được suy đoán, và số tiền thanh toán được xác định.

Trường hợp 2: Bản demo PDK Payjoin

Giao dịch : 3c5436f1...

Cả hai đầu vào đều sử dụng chi phí đường dẫn khóa P2TR. Theo quy tắc chi phí Taproot trên P2TR , nhãn sighash mặc định là SIGHASH_ALL , và byte sighash này có thể được bỏ qua. Bỏ qua nó là hình thức chính thống, nhưng không bỏ qua nó cũng hợp lệ cho sự đồng thuận. Dữ liệu chứng thực cho đầu vào 0 là 64 byte — nó bỏ qua byte sighash. Nhưng dữ liệu chứng thực cho đầu vào 1 là 65 byte0x01 xuất hiện (byte chỉ rõ SIGHASH_ALL ). Sự xuất hiện của byte này thường là lỗi triển khai, không phải là cố ý.

Hai dữ liệu đầu vào từ cùng một ví (sử dụng cùng một phần mềm ví) cần sử dụng chiến lược sighash nhất quán. Sự không nhất quán này phân biệt hai dữ liệu đầu vào: người tham gia A giữ dữ liệu đầu vào mà không có byte sighash; người tham gia B giữ dữ liệu đầu ra với các byte sighash được chỉ định rõ ràng.

Khác với Trường hợp 1, trong trường hợp này, các manh mối bằng số không thể phân biệt được chủ sở hữu của kết quả đầu ra. Hai kịch bản xác định chủ sở hữu này tương đương nhau về mặt ngữ nghĩa:

Trường hợp 1 : Đầu ra 0 (59014 Satoshi) thuộc về A, và đầu ra 1 (864506 Satoshi) thuộc về B.

  • Người tham gia A: 51.514 lượt vào, 59.014 lượt ra; dòng tiền ròng vào là 7.500.
  • Người tham gia B: 87.2224 lượt vào, 86.4506 lượt ra; dòng tiền ròng chảy ra là 7.718.
  • Ý nghĩa: B đã trả cho A 7500 satoshi (218 satoshi còn lại là phí giao dịch).

Trường hợp 2 : Đầu ra 0 (59014 Satoshi) thuộc về B, và đầu ra 1 (864506 Satoshi) thuộc về A.

  • Người tham gia A: 51.514 lượt vào, 864.506 lượt ra; dòng tiền ròng vào là 812.992.
  • Người tham gia B: 87.2224 lượt vào, 5.9014 lượt ra; dòng tiền ròng chảy ra là 813.210.
  • Ý nghĩa: B đã trả cho A 812.992 satoshi (218 satoshi còn lại là phí giao dịch).

Các manh mối số nguyên thường nghiêng về kịch bản 1, nhưng cách tiếp cận này không hoàn toàn chính xác. Chúng tôi khá chắc chắn đây là một giao dịch được dàn dựng bên long do sự hiện diện của dấu vân tay ví; tuy nhiên, sự phân biệt quyền sở hữu vẫn chưa chắc chắn. Sự không nhất quán trong cách xử lý của Sighash là một lỗ hổng tiềm tàng, nhưng chỉ có vậy thôi.

Tuy nhiên, sau đó, giao dịch chi phí của đầu ra thứ hai lại chứa các byte chỉ rõ SIGHASH_ALL , phù hợp với đầu vào thứ hai trong giao dịch này. Điều này cho thấy mạnh mẽ rằng đầu ra thứ hai và đầu vào thứ hai thuộc cùng một giao dịch, khiến kịch bản 1 trở nên có khả năng xảy ra hơn.

Trường hợp 3: Ví Cake → Bull Bitcoin Mobile Payjoin

Giao dịch : 8fb80573...

Điều đầu tiên gây chú ý là cả hai đầu vào đều có giá trị 0x01 trong trường nSequence . Cake Wallet thiết lập khóa thời gian tương đối theo BIP-68, và Bull Bitcoin Mobile cũng khớp với giá trị này, vì vậy không có sự bất đối xứng trong giao dịch giữa hai đầu vào. Chữ ký cũng đồng nhất: cả hai đầu vào đều sử dụng chữ ký low-r và cùng một nhãn sighash. Chỉ dựa trên giao dịch này, việc phân tích dấu vân tay bị đình trệ.

Tuy nhiên, việc phân bổ nguồn vốn có thể tạo ra sự khác biệt. Có hai trường hợp như sau:

Trường hợp 1 : Đầu ra 0 (29358 Satoshi) thuộc về B, và đầu ra 1 (429919 Satoshi) thuộc về A.

  • Người tham gia A: 44.0337 người vào, 42.9919 người ra; dòng tiền ra ròng 10.418.
  • Người tham gia B: 19.538 người vào, 29.358 người ra; dòng chảy ròng ra là 10.000 người.
  • Ý nghĩa: A đã trả cho B 10.000 satoshi (418 satoshi còn lại là phí giao dịch).

Trường hợp 2 : Đầu ra 0 (29358 Satoshi) thuộc về A, và đầu ra 1 (429919 Satoshi) thuộc về B.

  • Người tham gia A: 440.337 lượt vào, 29.358 lượt ra; dòng tiền ròng chảy ra là 410.979.
  • Người tham gia B: 19.538 lượt vào, 429.919 lượt ra; dòng tiền ròng vào là 410.561.
  • Ý nghĩa: A đã trả cho B 410.561 satoshi (418 satoshi còn lại là phí giao dịch).

Giả định về số tiền thanh toán là số nguyên nghiêng hẳn về Trường hợp 1. Hơn nữa, số tiền người nhận nhập vào (19358 satoshi) ít hơn số tiền người gửi trả lại (429919 satoshi), phù hợp với giả định UIH2 (đầu vào dư thừa): người gửi thiếu mệnh giá phù hợp và do đó nhập vào một lượng lớn và tạo ra một khoản tiền trả lại lớn, trong khi số tiền của người nhận vừa đủ để trang trải số tiền thanh toán. Một điểm khác biệt có thể là: đầu ra 0 (29358 satoshi) là số tiền thanh toán, đầu vào 1 (19358 satoshi) là UTXO của người nhận, và đầu ra 1 (429919 satoshi) là tiền trả lại của người gửi.

Phân tích giao dịch chéo cũng hỗ trợ kết luận này. Giao dịch trước đó với đầu vào 0 có một đầu vào với giá trị nSequence là 0x01 , nhưng một đầu vào khác với giá trị nSequence là 0xfffffffd . Sự bất đối xứng này phân biệt các đầu vào của giao dịch này, cho phép chúng ta biết rằng đầu ra của nó, với giá trị thực là 44 0337, thuộc về người tham gia sử dụng giá trị nSequence là 0x01 ; đầu ra này, với tư cách là đầu vào 0, đi vào giao dịch payjoin mà chúng ta đang xem xét.

Hơn nữa, tất cả các đầu ra của các giao dịch trước đó đến đầu vào 1 chỉ sử dụng 0xfffffffd làm giá trị nSequence. Ngoài ra, giao dịch chi tiêu đầu ra 1 cũng đặt giá trị nSequence thành 0xfffffffd . Điều này phù hợp với hành vi điển hình trong Bull Bitcoin Mobile, do đó cung cấp bằng chứng mạnh mẽ rằng đầu ra 1 và đầu vào 1 thuộc cùng một ví.

 ┌──────────────────────────┐│ PRIOR TX (9ecd77...) ││ ││ in_0 [seq=1] ││ in_1 [seq=MAX-2] ││ ──────────────────────── ││ out_0: 204,326 ││ out_1: 440,337 ──────────────────┐└──────────────────────────┘ │ │ ┌──────────────────────────┐ │ │ PAYJOIN TX (8fb805...) │ │ │ ──────────────────────── │ └──►│ in_0 [seq=1] │ ┌──►│ in_1 [seq=1] │┌──────────────────────────┐ │ │ ──────────────────────── ││ PRIOR TX (3fbe17...) │ │ │ out_0: 29,358 ││ │ │ │ out_1: 429,919 ──────────────────┐│ in_0 [seq=MAX-2] │ │ └──────────────────────────┘ ││ in_1 [seq=MAX-2] │ │ ││ ──────────────────────── │ │ ││ out_0: 430,856 │ │ ┌──────────────────────────┐ ││ out_1: 19,358 ──────────────────┘ │ SUBSEQUENT TX (9232d5...)│ │└──────────────────────────┘ │ ──────────────────────── │ │ │ in_0 [seq=MAX-2] ◄───────────────┘ │ ... │ └──────────────────────────┘

Cả hai dấu vân tay đầu vào đều hiện diện liên tục trong biểu đồ giao dịch. Dấu vân 0x01 của Cake có thể được truy ngược lại giao dịch trước đó, trong khi 0xfffffffd của Bull Bitcoin Mobile có thể được truy ngược và tiến về phía trước. Giao dịch payjoin đơn lẻ này có thể không tiết lộ nhiều, nhưng mọi thứ sẽ trở nên rõ ràng hơn khi bạn xem xét các giao dịch liền kề.

tóm lại

Những quan sát này cho chúng ta biết rằng khả năng bảo vệ quyền riêng tư của Payjoin chỉ được duy trì nếu dấu vân tay ví của những người tham gia đồng nhất. Tính đồng nhất của dấu vân tay ở cấp độ giao dịch là cần thiết, nhưng chưa đủ. Sự khác biệt giữa người gửi và người nhận ở bất kỳ khía cạnh nào cũng có thể trở thành tín hiệu phân biệt họ. Công việc của nhà phân tích được đơn giản hóa thành việc tìm ra những khác biệt này trong các hành động của ví, và biểu đồ giao dịch cung cấp một số lượng quan sát khác nhau mà các nhà phân tích có thể sử dụng để tìm ra chúng.

Mặc dù một số dấu vân tay ví điện tử tương đối dễ xóa , nhưng một số khác lại gắn liền với các lựa chọn thiết kế và mục tiêu cụ thể của ví và không thể dễ dàng "sửa chữa". Các nhà phát triển ví điện tử nên nhận thức được các nguy cơ vi phạm quyền riêng tư tiềm ẩn khi tích hợp Payjoin vào phần mềm của họ.

Phân tích trong bài báo này tập trung vào các giao dịch payjoin riêng lẻ, nhưng phương pháp có thể được khái quát hóa. Sự phân bố dấu vân tay ví có thể trở thành một thuộc tính của một cụm; một cụm có dấu vân tay nhất quán đáng tin cậy hơn một cụm có các đặc điểm nội bộ không tương thích. Điều này chỉ ra một lớp rộng các cuộc tấn công vào quyền riêng tư của payjoin. Công việc trong tương lai sẽ phát triển một phân tích tự động, quy mô lớn sử dụng sự phân bố dấu vân tay để đánh giá độ tin cậy của các cụm. Chúng tôi đang phát triển một công cụ như vậy như một phần của khung chỉ báo quyền riêng tư của chúng tôi.

(qua)

Nguồn
Tuyên bố từ chối trách nhiệm: Nội dung trên chỉ là ý kiến của tác giả, không đại diện cho bất kỳ lập trường nào của Followin, không nhằm mục đích và sẽ không được hiểu hay hiểu là lời khuyên đầu tư từ Followin.
Thích
Thêm vào Yêu thích
Bình luận