Skip to Content

署名鍵

IronFlock は、デバイスとアプライアンスがインストールするものすべてに署名しています。各デバイスと各アプライアンスは、ダウンロードしたものを実行または使用する前に、すでに保持している鍵で署名を確認します。このページでは、それらの鍵、それぞれの鍵が署名する対象、そしてデバイスやアプライアンスが次のアップデートを確認できなくなることなく鍵を置き換える(ローテーションする)方法を説明します。

鍵の一覧

鍵署名対象確認するもの
IronFlock Appliance Release — OpenPGP、RSA 4096、フィンガープリント 8B37 990C 2980 0418 4664 75B8 D8E6 DD6C 025B B56Dアプライアンスのインストーラー、利用可能なバージョンの一覧、各バージョンのリリースマニフェスト(そのファイルのチェックサムと、すべてのコンテナイメージの識別情報)アプライアンス上の ironflock-update とインストーラー
IronFlock Bootstrap — OpenPGP、RSA 4096、フィンガープリント F6C9 4D96 CE31 5377 ACA7 C8EA 4990 5433 7321 2788デバイスインストーラー install.sh、そのバージョンファイル、ironflock-init プログラムデバイス上の install.sh
デバイスエージェントの更新 — 2 つの Ed25519 鍵、ID 4193db1f と 2b040fcfデバイスエージェントの更新と、エージェントがダウンロードするリモートアクセスクライアントデバイスエージェントと ironflock-init
IronFlock Code Signing Root — X.509、RSA 4096、SHA-256 フィンガープリント 1D:F4:F2:EC:32:E3:FF:2E:9E:CD:89:7E:92:F9:16:4C:C1:8A:CE:CF:96:DE:E8:55:7A:3F:5D:95:9E:8B:DB:69、2036 年 7 月まで有効下記の Windows 署名者の証明書のみ(それ以外には署名しません)Windows 上のデバイスエージェント
IronFlock Device Agent (Windows 署名者) — Authenticode、RSA 4096、証明書のシリアル番号 D137272B35F0ED5211219674E8B052B4、コード署名ルートが発行、2036 年 6 月まで有効Windows 版デバイスエージェントと、そのリモートアクセスクライアント frpc.exeWindows 上のデバイスエージェント(更新の署名に加えて)。エージェントのバージョン 1.5.6 以降、この確認に失敗したファイルは拒否されます

2 つの OpenPGP 鍵は、手動で確認するためにダウンロードできます。アプライアンスの鍵は https://instance-registry.ironflock.com/dl/appliance/appliance-release.asc(初回インストール前にインストーラーを検証する を参照)、ブートストラップ鍵は https://instance-registry.ironflock.com/dl/device-init/ironflock-bootstrap.asc(任意:先にインストーラーを検証する を参照)から入手できます。gpg が報告するフィンガープリントを、このページに記載されたものと比較してください。デバイスエージェントの鍵はエージェントに組み込まれているため、手動で確認するものはありません。

Windows では、デバイスエージェントは、ダウンロードするすべての更新とすべての frpc.exe を、エージェントに組み込まれたコード署名ルートで確認します。ファイルには、このルートが発行した署名者証明書による有効な署名が付いている必要があります。バージョン 1.5.6 以降、確認に失敗したファイルは削除され、実行されません。バージョン 1.5.4 と 1.5.5 は、失敗をログに記録するだけでした。署名者証明書は確認の時点で検証されるため、時計が証明書の有効期間外にある Windows デバイスは、時計が正しくなるまで更新されません。エージェントは起動のたびに自身の実行ファイルも確認し、codesign: self-check passed または codesign: self-check FAILED をログ C:\ProgramData\IronFlock\DeviceAgent\device-agent.log に書き込みます。FAILED を記録したデバイスは、実行中のエージェントと同じように署名された更新を拒否します。

エージェントのインストーラーは、コード署名ルートをコンピューターの信頼されたルート証明書にも追加します。エージェントの確認にはそれが不要なため、インストーラーがこの追加を行う前にインストールされたデバイスも、同じ方法で更新を確認します。それがこのページのルートであることを確認するには、PowerShell で Get-ChildItem Cert:\LocalMachine\Root | Where-Object Subject -like '*IronFlock Code Signing Root*' | Format-List Subject, Thumbprint, NotAfter を実行します。拇印(Thumbprint)は 6083E7E2446B8C95A6F6B2E3CFE354AE02859196 でなければなりません。ルートが追加されていれば、Get-AuthenticodeSignature "$env:ProgramData\IronFlock\DeviceAgent\device-agent.exe" | Select-Object Status, @{ n = 'Serial'; e = { $_.SignerCertificate.SerialNumber } } は Valid を表示します。Windows はシリアル番号の先頭に 00 を付けて、00D137272B35F0ED5211219674E8B052B4 のように表記します。バージョン 1.5.4 より前のデバイスエージェントと、frp バージョン 0.71.1 までの frpc.exe には、同じルートが発行した以前の Windows 署名者証明書(シリアル番号 481360741E254378C38A5236940BFFA44CFDD809)が付いています。この証明書で新たに署名することはありません。エージェントは、証明書が 2028 年 10 月に期限切れになるまで、その署名を受け入れます。

