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

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

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

一、散列函数

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

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

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

二、加密

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

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

三、数字签名

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

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

四、可验证的数据结构

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

1. 加密累加器

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

2. 梅克尔树

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

3. 帕特里夏树

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

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

五、证明

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

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

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

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

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

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

六、后记

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

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

文章作者:太白               

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/693547.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python实现半双工的实时通信SSE(Server-Sent Events)

Python实现半双工的实时通信SSE(Server-Sent Events) 1 简介 实现实时通信一般有WebSocket、Socket.IO和SSE(Server-Sent Events)三种方法。WebSocket和Socket.IO是全双工的实时双向通信技术,适合用于聊天和会话等&a…

微信小程序学习笔记(1)

文章目录 一、文件作用app.json:project.config.json:sitemap.json页面中.json 二、项目首页三、语法**WXML**和**HTML**WXSS 和CSS的区别小程序中.js文件的分类 一、文件作用 app.json: 当前小程序的全局配置,包括所有页面路径、窗口外观、…

kv视频如何转码mp4格式,kv转换mp4最简单方法

在数字化时代,视频格式转换成为了一项日常需求。有时候我们需要把kv格式转换为MP4格式。下面将详细介绍kv转MP4的方法 方法一、 1、使用 "小白兔视频格式在线转换网站" 2、地址发给"小白兔视频格式在线转换网站"的客服,客服下载即可…

基于小波脊线的一维时间序列信号分解方法(MATLAB R2018A)

信号分解技术是把一个复杂信号分解为若干含有时频信息的简单信号,研可通过分解后的简单信号来读取和分析复杂信号的有效特征。因此,信号分解技术对分析结果的影响是不言而喻的。 傅里叶分解是早期常用的信号分解方法,最初被用于分析热过程&a…

树状数组的基础

树状数组1 树状数组可以解决什么问题呢? 可以解决大部分区间上面的修改以及查询的问题,例如1.单点修改,单点查询,2.区间修改,单点查询,3.区间查询,区间修改,换言之,线段…

分享一个用python写的本地WIFI密码查看器

本章教程,主要分享一个本地wifi密码查看器,用python实现的,感兴趣的可以试一试。 具体代码 import subprocess # 导入 subprocess 模块,用于执行系统命令 import tkinter as tk # 导入 tkinter 模块,用于创建图形用…

达梦8 开启物理逻辑日志对系统的影响

物理逻辑日志,是按照特定的格式存储的服务器的逻辑操作,专门用于 DBMS_LOGMNR 包挖掘获取数据库系统的历史执行语句。当开启记录物理逻辑日志的功能时,这部分日志内 容会被存储在重做日志文件中。 要开启物理逻辑日志的功能,需要…

如何将AndroidStudio和IDEA的包名改为分层级目录

新版UIAndroidStudio 1、点击项目目录右上角如图所示的三个点点。 2、然后依次取消Hide empty middle package ,Flatten package的勾选 3、注意:一定要先取消hide的勾选,不然目录不会完全分级(做错了可以反过来重新设置&#x…

VS2019专业版 C#和MFC安装

1. VS2019专业版下载地址 https://learn.microsoft.com/en-us/visualstudio/releases/2019/history 2.安装 C# 部分 MFC部分

利用SuperGlue算法实现跨尺度金字塔特征点的高效匹配(含py代码)

在计算机视觉领域,特征点匹配是一个基础而关键的任务,广泛应用于图像拼接、三维重建、目标跟踪等方向。传统的特征点匹配方法通常基于相同尺度下提取的特征进行匹配,然而在实际场景中,由于成像距离、分辨率等因素的差异&#xff0…

【个人博客搭建练手版】Windows环境下使用tale,mblog,halo三种框架搭建个人博客,适合准备搭建博客的练手之作

昨天发了一篇搭建博客的教程,竟然上新人榜了。 博客链接:https://editor.csdn.net/md/?articleId139392436 趁热打铁把该文章中说的使用在Windows环境使用docker desktop搭建halo博客练手的教程也写一下。 这篇文章不只有halo的搭建,还有ta…

堆排序讲解

前言 在讲堆的删除时,我们发现一步一步删除堆顶的数据,排列起来呈现出排序的规律,所以本节小编将带领大家进一步理解堆排序。 1.堆排序概念 那么什么是堆排序? 堆排序(Heap Sort)是一种基于堆数据结构的排…

JS-Fetch

Fetch 是一种用于进行网络请求的现代 JavaScript API。它提供了一种简单、灵活且功能强大的方式,用于从服务器获取资源并处理响应。 Fetch API 在浏览器中原生支持,并且以 Promise 为基础,使得异步请求更加直观和易用。使用 Fetch API&#…

C++ Qt实现http url启动本地应用程序

更多Qt文章,请访问《深入浅出C++ Qt开发技术专栏》:https://blog.csdn.net/yao_hou/category_9276099.html 文章目录 1、注册自定义协议2、编写web页面3、编写C++应用程序我们在使用腾讯会议时经常会通过http链接打开本地的腾讯会议,例如下图: 打开会议发起人给的链接,会出…

C语言小例程10/100

题目&#xff1a;要求输出国际象棋棋盘。 程序分析&#xff1a;国际象棋棋盘由64个黑白相间的格子组成&#xff0c;分为8行*8列。用i控制行&#xff0c;j来控制列&#xff0c;根据ij的和的变化来控制输出黑方格&#xff0c;还是白方格。 #include<stdio.h>int main() {…

Elasticsearch:ES|QL 查询 TypeScript 类型(二)

在我之前的文章 “Elasticsearch&#xff1a;ES|QL 查询 TypeScript 类型&#xff08;一&#xff09;”&#xff0c;我们讲述了如何在 Nodejs 里对 ES|QL 进行查询。在今天的文章中&#xff0c;我们来使用一个完整的例子来进行详细描述。更多有关如何使用 Nodejs 来访问 Elasti…

【马琴绿绮】马维衡古琴之马氏汉风 明代杉木制;周身髹朱红色漆

【马琴绿绮式】马维衡古琴之马氏汉风 明代杉木制&#xff1b;琴体周身髹朱红色漆&#xff0c;鹿角霜灰胎&#xff1b;形体壮硕、风格高古&#xff1b;音色松透、浑厚&#xff0c;音质纯净&#xff0c;按弹舒适&#xff0c;手感丝滑。

AI视频教程下载:如何用ChatGPT来求职找工作?

这是一个关于使用ChatGPT找工作的课程&#xff0c;作者分享了自己的求职经验和技巧&#xff0c;介绍了如何使用人工智能来改进个人资料和简历&#xff0c;以及如何研究公司和面试。通过细节处理职业目标、分享个人兴趣和技能、寻求导师和专业发展机会&#xff0c;以及在行业内建…

LLVM Cpu0 新后端 系列课程总结

想好好熟悉一下llvm开发一个新后端都要干什么&#xff0c;于是参考了老师的系列文章&#xff1a; LLVM 后端实践笔记 代码在这里&#xff08;还没来得及准备&#xff0c;先用网盘暂存一下&#xff09;&#xff1a; 链接: https://pan.baidu.com/s/1yLAtXs9XwtyEzYSlDCSlqw?…

状态方程ABCD矩阵如何确定例子

状态方程ABCD矩阵如何确定 确定状态空间表示中的状态矩阵A、输入矩阵 B、输出矩阵C 和直通矩阵D,需要从系统的动力学方程出发,并将其转换为状态方程的形式。我们可以通过一个具体的物理系统(如倒立摆系统)来说明这一过程 例子:倒立摆系统 系统描述 考虑一个倒立摆系统…