securityarchitecturemTLSfirmwarePKI

# セキュリティアーキテクチャ

すべてのデバイスを検証し、すべての接続を暗号化し、すべての更新に署名する。それが設計の前提です。

スマートホームの DIN rail 取り付け自動化モジュールを収めた分電盤を施錠する様子

スマートホームシステムは、住まいを支える要素を制御します。照明、アクセス、空調、そして安全に関わる機能も増えています。そうしたものをシステムに任せるとき、どう守られているかは細部ではありません。信頼できるかどうかの中心です。

この記事では、Voldeno がセキュリティにどう取り組んでいるかを説明します。対象は2つです。Voldeno システムを導入・保守するインストーラーと、自宅を何が守っているのか知りたい技術に関心のある利用者です。宣伝より具体性を優先し、設計の中身を評価できるように書いています。

# 基本方針: デフォルトでは何も信頼しない

接続製品のセキュリティ問題の多くは、次のどちらかに帰着します。信頼すべきでない相手を信頼するか、機密情報を第三者が読み取ったり改ざんしたりできる形で送るかです。

Voldeno の設計は、両方に対するシンプルな答えに基づいています。すべてのデバイスとサービスは、信頼される前に自身を証明しなければならない。設定・制御・ファームウェアを運ぶ接続はすべて暗号化される。 システム内のどのコンポーネントも匿名接続を受け付けず、機密データが盗聴者に読める形では流れません。

この原則はどこでも同じ方法で適用されます。だからこそ、例外だらけの寄せ集めではなく、一貫して頼れる設計になります。

# 信頼の根: 非公開の Voldeno CA

基板のマイクロコントローラ横に置かれた鍵。各 Hub の暗号鍵はチップ内に格納される

Voldeno システムにおけるアイデンティティは、自社の認証局 Voldeno CA に固定されています。認証局は、デジタルな「身分証明書」(証明書)を発行し、その真正性を保証する機関と考えてください。Voldeno CA は Voldeno 専用の非公開 CA で、Web サイトが使う公開証明書体系とは別です。

役割は意図的に狭く保たれています。Voldeno Hub を識別する証明書、Voldeno Cloud とファームウェアサービスを識別する証明書、Voldeno Studio と Mobile アプリが持つクライアント証明書を発行し、Hub 上で動くファームウェアに署名します。プラットフォームは Voldeno CA 由来の証明書だけを信頼するため、システムに参加できるデバイスとサービスの範囲は小さく、厳密に管理されます。有効な Voldeno 発行の資格情報を提示できないものは、単に入れません。

以降の説明はすべて、この基盤の上に成り立っています。

# Voldeno Hub: 硬件に組み込まれたセキュリティ

Hub は設置現場に物理的に存在するコントローラです。だから、誰かが手に取った状態でもセキュリティが破綻してはいけません。

固有で複製不可能なアイデンティティ。 製造される各 Hub には、Voldeno CA が署名した固有の証明書が付与されます。チップ固有のハードウェア識別子から導出されます。2台の Hub が同じアイデンティティを共有することはありません。これにより、クラウドとインストーラーのツールは、他のすべての Hub の中から特定の1台を識別できます。1台分のアイデンティティを知っても、他の Hub について攻撃者は何も得られません。

デバイスから出ない鍵。 各 Hub の秘密鍵と証明書は、製造時にマイクロコントローラ内部フラッシュの専用保護領域に書き込まれます。デバイスから出ることはなく、ネットワーク経由で送られることもありません。

物理改ざんへの保護。 Hub は STM32H7 マイクロコントローラ上で動作し、製造時に リードアウト保護(RDP Level 1) が有効化されます。Level 1 が有効な間、デバッガ接続時、または RAM や内蔵ブートローダからの強制起動時には、チップは内部フラッシュへのすべてのアクセスをブロックします。デバッグインターフェース経由でフラッシュの読み取り・消去・書き込みを試みると、バスエラーで失敗します。Hub を開いて診断ツールを接続しても、ファームウェアの読み出しや保存鍵の抽出はできません。デバッグインターフェース自体は永久無効化されませんが、保護メモリにはアクセスできません。保護を解除する唯一の方法(Level 0 に戻す)は、先にフラッシュの一括消去を強制することです。これによりファームウェアと鍵は破棄され、露出はしません。リードアウト保護は物理攻撃のコストと難易度を上げる障壁であり、絶対保証ではありません。複数レイヤのうちの1つです。

