무신뢰성 및 개인 정보 보호 신원 확인 체계를 위해 기존 PKI 활용

이 기사는 기계로 번역되었습니다
원문 표시

이 프로젝트 동안 모든 도움을 준 AndyJay 에게 감사드립니다.

익명의 아드하르

adhaar 프로그램은 세계에서 가장 큰 디지털 신원 체계 중 하나입니다. 인도 인구의 약 90%를 차지하는 12억 명이 등록하고 있습니다.

Adhaar 카드에는 소지자의 생년월일과 지문을 포함하여 인구 통계 및 생체 인식 데이터가 모두 포함되어 있습니다. 이는 대출 계약이나 주택 신청과 같은 다양한 상황에서 사용됩니다.

영지식 활용하여 adhaar의 카드 유효성을 확인하는 방법을 제시합니다. 이 성과는 다양한 잠재적 응용 분야를 가지고 있습니다. 기존 공개 키 인프라를 활용하면 강력한 신원 증명을 저렴하게 제공할 수 있습니다. 또한, 우리 검증의 영지식 속성은 신원 검증을 수행하는 개인 정보 보호 방법을 제공합니다. Groth16 증명 체계를 사용하면 유효한 Adhaar 카드 증명 보유자 데이터를 체인에 이식할 수 있는 기능이 열립니다.

우리는 모든 adhaar 카드 홀더 유효한 adhaar 카드에 대한 증거를 생성할 수 있는 예제 웹앱을 개발했습니다. 우리는 오늘 누구나 이를 사용, 포크(Fork) 또는 구축할 수 있도록 오픈 소스화 하고 있습니다. 우리가 구축한 것을 사용하여 앱을 개발하거나 다른 ID 체계에 유사한 설정을 구현하는 데 관심이 있다면 주저하지 말고 문의하세요.

영지식 설정

adhaar의 카드 유효성을 확인하기 위한 회로 설정은 간단합니다. 우리는 사용자가 제공한 서명이 유효한 adhaar 카드 중 하나와 일치하는지 확인하고 싶습니다. 유효성에 대한 정의에서는 제공된 메시지가 입력 서명 및 공개 키와 일치해야 합니다. 우리는 공개 키가 "비즈니스 로직"으로 특정 엔터티에 해당하는지 확인하는 것을 고려합니다. 따라서 우리는 그러한 수표를 고객 확인 절차(KYC) 제공업체 백엔드 또는 스마트 계약과 같은 증명 검증 기관에 맡길 것입니다.

우리 회로는 두 가지 검사를 수행합니다.

  1. RSA 서명이 정확합니다. 우리는 서명을 공개 지수 거듭제곱으로 올리고 공개 키를 모듈러스로 계산하여 제공된 문서 해시 얻습니다.
  2. SHA1 패딩이 정확합니다. 제공된 메시지가 공개 키 모듈러스의 공개 지수 거듭제곱으로 올라갈 때 RFC 8017의 섹션 9.2를 따르는지 확인합니다.

우리의 회로는 4개의 입력으로 구성됩니다.

 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

먼저, 공개 지수로 올려질 때 제공된 RSA 서명이 입력 해시 와 일치하는지 확인합니다. 우리는 여기에 있는 구현을 재사용했습니다. 그런 다음 해독된 메시지 패딩, 즉 패딩된 해시 가 올바른지 확인합니다. Adobe의 PDF 서명 프로세스는 이 RFC 에 자세히 설명된 EMSA-PKCS1-v1_5 규칙을 따릅니다. Adhaar 카드는 서명하기 전에 SHA1을 해싱 기능으로 사용합니다. 따라서 우리는 패딩의 정확성을 확인하기 위해 처음에 SHA256용으로 작성한 참조 회로를 조정해야 했습니다. 우리는 회로의 수정된 버전을 제공합니다.

제한이 있을 수 있지만 서명과 문서의 해시 비공개로 유지하려고 합니다. 공개 검증 절차에 필요한 공개 지수와 공개 키만 공개합니다. 유효한 Adhaar 카드의 증거를 확인하는 경우 온체인 계약에서는 인도 정부에서 나오는 키를 사용하여 서명이 수행되도록 요구할 수 있습니다.

