2020年1月17日

軽量デバイスで求められる軽量暗号機能

今や、一見コンピューターに見えない小さなコンピューターがあらゆる場所にあります。これらのデバイスにも暗号化が必要ですが、既存の標準を実装することはできません。NISTでは、これらのデバイス向けのセキュリティ標準の策定に取り組んでいます。

私たちを取り巻く世界では、ネットに接続されたコンピューティングデバイスが増え続けています。そのようなデバイスの存在に気付かないこともあるでしょう。これらは小さなコンピューターで、自動車、照明、警報装置、流通経路で在庫管理に使用されるRFIDタグ、産業設備の環境センサーなどを動かしています。

私たちは、これらのデバイスをIoTと呼んでいます。IoTデバイスのサイズや複雑さのレベルは多岐にわたっています。完全なLinuxサーバーを搭載するデバイスもあれば、シンプルな独自OSを搭載し、従来のコンピューターにあるようなファイルシステム、表示インターフェイス、その他のコンポーネントを備えていないデバイスもあります。効率化のために、必要な機能だけが搭載されているのです。

IoTデバイスでは確実にセキュリティが問題となりますが、セキュリティを確保するために業界が取り組んでいる主なアルゴリズムでは、これらのデバイスの性能を超えたコンピューティング性能が必要です。デバイスの心臓部に使用される16ビット、8ビット、さらには4ビットマイクロコントローラーの活発な市場がありますが、多くの場合、IoTデバイスは大量に配置されるので、これらのマイクロコントローラーは実用的で安価になるようシンプルに設計されています。

セキュリティに取り組む際に問題となるのは、これらのデバイスが搭載するCPUやRAMに最新の暗号ルーチンを実行する余力がないことです。必要な電力が問題になることもあります。

数年前に、アメリカ国立標準技術研究所 (NIST) は、この問題に対処するために軽量暗号というプロジェクトとグループを立ち上げました。このプロジェクトの目標は、「現在のNIST暗号標準に対応できない、制限された環境に適した軽量暗号アルゴリズムを公募、評価、標準化」することです。

米国商務省に属するNISTでは、標準の研究開発を行っており、その対象分野は度量衡から中性子の利用やコンピューターのセキュリティまで多岐にわたります。この組織には、アメリカ合衆国憲法で「連邦議会は … 度量衡の標準を定める権限を有する」のように 明確に規定された権限があります。数か月前に、私は量子コンピューティングに対抗できる暗号標準の開発というNISTの取り組みについて記事を書きました。量子コンピューティングとは、現在の主な暗号アルゴリズムの多くを弱体化させる新しいコンピューティングパラダイムです。

 

制約デバイスとは


簡単に言えば、制約デバイスとは、CPUやメモリの容量が従来の暗号ルーチンを実行するために十分ではないデバイスです。誤解のないように言うと、NISTによれば、従来の標準暗号アルゴリズムを実行できるデバイスでは、引き続きそれらのアルゴリズムを実行すべきです。NISTで承認済みの2つのブロック暗号アルゴリズムは、AES (Advanced Encryption Standard) と TDEA (Triple Data Encryption Algorithm; 一般にはトリプルDESや3DESと呼ばれる) です。AESでサポートするキーは128ビットという短いものなので、一部のマイクロコントローラーベースのアプリケーションでは利用できる可能性があります。

暗号による保護は、すべての「軽量」デバイスで必須であるわけではありません。対象となるのは通信を行うデバイスのみです。一般的な電子体温計を考えてみましょう。このデバイスは体温を測って表示してくれます。高い処理能力は必要なく、求められる機能はすべてデバイスに組み込まれています。暗号化の必要はまったくありません。

しかし、より高度な体温計は、患者のデータを収集するデバイスにワイヤレスで体温を送信します。血糖モニタにもデータ送信の機能があります。さらに、ピルカメラの中には、消化器官の画像を、身につけているセンサーを通じて外部の受信機に転送するものがあります。このようなデバイスで通信を暗号化する必要があるかどうかは議論の余地がありますが、少なくとも理論上は役に立つケースがあります。

 