# 暗号化され、認証された接続

デバイスのアイデンティティは、接続のたびに実際に検証されて初めて意味を持ちます。Voldeno はシステム内のすべてのリンクでアイデンティティを確認します。

Hub と Cloud。 Hub が Voldeno Cloud に接続するとき、双方は証明書で相互認証します(mutual TLS、すなわち mTLS)。クラウドは Hub が正規の Voldeno デバイスであることを確認し、Hub は本物の Voldeno Cloud と通信していること(なりすましではないこと)を確認します。間の通信はすべて暗号化されます。双方がアイデンティティを証明するまで、データは交換されません。

インストーラーのツールと Hub。 Voldeno Studio は、インストーラーがデバイス設定、ロジック構築、プロジェクトデプロイに使うデスクトップアプリケーションです。ローカルネットワーク経由で Hub に接続するとき、接続は暗号化され、Studio は Hub の証明書を Voldeno CA に対して検証してから信頼します。接続先が正規の Voldeno Hub であることをインストーラーが確認できます。Studio 自身も Voldeno 発行のクライアント証明書を持ちます。その暗号化チャネルの上で、各操作は短命なトークン(次節)により許可され、何が実行できるかが制御されます。リンクは非公開であり、アクセスも制御されています。

Studio と利用者から Cloud へ。 リモートアクセスのための Voldeno Cloud 接続も同様に暗号化され、Voldeno 発行の証明書で相互認証されます。セッションへのアクセスはトークンで管理されます。クラウドは匿名クライアントには応答しません。

# アクセスの認可: Hub が発行・署名するトークン

暗号化と証明書は 誰が 話しているかを確立します。トークンは 各当事者が何をしてよいか を決めます。Voldeno は署名付きアクセストークン(JWT)でこれを扱い、設計上重要な性質があります。トークンは Hub 自身が発行し、署名します。

利用者またはインストーラーにアクセスが付与されると、関連トークンは Hub 上で生成され、Hub 固有の秘密鍵で ES256 アルゴリズムにより署名されます(Hub のアイデンティティの根でもある楕円曲線鍵と同じ鍵です)。種類は2つです。長寿命の refresh token(アクセストークン取得専用)と、短命の access token(約1時間有効、セッションを実際に認可し、利用者の権限を載せる)です。

後からトークンを受け取る側(クラウド中継でも、後続リクエストの Hub でも)は、Hub の証明書に対して署名を検証します。その証明書自体が Voldeno CA 発行であるため、信頼の連鎖は完結します。トークンは Hub が署名し、Hub の署名鍵は証明書が保証し、証明書は Voldeno CA が保証します。特定の Hub から来たと主張する Hub 以外が本当に署名したトークンは受け付けられず、内容の改ざんは署名を無効にします。

同様に重要なのは、Hub がトークン内の権限を各操作で強制することです。トークンは接続を開く権限、システム状態を読む権限、コマンドを送る権限を、それぞれ別に持たなければなりません。アプリやツールは表示内容を権限で決めますが、未認可のリクエストは Hub が拒否します。インターフェースは、Hub が独立して適用するルールの上に載った利便層です。

# ファームウェア更新: 2つの独立した防御

ノート PC からファームウェア更新を受ける Voldeno Hub モジュールの前の南京錠。更新は署名済みイメージに限定される

ファームウェアは Hub 上で動くソフトウェアです。悪意あるコードに置き換えることは、攻撃者にとって最も甚大な被害の一つになり得ます。Voldeno は更新を2つの独立した方法で保護し、一方の弱点が全体を崩さないようにしています。

更新は安全で認証されたチャネルで配信される。 ファームウェアは Voldeno ファームウェアサービスから、暗号化された相互認証(mTLS)接続で取得されます。サービスは Voldeno CA 発行のクライアント証明書を要求し、ファームウェア提供前に検証します。クライアントもサービスを検証します。イメージは、前述の保護されたチャネル経由で Hub に転送されます。

更新は暗号的に署名され、Hub が検証する。 配信方法とは独立して、すべてのファームウェアイメージは Voldeno CA が署名します。 更新インストール前に Hub は署名を検証します。イメージの SHA-256 ハッシュを計算し、Hub 自身の保護ストレージ内の Voldeno CA 証明書に対して署名を確認します。署名が有効な場合のみ Hub は続行します。署名がない、無効、またはイメージが改ざん・破損している場合、Hub はインストールを拒否します。

