假设我们想开发一个博客服务,只有拥有@example.com
电子邮件的人才能贡献。
在提交提交之前,用户请求服务生成一个大的随机令牌并将其发送到他们的user@example.com
电子邮件。此令牌存储在服务的数据库中,然后可用于验证发布特定消息 + 令牌组合的人是否确实控制了@example.com
电子邮件地址。
只要用户相信该服务没有将他们的电子邮件地址与他们收到的令牌相关联,这就会很好地工作。然而,考虑一个场景,用户想要发布一些无法追溯到他们的东西(由其他用户[这很容易],或由服务本身[困难部分])。
是否可以向服务证明我拥有某个电子邮件地址(通过了解发送到该地址的电子邮件的内容)而不允许该服务将该电子邮件地址与特定秘密相关联?
目前,假设是一项善意的服务,通过在每个帖子旁边存储一个“签名”以供所有人查看,很容易让发布者证明他们是匿名帖子的作者。这将被计算为hash(<posters_email_address>@example.com + <auth_token>)
在任何时候,原始作者都可以公开宣布他们的电子邮件和授权令牌,并且可以检查哈希值。使用此方案,每个发布者对于平台的所有其他用户/查看者都是匿名的(如果他们选择匿名),但至关重要的是,他们对平台不是匿名的可能性未知(如果它选择恶意)。
总之,我们能否向潜在的恶意服务器证明我们收到了某种授权(通过访问电子邮件地址),以防止服务将该电子邮件地址与给定令牌相关联?
编辑:我已经做了一些思考,似乎通过电子邮件接收令牌的人需要在将令牌发送回服务器之前对其进行一些操作,以使将令牌追溯到他们是不可能的。它必须以无法与原始令牌进行比较的方式进行修改,但仍保留一些属性,服务器知道修改后的令牌是从它发出的某个令牌派生的。
澄清:我们不是@example.com
域的管理员。除了我们明确检查客户是否在其中注册了电子邮件这一事实外,该域没有什么特别之处。