区块链中的密码学之数字证书体系(十四)

1. 前言

数字证书用来证明某个公钥是谁的,并且内容是正确的。

对于非对称加密算法和数字签名来说,很重要的一点就是公钥的分发。一旦公钥被人替换( 典型的如中间人攻击) ,则整个安全体系将被破坏掉。

怎么确保一个公钥确实是某个人的原始公钥?这就需要数字证书机制。

顾名思义,数字证书就是像一个证书一样,证明信息的合法性。由证书认证机构( Certification Authority,CA) 来签发,权威的 CA 包括 verisign 等。

数字证书内容可能包括版本、序列号、签名算法类型、签发者信息、有效期、被签发人、签发的公开密钥、CA 数字签名、其它信息等等,一般使用最广泛的标准为 ITU 和 ISO 联合制定的 X.509 规范。

其中,最重要的包括 签发的公开密钥,CA 数字签名两个信息。因此,只要通过这个证书就能证明某个公钥是合法的,因为带有 CA 的数字签名。

更进一步地,怎么证明 CA 的签名合法不合法呢?

类似的,CA 的数字签名合法不合法也是通过 CA 的证书来证明的。主流操作系统和浏览器里面会提前预置一些 CA 的证书( 承认这些是合法的证书) ,然后所有基于他们认证的签名都会自然被认为合法。

2. 密钥分配与密钥管理

2.1 密钥管理概述

密码系统的两个基本要素是加密算法和密钥管理。加密算法是一些公式和变换,它规定了明文和密文之间的变换方法。由于密码系统的反复使用,密钥是控制加密算法和解密算法的关键信息,用户必须建立双方的共享密钥来支持他们的安全通信。

密钥管理是指对密钥生命周期的全过程(产生、存储、分配、归档、使用、废除、销毁)实施的安全保密管理,满足保密系统的安全使用。

2.2. 单钥加密体制的密钥分配

2.2.1 密钥分配的基本方法

通过物理手段,通过安全信道进行传输,通过密钥协商算法共享密钥。

2.2.2 密钥的分层控制

KDC:密钥分发中心。

网络中如果用户数目非常多或分布地域非常广,一个KDC无法承担为用户分配密钥的重任,可采用多个KDC的分层结构来解决该问题。

分层结构可减少主密钥的分布,分层结构还可将虚假KDC的危害限制到一个局部区域。

2.2.3 密钥的控制使用

密钥按其用途分为密钥加密密钥(包括主密钥)和会话密钥

Δ 会话密钥是用来直接对数据加密的密钥,是最底层的密钥, 又称数据加密密钥或工作密钥;

Δ 密钥加密密钥对密钥进行加密,是最底层以上的所有密钥, 用来保护其它密钥。

Δ 主密钥:最顶层的密钥,是密钥系统的核心。

密钥标签:用于DES的密钥控制,将DES的64比特密钥中的8个校验位作为控制使用这一密钥的标签。

  • 一个bit:会话密钥还是主密钥
  • 一个bit:能否用于加密
  • 一个bit:能否用于解密
  • 其他bit:无特定含义,留待以后使用
  • 备注:标签在密钥中,与密钥一起被加密,可保护标 签。缺点:有长度限制,降低了灵活性和功能;标签 解密后才能使用,限制了对密钥使用的控制方式

控制矢量(比标签灵活)

  • 对每一会话密钥指定一个相应的控制矢量
  • 分为若干字段,分别用于说明在不同情况下密钥是否被允许使用
  • 长度可变
  • 控制矢量实在KDC产生密钥时加在密钥中
  • H=h(CV)
  • Kin=Km⊕H
  • Kout=EKm ⊕ H[Ks]
  • Ks=DKm⊕ H[EKm⊕ H[Ks]]
  • KDC在向用户发送会话密钥时,同时以明文形式发送控制矢量IV。用户只有使用与KDC共享的主密钥及IV才能恢复会话密钥KS,所以需要保留KS和它的IV之间的对应关系。

