對稱加密:DES,3DES AES
功能:只能保證機密性
非對稱加密:(公鑰加密):是通過數學函數來算出的。常用的RSA,DSS(只能加密,不能簽名),ECC(橢圓曲線算法,要比RSA還要安全,但是不成熟)
功能:身份驗證,密鑰交換,機密性
單向加密:提取數據的特徵碼。MD5,SHA1 SHA2 SHA3(安全哈希算法)
功能:數據完整性
1、發送方使用選定的單向加密算法計算原始數據的特徵碼。
2、發送方使用自己的私鑰加密特徵碼,附加於原始數據後面。
3、發送方生成一次性對稱密鑰,並使用此密鑰加密數據(原始數據+加碼後的特徵碼)
4、發送方使用收方的公鑰加密一次性對稱密鑰,附加於加密數據後面
5、發送
1、接收方使用自己的私鑰解密加密的一次性對稱密鑰:
2、使用對稱密鑰解密數據,得到加密的特徵碼和原始數據。
3、使用發送發的公鑰解密加密的特徵碼。
4、使用與發送方相同的單向加密算法重新計算數據的特徵碼,並與解密出來的特徵碼比較。從而完成了檢驗數據完整性操作。
公鑰分發
數字證書:
x509v3
版本號(version)
序列號():證書本身在CA中唯一標識:
簽名算法標誌:
發行者名稱:
有效期:
證書主體名稱:(組織(主體),個人)
證書主體公鑰信息:
發行商唯一標誌
證書主體的唯一標誌:
擴展:
簽名:
PKI:Public Key Infrastructure
端實體(申請者)
註冊機構(RC)-->
簽證機構 (CA)
證書撤銷列表(CRL)發佈機構
證書存取庫
SSL:
starttls:可以在一個端口上提供加密和非加密。
ssl v1,v2,v3
tls:Transport Lanyer Security
tls v1
OpenSSL:
主要的軟件包
libcrypto:加密、解密
libssl:實現ssl
openssl version #版本號 OpenSSL 1.0.1e-fips 11 Feb 2013 1、加密一個文件 [root@node1 ~]# openssl enc -des3 -in fstab -e -out fstab.des3 enter des-ede3-cbc encryption password: Verifying - enter des-ede3-cbc encryption password: 2、解密一個文件 [root@node1 ~]# openssl enc -des3 -in fstab.des3 -d -out fstab.txt [root@node1 ~]# cat fstab.txt # # /etc/fstab # Created by anaconda on Thu Jun 30 10:38:23 2016 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/VolGroup-lv_root / ext4 defaults 1 1 UUID=fd2f1ae1-8eef-4211-a9f3-7db3f3379818 /boot ext4 defaults 1 2 ........ 3、加密算法 openssl dgst -md5 fstab.txt [root@node1 ~]# openssl dgst -md5 fstab.txt #獲取文件的特徵碼,只要算法相同,特徵碼也相同,用md5sum也可以。 MD5(fstab.txt)= 085b811b0c1b10057c5aa43371234c28 4、測試當前主機加密算法的速度 openssl speed des-ede3 [root@node1 ~]# openssl speed des-ede3 Doing des ede3 for 3s on 16 size blocks: 2296748 des ede3's in 3.00s Doing des ede3 for 3s on 64 size blocks: 642682 des ede3's in 3.00s Doing des ede3 for 3s on 256 size blocks: 160988 des ede3's in 3.00s Doing des ede3 for 3s on 1024 size blocks: 40291 des ede3's in 3.00s Doing des ede3 for 3s on 8192 size blocks: 5038 des ede3's in 3.00s OpenSSL 1.0.1e-fips 11 Feb 2013 5、sslpasswd 加密 [root@node1 ~]# openssl passwd -1 -salt 12345678 Password: $1$12345678$xek.CpjQUVgdf/P2N9KQf/ 隨機數生成 [root@node1 ~]# openssl rand -base64 8 SJkppyT8nio= [root@node1 ~]# openssl passwd -1 -salt 'openssl rand -hex4' Password: $1$openssl $IOYGACZVeLM3HedYIV5G5. 6、生成私鑰 [root@node1 ~]# openssl genrsa 1024 Generating RSA private key, 1024 bit long modulus ...................++++++ .................++++++ e is 65537 (0x10001) -----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQDWaZ6o19Ov7oMRg/N7M/ogGzhaBMTXr/meKCcBh4qO+nuOot/m 9fpgDAEx5tnTO79UDGoBENjhu9sjsqrVKMRHbfHgu51NfgaKDAqKBd29VvNa0C68 zRKRMToXOriVWPwYOOQRiS0j04V9aDy9FRvnBmuI0+sYMqj4HmAkTKsZPwIDAQAB AoGBAL2D99gXhKWBtVoa/nBMne4ZATMX+gEHKySvKuMAMel03xdRQYS8sISKt9eq y6gYrGGW429zu6+ywtyHxNXKRcmauvixBnlYIshUAzjx4l+WyAowFfNQ+1m5TIdo QGOCsXVLqXb9kehwmQesvXHCLaOR2q/nrtOUbx7FW2hwjWvBAkEA8WfXMHIgp5Ez 0EZ4kiVfiwgIzi6MxNZPxx1iOxyS+/Nt/XMQKhAh4GanuRD2dFE+kWehls/xwvgI I+tKYgfAHwJBAONgBCSoE+fLf7yNZGBYJWaF7n8jepQB/xhDuhBj/rVPhCDDSVTt WWgQN/wo+eqX1ijuNI7fyKXH7i+3vTRFAuECQBCoI5b6KPqm8DZMxoD/ByqmsUTY vWnPh82rX13IyPONhmdYiyL73fqH2sbQPtEj0fdieSnYy0uypY0k7Qr6ke0CQQCv Y6wufnxES+QvlL191+CZsewjpEF0lAmrNOr8o7WhNEIOZ7VUTnWt4PzehNkqzY7E KeLe5t5Giu8/XbMT87vhAkBAWt02VrExIElBSD9hkSW368SIIB0E1dMzxvMHQNVw 7jSTP+/AN6s/V4pacIbdIJcP3AqNU6Ng4yrAr0o60idc -----END RSA PRIVATE KEY----- [root@node1 ~]# openssl genrsa 1024 > mykey.private Generating RSA private key, 1024 bit long modulus .........++++++ .......++++++ e is 65537 (0x10001) 加密私鑰 [root@node1 ~]# openssl genrsa -des3 2048 Enter pass phrase: Verifying - Enter pass phrase: -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,2D8AA1C9D62164FB 7、生成公鑰 [root@node1 ~]# openssl rsa -in mykey.pri -pubout writing RSA key -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8MGAPnk2Xg1A3LFy+aPx fMFYL+1dWGWF03Uh/mB47W+oG0mtyBpeE5jQsgZr6tlQ7zNJkjNdK9sFv19QQpJm mH+4Kqa1NsFQHo83RUztfqnCkM9/ub3TIocSTev08+R80Ap7VdslOeVRoECB46y2 VgMMr+kwdHI+CcB4mLWkRsyIixZX2bM4ZrOT0U/YPia5HuYmf/E6iG+J4cHy2yqP wA1+zUaCrphv6QO7n6EtvBZ+xhvcpeiEPS+SllwKyDnLjUf6NX1PTr+0TEQCHOnt tALXu5r6+bYAHDcvTZbl1B20JtG6FQsgtyX3T6J/SdjzlKruMw/lqw5HwWRMOQHt 0wIDAQAB -----END PUBLIC KEY----- 直接用umask設置好權限的操作,務必加上()。umask對子shell執行,對當前無效。否則以後操作都是600。 [root@node1 ~]# (umask 077; openssl genrsa -out /root/mykey2.pri 2048) Generating RSA private key, 2048 bit long modulus ...................................+++ .........................................+++ e is 65537 (0x10001) [root@node1 ~]# ll -h /root/mykey2.pri -rw-------. 1 root root 1.7K 7月 14 11:47 /root/mykey2.pri #600