Https 加密原理分析

眾所周知,HTTP 協議通過明文傳輸,是不安全的。于是,就在 HTTP 協議的基礎上,進行了數據加密,也就誕生了 HTTPS 協議。注意,HTTPS 并不是一個新的協議,它只不過是在 HTTP 的基礎上加了一層 TLS ( Transport Layer Security )

TLS是傳輸層加密協議,前身是SSL ( Secure Sockets Layer 翻譯為安全套接層)。由網景公司于1995年發布。后改名為TLS

隨著公眾對數據安全性越來越重視,HTTPS 逐漸成為主流,現在還在使用 HTTP 的網站,在谷歌瀏覽器地址欄前會有 “不安全” 字樣的提示。作為開發者,我們理應對 HTTPS 加密的原理有所了解。

HTTPS 的加密流程

概括來說,HTTPS 中的數據是通過對稱加密的方式來加密的,而對稱加密的密鑰是由客戶端生成的隨機字符串來充當,再通過非對稱加密的方式加密后傳遞到服務端。接下來是詳細的流程。這里,我們參考建立 tcp 連接中的三次握手的概念,在 https 加密過程中,服務端與客戶端也有三次握手

第一次握手(服務端發送公鑰到客戶端)

服務端將公鑰以證書的形式發送給客戶端,證書內包含服務器端的公鑰,證書頒發機構,證書有效期,服務端域名等信息。

第二次握手(客戶端對證書進行校驗并且向服務端發送對稱密鑰)

客戶端收到證書后,會選擇是否信任證書,這里是否信任可以根據域名,頒發機構,有效期等信息來判斷,如果證書校驗不通過,就給予風險提示并斷開連接;如果校驗通過,就生成一個隨機數,用作對稱加密的密鑰,并取出證書中的公鑰,用該公鑰對隨機數進行加密,將加密后的結果發送到服務端。

第三次握手(服務端用收到的對稱密鑰加密一段握手信息,發送到客戶端)

服務端收到客戶端發來的密鑰,先用自己的私鑰解密,解密成功后,用該對稱密鑰發送一段握手信息到客戶端。客戶端收到后,解密成功,至此,HTTPS 連接成功,后續的數據傳輸就會使用該對稱密鑰來進行加密。

以上就是 HTTPS 加密的大概的流程,接下來是一些細節上的問題。

HTTPS 是怎樣防止中間人攻擊的

我們知道,在第一次握手的過程中,中間人完全可以截獲服務端發送給客戶端的公鑰,并且將自己的公鑰發送給客戶端。客戶端用中間人的公鑰加密對稱密鑰,再將結果發送給服務端,中間人再次截獲,用自己的私鑰解密,獲取密鑰,再用服務端的公鑰加密后發送給服務端。這樣,中間人分別冒出服務端和客戶端跟彼此交互,就可以竊取信息了。

解決方案

以上中間人攻擊成功的主要原因,是客戶端無法識別公鑰的來源是否來自真正的服務端。這里的解決方案就是數字證書。

  • 服務端通過向 CA 等被信任的機構申請獲取 CA 私鑰,并對服務端公鑰等信息通過 hash 算法生成消息摘要,用 CA 私鑰對該消息摘要加密,生成簽名,將該簽名封裝到證書中一起發送到客戶端;
  • 客戶端收到證書后,用 CA 公鑰對簽名進行解密,再對服務端公鑰等信息生成消息摘要,并將其與解密的結果進行比對,如果一致,就證明服務端的公鑰來源正確

這里用到的 CA 私鑰是服務端向 CA 機構申請來的,而 CA 公鑰是客戶端系統內置的。所以,從這里可以看出,如果使用 CA 認證的證書,系統會自動信任服務端公鑰來源;如果使用自簽名的證書,就需要客戶端提前內置該自簽名的證書,當收到服務端發來的證書時,需要與自己內置的證書進行比對,無誤后才可以信任,否則會有被中間人攻擊的風險。

在 Android 端,校驗證書的方式可以參考鴻洋-Android Https相關完全解析

如果考慮到一種極端情況,中間人所用的證書也是向 CA 機構申請的,那么處理方式就和自簽名證書一樣,將服務端的證書提前放在本地,建立 HTTPS 連接的時候,將服務器發送來的證書與本地的證書進行嚴格比對。

總結