2.3 基于公钥加密体制的密钥建立

2.3.1 公钥的分配

由于公钥密码体制加密速度慢,在保密通信中不直接用于大数据的加密,主要用于密钥管理和认证。

  • 公开发布:用户将自己公钥发给其他用户,或向某一团体广播。 如:PGP中(RSA算法),用户将公钥附加到消息上,然后公开 到公共区域,如因特网邮件列表中 。
  • 公用目录表:管理员建立一个公用的公钥动态目录表(建立、维护、更新目录)(缺点:管理员易受攻击,密钥泄露)
  • 公钥管理机构:用户向该机构请求其他用户公钥。
  • 公钥证书:用户之间互相交换证书来获得公钥。

2.3.2 用公钥加密分配单钥密码体制的的密钥

图5-6的协议可以用文字描述如下:
协议5-6 简单使用公钥加密算法传输会话密钥

  1. A→B: PKA, IDA
  2. B→A: EPKA[KS]

分析:由于图5-6中的协议5-6在B返回的消息中使用的加密机制,被动攻击者通过搭线窃听无法获得会话密钥KS。

但是该协议不能抵抗主动攻击者,见攻击5-6 ?。

在攻击5-6 ?完成后,A与B建立了共享会话密钥KS,但C也知道KS。

这是公钥和身份没有绑定的缺陷。

2.3.3 Diffie-Hellman密钥交换协议

事先Alice与Bob(或多主体)约定一个公开的大素数p和一个大整数g,满足1<g<p(这里p,g公开且所有用户可共同使用)。

2.4 密钥托管

提出托管加密标准EES。

2.5 随机数的产生

2.5.1 随机数的使用

随机数在密码学中占有重要地位,可作为加密系统中的密钥(会话密钥、公钥算法中的私钥)、安全协议中的一次性随机数、身份认证等。

2.5.2 伪随机数产生器

最为广泛使用的伪随机数产生器是线性同余算法

  • Xn+1=(aXn+c)mod m

    • 迭代算法,a、c、m的取值是产生高质量随机数的关键
    • 为使随机数数列的周期尽可能大,m应尽可能大,可选 计算机能表示的最大整数,如接近或等于2^31
  • 线性同余算法的评价标准
    • 迭代函数是整周期的
    • 产生的数列看上去应是随机的
    • 迭代函数能有效地利用32位运算实现

2.5.3 基于密码算法的随机数产生器

通常分组密码或流密码具有良好统计和抗分析特性,很多随机数生成器使用这些密码算法来生成实际可用的随机数。

通过循环加密或者分组密码DES的输出反馈模式(OFB)。

2.5.4 随机比特产生器

BBS(Blum-Blum-Shub)随机数产生器,已经过证明的密码强度最强的伪随机数产生器。

首先,选择两个大素数p,q,满足p≡q≡3(mod 4),令n=pq。再选一随机数s,使得s与n互素。然后按以下算法产生比特序列{Bi}:

即在每次循环中取Xi(i=1,2,...)的最低位。

已知一个序列的前k个比特,不存在实际可行的算法能以大于1/2的概率预测下一比特是0还是1。

2.6 秘密分享

秘密分享(Secret sharing)是指多个参与者共同分享一个秘密,每个参与者拥有该秘密的一个份额,只有足够数量的份额联合才能回复该秘密,任何单个或部分份额无法恢复秘密。

A. Shamir和G. Blakley提出了秘密共享概念,并给出(t, n)门限秘密共享体制。

2.6.1 门限方案的一般概念

设秘密s被分成n个信息份额,每一部分信息称为 一个子秘密或影子(shadow),由一个参与者持有,使得:

  1. 由k个或多于k个参与者所持有的子秘密可重构s。
  2. 由少于k个参与者所持有的部分信息则无法重构s。

