Vitalik Buterin: Hướng dẫn chưa đầy đủ về địa chỉ ẩn
Tác giả gốc: Vitalik Buterin
Tổng hợp văn bản gốc: The Way of DeFi
Tác giả gốc: Vitalik Buterin
Tổng hợp văn bản gốc: The Way of DeFi
Một trong những thách thức lớn nhất còn lại trong hệ sinh thái Ethereum là quyền riêng tư. Theo mặc định, mọi thứ đi vào chuỗi khối công khai đều được công khai. Điều này ngày càng có nghĩa là không chỉ các giao dịch tiền và tài chính, mà cả tên ENS, POAP, NFT, mã thông báo soulbound, v.v. Trên thực tế, việc sử dụng toàn bộ bộ ứng dụng Ethereum liên quan đến việc phơi bày những phần quan trọng trong cuộc sống của bạn cho bất kỳ ai xem và phân tích.
Làm thế nào để cải thiện tình trạng này đã trở thành một vấn đề quan trọng, được nhiều người thừa nhận. Tuy nhiên, cho đến nay, các cuộc thảo luận về việc cải thiện quyền riêng tư chủ yếu xoay quanh một trường hợp sử dụng cụ thể: chuyển giao bảo vệ quyền riêng tư (thường là tự chuyển giao) ETH và mã thông báo ERC 20 chính thống. Bài đăng này sẽ mô tả cơ chế và các trường hợp sử dụng của một loại công cụ khác có thể cải thiện trạng thái quyền riêng tư của Ethereum trong nhiều bối cảnh khác: địa chỉ ẩn.
tiêu đề cấp đầu tiên
Hệ thống địa chỉ tàng hình là gì?

Giả sử Alice muốn cho Bob một tài sản. Đây có thể là một lượng tiền điện tử nhất định (ví dụ: 1 ETH, 500 RAI) hoặc có thể là NFT. Khi Bob nhận được tài sản, anh ấy không muốn cả thế giới biết rằng anh ấy đã nhận được nó. Không thể che giấu sự thật rằng một giao dịch đã xảy ra, đặc biệt nếu đó là một NFT chỉ có một bản sao trên chuỗi, nhưng có thể khả thi hơn nếu che giấu người nhận là ai. Alice và Bob cũng lười biếng: họ muốn có một hệ thống trong đó quy trình thanh toán giống hệt như ngày nay. Bob gửi cho Alice (hoặc đăng ký với ENS) một số loại "địa chỉ" mã hóa cách ai đó có thể trả tiền cho anh ta và chỉ riêng thông tin này là đủ để Alice (hoặc bất kỳ ai khác) gửi tài sản cho anh ta.
Lưu ý rằng điều này khác với quyền riêng tư được cung cấp bởi các công cụ như Tornado Cash. Tornado Cash có thể che giấu việc chuyển các tài sản có thể thay thế chính thống như ETH hoặc các mã thông báo ERC 20 chính (mặc dù nó dễ sử dụng nhất để gửi riêng cho chính bạn), nhưng nó rất yếu trong việc thêm quyền riêng tư vào các lần chuyển ERC 20 không xác định và không có cách nào để thêm quyền riêng tư cho chuyển NFT.
Quy trình làm việc chung cho các khoản thanh toán bằng tiền điện tử. Chúng tôi muốn tăng cường quyền riêng tư (không ai có thể biết chính Bob là người đã nhận nội dung), nhưng vẫn giữ nguyên quy trình làm việc.
Địa chỉ tàng hình cung cấp một giải pháp như vậy. Địa chỉ ẩn là địa chỉ có thể được tạo bởi Alice hoặc Bob, nhưng chỉ được kiểm soát bởi Bob. Bob tạo và giữ bí mật khóa chi tiêu, đồng thời sử dụng khóa đó để tạo địa chỉ meta ẩn. Anh ấy chuyển siêu địa chỉ này cho Alice (hoặc đăng ký trên ENS). Alice có thể thực hiện các phép tính trên siêu địa chỉ này để tạo ra một địa chỉ bí mật thuộc về Bob. Sau đó, cô ấy có thể gửi bất kỳ nội dung nào cô ấy muốn đến địa chỉ này và Bob sẽ có toàn quyền kiểm soát những nội dung đó. Cùng với việc chuyển tiền, cô ấy xuất bản một số dữ liệu được mã hóa bổ sung (khóa công khai tạm thời) trên chuỗi giúp Bob phát hiện ra rằng địa chỉ này thuộc về anh ta.

