专栏首页本体研究院本体技术视点 | 可以把工作邮箱作为公钥吗?

本体技术视点 | 可以把工作邮箱作为公钥吗?

01

Alice & Bob 转账与打电话的故事

在正式介绍 Celo 的基于地址加密方法前,让我们回想一下从用户角度来看 BTC 或者 ONT 等如何进行转账。假设 Alice 向本体新用户 Bob 转移1 ONT。Bob 首先需要下载本体的官方钱包 ONTO 或者 OWallet,创建一个地址,保存和这个地址对应的私钥。

图 | 网络

注意❗❗❗这个地址对于普通人来说,是很难记住的一个超长字符串。然后,Bob 需要通过其它渠道,比如电话或者邮件等,把他的地址告诉 Alice。至此,Alice 可以向 Bob 的地址转 ONT。

再考虑另外一个场景,Alice 和 Bob 都在某个集团的不同部门工作,Alice 想给 Bob 打个电话进行某项工作内容的交流。这时候,该集团在内部公开的电话簿起到了重大作用。Alice 记得 Bob 的名字和他的工作部门,她通过电话簿根据 Bob 工作的部门快速找到了 Bob 的名字,上面赫然印着 Bob 的电话号码。于是,Alice 拨通 Bob 的电话,和 Bob 进行了愉快的交流。

图 | 网络

在上面两个例子中,一个主要的区别在于,第二个场景中存在一个基础设施,一个电话簿,这保证了用户和他的信息进行对应。通过这个基础设施,用户可以快速方便地查找到另外一个用户。

02

如何把工作邮箱作为公钥?

在如今的互联网世界中,公钥一般是一串不可记忆的字符串,比如 RSA 加密算法的公钥可能是长达2048位的比特串,用户的公钥和用户信息绑定主要通过 PKI 完成。那么,是否有方法把用户邮箱,比如 bob@company.com 等,作为用户公钥呢?

图 | 网络

答案是肯定的,那就是基于身份的加密。在基于身份的加密中,可以将用户邮箱作为公钥,用用户邮箱将要发给用户的消息加密。用户收到密文后,用其对应的私钥进行解密。这其中带出了一个问题,用户的公钥是确定的,比如就是他的邮箱,那如何确定用户的私钥呢?

我们知道在一般的密码系统中,私钥随机生成,公钥都是由私钥生成的。而在基于身份的加密中,要求在用户公钥(邮箱等)确定的情况下生成用户的私钥。为了解决这个看似不可能的需求,基于身份的加密引入了一个可信第三方,或者称为密钥生成中心的机构,它拥有系统的一个主密钥,它根据主密钥和用户公钥(邮箱等)派生出该公钥对应的私钥,再将私钥分发给用户。

03

Celo 提出的基于地址的加密

在基于身份的加密中,密钥生成中心的存在会使得其应用受限,尤其是在一些开放、无需许可的环境中。Celo 根据基于身份加密的理念,提出了基于地址的加密。其主要思想是用一个由多个验证者组成的 P2P 网络来维护<地址,公钥>的映射关系数据库,其中地址可能是邮件地址、电话号码或者 IP 地址等,而公钥是由用户按照传统的公私钥对生成方法来生成。就像上一篇技术视点中指出的一样,通过这个映射关系,用户可以使用任意账号(如手机号等)作为公钥将 Celo 货币发送给朋友,从而可以轻松地向联系人付款。同时,即使朋友尚未下载钱包,用户也可以将 Celo 货币发送给朋友。

这个由多个验证者组成的 P2P 网络开放无需许可,任何人都可以自由加入网络中成为验证者,而验证者可以自由离开和重新加入。验证者不仅存储<地址,公钥>映射关系的数据库,同样也为需要加入的记录进行证明。

图 | 网络

当 Alice 想把自己的映射关系<Alice@company.com,039...c85>加入到该数据库中,她需要向系统的认证合约发起请求,并支付该次认证所需的费用。认证合约会从系统的验证者中随机挑选一个并向被挑中的验证者发送一个消息。该验证者把消息签名后发送给 Alice。Alice 在此基础上同样对消息进行签名,然后发给认证合约,当认证合约对签名验证成功后,将会记录此次认证。认证可以根据应用的需要进行多次。

对认证进行收费可以抵抗 DDoS 攻击,多个验证者的存在可以抵抗单点失败。如果要防止单个验证者做恶,可以在验证者集合之间对认证请求的处理进行共识,以防止恶意验证者将自己的公钥映射到其他人的地址上。另外一个问题是,对于<地址,公钥>这样公开的映射关系数据库,如果直接将用户邮箱作为地址,将会暴露用户隐私。因此,Celo 采用了将地址进行加盐哈希操作的方法,即存储的是<Hash(地址),公钥>这样的映射关系。另外,对于易用性和其它隐私性考虑等方面,Celo 也给出了一些可能的解决方案,如使用一个地址对应多个不同用途的公钥等。

04

结 论

从本质上来说,Celo 基于身份的加密,就是采用多点维护的<地址,公钥>数据库来记录用户地址和公钥的映射关系,一群验证者来保证这个数据库中记录的正确性。其他用户或者应用可以根据这个数据库来查询用户的公钥。但是当地址进行哈希后,其本身具有的一些优点如易记忆性也将消失。

图 | 网络

我们将持续关注 Celo,也希望和对 Celo 技术特点感兴趣的小伙伴进行交流。

* 参考链接:https://celo.org/

本文分享自微信公众号 - 本体研究院(ontologyresearch),作者:0x6d78

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 本体技术视点 | 浅析Ethash共识算法

    Ethash是 Ethereum 1.0基于 POW(工作量证明)的共识引擎,也叫以太的挖矿算法。其前身是 Dagger 算法和 Hashimoto 算法。

    本体Ontology
  • 科普 | 硬核充电来咯!有关Blockcerts V3提案你应该知道的事(三)

    上期我们为大家介绍了 Blockerts 作为可验证凭证是如何实现的,本期我们将继续连载翻译 Rebooting Web of Trust 组织在 RWOT I...

    本体Ontology
  • 本体重磅加入Torus Network,为密钥一键登录注入新活力

    近日,本体重磅加入 Torus Network,与 Binance、ENS、Etherscan 等众多机构共同运行一个验证节点,该节点将运行 Torus 的分布...

    本体Ontology
  • 见微知著,谈移动缺省页设计 - 腾讯ISUX

    腾讯ISUX
  • shiro 加密登录 密码加盐处理

    一觉睡到小时候
  • 产品推广:怎么样快速找到你的早期用户

    用户1756920
  • 万万没想到!上网会暴露这么多信息?10000 字深度揭秘用户数据埋点采集技术

    前段时间,我经常收到招商银行信贷部的电话,本来我都是直接挂掉的,但是有一天打了好几次,我终于忍不了了,接起来问:“能不能不要再给我打了?说了不需要不需要!“,对...

    姬小光
  • 如何防止网络诈骗

    网络诈骗是指犯罪分子通过编造虚假信息,设置骗局,对受害人实施远程、非接触式诈骗,诱使受害人给犯罪分子打款或转账的犯罪行为。

    用户6966869
  • spring+hibernate+struts2+compass整合

    http://www.cnblogs.com/hongten/gallery/image/113449.html

    Hongten
  • 个性化推荐是不是伪命题

    最近,有一位网友在微博上说,推荐是不是个伪命题?连续几天试用了据说很好的某头条,某资讯以及某快报,感觉逃脱不了看什么就是什么的套路。也有人说,这是Exploit...

    华章科技

扫码关注云+社区

领取腾讯云代金券