以下の内容はhttps://cysec148.hatenablog.com/entry/2025/09/07/085626より取得しました。


第60回:SSLピンニング・コード署名の意味

Hello there, ('ω')ノ

✅ SSLピンニングとは?

🔐 まず、SSL/TLS通信の基本

通常、アプリとサーバー間の通信は HTTPS(SSL/TLS) で暗号化されています。 通信の際、アプリはサーバーのSSL証明書を検証します。

アプリ → サーバーに接続 → サーバーの証明書を確認 → 信頼できるCAか?

⚠️ それでも起きる中間者攻撃(MITM)

攻撃者がWi-Fiアクセスポイントを乗っ取ったり、端末に独自のCA証明書をインストールしていれば、偽サーバーに接続させることができます。

🛡 そこで「SSLピンニング」

SSLピンニングとは、特定の証明書や公開鍵をアプリ側にあらかじめ埋め込んでおき、それと一致しないサーバーは信用しないという仕組みです。

アプリ → サーバーの証明書を比較 → あらかじめ埋め込んだものと違う → 通信拒否!

✔ 実装例(Java / OkHttp)

CertificatePinner pinner = new CertificatePinner.Builder()
  .add("example.com", "sha256/XXXXXXXXXXXXXXXXXXXXXX")
  .build();

OkHttpClient client = new OkHttpClient.Builder()
  .certificatePinner(pinner)
  .build();

✅ 診断時の影響

  • SSLピンニングがあると、Burp Suiteなどのプロキシツールで通信を傍受できない
  • 通信内容を診断したい場合は、Fridaなどでバイパス処理が必要
  • 逆にいえば、未実装だと通信の盗聴や改ざんが可能になるリスクが高い

✅ コード署名とは?

この続きはcodocで購入



以上の内容はhttps://cysec148.hatenablog.com/entry/2025/09/07/085626より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14