则称这种方案为(k,n)秘密分享门限方案,k称为方案的 门限值。 如果3 由少于k个参与者所持有的子秘密得不到秘密s的 任何信息。 则称这个方案是完善的,即(k,n)-秘密分享门限方案是完 善的。

2.6.2 Shamir门限方案

Shamir门限方案基于多项式的Lagrange插值公式。

设{(x1,y1),...,(xk,yk)}是平面上k个点构成的点集,其中 xi(i=1,...,k)均不相同,那么在平面上存在一个惟一的k- 1次多项式f(x)通过这k个点。若把密钥s取作f(0),n个 子密钥取作f(xi)(i=1,2,...,n),那么利用其中的任意k个 子密钥可重构f(x),从而可得密钥s。

插值多项式

定理(唯一性) :满足f(xi)=yi, xi=?xj (i=?j), i, j=1, ..., k的(k-1)次 多项式是唯一存在的。

事实上,设f(x)的表达式为f(x)=a0+a1x+…+a(k-1)x^(k-1)。

由已知条件, f(xi)=yi, xi=?xj(i=?j),i=1,...,k 得到如下线性代数方程组:

(k,n)秘密分享门限方案

(1) 选择k-1次多项式

设GF(q)是一有限域,满足q≥n+1,秘密s∈RGF(q) {0}。 k-1个系数a1,a2,...,ak-1的选取也满足ai∈RGF(q) {0}(i=1,2,...,k-1)。在GF(q)上构造一个k-1次多项式

f(x)=a0+a1x+…+a(k-1)x^(k-1)

(2) 秘密份额分发

n个参与者记为P1,P2,...,Pn, Pi分配到的秘密份额为f(i),i=1,...,n。

(3) 秘密重构
如果k个参与者希望获得秘密s,可使用{ij,, f(ij)|j=1,2,...,k}执行以下运算:

可行性分析:

因为ij (j=1,...,n)各不相同,所以f(x)可以由Lagrange公式重构:

如果少于k,如k-1个成员试图获得秘密s,他们只能构造由k-1个方程组成的线性方程组:

上述方程线性组中有k个未知量,无法获得关于多项式系数和常数项s=f(0)的任何信息。

例子:

设k=3,n=5,q=9,s=11,随机选取a1=2,a2=7,的多项式为 f(x)=(7x^2+2x+11) mod 19

分别计算

f(1)=(7+2+11) mod 19=20 mod 19=1;

f(2)=(28+4+11) mod 19=43 mod 19=5;

f(3)=(63+6+11) mod 19=80 mod 19=4;

f(4)=(112+8+11) mod 19=131 mod 19=17;

f(5)=(175+10+11) mod 19=196 mod 19=6

得5秘密份额1,5,4,17,6,分别秘密分发给五个参与者。

根据Lgrange插值公式,五个参与者中的任何3个成员使 用分发的秘密份额可以重构秘密份额。

例如P1,P2,P3将k=3,f(1)=1,f(2)=5,f(3)=4代入Lagrange插 值公式 。

3. PKI 体系

在非对称加密中,公钥则可以通过证书机制来进行保护,如 何管理和分发证书则可以通过PKI( Public Key Infrastructure) 来保障。

顾名思义,PKI 体系在现代密码学应用领域处于十分基础的地位,解决了十分核心的证书管理问题。

PKI 并不代表某个特定的密码学技术和流程,PKI 是建立在公私钥基础上实现安全可靠传递消息和身份确认的一个通用框架。实现了 PKI 的平台可以安全可靠地管理网络中用户的密钥和证书,包括多个实现和变种,知名的有 RSA 公司的 PKCS( Public Key Cryptography Standards) 标准和 X.509 规范等。

一般情况下,PKI 至少包括如下组件:

  • CA( Certification Authority) :负责证书的颁发和吊销,接收来自 RA 的请求,是最核心的部分;
  • RA( Registration Authority) :对用户身份进行验证,校验数据合法性,负责登记,审核过了就发给 CA;
  • 证书数据库:存放证书,一般采用 LDAP 目录服务,标准格式采用 X.500 系列。