응용

검증 가능하지만 익명의 신원 체계를 통해 흥미로운 구성이 가능합니다.

첫째, 데이터에 굶주린 고객 확인 절차(KYC) 절차를 다시 생각해 볼 수 있는 흥미로운 방법을 제공할 수 있습니다. 유효한 adhaar 카드의 증명만으로는 민감한 애플리케이션에 대한 충분한 정보를 구성할 수 없다는 것을 알고 있지만 여전히 보다 완전한 고객 확인 절차(KYC) 개인 정보 보호 프로세스의 구성 요소로 작용할 수 있습니다.

또 다른 흥미로운 의미는 검증 가능한 음성에 관한 것입니다. 지난 몇 달 동안 Semaphore 또는 HeyAnoun 과 같은 다양한 프로토콜과 앱은 사용자에게 민감한 정보를 공개하지 않으면서 검증 가능한 속성을 가진 그룹에 속해 있음을 입증하는 영지식 증명 체계의 기능을 도입했습니다. 그런 맥락에서 Adhaar 카드의 유효성을 증명하는 것은 검증 가능하면서도 익명 투표 시스템의 요소로 작용할 수 있습니다. 이에 대한 한 가지 구체적인 사례는 인도의 공공재 프로젝트 맥락에서 2차 투표에 대한 시빌 저항이 될 수 있습니다.

마지막으로, groth16 증명 체계를 사용하면 이더리움과 같은 분산형 백엔드를 사용하여 이러한 아이디어를 구현할 수 있습니다. 어떤 주소가 유효한 adhaar 카드 증명을 게시했는지 저장하는 레지스트리 계약을 상상할 수 있습니다. 이를 통해 구성 가능성이 시작되어 Adhaar 카드 pki를 DeFi 프로토콜이나 소셜 앱에 활용할 수 있습니다.

향후 방향 및 적용분야

중요한 제한은 회로를 대규모 입력으로 확장하는 능력입니다. SHA1은 zk에 친화적이지 않은 해시 남아 있어 중요한 성능 비용이 발생합니다. 일반적인 Adhaar PDF 카드 크기는 약 650Kb이며, 이는 오늘날의 회로가 처리할 수 있는 것보다 큰 크기입니다. 그럼에도 불구하고 그러한 문서의 해싱을 수행할 수 있으면 카드의 유효성뿐만 아니라 내용도 증명할 수 있으므로 흥미로울 것입니다. Nova 와 같은 접는 방식은 이러한 옵션을 탐색할 수 있는 주요 후보입니다.

보다 일반적으로 증명 시간은 원활한 UX의 병목 현상으로 남아 있습니다. 8Gb RAM 및 2.3GHz 2017 Macbook Pro에서는 인도에서 사용되는 일상적인 장치에 비해 평균 이상의 장치로, 증명을 생성하는 데 10분의 대기 시간이 필요합니다. 여기서도 halo2 와 같은 다른 영지식 증명 백엔드나 Nova 와 같은 체계를 활용하면 향상된 성능 지표를 제공할 수 있습니다.

Dapp 수준에서 사용자에게 adhaar 증명을 한 번만 사용하도록 요구한다면 이는 카드를 주소에 연결하는 것을 의미합니다. 이러한 요구 사항은 드문 일이 아니며 분산형 앱은 스팸으로부터 자신을 보호하기 위해 시빌 방지 메커니즘을 찾는 경우가 많습니다. adhaar 카드를 단일 주소에 링크(Chainlink) 하려면 nullifier 구성이 필요합니다. 그러나 이는 완전한 adhaar 데이터베이스에 액세스할 수 있는 에이전트가 어떤 개인이 체인에서 자신의 adhaar 카드를 확인했는지 탐지하여 익명성을 깨뜨릴 수 있는 능력을 수반합니다. 이는 규제가 불확실한 상황에서 사용자에게 위험을 초래할 수 있습니다.

출처
면책조항: 상기 내용은 작자의 개인적인 의견입니다. 따라서 이는 Followin의 입장과 무관하며 Followin과 관련된 어떠한 투자 제안도 구성하지 않습니다.
라이크
즐겨찾기에 추가
코멘트