SSL pinning
一般的瀏覽器與手機會信任被機構簽發的證書,因為預設手機就存了一百多個, 所以 root certificate,許多家發的都會信任。 所以如果有個 proxy server 做 MITM 就很容易讀取封包。而 SSL pinning 將證書或公鑰 hash 後寫在應用程式,當server 要把公鑰傳給 app 端時會因為該公鑰無法產生跟一開始寫在 app 時的 hash 相同,於是拒絕連線。
Last updated
一般的瀏覽器與手機會信任被機構簽發的證書,因為預設手機就存了一百多個, 所以 root certificate,許多家發的都會信任。 所以如果有個 proxy server 做 MITM 就很容易讀取封包。而 SSL pinning 將證書或公鑰 hash 後寫在應用程式,當server 要把公鑰傳給 app 端時會因為該公鑰無法產生跟一開始寫在 app 時的 hash 相同,於是拒絕連線。
Last updated
首先要先知道中間人攻擊原理(man in middle attack),wireshark, proxyman 在進行 https 封包破解時都會用到此方法:
中間人想要替換成自己的公鑰的原因是,只有特定私鑰才能解密公鑰,中間人因為沒有原始server 的私鑰,所以利用替換自己的公鑰的方式。
此時如果有進行 SSL pinning 的話
SSL pinning: 將服務器的公鑰進行 sha256 雜湊與 base64 encoding 後產生的固定字串寫在應用程式端(app)。
此時中間人在上面第三部發送公鑰時因為中間人的公鑰進行 sha256 雜湊與 base64 encoding 後的字串與寫在應用程式端的不同,此時應用程式隨即會拒絕連線,解決了中間人攻擊。