一分钟学习数据安全—自主管理身份SSI加密技术

上篇介绍了SSI的架构。架构之后,我们要了解一下SSI发展的驱动力:加密技术。现代数字通信离不开数学和计算机科学,加密技术也源于此。加密技术使区块链和分布式账本得以实现,也使SSI成为可能。

以下我们就概览一下SSI基础架构中涉及到的加密技术:

一、散列函数

散列函数就是消息或文档的唯一指纹。唯一的文档产生唯一的散列值,相同的文档产生相同的散列值。软件发布时,同时会提供其散列,使接收者可以验证原内容是否有被篡改过。

散列函数是单向的,不可逆,但是有些老的散列散发比如MD5已经被证明是不安全的,需要避免使用。

在SSI中,散列都用作可验证数据结构的组成部分和数字签名算法的一部分。

二、加密

早期的加密方法有替换密码或其他打乱文本的方式。现代加密方法尤其在PKI体系中,不依赖对加密方法的保密,而是通过计算复杂度以及对密钥的保密来实现数据安全。

典型加密方法又分为对称和非对称加密,对称加密算法加解密用相同的密钥,如AES算法,密钥的大小往往跟密码的安全正相关。非对称加密加解密采用不同的密钥,如RSA,称为公钥和私钥,公钥用来共享,私钥必须私有,当知道收件人的公钥,就可以给其发送加密消息,这是区块链、DID的技术基础。

三、数字签名

数字签名用一句话描述就是用私钥来签名,再用公钥来验证签名。这个机制用在SSI堆栈的每个层级:

  • 第一层的区块链交易。
  • 第二层的DID连接。
  • 第三层的可验证凭证签署。
  • 第四层的治理框架签署,也签署框架内为置顶角色签发的可验证凭证。

四、可验证的数据结构

用密码学的方法创建具有特定属性的数据结构,用于对数据进行验证。

1. 加密累加器

  • 加密累加器表示对一大组数字进行计算的结果,知道其中累加值的人可以证明他们的数字是否包含在这个集合之中。

2. 梅克尔树

  • 这是一种非常紧凑高效的验证数据集完整性的方法。通过数学的方法来证明某个具体的数据项存在于大量的信息之中。

3. 帕特里夏树

  • 一种检索用文字数字编码信息的使用算法。是基数树的变体。基数树是一种层次化树结构,有根值、子树、父节点,表示为一组链接的节点。节点不存储任何信息,只用来指示在前缀树种的字符串内有拆分的位置。

在以太坊协议中有一种改进的MPT,也就是梅克尔-帕特里夏树组合方法。可以针对性的对协议做优化。

五、证明

使用加密技术来证明计算事实为真就是"证明"。数字签名就是一种证明形式。任何知道公钥但不知道私钥的人都可以证明某个特定签名是否是由知道相应私钥的人生成的。

零知识证明ZKP具有三个属性:

1、完整性,如果陈述为真,两个用户都正确遵守规则,验证方就会被说服。

2、可靠性,如果陈述为假,验证放在任何情况下都不会被说服。

3、零知识,任何情况下,验证放都不会知道更多信息。

在SSI场景中,使用ZKP技术一个人不必完全公开其他敏感的个人身份信息。

六、后记

以上的一些介绍说明加密技术可以在高度分散的系统中大规模部署,并具有很强的安全性,SSI中利用这些加密技术来证明生态系统中的参与者身份和数据事实。这就涉及到一个核心的数据结构:可验证凭证,我们将在下一篇中进行探讨。

安当将持续探索互联网身份认证方面的前沿技术,在未来产品演进中加入更多匹配客户安全需求的功能。

文章作者:太白

©本文章解释权归安当西安研发中心所有

相关推荐
职业考试资料墙2 分钟前
如何报名参加登高架设作业考试?
学习·考试·题库·考证
Peter11467178507 分钟前
服务器入门操作1(深度学习)
服务器·人工智能·笔记·深度学习·学习
小王努力学编程32 分钟前
动态规划学习——背包问题
开发语言·c++·学习·算法·动态规划
白夜易寒8 小时前
Docker学习之私有仓库(day10)
学习·docker·容器
淮北4949 小时前
ros调试工具foxglove使用指南三:在3d空间写写画画(Panel->3D ->Scene entity)
python·学习·3d·机器人
山河君10 小时前
音频进阶学习二十四——IIR滤波器设计方法
学习·算法·音视频·信号处理
Vic·Tory11 小时前
Go语言学习笔记
笔记·学习·golang
吴梓穆11 小时前
UE5学习笔记 FPS游戏制作28 显式玩家子弹数
笔记·学习·ue4
KevinRay_12 小时前
从零开始学习SQL
数据库·学习·mysql
虾球xz12 小时前
游戏引擎学习第195天
c++·学习·游戏引擎