數據日益成爲咱們我的生活、經濟發展和安全保障的核心。這就意味着,咱們必須作到時刻保障數據的安全。這就如同在現實世界中緊鎖家門、限制重要物品的進出,以及保護咱們重要的企業財產同樣,咱們有賴於加密來保證數據不會遭受各類網絡犯罪的侵入和盜取。任何有關於限制這種重要保護方式的建議,不管其初衷多麼美好,最終結果都會致使咱們的安全保障被弱化。
當咱們存款、購物和通訊時,數據安全顯得愈加重要。而這種安全的核心即是加密。隨着咱們的生活愈來愈多地依賴於互聯網,人們更應該不斷提升數據安全意識,併爲此付諸行動,保護咱們的數字化世界再也不繼續遭受各類網絡犯罪的***和破壞。redis
如今常見的加密技術主要有三種:對稱加密,非對稱加密,單向加密
對稱加密
對稱加密指的是加密和解密使用同一個密鑰
特色:一、加密、解密使用同一個密鑰,效率高。
二、將原始數據分割成固定大小的塊,逐個進行加密。
缺點:一、密鑰過多。
二、密鑰分發。
三、數據來源沒法確認。
常見的對稱加密算法有:算法
DES:使用56位的密鑰,2000年的時候被人破解了,因此如今基本再也不使用 AES:高級加密標準,可使用128,129,256三種長度密鑰
其餘的還有blowfish,Twofish和RC6,IDEA(商業算法),CAST5等
非對稱加密
公鑰:公開給全部人
私鑰:本身保留,必須保證其私密性
特色:一、用公鑰加密數據,只能使用與之配對的私鑰解密;反之亦然。
二、數字簽名:主要在於讓接收方確認發送方身份。
三、對稱祕鑰交換:發送方用對方的公鑰加密一個對稱密鑰後發送給對方。
四、數據加密:適合加密較小的數據。
缺點:密鑰長,加密解密效率低下。
常見的非對稱加密算法有:數據庫
RSA:既能夠用來加密解密,又能夠用來實現用戶認證centos
DSA:只能用來加密解密,因此使用範圍沒有RSA廣
單向加密
單向加密: 只能加密、不能解密,即提取出數據的特徵碼,能夠校驗數據的完整性。
特色:一、定長輸出,雪崩效應(微小變化產生巨大反應)只要被加密內容有一點點的不一樣,加密所得結果就會有很大的變化。
二、不管被加密的內容多長/短,加密的結果(就是提取特徵碼)是定長的。
常見的單向加密算法有:
md5:128bits定長輸出安全
sha系列:安全的哈希算法服務器
sha-1,sha224,sha384,sha512網絡
1.使用gpg工具實現對稱加密ide
咱們先準備一個文件而後使用gpg工具對其進行加密
輸完密碼後加密就算完成了,這時就會生成一個.gpg文件就是加密後的文件
咱們把這個文件傳到另外一臺機器上進行解密
這裏的-o參數後跟的是將解密後的內容導出到一個指定文件(名字能夠隨便指定)
2.使用gpg工具實現非對稱加密
先在A主機上生成公鑰/私鑰對工具
[root@centos7 ~]# gpg --gen-key gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) Your selection? 1 #選擇加密算法 RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 1024 #選擇密鑰長度 Requested keysize is 1024 bits Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n months <n>y = key expires in n years Key is valid for? (0) 0 #選擇密鑰過時時間 0表明永不過時 Key does not expire at all Is this correct? (y/N) y GnuPG needs to construct a user ID to identify your key. Real name: rootkey #給密鑰命名 Email address: #郵箱(能夠爲空) Comment: #註釋(能夠爲空) You selected this USER-ID: "rootkey" Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O #N重命名,C重寫註釋,E重寫郵箱,O生成密鑰,Q退出
將剛纔生成的公鑰導出來
將生成的公鑰文件傳給另外一臺須要加密的主機
而後咱們再把公鑰導入,在這裏咱們要注意下兩天機器的時間,我剛開始沒有注意到這點致使公鑰導入失敗以下:
把兩臺機器的時間同步以後,咱們須要從新生成公鑰,從新開始,時間同步後咱們再次導入就沒有問題了
咱們再用導入的公鑰對要傳輸的文件進行加密
咱們能夠看到文件已進行了加密,這個加密的文件本身也是沒法解密的,只有用另外一臺機器的私鑰才能解開,這樣就確保了數據的安全性
咱們把加密後的文件傳給另外一臺機器
咱們回到原來的機器用本身的私鑰對文件進行解密
咱們也能夠把解密後內容導出來
刪除公鑰和私鑰
咱們要先刪除私鑰才能再刪除公鑰
刪除公鑰
加密工具還有openssl,也能夠作到對稱加密,非對稱加密,我就在這裏給你們演示下用openssl作單向加密
單向加密是不可逆的,作單向加密通常都是爲了校驗數據的完整性,咱們先用md5算法對一個文件作一個加密,導出一個md5值
咱們再對文件作一個小小的修改加個空格就行
能夠看到,文件的md5值發生了很大的改變,這就是雪崩效應,這樣就能夠判斷這個文件是否被別人篡改過。網站
咱們都知道,當客戶端與服務器端創建會話以前,首先是客戶端發送請求,而後進行TPC/IP的三次握手,接着客戶端與服務器端創建ssl會話。
會話過程以下:
1.客戶端計算數據特徵值
2.使用私鑰加密特徵值
3.隨機生成密碼對稱加密整個過程
4.使用服務器端公鑰加密密碼
5.服務器端使用私鑰解密密碼
6.服務器端解密整個數據
7.服務器端使用公鑰驗證身份
8.比較數據特徵值
可是這些存在一個問題,誰來管理公鑰,任何在互聯網上傳播的數據都不安全,更不用說傳遞公鑰,若是它被篡改,那就沒法驗證身份,因此不可能由用戶本身頒發公鑰。
這個時候就須要一個具備公信力的中間機構來作這個工做,就是CA。國內的大部分互聯網公司都在國際CA機構申請了CA證書,而且在用戶進行訪問的時候,對用戶的信息加密,保障了用戶的信息安全。理論上來講,任何組織或者我的均可以扮演CA的角色,只不過,難以獲得客戶端的信任,不能推而廣之,最典型應用莫過於12306網站,這個網站就是本身給本身頒發的根證書。咱們如今就本身搭建一個CA認證中心。
一、CA認證中心簡述
CA:CertificateAuthority的縮寫,一般翻譯成認證權威或者認證中心,主要用途是爲用戶發放數字證書。
功能:證書發放、證書更新、證書撤銷和證書驗證。
做用:身份認證,數據的不能否認性。
端口:443
2.CA證書的製做
咱們在這裏用三臺主機進行實驗,其中兩臺是做爲CA機構存在,因此建立所須要的文件的時候主機A和主機B都須要建立。若是不提早建立這兩個文件,那麼在生成證書的過程當中會出現錯誤。咱們將文件建立在配置文件中指定的路徑下面。
生成證書索引數據庫文件:touch /etc/pki/CA/index.txt
指定第一個頒發證書的序列號:echo 01 > /etc/pki/CA/serial
CA自簽名證書(構造跟CA)
首先構造根CA證書。由於沒有任何機構可以給跟CA頒發證書,因此只能根CA本身給本身頒發證書。
首先在A主機上生成私鑰文件
生成自簽名證書
3.頒發證書
頒發證書這裏咱們將分紅兩個環節介紹,分別是 子CA證書機構向根CA證書機構申請證書以及普通用戶向子CA證書機構申請證書。
子CA證書機構向根CA申請證書,這個過程和前面根CA生成私鑰的過程是一致的。
在子CA這裏咱們就沒有設置私鑰密碼,密鑰長度也設置了爲1024
用私鑰文件生成證書申請文件
將證書申請文件傳遞給根CA
根CA頒發證書
這時切換到根CA也就是A主機,生成證書
這時咱們查看index.txt文件就會看到新增了一條記錄
將CA生成的證書頒發給子CA
主機B是做爲子CA機構存在的,因此證書文件,必須是cacert.pem,不然,子CA將不可以給其餘用戶頒發證書。
普通用戶向子CA機構申請證書
過程和子CA申請差很少,首先也是生成私鑰文件,不過由於是普通用戶,因此生成的私鑰文件應該與以前的cacert.pem 有所區別
利用私鑰生成證書申請文件
將證書申請文件發送給子CA頒發機構
切換到子CA頒發機構頒發證書
將生成的證書傳遞給申請者
這樣,正常的證書頒發流程就算是完成了。
咱們驗證下證書
-text 證書的內容-issuer 證書頒發者的信息-subject 證書主體的信息-serial 證書的序列號信息-dates 查看證書的時間