安全作业4月13日

作业要求如下图
请添加图片描述

RSA

先复习一下RSA密钥生成的过程:首选取两个互质数p和q,然后通过他俩相乘,p * q 得到 N,N=p*q,这时我们需要计算出φ(N),φ(N)是小于或等于N的正整数中与N互质的数的数目。
我们通过φ(N)=(p-1)×(q-1)可以快速计算出φ(N)。
然后,我们选择一个数e,满足以下两个条件,第一, 1<e<φ(N),第二,且e与φ(n) 互质。
接着,我们通过以下公式计算e的逆元d。
e*d ≡ 1 (mod φ(n))
这个公式简单来说就是e*d除以φ(N)得到的余数为1。

然后就计算完成,得到了私钥和公钥。
公布公钥KU={e,N}
保存私钥KR={d,N}

  1. 为什么q和p的选择是要安全素数?
    答:首先,RSA的安全性依赖于大数的因子分解,而且涉及到一个乘法逆的问题。两个大质数的情况下乘法逆会有很多。而且为了安全,我们通常要求p和q应是大素数且他们的位数不要相差太远;gcd(p-1,q-1)应该要较小; p-1 和 q-1都应该要有一个比较大的素数因子,那么这个就是m和n。( 也就是满足p=2m+1可以提高他的安全性)
  2. 公钥e的选择有什么要求?
    如上所述,原则上e需要满足以下两个条件,第一, 1<e<φ(N),第二,且e与φ(n) 互质。然后平时做题可以感觉到,一般选取的e都是从小向大选取的,也就是e一般都比较小。
  3. 私钥d的选择有什么要求?
    私钥d是由e和φ(N)计算得来的。即选择的d必须与上述e一起,满足e*d ≡ 1 (mod φ(n))。
  4. 加密、签名对密钥有何不同的保护要求?
    (1)加密密钥
    加密密钥对由加密公钥和解密私钥组成。其中,解密私钥应该进行备份和存档,以便能在任何时候解密历史密文数据,而加密公钥则无需备份和存档,加密公钥丢失时,只需重新生成密钥对即可。
    (2)签名密钥
    签名私钥是发送方身份的证明。
    用做数字签名的这一对密钥一般可以有较长的生命期。
    签名密钥由签名私钥和验证公钥组成,其中,签名私钥绝对不允许做备份和存档,丢失后只需重新生成新的密钥对。而验证公钥需要存档,用于验证旧的数字签名。

附加实验题

准备工作:

 openssl genrsa -aes128 -out ca.key 2048

在这里插入图片描述

openssl rsa -in ca.key -out ca.key

在这里插入图片描述

openssl req -new -x509 -key ca.key -out ca.crt -days 365
openssl genrsa -out privkey.pem 2048
openssl rsa -in privkey.pem -pubout -out pubkey.pem

在这里插入图片描述

openssl ecparam -name prime256v1 -genkey -noout -out ecprikey.pem
openssl pkey -in ecprikey.pem -pubout -out ecpub.pem
  1. 对一个exe文件生成签名/验签
openssl dgst -sign privkey.pem -sha256 -out bigorlittle_rsa.sign bigorlittle.exe
openssl verify -CAfile ca.crt rsa.crt

在这里插入图片描述

openssl verify -CAfile ca.crt rsa.crt
openssl x509 -outform PEM -in rsa.crt -pubkey -out rsapub.pem
openssl dgst -verify pubkey.pem -sha256 -signature bigorlittle.sign bigorlittle.exe
  1. 对一个xml文件进行加密/解密
    公钥加密,私钥解密
 openssl verify -CAfile ca.crt xml.crt: OK
  openssl rsautl -encrypt -in testxml.xml -inkey xmlpubkey.pem -pubin -out teslxml.en
  openssl rsautl -decrypt -in teslxml.en -inkey xmlprivkey.pem -out testxml.de
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值