安心のための要点はここです。誰かがファームウェアファイルを入手し、改ざん版を Hub に押し込もうとしても、Voldeno CA の署名を偽造できず、Hub は改ざんイメージを拒否します。Hub が動かすのは、Voldeno が実際にビルドしたファームウェアだけです。

# Voldeno Cloud とリモートアクセス

Voldeno Cloud は、設置へのリモートアクセスを可能にするバックエンドです。TLS は強化されたエッジで終端され、接続する当事者に mTLS を強制します。Hub はデバイス固有の証明書で認証し、Voldeno Studio と Mobile アプリはクライアント証明書で認証します。いずれも Voldeno CA 発行です。クラウドへの接続は暗号化と相互認証の両方が成り立ち、セッションは上記の署名付きトークンでも管理されます。

重要なのは、Hub がインターネットに直接晒されないことです。Hub はクラウドへの 外向き 持続接続を維持し、クラウドは Hub と認可されたクライアントの間の信頼できる仲介役です。クラウドは匿名接続を受け付けません。アプリケーションデータ交換前に、すべての参加者が Voldeno CA が保証する証明書を提示しなければなりません。

# Mobile アプリ: クラウド経由の接続

スマートフォンから自宅への安全なリモートアクセスを解除する様子。他の処理より先に認証が行われる

エンドユーザーが Voldeno システムと日常的操作する手段は Mobile アプリです。最も多いのはリモートアクセスです。離れた場所から状態確認や操作をしたい場合、アプリは Hub をインターネットに直接晒すのではなく、Voldeno Cloud 経由 の接続を前提に設計されています。(スマートフォンが Hub と同一 LAN にある場合、mDNS で自動発見する直接 LAN 接続も設計に含まれます。)

接続は相互認証され、Voldeno 独自の CA に固定される。 アプリが行うすべての接続(トークン更新リクエストもライブデータ接続も)は TLS で保護され、アプリが信頼するのは Voldeno CA のみです。端末の汎用信頼ストアにはフォールバックしないため、端末がたまたま信頼する無関係な証明書にだまされません。アプリはホスト名を含め、固定した Voldeno CA に対してサーバー証明書を検証し、自身のクライアント証明書を提示します。Voldeno サーバーは mTLS を要求するためです。データが流れる前に双方がアイデンティティを証明します。

パスワードは使わない。 利用者がペアリングした各設置は、長寿命 refresh token で表現され、iOS Keychain(OS の保護された資格情報ストア)に保存されます。アプリはパスワードを送りません。refresh token を短命 access token と交換し、それで接続を開きます。refresh token は使用のたびにローテーションされるため、盗まれたトークンの価値は限定的です。access token は単独でもすぐ失効します。スマートフォンを紛失した場合、アクセス削除はその設置の失効または再ペアリングで足ります。

認可の節で述べたとおり、これらのトークンは Hub 自身が発行・署名し、利用者の権限を載せます。Hub は各操作で権限を強制します。アプリは権限に応じて読み取り専用か操作可能な UI を出し分けますが、各操作を許可・拒否するのは Hub です。

クラウドが全体をつなぐ。 結果として、クラウドで結ばれた2本の独立した保護リンクがあります。Hub はデバイス固有証明書でクラウドへの相互認証接続を持ち、アプリは相互認証かつトークン認可されたクラウド接続を持ちます。クラウドは、アプリと、そのトークンが有効な特定の Hub の間だけメッセージを中継します。ある設置向けのトークンは別の設置には使えません。Hub はクラウドの背後に留まるため、オープンインターネットから匿名到達はできません。

専用 Mobile アプリは iOS と Android の両方で利用できます。いずれも、ここで説明したクラウド仲介・証明書固定・トークン認可モデルに基づいています。

# 実務上の意味

