Titanium系列视频 02 | DFINITY Demo 演示:利用 IC 实现加密后的笔记本
本文将介绍一个由 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变革之旅!