<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>署名検証 on Physical AI Hub</title>
    <link>https://physicalaihub.net/tags/%E7%BD%B2%E5%90%8D%E6%A4%9C%E8%A8%BC/</link>
    <description>Recent content in 署名検証 on Physical AI Hub</description>
    <generator>Hugo</generator>
    <language>ja-jp</language>
    <lastBuildDate>Wed, 07 Oct 2026 14:41:10 +0900</lastBuildDate>
    <atom:link href="https://physicalaihub.net/tags/%E7%BD%B2%E5%90%8D%E6%A4%9C%E8%A8%BC/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>ロボットソフトウェアの安全なOTA設計：互換性・段階展開・ロールバックの実践</title>
      <link>https://physicalaihub.net/posts/robot-software-ota-compatibility-rollback/</link>
      <pubDate>Wed, 07 Oct 2026 14:41:10 +0900</pubDate>
      <guid>https://physicalaihub.net/posts/robot-software-ota-compatibility-rollback/</guid>
      <description>&lt;p&gt;ロボットの更新では、配布できたことと安全に復旧できることを分けて考える必要があります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;結論&#34;&gt;結論&lt;/h2&gt;&#xA;&lt;p&gt;ロボットのOTAを安全にするには、イメージの署名検証だけでは不十分です。機体互換性をマニフェストで定義し、サーバーと機体の双方で適用可否を確認したうえで、少数のカナリアから段階展開します。さらに、起動後のセンサー、アクチュエータ、通信、バッテリー、制御ループなどをヘルスゲートとして監視し、異常時には許可された既知の正常版へ戻せるようにします。&lt;/p&gt;&#xA;&lt;p&gt;復旧方式としては、対応するブートローダーとストレージ構成がある場合、A/Bまたはデュアルバンクが有力です。ただし、運用上のロールバックと、脆弱な旧版へのダウングレードを防ぐアンチロールバックは別の制御として設計しなければなりません。&lt;/p&gt;&#xA;&lt;h2 id=&#34;なぜ機体互換性が難しいのか&#34;&gt;なぜ機体互換性が難しいのか&lt;/h2&gt;&#xA;&lt;p&gt;同じ製品系列のロボットでも、ハードウェアリビジョン、接続されたセンサーやアクチュエータ、MCUファームウェア、OS、ブートローダーが異なることがあります。アプリケーションが起動しても、通信プロトコルやファームウェアABIが合わなければ、制御系全体を正常に動かせるとは限りません。&lt;/p&gt;&#xA;&lt;p&gt;また、アプリケーションだけを旧版へ戻しても、設定・データスキーマの移行、ブートローダー更新、他ECUとのプロトコル変更が残れば復旧は不完全です。OTAの単位は単一バイナリではなく、依存関係と適用順序を含むリリースとして定義する必要があります。&lt;/p&gt;&#xA;&lt;h2 id=&#34;互換性契約をマニフェスト化する&#34;&gt;互換性契約をマニフェスト化する&lt;/h2&gt;&#xA;&lt;p&gt;更新マニフェストと機体インベントリを比較し、適用対象を限定します。契約に含める項目は、少なくとも次のように整理できます。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;製品系列、機体モデル、機体識別子&lt;/li&gt;&#xA;&lt;li&gt;ハードウェアリビジョン、センサー・アクチュエータ構成&lt;/li&gt;&#xA;&lt;li&gt;ブートローダー、OS、カーネル、ファームウェアABI&lt;/li&gt;&#xA;&lt;li&gt;接続ECUと通信プロトコル&lt;/li&gt;&#xA;&lt;li&gt;更新対象コンポーネント、依存関係、適用順序&lt;/li&gt;&#xA;&lt;li&gt;設定・データスキーマ&lt;/li&gt;&#xA;&lt;li&gt;シーケンス番号、最低限必要なセキュリティバージョン&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;RFC 9124は、ベンダーID、クラスID、コンポーネント、依存関係、シーケンス番号、条件、検証アルゴリズムなどをマニフェストで表す情報モデルを定義しています。Uptaneは、一般的な更新情報と、個別の車両やECUに対する適用指示を分離する構成を示しています。&lt;/p&gt;&#xA;&lt;p&gt;サーバー側では属性やインベントリによって対象を絞り込み、機体側でも受信後に再検証します。サーバーの選定だけに頼ると、古いインベントリや誤登録による誤配布を止められません。&lt;/p&gt;&#xA;&lt;figure class=&#34;mermaid-figure&#34;&gt;&#xA;    &lt;pre class=&#34;mermaid&#34; role=&#34;img&#34; aria-label=&#34;署名検証だけでなく、互換性契約、更新前後の安全条件、段階展開、ヘルスゲート、ロールバックを組み合わせるOTAの全体フロー。&#34;&gt;flowchart LR&#xA;  A[&#34;更新イメージとマニフェストを生成&#34;] --&gt; B[&#34;署名・ハッシュ・メタデータを検証&#34;]&#xA;  B --&gt; C[&#34;サーバー側で対象機体を選定&#34;]&#xA;  C --&gt; D[&#34;機体側でインベントリと互換性契約を再検証&#34;]&#xA;  D --&gt;|&#34;不一致&#34;| X[&#34;インストール拒否&#34;]&#xA;  D --&gt;|&#34;一致&#34;| E[&#34;更新前の安全条件を確認&#34;]&#xA;  E --&gt; F[&#34;カナリア機へ展開&#34;]&#xA;  F --&gt; G[&#34;起動後ヘルスゲート&#34;]&#xA;  G --&gt; H{&#34;異常があるか&#34;}&#xA;  H --&gt;|&#34;いいえ&#34;| I[&#34;次のコホートへ拡大&#34;]&#xA;  I --&gt; J{&#34;全コホート完了か&#34;}&#xA;  J --&gt;|&#34;いいえ&#34;| F&#xA;  J --&gt;|&#34;はい&#34;| K[&#34;展開完了&#34;]&#xA;  H --&gt;|&#34;はい&#34;| L[&#34;新規展開を停止&#34;]&#xA;  L --&gt; M[&#34;許可された既知の正常版へロールバック&#34;]&#xA;  M --&gt; N[&#34;復旧状態を確認&#34;]&#xA;  N --&gt;|&#34;復旧&#34;| O[&#34;再開または中止を判断&#34;]&#xA;  N --&gt;|&#34;未復旧&#34;| P[&#34;リカバリー手順へ移行&#34;]&lt;/pre&gt;&lt;figcaption&gt;署名検証だけでなく、互換性契約、更新前後の安全条件、段階展開、ヘルスゲート、ロールバックを組み合わせるOTAの全体フロー。&lt;/figcaption&gt;&lt;/figure&gt;&lt;h2 id=&#34;署名だけに依存しない検証&#34;&gt;署名だけに依存しない検証&lt;/h2&gt;&#xA;&lt;p&gt;安全なOTAは、未承認変更を防止する、変更を検出する、信頼できる状態へ復旧する、という多層構成で考えます。NIST SP 800-193は、プラットフォームファームウェアの保護をprevent、detect、recoverの三機能で整理しています。これはロボットの物理安全全体を直接規定するものではありませんが、更新設計の基本的な分解として利用できます。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