鍵の管理方法

  • このページの鍵はエクスポートできません。ただし、コード署名ルートは例外です。秘密鍵は IronFlock の鍵管理システム内に保管され、署名もそこで行われます。コード署名ルートはソフトウェアには署名せず、Windows 署名者の証明書にのみ署名します。その鍵は、その証明書を置き換えるときにだけ使われます。
  • リリースは、それぞれのリリースパイプラインによって署名されます。ある製品のリリースに署名する鍵は、その製品の自動リリースだけが、チェックとテストに合格した後にのみ使用できます。
  • デバイスエージェントは 2 つの独立した鍵を信頼します。新しいリリースには 1 つ目の鍵で署名します。2 つ目の鍵は以前のリリースに署名した鍵で、この鍵だけを信頼する古いエージェントや古いバージョンの ironflock-init 向けの更新には、現在も手作業でこの鍵で署名しています。また、1 つ目の鍵が使用できなくなった場合に備えて保管されています。その場合は 2 つ目の鍵で更新に署名するため、確認を省略するような設定を使わずに、デバイスは更新を続けられます。

鍵のローテーション

鍵は、予定された有効期間の終わりに達したとき、または侵害の疑いがある場合には直ちに置き換えられます。このセクションは上記の署名鍵についての説明です。アプライアンス自身の内部シークレットは ironflock-update --rotate で置き換えます。ホスト上のシークレット を参照してください。ローテーションは常に次の 3 つのステップで行われ、すべてのデバイスとアプライアンスがその過程の各アップデートを確認できるようになっています。

  1. 新しい鍵が追加されます。あるリリースで、デバイスまたはアプライアンスが信頼する鍵に新しい鍵が追加されます。そのリリース自体はまだ現在の鍵で署名されているため、そのリリースにアップデートするものはすべて、それを受け入れます。
  2. 署名が新しい鍵に移行します。現場で稼働しているシステムが両方の鍵を信頼するリリースを実行するようになると、IronFlock は新しい鍵で署名します。この期間中も、古い鍵は引き続き信頼されます。
  3. 古い鍵が廃止されます。その後のリリースで古い鍵が削除されます。それ以降、古い鍵による署名は拒否され、その鍵は 廃止された鍵 に掲載されます。

鍵ごとの影響は次のとおりです。

  • アプライアンスのリリース鍵。アプライアンスは、自身の ironflock-update に組み込まれている鍵を信頼します。そのため、ステップ 2 で署名されたアップデートを確認するには、アプライアンスが先にステップ 1 のリリースをインストールしている必要があります。移行期間中ずっとアップデートされなかったアプライアンスは、何かが変更される前にアップデートを停止します。その場合は、初回インストール前にインストーラーを検証する の説明に従い、新しい鍵で確認したインストーラーを一度手動で実行してください。
  • デバイスエージェントの更新鍵。デバイスは、実行しているエージェントに組み込まれた鍵を信頼します。移行期間中ずっとオフラインだったデバイスは、新しい鍵で署名された更新を確認できません。新しい鍵を信頼するデバイスインストーラーで、そのデバイスのエージェントを再インストールしてください。
  • ブートストラップ鍵。install.sh はインストールのたびに新たにダウンロードされ、確認に使う鍵を内包しているため、新しい鍵は移行期間なしで、次のインストーラーのリリースから有効になります。変わるのは手動での確認だけです。このページのフィンガープリントと比較してください。
  • Windows のコード署名。Windows デバイスが信頼するのはコード署名ルートであり、署名者ではありません。同じルートが発行した新しい署名者証明書は、移行期間なしで次のリリースから有効になり、デバイス側での作業は不要です。エージェントは確認の時点で署名者証明書を検証するため、期限切れの証明書で署名されたファイルは拒否されます。そのため、署名者証明書は期限よりかなり前に置き換えられます。ルート自体は、2036 年 7 月の期限よりかなり前に、上記の 3 つのステップで置き換えられます。移行期間中ずっとオフラインだった Windows デバイスは、エージェントの再インストールが必要です。コンピューターの信頼されたルート証明書には、インストーラーが追加したルートが残ります。そのため、ルートのローテーション後は、上記の PowerShell による確認で以前のルートしか表示されない場合があります。エージェントは、自身に組み込まれたルートで確認します。

移行期間中は、このページに両方の鍵がフィンガープリントとともに掲載され、リリースノートで各ステップが告知されます。最新の状態に保たれているアプライアンスやデバイスでは、何もする必要はありません。

鍵が侵害された場合、IronFlock は直ちにその鍵での署名を停止し、上記の手順に従って短期間でローテーションし、セキュリティアドバイザリを公開します。

廃止された鍵

現時点ではありません。

Last updated on