Một cách khác: Địa chỉ ẩn cung cấp các thuộc tính riêng tư giống như Bob, tạo địa chỉ mới cho mỗi giao dịch nhưng không yêu cầu bất kỳ tương tác nào từ Bob.
Toàn bộ quy trình làm việc của sơ đồ địa chỉ tàng hình như sau:
1. Bob tạo khóa chi tiêu gốc (m) và địa chỉ meta ẩn (M) của mình.
2. Bob thêm bản ghi ENS để đăng ký M làm địa chỉ meta ẩn cho bob.eth.
3. Giả sử Alice biết rằng Bob là bob.eth. Alice tra cứu siêu địa chỉ ẩn M của anh ấy trên ENS.
4. Alice tạo một khóa tạm thời mà chỉ cô ấy biết và cô ấy chỉ sử dụng một lần (tạo địa chỉ ẩn cụ thể này).
5. Alice sử dụng thuật toán kết hợp khóa tạm thời của cô ấy với địa chỉ meta của Bob để tạo địa chỉ ẩn. Bây giờ cô ấy có thể gửi tài sản đến địa chỉ này.
6. Alice cũng tạo khóa công khai tạm thời của mình và xuất bản nó lên cơ quan đăng ký khóa công khai tạm thời (điều này có thể được thực hiện trong cùng một giao dịch với giao dịch đầu tiên đã gửi tài sản đến địa chỉ ẩn).
7. Để Bob khám phá ra địa chỉ ẩn thuộc về mình, Bob cần quét sổ đăng ký khóa công khai tạm thời để tìm toàn bộ danh sách các khóa công khai tạm thời do bất kỳ ai cấp vì bất kỳ lý do gì kể từ lần quét cuối cùng.
Tất cả đều dựa trên hai cách sử dụng giả mạo mật khẩu. Đầu tiên, chúng ta cần một cặp thuật toán để tạo bí mật dùng chung: một thuật toán sử dụng điều bí mật của Alice (khóa tạm thời của cô ấy) và điều công khai của Bob (địa chỉ meta của anh ấy) và một thuật toán khác sử dụng điều bí mật của Bob (khóa chi tiêu gốc của anh ấy) ) và giao dịch công khai của Alice (khóa công khai tạm thời của cô ấy). Điều này có thể được thực hiện theo một số cách; trao đổi khóa Diffie-Hellman, một trong những thành quả đã tạo nên lĩnh vực mật mã hiện đại, thực hiện chính xác điều đó.
Nhưng chỉ riêng bí mật được chia sẻ là không đủ: nếu chúng ta chỉ tạo một khóa riêng tư từ bí mật được chia sẻ, thì cả Alice và Bob đều có thể chi tiêu từ địa chỉ này. Chúng ta có thể dừng lại ở đó và yêu cầu Bob chuyển tiền đến địa chỉ mới, nhưng điều đó sẽ không hiệu quả và làm giảm tính bảo mật một cách không cần thiết. Vì vậy, chúng tôi cũng đã thêm một cơ chế ẩn khóa: một cặp thuật toán, Bob có thể kết hợp bí mật dùng chung với khóa chi tiêu gốc của mình, Alice có thể kết hợp bí mật dùng chung với địa chỉ meta của Bob, để Alice có thể tạo địa chỉ ẩn và Bob có thể tạo một sử dụng khóa cho địa chỉ tàng hình đó mà không cần tạo liên kết công khai giữa địa chỉ ẩn và địa chỉ meta của Bob (hoặc giữa địa chỉ ẩn này với địa chỉ ẩn khác).
tiêu đề cấp đầu tiên
Địa chỉ tàng hình sử dụng mật mã đường cong elip
Địa chỉ ẩn sử dụng mật mã đường cong elip được Peter Todd giới thiệu lần đầu tiên vào năm 2014 trong bối cảnh Bitcoin. Kỹ thuật này hoạt động như sau (điều này giả định kiến thức trước về mật mã đường cong elip cơ bản; xem tại đây, tại đây và tại đây để biết một số hướng dẫn):
• Bob tạo khóa bí mật m và tính toán M = G * m, trong đó G là điểm tạo đường cong elip được hai bên thống nhất. Địa chỉ meta vô hình là mã hóa của M.
• Alice tạo khóa tạm thời r và xuất bản khóa công khai tạm thời R = G * r.
• Alice có thể tính toán một bí mật chung S = M * r, và Bob có thể tính toán cùng một bí mật chia sẻ S = m * R.
• Để tính khóa riêng cho địa chỉ này, Bob (và một mình Bob) có thể tính p = m + hash(S) đáp ứng tất cả các yêu cầu của chúng tôi ở trên và rất đơn giản!
Ngày nay, thậm chí còn có một EIP cố gắng xác định tiêu chuẩn địa chỉ ẩn cho Ethereum, vừa hỗ trợ phương pháp này vừa tạo điều kiện cho người dùng phát triển các phương pháp khác (ví dụ: cho phép Bob có các khóa xem và chi tiêu riêng biệt hoặc sử dụng các loại mật mã khác nhau để đạt được lượng tử- an ninh kháng chiến). Bây giờ bạn có thể nghĩ: Địa chỉ ẩn không khó, lý thuyết là vững chắc, việc áp dụng chỉ là một chi tiết triển khai. Tuy nhiên, vấn đề là việc triển khai thực sự hiệu quả cần phải trải qua một số chi tiết triển khai khá lớn.
tiêu đề cấp đầu tiên
Địa chỉ ẩn và thanh toán phí giao dịch
Giả sử ai đó gửi cho bạn một NFT. Lưu ý đến quyền riêng tư của bạn, họ gửi nó đến một địa chỉ bí mật mà bạn kiểm soát. Ví của bạn sẽ tự động khám phá địa chỉ này sau khi quét khóa công khai ephem trên chuỗi. Giờ đây, bạn có thể tự do chứng minh quyền sở hữu NFT này hoặc chuyển nhượng nó cho người khác. Nhưng có một vấn đề! Tài khoản có 0 ETH nên không thể thanh toán phí giao dịch. Ngay cả những người trả tiền mã thông báo ERC-4337 cũng sẽ không hoạt động vì chúng chỉ hoạt động với mã thông báo ERC 20 có thể thay thế được. Và bạn không thể gửi ETH đến nó từ ví chính của mình, vì sau đó bạn tạo một liên kết hiển thị công khai.
Có một cách "dễ dàng" để giải quyết vấn đề này: chỉ cần sử dụng ZK-SNARK để chuyển tiền để trả phí! Nhưng điều này sẽ tiêu tốn rất nhiều gas, và một lần chuyển sẽ tốn hàng trăm nghìn gas.
Một cách tiếp cận thông minh khác liên quan đến việc tin tưởng các công cụ tổng hợp giao dịch chuyên biệt (“người tìm kiếm” trong biệt ngữ MEV). Các công cụ tổng hợp này sẽ cho phép người dùng thanh toán một lần để mua một bộ "vé" có thể được sử dụng để thanh toán cho các giao dịch trên chuỗi. Khi người dùng cần sử dụng NFT trong một địa chỉ ẩn không chứa gì khác, họ sẽ cung cấp cho người tổng hợp một trong các vé của họ, được mã hóa bằng cách sử dụng sơ đồ làm mù Chaumian. Đây là giao thức ban đầu được sử dụng trong các đề xuất tiền điện tử bảo vệ quyền riêng tư tập trung được đề xuất vào những năm 1980 và 1990. Người tìm kiếm chấp nhận "vé" và liên tục đưa giao dịch vào gói của họ miễn phí cho đến khi giao dịch được chấp nhận thành công trong một khối. Vì số tiền liên quan là nhỏ và chỉ có thể được sử dụng để thanh toán phí giao dịch, nên các vấn đề về niềm tin và quy định thấp hơn nhiều so với việc triển khai "đầy đủ" tiền điện tử bảo vệ quyền riêng tư tập trung như vậy.
tiêu đề cấp đầu tiên
Địa chỉ ẩn và các khóa xem và chi tiêu riêng biệt
Giả sử thay vì chỉ có một "khóa chi tiêu gốc" chính làm mọi thứ, Bob muốn có một khóa chi tiêu gốc và khóa xem riêng biệt. Nhìn vào chìa khóa có thể thấy tất cả các địa chỉ ẩn của Bob, nhưng không thể chi tiêu từ chúng.
Trong thế giới đường cong elip, điều này có thể được giải quyết bằng một thủ thuật mã hóa rất đơn giản:
• Siêu địa chỉ M của Bob hiện có dạng (K, V), được mã hóa thành G * k và G * v, trong đó k là khóa chi tiêu và v là khóa xem.
• Bí mật được chia sẻ bây giờ là S = V * r = v * R, trong đó r vẫn là khóa tạm thời của Alice và R vẫn là khóa công khai tạm thời của Alice.
• Khóa chung của địa chỉ ẩn là P = K + G * hash(S), và khóa riêng là p = k + hash(S).
Lưu ý rằng bước mã hóa thông minh đầu tiên (tạo bí mật dùng chung) sử dụng khóa xem và bước mã hóa thông minh thứ hai (thuật toán song song của Alice và Bob tạo địa chỉ ẩn và khóa riêng của nó) sử dụng khóa chi tiêu gốc.
Điều này có nhiều trường hợp sử dụng. Ví dụ: nếu Bob muốn nhận POAP, thì Bob có thể cung cấp ví POAP của mình (hoặc thậm chí là giao diện web kém an toàn hơn) khóa xem của anh ấy để quét chuỗi và xem tất cả POAP của anh ấy mà không cần cung cấp cho giao diện Chi tiêu các quyền hạn POAP đó.
Để quét dễ dàng hơn toàn bộ tập hợp các khóa công khai tạm thời, một kỹ thuật là thêm thẻ xem vào từng khóa công khai tạm thời. Một cách để thực hiện điều này trong cơ chế trên là đặt nhãn chế độ xem thành byte bí mật được chia sẻ (ví dụ: tọa độ x của S modulo 256 hoặc byte đầu tiên của hàm băm (S)).
Bằng cách này, Bob chỉ cần thực hiện một phép nhân đường cong elip cho mỗi khóa công khai tạm thời để tính toán bí mật dùng chung và chỉ bằng 1/256 thời gian mà Bob cần thực hiện phép tính phức tạp hơn để tạo và kiểm tra địa chỉ đầy đủ.
tiêu đề cấp đầu tiên
Địa chỉ tàng hình và bảo mật kháng lượng tử
Sơ đồ trên dựa trên các đường cong elip, điều này tốt, nhưng không may là dễ bị máy tính lượng tử tấn công. Nếu máy tính lượng tử trở thành vấn đề, chúng ta sẽ cần chuyển sang thuật toán kháng lượng tử. Có hai ứng cử viên tự nhiên: tương đồng đường cong elip và lưới.

