HTTPS/數字證書/數字簽名
HTTPS
所有的HTTP請求和響應資料都需要加密。 一個傳輸級的安全密碼層:SSL
後繼者:TLS。 我們不嚴格的用SSL表示SSL和TLS
HTTPS是位於安全層之上的HTTP,這個安全層位於TCP之上。
為什麼用HTTPS (必要性)
伺服器認證 :客戶端知道它是在與真正的而不是偽造的伺服器通話
客戶端認證:伺服器知道他們是在與真正的而不是偽造的客戶端通話
完整性: 客戶端和伺服器的資料不會被修改
加密:對話是私密的,不怕被竊聽
效率: 一個執行足夠快速的演算法
普遍性:所有的客戶和伺服器都支援這些協議
管理的可擴充套件性:任何地方的任何人都可以立即進行安全通訊
加密原理
對稱加密技術
編碼的時候使用的金鑰值 和 解碼的一樣
e=d . 對稱金鑰加密中傳送端和接收端共享相同的金鑰才能通訊!
舉例
一個客戶端傳送資訊給另一個節點,它用自己的一個金鑰加密這個資訊,然後傳送給另一個節點客戶端,另一個節點也要使用這個對應的金鑰來解密這個資訊。 如果一個通訊鏈路上有N個節點,那麼其中一個節點和其他N-1個節點進行通訊的話就需要N^2個金鑰。這對於管理來說非常困難。
非對稱加密技術
一把公鑰發給多個客戶端,它們可以用這個公鑰加密自己的資訊然後傳送給服務端,如果要對內容解密的話就必須用服務端的私鑰才能解密。
對於一個通訊鏈路中的一個節點來說,就是,任何想要傳送報文給節點X的人它的金鑰是公開的,你使用它提供的金鑰加密即可。 X接收到資訊後,使用它自己的私鑰才能解密。 別人就算獲取了它的報文,也無法破解。
RSA
RSA是一種用在公開金鑰非對稱加密系統的演算法。
公開金鑰(公有的)
一小片攔截下來的密文(可通過網路獲取)
一條報文及與之相關的密文(對任意一段文字執行加密器就可以得到)
破解它的難度就是對一個極大的數進行質因子分解的難度
數字簽名
將報文按雙方約定的HASH演算法計算得到一個固定位數的報文摘要。
在數學上保證:只要改動報文中任何一位,重新計算出來的報文摘要值就會與原先的值不相符。這就保證了報文的不可更改性。
關鍵: Hash生成摘要然後再用私鑰加密
HASH –> 摘要
私鑰加密—> 簽名
簽名是加了密的“校驗和”
- 簽名可以證明是作者編寫了這條報文。
- 簽名防止被篡改。惡意攻擊者報文傳輸過程修改,校驗和不再匹配了。 校驗和只有作者保密的私有金鑰才能產生,所以攻擊者無法為報文偽造出正確的校驗碼。
流程
傳送者
節點A 將報文 HASH ,然後生成一個摘要。
然後一個摘要應用一個簽名函式以及私鑰加密,生成簽名
接收者
接收者需要使用公鑰解密數字簽名,然後將得到報文的摘要。 證明這個報文確實是節點A傳送的。
然後再對接收到的報文使用Hash函式,得到摘要,與剛才的摘要比較,兩者一致則證明沒有被修改過。
附加
校驗和:是傳輸位數的累加,當傳輸完成,接收者可以根據這個數值判斷是否接到了所有資料。 如果數值匹配,那麼說明傳送已經完成。
以每16位為單位進行反碼求和,如果最高位進位,就與最後一位求和。 將結果取反。
數字證書
數字證書一般是CA機構頒發的。
原因:
無法確定公鑰是否權威。 如果A的公鑰被惡意的B用自己的公鑰替換了,那麼本來要傳送報文給A的客戶端都會擁有了B的公鑰,然後用B的公鑰加密傳送給B,無法區分兩個公鑰。
我們用證書,給公鑰附加很多的資訊!!!
CA證書中心會對公鑰和一些相關資訊一起加密生成數字證書
Usage
自己的網站比如在騰訊雲上的,我用的https協議,那麼我需要去申請一個權威的一般瀏覽器都認可的數字證書。然後下載它並配置到我的web伺服器上面。
它可能包含這些內容
ID :主要內容包含了由某個受信任組織擔保的使用者或公司的相關資訊。
物件的名稱
過期時間
證書釋出者
來自證書釋出者的數字簽名
所有這些資訊都是由一個官方的“證書頒發機構”以數字方式簽發的。
使用數字證書流程
瀏覽器接收到數字證書,需要使用CA的公鑰來驗證簽名,(如果這是一個權威的公共簽名機構,那麼瀏覽器可能就內建了這個CA的公鑰了), 使用CA的公鑰以及傳送者的公鑰解密生成 報文摘要,然後比較摘要是否相同。驗證數字簽名。
HTTPS
- 客戶端傳送加密請求給伺服器
伺服器用自己的私鑰加密資源後(如HTML網頁),連同本身的數字證書一起傳送給客戶端。
客戶端的證書管理器
如果數字證書記載的網址與你正在瀏覽的網址不一致,說明這個證書可能被冒用,瀏覽器會發出警告。
如果證書不是受信任的機構頒發的,瀏覽器會發出另外一種警告。
12306的證書不是受信任的
HTTPS怎麼實現安全傳輸的?
建立安全傳輸
HTTPS中, 客戶端首先開啟一條到WEB伺服器443埠的連線。 一旦建立了TCP連線
,客戶端和伺服器就會初始化SSL層,對加密引數進行溝通,並交換金鑰。
握手完成後,SSL初始化就完成了,客戶端就可以將請求報文傳送給安全層了。
重點 SSL握手
傳送已加密的HTTP報文之前,客戶端和伺服器要進行一次SSL握手,這個握手過程中,他們完成:
- 客戶端傳送列出客戶端密碼能力的客戶端資訊,比如SSL的版本,客戶端支援的金鑰對和客戶端支援的hash方法(壓縮方法)。 client_hello
- 伺服器響應,伺服器選擇一個兩端都瞭解的金鑰。和伺服器的hash方法。 server_hello
- 伺服器傳送SSL數字證書 X.509,等待客戶端響應
- 一旦接受到,客戶端將驗證伺服器的SSL數字證書的有效性。 伺服器也可以請求客戶端的SSL證書(SSL支援雙向)
- 一旦校驗通過,客戶端就回隨機生成一個用於後面通訊的“對稱密碼”pre_master_secret,用伺服器的公鑰加密。然後傳送給伺服器。
- 服務端用私有金鑰解密加密後的隨機資料並協商暗號
得到pre_master_secret,然後雙方利用這個協商得到master_secret。 這個是為了保證資料的安全。 - 服務端跟客戶端利用mastersecret產生真正的sessionkey,這是一個對稱加密的key。 然後握手結束。
選擇一個兩端都瞭解的密碼
對兩端的身份進行認證。
生成臨時的會話金鑰,加密通道
其實還有SSL雙向握手,這裡就不闡述了。
對比HTTP和HTTPS的傳輸
本質關鍵原因
SSL是一個二進位制的協議,和HTTP完全不同。 流量是在443埠承載的。
相關推薦
HTTPS/數字證書/數字簽名
HTTPS 所有的HTTP請求和響應資料都需要加密。 一個傳輸級的安全密碼層:SSL 後繼者:TLS。 我們不嚴格的用SSL表示SSL和TLS HTTPS是位於安全層之上的HTTP,這個安全層位於TCP之上。 為什麼用HTTPS (必要性) 伺服器認證
數字證書, 數字簽名, SSL(TLS) , SASL
密碼學 1. 加密方法可以分為兩大類。一類是單鑰加密(private key cryptography),還有一類叫做雙鑰加密(public key cryptography)。前者的加密和解密過程都用同一套密碼,後者的加密和解密過程用的是兩套密碼。 歷史
和安全有關的那些事 非對稱加密 數字摘要 數字簽名 數字證書 SSL HTTPS及其他
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
通俗理解數字簽名,數字證書和https
前言 最近在開發關於PDF合同文件電子簽章的功能,大概意思就是在一份PDF合同上簽名,蓋章,使其具有法律效應。簽章有法律效應必須滿足兩個條件: 能夠證明簽名,蓋章者是誰,無法抵賴 PDF合同在簽章後不能被更改 在紙質合同中,由於簽名字跡的不可複製性,蓋章的唯一性以及紙質合
幾個例子理解對稱加密與非對稱加密、公鑰與私鑰、簽名與驗籤、數字證書、HTTPS加密方式
# 原創,轉載請留言聯絡 為什麼會出現這麼多加密啊,公鑰私鑰啊,簽名啊這些東西呢?說到底還是保證雙方通訊的安全性與完整性。例如小明發一封表白郵件給小紅,他總不希望給別人看見吧。而各種各樣的技術就是為了保障通訊的安全。(本文務必從上到下看) 1.對稱加密與非對稱加密 對稱加密: 對稱加密是
HTTPS協議以及雙向數字證書校驗 自簽名證書的生成
$ openssl x509 -text -in client.crt -noout Certificate: Data: Version: 1 (0×0) Serial Number: d6:e3:f6:fa:ae:65:ed:df
私鑰、公鑰、數字簽名、數字證書、HTTPS
加密:公鑰加密,私鑰解密 認證:私鑰加密,公鑰解密 如果A給B傳送一個加密的有數字簽名的檔案,會怎麼樣呢? 首先A有自己的公鑰和私鑰:A_public_key, A_private_key B也有自己的公鑰和私鑰:
和安全有關的那些事(非對稱加密、數字摘要、數字簽名、數字證書、SSL、HTTPS及其他)
本文原文連線:http://blog.csdn.net/bluishglc/article/details/7585965 對於一般的開發人員來說,很少需要對安全領域內的基礎技術進行深入的研究,但是鑑於日常系統開發中遇到的各種安全相關的問題,熟悉和了解這些安全技術的基本原理和使用場景還是非常必要的。本文將對
和安全有關的那些事(非對稱加密、數字摘要、數字簽名、數字證書、SSL、HTTPS)
對於一般的開發人員來說,很少需要對安全領域內的基礎技術進行深入的研究,但是鑑於日常系統開發中遇到的各種安全相關的問題,熟悉和了解這些安全技術的基本原理和使用場景還是非常必要的。本文將對非對稱加密、數字摘要、數字簽名、數字證書、SSL、HTTPS等這些安全領域內的技術進行一番
【上】安全HTTPS-全面詳解對稱加密,非對稱加密,數字簽名,數字證書和HTTPS
此文章轉載來源於http://blog.csdn.net/tenfyguo/article/details/40922813點選開啟連結 一,對稱加密 所謂對稱加密,就是它們在編碼時使用的金鑰e和解碼時一樣d(e=d),我們就將其統稱為金鑰k。 對稱加解密的過
網路安全之 (非對稱加密、數字摘要、數字簽名、數字證書、SSL、HTTPS及其他)
對於一般的開發人員來說,很少需要對安全領域內的基礎技術進行深入的研究,但是鑑於日常系統開發中遇到的各種安全相關的問題,熟悉和了解這些安全技術的基本原理和使用場景還是非常必要的。本文將對非對稱加密、數字摘要、數字簽名、數字證書、SSL、HTTPS等這些安全領域內的技術進行一
https、公鑰、私鑰、數字簽名、數字證書
原文地址:點選開啟連結 1 序言 今天來聊一聊https 安全傳輸的原理。 在開始之前,我們來虛構兩個人物, 一個是位於中國的張大胖(怎麼又是你?!), 還有一個是位於米國的Bill (怎麼還是你?!)。 這倆哥們隔著千山萬水,通過網路聯絡上了, 兩個人臭味相投,聊
【下】安全HTTPS-全面詳解對稱加密,非對稱加密,數字簽名,數字證書和HTTPS
此文章轉載來源於http://blog.csdn.net/tenfyguo/article/details/40958727點選開啟連結 1. HTTPS 1.1. 什麼是HTTPS HTTPS(HypertextTransfer Protocol Secur
HTTPS演化過程(對稱加密、非對稱加密、公鑰、私鑰、數字簽名、數字證書)
主要感謝《碼農翻身》,還有網上的文章,大家可以看看這本書。 1.對稱資料加密 就像上圖所示, 這加密和解密演算法是公開的,那個金鑰是保密的, 只有兩人才知道, 這樣生成的加密訊息(密文) 別人就無法得知了。這叫對稱加密演算法,因為加密和解密用
HTTPS 通訊流程(簽名、數字證書)
一、簡介 前一篇文章,我總結了下,如何部署https服務,開通ssl通道。但是對於https整個通訊流程還有許多疑惑的地方,所以花了好幾天看了各種資料,其中有的資料也誤導了我,導致我走了些彎路。接下來我就來總結一下,幫助初學者理清https通訊流程。 二、名詞解釋 1、簽名
非對稱加密、數字摘要、數字簽名、數字證書、SSL、HTTPS及其他
一、 對稱加密和非對稱加密 對於一份資料,通過一種演算法,基於傳入的金鑰(一串由數字或字元組成的字串,也稱“key”),將明文資料轉換成了不可閱讀的密文,這是眾所周知的“加密”,同樣的,密文到達目的地後,需要再以相應的演算法,配合一個金鑰,將密文再解密
數字簽名,數字證書,CA認證等概念理解
ca 認證 https openssl 本文將介紹數字簽名,數字證書以及CA相關知識。 加密相關知識可見我的上一篇博文:http://watchmen.blog.51cto.com/6091957/1923426本文參考文獻引用鏈接:1、https://www.zhihu.com
一句話解釋數字簽名。一句話解釋數字證書
本地 www git cat 一句話 主機 cer 自己的 需要 一句話解釋數字簽名 數字簽名是:遠程主機端將需要返回給客戶端的原始信息,用Hash函數,生成摘要(digest)信息,然後用主機端的私鑰對摘要(digest)信息加密,加密後的信息就成了數字簽名。整個過程經
數字簽名 數字證書
htm iar 升級 mmc fde 用法 eve import 現場 數字簽名原理簡介(附數字證書) 首先要了解什麽叫對稱加密和非對稱加密,消息摘要這些知識。 1. 非對稱加密 在通信雙方,如果使用非對稱加密,一般遵從這樣的原則:公鑰加密,私鑰解密。同時,一般一個密鑰加密
自己生產簽名和數字證書的方法
-1 eat 選擇 height window lin eclips ati img 一、原因 1、如果apk發布到網上,系統默認的簽名debug.keystore存在安全問題,所以要自己寫簽名。 二、方法 方法一:利用JDK中的keytool.exe工具 利用JD