どのように「軽量」なのか


軽量暗号とは、暗号強度が低い実装という意味ではなく、処理能力の要件が低い暗号アルゴリズムのことです。これらのアルゴリズムが適しているのは、比較的シンプルでリソースに制約がある低電力のデバイスです。たとえば、RFIDタグ、センサーノード、スマートカードなどがあります。

このような手法は暗号強度が低いと思われがちですが、その考えは根本的に間違っています。軽量暗号プロジェクトの目標は、対象となる環境に強力な暗号を実装できる手法と実践手順を考案して標準化することです。

軽量であることの定義は、制約だけではありません。このプロジェクトでは、少なくとも直接にはインターネットに接続されていないデバイスが対象になっています。

小さくて低電力のデバイスでも強力な暗号ルーチンを実行することは可能です。Yubikey Nanoを考えてみてください。このデバイスのサイズはオスのUSB-Aプラグの先端と同じくらいですが、強力な非対称暗号関数を実行できるチップを内蔵しています。Yubikey Nanoは認証デバイスですが、この応用例の要件は通常の軽量デバイスとは大きく異なります。価格は50ドルです。

 

従来型の暗号とは非互換


軽量なアルゴリズムは、従来型の関数とは異なっており、互換性もありません。したがって、軽量暗号ソフトウェアを実行している軽量デバイスが従来型のデバイスと通信する必要がある場合、従来型のデバイスで軽量アルゴリズムを実装するか、プロキシ中継デバイスを使用して一方のデバイスからの入力を一度復号化し、別の手法で暗号化したデータをもう一方のデバイスに出力します。

プロキシデバイスは余分な出費であり、複雑さと脆弱性が増えるように思えるかもしれません。そのような場合は、従来型のデバイスで軽量アルゴリズムも実行することになる可能性が高いですが、この領域の他の要素と同じく、実装できるかどうかはアプリケーションに左右されます。

 

1回目の公募


軽量暗号プロジェクトは、業界や学術研究機関、他のNISTグループと協議した後に、標準アルゴリズムに向けた1回目の公募を発表しました。これは包括的な暗号スイートを求めるものではなく、アプリケーションを構築する際に使用される基本アルゴリズムの公募です。  

暗号化を分類する区分の1つは、対称暗号と非対称暗号です。どちらが適しているかは、用途によって違います。対称型ではプレーンテキスト (非暗号化データ) とキーを取得して暗号テキスト (暗号化データ) を生成します。非対称暗号では、公開キーと秘密キー、デジタル証明書を使用して関係者を互いに認証します。インターネットで通常の暗号化通信を行うとき、たとえばブラウザからHTTPSサイトに接続する場合などは、非対称暗号を使用して、あるサイトから別のサイトへの認証や、サイト間での互いの認証を行い、暗号キーを交換します。実際にデータを暗号化する作業では、対称アルゴリズムが使用されます。

NISTの要件には、対称関数とハッシュ関数が使用されるAEAD (Authenticated Encryption with Associated Data) アルゴリズムが含まれていました。NISTは少なくとも現段階では非対称暗号に取り組んでいません。制約デバイスでは難しい課題が生じるためです。多くの場合、AEADでは、非対称認証とキー交換という欠落している機能を実行するために、暗号化キーと暗号のnonce (ランダムに生成される値) の一意の組み合わせを使用して、データの信頼性と機密性を確保します。キーとnonceの組み合わせは、「リプレイ攻撃」を防ぐために一意である必要があります。この攻撃では、有効なデータ転送が攻撃者によって繰り返されます。nonceを使用すると、同じプレーンテキストであっても、暗号化のたびに暗号テキストは変わります。

AEADの要件では、暗号機能で4つの入力、つまり、プレーンテキスト、関連データ (暗号化されないヘッダー)、固定長のnonce、固定長のキーを取得して、暗号テキストを出力します。復号化機能 (復号化検証とも呼ばれます) では、暗号テキスト、関連データ、nonce、キーを取得して、暗号テキストが有効な場合にのみ、プレーンテキストを出力します。

