亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android中怎么實現Https

發布時間:2021-06-26 14:38:32 來源:億速云 閱讀:240 作者:Leah 欄目:大數據

今天就跟大家聊聊有關Android中怎么實現Https,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。


一、Client 向 Server 提供支持的加密算法

Android中怎么實現Https

首先 Client 向 Server 發送一條消息,包括 Client 各種支持的加密算法、協議版本以及壓縮算法。目的是通知 Server 在所給的算法中選擇一種,以便于之后通信的加解密。

同時,Client 會在本端生成一段隨機數作為之后對稱加密的私鑰,現在來簡單解釋一下對稱加密和 Client 的私鑰。舉個平時的栗子,你肯定要和你女朋友共享銀行卡的密碼(不要問為什么),假設你是 Client,女朋友是 Server,銀行卡是之后傳輸的密文,你設置的密碼就是密鑰。你在家里悄悄地把密碼告訴了你女朋友,密碼天知地知你知你女朋友知,這時候就算銀行卡丟了也不怕,因為沒有第三個知道密碼(密鑰),所以錢(機密信息)就不會被竊取,這就是對稱加密。

二、Server 響應 Client,傳送證書以及確認信息

Android中怎么實現Https

Server 收到 Client 的消息后,會做出一次響應。回復信息中主要包含圖中的三部分,其中證書是最重要的一部分,現在就來說一下證書都包含哪些東西,其作用到底是什么。這一部分要說的內容比較多,做好心理準備~

首先,說一下證書中都包含哪些信息:一些個人信息,如用戶的姓名、組織、郵箱地址等,除此之外包含了服務器生成的公鑰。公鑰就是公鑰加密(非對稱加密)的組成部分之一,還有一部分就是私鑰,現在繼續上一節的栗子講什么是公鑰加密。

有一天,你在家中告訴你女朋友銀行卡密碼,恰巧隔墻有耳(攻擊者竊取了密鑰),于是你的錢財就受到了威脅,因為那個人隨時可能盜刷你的銀行卡。那怎么解決呢?你想了個好辦法,你買了一把鎖(公鑰),只配兩把鑰匙(私鑰),你和你女朋友各執一把。然后你和你女朋友說,我每周會往床頭的柜子里寫一個密碼條(對稱加密的密鑰),那就是咱們銀行卡的密碼。這樣一來,除你二人沒人能打開柜子拿到密碼,就保證了安全。

所以公鑰加密就是 Server 生成一對密鑰(公鑰和私鑰),然后私鑰自己保留,相當于一把鑰匙,公鑰相當于是一把鎖,任何人都可以拿到,但鑰匙卻只有一把,這樣用此鎖鎖住的東西就絕對安全了。

明白了什么是公鑰加密后,現在又面臨了一個問題,Server 在給 Client 傳送公鑰的過程中,公鑰被攻擊者掉包了。也就是 Client 誤使用了攻擊者的鎖,這樣密鑰就被攻擊者套走了,之后的通信就完全暴露了,所以 Client 需要清楚鎖到底是不是從 Server 傳來的,這就需要將鎖(公鑰)放到證書中,并將證書交給權威機構(CA)做認證,只有 CA 認證過的鎖 Client 才會使用。

那么下一個問題來了,CA 是如何讓 Client 相信公鑰是安全的呢?就是使用數字簽名技術,現在來簡單解釋一下什么是數字簽名。

簡單來說,數字簽名就是反著使用公鑰加密,剛才說過公鑰加密中鑰匙只有一把(私鑰只有一個),所以數字簽名就是用鎖來試鑰匙,如果鎖被打開了,
證明鎖一定是你的,因為只有你有鑰匙,賴賬也沒用。

具體來說,CA 使用自己的私鑰通過某種 Hash 算法對 Server 證書中的公鑰進行 Hash 運算得到了一個 Hash 串,然后將 Hash 串寫在證書里一并交給 Client,便于 Client 進行認證。Client 使用 CA 提供的公鑰(鎖,任何人都能拿到)通過 Hash 運算也得到一個 Hash 串,和證書中的做對比,如果相同則證明證書一定是 CA 認證過的,是安全的,這就是用鎖去試驗鑰匙的過程。

三、Client 檢驗證書合法性

Android中怎么實現Https

上一節中其實已經說了 Client 如何認證證書合法性了,假若證書驗證沒通過,一般情況下程序會拋出異常,處理異常時可以選擇與 Server 斷開連接。這一節主要說證書認證通過之后,Client 又做了那些事。

證書成功認證之后,Client 首先會對第一步中生成的那段隨機數進行 Hash 運算,然后使用證書中的公鑰對隨機數進行加密。之后會生成一條消息,并將 Hash 串和密文放到消息中發送給 Server。

在消息傳遞的過程中,解密的私鑰只有 Server 才有,所以密文在傳輸過程中絕對安全。還有一個風險就是攻擊者可能會把消息篡改,這時,Hash 串的作用就體現出來了。通過 Hash 串防篡改的技術就是消息摘要,現在來簡單地說一下消息摘要。

簡單來說,消息摘要就是通過不可逆的算法生成一段 Hash 串,也就是一旦 Hash 串生成了,就無法在通過其他手段將其還原回原來的樣子。所以如果原始內容的 Hash 值確定了,就證明了內容的完整和可靠性,一旦內容被修改,Hash 串必定和之前不同。

四、 Server 解密取出隨機數,并向 Client 發送握手消息

Android中怎么實現Https

Server 收到 Client 發送的消息后,將密文用私鑰解密得到了隨機數。然后需要用同樣的消息摘要算法對隨機數進行運算,將算出來的 Hash 串與消息中的 Hash 串對比,如果內容完全一致,則繼續后面的流程,如果不一致就會斷開連接。

如果隨機數無誤,Server 就會準備一條握手消息,并且會使用之前和 Client 確認過的對稱加密算法對消息加密,密鑰就是隨機數。同樣的,為防止消息被篡改,需要用消息摘要對消息進行處理。

密鑰通過公鑰加密的方式傳遞過來,之后每條消息都用此密鑰加密,從而保證了內容的安全。

五、總結完整過程

這里盜用一張圖

Android中怎么實現Https

相信看完前面的內容已經大致明白了 https 的流程,看著上面????的圖,可把流程大致總結為:

  • 用公鑰加密的方式安全地運送 random key

  • 之后用 random key 作為密鑰進行對稱加密,保障通信內容的安全

到這里有同學肯定會有這樣的疑問:
既然公鑰加密就已經能保證安全了,為何不所有通信都用公鑰加密呢?這其實就說到了公鑰加密的一個致命缺點,就是公鑰加密的效率很低,所以公鑰加密只使用一次。而對稱加密的效率高于公鑰加密,所以在之后的通信中會頻繁的使用。

看完上述內容,你們對Android中怎么實現Https有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

咸丰县| 根河市| 府谷县| 武强县| 伊川县| 瑞安市| 扎囊县| 恩施市| 克拉玛依市| 云阳县| 辽阳市| 屏东市| 辽宁省| 招远市| 孝昌县| 城步| 无极县| 昌邑市| 中超| 桦南县| 锦州市| 宿松县| 阿鲁科尔沁旗| 曲麻莱县| 馆陶县| 泾川县| 临湘市| 宁都县| 奈曼旗| 镇安县| 普宁市| 丹江口市| 灵丘县| 金昌市| 长宁县| 颍上县| 文化| 遂宁市| 都安| 天镇县| 绩溪县|