一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

華為Android面試真題解析,3面直接拿到offer

 印度阿三17 2021-03-24

前言

下面的題目都是大家在面試字節(jié)跳動(dòng)或者其它大廠面試時(shí)經(jīng)常遇到的,如果大家有好的題目或者好的見(jiàn)解歡迎分享。

參考解析:郭霖、鴻洋

內(nèi)容特點(diǎn):條理清晰,含圖像化表示更加易懂。

內(nèi)容概要:包括 Handler、Activity相關(guān)、Fragment、service、布局優(yōu)化、AsyncTask相關(guān)、Android 事件分發(fā)機(jī)制、 Binder、Android 高級(jí)必備 :AMS,WMS,PMS、Glide、 Android 組件化與插件化等面試題和技術(shù)棧!

接下來(lái)我們針對(duì)字節(jié)跳動(dòng)Android中高級(jí)面試展開的完整面試題

背景

我們知道,http 通信存在以下問(wèn)題:

  • 通信使用明文可能會(huì)被竊聽(tīng)
  • 不驗(yàn)證通信方的身份可能遭遇偽裝
  • 無(wú)法證明報(bào)文的完整型,可能已遭篡改

使用 https 可以解決數(shù)據(jù)安全問(wèn)題,但是你真的理解 https 嗎?

當(dāng)面試官連續(xù)對(duì)你發(fā)出靈魂追問(wèn)的時(shí)候,你能對(duì)答如流嗎

  1. 什么是 https,為什么需要 https
  2. https 的連接過(guò)程
  3. https 的加密方式是怎樣的,對(duì)稱加密和非對(duì)稱加密,為什么要這樣設(shè)計(jì)??jī)?nèi)容傳輸為什么要使用對(duì)稱機(jī)密
  4. https 是絕對(duì)安全的嗎
  5. https 可以抓包嗎

如果你能對(duì)答自如,恭喜你,https 你已經(jīng)掌握得差不多了,足夠應(yīng)付面試了。

什么是 https

簡(jiǎn)單來(lái)說(shuō), https 是 http ssl,對(duì) http 通信內(nèi)容進(jìn)行加密,是HTTP的安全版,是使用TLS/SSL加密的HTTP協(xié)議

Https的作用:

  1. 內(nèi)容加密 建立一個(gè)信息安全通道,來(lái)保證數(shù)據(jù)傳輸?shù)陌踩?/li>
  2. 身份認(rèn)證 確認(rèn)網(wǎng)站的真實(shí)性
  3. 數(shù)據(jù)完整性 防止內(nèi)容被第三方冒充或者篡改

什么是SSL

SSL 由 Netscape 公司于1994年創(chuàng)建,它旨在通過(guò)Web創(chuàng)建安全的Internet通信。它是一種標(biāo)準(zhǔn)協(xié)議,用于加密瀏覽器和服務(wù)器之間的通信。它允許通過(guò)Internet安全輕松地傳輸賬號(hào)密碼、銀行卡、手機(jī)號(hào)等私密信息。

SSL證書就是遵守SSL協(xié)議,由受信任的CA機(jī)構(gòu)頒發(fā)的數(shù)字證書。

SSL/TLS的工作原理:

需要理解SSL/TLS的工作原理,我們需要掌握加密算法。加密算法有兩種:對(duì)稱加密和非對(duì)稱加密:

對(duì)稱加密:通信雙方使用相同的密鑰進(jìn)行加密。特點(diǎn)是加密速度快,但是缺點(diǎn)是需要保護(hù)好密鑰,如果密鑰泄露的話,那么加密就會(huì)被別人pojie。常見(jiàn)的對(duì)稱加密有AES,DES算法。

非對(duì)稱加密:它需要生成兩個(gè)密鑰:公鑰(Public Key)和私鑰(Private Key)。

