传输过中如何保证 数据既能不被篡改,又能不被窃取
公加私解,私加公解
公钥加密私钥解密,只能保证数据不会篡改,但是可以被窃取
私钥加密公钥解密,只能保证数据不会窃取,但是可能被整个替换
签名和信封
数据取摘要,然后私钥加密这种做法可以加快速度,保证数据不被篡改,这种方式叫做签名
数据对称加密,然后公钥加密对称加密密钥,密钥保证数据安全,公钥加密保证密钥不会窃取,公钥加密密钥比直接加密数据快,这种方式叫做信封
例举一个既能保证数据不被窃取又能保证数据不被篡改的加密过程
如果要保证数据既不被窃取又不被修改,我们两者都需要
假设 A 发送数据 给B ,AB 的 分别持有一对公私钥。为了加快加密速度我们可以用对称加密des,des密钥key。
我们看下面的三段结构公式,用简单的逗号分割
A私钥(B公钥加密(key)).B公钥加密(key).des{key,data}
第三段:对称密钥key加密数据data得到的密文,这时候key应该想办法告诉B
第二段:可以不能被窃取,所以用B的公钥加密key,形成第二段,但是存在一个风险,第二段和第3段被整个替换。
第一段:为了保证第2段不会替换,所以我们对第二段用A的私钥加密,这样第二段的内容可以通多第一段来检查。如果第二段很长我们可以考虑取摘要后在加密。
B收到数据后验签和解密的过程
用A公钥对第一段解密和第二段内容(或者第二段的摘要)做对比,如果相等,那么验签通过,说明数据没有被篡改过。这个验签过程不止B能做,任意用户都能做。只要验签能通过,那么这数据一定是A发出来,不可能是别人伪造的(因为需要A的私钥才能生成第一段的签名)。
用B的私钥对第二段的内容做解密,得到des密钥key,这个过程只有B能做,因为必须要B的私钥才能解密第二段的内容。
后面是用key解密第三段的密文了。
思考:
第一段其实是为了保证第二段和第三段不被整个替换(有A公钥的用户完全可以生成任意key,然后生成加密数据),所以第一段可以对第段二签名,或者三段签名,或者直接是对整个二三段签名,效果是一样的。从数据量考虑,第二段最小,不用取摘要数据量也很小,可以考虑直接加密生成第一段。总结下来就是签名保证信封数据不会篡改,信封保证信内数据不会窃取。就和邮寄信件一样,信被信封包裹,信封上有个签名的封条。
能耍的时候就一定要耍,不能耍的时候一定要学。
--天道酬勤,贵在坚持posted on 2023-09-24 12:23 zhangyukun 阅读(200) 评论(0) 编辑 收藏 举报