20231408徐钰涵《密码系统设计》
第五周预习报告
学习内容
- 《Windows C/C++加密解密实战》第 7 章
- 课程 mindmap
AI对学习内容的总结
总结
- 数字签名的核心作用
- 身份认证:确认信息发送者的身份。
- 数据完整性:确保信息在传输过程中未被篡改。
- 不可否认性:防止发送方事后否认其行为。
- 数字签名依赖的密码学基础
- 基于非对称加密(公钥密码体制)。
- 核心原理是私钥用于签名,公钥用于验证。
- 常与Hash函数(如SHA1, SHA256)结合使用,先对长消息生成摘要,再对摘要签名,以提高效率。
- 数字签名必须满足的三个基本条件
- 不可抵赖性:签名者事后无法否认自己的签名。
- 不可伪造性:任何其他人都无法伪造签名者的签名。
- 可仲裁性:发生争议时,第三方能够进行公正仲裁。
- 典型的数字签名算法分类(基于数学难题)
- RSA:基于大整数素因子分解难题。
- DSA/ElGamal:基于离散对数难题。
- ECDSA:基于椭圆曲线离散对数难题。
- 几种特殊的数字签名及其用途
- 盲签名:签名者不知道所签消息的具体内容,用于电子投票、电子现金系统。
- 双重签名:将两条关联信息分别签名,保护隐私,用于安全电子交易(SET)协议。
- 群签名:允许群体中的任一成员代表整个群体进行匿名签名。
- 代理签名:可以将自己的签名权委托给代理者。
- RSA数字签名的具体过程
- 签名:S = M^d mod n (使用发送方私钥)
- 验证:M' = S^e mod n (使用发送方公钥)
- 判断 M 是否等于 M',相等则验证通过。
- 使用OpenSSL进行签名和验证的两种编程方式
- 直接方式:使用
RSA_sign()
和RSA_verify()
函数。 - EVP高级方式:采用“初始化-更新-结束”三部曲,更推荐。
- 签名:
EVP_SignInit_ex
->EVP_SignUpdate
->EVP_SignFina
- 验证:
EVP_VerifyInit_ex
->EVP_VerifyUpdate
->EVP_VerifyFinal
- 直接方式:使用
- 数字签名的安全性研究主要方法
- 安全性评估:设计者自行分析,评估方案强度。
- 安全性证明:从理论上证明破解签名与解决一个公认数学难题同等困难。
- 攻击分析:通过模拟攻击来发现并修复方案中的安全漏洞。
- 实际应用中的关键点
- 为了保证安全,RSA密钥长度应足够长(如2048位以上)。
- 应使用安全的Hash算法(如SHA256,避免使用MD5、SHA1)。
- 数字签名是电子商务、网络安全协议、代码签名、法律文书等领域的基石技术。