技術的詳細を除くと、Voldeno のアプローチは、述べやすく裏付けやすい保証をいくつか提供します。

  • 各 Hub は硬件に結び付いた固有アイデンティティを持ち、物理改ざんがあっても抽出から保護されます。
  • 通信路のすべてが暗号化・認証されます。 Hub、インストーラーのツール、Mobile アプリ、クラウド間の設定・制御・ファームウェア通信は、外部者に読まれたり黙って改ざんされたりしません。
  • アクセスは Hub が発行・強制する署名付き短命トークンで管理 され、クライアントが不正でも権限は維持されます。
  • ファームウェアは密かに置き換えられません。 更新は署名され、デバイス上で検証されるため、Hub が Voldeno 以外のソフトウェアを動かすことはありません。
  • Hub はオープンインターネットに晒されません。 リモートアクセスは Hub がクラウドへ接続し、認証・認可されたクライアントだけがそこで出会う仕組みです。
  • 信頼は閉じています。 受け入れるのは Voldeno CA 由来の証明書のみで、システムは厳密に管理されます。

どんなセキュリティ設計も、良い運用習慣の必要性を消しません。インストーラーは Voldeno Studio と Hub ファームウェアを最新に保ち、システム管理に使うアカウントと資格情報を保護すべきです。利用者も同様の注意が有益です。ただしプラットフォームは、デバイスアイデンティティ、暗号化、認証、認可、ファームウェア完全性といった難しい部分を、デフォルトで厳密かつ一貫して処理するよう構築されています。だから Voldeno システムを住まいに置き、長期にわたって信頼できる状態を保てます。

# セキュリティに関するよくある質問

Hub とクラウド間の接続は安全ですか? はい。Hub と Voldeno Cloud は、データ交換前に証明書で相互認証(mutual TLS)し、間の通信はすべて暗号化されます。クラウドは Hub が正規品であることを確認し、Hub は本物の Voldeno Cloud と通信していることを確認します。

ネットワーク上を流れるデータを、誰かが読んだり改ざんしたりできますか? いいえ。Hub、Voldeno Studio、Mobile アプリ、クラウド間の設定・制御・ファームウェア通信は転送中に暗号化されます。盗聴者には暗号化データしか見えず、改ざんされた通信は拒否されます。

偽または改ざんされたファームウェアが Hub にインストールされるのを何が防ぎますか? すべてのファームウェアイメージは Voldeno CA が署名し、Hub はインストール前にデバイス内証明書に対して署名を検証します。未署名、改ざん、破損のイメージは Hub が拒否します。Hub が動かすのは Voldeno が実際に生産したファームウェアだけです。

誰かが Hub に物理アクセスしたらどうなりますか? Hub のマイクロコントローラはリードアウト保護有効(RDP Level 1)で動作します。有効中、接続されたデバッガによる内部フラッシュの読み取り・消去・書き込みはチップが拒否するため、手元にあってもファームウェアの読み出しや保存鍵の抽出はできません。保護解除はフラッシュの一括消去をトリガーするしかなく、内容は破棄され露出はしません。

各 Hub は固有ですか、それとも鍵を共有しますか? 各 Hub は製造時に Voldeno CA が署名した固有の証明書と秘密鍵を持ち、そのチップに結び付いています。2台が同じアイデンティティを共有することはなく、1台の侵害が他を晒しません。

アプリはパスワードなしでサインインしますが、安全ですか? パスワードの代わりに、アプリは端末の保護された Keychain に長寿命トークンを保持し、各セッションで短命 access token と交換します。これらのトークンは Hub 自身が発行・署名し、権限を載せます。長寿命トークンは使用のたびに置き換えられます。トークンは Hub 自身の鍵で署名されるため、偽造や改ざんはできません。

外出先からスマートフォンで操作できますか、安全ですか? はい。アプリは Hub をインターネットに晒さず、Voldeno Cloud 経由で接続します。接続は暗号化・相互認証され、Voldeno 独自の認証局に固定されます。クラウドは、認可された特定の Hub との間だけアプリの通信を中継します。Hub は各操作について、アプリが許可されているかを独立して確認します。

Voldeno CA とは何ですか、なぜ重要ですか? Voldeno CA は Voldeno 独自の非公開認証局です。Hub、クラウド、アプリを識別する証明書を発行し、ファームウェアに署名します。プラットフォームが信頼するのはこの CA 発行の証明書のみで、システムに入れるデバイスとサービスの集合を厳密に管理できます。

(私やインストーラーが)セキュリティ維持のために何かする必要がありますか? プラットフォームはデバイスアイデンティティ、暗号化、認証、認可、ファームウェア完全性を自動で処理します。利用者側は運用上の基本 hygiene で足ります。Voldeno Studio と Hub ファームウェアを最新に保ち、システム管理に使うアカウントと資格情報を保護してください。

