Điều Vitalik mong đợi ở một ví Web3
Coin98 Insights dịch lại bài viết của Vitalik Buterin, bài viết gốc được đăng tải đầu tháng 12/2024 trên blog cá nhân của Co-Founder Ethereum.
Một trong những mảnh ghép cơ sở hạ tầng quan trọng nhất của Ethereum là ví crypto (crypto wallet), nhưng mảnh ghép này đang bị phớt lờ bởi các researcher và developer.
Ví crypto là cánh cửa để kết nối giữa người dùng và thế giới Ethereum, và người dùng chỉ có thể trải nghiệm những lợi ích tuyệt vời của Ethereum (như tính phi tập trung, chống kiểm duyệt, bảo mật, riêng tư…) nếu các ví crypto cũng được trang bị những tính năng như vậy.
Gần đây, chúng ta đã thấy nhiều tiến triển trong việc cải thiện trải nghiệm người dùng, sự bảo mật và chức năng của các ví Ethereum. Mục đích của bài viết này là đưa ra góc nhìn của tôi về những tính năng mà một ví Ethereum lý tưởng nên có.
Những tính năng mà tôi liệt kê sau đây không phải là danh sách đầy đủ; chúng chỉ phản ánh góc nhìn của tôi về một xã hội ảo (cypherpunk) tập trung vào sự bảo mật và riêng tư.
Trải nghiệm người dùng trong các giao dịch cross-L2
Chúng ta đang có những roadmap ngày càng chi tiết về cải thiện trải nghiệm giao dịch xuyên Layer 2 (cross-L2), gồm phần ngắn hạn và phần dài hạn. Ở đây tôi sẽ nói về phần ngắn hạn: những ý tưởng đã có thể áp dụng được ngay từ hôm nay (trên lý thuyết là thế).
Ý tưởng cốt lõi là (1) tích hợp sẵn tính năng gửi tiền cross-chain Layer 2 và (2) địa chỉ và yêu cầu thanh toán cụ thể cho từng chain (chain-specific addresses and payment requests). Ví crypto của bạn sẽ có thể cung cấp cho bạn một địa chỉ có dạng như sau (theo đề xuất của dự thảo ERC này):
Khi ai đó (hoặc một ứng dụng nào đó) cung cấp cho bạn một địa chỉ có dạng này, bạn có thể dán nó vào phần “to” (đến) của ví crypto và nhấn "send" (gửi). Ví crypto sẽ tự động xử lý việc gửi tiền theo cách sau:
- Nếu bạn đã có đủ số lượng coin cần thiết trên chuỗi đích, gửi coin trực tiếp.
- Nếu bạn có coin cần thiết trên một chain khác (hoặc nhiều chain khác), sử dụng một giao thức như ERC-7683 (thực chất là một sàn DEX cross-chain) để gửi coin.
- Nếu bạn có coin loại khác trên cùng một chain hoặc các chain khác, sử dụng các sàn DEX để chuyển đổi chúng thành loại coin đúng trên chain đúng và gửi đi. Điều này sẽ yêu cầu sự cho phép rõ ràng của người dùng: người dùng sẽ thấy số tiền họ đang trả và số tiền người nhận sẽ nhận được.
Trường hợp trên là cho việc "bạn sao chép và dán một địa chỉ (hoặc ENS, ví dụ: [email protected]) để ai đó thanh toán cho bạn". Nếu một dApp yêu cầu một khoản tiền gửi (như ví dụ của Polymarket), thì flow lý tưởng là mở rộng API web3 và cho phép dApp tạo một yêu cầu thanh toán cụ thể cho chain (chain-specific payment request). Ví crypto của bạn sau đó có thể đáp ứng yêu cầu đó theo bất kỳ cách nào cần thiết.
Để trải nghiệm người dùng hoạt động tốt, cũng cần chuẩn hóa yêu cầu getAvailableBalance (getAvailableBalance là một API call mà các ví crypto và dApp sử dụng để biết được lượng tài sản cụ thể có thể được dùng ngay lập tức cho các giao dịch). Các ví crypto cũng cần cân nhắc kỹ khi chọn chain mặc định cho việc lưu trữ tài sản của người dùng nhằm tối đa hóa bảo mật và dễ dàng chuyển tiền.
Yêu cầu thanh toán cụ thể cho từng chain cũng có thể được đặt vào mã QR, để các ví crypto di động có thể quét. Trong một kịch bản thanh toán trực tiếp (hoặc online), người nhận sẽ tạo một mã QR hoặc một web3 API call yêu cầu rằng "Tôi muốn X đơn vị token Y trên chuỗi Z, với ID tham chiếu (reference ID) hoặc callback W (callback là một hàm được thực hiện sau khi một hoạt động được hoàn thành để thông báo kết quả)", và ví crypto có thể tự do đáp ứng yêu cầu đó theo bất kỳ cách nào họ có thể.
Một lựa chọn khác là giao thức claim link, nơi ví crypto của người dùng tạo một mã QR hoặc URL chứa quyền cấp phép để yêu cầu một lượng tiền nhất định từ hợp đồng on-chain của họ, và người nhận phải tự tìm cách chuyển tiền đó vào ví của mình.
Một chủ đề liên quan khác là phí gas. Nếu bạn nhận được tài sản trên một Layer 2 mà bạn chưa có ETH, và bạn cần gửi một giao dịch trên Layer 2 đó, thì ví crypto nên có thể tự động sử dụng một giao thức (ví dụ: RIP-7755) để thanh toán phí gas lấy từ một chain mà bạn có ETH.
Nếu ví crypto dự đoán được bạn sẽ thực hiện thêm nhiều giao dịch hơn trên Layer 2 đó trong tương lai, nó cũng nên sử dụng một sàn DEX để gửi một lượng ETH (ví dụ vài triệu gas), để các giao dịch trong tương lai sẽ có sẵn phí gas để trả (vì cách này rẻ hơn việc cứ mỗi lần phát sinh giao dịch lại phải chuyển gas từ chain khác đến).
Bảo mật tài khoản
Một ví crypto bảo mật nên bảo vệ được người dùng khỏi hai rủi ro: (1) nhà phát triển của ví crypto đó bị hack và (2) người dùng tự mắc sai lầm.
Giải pháp ưa thích của tôi trong hơn mười năm qua là khôi phục xã hội (social recovery) và ví đa chữ ký (multisig wallet), với kiểm soát truy cập phân cấp. Tài khoản của người dùng nên có hai lớp khóa: khóa chính (primary key) và N người giám hộ (guardian). Primary key có thể thực hiện các hoạt động có giá trị thấp và không liên quan đến tài chính.
Các người giám hộ - khi được đồng thuận bởi đa số - có quyền thực hiện một trong hai hoạt động sau: (1) các hoạt động có giá trị cao, như chuyển đi toàn bộ tài sản trong tài khoản, hoặc (2) thay đổi primary key hoặc chỉnh sửa danh sách người giám hộ. Nếu muốn, primary key có thể thực hiện các hoạt động có giá trị cao nhưng phải có khoá thời gian (timelock).
Thiết kế này chỉ là cơ bản và có thể được nâng cấp hơn nữa. Khóa theo phiên (session key) và cơ chế cấp phép như ERC-7715 có thể giúp cân bằng giữa tính tiện lợi và bảo mật cho các ứng dụng khác nhau.
Những kiến trúc người giám hộ phức tạp hơn - chẳng hạn như có những mức timelock khác nhau cho từng mức chi tiêu khác nhau - có thể giúp tối đa hóa khả năng khôi phục tài khoản thành công đồng thời giảm thiểu rủi ro mất tài sản.
Ai nên là người giám hộ?
Đối với một người dùng crypto thành thạo trong một cộng đồng người dùng crypto thành thạo, một lựa chọn khả thi là nhờ bạn bè và gia đình làm người giám hộ.
Nếu bạn yêu cầu mỗi người cung cấp cho bạn một địa chỉ mới, thì không ai cần biết họ là ai - trên thực tế, người giám hộ của bạn thậm chí không cần biết nhau. Khả năng họ thông đồng mà không có ai trong số họ báo cho bạn là rất nhỏ. Tuy nhiên, đối với hầu hết người dùng mới, cách này là không khả thi.
Cách thứ hai là nhờ các tổ chức làm người giám hộ. Một số công ty cung cấp dịch vụ chỉ ký giao dịch nếu họ nhận được xác nhận rằng yêu cầu đến từ bạn, thông qua mã xác thực hoặc video call. Mọi người đã cố gắng tạo ra những thứ này từ lâu, cá nhân tôi cũng đã viết về mô hình của CryptoCorp vào năm 2013. Tuy nhiên, cho đến nay, những công ty như vậy chưa thành công lắm.
Cách thứ ba là dùng nhiều thiết bị cá nhân (như điện thoại, máy tính để bàn, ví cứng) làm người giám hộ. Cách này có vẻ khả thi, nhưng cũng khó thiết lập và quản lý đối với người dùng chưa có kinh nghiệm. Ngoài ra, còn có nguy cơ các thiết bị bị mất hoặc bị đánh cắp cùng một lúc, đặc biệt nếu chúng ở cùng một địa điểm.
Gần đây, chúng ta bắt đầu thấy nhiều ví crypto tích hợp passkey. Passkey chỉ có thể được sao lưu trên thiết bị của bạn, khiến chúng trở thành một loại giải pháp thiết bị cá nhân, hoặc được sao lưu trên đám mây, khiến bảo mật của chúng phụ thuộc vào bảo mật mật khẩu, tính chính trực của các tổ chức và bảo mật của phần cứng.
Phải công nhận passkey mang lại một lợi ích bảo mật đáng giá đối với người dùng bình thường, nhưng chúng không đủ mạnh để bảo vệ tiền tiết kiệm cả đời của người dùng.
Đọc thêm: Lý do Passkey chưa là giải pháp bảo mật tối ưu.
May mắn thay, với ZK-SNARK, chúng ta có lựa chọn thứ tư: ID tập trung được bọc bởi bằng chứng ZK (ZK-wrapped centralized ID). Một số dự án làm về mảng này gồm zkemail, Anon Aadhaar, Myna Wallet…
Về cơ bản, bạn có thể chuyển đổi các loại ID tập trung (được phát hành bởi các công ty hoặc chính phủ) thành một địa chỉ Ethereum, mà bạn chỉ có thể gửi giao dịch bằng cách tạo một ZK-SNARK chứng minh quyền sở hữu ID tập trung đó.
Với sự bổ sung này, chúng ta hiện có nhiều lựa chọn hơn, và ID tập trung được bọc bởi ZK đặc biệt "thân thiện với người mới". Với người dùng thông thường, họ chỉ cần nhập email của người giám hộ, hệ thống sẽ tự động tạo địa chỉ zk-email.
Với người dùng nâng cao, họ có thể nhập email và giá trị muối (salt value - một loại giá trị đi kèm nhằm tăng tính bảo mật) vào ứng dụng bên thứ ba để kiểm tra tính chính xác của địa chỉ zk-email được tạo.
Một điểm cần lưu ý là hiện tại, thách thức của zk-email là nó phụ thuộc vào chữ ký DKIM. Những chữ ký này sử dụng các khóa được xoay vòng (rotate) mỗi vài tháng một lần và không được ký bởi bất kỳ cơ quan nào khác.
Điều này có nghĩa là zk-email hiện tại có một mức độ yêu cầu tin tưởng vượt ra ngoài chính nhà cung cấp; điều này có thể được giảm bớt nếu zk-email sử dụng TLSNotary bên trong phần cứng đáng tin cậy để xác minh các khóa được cập nhật, nhưng điều đó không lý tưởng. Hy vọng rằng các nhà cung cấp email sẽ bắt đầu ký trực tiếp các khóa DKIM của họ.
Do đó, tôi khuyên bạn nên sử dụng zk-email cho một người giám hộ, nhưng không phải cho phần lớn người giám hộ của bạn. Đừng lưu trữ tài sản trong một thiết lập (setup) nơi mà việc phá vỡ zk-email sẽ khiến bạn mất quyền truy cập vào tài sản của mình.
Người dùng mới và ví crypto in-app
Người dùng mới thường không muốn phải nhập quá nhiều người giám hộ trong lần đăng ký đầu tiên. Do đó, các ví crypto nên cung cấp cho họ một tùy chọn đơn giản.
Một cách tự nhiên là sử dụng phương pháp 2-trong-3 (cần 2 trong 3 người giám hộ ký để giao dịch được thực hiện), kết hợp zk-email với địa chỉ email của họ, một khóa được lưu trữ cục bộ trên thiết bị của người dùng (có thể là passkey) và một khóa dự phòng do nhà cung cấp giữ. Khi người dùng trở nên có kinh nghiệm hơn hoặc tích lũy được nhiều tài sản hơn, họ sẽ được nhắc nhở tăng số người giám hộ.
Ví crypto in-app là một ví crypto được tích hợp trực tiếp vào một ứng dụng, thường là một ứng dụng giao dịch hoặc một nền tảng blockchain. Chúng cung cấp cho người dùng một cách thuận tiện để lưu trữ, gửi và nhận crypto mà không cần phải tải xuống một ứng dụng ví riêng biệt.
Ví crypto in-app là xu hướng tất yếu, vì các ứng dụng muốn thu hút người dùng non-crypto không muốn người dùng của họ lúng túng khi phải tải xuống hai ứng dụng mới cùng một lúc (ứng dụng gốc và một ví Ethereum).
Tuy nhiên, một người dùng có nhiều ví in-app nên có quyền liên kết tất cả các ví của họ với nhau về một đầu mối duy nhất, để họ chỉ cần quan tâm một "điều khiển truy cập" (access control).
Cách đơn giản nhất để thực hiện điều này là thông qua một sơ đồ phân cấp, trong đó có một quá trình "liên kết" nhanh cho phép người dùng thiết lập ví chính của họ làm người giám hộ cho tất cả các ví in-app của họ. Warpcast - một ứng dụng client của Farcaster - đã hỗ trợ điều này.
Theo mặc định, việc khôi phục tài khoản Warpcast của bạn được kiểm soát bởi team Warpcast. Tuy nhiên, bạn có thể lấy lại quyền kiểm soát tài khoản Farcaster và chuyển quyền khôi phục sang địa chỉ của bạn.
Bảo vệ người dùng khỏi scam và các rủi ro từ bên ngoài
Ngoài bảo mật tài khoản, các ví crypto hiện nay cũng làm rất nhiều việc để tìm ra địa chỉ giả mạo, phishing, scam và các mối đe dọa bên ngoài khác, đồng thời cố gắng bảo vệ người dùng khỏi những mối đe dọa đó.
Dù vậy, nhiều biện pháp đối phó vẫn còn khá sơ khai. Ví dụ, yêu cầu người dùng nhấp vào để gửi ETH hoặc các token khác đến bất kỳ địa chỉ mới nào, bất kể bạn đang gửi 100 USD hay 100.000 USD.
Ở đây không có giải pháp thần kỳ nào; đó là một loạt các sửa chữa và cải tiến liên tục đối với các loại mối đe dọa khác nhau. Tuy nhiên, có rất nhiều giá trị trong việc tiếp tục nỗ lực cải thiện.
Quyền riêng tư
Giờ là lúc cần nghiêm túc hơn về quyền riêng tư trên Ethereum. Công nghệ ZK-SNARK hiện đã rất tiên tiến, các công nghệ bảo mật quyền riêng tư giảm thiểu rủi ro pháp lý mà không phụ thuộc vào backdoor - như Privacy Pools - đang ngày càng trưởng thành, và cơ sở hạ tầng thứ cấp như Waku và mempool ERC-4337 đang dần trở nên ổn định hơn.
Tuy nhiên, cho đến nay, để thực hiện các giao dịch riêng tư trên Ethereum, người dùng phải tải xuống và sử dụng một "ví crypto riêng tư" như Railway (hoặc Umbra cho các địa chỉ ẩn - stealth address). Điều này gây ra nhiều bất tiện và giảm số lượng người sẵn sàng thực hiện các giao dịch riêng tư. Giải pháp là tích hợp trực tiếp các giao dịch riêng tư vào ví crypto.
Có thể triển khai đơn giản như sau: Ví crypto có thể lưu trữ một phần tài sản của người dùng dưới dạng "số dư riêng tư" trong một pool bảo mật. Khi người dùng thực hiện chuyển khoản, ví sẽ tự động rút tiền từ pool bảo mật trước. Nếu người dùng cần nhận tiền, ví có thể tự động tạo một địa chỉ ẩn.
Ngoài ra, một ví crypto có thể tự động tạo một địa chỉ mới cho mỗi ứng dụng mà người dùng tham gia (ví dụ: một giao thức DeFi). Tiền gửi sẽ đến từ pool bảo mật, và tiền rút sẽ đi thẳng vào pool bảo mật. Điều này cho phép hoạt động của người dùng trong bất kỳ ứng dụng nào được tách khỏi hoạt động của họ trong các ứng dụng khác.
Một lợi thế của kỹ thuật này là nó không chỉ là một con đường tự nhiên để bảo vệ quyền riêng tư cho việc chuyển tài sản mà còn cả bảo vệ quyền riêng tư cho danh tính (identity).
Danh tính đã có mặt trên blockchain: chúng ta có các ứng dụng sử dụng cổng kiểm soát proof-of-personhood (ví dụ: Gitcoin Grants), có các cuộc trò chuyện nào được khóa bằng token (token-gated chat), Ethereum Follow Protocol và còn nhiều nữa.
Chúng ta muốn hệ sinh thái này cũng bảo vệ quyền riêng tư. Điều này có nghĩa là hoạt động của người dùng trên blockchain không nên được thu thập ở một nơi: mỗi mục (item) nên được lưu trữ riêng biệt, và ví của bạn nên là thứ duy nhất nhìn thấy tất cả các xác nhận (attestation) của bạn cùng một lúc. Một hệ sinh thái nhiều tài khoản trên mỗi người dùng (many-accounts-per-user), cũng như các giao thức off-chain attestation như EAS và Zupass sẽ giúp thực hiện điều này.
Điều này thể hiện một tầm nhìn thực tế cho quyền riêng tư của Ethereum trong tương lai trung hạn. Nó có thể được triển khai ngay hôm nay, mặc dù có những tính năng có thể được giới thiệu ở L1 và L2 để làm cho các giao dịch bảo vệ quyền riêng tư hiệu quả và đáng tin cậy hơn.
Một số người ủng hộ quyền riêng tư cho rằng điều duy nhất có thể chấp nhận được là quyền riêng tư hoàn toàn của mọi thứ: mã hóa (encrypt) toàn bộ EVM. Tôi cho rằng điều này có thể là lý tưởng như một kết quả dài hạn, nhưng nó đòi hỏi một suy nghĩ lại căn bản hơn về các mô hình lập trình, và hiện tại nó chưa ở mức độ trưởng thành để có thể triển khai trên toàn bộ Ethereum.
Chúng ta cần quyền riêng tư mặc định để có được các tập hợp ẩn danh đủ lớn. Tuy nhiên, tập trung vào việc bảo mật (1) các giao dịch giữa các tài khoản và (2) danh tính và các use case liên quan đến danh tính như xác nhận riêng tư (private attestation) là một bước thực tế đầu tiên dễ triển khai hơn nhiều và các ví crypto có thể bắt đầu ngay hôm nay.
Ví Ethereum phải trở thành ví dữ liệu
Một hệ quả của bất kỳ giải pháp bảo mật quyền riêng tư hiệu quả nào, cho dù là thanh toán, danh tính hay các use case khác, là nó tạo ra nhu cầu lưu trữ dữ liệu offchain của người dùng. Điều này là rõ ràng trong trường hợp của Tornado Cash, nơi người dùng phải lưu mỗi "ghi chú" riêng lẻ đại diện cho khoản tiền gửi 0,1 - 100 ETH.
Các giao thức bảo mật quyền riêng tư hiện đại hơn đôi khi lưu trữ dữ liệu được mã hóa onchain và sử dụng một private key duy nhất để giải mã nó. Điều này rất rủi ro, vì nếu key bị rò rỉ hoặc nếu máy tính lượng tử đi vào hoạt động, tất cả dữ liệu sẽ trở thành công khai. Các offchain attestation như EAS và Zupass thậm chí còn có nhu cầu lưu trữ dữ liệu offchain rõ ràng hơn.
Ví crypto cần trở thành không chỉ là phần mềm để lưu trữ quyền truy cập onchain, mà còn là phần mềm để lưu trữ dữ liệu riêng tư của bạn. Đây là điều mà thế giới non-crypto ngày càng nhận ra, bạn có thể đọc thêm bài viết gần đây của Tim Berners-Lee về “cửa hàng dữ liệu cá nhân” tại đây.
Bên cạnh tất cả vấn đề mà chúng ta cần giải quyết xung quanh việc đảm bảo quyền kiểm soát truy cập, chúng ta cũng cần giải quyết việc đảm bảo khả năng truy cập và không rò rỉ dữ liệu.
Có lẽ các giải pháp có thể được kết hợp với nhau: nếu bạn có N người giám hộ, hãy sử dụng chia sẻ bí mật M-trong-N (M-of-N secret sharing) giữa N người giám hộ đó để lưu trữ dữ liệu của bạn. Dữ liệu vốn dĩ khó bảo mật hơn, vì bạn không thể thu hồi phần chia sẻ của ai đó, nhưng chúng ta nên đưa ra các giải pháp quản lý phi tập trung an toàn nhất có thể.
Truy cập blockchain một cách an toàn
Hiện tại, các ví crypto tin tưởng vào các nhà cung cấp RPC để cung cấp thông tin về một blockchain. Điều này tiềm ẩn hai nguy cơ:
- Rủi ro mất tiền: Nhà cung cấp RPC có thể cố tình cung cấp thông tin sai lệch, chẳng hạn như giá thị trường, để lợi dụng người dùng.
- Rủi ro lộ thông tin cá nhân: Nhà cung cấp RPC có thể thu thập thông tin về các ứng dụng và tài khoản mà người dùng đang tương tác.
Để khắc phục những vấn đề này, chúng ta cần:
- 1/ Chuẩn hóa light client: Phát triển các light client tiêu chuẩn cho L1 và L2, giúp xác minh trực tiếp sự đồng thuận của blockchain. Helios đã hỗ trợ L1 và đang trong quá trình hỗ trợ một số L2 cụ thể. Để bao phủ tất cả các L2, cần có một tiêu chuẩn cho phép hợp đồng cấu hình (config contract) đại diện cho một L2 (cũng được sử dụng cho chain-specific address) có thể khai báo một hàm, theo cách tương tự như ERC-3668, chứa logic để lấy state root gần nhất và xác minh các bằng chứng về trạng thái và biên nhận (receipt) đối với các state root đó. Bằng cách này, chúng ta có thể có một light client phổ quát, cho phép các ví crypto xác minh an toàn bất kỳ trạng thái hoặc sự kiện nào trên L1 và L2.
- 2/ Bảo vệ quyền riêng tư: Hiện tại, cách tiếp cận thực tế duy nhất là chạy một full node của riêng bạn. Tuy nhiên, với sự xuất hiện của các L2, việc chạy một full node cho mọi thứ đang trở nên khó khăn hơn. Giải pháp tương đương với light client ở đây là truy xuất thông tin riêng tư (private information retrieval - PIR). PIR nghĩa là một máy chủ lưu giữ một bản sao của tất cả dữ liệu và một client gửi cho máy chủ một yêu cầu được mã hóa. Máy chủ thực hiện tính toán trên tất cả dữ liệu, trả về dữ liệu mong muốn của client, dữ liệu đó được mã hóa bằng key của client, mà không tiết lộ cho máy chủ rằng client đã truy cập dữ liệu nào.
Để đảm bảo máy chủ trung thực, các item cơ sở dữ liệu riêng lẻ sẽ là các nhánh Merkle, do đó client có thể xác minh chúng thông qua light client của mình.
PIR rất tốn tài nguyên tính toán. Có một số cách giải quyết vấn đề này:
- Brute force: Cải tiến thuật toán hoặc phần cứng chuyên dụng có thể khiến PIR đủ nhanh để chạy. Các kỹ thuật này có thể phụ thuộc vào pre-processing: máy chủ có thể lưu trữ dữ liệu được mã hóa và xáo trộn cho mỗi client, và client có thể truy vấn dữ liệu đó. Thách thức chính trong thiết lập Ethereum là áp dụng các kỹ thuật này với các bộ dữ liệu thay đổi nhanh chóng (như state). Điều này làm giảm chi phí tính toán thời gian thực nhưng có thể làm tăng tổng chi phí tính toán và lưu trữ.
- Yêu cầu quyền riêng tư thấp hơn: Ví dụ, mỗi lần tra cứu chỉ có thể có 1 triệu "mixins", vì vậy máy chủ sẽ biết 1 triệu giá trị có thể mà client đã truy cập, nhưng không biết chi tiết hơn.
- PIR đa máy chủ: Các thuật toán PIR thường nhanh hơn nếu bạn sử dụng nhiều máy chủ với giả định trung thực 1-trong-N giữa các máy chủ đó.
- Ẩn danh thay vì bảo mật: Thay vì ẩn nội dung của yêu cầu, yêu cầu có thể được gửi qua một mixnet, ẩn người gửi yêu cầu. Tuy nhiên, việc thực hiện hiệu quả điều này chắc chắn sẽ làm tăng độ trễ, làm xấu đi trải nghiệm người dùng.
Tìm ra sự kết hợp đúng đắn giữa các kỹ thuật để tối đa hóa quyền riêng tư trong khi duy trì tính thực tiễn trong bối cảnh của Ethereum là một vấn đề nghiên cứu mở, và tôi hoan nghênh các nhà mật mã học thử sức với nó.
Đọc thêm: Brute Force là gì? 7 hình thức tấn công Brute Force phổ biến.
Ví keystore lý tưởng
Ngoài việc chuyển tiền và truy cập trạng thái, một quy trình làm việc quan trọng khác cần hoạt động trơn tru trong ngữ cảnh cross-L2 là thay đổi cấu hình xác thực của tài khoản: cho dù là thay đổi khóa (ví dụ: khôi phục) hay thay đổi sâu hơn liên quan đến toàn bộ logic của tài khoản. Ở đây, có ba cấp độ giải pháp, theo thứ tự tăng dần độ khó:
- Cập nhật được phát lại (replayed updates): Khi người dùng thay đổi cấu hình của họ, một tin nhắn ủy quyền thay đổi này được phát lại trên mọi blockchain mà ví phát hiện người dùng có tài sản. Định dạng tin nhắn và quy tắc xác thực có thể được độc lập với blockchain, do đó nó có thể được tự động phát lại trên nhiều blockchain nhất có thể.
- Keystore trên L1: Thông tin cấu hình nằm trên L1, và ví trên L2 đọc nó bằng L1SLOAD hoặc REMOTESTATICCALL. Bằng cách này, việc cập nhật cấu hình chỉ cần được thực hiện trên L1, và cấu hình sẽ tự động có hiệu lực.
- Keystore trên L2: Thông tin cấu hình nằm trên L2, và ví trên L2 đọc nó bằng ZK-SNARK. Điều này giống như ý số 2, ngoại trừ việc cập nhật keystore có thể rẻ hơn, mặc dù việc đọc lại (reads) thì tốn kém hơn.
Giải pháp (3) đặc biệt mạnh mẽ vì nó kết hợp tốt với quyền riêng tư. Trong một "giải pháp bảo mật quyền riêng tư" thông thường, người dùng có một bí mật s, một "giá trị lá" L được công bố trên blockchain, và người dùng chứng minh rằng L = hash(s, 1) và N = hash(s, 2) cho một số bí mật (không bao giờ được tiết lộ) mà họ kiểm soát.
Nullifier N được công bố, đảm bảo rằng việc chi tiêu lá tương tự trong tương lai sẽ thất bại, mà không bao giờ tiết lộ L. Điều này phụ thuộc vào việc người dùng giữ an toàn cho s. Một giải pháp bảo mật quyền riêng tư thân thiện với khôi phục (recovery) sẽ thay vào đó nói rằng: s là một vị trí (ví dụ: địa chỉ và khe lưu trữ) trên blockchain, và người dùng phải chứng minh một truy vấn trạng thái: L = hash(sload(s), 1).
Bảo mật dApp
Khâu yếu nhất trong bảo mật của người dùng thường là ứng dụng phi tập trung (dApp). Hầu hết thời gian, người dùng tương tác với một ứng dụng bằng cách truy cập vào một trang web, nơi mã giao diện người dùng (user interface code) được tải xuống từ một máy chủ theo thời gian thực và sau đó được thực thi trong trình duyệt.
Nếu máy chủ bị tấn công hoặc DNS bị tấn công, người dùng sẽ nhận được một bản sao giả mạo của giao diện, có thể lừa người dùng thực hiện các hành động tùy ý. Các tính năng của ví crypto như mô phỏng giao dịch rất hữu ích trong việc giảm thiểu rủi ro, nhưng chúng không hoàn hảo.
Tốt nhất, chúng ta nên chuyển hệ sinh thái sang phiên bản nội dung on-chain: người dùng sẽ truy cập vào dApp thông qua tên ENS của nó, chứa hash IPFS của giao diện. Một giao dịch onchain từ một multisig hoặc DAO sẽ cần thiết để cập nhật giao diện.
Ví crypto sẽ cho người dùng biết họ đang tương tác với một giao diện onchain an toàn hay một giao diện Web2 kém an toàn. Ví cũng nên cho người dùng biết họ có đang tương tác với một blockchain an toàn hay không (ví dụ: blockchain đang ở Stage 1 trở lên, hoặc đã trải qua nhiều đợt audit).
Đối với những người dùng quan tâm đến quyền riêng tư, ví crypto cũng có thể thêm một "chế độ cảnh giác cao" (paranoid mode), yêu cầu người dùng nhấp chuột để chấp nhận các yêu cầu HTTP, chứ không chỉ là các hoạt động Web3:
Một cách tiếp cận nâng cao cấp hơn nữa là đi xa hơn HTML + JavaScript, và viết logic kinh doanh của dApp bằng một ngôn ngữ chuyên dụng, có thể là một lớp phủ (overlay) mỏng trên Solidity hoặc Vyper. Sau đó, trình duyệt có thể tự động tạo giao diện người dùng cho bất kỳ chức năng cần thiết nào. OKContract đang làm điều này.
Một hướng khác là bảo vệ thông tin bằng kinh tế crypto (cryptoeconomic info-defense): nhà phát triển dApp, công ty bảo mật, người triển khai blockchain và các bên khác có thể đặt ra một khoản tiền bảo đảm (bond) sẽ được trả cho người dùng bị ảnh hưởng nếu dApp bị hack hoặc gây hại cho người dùng, theo sự phân xử của một DAO onchain. Ví crypto có thể hiển thị cho người dùng một điểm số dựa trên giá trị của khoản tiền bảo đảm.
Tương lai dài hạn hơn
Những điều trên đều nằm trong bối cảnh của các giao diện truyền thống, liên quan đến việc trỏ và click vào giao diện và nhập thông tin vào các trường văn bản. Tuy nhiên, chúng ta đã đạt đến một ngưỡng nơi mà các mô hình sẽ thay đổi sâu sắc hơn:
- Trí tuệ nhân tạo (AI): Có thể dẫn chúng ta rời xa mô hình "trỏ và click" sang mô hình "nói những gì bạn muốn làm, và AI bot sẽ tìm ra cách thực hiện".
- Giao diện não - máy tính (BCI): Gồm cách tiếp cận "nhẹ nhàng" như theo dõi chuyển động mắt (eye tracking) và các kỹ thuật xâm lấn mạnh mẽ hơn (Xem thêm video: Bệnh nhân đầu tiên được gắn Neuralink - một thiết bị kết nối trực tiếp thần kinh con người với máy tính tại đây).
- Client tham gia bảo vệ một cách chủ động: Trình duyệt Brave tích cực bảo vệ người dùng khỏi quảng cáo, truy vết và nhiều đối tượng không mong muốn khác. Nhiều trình duyệt, plugin và ví crypto có toàn bộ đội ngũ tích cực làm việc để bảo vệ người dùng khỏi mọi mối đe dọa về bảo mật và quyền riêng tư. Những "người bảo vệ tích cực" này sẽ trở nên mạnh mẽ hơn trong thập kỷ tới.
Ba xu hướng này sẽ cùng dẫn đến suy nghĩ sâu sắc hơn về cách thức hoạt động của giao diện. Thông qua đầu vào (input) ngôn ngữ tự nhiên, theo dõi chuyển động mắt hoặc cuối cùng là giao diện não - máy tính, cùng với kiến thức về lịch sử hoạt động của bạn (có thể bao gồm tin nhắn văn bản, miễn là tất cả dữ liệu được xử lý cục bộ), một "ví" có thể có được một ý tưởng trực quan rõ ràng về những gì bạn muốn làm.
AI sau đó có thể chuyển đổi trực giác đó thành một "kế hoạch hành động" cụ thể: một loạt các tương tác onchain và offchain để đạt được những gì bạn muốn. Điều này có thể làm giảm đáng kể nhu cầu đối với giao diện người dùng của bên thứ ba.
Nếu người dùng tương tác với một ứng dụng của bên thứ ba (hoặc người dùng khác), AI nên giúp người dùng xác định bất kỳ mối đe dọa nào và đề xuất các kế hoạch hành động để tránh chúng. Lý tưởng nhất, sẽ có một hệ sinh thái mở của các AI này, được sản xuất bởi các nhóm khác nhau với các định kiến và cách khuyến khích khác nhau.
Những ý tưởng cấp tiến hơn này phụ thuộc vào công nghệ cực kỳ chưa trưởng thành ngày nay, vì vậy tôi sẽ không đặt tài sản của mình vào một ví crypto dựa vào chúng. Tuy nhiên, một cái gì đó như thế này dường như là tương lai khá rõ ràng, vì vậy đáng để bắt đầu khám phá tích cực hơn theo hướng đó.