安全防护
最近做软件的商业license设计,又一次对密码学进行了一些学习和了解,整理形成本文的笔记。密码学比较复杂,我了解有限,所以不打算深入介绍,仅仅针对涉及的几个应用场景进行介绍。
我们使用密码学,个人认为是应对安全防护上的三个概念: 防窃听,防伪造,防篡改,这是安全防护的主要目的。
防窃听是指防止信息在传递过程中被第三方读取。明信片在邮递过程中,信息可以被任何接触到的人看到,信息就泄露了。解决这个问题,最简单的办法,加一个密封的信封。这样信息在传递过程中就是安全的,其它人看不到。
防伪造是指防止信息的来源被第三方伪造。传统的信件防伪方法有印章,比如在圣旨上盖个大印,宣布发布者的身份,避免伪传圣旨。
防篡改是指防止信息被第三方修改。传统的方法是使用蜡丸/火漆来包装信息,完整的蜡丸/火漆表示信息未被修改。篡改信息的知名故事有“传位于四(十四)阿哥”的康熙遗旨事件。
安全防护的防泄露,防伪造,防篡改在不同的场景中有不同的需求,可以单独应用也可以结合使用。
网络中防窃听的方法是发送方把原文信息进行数字加密,传输密文,接收方只有使用秘钥才可以解开,保证信息的_私密性_。防伪造的方法是数字签名,发送方给信息附加一个数字签名,表明信息_来源的真实性_。防篡改的方式是数字摘要,对信息形成一个唯一的摘要,任何微小的原文修改都会导致数字摘要变化,从而保证信息的_完整性_。总结如下表:
安全防护 |
目的 |
措施 |
防窃听 |
信息的私密性 |
加密 |
防伪造 |
信息来源真实性 |
签名 |
防篡改 |
信息的完整性 |
摘要 |
加密和签名
加密和解密是一个对称操作,使用秘钥对原文进行加密得到密文,再使用同一秘钥对密文进行解密得到原文。
这种使用 唯一秘钥 的加密方式叫做 对称加密 。对称加密执行效率很高,但是在网络中如何安全的传输秘钥是个问题?秘钥无法安全传输,加密就达不到防护效果。
下面是使用openssl工具进行对称加密的演示:
# echo "123abc" | openssl enc