查看原文
其他

​Titanium系列视频 02 | DFINITY Demo 演示:利用 IC 实现加密后的笔记本

ICPL ICPL 2022-05-06

本文将介绍一个由 IC 提供支持的示范应用程序 Encrypted Notes。它允许用户将笔记加密后安全地存储在互联网计算机上,并在不同设备之间同步它们。示例可以使用互联网身份登录并立即开始写入笔记。



我们现在可以取一个示例节点并保存它。


你的所有节点都会在网络浏览器中本地加密,加密数据被传送并存储在互联网计算机上,因此除了你自己之外没有人可以读取它们。


这里我们可以看到之前添加的笔记,可以对其进行编辑。



还可以像筛选器一样过滤或搜索希望从笔记应用中获得的任何内容。



现在要模拟不同的设备,我们使用右侧的另一个浏览器来进行模拟,正常我们应该得到相同的笔记内容。



如果我们在此处编辑某些内容,更改也会反映在左侧的设备上。可以在这里看到所有不同的设备。



如果我们将其删除,对应设备将被移除,密钥将被删除,必须再次登录并再次同步密钥才能在新设备上使用笔记。如何运行的为了更好地服务于前端,我们使用了资产容器(asset canister)。这是与 IC 开发人员工具捆绑在一起的易用型容器。资产容器提供了一种使用资产认证安全提供静态文件的简单方法。前端本身是用 swelt 编写的,这是一个基于 javascript 的轻量级框架,并与存储所有动态数据的单独容器通信。对于这个加密的笔记容器,我们提供了两种替代实现,一种是用 Motoko 编写的,另一种是用 Rust 编写的。通过这种方式,来自任一生态系统的开发人员都可以从该项目中学习和汲取灵感。



从资产容器加载前端后,会看到使用互联网身份登录的界面。使用互联网身份登录允许您在所有设备上使用相同的原则,这也允许通过使用容器存储在设备之间共享状态。但要注意的是,容器存储通常是不加密的。如果您有权访问某个节点,则可以读取在那里运行的任何容器的容器存储,因此我们必须在该应用中加入加密步骤。如前文所述,笔记是在客户端本地加密的。



如果只使用一个设备就很简单,只需在设备上本地生成一个私钥,并使用它来加密和解密节点。



那么我们如何在不同设备之间同步秘密呢?每个设备都会生成一个公私钥对,私钥保留在设备上并且永远不会接触网络,但是公钥会通过网络上传到容器中。



允许任何设备下载其他设备的公钥。



通过使用公钥,生成共享密钥的初始设备现在可以为其他设备和它自己来进行加密。这些加密的秘密只能由拥有相应私钥的设备解密。


这样,任何知道秘密的设备都可以以安全的方式将其提供给其他设备。



收到加密的秘密后,新设备可以使用其私钥对其进行解密,然后下载所有加密的笔记并使用该秘密对其进行解密。



在注销时,由于每个设备的秘密都被加密,除了私钥-公钥对外所有本地状态都可以删除。


链接

我们对加密节点步骤架构的概述到此结束。您可以试用此应用程序并使用这些链接查看 Dfinity 示例存储库中的代码。


演示视频:https://www.youtube.com/watch?v=DZQmtPSxvbs&list=PLuhDt1vhGcrfCVx1CVFrRcFomKtm9wnYe&index=6



联系我们

ICPL Twitter:

https://twitter.com/icpleague_com

ICPL Medium:

 https://medium.com/icp-league

ICPL Telegram:

 https://t.me/ICPL_en

ICPL 论坛:

 https://icpleague.com


入群 请添加小助手微信号


关注ICPL

开启互联网计算机Web3变革之旅!


ICPL 是专注于互联网计算机协议即 ICP 与 Web3 的社区与孵化器。成立于2017 年,是 ICP 最早且最大的中文社区,作为 DFINITY 官方的主要合作伙伴,为ICP 生态发展提供核心驱动力量!



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存