zoukankan      html  css  js  c++  java
  • 对话 NuCypher:如何安全地存储、共享和管理链上私人数据

    全球视角,独到见解

    前言

    Unitimes AMA(Ask Me Anything)是 Unitimes 重点打造的微信群线上问答系列活动,每周举办一期。我们邀请发展较成熟的区块链项目的创始人、CEO、CTO或核心开发者等嘉宾做客社群,与群成员就该项目的突出技术亮点以及用例等进行高质量互动问答,旨在学习交流区块链最新技术和应用。

    期数:第26期

    特邀项目:NuCypher

    特邀嘉宾:John Pacific,加密算法工程师

    主题:如何安全地存储、共享和管理链上私人数据

    AMA分为固定问答和自由问答两个环节。

    固定问答

    1

    Unitimes:你好 John。欢迎参加 Unitimes AMA,请先介绍一下你自己以及 NuCypher 吧。

    大家好,我是 John Pacific。大家通常都叫我 “Tux”(Linux 的吉祥物企鹅的名字),大家也可以t通过这个名字在我们的 Discord (一款语音与文字聊天工具)上找到我。

    NuCypher 是一个去中心化应用程序的隐私层。我们允许开发人员在构建尊重个人隐私的应用程序,并通过去中心化的方式尊重他们的意见。这一点是通过“代理重加密”技术(Proxy Re-Encryption )来实现的。

    2

    Unitimes:NuCypher 具体怎么运作的?它和中心化密钥管理系统有什么不同?

    使用称为“阈值加密”的东西并将其应用于代理重新加密(PRE),我们开发了一种称为“Umbral”(源自拉丁语,意为“影子”)的独特加密方案。

    Umbral 允许我们在法定数量的节点上分离对重新加密操作的信任,这就是 NuCypher 非常安全的原因。Umbral 使用“m of n”方案,该方案指定我们需要“m”次重新加密(称为阈值)来访问某些数据。

    在 NuCypher 网络中,我们将“n”个密钥分配给网络上“n”个节点。当这些节点收到重新加密的请求时,他们会执行加密操作用零知识证明的方法证明他们是正确的。如果他们没有正确地执行操作,那么我们可以使用我们在以太坊上部署的智能合约来削减恶意执行操作的节点。

    与中心化服务相比,NuCypher 的服务是去信任化的。我们在网络中的节点永远看不到明文,因为它们只在密文上运行。这是非常独特的,因为在中心化服务中,你得相信服务商不会把你的私钥泄露出去。

    通过这种方式,NuCypher 实现了抗审查且不可阻挡的端到端加密和隐私。

    3

    Unitimes:什么是代理重加密?你能用通俗易懂的语言给大家解释一下吗?

    假设有两个人分别叫 Alice 和 Bob。Bob 想要在 Alice 允许的情况下获得她的某些数据(例如照片)。但 Alice 不想用 Bob 的公钥来加密数据,因为这样的话他就可以保留对数据的永久访问权限。所以她希望共享用她自己的密钥来加密过的数据。

    通过使用代理重加密技术,Alice 可以授予 Bob 在特定时间内访问该照片的权限。要实现这一点,Alice 可以用她的私钥和 Bob 的私钥生成重新加密密钥。然后,她将密钥分成“n”个片段,并将每个片段分发到我们网络上的节点。

    (以上是代理重加密阈值加密部分)

    使用重加密密钥,节点能够用 Alice 的密钥转换加密数据,也能用 Bob 的密钥解密。

    NuCypher 不对“批量数据”(如照片或者其他加密过的内容)进行操作,我们只是对加密这些数据的密钥进行重加密。

    重加密之后,Bob 将有权限访问 Alice 指定的时间段内的数据。一旦超过了这个时间段,Bob 就会失去访问权限,再也看不到 Alice 的照片了。如果 Alice 不想让 Bob 访问数据,Alice 也可以随时撤销 Bob 的访问权限。

    代理重加密技术可以有效地创建访问控制系统。

    4

    Unitimes:代理重加密的典型应用场景有哪些?

    一个很典型的用例是不受审查的加密文件传输。如果你担心有人看到你要传输的文件而对文件传输进行阻止,那你就可以用 NuCypher 来进行操作。

    我们希望看到能够尊重用户感受的应用程序。如果在共享某个数据的中途不想再继续共享了,也可以撤销对这个数据的访问权限。

    建立认同这一点的数字系统对于社会公正和隐私来说非常重要。

    5

    Unitimes:NuCypher 网络中的区块链部分是如何运作的?

    我们的区块链部分其实非常简单——用于组织获取拆分重加密密钥片段的节点的数量。我们也会对这些节点的付款进行协调。

    我之前提到了这一点,区块链技术在 NuCypher 网络中的一个重要功能是使用零知识证明来证明重加密的正确执行。某个节点加入我们的网络时会质押我们的代币。如果这个节点执行错误的重加密并且零知识证明无法验证的话,那么我们就会削减他们的收益。

    6

    Unitimes:在你看来,为什么代理重加密非常适用于分布式系统?

    代理重加密比标准公钥加密具有更高的可扩展性。在标准公钥加密中,必须为系统中的每个用户加密。如果你想与 500 人共享一些数据,那就必须加密 500 次!

    这样的话扩展性是一个很大的问题。而代理重加密技术可以只需要进行一次加密,然后授予对该数据的访问权限。这个技术还允许我们在这些系统中建立隐私和同意控制,这是传统的公钥基础设施无法做到的。

    7

    Unitimes:你们打算如何和传统的密钥管理巨头(如谷歌亚、马逊和微软等)竞争?

    除了我们的产品以及我们实现安全的目标与他们一致之外,我认为我们并不真正参与和这些巨头的竞争。

    与谷歌、亚马逊或微软不同,我们现在专注于分布式系统。但是,我们的产品也非常具有竞争力。如果我们真的要竞争的话,我认为我们的技术团队能够与这样的公司竞争,甚至比他们做得更好。

    此外,我们还提供完全同态加密。我们的完全同态加密库目前是世界上最快、最实用的,而且技术也不断在进步。

    8

    Unitimes: NuCypher 代币 NKMS 有什么功能?

    我们的代币 NKMS 创建了一种激励机制,让我们能够引进我之前提到的博弈论机制。关于这方面的更多信息,推荐大家阅读这篇文章,了解我们的 WorkLock 代币分发模式:

    https://blog.nucypher.com/the-worklock/

    9

    Unitimes:NuCypher 会严重依赖以太坊的性能表现吗?

    仅仅在付款和节点数量组织流程上会依赖。

    但是,我们希望我们的方法能够在此方面进行改进,未来如果付款有了替代新方案之后,可能依赖度会降低。

    10

    Unitimes:一月底的时候 NuCypher 发布了创世版(测试版),目前运行得怎么样?你们的下一步计划是什么?

    进展非常顺利!我们目前专注于下一个版本——一个去中心化的开发网。在那之后,它将成为我们主网上线的终点线冲刺。

    我们一直在赞助黑客松,让更多的开发人员准备好开始在公共网络上使用我们的技术。我们通过创世版发现了许多漏洞并且已经为其构建修复程序了。这非常令人激动!

    自由问答

    固定问答环节结束后,参与此次AMA的成员可以自由提问。以下为 Unitimes 从群成员的提问中精选的几个问答:

    1

    运行一个节点能获得多少收益?

    这取决于你质押 (stake) 的资产的多少以及节点在网络中的正常运行时间和表现。想要获取一个明确的答案,请查看我在我们官网提及的挖矿论文。你可以根据你的具体情况来获知具体的收益详情。

    2

    你好, John。感谢你的分享。你们当前使用的零知识证明 (ZKP) 协议是什么?或者是你们使用的是一个定制化的协议?

    实际上我们使用的是一个最简单的协议—— Schnorr 协议证明。我们不需要在我们的应用中使用诸如 zkSNARKs 或者 Bulletproofs 等复杂的协议。我们可以使用更为简单的零知识证明协议。

    3

    你好,John。感谢你的分享。我的问题是,代理重加密 (proxy re-encryption) 主要是应用于私钥的加密,而是不原始数据的加密。我想知道的是你们会将数据存储在哪里?你们会维护一个类似 IPFS (星际文件系统) 的数据层吗?

    我们当前并没有限定存储的地方。我们允许应用开发者们将数据存储在任何他们想要存储的地方。当前我们的网络并没有一个存储层。

    4

    请问你“彭博社专栏将 Cosmos、Nervos、NuCypher 和 PolkaDot 列为2019年最应该关注的四个重点项目”这一事件有什么看法?

    我觉得这很棒!这证明了关注隐私保护和共识的开源技术能够带来重大影响。

    5

    撤销数据传输或者共享操作 (revoking access) 也需要最低人数达成共识吗?

    是的,我们需要一个最低数量的节点来参与到撤销操作中。但是,这项政策将会自行失效。

    6

    你好,John。当前还有其他代理重加密解决方案能和你们竞争吗?

    曾经有好几家企业致力于代理重加密的研究,但是他们的实现并不像我们的那样安全和强劲。据我所知,他们的竞争力不及我们。

    7

    我要在哪里将我的加密数据上传到 NuCypher 网络中?

    NuCypher 并不会提供一个存储方案。我们告诉开发者们,他们可以自由地选择存储方案,比如 Amazon S3、IPFS 和 Google Drive 等等。

    8

    如果节点出现故障,返回虚假或者错误的信息,那该怎么办?

    这就是为何我们需要零知识证明的原因。如果数据是虚假或者错误的,我们可以对数据进行证明。我们的智能合约将对有故障的节点进行罚没 (slash),网络也将自我纠正。

    9

    John,使用 Schnorr 零知识证明来验证数据的一般 gas 成本是多少?

    实际上成本有一点高。如果我记得没错的话,应该是 70万至100万 gas。但是只有当某个用户得到了一个错误的证明时,我们才有必要进行这一操作。报告错误证明的用户也会获得一笔报酬作为奖励,这笔奖励将足以抵消 gas 成本。

    10

    通过使用代理重加密,如果我的数据被黑客攻击了,那这些数据将依旧很安全吗?

    这要取决于攻击的类型,但我们的目标是让你的数据能够抵御任何攻击者(即便是政府级别的攻击者)。

  • 相关阅读:
    cJSON库源码分析
    cJSON 使用详解
    day23
    day22
    作业21
    day21
    作业20
    day20
    作业
    day19
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13312753.html
Copyright © 2011-2022 走看看