Red Hat 資料安全(二)

對稱加密 (Symmetric Encryption)

加密和解密者使用同一組 key (通常是一組字串),稱為對稱加密。

常用的演算法:DES, 3DES, Blowfish, RC2, RC4, RC5, IDEA, CAST5

對稱加密常用工具:
1. passwd
2. gpg
3. openssl

Linux 使用者密碼會隨機加上一組 salt ,再一起進行 md5 編碼,

# cat /etc/shadow
ishm:$1$gPNQzB85$3JFsC9XjabnpscIQz7HYa1:14322:0:99999:7:::

$1$gPNQzB85$ 這一段是加在密碼段的 salt 註解,可用 openssl 或 php 來演算出來:

# openssl passwd -1 -salt “gPNQzB85” “123456” (密碼是 123456)
$1$gPNQzB85$3JFsC9XjabnpscIQz7HYa1

-1 代表使用 MD5 演算法,用法可以用  – – help 查詢

# openssl passwd –help

Usage: passwd [options] [passwords]
where options are
-crypt             standard Unix password algorithm (default)
-1                 MD5-based password algorithm
-apr1              MD5-based password algorithm, Apache variant
-salt string       use provided salt
-in file           read passwords from file
-stdin             read passwords from stdin
-noverify          never verify when reading password from terminal
-quiet             no warnings
-table             format output as table
-reverse           switch table columns

使用 php 的函式來演算:

# php -r ‘echo crypt(“123456″,”\$1\$gPNQzB85\$”); echo “\n”;’
$1$gPNQzB85$3JFsC9XjabnpscIQz7HYa1

所以,Linux 驗證時,會將 salt 取出來,加到輸入的密碼上,再用同樣的方式對「salt + 密碼」進行加密,如果結果一樣,即代表密碼正確。