返回首页

24小时热榜

1作者: jwally大约 22 小时前原帖
========================<p>这是什么?<p>========================<p>这是一个简短的演示,展示了商家如何以最低的成本和最小的数据泄露,将年龄验证外包给可信的机构(银行/KYC提供商)。用户从不向商家提供他们的身份信息——只提供像“over_18: true”这样的签名证明。这是一个务实的构建:WebAuthn证明了令牌的所有权;银行的ECDSA签名证明了证明的完整性。<p>========================<p>这有什么重要性?<p>========================<p>年龄验证通常要么破坏隐私(需要分享出生日期/社会安全号码),要么成本高昂。银行已经为许多客户进行KYC。如果他们能够安全地发放保护隐私且可加密验证的证明,商家就能在不存储个人身份信息(PII)的情况下实现合规,用户也能保留他们的数据。年龄验证在事实上变得不再有效,可能会限制言论自由。<p>========================<p>它是如何工作的(用户流程)?<p>========================<p>1) 访问 <a href="https://app.hornpub.click" rel="nofollow">https://app.hornpub.click</a><p>2) 点击生成PassKey<p>3) 复制PassKey(有按钮供您使用)<p>4) 点击铁银行链接<p>5) 点击“年龄验证”<p>6) 创建一些凭据进行登录 - (用户名:xxx,密码:xxx,二次验证:111111)<p>7) 将您的令牌粘贴到文本框中<p>8) 复制银行的令牌<p>9) 返回HornPub(点击按钮或其他方式)<p>10) 将令牌粘贴到“完成验证”文本框中<p>11) 点击“完成验证”按钮<p>12) 完成PassKey流程,访问网站<p>========================<p>它是如何工作的(商家流程)?<p>========================<p>1) 用户创建一个PassKey,您提取该密钥的ID和公钥<p>2) 对{id, PublicKey}进行Base64编码,并让用户复制<p>3) 用户前往他们的银行或KYC提供商。<p>4) 用户提供银行的令牌<p>5) 让用户通过提取银行数据中的凭据ID和公钥来执行WebAuthn身份验证。使用整个银行的有效负载作为您的WebAuthn挑战<p>6) 将身份验证有效负载发送到服务器<p>7) 验证WebAuthn身份验证——这证明用户没有创建令牌并出售它<p>8) 验证银行的签名。您可以选择信任的银行。这证明没有被篡改<p>9) 验证用户IP地址的盐值哈希。<p>========================<p>它是如何工作的(银行流程)?<p>========================<p>1) 在/.well-known/keys发布您的ECDSA签名密钥<p>2) 接受来自用户的字符串有效负载进行签名。您不需要验证或查看它。<p>3) 查找用户并添加年龄证明`over_18:boolean`和`over_21:boolean`<p>4) 创建一个随机数,并在您的签名目标中提供它和sha256(nonce:ip) <p>5) 签名base64Encode({over_18, over_21, nonce, ipHash, userPayload })<p>6) 将签名和签名目标提供给用户,以便他们复制回商家网站:<p>========================<p>安全注意事项与权衡<p>========================<p>WebAuthn证明了持有PassKey的人创建了凭据——防止用户伪造凭据并出售。<p>银行的ECDSA签名证明了证明来自被接受的银行且未被篡改。商家可以选择信任的银行。<p>随机数+ IP哈希最小化重放/复制粘贴攻击。这并不能使系统100%免受传票影响——日志和传票仍然可以关联事件。<p>隐私:商家仅接收布尔值证明,而不是出生日期或身份信息。银行不知道用户将在哪里使用令牌。