S1.1-11

S1.1-11 では、IoT 製品のストレージに保存される守るべき情報資産をセキュアに保存することを要求しています。

製品のストレージにある機密セキュリティパラメータは、製品によってセキュアに保存されなければなりません。

守るべき情報資産がどういったものを指すかについては、評価ガイドおよびチェックリストをご参照ください。

13.1. ストレージに保存する守るべき情報資産をリストアップする

まず、システムで取り扱う守るべき情報資産を特定し、リストアップします。

13.1.1. 情報資産の分類

守るべき情報資産を以下の観点で分類します。

機密性保護が必要な情報資産

外部に不正に漏えいしないように保護する必要がある情報。

  • 暗号化鍵
  • 認証情報(パスワード、証明書など)
  • 個人情報
  • センサーデータ(機密性が求められる場合)

完全性保護が必要な情報資産

改ざんされないように保護する必要がある情報。

  • 設定ファイル
  • ファームウェアイメージ
  • ログファイル
  • デバイス固有の識別情報

真正性確認が必要な情報資産

情報資産の作成者や提供者をなりすまされないようにする必要がある情報。

  • デジタル署名
  • 証明書
  • 認証トークン

13.2. Armadillo における守るべき情報資産

標準状態の Armadillo では、以下の情報資産が守るべき情報資産として挙げられます。

  • 通信機能に関する設定情報

    • /etc/NetworkManager/system-connections/ 以下のファイル

13.3. リストアップした守るべき情報資産の保存先を確認する

特定した情報資産について、実際の保存先を確認します。

13.3.1. Armadillo における標準的な保存先

・オンボード eMMC

Armadillo の標準構成では、主にオンボード eMMC に情報資産を保存します。

「Armadillo における守るべき情報資産」で挙げた標準状態の ABOS における守るべき情報資産も eMMC 上に保存します。

・外部ストレージメディア

SD カードや USB メモリ等の外部ストレージメディアも使用可能です。

13.4. Armadillo 上のストレージ以外にある守るべき情報資産の保護対策を確認する

外部ストレージメディアに保存される情報資産については、以下の保護対策を検討します。

13.4.1. 想定される脅威

JC-STAR★1では、以下のような非正規のアクセス方法による脅威を想定しています。

  • マルウェアが不正な権限でファイルを窃取
  • 廃棄された IoT 機器のストレージに直接アクセス
  • スクリプトキディレベルの攻撃

13.4.2. セキュアな保存の実現方法

以下のいずれかに類する保護対策またはそれ以上の対策により「セキュアな保存」を実現します。

セキュアな保存の実現方法のために使用する暗号化方式、署名方式、ハッシュ関数については、以下の資料を参照してください。

13.4.2.1. 評価項目1: 暗号化による機密性保護

機密性の保護が必要な守るべき情報資産は、「電子政府における調達のために参照すべき暗号のリスト(CRYPTREC 暗号リスト)」のうち「電子政府推奨暗号リスト」に記載の暗号技術を採用した暗号化方式によって暗号化された上で保存します。

Armadillo では、セキュアエレメントである SE050 を使用することで、セキュアな暗号化を実現できます。 SE050 は、暗号鍵の生成や管理を安全に行うことができ、機密性の高い情報を保護するための強力な手段となります。

秘密鍵は SE050 内で安全に管理され、外部に漏洩することはありません。 そのため、もし暗号化したファイルと SE050 内の秘密鍵にアクセスする参照鍵が搾取された場合でも、暗号化されたデータを復号することはできません。

以下にコンテナ上で SE050 を使用して暗号化を行う例を示します。

まず、コンテナ自動起動用設定ファイルを作成します。

[armadillo ~]# vi /etc/atmark/containers/plug-and-trust.conf
set_image docker.io/alpine
add_armadillo_env
add_devices "${AT_SE_PARAM%:*}"
add_volumes /etc/apk:/etc/apk:ro
set_command sleep infinity

図13.1 plug-and-trust.confファイルの作成


ベースとなるコンテナイメージをプルします。

[armadillo ~]# abos-ctrl podman-rw pull docker.io/alpine

図13.2 alpine コンテナのインストール


作成したコンテナ自動起動用設定ファイルを使用して、コンテナを起動します。

[armadillo ~]# podman_start plug-and-trust
[armadillo ~]# podman exec -it plug-and-trust sh

図13.3 コンテナの起動


コンテナの中で必要なパッケージをインストールして、環境設定を行います。

[container /]# cd
[container ~]# apk add se05x-tools plug-and-trust-tools

図13.4 必要パッケージのインストール


[container ~]# export OPENSSL_CONF=/etc/plug-and-trust/openssl11_sss_se050.cnf
[container ~]# export EX_SSS_BOOT_SSS_PORT="$AT_SE_PARAM"

