0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣使用TLS/SSL Pinning保護(hù)Android應(yīng)用程序呢?

哆啦安全 ? 來源:虎哥Lovedroid ? 2023-12-27 13:41 ? 次閱讀

使用TLS/SSL Pinning保護(hù)Android應(yīng)用程序

在現(xiàn)代術(shù)語中,“SSL”(安全套接層)通常指的是“TLS”(傳輸層安全)。雖然 SSL 和 TLS 不是同一個東西,但 TLS 是 SSL 的改進(jìn)和更安全的版本,并且在實踐中已大部分取代了 SSL。

簡介

SSL/TLS:互聯(lián)網(wǎng)安全的動態(tài)二人組! 這些是建立安全通信渠道的加密協(xié)議,確保在線交換過程中的數(shù)據(jù)隱私、完整性和認(rèn)證。SSL率先出擊,但TLS就像超級英雄一樣趕來,解決了混亂,拯救了一天! 現(xiàn)在,它們攜手合作,保護(hù)我們的數(shù)據(jù)免受邪惡黑客的侵害!

在互聯(lián)網(wǎng)安全領(lǐng)域,現(xiàn)代技術(shù)斗篷下的是 TLS,讓 SSL 在懷舊的塵埃中留下了身影! 所以下次當(dāng)你瀏覽網(wǎng)頁時,記住,是 TLS 像老板一樣守護(hù)你的秘密!

以下是 SSL 和 TLS 發(fā)布的完整歷史:

SSL 1.0 —— 因安全問題從未公開發(fā)布。 SSL 2.0 —— 1995 年發(fā)布。2011 年棄用。有已知的安全問題。 SSL 3.0 —— 1996 年發(fā)布。2015 年棄用。有已知的安全問題。 TLS 1.0 —— 1999 年作為 SSL 3.0 的升級版本發(fā)布。計劃于 2020 年棄用。 TLS 1.1 —— 2006 年發(fā)布。計劃于 2020 年棄用。 TLS 1.2 —— 2008 年發(fā)布。 TLS 1.3 —— 2018 年發(fā)布。 實現(xiàn) SSL/TLS 的網(wǎng)站在其 URL 中使用HTTPS而不是HTTP。

HTTPS(超文本傳輸安全協(xié)議)是 HTTP 和 SSL/TLS 協(xié)議的結(jié)合體。它加密了客戶端(在我們的例子中是安卓應(yīng)用程序)和服務(wù)器之間傳輸?shù)臄?shù)據(jù),防止未經(jīng)授權(quán)的訪問和篡改。HTTPS 協(xié)議在 URL 中以https://表示,對于安全的網(wǎng)絡(luò)通信至關(guān)重要。

理解 SSL Pinning

SSL pinning 就像給你應(yīng)用程序的派對制定一個可信的來賓名單。SSL pinning 不僅依賴證書頒發(fā)機(jī)構(gòu)(CA)來驗證 SSL/TLS 證書,還包括在你的應(yīng)用程序中硬編碼或“固定”信任服務(wù)器的公鑰或證書。這樣,應(yīng)用程序確保僅連接到指定的服務(wù)器,大大降低了中間人攻擊和未經(jīng)授權(quán)訪問的風(fēng)險。

SSL Pinning 的重要性

?防范中間人攻擊:沒有 SSL pinning 的話,攻擊者可以攔截你的應(yīng)用程序和服務(wù)器之間的通信,冒充中間人(MITM)。他們可以向你的應(yīng)用程序提供自己的 SSL 證書,從而破壞數(shù)據(jù)安全。SSL pinning 可以通過確保只有預(yù)定義的證書受信任來防止這種情況。

?抵抗 CA 受損:在傳統(tǒng)的 CA 驗證過程中,如果受信任的 CA 的私鑰被破壞,攻擊者可以發(fā)布你的應(yīng)用程序無意中信任的偽造證書。SSL pinning 消除了這個風(fēng)險,因為你的應(yīng)用程序不完全依賴 CA。

?增強(qiáng)數(shù)據(jù)隱私:SSL pinning 通過降低對敏感信息的未經(jīng)授權(quán)訪問的機(jī)會來加強(qiáng)數(shù)據(jù)隱私。

開始使用安卓網(wǎng)絡(luò)配置

安卓網(wǎng)絡(luò)配置允許開發(fā)者使用 XML 文件為其應(yīng)用程序定義網(wǎng)絡(luò)安全策略??梢詫⑵淇醋魇菫橐粓鍪⒋蟊硌莶季埃∥覀儗⒃诎沧宽椖康膔es/xml目錄中創(chuàng)建一個名為network_security_config.xml的文件。

80a69142-a470-11ee-8b88-92fbcf53809c.png