CA 是最核心的组件,主要完成对证书的管理。常见的流程为,用户通过 RA 登记申请证书,CA 完成证书的制造,颁发给用户。用户需要撤销证书则向 CA 发出申请。

之前章节内容介绍过,密钥有两种类型:用于签名和用于加解密,对应称为签名密钥对和加密密钥对 。

用户证书可以有两种方式。一般可以由 CA 来生成证书和私钥;也可以自己生成公钥和私钥,然后由 CA 来对公钥进行签发。后者情况下,当用户私钥丢失后,CA 无法完成恢复。

3. 基于身份的密码体制

基于身份的加密(IBE , Identity-based Encryption)是不同于传统的PKI(公开密钥基础设施)而发展来的公钥加密机制,主要简化在具体安全应用中大量数字证书的交换和维护等问题。IBE中任意的数据串均可作为公钥,这个公钥就是他的身份标识,如E-Mail地址,电话号码等。

这张图的意思是PKG首先生成主公钥和私钥,然后Alice获取主公钥,结合自己的名字生成自己的公钥,,然后PKG根据Alice的公钥生成Alice的私钥。

但是上面的只是一种思想,没有找到合适的工作机制,直到提出基于双线性对(Bilinear Map)的身份密码体制。使用超奇异椭圆曲线(Supersingular Elliptic Curve)上 的双线性对(Weil Pairing或Tate Pairing),有效地实现 了基于身份的公钥加密方案。

双线性对是满足e(aX, bY)=e(bX, aY)=e(X,Y)^ab的函数映射。

双线性映射

设q是一个大素数,G1,G2是两个q阶群(通常G1,G2分别 为椭圆曲线群和有限域上乘法群),其上的运算分别为 加法和乘法。G1到G2的双线性映射e: G1×G1→G2,满足 以下性质:

  1. 双线性:对任意P,Q,R∈G1和a,b∈Z,有e(aP, bQ)=e(P, Q)ab, 或写成e(P+Q, R)=e(P, R)·e(Q, R)和e(P, Q+R)=e(P, Q)·e(P, R)。
  2. 非退化:映射不把G1×G1所有元素映射为单位元。 3 可计算:对任意的P,Q∈G1,e(P, Q)可以有效计算。

其中a,b是整数,P,Q是椭圆曲线上的点,e(P,Q)是普通有限域中元素。

双线性DH问题

定义:双线性DH问题简称为BDH(Bilinear Diffie-Hellman)问题,是指给定(P, aP, bP, cP)(a,b,c∈Zq*),计算w=e(P,P)^abc∈G2,其中e是一个双线性映射,其中P是G1的生成元,G1,G2是阶为素数q的群。

IBE方案:

令k是安全参数,g是BDH参数生成算法,输出包括素数q(k比特),两个阶为q的群G1,G2,一个双线性映射e: G1×G1→G2。消息空间为M={0,1}^n,密文空间为C= G1×{0,1}^n 。

An identity-based encryption scheme is specified by four randomized algorithms: Setup, Extract, Encrypt, Decrypt:
: takes a security parameter and returns (system parameters) and . The system parameters include a description of a nite message space , and a description of a finite ciphertext space . Intuitively, the system parameters will be publicly known, while the will be known only to the "Private Key Generator" (PKG).
: Extract: takes as input params, master-key, and an arbitrary , and returns a private key . Here is an arbitrary string that will be used as a public key, and is the corresponding private decryption key. The algorithm extracts a private key from the given public key.
: takes as input , , and , It returns a ciphertext .
: takes as input , , , and a private key , It returns .

(1) 参数建立