Tương đồng đường cong elliptic là một cấu trúc toán học rất khác dựa trên các đường cong elliptic có các thuộc tính tuyến tính cho phép chúng ta sử dụng các thủ thuật mã hóa tương tự như những gì chúng ta đã làm ở trên, nhưng tránh một cách gọn gàng cấu trúc có thể dễ bị tấn công bởi các máy tính lượng tử logarit rời rạc Một nhóm các cuộc tấn công theo chu kỳ .
Điểm yếu chính của mật mã dựa trên danh tính là toán học cơ bản rất phức tạp của nó và nguy cơ tấn công có thể xảy ra ẩn dưới sự phức tạp này. Trong năm ngoái, một số giao thức dựa trên đồng nhất đã bị xâm phạm, nhưng những giao thức khác vẫn an toàn. Ưu điểm chính của tương đồng là kích thước khóa tương đối nhỏ và khả năng chuyển trực tiếp sang nhiều phương pháp dựa trên đường cong elip.

3 tương đồng trong CSIDH, nguồn tại đây.
Mạng là một cấu trúc mật mã rất khác, dựa trên toán học đơn giản hơn nhiều so với đẳng cấu đường cong elip và có thể thực hiện một số việc rất mạnh mẽ (chẳng hạn như mã hóa đồng cấu hoàn toàn (FHE)). Các sơ đồ địa chỉ tàng hình có thể được xây dựng trên các mạng, mặc dù việc thiết kế sơ đồ tốt nhất là một vấn đề mở. Tuy nhiên, cấu trúc dựa trên lưới có xu hướng có kích thước khóa lớn hơn.
Mã hóa đồng cấu hoàn toàn, là một ứng dụng của mạng tinh thể. FHE cũng có thể được sử dụng để hỗ trợ giao thức địa chỉ ẩn theo một cách khác: giúp Bob thuê ngoài việc tính toán địa chỉ ẩn để kiểm tra xem toàn bộ chuỗi có chứa nội dung hay không mà không tiết lộ khóa xem của anh ấy.
Cách tiếp cận thứ ba là xây dựng các lược đồ địa chỉ tàng hình từ các nguyên mẫu hộp đen chung: các thành phần cơ bản mà nhiều người cần vì những lý do khác. Phần tạo bí mật được chia sẻ của sơ đồ ánh xạ trực tiếp tới trao đổi khóa, đây là một thành phần quan trọng trong các hệ thống mã hóa khóa công khai. Phần khó hơn là thuật toán song song để Alice chỉ tạo địa chỉ ẩn (không phải khóa chi tiêu) và Bob tạo khóa chi tiêu.