定義受信任的域和固定值

讓我們首先在network_security_config.xml中定義我們受信任的域及其相應(yīng)的公鑰固定值:




example.com

 
ReplaceWithYourPin
 
ReplaceWithYourPin


固定值是X.509 SubjectPublicKeyInfo(SPKI)的base64編碼摘要。將ReplaceWithYourPin替換為受信任域(例如example.com)的公鑰或證書的實際 SHA-256 哈希的 base64 編碼。您可以通過檢查服務(wù)器的SSL/TLS證書或使用此ssllabs網(wǎng)站獲取這些固定值。不知道如何獲???請查看下面的博客。

查看此博客以揭示您的 SHA-256 哈希和 Base64 編碼的固定值! —— 使用 SSL Labs 揭示 SHA-256 指紋 ——SSL Pinning

應(yīng)用網(wǎng)絡(luò)配置

接下來,我們需要告訴我們的應(yīng)用程序使用這個網(wǎng)絡(luò)配置。打開AndroidManifest.xml文件,并向元素添加以下屬性:


...

這樣配置你的應(yīng)用程序來使用指定的網(wǎng)絡(luò)安全配置。

現(xiàn)在,讓我們把我們的配置測試一下! 使用 URL 進(jìn)行 HTTPS 連接

配置好網(wǎng)絡(luò)后,現(xiàn)在是時候釋放HttpsURLConnection類的力量了! 這位精通技術(shù)的英雄是我們進(jìn)行安全的 HTTPS 連接的關(guān)鍵。

try{
//為目標(biāo)服務(wù)器創(chuàng)建一個URL對象
valmURL=URL("https://example.com/api/data")
with(mURL.openConnection()asHttpsURLConnection){
requestMethod="GET"
//在這里添加任何必要的頭部
println("URL:${this.url}")
println("ResponseCode:${this.responseCode}")
//執(zhí)行實際的連接并處理響應(yīng)
valresponseCode=responseCode
if(responseCode==HttpsURLConnection.HTTP_OK){
//萬歲!連接成功-是時候慶祝了!
//現(xiàn)在,讓我們處理響應(yīng),展示我們的數(shù)據(jù)處理技能!
}else{
//哎呀!優(yōu)雅地處理其他響應(yīng)代碼(例如,錯誤情況)
//每個超級英雄都會面臨挑戰(zhàn)-如何處理才是最重要的!
}
}
}catch(e:Throwable){
//哦哦!無效的SSLpinning或其他網(wǎng)絡(luò)錯誤-但別害怕,我們已經(jīng)準(zhǔn)備就緒!
//是時候排除故障并用正確的錯誤處理拯救這一天了!
println(e)
}

有了我們的SSL pinning和HttpsURLConnection,我們可以自信地駕馭數(shù)字海洋,知道我們用戶的數(shù)據(jù)是安全的。所以,放心地進(jìn)行安全的 HTTPS 連接測試吧!







