知識マップ: 自動アップデートのセキュリティ設計 - HTTPSだけでは足りない理由
記事「自動アップデートのセキュリティ設計 - HTTPSだけでは足りない理由」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。
この記事は、自動アップデート機能の安全性はTLSだけでは確保できず、クライアント側のtrust anchorと署名付きmetadataの検証によって成り立つと整理します。TUFが定義するrollback・freeze・mix-and-match攻撃には、最高既知バージョンの保持や有効期限、hash・size・versionの固定といった対策が有効で、検証失敗時はfail-openではなくfail-closedにすることが推奨されます。Windowsでは要件が合えばMSIX App InstallerやClickOnceを優先し、自前updaterを作る場合もAuthenticode署名の検証、発行元チェーンの固定、タイムスタンプ付き署名、鍵の分離運用、helperへの権限分離、kill switchやblocklistによる事故対応までを含めて設計する必要があるとしています。
flowchart LR
accTitle: 自動アップデートのセキュリティ設計の知識マップ
accDescr: 自動アップデートがsigned metadataとtrust anchorを前提にrollback・freeze・mix-and-match攻撃をどう防ぎ、MSIX/ClickOnceとの使い分けや鍵管理・権限分離とどうつながるかを示す図です。
auto_updater["自動アップデート機能(updater)"]
signed_metadata["署名付き更新metadata"]
update_trust_anchor["updateのtrust anchor(信頼の起点)"]
public_key_cryptography["公開鍵暗号"]
mix_and_match_attack["mix-and-match攻撃(更新)"]
freeze_attack["freeze攻撃(更新)"]
minimum_allowed_version["minimum allowed version"]
rollback_attack["rollback攻撃(更新)"]
tuf["TUF(The Update Framework)"]
fail_closed["fail-closed設計"]
verification_failure_response["検証失敗時の挙動"]
fail_open["fail-open設計"]
msix_app_installer["MSIX + App Installer"]
windows_app_update_distribution["Windowsアプリの更新配布"]
clickonce["ClickOnce"]
code_signing_cert["コード署名証明書"]
get_authenticodesignature["Get-AuthenticodeSignature"]
winverifytrust["WinVerifyTrust"]
issuer_chain_pinning["発行元チェーンの固定"]
certificate_chain["証明書チェーン"]
thumbprint["拇印(サムプリント)"]
code_signing_timestamp["コード署名のタイムスタンプ"]
certificate_expiry["証明書の期限切れ"]
signing_key_separation["署名鍵の分離運用"]
hsm_key_storage["HSM/トークンでの秘密鍵保管"]
helper_privilege_separation["updater権限分離(helperへの分離)"]
kill_switch["kill switch(更新の緊急停止)"]
update_blocklist["更新のblocklist"]
auto_updater -.->|"前提とする"| update_trust_anchor
auto_updater -->|"前提とする"| signed_metadata
signed_metadata -->|"利用する"| public_key_cryptography
signed_metadata -->|"防止する"| mix_and_match_attack
signed_metadata -->|"防止する"| freeze_attack
minimum_allowed_version -->|"防止する"| rollback_attack
auto_updater -.->|"利用する"| tuf
fail_closed -->|"推奨される対応"| verification_failure_response
fail_open -->|"用いるのは非推奨"| verification_failure_response
msix_app_installer -->|"推奨される対応"| windows_app_update_distribution
clickonce -->|"推奨される対応"| windows_app_update_distribution
auto_updater -.->|"前提とする"| code_signing_cert
code_signing_cert -->|"で確認できる"| get_authenticodesignature
auto_updater -.->|"利用する"| winverifytrust
issuer_chain_pinning -->|"前提とする"| certificate_chain
issuer_chain_pinning -->|"利用する"| thumbprint
code_signing_timestamp -->|"軽減する"| certificate_expiry
code_signing_timestamp -->|"推奨される対応"| code_signing_cert
auto_updater -.->|"前提とする"| signing_key_separation
signing_key_separation -->|"利用する"| hsm_key_storage
helper_privilege_separation -->|"推奨される対応"| auto_updater
auto_updater -->|"前提とする"| minimum_allowed_version
auto_updater -->|"前提とする"| kill_switch
auto_updater -->|"前提とする"| update_blocklist
auto_updater -.->|"前提とする"| issuer_chain_pinning
windows_app_update_distribution -.->|"推奨される対応"| auto_updater
auto_updater -.->|"前提とする"| fail_closed
概念間の関係(全27件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- 自動アップデート機能(updater)はupdateのtrust anchor(信頼の起点)を前提とします。
- 自動アップデート機能(updater)は署名付き更新metadataを前提とします。
- 署名付き更新metadataは公開鍵暗号を利用します。
- 署名付き更新metadataはmix-and-match攻撃(更新)を防ぎます。
- 署名付き更新metadataはfreeze攻撃(更新)を防ぎます。
- minimum allowed versionはrollback攻撃(更新)を防ぎます。
- 自動アップデート機能(updater)はTUF(The Update Framework)を利用します。
- fail-closed設計は検証失敗時の挙動に対する本記事の推奨です。
- fail-open設計を検証失敗時の挙動に用いることは推奨されません。
- MSIX + App InstallerはWindowsアプリの更新配布に対する本記事の推奨です。
- ClickOnceはWindowsアプリの更新配布に対する本記事の推奨です。
- 自動アップデート機能(updater)はコード署名証明書を前提とします。
- コード署名証明書はGet-AuthenticodeSignatureで確認できます。
- 自動アップデート機能(updater)はWinVerifyTrustを利用します。
- 発行元チェーンの固定は証明書チェーンを前提とします。
- 発行元チェーンの固定は拇印(サムプリント)を利用します。
- コード署名のタイムスタンプは証明書の期限切れを軽減します。
- コード署名のタイムスタンプはコード署名証明書に対する本記事の推奨です。
- 自動アップデート機能(updater)は署名鍵の分離運用を前提とします。
- 署名鍵の分離運用はHSM/トークンでの秘密鍵保管を利用します。
- updater権限分離(helperへの分離)は自動アップデート機能(updater)に対する本記事の推奨です。
- 自動アップデート機能(updater)はminimum allowed versionを前提とします。
- 自動アップデート機能(updater)はkill switch(更新の緊急停止)を前提とします。
- 自動アップデート機能(updater)は更新のblocklistを前提とします。
- 自動アップデート機能(updater)は発行元チェーンの固定を前提とします。
- Windowsアプリの更新配布は自動アップデート機能(updater)に対する本記事の推奨です。
- 自動アップデート機能(updater)はfail-closed設計を前提とします。
主要概念の定義
機械可読データ
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。