给定参数k,按下面的顺序运行代码:

  1. 输入k后运行g,生成素数q,两个阶为q的群G1,G2,一个 双线性映射e: G1×G1→G2。随机选择一个生成元P∈G1。
  2. 随机选取s∈Zq*,计算Ppub=sP。

3 选取一个杂凑函数H1: {0,1}* →G1*。设定加密明文长度为 n比特,再选一个杂凑函数H2:G2 →{0,1}^n。

系统主密钥s,
系统公开参数(k,g,q,e, n,P, Ppub, H1, H2)

(2) 加密 用接收方的身份ID作为公钥加密消息M,分为三步:

  1. 计算QID=H1(ID)∈G1
  2. 选择一个随机数r∈Zq
  3. 计算密文C=<rP, M⊕H2(gID^r) >,这里gID=e(QID,Ppub)∈G2*。

(3) 用户密钥生成对于一个给定的ID∈{0,1},密钥生成中心首先计算 gID=e(QID,Ppub)∈G2 ,然后计算用户ID的私钥dID=sQID。

(4) 解密
设密文C=<U, V>,解密者ID用私钥dID执行计算V⊕H2(e(dID,U))=M。

解密正确性证明
因为e(dID, U)=e(sQID, rP)=e(QID, P)^sr=e(QID, Ppub)^r=gID^r。

因此V⊕H2(e(dID,U))=V⊕H2(gID^r)= M⊕H2(gID^r)⊕H2(gID^r)=M。

原文地址:https://www.cnblogs.com/anapodoton/p/10686761.html

时间: 2024-07-31 14:17:30

区块链中的密码学之数字证书体系(十四)的相关文章

区块链中的密码学之数字签名方案(十二)

1. 前言 类似在纸质合同上签名确认合同内容,数字签名用于证实某数字内容的完整性( integrity)和来源( 或不可抵赖,non-repudiation). 一个典型的场景是,A 要发给 B 一个文件( 一份信息) ,B 如何获知所得到的文件即为 A 发出的原始版本?A 先对文件进行摘要,然后用自己的私钥进行加密,将文件和加密串都发给B.B 收到文件和加密串后,用 A 的公钥来解密加密串,得到原始的数字摘要,跟对文件进行摘要后的结果进行比对.如果一致,说明该文件确实是 A 发过来的,并且文件

区块链中的密码学(三)-椭圆曲线加密算法分析

在目前密码学的非对称加密算法中,RSA算法依然是一种主流,但是随着比特币中对于一种之前不太流行的算法:椭圆加密算法(ECC)的成功应用后,这种算法得到了很大的关注和普及.有一种说法是中本聪不信任RSA算法,认为美国人在其中留有后门,而据斯诺登的爆料也确实如此.相较RSA,ECC不仅在某种程度上杜绝所谓留有后门的情况,而且加密性能/安全性都有提高.本文就带大家一窥ECC算法的天地. 鉴于ECC算法对数学知识要求比较高,不像RSA依赖于中学数学的水平,ECC用到了许多<近世代数基础>,<初等

1.3.2 区块链中的密码学——Merkle 树

在计算机领域,Merkle树大多用来进行完整性验证处理.在处理完整性验证的应用场景中,特别是在分布式环境下进行这样的验证时,Merkle树会大大减少数据的传输量以及计算的复杂度. Merkle哈希树是一类基于哈希值的二叉树或多叉树,其叶子节点上的值通常为数据块的哈希值,而非叶子节点上的值是将该节点的所有子节点的组合结果的哈希值. 如下图所示为一个Merkle哈希树,节点A的值必须通过节点C.D上的值计算而得到.叶子节点C.D分别存储数据块001和002的哈希值,而非叶子节点A存储的是其子节点C.

1.3.2 区块链中的密码学——椭圆曲线密码算法(ECC)

