17_Linux基础知识及命令――――Linux 的加密机制

首先查看 /etc/shadow文件,来观察加密后的密码结构:

wKioL1NYgzeAmv3nAAElqp9Ie1I545.jpg

$加密方法$ 8位随机数$加密后的密码串


不同的加密方法决定了加密后的密码串的特性,使用以下命令查看可用的加密方法:

# man 3 crpt

wKiom1NYg3axafwhAACjiur-UfI599.jpg


目前使用的加密方式主要有以下几类:

1.对称加密

使用对称加密,加密和解密都使用同一个密钥,其特点是速度快,常用的方式为:3DESData Encrypt Standard),该方法采用56位密钥,其中3表示运行三轮;AESAdvanced Encrypt Standard),采用变长密钥。

对称加密的缺陷在于密钥的管理及分发比较困难。


2.公钥加密

公钥加密也叫非对称加密,即采用 私钥/公钥 (S/P--> (security/public) 的加密方。其中私钥加密的文件只能用与之对应的公钥解密,反之亦然。但是公钥可以从私钥中提取出来,因此有私钥,则可以推测出公钥;反之则不行

公钥加密的特点是加密速度慢,但是安全性高。它通常用于密钥的分发,主要采用的算法有RSADSA


3.单向加密

单向加密只能加密,不能解密。它是hash算法的一种。主要用于提取数据的特征码,其特征为:

a)无论是输入多大的数据,其输出是定长的

b)如果输入的数据一样,结果必然一样,反之,输入的数据有微小的改变,将引起输出的巨大变化,通常称为“蝴蝶效应”和“雪崩效应”。单向加密这些特征可以避免加密串被反向推断。


例如我们可以进行以下操作来演示微小的改变采用单向加密后,会引起结果的巨大变化:

# cp /var/log/messages ./          

# md5sum messages            // 采用md5的方式为文件messages 加密

# nano messages               // messages 中的增加一个字母

# md5sum messages        // 再次对文件messages加密以观察输出结果

wKiom1NYg_GjxDp8AAOenAIFFw8919.jpg


单向加密采用的算法有如下几种:

md5 (Message Digest):        输出定长为128bit的加密串

SHA (Secure Hash Algorithm):  

sha1:               输出定长为160bits的加密串

sha-256: 256bits:     输出定长为256bits的加密串

sha-512: 512bits:    输出定长为512bits的加密串


根据单向加密的特性――只能加密不能解密,因此在验证密码是否正确时,采用的做法是再次对数据进行加密,如果加密结果一致,则密码正确

这样的加密方式会产生一个安全隐患,即两个人用了相同的密码,则可能产生相同的加密串。

为了避免这样的情况出现,需要引入一个新的机制:salt(盐),即8位随机数。具体的操作是每次加密时,都添加8位的随机数,由于“蝴蝶效应”/“雪崩效应”的存在,8位随机数可以使密码串产生巨大的变化。

例如我们可以为用户hbase redis都设定相同的密码123,来比较二者的加密结果:

# tail /etc/shadow

# passwd mongodb

# passwd redis

# tail /etc/shadow

wKioL1NYg97DBKn2AASEQ4vvcig976.jpg


上述例子我们可以看到8位随机数在单向加密中的作用。事实上,我们可以自行指定salt,如果两个密码8位随机数相同,密码也相同,则加密串会完全一致。例如为文件messages加密时指定随机数:

# openssl passwd -1 -salt 12345678 messages

# openssl passwd -1 -salt 12345678 messages

# openssl passwd -1 -salt 12345698 messages

此例子可以看出随机数设定一致,则加密串一致,随机数细微改变,可以完全改变加密串的结果。

wKioL1NYg_rwnnGhAAO9z0sslwg177.jpg


你可能感兴趣的:(linux,公钥,私钥,对称加密,加密机制,单向加密)