Thật không may, bạn không thể xây dựng một địa chỉ ẩn bằng cách sử dụng các thành phần đơn giản hơn những gì bạn cần để xây dựng một hệ thống mật mã khóa công khai. Có một bằng chứng đơn giản: bạn có thể xây dựng một hệ thống mã hóa khóa công khai với sơ đồ địa chỉ bí mật. Nếu Alice muốn mã hóa một tin nhắn cho Bob, cô ấy có thể gửi N giao dịch, mỗi giao dịch được gửi tới một trong các địa chỉ ẩn của Bob hoặc tới một trong các địa chỉ ẩn của chính cô ấy và Bob có thể xem những giao dịch nào anh ấy đã nhận để đọc Nhận tin tức . Điều này rất quan trọng vì có bằng chứng toán học rằng bạn không thể thực hiện mã hóa khóa công khai chỉ bằng các hàm băm và bạn có thể thực hiện bằng chứng không có kiến thức chỉ bằng các hàm băm -- và do đó, không thể thực hiện các địa chỉ ẩn chỉ bằng các hàm băm.
Mã hóa của c không cho Bob biết gì về bất kỳ ai khác và k là một hàm băm, vì vậy nó hầu như không tiết lộ gì về c. Bản thân mã ví chỉ chứa k và c là riêng tư, nghĩa là không thể truy nguyên k về h.
Tuy nhiên, điều này yêu cầu một STARK và các STARK rất lớn. Cuối cùng, tôi nghĩ rằng một thế giới Ethereum hậu lượng tử có thể sẽ liên quan đến nhiều ứng dụng sử dụng nhiều Stark, vì vậy tôi ủng hộ một giao thức tổng hợp giống như giao thức được mô tả ở đây để kết hợp tất cả các Stark này thành một Stark đệ quy để tiết kiệm dung lượng.
tiêu đề cấp đầu tiên
Địa chỉ ẩn và phục hồi xã hội và ví đa L2
Tôi đã yêu thích ví khôi phục mạng xã hội trong một thời gian dài: ví có cơ chế đa chữ ký có khóa được chia sẻ giữa các tổ chức, thiết bị khác và bạn bè của bạn, một số trong số đó có thể được khôi phục rất nhiều khi truy cập vào tài khoản của bạn trừ khi bạn làm mất chìa khóa chính của bạn.
Tuy nhiên, ví khôi phục xã hội không kết hợp tốt với các địa chỉ ẩn: nếu bạn phải khôi phục tài khoản của mình (nghĩa là thay đổi khóa riêng kiểm soát nó), bạn cũng phải thực hiện một số bước để thay đổi xác minh tài khoản của N ví ẩn Theo logic, điều này sẽ yêu cầu N giao dịch, với chi phí cao, sự thuận tiện và chi phí riêng tư.
Có những mối quan tâm tương tự với phục hồi xã hội và sự tương tác giữa các thế giới của nhiều giao thức lớp 2: nếu bạn có tài khoản tại Optimism, Arbitrum, Starknet, Scroll, Polygon và có thể một số trong số các bản tổng hợp đó có hàng tá tài khoản song song vì các lý do mở rộng quy mô, và bạn có một tài khoản trên mỗi phiên bản, việc thay đổi khóa có thể là một thao tác rất phức tạp.
Thay đổi khóa của nhiều tài khoản trong nhiều chuỗi là một khối lượng công việc khổng lồ.
Điều này cho phép nhiều tài khoản, thậm chí trên nhiều giao thức lớp 2, được kiểm soát bởi một giá trị k duy nhất ở đâu đó (trên chuỗi cơ sở hoặc một số lớp 2), trong đó việc thay đổi một giá trị là đủ để thay đổi quyền sở hữu của tất cả các tài khoản mà không cần thay đổi. tiết lộ liên kết giữa các tài khoản của bạn.
Tóm lại là
tiêu đề cấp đầu tiên
Tóm lại là