公鑰顧名思義是公開的,任何人都可以獲得,而私鑰是私人保管的。相信大多程序員已經(jīng)對(duì)這種算法很熟悉了:我們提交代碼到github的時(shí)候,就可以使用SSH key:在本地生成私鑰和公鑰,私鑰放在本地.ssh目錄中,公鑰放在github網(wǎng)站上,這樣每次提交代碼,不用麻煩的輸入用戶名和密碼了,github會(huì)根據(jù)網(wǎng)站上存儲(chǔ)的公鑰來(lái)識(shí)別我們的身份。

公鑰負(fù)責(zé)加密,私鑰負(fù)責(zé)解密;或者,私鑰負(fù)責(zé)加密,公鑰負(fù)責(zé)解密。這種加密算法安全性更高,但是計(jì)算量相比對(duì)稱加密大很多,加密和解密都很慢。常見(jiàn)的非對(duì)稱算法有RSA。

https 的連接過(guò)程

https 的連接過(guò)程大概分為兩個(gè)階段,證書驗(yàn)證階段和數(shù)據(jù)傳輸階段

證書驗(yàn)證階段

大概分為三個(gè)步驟

  1. 瀏覽器發(fā)起請(qǐng)求
  2. 服務(wù)器接收到請(qǐng)求之后,會(huì)返回證書,包括公鑰
  3. 瀏覽器接收到證書之后,會(huì)檢驗(yàn)證書是否合法,不合法的話,會(huì)彈出告警提示(怎樣驗(yàn)證合法,下文會(huì)詳細(xì)解析,這里先忽略)

數(shù)據(jù)傳輸階段

證書驗(yàn)證合法之后

  1. 瀏覽器會(huì)生成一個(gè)隨機(jī)數(shù),
  2. 使用公鑰進(jìn)行加密,發(fā)送給服務(wù)端
  3. 服務(wù)器收到瀏覽器發(fā)來(lái)的值,使用私鑰進(jìn)行解密
  4. 解析成功之后,使用對(duì)稱加密算法進(jìn)行加密,傳輸給客戶端

之后雙方通信就使用第一步生成的隨機(jī)數(shù)進(jìn)行加密通信。

https 的加密方式是怎樣的,對(duì)稱加密和非對(duì)稱加密,為什么要這樣設(shè)計(jì)

從上面我們可以知道,https 加密是采用對(duì)稱加密和非對(duì)稱機(jī)密一起結(jié)合的。

在證書驗(yàn)證階段,使用非對(duì)稱加密。 在數(shù)據(jù)傳輸階段,使用對(duì)稱機(jī)密。

這樣設(shè)計(jì)有一個(gè)好處,能最大程度得兼顧安全效率。

在證書驗(yàn)證階段,使用非對(duì)稱加密,需要公鑰和私鑰,假如瀏覽器的公鑰泄漏了,我們還是能夠確保隨機(jī)數(shù)的安全,因?yàn)榧用艿臄?shù)據(jù)只有用私鑰才能解密。這樣能最大程度確保隨機(jī)數(shù)的安全。

在內(nèi)容傳輸階段,使用對(duì)稱機(jī)密,可以大大提高加解密的效率。

內(nèi)容傳輸為什么要使用對(duì)稱機(jī)密

  1. 對(duì)稱加密效率比較高
  2. 一對(duì)公私鑰只能實(shí)現(xiàn)單向的加解密。只有服務(wù)端保存了私鑰。如果使用非對(duì)稱機(jī)密,相當(dāng)于客戶端必須有自己的私鑰,這樣設(shè)計(jì)的話,每個(gè)客戶端都有自己的私鑰,這很明顯是不合理的,因?yàn)樗借€是需要申請(qǐng)的。

https 是絕對(duì)安全的嗎

不是絕對(duì)安全的,可以通過(guò)中間人攻擊。

什么是中間人攻擊

中間人攻擊是指攻擊者與通訊的兩端分別創(chuàng)建獨(dú)立的聯(lián)系,并交換其所收到的數(shù)據(jù),使通訊的兩端認(rèn)為他們正在通過(guò)一個(gè)私密的連接與對(duì)方直接對(duì)話,但事實(shí)上整個(gè)會(huì)話都被攻擊者完全控制。