# 用語集

Certificate(証明書) - デバイスまたはサービスのデジタルな「身分証明書」。アイデンティティと暗号鍵を含み、信頼できる機関が署名するため、他者が真正性を検証できます。Voldeno Hub、クラウド、Voldeno Studio、Mobile アプリはそれぞれ証明書を持ちます。

Certificate Authority(CA、認証局) - 証明書を発行・署名する信頼機関。Voldeno は自社の非公開 CA(Voldeno CA)を運用するため、承認したデバイスとサービスだけがシステムに信頼されます。

Certificate pinning(証明書固定) - 端末や PC がデフォルトで信頼する長い CA リストではなく、特定の既知の認証局(ここでは Voldeno CA)だけを信頼すること。信頼を Voldeno 独自の PKI に絞り、それ以外では「有効」な証明書によるなりすましを防ぎます。

Private key(秘密鍵) - デバイス資格情報の秘密側で、証明書と対になります。デバイスから出してはいけません。Voldeno Hub では秘密鍵は保護された内部メモリに保存され、ネットワーク経由で送られません。

TLS(Transport Layer Security) - ネットワーク上のデータを暗号化する標準技術。銀行 Web サイトを守るのと同系統の保護です。通信を非公開にし、改ざんを検出します。

mTLS(mutual TLS) - 片側だけでなく双方が証明書でアイデンティティを証明する、より強い TLS の形態。Voldeno は Hub と Cloud、アプリと Cloud、Studio と Cloud の接続に mTLS を使い、データ交換前に相互検証します。

Access token / refresh token - 毎回パスワードを送る代わりに、クライアントは安全なストレージに長寿命「refresh token」を保持し、短命「access token」を取得します。実際にセッションを認可するのは短命トークンなので、漏れてもすぐ失効します。refresh token は使用のたびに置き換えられます。

Token signing(ES256) - 各トークンは Hub の秘密鍵と ES256 アルゴリズムで作られたデジタル署名で封印されます。受信側は Hub の証明書で検証するため、Hub の鍵なしでは偽造・改ざんできません。Hub の証明書は Voldeno CA 発行であり、トークンを Voldeno の信頼の根に結び付けます。

Permissions(authorization、権限) - トークンが許される具体的な操作(例: 状態の読み取りとコマンド送信)。権限は access token 内に載り、Hub が各リクエストで強制します。アプリ UI が何を提供するかとは独立です。

Firmware(ファームウェア) - Hub 本体上で動くソフトウェア。デバイスを制御するため完全性が重要で、Voldeno ファームウェアはインストール前に署名・検証されます。

Firmware signing / signature verification - Voldeno CA がファームウェアイメージに付ける暗号的封印。更新前に Hub がこの封印を確認し、一致しなければ更新を拒否します。未承認または改ざんファームウェアのインストールを防ぎます。

RDP(Readout Protection), Level 1 - Hub の STM32H7 マイクロコントローラの保護機能。有効時、接続デバッガや代替ブートモードから内部フラッシュへのアクセスをブロックします(読み取り・消去・書き込みはすべてバスエラー)。ファームウェアと鍵は読み出せません。保護解除はフラッシュ消去のみで、内容は破棄されます。デバッグインターフェースの永久無効化(Level 2)は別の不可逆手順で、Voldeno は依存しません。

Keychain - iOS 上の機密資格情報用 Apple 組み込み暗号化ストレージ。Voldeno アプリは各設置の長寿命トークンを通常のアプリストレージではなくここに保持します。

Cloud relay / broker(クラウド中継) - 2デバイスが直接つながらず、それぞれが中間の信頼サーバーに接続し、サーバーがメッセージを中継するモデル。Voldeno はリモートアクセスにこれを使い、アプリと Hub がそれぞれ Voldeno Cloud に接続し、認証・相互認可された当事者間だけ通信を中継します。

Voldeno Hub - 設置現場でインストールを実行するオンプレミスコントローラ。

Voldeno Studio - インストーラーがデバイス設定、ロジック構築、プロジェクトデプロイ、ファームウェア管理に使うデスクトップアプリケーション。

Voldeno Cloud - 設置へのリモートアクセスを可能にするバックエンドサービス。

Hub、Voldeno Studio、Voldeno Cloud、ファームウェア更新、Voldeno CA など、システム各所のセキュリティを、インストーラーと関心のある利用者向けに説明します。