審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • URL
    URL
    +關(guān)注

    關(guān)注

    0

    文章

    139

    瀏覽量

    15386
  • SSL
    SSL
    +關(guān)注

    關(guān)注

    0

    文章

    126

    瀏覽量

    25754
  • XML技術(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    6024
  • TLS
    TLS
    +關(guān)注

    關(guān)注

    0

    文章

    44

    瀏覽量

    4262

原文標(biāo)題:使用TLS/SSL Pinning保護(hù)Android應(yīng)用程序

文章出處:【微信號:哆啦安全,微信公眾號:哆啦安全】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    飛凌嵌入式開發(fā)板Android應(yīng)用程序開發(fā)-入門級

    簡介:隨著Android系統(tǒng)的普及,越來越多的學(xué)生,工程師開始步入了Android開發(fā)的行列。那么對于一個從來沒有接觸過Android開發(fā)的人,該從哪里入手,怎樣做出自己的第一個
    發(fā)表于 05-20 14:41

    PIC18F67J60(舊TCP/IP協(xié)議棧)與硬件SSL / TLS?

    嗨,有可能在“OLTD”TCP/IP STACK硬件SSL/TLS中實現(xiàn)。對于軟件解決方案,沒有更多的資源。謝謝幫助。安迪 以上來自于百度翻譯 以下為原文 Hi, It is possible
    發(fā)表于 10-08 15:56

    用2048位的密鑰大小與TLS SSL服務(wù)器通信?

    嗨,我知道這個話題是個老話題。我讀過很多類似的帖子,但是我不能讓我的板工作。我想用簡單的TCP客戶機(jī)把我的板(只是一個GET請求)連接到TLS/SSL服務(wù)器。我看到微芯片支持最多1024個RSA密鑰
    發(fā)表于 04-02 10:12

    mbed TLS的目標(biāo)是什么

    前言 mbed TLS(以前稱為PolarSSL)是TLSSSL協(xié)議的實現(xiàn),并且需要相應(yīng)的加密算法和支持代碼。這是雙重許可與Apache許可證2.0版(與GPLv2許可也可)。網(wǎng)站上指出,mbed
    發(fā)表于 07-19 06:11

    Android程序怎樣通過SSL單向認(rèn)證方式連接MQTT服務(wù)器的

    如何對Android程序進(jìn)行測試?Android程序怎樣通過
    發(fā)表于 01-20 06:06

    求助,現(xiàn)有的SSL/TLS庫或如何為SPC58EC-DISP導(dǎo)入外部SSL/TLS庫?

    我目前正在評估 SPC58EC-DISP。我在 SPC5-STUDIO 中嘗試了幾個示例,并通過 CAN 和串口成功發(fā)送/讀取信號。接下來,我想創(chuàng)建一個應(yīng)用程序(使用 PKI 進(jìn)行身份驗證)來驗證
    發(fā)表于 01-05 07:34

    TLSSSL有什么區(qū)別?

    請問TLSSSL有什么區(qū)別?
    發(fā)表于 11-21 16:56

    ssl是什么意思

    ssl是什么意思,SSL安全套接層及其繼任者傳輸層安全TLS是為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議。TLSSSL在傳輸層對網(wǎng)絡(luò)連接
    發(fā)表于 12-21 16:01 ?1.5w次閱讀

    Android應(yīng)用程序GUI遍歷自動化方法

    移動終端上各式各樣的應(yīng)用程序數(shù)量呈爆炸性增長,其中Android應(yīng)用程序更是占據(jù)了絕對的優(yōu)勢。Android應(yīng)用程序分析已經(jīng)成為一個研究熱點
    發(fā)表于 12-09 11:06 ?0次下載
    <b class='flag-5'>Android</b><b class='flag-5'>應(yīng)用程序</b>GUI遍歷自動化方法

    科普:簡化SSL/TLS的握手過程

    伴隨所有握手,SSL / TLS握手是一切開始的地方。SSL / TLS握手涉及一系列步驟,通過該步驟,雙方(客戶端和服務(wù)器)彼此進(jìn)行驗證,并開始通過安全
    的頭像 發(fā)表于 06-27 17:36 ?2776次閱讀

    SSLTLS協(xié)議運行機(jī)制的資料詳細(xì)概述

    聯(lián)網(wǎng)的通信安全,建立在SSL/TLS協(xié)議之本文簡要介紹SSL/TLS協(xié)議的運行機(jī)制。文章的重點是設(shè)計思想和運行過程,不涉及具體的實現(xiàn)細(xì)節(jié)。
    發(fā)表于 07-22 08:00 ?2次下載
    <b class='flag-5'>SSL</b>和<b class='flag-5'>TLS</b>協(xié)議運行機(jī)制的資料詳細(xì)概述

    SSL\TLS協(xié)議是什么?

    SSL英文全稱為Secure Sockets Layer,譯為安全套接層。TLS英文全稱為(Transport Layer Security,譯為傳輸層安全,是SSL的繼承者。SSL\
    的頭像 發(fā)表于 02-15 14:01 ?2066次閱讀
    <b class='flag-5'>SSL</b>\<b class='flag-5'>TLS</b>協(xié)議是什么?

    怎樣使用Kiuwan保護(hù)Android應(yīng)用程序?

    Kiuwan掃描 30多種語言的安全漏洞。這包括今天用于構(gòu)建移動應(yīng)用程序的語言:Java,JavaScript,Swift,Objective-C等。
    的頭像 發(fā)表于 03-13 16:09 ?982次閱讀

    恒訊科技分析:IPSec與SSL/TLS相比,安全性如何?

    ,防止數(shù)據(jù)被竊聽或篡改。SSL/TLS更側(cè)重于應(yīng)用程序層的安全性,保護(hù)數(shù)據(jù)的機(jī)密性和完整性,通常位于傳輸層之上。2、兼容性方面:SSL/
    的頭像 發(fā)表于 10-23 15:08 ?385次閱讀
    恒訊科技分析:IPSec與<b class='flag-5'>SSL</b>/<b class='flag-5'>TLS</b>相比,安全性如何?

    android手機(jī)上emulate應(yīng)用程序的方法

    Android手機(jī)上模擬(emulate)應(yīng)用程序的方法通常涉及到使用Android模擬器(Emulator)或類似的工具來模擬Android環(huán)境,以便在沒有實際物理設(shè)備的情況下運行
    的頭像 發(fā)表于 12-05 15:33 ?372次閱讀