資安

關於 APP 預埋檢查策略優化

背景

在 APP 海量時代,很多APP 都進行過證書預埋檢查功能設置。當預埋的APP 更新服務器端證書時,發現部分客戶出現證書更新之後,APP 無法正常通信等情況出現。經過技術排查發現由於APP 中進行了證書預埋檢查,並預埋了服務器證書(公鑰)文件等信息,導致證書更新後新證書無法通過 APP 預埋檢查驗證,提示網絡中止連接。

如果你的 APP 做了以下的預埋,都會存在隱患:

1.在APP 中預埋了服務器證書(公鑰)做證書檢查

2.在APP 中預埋了服務器證書的指紋值做證書檢查

3.在APP 中預埋了中級證書文件或者根證書文件做證書檢查

4.在APP 中預埋了中級證書指紋值或者根證書指紋值做證書檢查

證書預埋檢查隱患

1.服務器證書(公鑰)存在有效期限制,目前最高 3 年有效期,未來 CA/B 組織會逐漸縮短證書最長生命週期。如果將服務器證書進行 APP 預埋證書檢查,當服務器證書因為生命週期終止導致證書更新時,經過預埋的 APP 會出現無法正常通信等情況。
2.根證書和中級證書也會存在失效、策略變更或者過期,如果將根證書或者中級證書進行

APP 預埋,一旦根證書和中級證書發生了更新,經過預埋的 APP 會出現無法正常通信等情況。雖然在大多數情況下,檢查機制能夠防禦中間人攻擊。因為當黑客竊聽通信時,他提供
的攔截證書多為自簽名證書,TrustManager 不能識別這個證書,於是拒絕 HTTPS 連接。但是,一旦預埋的這張證書由於證書生命週期的終止,觸發服務器端進行證書更新替換機制時, APP 應用端將無法驗證請求證書的有效性,從而導致業務中斷。

建議

為了 APP 業務靈活性和可續性,天威建議使用系統默認的系統信任庫來做證書認證, 並且開啟域名強驗證來增強 APP 安全性。

對服務器證書域名進行強校驗(僅供開發人員參考):
圖片1.png

實現 HostnameVerifier 的 verify()方法:
圖片2.png

由於 SSL 證書本身存在生命週期基本屬性,加上中級 CA 和根證書存在可變更的因素, 一旦應用中添加了證書檢查功能之後,在後期業務發展過程中勢必會帶來不可預估的影響。
建議在安全策略允許的情況下取消證書檢查功能,改為使用系統自帶信任庫方式驗證,並配合使用其他比如域名強驗證,使用 Proguard 混淆代碼,使用編譯庫等手段來確保APP 安全。

TLS/SSL 證書鏈

保證通信安全至少要使用 HTTPS 協議,也就是說使用安全傳輸層協議(TLS)或是它的前身安全套接層協議(SSL)加密的通信。

SSL 證書鏈結構關係
公網可信 SSL 證書(至少)包括三個證書:

1、根證書:這是由證書認證機構(CA)頒發的,也就是一個可以確保整個通信時安全的值得信任的組織。

2、中級證書:一個根證書下有多箇中級證書。它們建立服務器證書和根證書的信任橋樑,是連接服務器證書和根證書的證書鏈,由根證書籤名的證書。
3、服務器證書:服務器證書是綁定最終請求域名的證書,為最終的加解密證書文件。

證書檢查
1、Certificate Pinning
其實 Certificate Pinning 是 OkHttp 實現的一個類似於 HPKP 的技術,目的是為了使客戶端可以有主動的信任CA 的權利,它的工作原理就是使用預先設置的證書指紋和服務器傳過來的證書鏈中的證書指紋進行匹配,只要有任何一對指紋匹配成功,則認為是一次合法的連接,否則禁止本次鏈接。
2、預埋證書
把數字證書以文件或者字符串的形式寫在本地,在 SSL 握手的時候用本地預埋的證書和服務器傳過來的證書進行匹配,如果匹配不成功則禁止本次通信。
Certificate Pinning 和預埋證書做法的比較(以 OkHttp 為例)
3、預埋證書的寫法
首先定義一個類實現類實現 X509TrustManager 接口,實現對客戶端證書鏈的校驗方法和服務端證書鏈的校驗方法,不寫的話表示不做任何校驗,默認信任所有證書鏈中的證書。
圖片3.png

由於證書存在生命週期和可變性,證書更新和證書鏈變更都會導致這種預埋失效,從而帶來業務中斷風險。

Certificate Pinning 的寫法

範例代碼:
圖片4.png

pinner 就是證書指紋,sha256 表示的是哈希值得一種算法,pinner 也可以是 sha1/* , 具體 pinner 要根據購買證書所支持的配置,證書指紋可以在證書詳細信息中點擊查看。在SSL 握手的時候,會檢查配置中的指紋和服務端傳過來的證書證的指紋是否相匹配,只要有一個指紋匹配,則進行下一步,否則直接拋出異常,禁止本次連接。

證書在使用過程中會存在不可避免的證書續期和替換更新,每次操作都會導致證書的指紋發現不可逆的變化,一旦使用了 Certificate Pinning 方式,都會在證書更新之後帶來業務中斷等情況。

Leave a Reply

Your email address will not be published. Required fields are marked *