HTTP網(wǎng)絡(luò)協(xié)議(五)
15~18課
15.狀態(tài)碼_form提交
狀態(tài)碼(Status Code)
-狀態(tài)碼指示HTTP請求是否已成功完成
狀態(tài)碼可以分為5類
-信息響應(yīng):100~199
-成功響應(yīng):200~299
-重定向:300~399
-客戶端錯誤:400~499
-服務(wù)端錯誤:500~599
狀態(tài)碼描述語
100 continue
-請求的初始部分已經(jīng)被服務(wù)器收到,并且沒有被服務(wù)器拒絕,客戶端應(yīng)該繼續(xù)發(fā)送剩余的請求,如果請求已完成蛆封,就忽略這個(gè)響應(yīng)
-允許客戶端發(fā)送帶請求體的請求前蛾扇,判斷服務(wù)器是否愿意接收請求(服務(wù)器通過請求頭判斷)
-在某些情況下律适,如果服務(wù)器再不堪請求體就拒絕請求時(shí)如捅,客戶端就發(fā)送請求體是不恰當(dāng)?shù)幕虻托У?/p>
200 OK:請求成功
302 Found:請求的資源被暫時(shí)的移動到了由Location頭部指定的URL上
304 Not Modified: 說明無需再次傳輸請求的內(nèi)容,也就是說可以使用緩存的內(nèi)容
400 Bad Request: 由于語法無效淮椰,服務(wù)器無法理解該請求
有可能格式?jīng)]問題,但內(nèi)容不全纳寂,也會返回400主穗。(可由開發(fā)決定)
401 Unauthorized: 由于缺乏目標(biāo)資源要求的身份驗(yàn)證憑證
403 Forbidden: 服務(wù)器端有能力處理該請求,但是拒絕授權(quán)訪問
404 Not Found:服務(wù)器端無法找到所請求的資源
405 Method Not Allowed: 服務(wù)器禁止了使用當(dāng)前HTTP方法的請求(有能力毙芜,但是禁止)
406 Not Acceptable: 服務(wù)器端無法提供與Accept-Charset以及Accept-Language 指定的值相匹配的響應(yīng)
408 Request Timeout: 服務(wù)器想要將沒有在使用的連接關(guān)閉
一些服務(wù)器會在空閑連接上發(fā)送此消息钢拧,即使是在客戶端沒有發(fā)送任何請求的情況下
500 Internal Server Error: 所請求的服務(wù)器遇到意外的情況并阻止其執(zhí)行請求
501 Not Implemented: 請求的方法不被服務(wù)器支持凯正,因此無法被處理
-服務(wù)器必須支持的方法(即不會返回這個(gè)狀態(tài)的方法) 只有GET和HEAD
502 Bad Gateway: 作為網(wǎng)關(guān)或代理角色的服務(wù)器,從上游服務(wù)器(如tomcat)中接收到的響應(yīng)是無效的
503 Service Unavailable:服務(wù)器尚處于可以接受請求的狀態(tài)
-通常造成這種情況的原因是由于服務(wù)器停機(jī)維護(hù)或已超載
form提交 - 常用屬性
html 里form里的button, 默認(rèn)類型 type = submit
form提交,文件上傳必須使用multipart/form-data
-action: 請求的URI
-method: 請求方法(GET夫壁、POST)
-enctype: POST請求時(shí),請求體的編碼方式
application/x-www-form-urlencoded(默認(rèn)值)
用&分隔參數(shù)互例,用=分割鍵和值欺劳,字符用URL編碼方式進(jìn)行編碼
getParameter, 只能取urlencoded的方法取值
multipart/form-data的類型,不能通過getParameter取出展辞。需要從content-type 的boundary取出每一段的數(shù)據(jù)
Java里可以用第三方庫取出這些值奥邮,幫助解析請求體。 第三方庫 Commons-fileupload
form提交 - multipart/form-data
參考RFC_1521
請求頭
Content-Type:multipart/form-data; boundary=xxx
16.跨域_Cookie_Session
Access-Control-Allow-Origin 服務(wù)器設(shè)置,告訴瀏覽器洽腺,誰能跨域
Origin 瀏覽器發(fā)給服務(wù)器脚粟,告訴服務(wù)器源頭是什么
前后端分離:后臺工程師 JAVA
前端工程師 HTML JS CSS
頁面服務(wù)器(Nginx)
03CORS FontEdge
Index.html
后臺服務(wù)器(Tomcat)
02.Cors UserSecvlet
Idea服務(wù)器會自動開啟一個(gè)服務(wù)器
同源策略(Same-Origin Policy)(瀏覽器出于安全考慮)
瀏覽器有個(gè)同源策略 Ajax請求 異步請求的一種
-它規(guī)定了:默認(rèn)情況下,Ajax請求只能發(fā)送給同源的URL
-同源是指三個(gè)相同:協(xié)議蘸朋、域名(IP)核无、端口
-img、script度液、line厕宗、iframe、video堕担、audio等標(biāo)簽不受同源策略的約束
跨域資源共享和
解決Ajax跨域請求的常用方法
-CORS(Cross-Origin Resource Sharing),跨域資源共享
CORS的實(shí)現(xiàn)需要客戶端和服務(wù)器同時(shí)支持
-客戶端
所有的瀏覽器都支持(IE至少是IE10版本)
-服務(wù)器
需要返回相應(yīng)的響應(yīng)頭(比如Access-Control-Allow-Origin)
告知瀏覽器這是一個(gè)允許跨域訪問的請求
Cookie 請求頭
Set-Cookie 響應(yīng)頭
Cookie: (只針對一個(gè)瀏覽器已慢,換了瀏覽器需重新設(shè)置Cookie)
在服務(wù)器(瀏覽器)存儲一些數(shù)據(jù),存儲到本地磁盤(硬盤)
服務(wù)器可以返回Cookie交給客戶端去存儲
Cookie是直接存儲在瀏覽器本地的一小串?dāng)?shù)據(jù)
-使用document.cookie訪問Cookie
-修改Cookie時(shí)霹购,只會修改其中提到的Cookie
-name = value 必須被編碼(encodeURIComponet)
-一個(gè)Cookie最大為4kb, 每個(gè)網(wǎng)站最多有20+個(gè)左右的Cookie(具體取決于瀏覽器)
服務(wù)器設(shè)置Cookie
Cookie通常是由Web服務(wù)器使用的響應(yīng)頭Set-Cookie設(shè)置的
關(guān)于max-age
-在JavaScript
Cookie的作用域
domain和path標(biāo)示定義了Cookie的作用域佑惠,即Cookie應(yīng)該發(fā)送給哪些URL
domain
-標(biāo)示制定了那些主機(jī)可以接受Cookie
-如果不指定,默認(rèn)為當(dāng)前文檔的主機(jī)(不包含子域名)齐疙;如果指定了domain, 則一般包子域名
-例如:如果設(shè)置domain=502it.com, 則Cookie也包含在子域名中(如bbs.520it.com)
Path
-標(biāo)識置頂了主機(jī)下的哪些數(shù)據(jù)路徑可以接受Cookie, 子路徑也會被匹配
-例如:設(shè)置path=/docs, 則一下地址都會匹配
/docs
/docs/one/
/docs/one/img
Session
getSession內(nèi)部的原理
檢查客戶端是否有發(fā)送一個(gè)叫做JSSESION的Cookie
-如果沒有
創(chuàng)建一個(gè)新的session對象膜楷,并且這個(gè)Session對象會有一個(gè)id
這個(gè)Session對象會保留在服務(wù)器的內(nèi)存中
在響應(yīng)的時(shí)候,會添加一個(gè)Cookie(JESSIONID=Session對象的id)給客戶端
-如果沒有
返回id為JSSESION的Session對象
Session的有效期
-session的有效期默認(rèn)是30分鐘
-可以在web.xml中配置失效時(shí)間(單位是分鐘)
總結(jié)
Cookie
-數(shù)據(jù)存儲在瀏覽器客戶端
-數(shù)據(jù)有大小和數(shù)據(jù)的限制
-適合存儲一些小型贞奋、不敏感的數(shù)據(jù)
-默認(rèn)情況下赌厅,關(guān)閉瀏覽器后就會銷毀
Session
-數(shù)據(jù)存儲在服務(wù)器端
-數(shù)據(jù)沒有大小和數(shù)量的限制
-可以存儲大型、敏感的數(shù)據(jù)(比如用戶數(shù)據(jù))
-默認(rèn)情況下轿塔,未使用30分鐘后就會銷毀
Cookie特愿、Session會話跟蹤技術(shù),請求之間是否是同一個(gè)會話勾缭。
17.代理CDN網(wǎng)絡(luò)安全
代理服務(wù)器(Proxy Server)
特點(diǎn)
-本身不生產(chǎn)內(nèi)容
-處于中間位置轉(zhuǎn)發(fā)上下游的請求和響應(yīng)
面向下游的客戶端:它是服務(wù)器
面向上游的服務(wù)器:它是客戶端
正向代理:代理的對象是客戶端
反向代理:代理的對象是服務(wù)器
正向代理 - 作用
-隱藏客戶端身份
-繞過防火墻(突破訪問限制)
-internet訪問控制
-數(shù)據(jù)過濾
-一些免費(fèi)的正向代理
https://www.kuaidaili.com/free/inha/
反向代理 - 作用
-隱藏服務(wù)器身份
-安全防護(hù)
-負(fù)載均衡
抓包工具的原型
Fiddler揍障、Charles等抓包工具的原理:在客戶端啟動了正向代理服務(wù)
需要注意
-wireshark的原理是:通過底層驅(qū)動,攔截網(wǎng)卡上流動的數(shù)據(jù)
代理服務(wù)器 - 相關(guān)的頭部字段
Via: 追加經(jīng)過的每一臺代理服務(wù)器的主機(jī)名(或域名)
X-Forwarded-For: 追加請求方IP地址
X-Real-IP: 客戶端的真實(shí)IP地址
CDN(Content Delivery Networks 或Content distribution Network),譯為:內(nèi)部分發(fā)發(fā)網(wǎng)絡(luò)
利用最靠近每位用戶的服務(wù)器
更快更可靠地將音樂俩由、圖片毒嫡、視頻等資源文件(一般是靜態(tài)資源)傳遞給用戶
CDM運(yùn)營商在全國,乃至全球的各大樞紐城市都建立了機(jī)房
-部署了大量擁有高存儲高寬帶的節(jié)點(diǎn)幻梯,構(gòu)建了一個(gè)跨運(yùn)營商兜畸、跨地域的專用網(wǎng)絡(luò)
內(nèi)容所有者向CDN運(yùn)營商支付費(fèi)用,CDN將其內(nèi)容交付給最終客戶
網(wǎng)絡(luò)安全問題
網(wǎng)絡(luò)通信中面臨的4種安全威脅
截壤衤谩:竊聽通信內(nèi)容
中斷:中斷網(wǎng)絡(luò)通信
篡改:篡改通信內(nèi)容
偽造:偽造通信內(nèi)容
網(wǎng)絡(luò)層- ARP欺騙
ARP欺騙(ARP spoofing)膳叨、又稱ARP毒化(ARP poisoning)、ARP病毒痘系、ARP攻擊
ARP欺騙可以造成的效果
-可讓攻擊者獲取局域網(wǎng)上的數(shù)據(jù)包甚至可以篡改數(shù)據(jù)包
-可讓網(wǎng)絡(luò)上特定電腦之間無法正常通行(比如網(wǎng)絡(luò)執(zhí)法官這樣的軟件)
-讓送至特定IP地址的流量被錯誤送到攻擊者所取代的地方
APR欺騙 - 核心步驟舉例
-假設(shè)主機(jī)C是攻擊者菲嘴,主機(jī)A、B是被攻擊者
C只要收到過A、B發(fā)送的ARP請求龄坪,就會擁有A昭雌、B的IP、MAC地址健田,就可以進(jìn)行欺騙活動
C發(fā)送一個(gè)ARP響應(yīng)給B烛卧,把響應(yīng)包里的源IP設(shè)置為A的IP地址,源MAC設(shè)置為C的MAC地址
DoS妓局、DDoS
DoS攻擊(拒絕服務(wù)器攻擊总放,Denial-of-Servive attack)
-使目標(biāo)電腦的網(wǎng)絡(luò)或系統(tǒng)資源耗盡,使服務(wù)端暫時(shí)中斷或停止好爬,導(dǎo)致其正常用戶無法訪問
DDoS攻擊(分布式拒絕服務(wù)器攻擊局雄,Distributed Denial-of-Service attack)
-黑客使用網(wǎng)絡(luò)上兩個(gè)或兩個(gè)以上被攻陷的電腦作為“僵尸”向特定的目標(biāo)發(fā)動DoS攻擊
-2018年3月,GitHub遭到迄今為止規(guī)模最大的DDoS攻擊
DoS攻擊可以分為2個(gè)大類
-帶寬消耗型:UDP洪水攻擊存炮、ICMP洪水攻擊
-資源消耗型:SYN洪書攻擊炬搭、LAND攻擊
SYN洪水攻擊(SYN flooding attack)
-攻擊者發(fā)送一系列的SYN請求(第一次握手)到目標(biāo),然后讓目標(biāo)??收不到ACK(第三次握手)而進(jìn)行等待穆桂,消耗資源
攻擊方法
-跳過發(fā)送最后的SCK信息
-修改源IP地址宫盔,讓目標(biāo)送SYN-ACK到偽造的IP地址,因此目標(biāo)永不可能收到ACK(第三次握手)
防護(hù)
-參考 RFC_4987
傳輸層 - LAND攻擊
LAND攻擊(局域網(wǎng)拒絕服務(wù)攻擊享完,Local Area Network Denial arrack)
-通過持續(xù)發(fā)送相同源地址和目標(biāo)地址的欺騙數(shù)據(jù)包灼芭,使目標(biāo)試圖與自己建立連接,消耗系統(tǒng)資源直至崩潰
有些系統(tǒng)存在設(shè)計(jì)上的缺陷般又,允許設(shè)備接受并響應(yīng)來自網(wǎng)絡(luò)姿鸿,卻宣稱來自于設(shè)備自身的數(shù)據(jù)包,導(dǎo)致循環(huán)應(yīng)答
防護(hù)
-大多數(shù)防火墻都能攔截類似的攻擊包倒源,以保護(hù)系統(tǒng)
-部分操作系統(tǒng)通過發(fā)布安全補(bǔ)丁修復(fù)了這一漏洞
-路由器應(yīng)同時(shí)配置上行與下行的篩選器,屏蔽所有源地址與目標(biāo)地址相同的數(shù)據(jù)包
DoS句狼、DDoS防御
防御方式通常為:入侵檢測笋熬、流量過濾、和多重驗(yàn)證
-堵塞網(wǎng)絡(luò)帶寬的流量將被過濾腻菇、而正常的流量可正常通過
防火墻
-防火墻可以設(shè)置規(guī)則胳螟,例如允許或拒絕特定的通訊協(xié)議,端口或IP地址
-當(dāng)攻擊從少數(shù)不正常的IP地址發(fā)出時(shí)筹吐,可以簡單的使用拒絕規(guī)則阻止一切從攻擊源IP發(fā)出的通信
-復(fù)雜攻擊難以用簡單規(guī)則來阻止糖耸,例如80端口遭受攻擊時(shí)不可能拒絕端口所有的通信,因?yàn)橥瑫r(shí)會阻止合法的流量
-防火墻可能處于網(wǎng)絡(luò)框架中過后的位置丘薛,路由器可能在惡意流量達(dá)到防火墻前即被攻擊影響
黑洞引導(dǎo)
-將所有受攻擊計(jì)算機(jī)的通信全部發(fā)送至一個(gè)“黑洞”(空接口或不存在的計(jì)算機(jī)地址)或者有足夠能力處理洪流的網(wǎng)絡(luò)設(shè)備商嘉竟,以避免網(wǎng)絡(luò)收到較大的影響
流量清洗
-當(dāng)流量被送到DDoS防護(hù)清洗中心時(shí),通過采用抗DDoS軟件處理,將正常流量和惡意流量區(qū)分開
-正常的流量則回注客戶網(wǎng)站
應(yīng)用層 - DNS劫持
DNS劫持舍扰,又稱為域名劫持
-攻擊者篡改了某個(gè)域名的解析結(jié)果倦蚪,使得指向該域名的IP變成了另外一個(gè)IP
-導(dǎo)致對相應(yīng)網(wǎng)址的訪問被劫持到另一個(gè)不可達(dá)的或者假冒的網(wǎng)址
-從而實(shí)現(xiàn)非法竊取用戶信息或者破壞正常網(wǎng)絡(luò)服務(wù)的目的
為防止DNS劫持,可以考慮更靠譜的DNS服務(wù)器边苹,比如:114.114.114.114
-谷歌:8.8.8.8陵且、8.8.4.4
-微軟:4.2.2.1、4.2.2.2
-百度:180.76.76.76
-阿里:223.5.5.5个束、223.6.6.6
HTTP劫持:對HTTP數(shù)據(jù)包進(jìn)行攔截處理慕购,比如插入JS代碼
-比如你的訪問某些網(wǎng)站時(shí),在右下角多了一個(gè)莫名其妙的彈窗廣告
HTTP協(xié)議的安全問題
HTTP協(xié)議默認(rèn)是采取明文傳輸?shù)牟绲祝虼藭泻艽蟮陌踩[患
-常用的提高安全性的方法是:對通信內(nèi)容進(jìn)行加密后沪悲,在進(jìn)行傳輸
18.對稱加密非對稱加密數(shù)字簽名_證書
常見的加密方式有
-不可逆
單向單列函數(shù):MD5、SHA等
-可逆
對稱加密:DES桩警、3DES可训、AES等
非對稱加密:RSA等
-其他
混合密碼系統(tǒng)
數(shù)字簽名
數(shù)字證書
iOS底層原理,iOS簽名 蘋果是如何對app進(jìn)行簽名的(這個(gè)課程可以看)
常見英文
encrypt:加密
decrypt:解密
plaintext:明文
ciphertext:密文
如何防止被竊聽
單向散列函數(shù)(One-Way hash function)
單向散列函數(shù)捶枢,可以根據(jù)消息內(nèi)容計(jì)算出散列值
應(yīng)用:密碼加密
散列值的長度和消息長度無關(guān)握截,無論消息是1bit、10M烂叔、100G, 單向散列函數(shù)都會計(jì)算出固定長度的散列值 (長度20字節(jié))
單向散列-特點(diǎn)
根據(jù)任意長度的消息谨胞,計(jì)算出固定長度的散列值
計(jì)算速度快,能快速計(jì)算出散列值
消息不同蒜鸡,散列值也不同
具備單向性
單向散列函數(shù)-稱呼
單向散列函數(shù)胯努,也被稱為
-消息摘要函數(shù)(message digest function)
-哈希函數(shù)(hash finction)
輸出的散列值,也被稱為
-消息摘要(message digest)
-指紋(fingerprint)
MD4逢防、MD5
-產(chǎn)生128bit的散列值叶沛,MD就是Message Digest的縮寫,目前已經(jīng)不安全(32個(gè)十六進(jìn)制字符)
SHA-1
-產(chǎn)生160bit的散列值忘朝,目前已經(jīng)不安全
SHA-2
-SHA-256灰署、SHA-384、SHA-512局嘁,散列值長度分別是256bit溉箕、384bit、512bit
SHA-3
-全新標(biāo)準(zhǔn)
單向散列函數(shù)-幾個(gè)網(wǎng)址
MD5加密
https://www.cmd5.com/hash.aspx
MD5解密
暴力破解悦昵,枚舉各種數(shù)據(jù)肴茄。但是數(shù)據(jù)源是無窮無盡的,MD5密文是有限的
其他加密
https://www.sojson.com/encrypt_des.html
https://tool.chinaz.com/tools/md5.aspx
單向散列函數(shù) - 應(yīng)用:防止數(shù)據(jù)被篡改(檢測數(shù)據(jù)是否被篡改)
鏡像站點(diǎn)但指,為了分散通信負(fù)荷而從鏡像站點(diǎn)下載軟件
官網(wǎng)站點(diǎn)寡痰,對比鏡像站點(diǎn)的散列值抗楔,為了確認(rèn)完整性,從原始網(wǎng)址獲取到散列
應(yīng)用:密碼加密
18.對稱加密非對稱加密數(shù)字簽名_證書
如何加密解密氓癌?
對稱加密(Symmetric Cryptography):加密用的密鑰 = 解密用的密鑰
常用的:
AES(Advanced Encryption Standard)
-取代DES成為新標(biāo)準(zhǔn)的一種對稱加密算法谓谦,又稱為Rijndeal加密法
-AES的密鑰長度有128、192贪婉、256bit三種(密鑰越長破解難度越大)
-目前AES反粥,已經(jīng)逐步取代DES,3DES疲迂,成為首選的對稱加密算法
它經(jīng)過了全世界密碼學(xué)家所進(jìn)行的高品質(zhì)驗(yàn)證工作
DES(Data Encryption Standard)
-DES 是一種將64bit 明文加密成64bit密文的加密算法才顿,密鑰長度是56bit
-規(guī)格上來說,密鑰長度是64bit, 但每隔7bit會設(shè)置一個(gè)用于錯誤檢查的bit, 因此密鑰長度實(shí)質(zhì)上是56bit
-由于DES每次只能加密64bit的數(shù)據(jù)尤蒿,遇到比較大的數(shù)據(jù)郑气,需要對DES加密進(jìn)行迭代(反復(fù))
-目前已經(jīng)可以在短時(shí)間內(nèi)被破譯,所以不建議使用
3DES(Triple Data Encryption Algorithm)
3DES, 將DES重復(fù)3次所得到的一種密碼算法腰池,也叫做3DES
-三重DES并不是進(jìn)行3次DES加密(加密->加密->加密)
-而是加密(Encryption)-> 解密(Decryption)-> 加密(Encryption)的過程
-目前還被一些銀行等機(jī)構(gòu)使用尾组,但處理速度不高,安全性逐漸暴露出問題
-3個(gè)密鑰都是不相同的示弓,也叫DED-EDE3
-如果所有的密鑰相同讳侨,則結(jié)果與普通DES是等價(jià)的 (無效用法)
-如果密鑰1,密鑰3相同奏属,密鑰2不同跨跨,稱為DES-EDE2
——————————————————————————————————————————————————————————
非對稱加密(公鑰密碼):(Asymmetric Cryptography)
-在非對稱jimmy,密鑰分為加密密鑰囱皿、解密密鑰2中勇婴,它們并不是同一個(gè)密鑰
-加密密鑰一般是公開的,因此該密鑰稱為公鑰(Public key)
因此嘱腥,非對稱加密也被稱為公鑰密碼算法(Public-key Cryptography)
-解密密鑰:有消息接受者自己保管的耕渴,不能公開,因此也稱為私鑰(private key)
公鑰齿兔、私鑰
公鑰和私鑰是一一對應(yīng)的萨螺,不能單獨(dú)生成
-一對公鑰和私鑰統(tǒng)稱為密鑰對(Key pair)
由公鑰加密的密文,必須使用與該公鑰對應(yīng)的私鑰才能解密
由私鑰加密的密文愧驱,必須使用與該私鑰對應(yīng)的公鑰才能解密
RSA
目前使用最廣泛的非對稱加密算法是RSA
RSA的名字,由他的3位開發(fā)者椭盏,即Ron Rivest组砚、 Adi Shamir、Leonard Adleman的姓氏首字母組成
——————————————————————————————————————————————————————————
密鑰配送問題
-在使用對稱加密時(shí)掏颊,一定會遇到密鑰配送問題
-如果Alice將使用對稱加密過的信息發(fā)給了Bob
只有將密鑰發(fā)送給Bob,Bob才能完成解密
在發(fā)送過程中:可能會被竊聽糟红,對方也能完成解密
如何解決密鑰配送問題
有以下幾種解決密鑰配送的方法
-事先共享密鑰(比如私下共享)
-密鑰分配中心(Key Distribution Center, 簡稱KDC)
-Diffie-Hellman密鑰交換
解決密鑰配送問題
由消息的接收者艾帐,生成一對公鑰、私鑰
將公鑰發(fā)給消息的發(fā)送者
消息的發(fā)送者使用公鑰加密消息
非對稱加密的加密解密速度比較對稱加密要慢
-非對稱加密:復(fù)雜->安全->加密解密速度慢
-對稱加密:簡單->不安全->加密解密速度快
混合密碼系統(tǒng)(Hybird Cryptosystem)
對稱加密的缺點(diǎn)
-不能很好的解決密鑰配送問題(密鑰會被竊聽)
非對稱加密的缺點(diǎn)
-加密解密速度比較慢
混合密鑰系統(tǒng):是將對稱加密和非對稱加密的優(yōu)勢相結(jié)合的方法
-解決了非對稱加密速度慢的問題
-并通過非對稱加密解決了對稱加密的密鑰配送問題
網(wǎng)絡(luò)上密碼通信所用的SSL/TLS都運(yùn)用了混合密碼系統(tǒng)
混合密碼
會話密鑰(Session key)
-為本次通信隨機(jī)生成的臨時(shí)密鑰(例如隨機(jī)數(shù))
-作為對稱加密的密鑰盆偿,用于加密消息柒爸,提高速度
加密步驟(發(fā)送消息)
1.首先,消息發(fā)送者要擁有消息接受接收的公鑰
2.生成會話密鑰(隨機(jī)數(shù))事扭,作為對稱加密的密鑰捎稚,加密消息(生成密文A)
3.用消息接收者的公鑰,加密會話密鑰(2的隨機(jī)數(shù))(生成密文B)
4.將前兩步生成的加密結(jié)果求橄,AB一并發(fā)送給消息接收者
發(fā)送出去的內(nèi)容包括
-用會話密鑰加密的消息(加密方法:對稱加密)
-用公鑰加密的會話密鑰(加密方法:非對稱加密)
A —> B 的msg, 一定用對稱加密今野,因?yàn)閙sg大小不確定
混合密碼 — 解密
解密步驟(收到消息)
1.消息接收者用自己的密鑰解密(密文B)出會話密鑰
2.再用第一步解密出來的會話密鑰,解密消息
數(shù)字簽名
服務(wù)器如何確認(rèn)消息的真實(shí)性罐农?
在數(shù)字簽名技術(shù)中条霜,有一下2種行為
-生成簽名:由消息的發(fā)送者完成,通過“簽名密鑰”生成
-驗(yàn)證簽名:由消息的接受者完成涵亏,通過“驗(yàn)證密鑰”驗(yàn)證
過程改進(jìn)
1.消息進(jìn)行MD5宰睡,拿到固定長度
2.利用私鑰對散列值進(jìn)行簽名
Q:如何能保證這個(gè)簽名是消息發(fā)送者之間簽的?
A:用消息發(fā)送者的私鑰進(jìn)行簽名
Q: 如果有人篡改了消息內(nèi)容或簽名內(nèi)容气筋,會是什么結(jié)果拆内?
A:簽名驗(yàn)證失敗,證明內(nèi)容被篡改了
Q:數(shù)字簽名不能保證機(jī)密性裆悄?
A:數(shù)字簽名的作用不是為了保證機(jī)密性矛纹,僅僅是為了能夠識別內(nèi)容有沒有被篡改
數(shù)字簽名的作用:
1.確認(rèn)消息的完整性
2.識別消息是否被篡改
3.防止消息發(fā)送人否認(rèn)
非對稱加密 - 公鑰、私鑰再總結(jié)
在非對稱加密中光稼,任何人都可以使用公鑰進(jìn)行加密
在數(shù)字簽名中或南,任何人都可以用公鑰驗(yàn)證簽名
數(shù)字簽名,就是將非對稱加密反過來使用
既然是加密艾君,那肯定是不希望別人知道我的消息采够,所以只有我能解密。
-公鑰負(fù)責(zé)加密冰垄,私鑰負(fù)責(zé)解密
既然是簽名蹬癌,那肯定是不希望有人冒充我發(fā)送消息,所以只有我能簽名
-私鑰負(fù)責(zé)簽名虹茶,公鑰負(fù)責(zé)驗(yàn)簽
公鑰的合法性
如果遭遇了中間人攻擊逝薪,那么
-公鑰有可能是偽造的
如何驗(yàn)證公鑰的合法性
-證書
是消息發(fā)送者能拿到真正的公鑰,利用權(quán)威機(jī)構(gòu)認(rèn)證過的公鑰蝴罪。
認(rèn)證權(quán)威機(jī)構(gòu)董济,再拿公鑰
證書(Certificate)
說到證書
-首先聯(lián)想到的是駕駛證、畢業(yè)證要门、英語四六級等等虏肾,都是由權(quán)威機(jī)構(gòu)認(rèn)證的
密碼學(xué)中的證書廓啊,全城是公鑰證書(Public-key Certificate, PKC),跟駕駛證類似
-里面有姓名、郵箱等個(gè)人信息封豪,以及此人的公鑰
-并由認(rèn)證機(jī)構(gòu)(Certificate Authority, CA),施加數(shù)字簽名
CA就是能夠認(rèn)定“公鑰屬于此人”谴轮,并能夠生成數(shù)字簽名的個(gè)人或組織
-有國際性組織、政府設(shè)立的組織
-有通過提供認(rèn)證服務(wù)來盈利的企業(yè)
-個(gè)人也可以成立認(rèn)證機(jī)構(gòu)