今天在学椭圆曲线密码(Elliptic Curve Cryptography,ECC)算法,自己手里缺少介绍该算法的专业书籍,故在网上查了很多博文与书籍,但是大多数博客写的真的是...你懂的...真不愧是 '天下文章一大抄' 啊! 雷同不说,关键是介绍的都不是很清楚,是我在阅读过程中.产生的很多疑问无法解决!例如:只来句'P+Q=R',但是为什么等于呢?是根据什么计算出来的呢? 后来查了好久,才发现:这是规定的.是定义!瞬间很是无语! 好了,不吐槽了,为了方便大家对椭圆曲线密码算法有系统的了解,

区块链中的密码学

区块链概念 区块:可以看做是一页一页的账单,上面记录若干条数据 区块链:可以看做是账本,里面按照时间顺序将若干个账单 每个区块中包含两个最重要的值,自己的hash值,和上一个区块的hash值 详解: 区块链是一串使用密码学方法相关联产生的数据块,每一个区块中包含上一个区块的hash值,用于验证其信息的有效性(防伪)和生成下一个区块 Hash算法 Hash算法:可以将任意数据 生成 固定长度的16进制字符串 常见算法:md5 , sha1 , sha256 , sha512等,都是摘要算法 密码学

区块链中的密码学之默克尔树(十五)

目录 1. 前言 2. 默克尔树 3. 布隆过滤器 什么情况下需要布隆过滤器? 常规思路 布隆过滤器介绍 布隆过滤器原理 布隆过滤器添加元素 布隆过滤器查询元素 4. 同态加密 4.1 概览:同态加密的概念 4.2 同态加密的定义.安全性和简单实例 5. 零知识证明 零知识证明的提出 零知识证明的形式化定义 零知识证明满足的性质 基本的零知识协议 非交互式零知识证明 零知识证明的应用 1. 前言 2. 默克尔树 默克尔树( 又叫哈希树) 是一种二叉树,由一个根节点.一组中间节点和一组叶节点组成.

区块链中的节点是什么

随着区块链科技的进步,各种形态不同的链展现在大家面前,有些区块链中节点有很多(如以太坊),而有些区块链中的节点又很少(如EOS),今天我们拿第一代区块链比特币来讲. 比特币被设计为一种去中心化的点对点(P2P)网络 如中心化的应用都是由一台服务器集中管理,而去中心化的应用就是由很多台服务器管理存储信息,并且相互验证. 综上所诉的去中心应用中的服务器就是节点 节点的作用 为了确认交易有效性,比特币需要多于一个单独网络的矿工处理交易单,它必须通过"节点"向网络广播.这是交易处理过程的第一步

1.3.1 区块链中的加密算法——Hash算法(更新)

为了为保证存储于区块链中的信息的安全与完整,区块链中使用了包含密码哈希函数和椭圆曲线公钥密码技术在内的大量的现代密码学技术,同时,这些密码学技术也被用于设计基于工作量证明的共识算法并识别用户. 在前边的文章中已经系统的讲述了密码学中的哈希算法,在本节,将会给大家介绍Hash算法在区块链中的应用! 概念回顾: 哈希函数:是一类数学函数,可以在有限合理的时间内,将任意长度的消息压缩为固定长度的二进制串,其输出值称为哈希值,也称为散列值. 以哈希函数为基础构造的哈希算法,在现代密码学中扮演着重要的角色

区块链产品溯源系统到数字资产交易系统开发技术

如何用区块链实现商品打假? 电影<我不是药神>最近比较火.片中除了动容的情节故事外,还有一些细节也给我们留下了深刻的印象,比如假院士卖假药的桥段. 为什么目前假货如此泛滥? 源中瑞jojo开发产品溯源带来了新的思路 具体来说,区块链技术开发电↑.可以从以下三个方面赋能零售商品的防伪溯源,并克服传统方式无法解决的痛点. 第一,基于不可篡改的商品信息,解决信任问题. 第二,全程实时溯源各种商品信息. 第三,有效遏制造假行为. 除了上述三点,区块链与零售业的结合,还可以显著提高效率.降低成本.具体而