HTTPS 使用了 SSL 加密協(xié)議,是一種非常安全的機(jī)制,目前并沒(méi)有方法直接對(duì)這個(gè)協(xié)議進(jìn)行攻擊,一般都是在建立 SSL 連接時(shí),攔截客戶端的請(qǐng)求,利用中間人獲取到 CA證書、非對(duì)稱加密的公鑰、對(duì)稱加密的密鑰;有了這些條件,就可以對(duì)請(qǐng)求和響應(yīng)進(jìn)行攔截和篡改。

過(guò)程原理:

  1. 本地請(qǐng)求被劫持(如DNS劫持等),所有請(qǐng)求均發(fā)送到中間人的服務(wù)器
  2. 中間人服務(wù)器返回中間人自己的證書
  3. 客戶端創(chuàng)建隨機(jī)數(shù),通過(guò)中間人證書的公鑰對(duì)隨機(jī)數(shù)加密后傳送給中間人,然后憑隨機(jī)數(shù)構(gòu)造對(duì)稱加密對(duì)傳輸內(nèi)容進(jìn)行加密傳輸
  4. 中間人因?yàn)閾碛锌蛻舳说碾S機(jī)數(shù),可以通過(guò)對(duì)稱加密算法進(jìn)行內(nèi)容解密
  5. 中間人以客戶端的請(qǐng)求內(nèi)容再向官方網(wǎng)站發(fā)起請(qǐng)求
  6. 因?yàn)橹虚g人與服務(wù)器的通信過(guò)程是合法的,官方網(wǎng)站通過(guò)建立的安全通道返回加密后的數(shù)據(jù)
  7. 中間人憑借與官方網(wǎng)站建立的對(duì)稱加密算法對(duì)內(nèi)容進(jìn)行解密
  8. 中間人通過(guò)與客戶端建立的對(duì)稱加密算法對(duì)官方內(nèi)容返回的數(shù)據(jù)進(jìn)行加密傳輸
  9. 客戶端通過(guò)與中間人建立的對(duì)稱加密算法對(duì)返回結(jié)果數(shù)據(jù)進(jìn)行解密

由于缺少對(duì)證書的驗(yàn)證,所以客戶端雖然發(fā)起的是 HTTPS 請(qǐng)求,但客戶端完全不知道自己的網(wǎng)絡(luò)已被攔截,傳輸內(nèi)容被中間人全部竊取。

https 是如何防止中間人攻擊的

在https中需要證書,證書的作用是為了防止"中間人攻擊"的。 如果有個(gè)中間人M攔截客戶端請(qǐng)求,然后M向客戶端提供自己的公鑰,M再向服務(wù)端請(qǐng)求公鑰,作為"中介者" 這樣客戶端和服務(wù)端都不知道,信息已經(jīng)被攔截獲取了。這時(shí)候就需要證明服務(wù)端的公鑰是正確的.

怎么證明呢?

就需要權(quán)威第三方機(jī)構(gòu)來(lái)公正了.這個(gè)第三方機(jī)構(gòu)就是CA. 也就是說(shuō)CA是專門對(duì)公鑰進(jìn)行認(rèn)證,進(jìn)行擔(dān)保的,也就是專門給公鑰做擔(dān)保的擔(dān)保公司。 全球知名的CA也就100多個(gè),這些CA都是全球都認(rèn)可的,比如VeriSign、GlobalSign等,國(guó)內(nèi)知名的CA有WoSign。

瀏覽器是如何確保CA證書的合法性?

一、證書包含什么信息?

頒發(fā)機(jī)構(gòu)信息、公鑰、公司信息、域名、有效期、指紋…

二、證書的合法性依據(jù)是什么?

首先,權(quán)威機(jī)構(gòu)是要有認(rèn)證的,不是隨便一個(gè)機(jī)構(gòu)都有資格頒發(fā)證書,不然也不叫做權(quán)威機(jī)構(gòu)。另外,證書的可信性基于信任制,權(quán)威機(jī)構(gòu)需要對(duì)其頒發(fā)的證書進(jìn)行信用背書,只要是權(quán)威機(jī)構(gòu)生成的證書,我們就認(rèn)為是合法的。所以權(quán)威機(jī)構(gòu)會(huì)對(duì)申請(qǐng)者的信息進(jìn)行審核,不同等級(jí)的權(quán)威機(jī)構(gòu)對(duì)審核的要求也不一樣,于是證書也分為免費(fèi)的、便宜的和貴的。