以上就是 HTTPS 加密的大致流程,它在一定程度上解決了 HTTP 協議明文傳輸的痛點,但是我們得清楚,世界上并不存在完全安全的系統,盡管 HTTPS 的加密機制的設計已經足夠精妙了,但它也并不是無懈可擊的。在 Android 端,我們可以使用 Xposed 或者其他 hook 框架對校驗證書的方法進行 hook,使其在任何情況下都校驗通過,這樣就繞過了證書校驗的過程。

加密與破解的過程本來就是魔高一尺,道高一丈的過程,再精妙絕倫的加密算法也不是無懈可擊的,但這并不能否定加密的意義。就像再安全堅固的防盜門也會被撬開,但這并不能說防盜門的存在就沒有意義。安全機制的演進就是不斷提高破解成本的過程,當破解成本大于破解后的收益的時候,那就是安全的。

參考文章

HTTPS 如何保證數據傳輸的安全性

扯一扯HTTPS單向認證、雙向認證、抓包原理、反抓包策略

Android Https相關完全解析 當OkHttp遇到Https

轉載于:https://juejin.im/post/5cb130685188251ae23254ec

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/279691.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/279691.shtml
英文地址,請注明出處:http://en.pswp.cn/news/279691.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JS框架_(JQuery.js)純css3進度條動畫

百度云盤  傳送門  密碼&#xff1a;wirc 進度條動畫效果&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge,chrome1">…

如何在Android主屏幕上添加熱點快捷方式

Portable Wi-Fi hotspots on your Android phone are great, because hotel Wi-Fi usually isn’t, but toggling that hotspot on and off is a pain. Here are several easy ways to add a hotspot widget to your home screen. 您的Android手機上的便攜式Wi-Fi熱點很棒&…

提高關鍵詞排名的28個SEO技巧

28個讓關鍵詞排名明顯改觀的SEO技巧&#xff1a; 關鍵詞位置、密度、處理 URL中出現關鍵詞&#xff08;英文&#xff09; 網頁標題中出現關鍵詞&#xff08;1-3個&#xff09; 關鍵詞標簽中出現關鍵詞&#xff08;1-3個&#xff09; 描述標簽中出現關鍵詞&#xff08;主關鍵…

SQLI DUMB SERIES-16

&#xff08;1&#xff09;無論怎么輸入&#xff0c;都沒有回顯&#xff0c;但當輸入 admin")#時&#xff0c;顯示登錄成功。若通過其他方法獲取數據庫的用戶名&#xff0c;可通過這個方法登錄成功。 &#xff08;2&#xff09;獲取其他信息可用考慮時間延遲注入。方法同1…

如何在YouTube視頻上禁用注釋

YouTube has that betcha-can’t-watch-just-one appeal to it, which is why YouTube’s annoyances become so pronounced the more you use it. Many of these features, such as annotations can be permanently disabled, making for a more enjoyable viewing experience…

Linux目錄配置及應放置的內容

Linux目錄配置及應放置的內容 /bin&#xff1a;系統有很多放置執行文件的目錄&#xff0c;但/bin比較特殊。因為/bin放置的是在用戶維護模式下還能夠被操作的命令。在/bin下面的命令可以被root與一般賬號所使用&#xff0c;主要有cat,chmod,chown,date,mv,mkdir,cp,bash等常用命…

快速實現一個Http回調組件

2019獨角獸企業重金招聘Python工程師標準>>> 快速實現一個Http回調組件 一、前情回顧 ? 我們平時在使用一些庫的時候&#xff0c;會遇到一些看起來很舒服的寫法&#xff0c;用起來感覺很簡單&#xff0c;而且寫法也很優雅&#xff0c;比如OkHttp&#xff0c;或者是…

MyBatis緩存通俗易懂

1.1 mybatis緩存介紹 如下圖&#xff0c;是mybatis一級緩存和二級緩存的區別圖解&#xff1a; Mybatis一級緩存的作用域是同一個SqlSession&#xff0c;在同一個sqlSession中兩次執行相同的sql語句&#xff0c;第一次執行完畢會將數據庫中查詢的數據寫到緩存&#xff08;內…

DVbbs8.2入侵思路與總結

dvbbs8.2后比較變態&#xff0c;目前還沒有特別好的方法&#xff0c;外面有人提到一種方法就是直接上傳php文件或者其它服務器支持文件&#xff0c;這個也是一個思路&#xff0c;不過很多時候&#xff0c;單獨的服務器不會支持這么多。dvbbs禁用了asp和asp.net的上傳&#xff0…

