加密与加签
加密与加签的联系
加密和加签是两种不同的安全机制,目的和实现方式有所区别:
加密:目的是保证数据的保密性,防止信息在传输过程中被窃取。例如,使用对方的公钥加密数据,只有持有对应私钥的接收方才能解密。
加签:目的是验证数据的完整性和来源真实性,防止数据被篡改或伪造。通常通过哈希算法生成摘要,再用私钥对摘要加密生成签名,接收方通过公钥验签。
两者的联系在于:
- 均基于密码学技术(如非对称加密算法),但密钥使用方式不同:加密使用公钥加密、私钥解密,而签名使用私钥签名、公钥验签。
- 可结合使用以同时保障数据的保密性和完整性。
为何需要先加签再加密
在API接口合作中,先加签后加密的设计逻辑如下:
- 加签(签名):发送方先用私钥对原始报文生成签名,确保报文未被篡改且来源可信。若报文被修改,验签时会因哈希值不匹配而失败。
- 加密:随后用接收方的公钥加密报文(含签名),确保传输过程中数据不被窃取。
接收方处理流程:
- 解密:用私钥解密报文,获取明文和签名。
- 验签:用发送方的公钥验证签名,确认报文未被篡改且来源合法。
只加密不加签的风险
若仅加密不加签,可能面临以下问题:
篡改风险:攻击者可截获加密报文,篡改后重新加密发送。接收方解密后无法识别篡改,导致处理错误数据。
例如:攻击者将转账金额从100元改为1000元,接收方解密后直接处理,造成资金损失。身份伪造:无法验证发送方身份,攻击者可能伪造合法请求。
抵赖风险:发送方可能否认自己发送过报文,缺乏防抵赖证据。
加密确保数据保密性,防止窃听;
加签确保数据完整性、来源真实性和防抵赖;
两者结合使用,才能全面应对窃取、篡改、伪造等风险。若仅加密不加签,虽能保护数据隐私,但无法防御篡改和伪造,安全性存在重大漏洞。
非对称加密中密钥使用方式的设计逻辑
- 加密场景:公钥加密、私钥解密
核心目的:确保数据保密性,防止窃听。
密钥逻辑:
- 发送方用接收方的公钥加密数据 → 只有接收方的私钥能解密。
- 优势:公钥可公开分发,任何人均可加密数据,但只有私钥持有者(接收方)能解密。
不可反过来的原因:
- 若用私钥加密、公钥解密,则密文可被任何人解密(公钥是公开的),完全失去保密性。
- 签名场景:私钥签名、公钥验签
- 核心目的:验证数据来源真实性和完整性,防止篡改和抵赖。
- 密钥逻辑:
- 发送方用自身私钥对数据哈希值签名 → 接收方用发送方的公钥验证签名。
- 优势:私钥唯一性确保签名不可伪造,公钥验签可验证身份。
- 不可反过来的原因:
- 若用公钥签名、私钥验签,则任何人都能用公开的公钥生成签名,无法验证发送方身份。
- 例如:攻击者可伪造签名,接收方无法区分合法与非法来源。