図13.5 環境変数の設定


正しく SE050 が動作しているか確認します。

[container ~]# se05x_GetInfo
: (省略)

図13.6 SE050 動作確認


SE050 内に保存する RSA 鍵ペアを生成します。

[container ~]# openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:3072
[container ~]# openssl pkey -in private.pem -pubout -out public.pem

図13.7 RSA 鍵ペア生成(3072 ビット、128 ビットセキュリティ)


SE050 に秘密鍵を登録します。 登録した秘密鍵は、ルートファイルシステム上から削除します。

[container ~]# se05x_setkey -f 0x10 private.pem "$AT_SE_PARAM"
[container ~]# rm private.pem

図13.8 秘密鍵の SE050 登録と削除


登録した秘密鍵を参照するための参照鍵を生成します。

[container ~]# se05x_getkey 0x10 refkey.pem "$AT_SE_PARAM"
[container ~]# ls
refkey.pem public.pem

図13.9 参照鍵の生成


ここからは、 ATDE など Linux OS の PC 上での操作となります。

公開鍵 public.pem を ATDE に転送後、OAEP パディング方式でデータを暗号化します。

[ATDE ~]# echo "This is test" > message.txt
[ATDE ~]# openssl pkeyutl -encrypt -in message.txt -out message.enc -pubin -inkey public.pem -pkeyopt rsa_padding_mode:oaep
[ATDE ~]# ls
message.enc message.txt public.pem

図13.10 公開鍵による暗号化


上記で暗号化したデータを Armadillo に転送し、 SE050 による復号を試してみます。 暗号文 message.enc を Armadillo に転送後、message.enc を以下のコマンドで復号します。

[container ~]# openssl pkeyutl -decrypt -in message.enc -out message.dec -inkey refkey.pem -pkeyopt rsa_padding_mode:oaep
[container ~]# cat message.dec
This is test

図13.11 SE050 秘密鍵による復号


上記の例では、message.enc と refkey.pem が搾取されても、refkey.pem は Armadillo の SE050 内の秘密鍵への参照鍵にすぎないため、他のデバイスでは復号できません。

SE050 についての詳細は製品マニュアルを参照してください。

13.4.2.2. 評価項目2: デジタル署名による完全性保護

完全性の保護が必要な守るべき情報資産は、「電子政府推奨暗号リスト」に記載の暗号技術を採用した署名によってデータの完全性が確認できる形で保存します。

13.4.2.3. 評価項目3: ハッシュ関数による完全性保護

完全性の保護が必要な守るべき情報資産は、「電子政府推奨暗号リスト」に記載の暗号技術を用いたメッセージダイジェストによってデータの完全性が確認できる形で保存します。

13.4.2.4. 評価項目4: セキュア領域での保存

守るべき情報資産を以下のセキュア領域に保存します。

  • 仮想化技術によるセキュア領域
  • OSの機能として提供されるサンドボックス
  • セキュリティチップによるセキュア領域(SE050 等)

13.4.2.5. 評価項目5: 容易に取り外せないストレージでの保存

守るべき情報資産を、IoT 機器に組み込まれた容易に取り外せないストレージ領域にあって、外部から呼び出すインタフェースを経由した直接的なデータの読み書きができない領域に保存します。

Armadillo における守るべき情報資産の保護対策

「Armadillo における守るべき情報資産」で挙げた、標準状態の ABOS における守るべき情報資産は、 以下のような保護対策によりこの評価項目5を満たすため、セキュアに保存されていると判断できます。

  • オンボード eMMC という容易に取り外せないストレージに保存している
  • root および abos-web-admin ユーザしか読み書きできない権限設定をしている
  • root および abos-web-admin ユーザは4章S1.1-02で規定されている強度の高いパスワードで保護している

上記より、守るべき情報資産は容易に取り外せないストレージ領域にあって、外部から呼び出すインタフェースを経由した直接的なデータの読み書きができない領域に保存されていると判断できます。

13.5. 技術文書に保護対策を明記する

S1.1-11の要件を満たすため、技術文書には以下の内容を明示する必要があります。

13.5.1. 記載すべき内容

  • 守るべき情報資産のリスト
  • 各情報資産の保存先
  • 採用した保護対策(評価項目1~5のいずれか)
  • 使用する暗号技術の詳細
  • セキュア領域の実装方法

13.5.2. Armadillo を使用する場合の技術文書記載例

Armadillo の標準構成の場合、以下のように記載できます。

「守るべき情報資産は、Armadillo のオンボード eMMC に保存されます。このストレージは容易に取り外せない構造となっており、root および abos-web-admin アカウントのパスワード強度が保証されています。これにより、外部から呼び出すインタフェースを経由した直接的なデータの読み書きができない領域での保存を実現し、評価項目5の要件を満たしています。」