“数据篡改(Tampering)”这一安全威胁,其对应的安全属性是**完整性(Integrity)* “数据篡改Tampering”这一安全威胁其对应的安全属性是完整性Integrity典型攻击手段包括SQL注入和中间人攻击MITM而常用防护措施有数字签名、哈希校验、输入验证等。✅ 补充说明完整性指确保数据在存储、传输或处理过程中未被未授权地修改、删除或伪造SQL注入通过恶意构造输入篡改数据库查询逻辑破坏数据/业务逻辑完整性中间人攻击可在通信链路中截获并修改数据如HTTP明文传输破坏传输完整性数字签名结合非对称加密可验证数据来源与完整性哈希校验如SHA-256用于检测内容是否被篡改输入验证则从源头阻断恶意输入防患于未然。# 示例使用SHA-256进行哈希校验Pythonimporthashlibdefcalculate_hash(data:str)-str:returnhashlib.sha256(data.encode()).hexdigest()original_dataHello, world!hash_valuecalculate_hash(original_data)print(Original hash:,hash_value)# 若数据被篡改哈希值将完全不同tampered_dataHello, world?!# 微小改动print(Tampered hash:,calculate_hash(tampered_data))哈希校验无法防御“碰撞攻击”根本原因在于哈希函数本身只提供数据一致性验证不提供来源认证和抗抵赖能力而碰撞攻击正是利用哈希算法的数学特性构造两个不同输入产生相同哈希值从而绕过单纯哈希比对的完整性检查。 详细解释哈希校验的本质是“确定性摘要”——相同输入必得相同输出但不同输入可能偶然或被刻意构造产生相同输出即哈希碰撞。对弱哈希算法如MD5、SHA-1已有实用碰撞攻击如2005年王小云团队攻破MD5可在秒级生成不同但哈希值相同的文件/报文。碰撞攻击的危害攻击者可准备两个语义迥异但哈希值相同的文档例如一份合法合同 vs 一份恶意付款指令诱使用户签署/接受前者再用后者替换——因哈希值未变单纯校验无法察觉篡改。数字签名的作用在哈希基础上叠加非对称加密认证发送方先计算消息哈希值再用私钥加密该哈希值即签名接收方用发送方公钥解密签名得到原始哈希并独立计算接收消息的哈希二者比对一致才可信。✅ 这不仅验证了数据未被篡改完整性更验证了数据确实来自声称的发送方且未被伪造认证性不可抵赖性❌ 即使攻击者找到碰撞对也无法用目标私钥为恶意消息生成有效签名私钥保密签名不可伪造。✅ 类比理解哈希 “指纹”唯一性有限双胞胎可能相似数字签名 “指纹 本人亲笔签名防伪钢印”绑定身份防伪造。# 简化示意数字签名如何增强哈希安全性Python with cryptographyfromcryptography.hazmat.primitivesimporthashes,serializationfromcryptography.hazmat.primitives.asymmetricimportpadding,rsa# 生成密钥对实际中私钥严格保密private_keyrsa.generate_private_key(public_exponent65537,key_size2048)public_keyprivate_key.public_key()messagebContract v1.0: Pay $100 to Alice# 1. 计算哈希内部由签名API自动完成signatureprivate_key.sign(message,padding.PSS(mgfpadding.MGF1(hashes.SHA256()),salt_lengthpadding.PSS.MAX_LENGTH),hashes.SHA256())# 2. 验证用公钥解签并核对哈希若消息被篡改或签名伪造verify()抛出InvalidSignaturetry:public_key.verify(signature,message,padding.PSS(...),hashes.SHA256())print(✅ 完整性 来源认证通过)exceptException:print(❌ 验证失败可能被篡改或非授权签名)