転送時の暗号化とは?通信経路上のデータの保護
転送時の暗号化は、データがネットワーク上を移動する間に保護し、トラフィックを傍受した攻撃者が暗号文しか見えないようにします。
転送時の暗号化は、移動中のデータを対象とします。pipelineがイメージをpushする、クラウドAPIを呼び出す、依存関係を取得するなどです。これがなければ、ネットワーク経路上の誰もが、認証情報を含むトラフィックを読んだり改ざんしたりできます。HTTPSの背後にあるプロトコルであるTLSが標準的なメカニズムであり、ほぼすべてのCI/CDのやり取りはそれに依存しています。
何から保護するか
転送時の暗号化は、ネットワーク上の盗聴と改ざんから防御します。悪意あるノード、侵害されたルーター、共有インフラ上の攻撃者などです。TLSにより、傍受されたトラフィックは読めず、あらゆる改ざんは検出されます。
TLSの仕組み
- handshakeが非対称暗号を使って身元を検証し、キーに合意します。
- 次に対称セッションキーが速度のためにトラフィックの大部分を暗号化します。
- 証明書により、各側が正しいサーバーと通信していることを確認できます。
なぜ証明書が重要か
TLSは盗聴から保護しますが、正しいサーバーと通信しており偽者ではないことを確認するのは証明書の検証だけです。pipelineで証明書チェックを無効にすること(魅力的な近道)は、傍受攻撃への扉を再び開きます。
CI/CDにおける転送時の暗号化
リポジトリのclone、依存関係のpull、イメージのpush、deploy APIの呼び出し、secretの取得、すべてがTLS上で行われます。プレーンなHTTPでダウンロードしたり証明書検証をスキップしたりするpipelineは、認証情報を露出させ、サプライチェーンの改ざんを招きます。
その限界
転送時の暗号化は、データが移動している間だけ保護します。到着して復号されると、保存時の暗号化とランタイムの分離が引き継ぎます。この3つが揃って、移動中、保存中、使用中のデータをカバーします。
転送時の暗号化とrunner
pipelineはrunnerから暗号化された接続を確立します。分離されたエフェメラルなrunner(Latchkeyのmanaged runnerなど)は、それらの接続のキーと復号されたペイロードを単一の短命なjobに閉じ込めます。
重要なポイント
- 転送時の暗号化は、TLSによってネットワークデータを読めず改ざん検知可能な状態に保ちます。
- 暗号化だけでなく証明書の検証が、正しいサーバーに到達したことを確認します。
- あらゆる状態のデータを保護するため、保存時の暗号化と分離と組み合わせます。