キー配布の問題は残っていますが、予想される軽量アプリケーションではそれほど問題にはなりません。たとえば、自動車ではキーをデバイス内にあらかじめ組み込んでおくことは合理的です。このようなシステムはインターネットに接続されておらず、外部の者がキーを利用できる明らかな方法がないからです。ただし、現時点ではわかっていない方法があるかもしれません。

アプリケーションと標準の特徴により、軽量暗号では、一般的ではない攻撃の1つであるサイドチャネル攻撃が脅威となる可能性があります。サイドチャネル攻撃では、タイミング、電力消費、電磁波の放射といった暗号実装の副作用を利用して、実装自体の機密情報を見つけ出します。

 

軽量実装では、キーのサイズや他のパラメーターが従来の実装よりも小さいので、攻撃者が暗号化デバイスから大量のデータを収集でき、さらにオフラインでより強力なハードウェアを使用してそのデータをブルートフォース手法で分析できる場合、攻撃が成功するチャンスは、従来のアプリケーションよりも軽量アプリケーションで高くなるでしょう。

サイドチャネル攻撃に対する耐性を実現する方法について説明している研究があります。NISTの要件では、この形式の攻撃に対する防御方法を公募しています。

同様の問題は、フォールト攻撃でも発生します。この攻撃では、演算中にクラッシュや他のエラーを発生させて、プログラムの動作に関する情報を見つけ出します。特に問題となるのは、攻撃者がデバイスに物理アクセスできる場合です。NISTの要件では、フォールト攻撃に対する耐性も公募しています。

ハッシュ関数は、暗号処理の全体にわたってさまざまな目的で使用されています。この関数は、入力として可変長のデータ文字列を取得し、固定サイズの値を出力します。これをダイジェストまたはハッシュと呼びます。入力文字列が同じ場合、常に同じ出力ハッシュが生成されます。さらに、入力がわずかに異なるだけで出力は大きく変化します。同一のハッシュ値を出力するような別の入力を構成することは計算上不可能です。そのため、特に非対称暗号で、ハッシュ値はしばしば入力テキストの代わりに使用されます。

現在主流のハッシュ関数はSHA-2 (Secure Hash Algorithm 2) で、数年前にSHA-3関数が標準化されました。しかし、これらのハッシュ関数の内部状態の要件は、制約デバイスの処理能力を上回る可能性があります。そのため、NISTは制約デバイス向けの新しい提案を公募しています。

 

1次候補


新しい標準の公募は、コミュニティから多くの注目を集めました。さまざまな理由で要件を満たさないものを除いた後に、56の候補が残りました。

これらの候補を見ると、多様なアプローチや主張があることがわかります。Elephant、Liliput、Thank Goodness It’s Friday (TGIF) のような面白い名前が付いたものもあります。

 

現在の状況


複数の候補がなんらかの形で承認されても驚かないでください。軽量暗号の標準で想定される用途は多岐にわたっており、その要件は状況によって変わります。まだ初期段階ですが、NISTは開発者に複数のツールを提供し、各自の設計でトレードオフを行えるようにすることが必要になるかもしれません。

あなたが従来型のIT技術者であれば、近いうちに軽量暗号の実装に直接取り組む可能性は低いでしょう。しかし、最近ではあらゆるもののセキュリティが問題になっているので、ますます複雑なデバイスが登場することを予想し、それらのデバイスが適切に保護されているかどうか注意すべきです。保護されている場合、軽量暗号が活用されているかもしれません。

NISTのKerry McKay氏に感謝します。彼は、軽量暗号の問題とプロセス、さらにワーキンググループについて理解することを手助けしてくれました。

この記事/コンテンツは、記載されている個人の著者が執筆したものであり、必ずしもヒューレット・パッカード エンタープライズの見解を反映しているわけではありません。

enterprise.nxt

ITプロフェッショナルの皆様へ価値あるインサイトをご提供する Enterprise.nxt へようこそ。

ハイブリッド IT、エッジコンピューティング、データセンター変革、新しいコンピューティングパラダイムに関する分析、リサーチ、実践的アドバイスを業界の第一人者からご提供します。