對稱加密:通訊雙方用的同一把金鑰
非對稱加密:
1.公用金鑰:對其他人公開
2.私有金鑰:只能是持有ca證書的web伺服器使用,對其他人不公開
http 是不安全的。利用網路抓包工具就可以知道傳輸中的內容,一覽無餘。比如我經常會使用 fiddler 來抓包,蒐集一些有趣的 api 介面。
那麼問題來了,如何保證 http 的安全性呢?基本上所有的人都會脫口而出:使用 https 協議。99.9% 的人都知道 https 會將傳輸的內容進行加密,但是接著問具體加密的過程和步驟,很多人就啞口無言了。
為了防止出現這種尷尬的局面,所以今天你就要好好看看這篇的內容了。以後就可以裝個逼,哈哈!
body
加密型別
先科普一下,加密演算法的型別基本上分為了兩種:
對稱加密,比較有代表性的就是 aes 加密演算法;非對稱加密,經常使用到的 rsa 加密演算法就是非對稱加密的;
對稱加密的意思就是說雙方都有乙個共同的金鑰,然後通過這個金鑰完成加密和解密,這種加密方式速度快,但是安全性不如非對稱加密好。
舉個例子,現在學霸小明這裡有一道數學題的答案:123 。他想把答案傳給自己一直暗戀的小紅。所以他們雙方在考試開考前,約定了一把金鑰:456 。那麼小明就把答案內容經過金鑰加密,即 123 + 456 = 579 ,將 579 寫在小紙條上扔給小紅。如果此時別人撿到了小紙條,不知道他們是加密傳輸的,看到上面的 579 ,會誤以為答案就是 579 ;如果是小紅撿到了,她拿出金鑰解密,579 - 456 = 123 ,得到了正確的答案。
這就是所謂的對稱加密,加解密效率高,速度快,但是雙方任何一方不小心洩露了金鑰,那麼任何人都可以知道傳輸內容了。
講完了對稱加密,我們看看啥是非對稱加密。
非對稱加密就是有兩把金鑰,公鑰和私鑰。私鑰自己藏著,不告訴任何人;而公鑰可以公開給別人。
經過了上次作弊後,小紅發現了對稱加密如果金鑰洩露是一件可怕的事情。所以她和小明決定使用非對稱加密。小紅生成了一對公鑰和私鑰,然後把公鑰公開,小明就得到了公鑰。小明拿到公鑰後,把答案經過公鑰加密,然後傳輸給小紅,小紅再利用自己的私鑰進行解密,得到答案結果。如果在這個過程中,其他人得到傳輸的內容,而他們只有小紅公鑰,是沒有辦法進行解密的,所以也就得不到答案,只有小紅乙個人可以解密。
因此,相比較對稱加密而言,非對稱加密安全性更高,但是加解密耗費的時間更長,速度慢。
對稱加密和非對稱加密的具體應用我還是深有體會的,因為所在的公司是做金融支付方面的,所以加解密基本上算是天天見了。
說完加密型別後,我們再來看看 https 。
我們先來看乙個公式:
從這個公式中可以看出,https 和 http 就差在了 ssl 上。所以我們可以猜到,https 的加密就是在 ssl 中完成的。
所以我們的目的就是要搞懂在 ssl 中究竟幹了什麼見不得人的事了?
這就要從 ca 證書講起了。ca 證書其實就是數字證書,是由 ca 機構頒發的。至於 ca 機構的權威性,那麼是毋庸置疑的,所有人都是信任它的。ca 證書內一般會包含以下內容:
證書的頒發機構、版本證書的使用者證書的公鑰證書的有效時間證書的數字簽名 hash 值和簽名 hash 演算法…
正好我們把客戶端如何校驗 ca 證書的步驟說下吧。
ca 證書中的 hash 值,其實是用證書的私鑰進行加密後的值(證書的私鑰不在 ca 證書中)。然後客戶端得到證書後,利用證書中的公鑰去解密該 hash 值,得到 hash-a ;然後再利用證書內的簽名 hash 演算法去生成乙個 hash-b 。最後比較 hash-a 和 hash-b 這兩個的值。如果相等,那麼證明了該證書是對的,服務端是可以被信任的;如果不相等,那麼就說明該證書是錯誤的,可能被篡改了,瀏覽器會給出相關提示,無法建立起 https 連線。除此之外,還會校驗 ca 證書的有效時間和網域名稱匹配等。
接下來我們就來詳細講一下 https 中的 ssl 握手建立過程,假設現在有客戶端 a 和伺服器 b :
2.伺服器 b 知道這些資訊後,然後確認一下雙方的加密演算法,然後服務端也生成乙個隨機數 b ,並將隨機數 b 和 ca 頒發給自己的證書一同返回給客戶端 a 。
3.客戶端 a 得到 ca 證書後,會去校驗該 ca 證書的有效性,校驗方法在上面已經說過了。校驗通過後,客戶端生成乙個隨機數3 ,然後用證書中的公鑰加密隨機數3 並傳輸給服務端 b 。服務端 b 得到加密後的隨機數3,然後利用私鑰進行解密,得到真正的隨機數3。//ssl初始化過程使用的金鑰加密
4.最後,客戶端 a 和服務端 b 都有隨機數1、隨機數2、隨機數3,然後雙方利用這三個隨機數生成乙個對話金鑰。之後傳輸內容就是利用對話金鑰來進行加解密了。這時就是利用了對稱加密,一般用的都是 aes 演算法。
//之後的所有資料傳輸過程都是使用對稱加密
客戶端 a 通知服務端 b ,指明後面的通訊用對話金鑰來完成,同時通知伺服器 b 客戶端 a 的握手過程結束。服務端 b 通知客戶端 a,指明後面的通訊用對話金鑰來完成,同時通知客戶端 a 伺服器 b 的握手過程結束。ssl 的握手部分結束,ssl 安全通道的資料通訊開始,客戶端 a 和伺服器 b 開始使用相同的對話金鑰進行資料通訊。
到此,ssl 握手過程就講完了。可能上面的流程太過於複雜,我們簡單地來講:
客戶端和服務端建立 ssl 握手,客戶端通過 ca 證書來確認服務端的身份;
互相傳遞三個隨機數,之後通過這隨機數來生成乙個金鑰;互相確認金鑰,然後握手結束;
資料通訊開始,都使用同乙個對話金鑰來加解密;
我們可以發現,在 https 加密原理的過程中把對稱加密和非對稱加密都利用了起來。即利用了非對稱加密安全性高的特點,又利用了對稱加密速度快,效率高的好處.
為保證網上數字資訊的傳輸安全,除了在通訊傳輸中採用更強的加密演算法等措施之外,必須建立一種信任及信任驗證機制,即參加電子商務的各方必須有乙個可以被驗證的標識,這就是數字證書。數字證書是各實體(持卡人/個人、商戶/企業、閘道器/銀行等)在網上資訊交流及商務交易活動中的身份證明。該數字證書具有唯一性。它將實體的
公開金鑰同實體本身聯絡在一起,為實現這一目的,必須使數字證書符合
x.509國際標準,同時數字證書的**必須是可靠的。這就意味著應有乙個網上各方都信任的機構,專門負責數字證書的發放和管理,確保網上資訊的安全,這個機構就是
ca認證機構。各級
ca認證機構的存在組成了整個電子商務的信任鏈。如果
ca機構不安全或發放的數字證書不具有權威性、公正性和可信賴性,電子商務就根本無從談起。
數字證書認證中心(certficate authority,ca)是整個網上電子交易安全的關鍵環節。它主要負責產生、分配並管理所有參與網上交易的實體所需的身份認證數字證書。每乙份數字證書都與上一級的數字簽名證書相關聯,最終通過安全鏈追溯到乙個已知的並被廣泛認為是安全、權威、足以信賴的機構--根認證中心(根ca)。
電子交易的各方都必須擁有合法的身份,即由
數字證書認證中心機構(ca)簽發的數字證書,在交易的各個環節,交易的各方都需檢驗對方數字證書的有效性,從而解決了使用者信任問題。ca涉及到電子交易中各交易方的身份資訊、嚴格的加密技術和認證程式。基於其牢固的安全機制,ca應用可擴大到一切有安全要求的網上資料傳輸服務。
數字證書認證解決了網上交易和結算中的安全問題,其中包括建立電子商務各主體之間的信任關係,即建立安全認證體系(ca);選擇安全標準(如set、ssl);採用高強度的加、解密技術。其中安全認證體系的建立是關鍵,它決定了網上交易和結算能否安全進行,因此,
數字證書認證中心機構的建立對電子商務的開展具有非常重要的意義。
認證中心(ca),是電子商務體系中的核心環節,是電子交易中信賴的基礎。它通過自身的註冊審核體系,檢查核實進行證書申請的使用者身份和各項相關資訊,使網上交易的使用者屬性客觀真實性與證書的真實性一致。認證中心作為權威的、可信賴的、公正的第三方機構,專門負責發放並管理所有參與網上交易的實體所需的數字證書。
SQLserver儲存過程加密 解密
sqlserver儲存過程加密 解密 加密儲存過程 判斷表是否存在,如果存在就刪除 if object id n dbo.test n u is not null drop table dbo.pwdtable go 建立表 varbinary是乙個可以改變長度的二進位制資料。default 如果某...
des vue 加密解密 DES加密 解密
外掛程式描述 des data encryption standard 是發明最早的最廣泛使用的分組對稱加密演算法。des演算法簡介 des data encryption standard 是發明最早的最廣泛使用的分組對稱加密演算法。des演算法的入口引數有三個 key data mode。其中k...
RSA加密演算法加密與解密過程解析
1.加密演算法概述 加密演算法根據內容是否可以還原分為可逆加密和非可逆加密。可逆加密根據其加密解密是否使用的同乙個金鑰而可以分為對稱加密和非對稱加密。所謂對稱加密即是指在加密和解密時使用的是同乙個金鑰 舉個簡單的例子,對乙個字串c做簡單的加密處理,對於每個字元都和a做異或,形成密文s。解密的時候再用...