Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all articles
Browse latest Browse all 12749

区块链核心算法之非对称加密技术

$
0
0

区块链核心算法之非对称加密技术
2018-08-14 22:15 区块链 技术
区块链核心算法之非对称加密技术
78 收藏

如果10个将军中的几个同时发起消息,势必会造成系统的混乱,造成各说各的攻击时间方案,行动难以一致。非对称加密技术完全可以解决这个签名问题。

上一篇在曲速未来安全区中说到的拜占庭协定中,如果10个将军中的几个同时发起消息,势必会造成系统的混乱,造成各说各的攻击时间方案,行动难以一致。谁都可以发起进攻的信息,但由谁来发出呢?其实这只要加入一个成本就可以了,即:一段时间内只有一个节点可以传播信息。当某个节点发出统一进攻的消息后,各个节点收到发起者的消息必须签名盖章,确认各自的身份。

如今,非对称加密技术完全可以解决这个签名问题。

非对称加密技术,在现在网络中,有非常广泛应用。加密技术更是数字货币的基础。

所谓非对称,就是指该算法需要一对密钥,使用其中一个(公钥)加密,则需要用另一个(私钥)才能解密。非对称加密,加密与解密使用的密钥不是同一密钥,对中一个对外公开,称为公钥,另一个只有所有者知道,称为私钥。

用公钥加密的信息只有私钥才能解开,反之,用私钥加密的信息只有公钥才能解开(签名验签)。

代表:RSA算法。速度慢,适合少量数据加密。对称加密算法不能实现签名,因此签名只能非对称算法。

RSA算法原理

RSA算法的基于这样的数学事实:两个大质数相乘得到的大数难以被因式分解。如:有很大质数p跟q,很容易算出N,使得 N = p * q,但给出N, 比较难找p q(没有很好的方式, 只有不停的尝试)

这其实也是单向函数的概念。

下面来看看数学演算过程:

选取两个大质数p,q,计算N = p * q 及 φ ( N ) = φ (p) * φ (q) = (p-1) * (q-1)

质数(prime numbe):又称素数,为在大于1的自然数中,除了1和它本身以外不再有其他因数。

互质关系:如果两个正整数,除了1以外,没有其他公因子,我们就称这两个数是互质关系(coprime)。

φ(N):叫做欧拉函数,是指任意给定正整数N,在小于等于N的正整数之中,有多少个与N构成互质关系。


区块链核心算法之非对称加密技术

1. 欧拉函数

定义:对于一个正整数 n ,小于 n 且和 n 互质的正整数(包括 1)的个数,记作 φ(n).则


区块链核心算法之非对称加密技术

证明:

如果n是一个质数,那么φ(n) = n-1

如果n是一个质数p的幂,即n = p^k,则φ(n) = p^k-p^(k-1) = (p-1)*p^(k-1)

欧拉函数是一个积性函数,当n,m互质的时候,φ(n*m) = φ(n)*φ(m)

2. 欧拉定理

1.定义:如果两个正整数a和n互质,则n的欧拉函数 φ(n) 可以让下面的等式成立:

a^φ(n)%n=1

2.选择一个大于1 小于φ(N)的数e,使得 e 和 φ(N)互质


区块链核心算法之非对称加密技术

3.计算d,使得de=1 mod φ(N) 等价于方程式 ed-1 = k φ(N) 求一组解。


区块链核心算法之非对称加密技术

4. (N, e)封装成公钥,(N, d)封装成私钥。假设m为明文,加密就是算出密文c:m^e mod N = c (明文m用公钥e加密并和随机数N取余得到密文c)解密则是:c^d mod N = m(密文c用密钥解密并和随机数N取余得到明文m)


区块链核心算法之非对称加密技术
加解密步骤

具体还是来看看步骤,举个例子,假设Alice和Bob又要相互通信。

Alice 随机取大质数P1=53,P2=59,那N=53*59=3127,φ(N)=3016

取一个e=3,计算出d=2011。

只将N=3127,e=3 作为公钥传给Bob(公钥公开)

假设Bob需要加密的明文m=89,c = 89^3 mod 3127=1394,于是Bob传回c=1394。 (公钥加密过程)

Alice使用c^d mod N = 1394^2011 mod 3127,就能得到明文m=89。 (私钥解密过程)

安全性分析

那么,有无可能在已知n和e的情况下,推导出d?


区块链核心算法之非对称加密技术

如果n可以被因数分解,d就可以算出,因此RSA安全性建立在N的因式分解上。大整数的因数分解,是一件非常困难的事情。只要密钥长度足够长,用RSA加密的信息实际上是不能被解破的。

RSA核心算法

快速幂取模算法

算法1:连乘算法,时间复杂度O(n)

算法2:快速幂算法,时间复杂度O(logn)


区块链核心算法之非对称加密技术

算法3:快速幂取模算法,时间复杂度O(logn)


区块链核心算法之非对称加密技术

素数判定算法


区块链核心算法之非对称加密技术

由于非对称加密算法的运行速度比对称加密算法的速度慢很多,当我们需要加密大量的数据时,建议采用对称加密算法,提高加解密速度。

对称加密算法不能实现签名,因此签名只能非对称算法。

由于对称加密算法的密钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,因此当数据量很小时,我们可以考虑采用非对称加密算法。

在实际的操作过程中,我们通常采用的方式是:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。

本文为作者“区块链安全档案”,原创文章,转载时请保留本声明及附带文章链接。 内容仅供读者参考,并非投资建议,本网站将保留所有法律权益。


区块链核心算法之非对称加密技术

Viewing all articles
Browse latest Browse all 12749

Trending Articles