区块链密码学

链客区块链技术问答社区 · · 1078 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

链客,专为开发者而生,有问必答!

此文章来自[区块链技术社区](https://www.liankexing.com),未经允许拒绝转载。


区块链密码学11

一 、概念

主要介绍非对称加密的一些概念。

公钥、私钥:均可加密或解密。私钥用来解密和签名,给自己用的。公钥由本人公开,用于加密和验证签名,给他人用的。

验签:用公钥解密签名得到摘要,然后用原始文件经过hash得到摘要,与解密出的摘要进行对比。 

签名:内容->hash->digest->私钥加密->签名 

证书:数字证书则是由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名(相当于加盖发证书机构的公章,即CA的私钥加密生成)后形成的一个数字文件。

二、举例说明

假设X给Y写一份信,那么这封将包含如下三部分内容: 

1、信本身的内容 

2、X的数字签名 

3、X的数字证书

然后Y收到这封信,Y会想这封确定是X发过来的吗?这封信在发送过程中有被篡改,还是完整的吗?只有当Y确认清楚,才能判断出信的内容是否可靠。 

然后Y先用ZX提供的公钥解开数字证书,根据得到:如X个人信息,确定是X发过来的;得到X的公钥等。

接着,用X的公钥解开X的数字签名就能得到,信本身内容的摘要。然后将信的本身内容经hash计算得到又一个摘要,将两个摘要比较,如果相同说明信的内容没有被篡改。

BCCSP(Blockchain crypto provider)即区块链加密提供商,用于定义选择使用的密码学实现库。负责摘要生成,非对称密钥的签名与验证,根据证书查找私钥等。该模块提供了一系列的接口,这些接口定义了摘要的生成方法,签名,验证,加密,解密等。所有自定义的密码学实现库都需要实现这些接口,以此达到密码学算法的可插拔。

目前fabric BCCSP模块的接口有三种实现类,如下图所示: 

其中SW(software based)实现方式是直接调用golang提供的库文件来进行加解密,哈希,签名验签等。 

PKCS11是调用ecdsa来进行加密,解密,哈希,签名验签等,而ecdsa是通过调用动态运行库来进行以上功能的完成。

GM国密算法实现方式与PKCS11一致。中间层提供SM2进行签名与验签,SM3进行哈希,SM4实现加密。

ECDSA: 全名是Elliptic Curve DSA,即椭圆曲线DSA。它是Digital Signature Algorithm (DSA)应用了椭圆曲线加密算法的变种。椭圆曲线算法的原理很复杂,但是具有很好的公开密钥算法特性,通过公钥无法逆向获得私钥。

PKCS:RSA实验室与本行业、学术界和政府的代表一起合作,开发出一套称为公共密钥加密标准(Public-Key Cryptography Standards )的规范。


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:链客区块链技术问答社区

查看原文:区块链密码学

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1078 次点击  
加入收藏 微博
1 回复  |  直到 2019-07-06 13:14:41
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传