三、瀏覽器如何驗(yàn)證證書的合法性?

瀏覽器發(fā)起HTTPS請(qǐng)求時(shí),服務(wù)器會(huì)返回網(wǎng)站的SSL證書,瀏覽器需要對(duì)證書做以下驗(yàn)證:

  1. 驗(yàn)證域名、有效期等信息是否正確。證書上都有包含這些信息,比較容易完成驗(yàn)證;
  2. 判斷證書來(lái)源是否合法。每份簽發(fā)證書都可以根據(jù)驗(yàn)證鏈查找到對(duì)應(yīng)的根證書,操作系統(tǒng)、瀏覽器會(huì)在本地存儲(chǔ)權(quán)威機(jī)構(gòu)的根證書,利用本地根證書可以對(duì)對(duì)應(yīng)機(jī)構(gòu)簽發(fā)證書完成來(lái)源驗(yàn)證;
  3. 判斷證書是否被篡改。需要與CA服務(wù)器進(jìn)行校驗(yàn);
  4. 判斷證書是否已吊銷。通過(guò)CRL(Certificate Revocation List 證書注銷列表)和 OCSP(Online Certificate Status Protocol 在線證書狀態(tài)協(xié)議)實(shí)現(xiàn),其中 OCSP 可用于第3步中以減少與CA服務(wù)器的交互,提高驗(yàn)證效率。

以上任意一步都滿足的情況下瀏覽器才認(rèn)為證書是合法的。

本文在開源項(xiàng)目:Android開發(fā)不會(huì)這些?如何面試拿高薪! 中已收錄,里面包含不同方向的自學(xué)編程路線、面試題集合/面經(jīng)、及系列技術(shù)文章等,資源持續(xù)更新中…

步都滿足的情況下瀏覽器才認(rèn)為證書是合法的。

本文在開源項(xiàng)目:Android開發(fā)不會(huì)這些?如何面試拿高薪! 中已收錄,里面包含不同方向的自學(xué)編程路線、面試題集合/面經(jīng)、及系列技術(shù)文章等,資源持續(xù)更新中…

來(lái)源:https://www./content-4-901951.html

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国产三级欧美三级日韩三级| 日韩成人h视频在线观看| 亚洲av日韩av高潮无打码 | 欧美精品二区中文乱码字幕高清| 久久精品国产亚洲av麻豆| 精品国产亚洲一区二区三区 | 国产黄色高清内射熟女视频| 欧美自拍系列精品在线| 久久精品国产一区久久久| 欧美加勒比一区二区三区| 亚洲中文字幕免费人妻| 国产亚洲精品岁国产微拍精品| 亚洲夫妻性生活免费视频| 精品日韩欧美一区久久| 欧美成人精品一区二区久久| 国产成人精品一区二区三区| 2019年国产最新视频| 日本高清不卡一二三区| 成人精品视频在线观看不卡| 精产国品一二三区麻豆| 人妻乱近亲奸中文字幕| 91午夜少妇极品福利| 婷婷一区二区三区四区| 亚洲精品国产主播一区| 91一区国产中文字幕| 亚洲另类欧美综合日韩精品| 国产精品内射视频免费| 欧美日韩视频中文字幕| 国产欧美高清精品一区| 日韩欧美综合在线播放| 国产欧美亚洲精品自拍| 国产一级性生活录像片| 亚洲熟妇av一区二区三区色堂| 熟女一区二区三区国产| 国内女人精品一区二区三区| 亚洲中文字幕免费人妻| 欧美日韩乱码一区二区三区| 国产内射一级一片内射高清视频| 国产成人人人97超碰熟女| 精产国品一二三区麻豆| 国产精品不卡免费视频|