這篇文章主要介紹了Android中網(wǎng)絡(luò)請(qǐng)求加密的原理是什么的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇Android中網(wǎng)絡(luò)請(qǐng)求加密的原理是什么文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。
我們提供的服務(wù)有:網(wǎng)站建設(shè)、成都做網(wǎng)站、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、沐川ssl等。為千余家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的沐川網(wǎng)站制作公司
加密我了解的不多,只知道有這么兩種算法:對(duì)稱加密和非對(duì)稱加密。
對(duì)稱加密:加密和解密的密鑰一樣,比如用123加密就是用123解密,但是實(shí)際中密碼都是普通數(shù)據(jù)在互聯(lián)網(wǎng)傳輸?shù)?,這樣一點(diǎn)密碼被中間人截取并破解,加密直接被攻破。
非對(duì)稱加密:把密鑰分為公鑰和私鑰,公鑰是公開的所有人都可以認(rèn)領(lǐng),私鑰是保密的只有一個(gè)人知道。假設(shè)A要發(fā)送一封Email給B,他不想讓任何其他人在傳輸中看到Email的內(nèi)容,做法就是使用B的公鑰對(duì)Email加密,只有B的私鑰能夠解密(B的私鑰唯一性保證信件不會(huì)泄露)。
某天出意外了,有黑客冒充A給B發(fā)送Email,并且也用B的公鑰加密,導(dǎo)致B無(wú)法區(qū)分這封郵件是否來(lái)自A。怎么辦?此時(shí)A可以用自己的私鑰加密,那么B收到郵件后如果用A的公鑰可以解密郵件,那么證明這封信肯定來(lái)自于A。
OK,通過(guò)這個(gè)例子我想你們基本明白非對(duì)稱加密了!我總結(jié)了下面幾點(diǎn):
公鑰的作用:對(duì)內(nèi)容本身加密,保證不被其他人看到。
私鑰的作用:證明內(nèi)容的來(lái)源
公鑰和私鑰是配對(duì)關(guān)系,公鑰加密就用私鑰解密,反之亦然,用錯(cuò)的密鑰來(lái)嘗試解密會(huì)報(bào)錯(cuò)。
接著聊上面發(fā)郵件的例子,假設(shè)A用自己的私鑰對(duì)Email加密發(fā)送,這存在下面問(wèn)題:
對(duì)文件本身加密可能是個(gè)耗時(shí)過(guò)程,比如這封Email足夠大,那么私鑰加密整個(gè)文件以及拿到文件后的解密無(wú)疑是巨大的開銷。
數(shù)字簽名可以解決這個(gè)問(wèn)題:
1.A先對(duì)這封Email執(zhí)行哈希運(yùn)算得到hash值簡(jiǎn)稱“摘要”,取名h2
2.然后用自己私鑰對(duì)摘要加密,生成的東西叫“數(shù)字簽名”
3.把數(shù)字簽名加在Email正文后面,一起發(fā)送給B(當(dāng)然,為了防止郵件被竊聽(tīng)你可以用繼續(xù)公鑰加密,這個(gè)不屬于數(shù)字簽名范疇)
4.B收到郵件后用A的公鑰對(duì)數(shù)字簽名解密,成功則代表Email確實(shí)來(lái)自A,失敗說(shuō)明有人冒充
5.B對(duì)郵件正文執(zhí)行哈希運(yùn)算得到hash值,取名h3
6.B 會(huì)對(duì)比第4步數(shù)字簽名的hash值h2和自己運(yùn)算得到的h3,一致則說(shuō)明郵件未被篡改。
看完這個(gè)過(guò)程,是不是覺(jué)得數(shù)字簽名不過(guò)如此。其實(shí)就是利用算法(不一定是非對(duì)稱算法)對(duì)原文hash值加密,然后附著到原文的一段數(shù)據(jù)。數(shù)字簽名的作用就是驗(yàn)證數(shù)據(jù)來(lái)源以及數(shù)據(jù)完整性!解密過(guò)程則稱為數(shù)字簽名驗(yàn)證。
不過(guò)先別著急,我在梳理數(shù)字簽名流程時(shí)候有下面幾點(diǎn)疑惑,不知你也是否一樣?
1.如果中間人同時(shí)篡改了Email正文和數(shù)字簽名,那B收到郵件無(wú)法察覺(jué)啊。
答案:數(shù)字簽名的生成需要對(duì)方私鑰,所以數(shù)字簽名很難被偽造。萬(wàn)一私鑰泄漏了呢,不好意思,你私鑰都能弄丟了那這篇文章當(dāng)我白寫。(私鑰絕對(duì)保密不參與傳輸)
2.公鑰是公開的并且可以自行導(dǎo)入到電腦,如果有人比如C偷偷在B的電腦用自己公鑰替換了A的公鑰,然后用自己的私鑰給B發(fā)送Email,這時(shí)B收到郵件其實(shí)是被C冒充的但是他無(wú)法察覺(jué)。
答案:確實(shí)存在這種情況!解決辦法就是數(shù)字證書,一環(huán)套一環(huán)請(qǐng)接著看。
上面第2點(diǎn)描述的安全漏洞根源在哪?就是A的公鑰很容易被替換!那么數(shù)字證書是怎么生成的呢?以及如何配合數(shù)字簽名工作呢?
1.首先A去找”證書中心”(certificate authority,簡(jiǎn)稱CA),為公鑰做認(rèn)證。證書中心用自己的私鑰,對(duì)A的公鑰和一些相關(guān)信息一起加密,生成”數(shù)字證書”(Digital Certificate):
2.A在郵件正文下方除了數(shù)字簽名,另外加上這張數(shù)字證書
3.B收到Email后用CA的公鑰解密這份數(shù)字證書,拿到A的公鑰,然后驗(yàn)證數(shù)字簽名,后面流程就和圖1的流程一樣了,不再贅述。
假設(shè)數(shù)字證書被偽造了呢?
答案:是的,傳輸中數(shù)字證書有可能被篡改。因此數(shù)字證書也是經(jīng)過(guò)數(shù)字簽名的,是不是感覺(jué)很繞貌似陷入了“雞生蛋蛋生雞”,我保證這是最后一個(gè)蛋- - !上文說(shuō)道數(shù)字簽名的作用就是驗(yàn)證數(shù)據(jù)來(lái)源以及數(shù)據(jù)完整性!B收到郵件后可以先驗(yàn)證這份數(shù)字證書的可靠性,通過(guò)后再驗(yàn)證數(shù)字簽名。
要是有1萬(wàn)個(gè)人要給B發(fā)郵件,難道B要保存1萬(wàn)份不同的CA公鑰嗎?
答案:不需要,CA認(rèn)證中心給可以給B一份“根證書”,里面存儲(chǔ)CA公鑰來(lái)驗(yàn)證所有CA分中心頒發(fā)的數(shù)字證書。CA中心是分叉樹結(jié)構(gòu),類似于公安部->省公安廳->市級(jí)派出所,不管A從哪個(gè)CA分支機(jī)構(gòu)申請(qǐng)的證書,B只要預(yù)存根證書就可以驗(yàn)證下級(jí)證書可靠性。
如何驗(yàn)證根證書可靠性?
答案:無(wú)法驗(yàn)證。根證書是自驗(yàn)證證書,CA機(jī)構(gòu)是獲得社會(huì)絕對(duì)認(rèn)可和有絕對(duì)權(quán)威的第三方機(jī)構(gòu),這一點(diǎn)保證了根證書的絕對(duì)可靠。如果根證書都有問(wèn)題那么整個(gè)加密體系毫無(wú)意義。
上面一直在說(shuō)虛擬場(chǎng)景,下文舉個(gè)實(shí)際例子看看數(shù)字簽名+數(shù)字證書如何驗(yàn)證文件的來(lái)源,以及文件的完整性。比如下載文件:我們開發(fā)中一般是服務(wù)端給文件信息加上md5,客戶端下載完成后校驗(yàn)md5來(lái)判斷文件是否損壞,這個(gè)其實(shí)就是簡(jiǎn)單的校驗(yàn)機(jī)制,而很多正規(guī)企業(yè)比如google都會(huì)給官方軟件簽署數(shù)字簽名和證書,而windows已經(jīng)預(yù)置了很多CA根證書:
然后看下我之前從網(wǎng)上下載的Chrome.exe,右鍵屬性,通過(guò)鼠標(biāo)點(diǎn)擊一步驗(yàn)證:
Google Inc就是google從CA中心申請(qǐng)的數(shù)字證書。這樣看來(lái),這個(gè)軟件確實(shí)來(lái)源于google官方,并且文件完整。接下來(lái)我干點(diǎn)壞事,用notepad打開這個(gè)exe文件并且篡改里面的內(nèi)容(修改二進(jìn)制數(shù)據(jù),09 改為33),保存:
再看下數(shù)字簽名還正常嗎?
文件被篡改導(dǎo)致數(shù)字簽名無(wú)效,數(shù)字證書沒(méi)有問(wèn)題。
數(shù)字簽名和數(shù)字證書可以用于文件,當(dāng)然也能用于html網(wǎng)頁(yè)數(shù)據(jù)。本人沒(méi)有https相關(guān)開發(fā)經(jīng)驗(yàn),故不做深入探討只是簡(jiǎn)單介紹下。
http的安全缺陷:
1.無(wú)法驗(yàn)證服務(wù)端的身份
2.無(wú)法保證數(shù)據(jù)完整性
3.無(wú)法保證數(shù)據(jù)傳輸不被竊聽(tīng)
而https就是專門解決這三個(gè)問(wèn)題,https使用數(shù)字簽名+數(shù)字證書解決了前2個(gè)問(wèn)題,很多大型網(wǎng)站比如baidu.com都會(huì)采用https協(xié)議,網(wǎng)址左側(cè)會(huì)出現(xiàn)綠色加鎖標(biāo)識(shí):
點(diǎn)擊可以查看證書,另外瀏覽器都會(huì)內(nèi)置CA根證書,來(lái)對(duì)這些網(wǎng)站的服務(wù)器證書進(jìn)行校驗(yàn)。
然后,再用SSL協(xié)議對(duì)傳輸通道加密,保證數(shù)據(jù)傳輸不被竊聽(tīng)。
關(guān)于“Android中網(wǎng)絡(luò)請(qǐng)求加密的原理是什么”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“Android中網(wǎng)絡(luò)請(qǐng)求加密的原理是什么”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
文章標(biāo)題:Android中網(wǎng)絡(luò)請(qǐng)求加密的原理是什么
網(wǎng)站URL:http://www.rwnh.cn/article20/ghcpco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、搜索引擎優(yōu)化、網(wǎng)站收錄、建站公司、動(dòng)態(tài)網(wǎng)站、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)