您好,登錄后才能下訂單哦!
在OSI模型和tcp/ip模型中,應用發送某個數據到服務器,通過很多條路徑才能到達服務器,在發送的路上,因為數據是明文,且任意人都可以查看,這就給數據帶來了風險。因此,加密就很有必要了。
常見的密鑰算法和協議
對稱加密(加密解密使用同一個密鑰)
公鑰加密(非對稱加密,公鑰和私鑰)
單向加密(只能加密,不能解密)
認證協議
對稱加密
對稱加密采用了對稱密碼編碼技術,它的特點是文件加密和解密使用相同的密鑰,即加密密鑰也可以用作解密密鑰,這種方法在密碼學中叫做對稱加密算法,對稱加 密算法使用起來簡單快捷,密鑰較短,且破譯困難,除了數據加密標準(DES),另一個對稱密鑰加密系統是國際數據加密算法(IDEA),它比DES的加密 性好,而且對計算機功能要求也沒有那么高。IDEA加密標準由 PGP(Pretty Good Privacy)系統使用。
下面舉個例子來簡要說明一下對稱加密的工作過程。甲和乙是一對生意搭檔, 他們住在不同的城市。由于生意上的需要,他們經常會相互之間郵寄重要的貨物。為了保證貨物的安全,他們商定制作一個保險盒,將物品放入其中。他們打造了兩 把相同的鑰匙分別保管,以便在收到包裹時用這個鑰匙打開保險盒,以及在郵寄貨物前用這把鑰匙鎖上保險盒。
上面是一個將重要資源安全傳遞到目的地的傳統方式,只要甲乙小心保管好鑰匙,那么就算有人得到保險盒,也無法打開。這個思想被用到了現代計算機通信的信息加密中。在對稱加密中,數據發送方將明文(原始數據)和加密密鑰一起經過特殊加密算法處理后,使其變成復雜的加密密文發送出去。接收方收到密文后,若想解讀原文,則需要使用加密密鑰及相同算法的逆算法對密文進行解密,才能使其恢復成可讀明文。在對稱加密算法中,使用的密鑰只有一個,發收信雙方都使用這個密鑰對數據進行加密和解密。
對稱加密常用的算法:
DES:Data Encryption Standard;
3DES:Triple DES;
AES:Advanced Encryption Standard; (128bits, 192bits, 256bits, 384bits)
Blowfish
Twofish
IDEA
RC6
CAST5
特性:
1、加密、解密使用同一個密鑰;
2、將原始數據分割成為固定大小的塊,逐個進行加密;
缺陷:
1、密鑰過多;
2、密鑰分發困難;
公鑰加密
與對稱加密算法不同,非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。公開密鑰與私有密鑰是一對,如果
用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那么只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩
個不同的密鑰,所以這種算法叫作非對稱加密算法。
工作過程
1.A要向B發送信息,A和B都要產生一對用于加密非對稱加密算法和解密的公鑰和私鑰。
2.A的私鑰保密(自己保存),A的公鑰告訴B;B的私鑰保密(自己保存),B的公鑰告訴A。
3.A要給B發送信息時,A用B的公鑰加密信息,因為A知道B的公鑰。
4.A將這個消息發給B(已經用B的公鑰加密消息)。
5.B收到這個消息后,B用自己的私鑰解密A的消息。其他所有收到這個報文的人都無法解密,因為只有B才有B的私鑰。
特性:
公鑰:從私鑰中提取產生;可公開給所有人;pubkey
私鑰:通過工具創建,使用者自己留存,必須保證其私密性;private key;
特點:
用公鑰加密的數據,只能使用與之配對兒的私鑰解密;反之亦然;
用途:
數字簽名:主要在于讓接收方確認發送方的身份;
密鑰交換:發送方用對方公鑰加密一個對稱密鑰,并發送給對方;
數據加密
算法:RSA, DSA, ELGamal
DSS: Digital Signature Standard
DSA:Digital Signature Algorithm
單向加密
又叫單向散列算法,又稱hash函數,Hash函數(也稱雜湊函數或雜湊算法)就是把任意長的輸入消息串變化成固定長的輸出串的一種函數。這個輸出串稱為該消息的雜湊值。一般用于產生消息摘要,密鑰加密等。即提取出數據指紋;只能加密,不能解密;
特性:定長輸出、雪崩效應;
功能:完整性驗證;
常見算法:
md5:Message Digest 5, 128bits
sha1:安全的哈希算法 Secure Hash Algorithm 1, 160bits
sha224, sha256, sha384, sha512
密鑰交換:
IKE(Internet Key Exchange)一種用以獲得認證密鑰的協議。
密鑰交換的兩種機制:
1、公鑰加密實現:
發送方用接收方的公鑰加密自己的密鑰,接收方用自己的私鑰解密得到發送方的密鑰,逆過來亦然,從而實現密鑰交換。
2、使用DH算法:前提發送方和接受方協商使用同一個大素數P和生成數g,各自產生的隨機數X和Y。發送方將g的X次方modP產生的數值發送給接收方,接受方將g的Y次方modP產生的數值發送給發送方,發送方再對接收的結果做X次方運算,接受方對接收的結果做Y次方運算,最終密碼形成,密鑰交換完成。
通信階段加密解密
BOB和ALICE通信階段
黑框A:表示要傳輸的數據
黑框B:就是單項加密對這段數據提取的特征碼,這段特征碼同時運用了非對稱加密,具體過程是用BOB的私鑰加密,傳輸給ALICE,只要到達后ALICE能解密,表明對方確實是BOB。這一過程同時起到了用戶認證和數據完整性的校驗。黑框B又稱為數字簽名
紅框A:這一階段會生成一段很長的隨機數(密鑰)然后配合對稱加密算法對黑框A和黑框B加密,但是我們如何把加密的密鑰傳輸給ALICE呢?這就要用到紅框B了
紅框B:這一階段是用ALICE的公鑰加密這串隨機數(對稱加密階段的密鑰),ALICE接收到數據后如果能用自己私鑰解密,那就證明接受者確實ALICE
加密過程:
第一步:用單向加密算法提取數據(黑框A)的特征值
第二步:用自己的私鑰加密這段特征值形成黑框B
第三步:用對稱加密算法,對黑框A和黑框B來加密,得到紅框A
第四步:用ALICE的公鑰來加密第三步所用的密鑰,得到紅框B
解密過程:
第一步:ALICE用自己的私鑰解密紅框B得到對稱加密的密鑰
第二步:用這個密鑰解密紅框A內容
第三步:用BOB的公鑰解密黑框B,如果能成功,說明發送方確實是BOB,這就完成了身份驗證(解密后會得到一串數據的特征值)
第四步:用同樣的單項加密算法來對這段數據提取特征值,如果和第三步的特征值一樣,說明這段數據是完整的,這就完成了數據完整性的校驗
還有一個問題就是BOB和ALICE如何獲得對方的公鑰,或者說如何證明獲得的公鑰就是對方。這就需要引入另一方證書頒發機構CA,下面是對證書頒發機構跟BOB/ALICE之間的解釋
黑框C:代表要頒發給BOB/ALICE的公鑰,組織,地址等信息
黑框D:是對黑框C進行單向加密后得到的數字簽名,然后用自己的私鑰對其加密,傳輸給BOB和ALICE,拿著這個證書頒發機構的公鑰(這些證書頒發機構
的公鑰一般已經被microsoft事先放在windows里面,當然其他操作系統也是一樣的)的BOB和ALICE如果能對這個證書進行解密,說明這個
證書頒發機構不是冒充的
紅框E:表示頒發給BOB和ALICE的證書
CA的工作方式:
PKI
PKI(Public Key Infrastructure)公鑰基礎設施是提供公鑰加密和數字簽名服務的系統或平臺,目的是為了管理密鑰和證書。一個機構通過采用PKI 框架管理密鑰和證書可以建立一個安全的網絡環境。PKI 主要包括四個部分:X.509 格式的證書(X.509 V3)和證書廢止列表CRL(X.509 V2);CA 操作協議;CA 管理協議;CA 政策制定。一個典型、完整、有效的PKI 應用系統至少應具有以下五個部分;
公鑰基礎設施
簽證機構:CA
注冊機構:RA
證書吊銷列表:CRL
證書存取庫
CA:
公共信任的CA,私有CA;
建立私有CA:
openssl
OpenCA
openssl命令:
配置文件:/etc/pki/tls/openssl.cnf
構建私有CA:
在確定配置為CA的服務上生成一個自簽證書,并為CA提供所需要的目錄及文件即可;
步驟:
1、生成私鑰
2、生成自簽證書
3、為CA提供所需的目錄和文件
操作步驟
(1) 生成私鑰;
[root@bogon ~]# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096) Generating RSA private key, 4096 bit long modulus .......................................................................................... .......................................................................................... .....................................................++................................... .......................................................................................... ...............................................................++ e is 65537 (0x10001)
(2) 生成自簽證書;
[root@bogon ~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365 You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:CN State or Province Name (full name) []:Beijing Locality Name (eg, city) [Default City]:Beijing Organization Name (eg, company) [Default Company Ltd]:test Organizational Unit Name (eg, section) []:test Common Name (eg, your name or your server's hostname) []:test Email Address []:abc@qq.com
選項解釋:
-new:生成新證書簽署請求;
-x509:生成自簽格式證書,專用于創建私有CA時;
-key:生成請求時用到的私有文件路徑;
-out:生成的請求文件路徑;如果自簽操作將直接生成簽署過的證書;
-days:證書的有效時長,單位是day;
(3) 為CA提供所需的目錄及文件;
[root@bogon ~]# mkdir -pv /etc/pki/CA/{certs,crl,newcerts} [root@bogon ~]# touch /etc/pki/CA/{serial,index.txt} [root@bogon ~]# echo 01 > /etc/pki/CA/serial
要用到證書進行安全通信的服務器,需要向CA請求簽署證書:
步驟:(以httpd為例)
(1) 用到證書的主機生成私鑰;
[root@bogon ~]# mkdir /etc/httpd/ssl [root@bogon ~]# cd /etc/httpd/ssl [root@bogon ~]# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
(2) 生成證書簽署請求
[root@bogon ~]# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365
(3) 將請求通過可靠方式發送給CA主機;
U盤復制或其它可靠方式
(4) 在CA主機上簽署證書;
[root@bogon ~]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
查看證書中的信息:
[root@bogon ~]# openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject
吊銷證書:
步驟:
(1) 客戶端獲取要吊銷的證書的serial(在使用證書的主機執行):
[root@bogon ~]# openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject
(2) CA主機吊銷證書
先根據客戶提交的serial和subject信息,對比其與本機數據庫index.txt中存儲的是否一致;
吊銷:
[root@bogon ~]# openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
注:其中的SERIAL要換成證書真正的序列號;
(3) 生成吊銷證書的吊銷編號(第一次吊銷證書時執行)
[root@bogon ~]# echo 01 > /etc/pki/CA/crlnumber
(4) 更新證書吊銷列表
[root@bogon ~]# openssl ca -gencrl -out thisca.crl
查看crl文件:
[root@bogon ~]# openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。