Python基礎教程:Python pass語句詳解

2019獨角獸企業重金招聘Python工程師標準>>> Python pass 語句 Python pass是空語句&#xff0c;是為了保持程序結構的完整性。 pass 不做任何事情&#xff0c;一般用做占位語句。 Python 語言 pass 語句語法格式如下&#xff1a; 實例&#xff1a; 學習從來不是一個…

Oracle數據庫在Nokia

Nokia固然今非昔比&#xff0c;但在手機市場仍是未瘦死的駱駝&#xff0c;有關報道顯示Nokia現役的數據庫(包括Oracle、MySQL、MSSQL)達到2300套之多&#xff0c; DBA團隊共有20多人&#xff0c;平均每人100多套庫。 Grid Control在過去5年中是最主要的、也幾乎是唯一的DBA管理…

css animation動畫

css 動畫&#xff1a; 動畫是CSS3中具有顛覆性的特征之一&#xff0c;可通過設置多個節點來精確控制一個或一組動畫&#xff0c;常用來實現復雜的動畫效果. 必要元素&#xff1a;a、通過keyframes指定動畫序列&#xff1b;自動補間動畫&#xff0c;確定兩個點&#xff0c;系統會…

甘特圖看起來很生硬?教你使用智能顏色裝飾你的甘特圖!(二)

在上一篇文章中我們了解到顏色在甘特圖中也有不同的作用。其中顏色在甘特圖中扮演著三個角色&#xff0c;才能使甘特圖對用戶有意義。 顏色決定甘特圖的外觀。顏色還可以用來定義甘特圖的語義。因此&#xff0c;它們幫助用戶更快地理解甘特圖所呈現的完整且常常復雜的現實。顏色…

網絡串流_串流NFL足球的最便宜方式(無需電纜)

網絡串流Football season is almost upon us. That means one thing: expensive cable or satellite TV packages. Okay, it also means beer commercials and overpriced stadium tickets and quarterbacks trying to sell you car insurance. But in terms of immediate cost…

【高清】網絡安全思維導圖

本文轉自 是阿杰啊 51CTO博客&#xff0c;原文鏈接:http://blog.51cto.com/jschinamobile/1969018

生成函數初探

對給定序列\(\{a_{0,1,2,\cdots}\}\) 構造一個函數\(F(x)\sum_{i0,1,2,\cdots}a_if_i(x)\)&#xff0c;稱\(F(x)\)為序列\(\{a_{0,1,2,\cdots}\}\)的生成函數。其中&#xff0c;序列\(\{f_{0,1,2,\cdots}(x)\}?\)只作為標志用&#xff0c;稱為標志函數。 普通型生成函數(OGF) …

Pixel相機是怎么做到自動補抓最不錯的自拍照

網絡大廠 AI研究團隊近日在最新的Pixel相機中&#xff0c;于無快門模式Photobooth新增親吻偵測功能&#xff0c;當用戶親吻自己的愛人時&#xff0c;相機會自動捕捉這一瞬間。網絡大廠過去是藉由Photobooth模式&#xff0c;讓用戶更簡單地成功自拍&#xff0c;不管是一個人、情…

os x 啟動引導_什么是OS X的啟動板以及它如何工作?

os x 啟動引導If you’re new to OS X, or even if you’re not and you’re simply used to pinning everything to the Dock, you might have wondered what Launchpad is, what it does, and how to use it. 如果您不熟悉OS X&#xff0c;或者即使您不熟悉OS X&#xff0c;而…

freeradius的proxy功能

要配置freeRADIUS的proxy功能&#xff0c;就需要熟悉它的兩個配置文件&#xff1a;proxy.conf 和client.conf。 1. proxy.conf主要是用來配置被代理的radius server&#xff08;也叫home server&#xff09; 和 realm&#xff0c; 以及他們之間的映射關系&#xff0c;也就是req…

小程序 iphone和安卓_如何阻止iPhone和iPad應用程序要求評級

小程序 iphone和安卓Lots of iPhone and iPad apps ask for ratings, and they often don’t stop. Even if you do leave a review just to stop seeing the review requests, new apps you install will pester you for reviews, too. iOS 11 fixes this problem, limiting h…