加密算法
对称加密
公钥加密
单向加密
对称加密算法
对称加密:加密和解密使用同一个密钥
算法
DES:Data Encryption Standard,56bits
3DES:
AES:Advanced (128, 192, 256bits)
Blowfish,Twofish
IDEA,RC6,CAST5
特性:
1、加密、解密使用同一个密钥,效率高
2、将原始数据分割成固定大小的块,逐个进行加密
缺陷:
1、密钥过多
2、密钥分发
3、数据来源无法确认
非对称加密算法
公钥加密:密钥是成对出现
公钥:公开给所有人;public key
私钥:自己留存,必须保证其私密性;secret key
特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然
功能:
数字签名:主要在于让接收方确认发送方身份
对称密钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方
数据加密:适合加密较小数据
缺点:
密钥长,加密解密效率低下。有人测试使用非对称加密算法,加密1G数据需要约几分钟,但是解密花费数小时。
算法:
RSA(加密,数字签名)
DSA(数字签名)
实现加密:
• 接收者
生成公钥/密钥对:P和S
公开公钥P,保密密钥S
• 发送者
使用接收者的公钥来加密消息M
将P(M)发送给接收者
• 接收者
使用密钥S来解密:M=S(P(M))
实现数字签名:
原理:私钥只有自己有,使用自己私钥加密数据,对方只能使用自己的公钥才能解密。这样可以让对方验证我的身份。
• 发送者
生成公钥/密钥对:P和S
公开公钥P,保密密钥S
使用密钥S来加密消息M
发送给接收者S(M)
• 接收者
使用发送者的公钥来解密M=P(S(M))
单向加密(单向散列)
指纹
将任意数据缩小成固定大小的“指纹”,即无论加密的数据有多大,都输出统一的长度的字符串
任意长度输入
固定长度输出
若修改数据,指纹也会改变(“不会产生冲突”)
无法从指纹中重新生成数据(“单向”)
功能:
数据完整性校验。
应用案例
软件发行商,都会再发行时给出软件的校验码,我们再下载后,可使用相同算法加密该软件,通过和发行商给出的校验码比对,就能知道软件包是否可靠
常见算法
md5: 128bits、sha1: 160bits、sha224、sha256、sha384、sha512
常用工具
md5sum | sha1sum [ --check ] file
openssl、gpg
rpm -V:校验软件包。
应用
数字签名
原理:私钥只有自己有,使用自己私钥加密数据,对方只能使用自己的公钥才能解密。这样可以让对方验证我的身份。
过程图:
完整性验证
文件完整性的两种实施方式
被安装的文件
MD5单向散列
rpm --verify|-V package_name
发行的软件包文件
GPG公钥签名
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat*
rpm --checksig|-K pakage_file_name