linux加密算法与应用

加密算法

对称加密

公钥加密

单向加密

对称加密算法

对称加密:加密和解密使用同一个密钥

算法

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 
 
原文地址:https://www.cnblogs.com/wxxjianchi/p/13509489.html