Cảm ơn Andy và Jay vì tất cả sự giúp đỡ trong dự án này
Adhaar ẩn danh
Chương trình adhaar là một trong những chương trình nhận dạng kỹ thuật số lớn nhất trên thế giới. Nó có số lượng đăng ký là 1,2 tỷ người, chiếm khoảng 90% dân số Ấn Độ.
Thẻ Adhaar mang cả dữ liệu nhân khẩu học và sinh trắc học, bao gồm ngày sinh và dấu vân tay của chủ sở hữu. Chúng được sử dụng trong nhiều ngữ cảnh như hợp đồng cho vay hoặc đơn xin nhà ở.
Chúng tôi trình bày cách tận dụng kiến thức không để xác minh tính hợp lệ của thẻ adhaar. Thành tựu này có nhiều ứng dụng tiềm năng. Tận dụng cơ sở hạ tầng khóa công khai hiện có cho phép chúng tôi cung cấp bằng chứng nhận dạng mạnh mẽ với giá rẻ. Ngoài ra, thuộc tính không có kiến thức trong quá trình xác minh của chúng tôi cung cấp một cách bảo vệ quyền riêng tư để tiến hành xác minh danh tính. Sử dụng sơ đồ chứng minh groth16 mở ra khả năng chuyển dữ liệu chủ sở hữu bằng chứng thẻ adhaar hợp lệ trên chuỗi.
Chúng tôi đã phát triển một ứng dụng web mẫu cho phép bất kỳ chủ thẻ adhaar nào tạo bằng chứng về thẻ adhaar hợp lệ. Hôm nay chúng tôi đang mở mã nguồn cho bất kỳ ai sử dụng, rẽ nhánh hoặc xây dựng trên nó. Nếu bạn quan tâm đến việc phát triển ứng dụng bằng cách sử dụng những gì chúng tôi đã xây dựng hoặc triển khai thiết lập tương tự cho các sơ đồ nhận dạng khác, vui lòng liên hệ.
Thiết lập không kiến thức
Để xác minh tính hợp lệ của thẻ adhaar, việc thiết lập mạch rất đơn giản. Chúng tôi muốn kiểm tra xem chữ ký do người dùng cung cấp có tương ứng với một trong những thẻ adhaar hợp lệ hay không. Định nghĩa về tính hợp lệ của chúng tôi sẽ yêu cầu thông báo được cung cấp tương ứng với chữ ký đầu vào và khóa chung. Chúng tôi xem xét việc kiểm tra xem khóa công khai có tương ứng với một thực thể cụ thể là “logic nghiệp vụ” hay không. Do đó, chúng tôi sẽ để việc kiểm tra như vậy cho thực thể xác minh bằng chứng - chẳng hạn như phụ trợ của nhà cung cấp KYC hoặc hợp đồng thông minh.
Mạch của chúng tôi sẽ thực hiện hai kiểm tra:
- Chữ ký RSA là chính xác. Chúng tôi nâng chữ ký lên lũy thừa công khai, mô đun khóa công khai và lấy hàm băm tài liệu được cung cấp.
- Phần đệm SHA1 là chính xác. Chúng tôi kiểm tra xem phần 9.2 của RFC 8017 có được tuân thủ khi thông báo được cung cấp được nâng lên lũy thừa số mũ công khai, mô đun khóa công khai hay không.
Mạch của chúng tôi bao gồm bốn đầu vào:
signal input sign [nb] ; // Signature; private signal input hashed [hashLen] ; // Adhaar card's hash; private signal public input exp [nb] ; // RSA public exponent signal public input modulus [nb] ; // RSA modulus Đầu tiên, chúng tôi kiểm tra xem chữ ký RSA được cung cấp khi được nâng lên thành số mũ công khai có tương ứng với hàm băm đầu vào hay không. Chúng tôi đã sử dụng lại một triển khai được tìm thấy tại đây . Sau đó, chúng tôi đảm bảo rằng phần đệm thư được giải mã, tức là hàm băm được đệm, là chính xác. Quy trình ký pdf của Adobe tuân theo các quy tắc EMSA-PKCS1-v1_5 , được trình bày chi tiết trong RFC này . Thẻ Adhaar sử dụng SHA1 làm hàm băm trước khi ký. Do đó, chúng tôi đã phải điều chỉnh mạch tham chiếu của mình, ban đầu được viết cho SHA256, để xác minh tính chính xác của phần đệm. Chúng tôi cung cấp một phiên bản sửa đổi của mạch này .
Mặc dù nó có thể đưa ra những hạn chế, chúng tôi muốn giữ chữ ký và hàm băm của tài liệu ở chế độ riêng tư. Chúng tôi chỉ tiết lộ những gì cần thiết cho bất kỳ quy trình xác thực công khai nào: số mũ công khai và khóa công khai. Trong trường hợp xác minh bằng chứng về thẻ Adhaar hợp lệ, điều này sẽ khiến hợp đồng onchain có thể yêu cầu chữ ký đã được thực hiện bằng cách sử dụng khóa do chính phủ Ấn Độ cấp.
Các ứng dụng
Các sơ đồ nhận dạng ẩn danh nhưng có thể xác minh được cho phép tạo ra các công trình thú vị.
Đầu tiên, nó có thể cung cấp một con đường thú vị để suy nghĩ lại về các thủ tục KYC đói dữ liệu. Mặc dù chúng tôi biết rằng chỉ bằng chứng về thẻ adhaar hợp lệ không thể cấu thành đủ thông tin cho các ứng dụng nhạy cảm, nhưng nó vẫn có thể hoạt động như một thành phần của quy trình tôn trọng quyền riêng tư KYC hoàn chỉnh hơn.
Một hàm ý thú vị khác liên quan đến lời nói có thể kiểm chứng được. Trong vài tháng qua, các giao thức và ứng dụng khác nhau, chẳng hạn như Semaphore hoặc HeyAnoun đã mang đến khả năng của các chương trình Zero-knowledge Proof để chứng minh thuộc về một nhóm có thuộc tính có thể kiểm chứng, trong khi không tiết lộ bất kỳ thông tin nhạy cảm nào của người dùng. Theo hướng đó, việc chứng minh tính hợp lệ của thẻ Adhaar có thể hoạt động như một yếu tố của hệ thống bỏ phiếu ẩn danh nhưng có thể xác minh được. Một ví dụ cụ thể về điều này có thể là sự phản kháng mạnh mẽ đối với việc bỏ phiếu bậc hai trong bối cảnh các dự án hàng hóa công cộng của Ấn Độ.
Cuối cùng, việc sử dụng sơ đồ chứng minh groth16 giúp thực hiện những ý tưởng như vậy bằng cách sử dụng một chương trình phụ trợ phi tập trung, chẳng hạn như Ethereum. Người ta có thể tưởng tượng một hợp đồng đăng ký, lưu trữ địa chỉ nào đã đăng bằng chứng thẻ adhaar hợp lệ. Điều này sẽ cho phép khởi động khả năng kết hợp, giúp pki thẻ adhaar có thể được tận dụng cho các giao thức DeFi hoặc ứng dụng xã hội.
Định hướng tương lai và lĩnh vực ứng dụng
Một hạn chế quan trọng vẫn là khả năng mở rộng mạch của chúng tôi thành các đầu vào lớn. SHA1 vẫn là hàm băm không thân thiện với zk, phát sinh chi phí hiệu suất quan trọng. Kích thước thẻ pdf Adhaar điển hình dao động trong khoảng 650Kb, một kích thước vượt quá khả năng của các mạch ngày nay. Tuy nhiên, việc có thể thực hiện băm một tài liệu như vậy sẽ cho thấy điều thú vị, vì nó sẽ cho phép không chỉ chứng minh tính hợp lệ của thẻ mà còn cả nội dung của nó. Các kế hoạch gấp như Nova là những ứng cử viên chính để khám phá một tùy chọn như vậy.
Tổng quát hơn, thời gian kiểm chứng vẫn là nút thắt cổ chai đối với trải nghiệm người dùng liền mạch. Trên Macbook Pro 2017 RAM 8Gb và 2,3 GHz, một máy trên mức trung bình so với các thiết bị hàng ngày được sử dụng ở Ấn Độ, việc tạo ra bằng chứng đòi hỏi thời gian chờ 10 phút. Ngoài ra, ở đây, tận dụng một chương trình phụ trợ chứng minh kiến thức bằng không khác, chẳng hạn như halo2 hoặc sơ đồ, như Nova , có thể cung cấp các chỉ số hiệu suất được cải thiện.
Ở cấp độ Ứng dụng phi tập trung , nếu chúng tôi yêu cầu người dùng chỉ sử dụng bằng chứng adhaar của họ một lần, điều đó có nghĩa là buộc một thẻ vào một địa chỉ. Yêu cầu như vậy không phải là hiếm, các ứng dụng phi tập trung thường tìm kiếm các cơ chế chống sybil để tự bảo vệ mình khỏi thư rác. Nếu chúng tôi liên kết một thẻ adhaar với một địa chỉ duy nhất, thì sẽ cần phải xây dựng bộ hủy. Tuy nhiên, điều này sẽ đòi hỏi khả năng một đại lý có quyền truy cập vào cơ sở dữ liệu adhaar hoàn chỉnh để phát hiện những cá nhân nào đã xác minh thẻ adhaar của họ trên chuỗi, do đó phá vỡ tính ẩn danh. Điều này có thể mang lại rủi ro cho người dùng trong bối cảnh không chắc chắn về quy định.



