"Đăng nhập bằng Ethereum" (SIWE) sẽ là cuộc cách mạng hoá đối với người dùng Internet trên toàn cầu.
Người dùng có thể mặc sức sử dụng không gian internet mà không còn phải thông qua một nền tảng (ví dụ như: Facebook, Twitter, Instagram….) nào nữa và giờ đây có thể đăng nhập trực bằng cách sử dụng cùng một khóa riêng kiểm soát tài khoản blockchain của họ. Với SIWE, Blockchain đã mở ra một con đường khác, nơi các tập đoàn lớn không còn có thể tước đi khả năng tiếp cận dịch vụ và giám sát hành vi của người dùng.
SIWE là một tiêu chuẩn chứng nhận hoàn toàn công khai, đạt được thông qua các cuộc thảo luận mở với các thành viên cộng đồng như dapp, ứng dụng, ví , công ty bảo mật , v.v. Bạn có thể tìm thấy tất cả các biên bản cuộc họp và ghi chú trên trang web login.xyz. Cách tiếp cận này khác xa so với sự phát triển khép kín của các hệ thống nhận dạng độc quyền của những người khổng lồ công nghệ hoặc các nhà cung cấp dịch vụ internet bị kiểm soát bởi chính phủ.
Đăng nhập bằng Ethereum (EIP-4361) xác định định dạng chữ ký Creative Commons (CC) mở cho các tài khoản Ethereum để xác thực an toàn bất kỳ dịch vụ dựa trên web nào. SIWE được xây dựng bởi cộng đồng với sự hỗ trợ trực tiếp từ Ethereum Foundation và ENS, và Spruce đã phụ trách dự án vào cuối năm ngoái. Tôi rất vui được thảo luận ở đây "Đăng nhập bằng Ethereum" có nghĩa là gì và cách nó vượt ra ngoài "kết nối ví" cho tất cả các nhà xây dựng Web3.
Kết nối ví khác gì so với đăng nhập bằng Ethereum
Nút "Connect Wallet" là chức năng chính của dapps bây giờ. Bằng cách nhấp vào nút này, người dùng bắt đầu hành trình tương tác với Web3 và chuỗi khối.
Bằng cách kết nối ví, ứng dụng có thể biết bạn đang sử dụng tài khoản nào. Ví của bạn sẽ dễ dàng hiểu được tài khoản nào bạn muốn sử dụng để tương tác với các hợp đồng thông minh , gửi tiền điện tử và thậm chí ký tin nhắn thông qua dapp . Chức năng kết nối với ví rất đơn giản – dapp "không có lưu trữ" nào về bạn, chỉ là một nền tảng cho các tương tác đơn giản.
Khi ứng dụng muốn có các tương tác theo ngữ cảnh phong phú hơn với người dùng, chẳng hạn như tải tùy chọn của người dùng hoặc tin nhắn trò chuyện riêng tư, trước tiên chúng tôi cần đảm bảo rằng chúng tôi đang nói chuyện với chủ sở hữu khóa cá nhân thực sự đằng sau tài khoản và không phải ai đó giả mạo có quyền kiểm soát qua tài khoản. Ví được kết nối không cung cấp bảo đảm này, nhưng SIWE thì có. Nói cách khác, chúng tôi cần xác thực người dùng để thiết lập các Session(Session) và sau đó đọc và ghi dữ liệu của họ một cách an toàn. Để minh họa sự khác biệt, tôi đã đưa ra hai ví dụ sau – Carl kết nối ví và Sam thiết lập Session:
Session là một giải pháp để duy trì trạng thái giữa máy khách và máy chủ. Ý tưởng là: khi máy khách truy cập lần đầu tiên, máy chủ tạo session id và trả lại cho máy khách, tất nhiên, máy chủ sẽ cũng lưu trữ id Session trong bộ nhớ. Sau khi máy khách lấy được session ID , nó sẽ gửi session id trở lại máy chủ trong mỗi yêu cầu tiếp theo, để máy chủ có thể truy vấn bộ nhớ của chính nó để biết rằng máy khách đã truy cập. Session có thể được sử dụng để triển khai xác thực đăng nhập của người dùng. Sau khi id Session do máy chủ tạo được gửi lại cho máy khách, nó thường được lưu trong cookie, vì vậy xác thực dựa trên Session còn được gọi là xác thực dựa trên cookie.
Carl sử dụng dapp và có một trải nghiệm tuyệt vời. Anh ta có thể giao dịch trên Uniswap, vay trên Aave và thậm chí mua NFT trên OpenSea . Để thực hiện các thao tác này chỉ cần kết nối ví của mình. Hoạt động của Carl đang diễn ra tốt đẹp cho đến một ngày, anh ta gặp phải vấn đề này: anh ta muốn những dapp này ghi nhớ một số tuỳ chỉnh cá nhân của mình, để khi anh ta sử dụng những dapp này lần thứ ba, thứ tư và thứ năm, sẽ mang lại cho anh ta trải nghiệm tốt hơn.
Carl đang nghĩ rằng nếu Uniswap có thể tự động nhập tùy chọn thanh lý của anh ấy, Aave có thể nhớ danh mục cho vay yêu thích của anh ấy và thậm chí OpenSea có thể nhớ tên anh ấy thay vì 0x2Fe1a3 … Anh ấy sẽ có trải nghiệm tốt hơn nhiều với những tài khoản như thế này. Carl phải bắt đầu lại từ đầu mỗi khi kết nối ví của mình.
Sam sẽ không gặp vấn đề như vậy. Sau khi Dapp xác thực nó và thiết lập một Session, thông tin liên quan sẽ được lưu lại. Ngay cả khi Sam ngắt kết nối và xác thực lại, Session tiếp tục từ nơi anh ấy đã dừng lại và ứng dụng vẫn ghi nhớ mọi thứ về anh ấy. Thông tin của anh ta thậm chí có thể được lưu giữ trong cơ sở dữ liệu từ xa mà anh ta kiểm soát.
Sự thống nhất của SIWE
Nhìn qua không gian Web3, bạn sẽ thấy rằng nhiều dịch vụ hiện có cung cấp một số hình thức "Đăng nhập bằng Ethereum", nhưng không nhiều dịch vụ đạt được mức như vậy. Họ thường sử dụng nó để thiết lập session dựa trên cookie với người dùng quản lý siêu dữ liệu độc quyền về tài khoản. Ví dụ: nếu bạn muốn cấp cho người dùng quyền tùy chỉnh hồ sơ của riêng họ trên trang web của bạn (giống như OpenSea), bạn nên xác thực người dùng trước khi họ có thể thực hiện bất kỳ thay đổi nào để đảm bảo rằng chỉ người dùng mới có thể chỉnh sửa hồ sơ của chính họ.
Quy trình làm việc như sau:
Bước đầu tiên sau khi kết nối ví là cung cấp cho người dùng các thông điệp mà con người có thể đọc được để họ có thể hiểu họ đã có những tương tác nào. Trong nhiều trường hợp, những gì người dùng nhìn thấy là từ "ĐĂNG NHẬP", hoặc một số văn bản đăng nhập của bạn, hoặc thậm chí đôi khi chỉ là một số tùy ý (ở đây, ký tên vào bộ sưu tập chữ và số ngẫu nhiên điên rồ này).
Thay vào đó, chúng tôi có thể xác định một tập hợp các trường bắt buộc dựa trên thực tiễn hiện có, thiết lập một số biện pháp bảo mật tốt và một cú pháp chặt chẽ cân bằng giữa khả năng đọc của con người và hoạt động an toàn. Hơn nữa, ví không cần phải thay đổi giao diện và thông lệ hiện có của chúng, ít nhất chúng có thể tiếp tục cung cấp cho người dùng loại thông tin này.
Đầu tiên, Giao thức nhận tất cả thông báo "SIWE" khi bạn click vào nút đăng nhập và gửi yêu cầu đến người dùng dưới nội dung như sau:
Chia sẻ thông tin – Chia sẻ giao diện
Khi một ứng dụng gửi yêu cầu chữ ký cho người dùng, ví có thể kiểm tra yêu cầu, kiểm tra xem nó có khớp với thông tin EIP-4361 (SIWE) hay không và cho người dùng biết rằng họ đang đăng nhập vào một trang web.
Tại thời điểm này, ví có thể trình bày một giao diện cách điệu thân thiện giúp trải nghiệm người dùng tốt hơn và không gây bất kỳ nghi ngờ nào về các hành động mà người dùng sắp thực hiện. Thay vì cung cấp cho người dùng một khối văn bản tùy ý để ký. Người dùng bây giờ chỉ phải nhấp vào hộp thoại xác nhận để "đăng nhập" vì ví "hiểu" yêu cầu ký. Để đạt được sự minh bạch hoàn toàn, đặc điểm kỹ thuật EIP-4361 tuyên bố rằng tất cả thông tin và trường vẫn phải có sẵn trong các giao diện phụ khác (chẳng hạn như chế độ xem chi tiết).
Từ thông tin trong EIP-4361, chúng ta có thể có được giao diện rõ ràng hơn:
Đặc điểm kỹ thuật cũng đưa ra các yêu cầu bảo mật bổ sung cho ví, chẳng hạn như giới thiệu các ràng buộc miền để ngăn chặn các cuộc tấn công lừa đảo; đưa ra các liên kết để ngăn các cuộc tấn công liên tục, người dùng được bảo vệ thêm trong suốt quá trình. Ví dụ: nếu ví tìm thấy thông báo SIWE hợp lệ, nhưng người dùng đang ký example.com (nhưng thực tế là ở exampie.com), ví có thể cảnh báo người dùng về tình huống:
Hơn cả tính xác thực
Thông tin SIWE cũng có thể được hiểu là ủy quyền để truy cập các tài nguyên cụ thể hoặc ủy quyền các khóa riêng của Session để cải thiện chức năng và tính dễ sử dụng của dapp UX.
Ví dụ: hãy tưởng tượng một thế giới trong đó người dùng có thể làm phong phú các Session của chính họ bằng dữ liệu họ lưu giữ, thay vì các ứng dụng lưu giữ dữ liệu của người dùng. Để biết thêm thông tin, tôi thực sự khuyên bạn nên đọc bài viết này: Từ Đăng nhập bằng Ethereum đến Khóa Session