非对称秘钥,数字签名和数字证书打通的几个字箴言

本文深入解析非对称加密原理,包括大质数分解、散列对数等单向函数的应用,以及如何利用公钥和私钥进行加密与解密。同时,详细介绍了数字签名的法律效力和其在网络世界中的重要作用,强调私钥保密的重要性。

非对称加密集中了大质数分解、散列对数等单向函数,证明用到了数论、同余思想,使得一学就忘,一用就错,一错就混的惨局。
于是花了小半天把非对称秘钥的算法搞了搞通,顿时再看数字签名和证书就不是事儿了。

公式

加密为:
M e   %   n = m M^e ~\% ~n = m Me % n=m
解密为:
m d   %   n = M m^d ~\% ~n = M md % n=M
这里M为明文,m为密文,e为公钥,d为私钥, n为欧拉函数(两个大质数的减一乘,(p-1)(q-1), d实际为余1逆元 e d   % n = 1 ed~\% n = 1 ed %n=1).
可以看到这两个式子其实是互易的(就是M m换个个头,m明文,M密文也成立)1,这是可以用公钥加密,私钥解密;同样可以用公钥加密,私钥解密的基础。前者过程就是信息的加密,而后者就是数字签名的过程两者类似的是,私钥都不能泄露,公钥可以随便传播。但是目的不同,前者是传递信息,密文无法被人破解。后者侧重,密文无法被人仿冒,从而可以唯一确认你的身份。

数字签名

  • 根据05的数字签名法,具备法律效率的。
  • 数字签名不等同于实际签名,或者你的文字签名的数字化,或者名字的艺术字的扫描件等等。正经的有法律效力的数字签名是你用自己的私钥签名的合同(文件)。签在合同、法律文件上具备唯一性,不可抵赖性。
  • 数字签名才是网络世界真正的有效签字,传真你的手笔签名都太low了,而且实际使用中风险较大。而数字签名的全部风险在于你的私钥被泄露。

基于不对称秘钥的数字签名的认证有三个要件:

Created with Raphaël 2.2.0 你的私钥对特定文件的散列值(摘要)的加密 你的文件原文(数字证书)和公钥 算法验证,通过? 身份确认 仿造身份 yes no

注意到验证算法是必须全公开的,而验证匹配关键在于你的私钥没有泄露还有加密文件的原文和公钥是可信的(否则,仿冒者任伪造文件,并由此生成公钥也可以轻易蒙骗你)。

所以公钥的发放是很慎重的,采取了官方发放,官方数字签名加盖的双重保险。但这样就陷入证书认证证书的循环,追溯到源头有一个“根证书”就是这么来的。验证一级级得证书方法机构的可信性而产生。2)机制保障,开放网站验证,定点更新和公布秘钥。

而这个妥善构建你的公钥、官方数字签名、时效等等的宝贵文件就是数字证书了,注意其必然是和数字签名 私钥一起使用的,单独任何一个没有意义。

code

惯例了,python附上简单公钥e和私钥d的生成过程,以及加密几个数字"255/ 319/555"

# 加密基于的大数相乘的单向性+对数散列的单向性都用了 NP问题;
# n = (p-1)(q-1), e = 质数 于n, d为乘法逆元 ed%n = 1;
# p = 61, q = 53; e = 17, d = 2753
n = (61-1)*(53-1)
e = 17  # 17是比n小而和n互素的数,
d = 2753 #d是满足d*e % n = 1的值(即和e余n的乘法逆元)
print("Big data is n %d, equal %d"%(n, e*d % n))

# ex 1,加密 255,解密输出,密文输出
# 公式: M ** e % n = m, m ** d % n = M
m = 255
M = m ** e % n
m_est = M ** d % n
print("Encript %d is num %d, validate output %d"%(m, M, m_est))

#ex2
m = 319
M = m ** e % n
m_est = M ** d % n
print("Encript %d is num %d, validate output %d"%(m, M, m_est))

#ex3
m = 555
M = m ** e % n
m_est = M ** d % n
print("Encript %d is num %d, validate output %d"%(m, M, m_est))

j结果图
注意到一个有趣的255的明文和译文是一样的(当然仅仅对于3120的n,17,2753的公私钥)


  1. Note:实际上公钥和私钥e和d在生成中有顺序,故其抗破解能力有差异的,所以实际使用中选择不能透漏的私钥有讲究。不过在理解和运用数字签名中不是关键问题。 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值