Ứng dụng Passkey trong Smart Contract Wallet: Bảo mật Crypto với ERC-4337
Hiện nay, passkey đã được tích hợp và sử dụng trên các sàn giao dịch crypto lớn như Binance, Coinbase... Nhưng câu hỏi là, làm sao passkey có thể tích hợp vào ví hợp đồng thông minh và tác động của nó đến bảo mật trong hệ sinh thái crypto?
Ví hợp đồng thông minh được xem là một trong những đột phá quan trọng của Ethereum, mở ra những tiềm năng to lớn trong việc quản lý tài sản và thực hiện các giao dịch phức tạp mà không cần sự can thiệp của bên thứ ba.
Trong khi đó, passkey (một hình thức xác thực không cần mật khẩu) đang dần trở thành giải pháp thay thế an toàn và tiện lợi cho các phương pháp xác thực truyền thống. Việc tích hợp passkey vào smart contract wallet không chỉ đem lại lợi ích về mặt bảo mật mà còn mang đến trải nghiệm người dùng dễ dàng hơn.
Tại sao Passkey có thể được tích hợp vào Smart Contract Wallet?
Để nắm được lý do tại sao passkey có thể được tích hợp trong các ví hợp đồng thông minh. Trước tiên chúng ta cần phải tìm hiểu về nguồn gốc tại sao Ethereum lại giới thiệu về khái niệm ví hợp đồng thông minh? Tại sao lại phải phát triển ví hợp đồng thông minh trong khi trước giờ vẫn đang sử dụng loại ví EOA?
Nguồn gốc và sự hình thành của Smart Contract Wallet
Trong những năm đầu của Ethereum, các ví chủ yếu là ví lưu trữ thông thường, gọi là Externally Owned Accounts (EOA). Loại ví này yêu cầu người dùng sở hữu một cặp khóa mật mã cá nhân để quản lý tài sản và thực hiện giao dịch.
Tuy nhiên, việc quản lý các khóa cá nhân này đã gặp phải nhiều thách thức về bảo mật, khôi phục và tính tiện dụng. Ví dụ, mất khóa cá nhân có thể dẫn đến mất toàn bộ tài sản và không có cách nào khôi phục tài khoản nếu người dùng không có khóa dự phòng.
Sự xuất hiện của ví hợp đồng thông minh nhằm giải quyết những vấn đề này.
Ví hợp đồng thông minh không chỉ dựa vào khóa cá nhân như ví EOA truyền thống, mà còn dựa trên các hợp đồng thông minh để quản lý tài sản và giao dịch. Điều này giúp tự động hóa các quy trình phức tạp như xác thực, khôi phục tài khoản, hoặc thiết lập các điều kiện giao dịch cụ thể.
Ngoài ra, ví hợp đồng thông minh cung cấp nhiều tính năng bảo mật và linh hoạt hơn, bao gồm:
- Xác thực nhiều yếu tố (MFA).
- Khả năng khôi phục tài khoản khi mất quyền truy cập vào khóa cá nhân.
- Tự động hóa giao dịch dựa trên các điều kiện tùy chỉnh.
Tuy nhiên, để tối ưu hóa hơn nữa về tính bảo mật và linh hoạt, Ethereum cần một cách tiếp cận mới trong việc quản lý tài khoản, và đó là lý do Account Abstraction và tiêu chuẩn ERC-4337 ra đời.
Account Abstraction tạo nền tảng để ví trở nên linh hoạt hơn
Account Abstraction cung cấp một cách tiếp cận giúp tách biệt cách các tài khoản hoạt động, từ đó cải thiện cách các tài khoản này hoạt động. Hiện tại, trên Ethereum có hai loại tài khoản chính:
- Externally Owned Accounts (EOA): Đây là tài khoản thông thường, quản lý bằng khóa cá nhân. Ví truyền thống mà người dùng lưu trữ tài sản và thực hiện giao dịch đều dựa vào EOA.
- Contract Accounts (CA): Là tài khoản được điều hành bởi các hợp đồng thông minh. Các ví hợp đồng thông minh sử dụng loại tài khoản này để thực hiện các tính năng tự động hóa và bảo mật nâng cao.
Tuy nhiên, các tài khoản EOA vẫn phải dựa vào khóa cá nhân để thực hiện giao dịch, điều này tạo ra nhiều hạn chế trong việc thêm các tính năng bảo mật, như xác thực nhiều yếu tố (MFA) hoặc cơ chế khôi phục tài khoản. Account Abstraction chính là giải pháp cho phép tài khoản EOA hoạt động giống như Contract Account, từ đó tích hợp được các tính năng nâng cao như passkey, MFA và các phương thức khôi phục.
ERC-4337: Tiêu chuẩn hỗ trợ tích hợp passkey và tính năng bảo mật nâng cao
Tiêu chuẩn ERC-4337 được đề xuất nhằm hiện thực hóa Account Abstraction mà không cần thay đổi cơ chế cốt lõi của Ethereum. Thay vì phải sửa đổi toàn bộ giao thức của blockchain, ERC-4337 sử dụng một cơ chế dựa trên hợp đồng thông minh để mô phỏng các tính năng của Account Abstraction.
Với ERC-4337, người dùng có thể thiết lập các quy tắc quản lý tài khoản và xác thực giao dịch theo cách linh hoạt hơn, mà không còn phụ thuộc hoàn toàn vào khóa cá nhân. Một số đặc điểm nổi bật của ERC-4337 bao gồm:
- Bundling (kết hợp nhiều giao dịch): ERC-4337 cho phép gộp nhiều giao dịch thành một và chỉ xử lý khi tất cả các điều kiện xác thực được thỏa mãn, giúp tăng hiệu quả và bảo mật.
- Xác thực linh hoạt: Người dùng có thể lựa chọn nhiều phương thức xác thực khác nhau, chẳng hạn như passkey, OTP hoặc xác thực sinh trắc học, giúp tăng cường bảo mật và tối ưu trải nghiệm.
- Khả năng khôi phục tài khoản: ERC-4337 cung cấp khả năng thiết lập các quy tắc khôi phục tài khoản thông qua thiết bị dự phòng hoặc những liên hệ tin cậy, giảm thiểu rủi ro mất tài sản khi người dùng mất quyền truy cập vào tài khoản của mình.
Tích hợp passkey vào Smart Contract Wallet
ERC-4337 tạo ra một môi trường lý tưởng để tích hợp passkey như một phương thức xác thực chính trong smart contract wallet. Mỗi giao dịch trên ví có thể yêu cầu xác thực bằng passkey, giúp nâng cao tính bảo mật mà không làm ảnh hưởng đến trải nghiệm người dùng. Điều này không chỉ tăng cường khả năng bảo vệ tài sản của người dùng mà còn tạo điều kiện cho việc tự động hóa các giao dịch và quản lý tài khoản một cách an toàn.
Nhờ Account Abstraction và ERC-4337, Ethereum đã tạo điều kiện để các ví EOA trở nên linh hoạt và bảo mật hơn, biến ví hợp đồng thông minh thành giải pháp lý tưởng cho người dùng có nhu cầu bảo mật cao và cần tự động hóa các giao dịch.
Tuy nhiên, cần lưu ý rằng passkey chỉ là một trong nhiều tính năng có thể được tích hợp vào ví hợp đồng thông minh nhằm cải thiện cả trải nghiệm và bảo mật cho người dùng. Ở khía cạnh bài viết này, chúng ta chỉ đang tìm hiểu về một khía cạnh tối ưu hơn của ví hợp đồng thông minh.
Đọc thêm: ERC-4337 sắp mở đường cho hàng triệu người dùng crypto.
Quá trình tích hợp Passkey vào ERC-4337 như thế nào?
Việc tích hợp passkey vào các ứng dụng Ethereum thông qua tiêu chuẩn ERC-4337 yêu cầu hai bước chính: xác thực bằng passkey từ phía người dùng và thiết lập smart contract wallet có khả năng xác minh passkey. Quá trình này liên quan đến cả công nghệ backend và trải nghiệm người dùng trên giao diện (UI).
Xác thực bằng Passkey từ phía người dùng
Để sử dụng passkey, các nhà phát triển cần tích hợp API WebAuthn để tạo và ký passkey trên thiết bị của người dùng. Khi người dùng đăng ký passkey, một cặp khóa công khai (public key) và khóa cá nhân (private key) sẽ được tạo. Khóa cá nhân được lưu trữ bảo mật trên thiết bị của người dùng (chẳng hạn như điện thoại hoặc máy tính), còn khóa công khai sẽ được sử dụng để xác thực các giao dịch.
Trong smart contract wallet, passkey không chỉ được sử dụng để đăng nhập mà còn có thể thực hiện giao dịch an toàn. Người dùng cần được hướng dẫn rõ ràng qua UI về cách đăng ký passkey, bao gồm việc sử dụng các phương pháp xác thực như vân tay, nhận diện khuôn mặt hoặc mã PIN.
Để bảo vệ tài khoản tốt hơn, UI cũng cần cung cấp tùy chọn đăng ký thiết bị dự phòng hoặc liên hệ tin cậy để khôi phục tài khoản trong trường hợp người dùng mất quyền truy cập vào thiết bị chính.
Thiết lập Smart Contract Wallet cho Passkey
Trong ERC-4337, mỗi giao dịch được thực hiện thông qua một UserOperation – đây là một yêu cầu chứa thông tin về hành động mà người dùng muốn thực hiện và dữ liệu chữ ký để xác thực. Các UserOperation này sẽ được gom lại thành các giao dịch và đưa vào khối Ethereum. Hợp đồng thông minh của ví sẽ có hai chức năng chính:
- validateUserOp: Hàm này xác minh chữ ký và tính phí giao dịch.
- Execution function: Hàm này thực hiện giao dịch dựa trên thông tin được gửi kèm.
Passkey được tích hợp vào bước validateUserOp, thay thế cho mật khẩu hoặc cụm từ khôi phục truyền thống (seed phrase). Chữ ký passkey được sử dụng để xác thực danh tính người dùng và đảm bảo rằng chỉ các giao dịch hợp lệ mới được thực hiện. Việc sử dụng WebAuthn API giúp tạo ra cặp khóa công khai-riêng và lưu trữ khóa riêng tư một cách an toàn trên thiết bị người dùng, sau đó khóa này sẽ được sử dụng để ký giao dịch một cách bảo mật.
Để đảm bảo rằng hợp đồng thông minh có thể xác minh chữ ký passkey, nhà phát triển cần phải sửa đổi để hợp đồng hỗ trợ xác minh chữ ký P256 – loại chữ ký phổ biến trong passkey. Quá trình này yêu cầu thay đổi hàm validateUserOp để tích hợp thuật toán xác minh chữ ký P256. Người dùng không cần hiểu chi tiết kỹ thuật, nhưng họ cần được đảm bảo rằng passkey sẽ bảo vệ các giao dịch của họ với mức độ an toàn cao nhất.
Một số framework như Daimo’s p256-verifier có thể giúp giảm bớt gánh nặng phát triển bằng cách cung cấp các thư viện đã sẵn có để xác minh chữ ký P256, giúp việc tích hợp trở nên nhanh chóng và hiệu quả hơn.
Quy trình tạo ví hợp đồng thông minh với Passkey
Về cơ bản, các thành phần chính tham gia trong quy trình tạo ví sẽ bao gồm:
- Dapp: Ứng dụng phi tập trung mà người dùng tương tác để thực hiện các giao dịch.
- Wallet Infra: Hạ tầng ví, chịu trách nhiệm quản lý tạo ví và xử lý các yêu cầu giao dịch.
- Passkey Signer Module: Module thực hiện ký giao dịch dựa trên passkey.
- WebAuthn: Giao thức được sử dụng để tạo và ký các khóa mật mã thông qua passkey.
Người dùng truy cập một Dapp, tại đây, họ bắt đầu quy trình tạo ví hợp đồng thông minh. Dapp sẽ gửi yêu cầu đến hạ tầng ví để tạo một ví thông minh cho người dùng. Hạ tầng ví chịu trách nhiệm quản lý quy trình tạo ví, bao gồm việc tạo các cặp khóa mật mã.
Hạ tầng ví gửi yêu cầu đến Passkey Signer Module để tạo ra một cặp khóa công khai-riêng tư. Cặp khóa này sẽ là cơ chế bảo mật chính của ví thông minh. WebAuthn trên thiết bị người dùng sẽ tạo cặp khóa này.
Sau khi WebAuthn tạo cặp khóa, khóa công khai sẽ được trả về Passkey Signer Module để để chuyển đổi thành địa chỉ ví Ethereum (ETH address). Địa chỉ này sẽ được sử dụng để lưu trữ tài sản và thực hiện giao dịch trên mạng Ethereum.
Cuối cùng, hạ tầng ví trả lại địa chỉ ví cho Dapp, và Dapp hiển thị địa chỉ ví thông minh cho người dùng. Sau khi ví được tạo, người dùng có thể bắt đầu sử dụng ví thông minh để quản lý tài sản và thực hiện các giao dịch trên blockchain.
Tạo giao dịch với Passkey
Khi người dùng khởi tạo ví thông minh lần đầu tiên, hệ thống sẽ tạo một đoạn mã initCode, mã này là chuỗi hex được ghép từ các thành phần trong tài khoản thông minh và các lệnh mã hóa để tạo ra tài khoản thuộc sở hữu của passkey. Từ góc nhìn của người dùng, quá trình này có thể được thực hiện tự động qua UI khi họ thiết lập ví lần đầu tiên.
Trong quá trình thực hiện giao dịch, passkey sẽ được sử dụng để ký User Operation – yêu cầu của người dùng gửi đến blockchain để thực hiện giao dịch. WebAuthn API sẽ tạo ra chữ ký từ passkey, và giao dịch sau đó sẽ được gửi lên mạng Ethereum để xử lý. Ở phía backend, hợp đồng thông minh sẽ xác minh chữ ký và chỉ thực thi giao dịch nếu chữ ký là hợp lệ.
Thách thức của việc triển khai ví Smart Contract Wallet có tích hợp Passkey
Chi phí phát triển cao
Việc tích hợp passkey vào ví hợp đồng thông minh đòi hỏi nguồn lực phát triển lớn do tính chất phức tạp của việc kết nối giữa WebAuthn API và hợp đồng thông minh trên Ethereum.
Theo ước tính từ các nhà phát triển blockchain và các công ty như Apptunix và Antier Solutions, chi phí phát triển một ví hợp đồng thông minh phức tạp có thể dao động từ 50,000 đến 100,000 USD. Mức chi phí này phụ thuộc vào mức độ phức tạp của các tính năng, tích hợp API (ví dụ như WebAuthn cho chức năng passkey) và quy mô của nhóm phát triển.
Ngoài ra, chi phí kiểm thử bảo mật cho các ví này, đặc biệt là các ví có tích hợp các tính năng bảo mật mới như passkey, có thể dao động từ 5,000 đến 30,000 USD, tùy thuộc vào mức độ phức tạp và chiều sâu của mã cần kiểm tra.
Phí vận hành và chi phí gas
Phí gas trên Ethereum là một trong những thách thức lớn khi triển khai các ví hợp đồng thông minh. Hợp đồng thông minh phức tạp, như những ví tích hợp passkey, có thể yêu cầu nhiều bước xử lý trên blockchain, làm tăng chi phí gas cho mỗi giao dịch.
- Smart contract wallet có thể yêu cầu nhiều giao dịch, như khởi tạo ví thông qua Create2 và xác minh chữ ký, dẫn đến chi phí gas cao hơn so với các ví thông thường.
- Một nghiên cứu từ Ethereum Foundation cho thấy chi phí gas cho một giao dịch phức tạp có thể lên tới 15-30 USD tùy vào tình trạng mạng Ethereum.
Khả năng tương thích và hỗ trợ thiết bị
Không phải tất cả các thiết bị đều hỗ trợ tiêu chuẩn FIDO2/WebAuthn, đặc biệt là các thiết bị cũ hoặc hệ điều hành không hỗ trợ. Điều này có thể gây khó khăn trong việc triển khai rộng rãi ví sử dụng passkey, khiến người dùng gặp trở ngại trong việc truy cập ví và thực hiện giao dịch.
Mặc dù passkey giúp tăng cường bảo mật, nhưng đối với một số người dùng, việc sử dụng passkey có thể tạo thêm một lớp phức tạp. Người dùng cần phải hiểu quy trình đăng ký và quản lý passkey, và trong trường hợp mất thiết bị, quá trình khôi phục tài khoản có thể gặp khó khăn nếu không được chuẩn bị trước.
Tối ưu hóa chi phí gas với EIP-4337 và EIP-7212
EIP-4337 và EIP-7212 đã được đề xuất để giải quyết vấn đề về chi phí gas và cải thiện trải nghiệm người dùng khi triển khai các ví hợp đồng thông minh.
- EIP-4337 (Account Abstraction) giúp tối ưu hóa quá trình giao dịch, gộp nhiều bước xử lý thành một, từ đó giảm chi phí gas và cải thiện trải nghiệm người dùng. Nó cũng hỗ trợ quy tắc khôi phục tài khoản khi mất quyền truy cập, nâng cao tính bảo mật và dễ sử dụng cho passkey.
- EIP-7212 tối ưu hóa quá trình xác minh chữ ký P256, làm giảm đáng kể chi phí gas cho các giao dịch liên quan đến passkey, đồng thời tăng tốc độ xác thực, giúp giao dịch nhanh và mượt mà hơn.
Cả hai cải tiến này đều giúp passkey trở nên hiệu quả và tiết kiệm hơn khi sử dụng trong ví hợp đồng thông minh.
Đọc thêm: Hiểu nhầm về Private key trong Passkey, ví EOA và Smart Contract Wallet.