系统架构设计师必知:数字签名、加密算法、公钥私钥详解
一、先搞清楚三个基础概念在进入“数字签名”之前必须先理解加密和哈希。1.1 加密Encryption加密是将明文通过某种算法转换成密文的过程目的是保密。只有拥有正确密钥的人才能解密还原明文。对称加密加密和解密使用同一个密钥。优点速度快适合大数据。缺点密钥分发困难如何把密钥安全给对方常见算法AES、DES、SM4非对称加密加密和解密使用一对密钥公钥Public Key和私钥Private Key。公钥加密 → 私钥解密用于保密私钥加密 → 公钥解密用于身份认证即数字签名的原理优点解决了密钥分发问题。缺点速度慢。常见算法RSA、ECC、SM21.2 哈希Hash / 散列哈希算法将任意长度的数据映射成固定长度的短字符串哈希值 / 摘要。特点单向性无法从哈希值反推出原文。抗碰撞很难找到两个不同输入产生相同哈希值。雪崩效应原文改一点哈希值完全改变。常见算法MD5已不安全、SHA-1已弱化、SHA-256、SM3哈希本身不是加密它不涉及密钥也不能还原。哈希的作用是完整性校验和生成数字签名的基础。二、数字签名到底是什么数字签名Digital Signature是对电子数据的一种签名用于确认身份认证消息确实是声称的发送者发出的。完整性消息在传输过程中没有被篡改。不可否认发送者无法事后否认自己发过该消息。2.1 数字签名的核心步骤以RSA为例发送者 Alice 要签署消息并发送给 Bob1. Alice 对原文 M 计算哈希值 H hash(M) 2. Alice 用她的私钥唯一她能拥有的对 H 进行加密得到签名 S Encrypt_private(H) 3. Alice 将 (M, S) 一起发送给 Bob 4. Bob 收到后 - 对 M 计算哈希值 H1 hash(M) - 用 Alice 的公钥解密签名 S得到 H2 Decrypt_public(S) - 比较 H1 与 H2若相等则签名有效关键点私钥用于签名只有自己能做公钥用于验证任何人都能做。签名是对哈希值加密而不是对原文加密 —— 目的是缩短签名长度、提高效率。如果哈希值匹配证明消息未被修改完整性且是拥有私钥的人发出的认证不可否认。2.2 数字签名 ≠ 加密很多人混淆数字签名不是为了保密而是为了认证和完整。签名的消息本身可以是明文比如代码签名、合同PDF。加密数字签名目的机密性不让别人看到认证、完整性、不可否认使用的密钥公钥加密私钥解密私钥签名公钥验签对谁可见只有收方有私钥能看到任何人都能验证签名但未必能看到明文典型场景发送机密文件、HTTPS握手软件签名、JWT、电子合同实战中两者经常结合使用比如先签名再加密既保证真实性又保证机密性。三、公钥与私钥一对奇妙的搭档非对称加密的核心是密钥对公钥Public Key可以公开分发任何人都能拿到。私钥Private Key必须严格保密只能由所有者保管。3.1 两种经典用法用法操作解决问题加密通信发送方用接收方的公钥加密 → 接收方用自己的私钥解密防止中间人窃听数字签名发送方用自己的私钥签名 → 接收方用发送方的公钥验证确认发送者身份 数据未被篡改3.2 一个生活化比喻公钥像一把打开的锁谁都可以拿来锁东西。私钥像唯一的一把钥匙只有主人能打开。场景一加密你想寄秘密信给我我先把锁公钥寄给你你用锁把信锁进铁箱寄给我我用自己的钥匙私钥打开。场景二签名你把一个包裹贴上你的专属印章用你的私钥签名我用你的公开印章图案公钥验证这个包裹确实是你寄的。四、经典算法一览考试常用4.1 对称加密算法算法密钥长度特点AES128/192/256 bit目前最常用安全高效DES56 bit已过时可被暴力破解3DES112/168 bit比DES安全但较慢逐步被AES替代SM4128 bit中国国密标准4.2 非对称加密算法算法常见用途特点RSA加密、签名最经典基于大数分解难题。1024/2048/4096位ECC (椭圆曲线)加密、签名相同安全强度下密钥更短、性能更好SM2加密、签名国密非对称算法DSA仅数字签名不支持加密只用于签名验证ECDSA签名基于椭圆曲线的DSA变体4.3 哈希算法考试注意MD5/SHA-1已被攻破算法输出长度安全状态MD5128 bit不安全可碰撞SHA-1160 bit已弱化建议弃用SHA-256256 bit安全广泛使用SM3256 bit国密哈希五、实际应用场景考试案例题常见5.1 HTTPS/TLS 如何综合运用服务器拥有公钥私钥并持有数字证书CA签名。浏览器访问服务器服务器返回证书含公钥。浏览器验证证书用CA公钥验证签名确认服务器身份。浏览器生成一个临时会话密钥对称密钥用服务器公钥加密后发送。服务器用私钥解密得到会话密钥。后续通信使用对称加密AES因为更快。这一过程同时用到了非对称加密传递对称密钥身份认证、对称加密数据加密、数字签名证书验证。5.2 软件数字签名开发者对软件包计算哈希再用私钥对哈希签名。用户下载软件和签名用开发者公钥验证签名 —— 确保软件未被植入病毒且来自官方。5.3 JWT (JSON Web Token) 的签名JWT 可使用HS256对称签名或RS256非对称签名。RS256 中认证服务器用私钥签发 Token资源服务器用公钥验证 Token 合法性无需共享密钥。六、考试常见选择题与辨析题目1关于数字签名说法正确的是A. 数字签名使用公钥进行签名私钥进行验证B. 数字签名可以保证消息的机密性C. 数字签名通常先对消息计算哈希再对哈希加密D. 数字签名只能用RSA算法实现答案C。A错签名用私钥验签用公钥。B错签名不提供机密性提供完整性和认证。D错还有DSA、ECDSA等。题目2在非对称加密中若希望保证只有接收方能够读取消息应使用A. 发送方私钥加密B. 发送方公钥加密C. 接收方私钥加密D. 接收方公钥加密答案D。保证机密性时用接收方公钥加密。题目3关于哈希函数错误的是A. 哈希函数是单向的B. 不同输入可能产生相同哈希值碰撞C. 可以通过哈希值反推原文D. 哈希函数常用于数字签名答案C。哈希不可逆。七、一张图总结加密与数字签名全过程文字描述发送方(Alice) 接收方(Bob) | | | 明文 M | | -- 1. 计算哈希 H hash(M) | | -- 2. 用私钥加密H得到签名 S | | -- 3. (可选) 用Bob公钥加密(MS)得到密文C | | ------ 发送 C (或直接 MS) ----- | | | | 4. 若密文先用自己私钥解密得到MS | 5. 用Alice公钥解密S得到H2 | 6. 计算H1 hash(M) | 7. 如果H1H2验证成功图中第3步为“加密签名”同时使用保证机密性认证性。八、易错点高频考点总结易混淆点正确理解“公钥加密私钥解密” → 加密✅ 正确用于机密性“私钥加密公钥解密” → 加密 ❌这不是加密是签名不保证机密性数字签名 对原文加密❌ 是对哈希值加密哈希算法是加密算法的一种❌ 哈希不是加密无密钥越长密钥一定越安全❌ 还要看算法ECC 256位 ≈ RSA 3072位公钥必须保密❌ 公钥就是公开的九、备考建议牢记两个“钥匙用途”口诀加密公锁私开别人用我公钥锁我用私钥开签名私签公验我私钥签名大家公钥验理解HTTPS握手过程案例题常考TLS四次握手如何混合使用对称非对称数字证书记住国密算法SM2非对称、SM3哈希、SM4对称 —— 近年考试有涉及国产化趋势。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2613912.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!