要約
このアプリケーションノートは新しい視点、つまり情報技術(IT)という視点から物理的なアクセス制御の鍵を考察します。このアプリケーションノートでは、さまざまなタイプの鍵技術(機械式、磁気式、接触式、RFID)を比較し、これらの強度と欠点について評価しています。チャレンジ&レスポンス認証の鍵は、従来の静的なデータ鍵の制約を取り除くものです。チャレンジ&レスポンスのコンセプトについて説明し、適切な鍵を提示して比較します。最後に、チャレンジ&レスポンス認証が静的データに依存したコンセプトよりも安全である理由について説明します
このバージョンのアプリケーションノートは、2011年3月15日にEmbedded.comが発行したものです。
はじめに
何千年もの間、人々はロック(錠)と鍵を使用して住居や財産へのアクセスを制御してきました。技術が変化するにしたがって、ロックも変化しました。今日、いまだに機械式のロックが世界を支配しています。しかし、自動車の鍵や社員バッジをよく見るとわかるように、アクセス制御の領域に電子技術がすでに入り込んでいます。
このアプリケーションノートでは、アクセス制御の鍵(機械式、磁気式、接触式、RFID)について考察します。また、チャレンジ&レスポンス認証(チャレンジ、シークレット、メッセージ認証コード(MAC))について、およびSHA-1アルゴリズムの重要な役割について説明します。最後に、この記事は、チャレンジ&レスポンス認証がより安全である理由について説明します。
情報技術(IT)デバイスとしての鍵
厳密に論理的な観点から述べると、すべての鍵はROM (読取り専用メモリ)のような情報を保存しています。ロックは鍵のデータを読み取って、ロックの基準を満たせばアクセスを許可します。機械式の鍵の物理的なサイズと細部の最小寸法(すなわちインクリメント)によって利用可能なコードスペースが制限されます。鍵方式では、数百または数千の鍵を重複せずに製造可能ですが、正確な数はその方式によって決まります。磁気ストライプ式の鍵カードは微小な鉄ベースの磁気粒子に情報を保存します。磁気ストライプは、それぞれが500ビットを超える複数の平行トラックに書込み可能です。接触式の電子トークン鍵(たとえばiButton®デバイスやチップカード)はシリコンチップに情報を保存します。利用可能なビット数は64の場合もあれば(DS1990A)、ほとんど無制限の場合もあります。非接触式の鍵はわずか26ビットを備えたモデルから始まり(Wiegand Public Format (PDF)を参照してください)、実質的に上限はありません。磁気ストライプ式の鍵カードはホテルの部屋への入室によく利用されています。電子トークン鍵は接触式または非接触式にかかわらず、社員バッジによく使用されています。
現状および問題
実際のロック解除は、機械式または電子式にかかわらず、ロックに内蔵された基準を満たす静的データの存在にのみ基づいています。電子ロックでは、このデータは単純な識別番号か数百または数千のメモリビット(たとえば磁気ストライプまたはメモリチップカード)、あるいは両方の組み合わせになります。鍵の持つ情報が少なければ少ないほど、所定のロックは多くの鍵を記憶することができます。
機械式の鍵は多くの方式とサイズで利用可能です¹。ロックの「所有者」に不正な鍵の複製に対する防御策はありません。また、正しい鍵でなくても、安価なツールを入手してロックを解除することができます²。さらに、コードスペースが限られているため、鍵の一意性は保証されていません。時間とともに、鍵の微細構造はすり減り、ロックの解除は次第に困難になります。
磁気ストライプの鍵カードでは、コードスペースの問題はありませんが、これらは容易に複製²または消去可能です。これらのカードは摩耗や裂傷で劣化します。
ROMベースの電子鍵はエミュレーション(再生)およびコピーされます。これは接触式の鍵²やRFIDの鍵²にも当てはまることです。Wiegandフォーマットやその派生商品(26ビットまたは36ビット)に基づいたアプリケーションを除いては、電子鍵には各鍵に一意なコードを保証するのに十分なコードスペースがあります。
次の段階のセキュリティ:チャレンジ&レスポンス認証
従来の電子ロックは静的データに基づいており、鍵がアクセスすることができるためには、このデータを生成する必要があります。この不変の基準のため、複製した鍵によるアクセスが容易に可能になりました。鍵がロックから予測不能なデータの問い合わせを受け、受け取ったデータによって決定するデータパターンでレスポンスすることが可能であれば、従来と比べてはるかに高いレベルのセキュリティが実現します。このプロセスは公然と読取り可能なデータと、鍵およびロックのみが知る隠されたデータを必要とします。
ロックが鍵に送信する予測不能なデータに対応する専門用語はランダムチャレンジです。隠されたデータはシークレットと呼ばれ、レスポンスは一般に、メッセージ認証コード(MAC)と呼ばれます。このメッセージはチャレンジ、公然と読取り可能なデータ、シークレット、および定数(パディング)で構成されます。鍵の信憑性を検証するため、ロックは同じチャレンジ、鍵から読み出したデータ、シークレット、および定数を使用してMACを算出します。ロックの算出したMACが鍵のレスポンスのMACと一致すれば、ロックは鍵が本物であることを認識します。図1に示していますが、このプロセスの専門用語はチャレンジ&レスポンス認証です。信憑性に加えて、鍵内の公然と読取り可能なデータもロックの基準に合致すれば、ロックはアクセスを許可します。
図1. チャレンジ&レスポンス認証のデータフロー
暗号学では、メッセージから固定長のMACを生成するアルゴリズムは一方向ハッシュ関数と呼ばれます。「一方向」とは、生成された固定長MACから、通常はMACよりも大きなメッセージを推論することが非常に困難であるということを示しています。その一方で、暗合を用いると、暗号化されたメッセージのサイズは元のメッセージに比例します。
十分に吟味されて国際的に認定された一方向ハッシュアルゴリズムはSHA-1です。これは米国国立標準技術研究所(NIST) が開発しました。SHA-1は国際規格ISO/IEC 10118-3:2004へと発展しました。アルゴリズムの基礎となる数学はNISTのウェブサイトで公開されて利用可能です。SHA-1の代表的な特性は、以下のとおりです。
- 不可逆性 MACに対応する入力を算出することは、計算上不可能です。
- 衝突耐性 あるMACを生成する入力メッセージを複数発見することは不可能です。
- 高いアバランシェ効果 入力に対するいかなる変更も、MAC結果に大きな変化をもたらします。
チャレンジ&レスポンス認証の鍵
電子式の鍵のロックは接触式または非接触式にかかわらず、世界中の複数の企業によって開発され、多くの数が配備されています。これらの主な部品はファームウェア(すなわちソフトウェアプログラム)を内蔵したマイクロコントローラ、およびロックが受け入れる鍵の基準(たとえば識別番号やテキスト文字列)を保存するメモリです。設計では、ロックは、チャレンジ&レスポンスの鍵を処理するためのすべてのリソースを備えています。ロックに必要なことは、ファームウェアのアップグレードのみです。
SHA-1エンジンを搭載した、チャレンジ&レスポンスiButtonのDS1961Sは、2002年に発売されました。非接触式デバイスである、ISO 15693準拠のセキュアメモリフォブのMAX66140が2010年に続きました。これらの通信インタフェースや形状は大きく異なりますが、両方のデバイスには多くの共通点があります。表1に詳細を示します。これらはどちらも、64ビットのシークレットを使用してSHA-1認証をサポートし、またユーザー設定可能な1024ビットのEEPROMを備えています。シークレットは読込みまたは算出可能であり(このステップでは認証は不要)、また書込み保護が可能です。メモリへの書込みには認証が必要です。すなわち、デバイスに保存されたシークレットを知っている場合にのみ、書込み可能です。最新の開発として、DS1961Sで使用されていた3バイトのチャレンジに対して、MAX66140は5バイトのチャレンジを使用しています。MAX66140はメモリの書込みサイクルカウンタも搭載しています。このカウンタによって改竄の検知が容易になるため、デバイスのアプリケーションは、アクセス制御のみならず閉ループの金融システムにも拡張することができます。
表1. DS1961SとMAX66140の比較
特性 | DS1961S | MAX66140* |
形状 | iButton、F3およびF5サイズ | プラスチックキーフォブ |
通信インタフェース | 接触式、1-Wire® プロトコル | ワイヤレス、13.56MHz ISO 15693およびISO 18000-3モード1 |
データレート | 標準速度:最大15.3kbps、オーバードライブ速度:最大125kbps | 低速:下り1.6kbpsで上り6.6kbps、高速:上りと下りで26kbps |
ID# | 64ビット1-Wire ROM ID | 64ビットUID、ISO準拠 |
認証方法 | 160ビットSHA-1 MAC | 160ビットSHA-1 MAC |
64ビット(読取り保護) | 64ビット(読取り保護) | |
シークレット生成 | 読込みと算出、オプションの書込み保護(個別のレジスタ書込みアクセスによる) | 読込みと算出、オプションの自動書込み保護 |
ユーザーメモリ | 32バイトの4ページで構成された1024ビット、8バイトのブロックでの書込みアクセス、ページ0のみまたは4ページのすべてについてユーザー設定可能な書込み保護、ページ1についてのみユーザー設定可能なEPROMエミュレーションモード | 8バイトの16ブロックで構成された1024ビット;4ブロックが32バイトのページを形成、8バイトのブロックでの書込みアクセス、個別のブロック書込みサイクルカウンタ、個別のブロックごとにユーザー設定可能な書込み保護、個別のページごとにユーザー設定可能なEPROMエミュレーションモード、ページ3についてユーザー設定可能な読取り保護 |
書込み認証MAC | ID番号、ページ番号、ページデータ、新規データ、シークレット、定数を含む | ID番号、ページ番号、ページデータ、新規データ、シークレット、書込みサイクルカウンタ、定数を含む |
読取り認証MAC | ID番号、ページ番号、ページデータ、3バイトのチャレンジ、シークレット、定数を含む | ID番号、ページ番号、ページデータ、5バイトのチャレンジ、シークレット、定数を含む |
チャレンジ&レスポンス認証がより安全である理由
チャレンジ&レスポンス認証システムを構築して維持するために、鍵プログラマ(すなわち電子デバイス)が必要であり、またシステム構想によってはマスター鍵が必要です。鍵プログラマは、シークレットを生成するアルゴリズムと、ベンダー固有のデータ仕様を理解している必要があります。システムがこの機能をサポートしている場合、マスター鍵を使用してロックに保存されている既知の鍵ID番号リストを更新することになります。あらゆるセキュリティシステムと同様に、不正な使用を防ぐため、これらのツールに対する物理的なアクセスは厳格に管理する必要があります。
新しい鍵の作成または鍵の複製
認可された鍵管理者は、鍵プログラマを使用して、空の鍵に有効なシークレットをインストールし、次に有効なデータをメモリにプログラム設定します(複製の場合:データは他の鍵からコピーされます)。新しい鍵はこれで使用可能になります。ロックのファームウェアによっては、マスター鍵を使用してロックに指示を与え、新しい鍵のID番号を既知の鍵のリストに追加することが必要となる場合があります。ハッカーは空の鍵に任意のシークレットを読み込むことで、公然と読取り可能なメモリに有効なデータをプログラム設定することができます。しかし、この鍵はチャレンジ&レスポンス認証に失敗します。このシークレットはシステムでは有効でないためです。
有効な鍵のアクセス権の変更
認可された鍵管理者は、鍵プログラマを使用して、アクセス権変更のため鍵のメモリ内のデータを更新します。鍵のシークレットを知らない場合、または適切な機器へのアクセス権がない場合、ハッカーは鍵のメモリへの書込みに必要な書込み認証MACを生成することができません。
鍵の使用停止
認可された鍵管理者は、鍵プログラマを使用して、鍵のメモリ内容を「工場出荷時状態」、または無効であることが容易に認識されるようなその他のパターンに変更します。鍵のシークレットはそのままの状態に保つことができます。ロックが既知の鍵のリストを維持している場合、このロックから無効な鍵のID番号も削除することをお勧めします。鍵は後日利用するために再プログラム設定が可能です。ハッカーの選択肢としては、総当たり方式で強引に鍵を消去する方法があります。
鍵のエミュレーションの無効化
次のようなシナリオを考えてみてください。盗聴装置や記録装置を設置することで、ハッカーはロックに有効な鍵を繰り返し提示します。次にハッカーは記録したデータを分析してロックが送信したチャレンジ、および鍵が生成した読出し認証MACを見つけます。ファームウェアが適切に設計されていれば、チャレンジはランダムで、チャレンジとレスポンスのすべての組み合わせを記録することは不可能です。これによってハッカーはあきらめざるを得ません。
安全性設計の貧弱なロックファームウェアでは、固定のチャレンジを使用しているか、少数のパターンリストからランダムにチャレンジを選択しています。これはまさにハッカーが探している弱点です。この場合ハッカーは、有効な鍵のID番号とメモリデータ、ロックが送信したチャレンジ、および対応する読出し認証MACを使用して鍵エミュレータをプログラム設定可能です。ロックが既知の鍵のリストを維持している場合、最も容易な対策はロックのリストからこの鍵を削除することです。このようなリストを使用しないシステムは防御手段がない、というわけではありません。鍵エミュレータを検知するために、ロックの書込みランダムデータをこの用途以外に使用しない鍵内のメモリセクションに配置することが可能です。エミュレータは書込みアクセスを受け入れます。これはエミュレータが書込みアクセスMACの有効性を確認することができないためです。次にロックは、書き込まれたばかりのデータをこのページの読出し認証MACとともに読み戻します。エミュレータはこの動作に対応可能なように準備されていないため有効なMACを生成することができず、エミュレータは暴露されることになります。
漏洩したシークレットの無効化
チャレンジ&レスポンス認証のシークレットとして機能する64ビットのデータは読込みまたは算出可能です。実行可能な最悪の行為は、システムのすべての鍵に同じシークレットを設定することです。このシークレットが漏洩する、または試行錯誤によって発見されると、このシステムのセキュリティは破られます。このため、チャレンジ&レスポンス認証の鍵によって、最初の(すなわち現在の、または読み込まれた)シークレット、部分的なシークレット、メモリページの内の1ページからのデータ、およびデバイス固有の(つまり既知の)定数からシークレットを算出することが可能です。この方法では、シークレットは決して漏洩しません。シークレットは鍵の64ビットID番号を部分的なシークレットとして使用することで、デバイス固有にすることも可能です。1つの鍵のシークレットが漏洩した場合、この特定の鍵が危険にさらされますが、システム全体は危険にさらされません。
結論
電子ロックや電子アクセス制御がすでに導入されている場所では、チャレンジ&レスポンス認証によってセキュリティを大幅に向上することができます。チャレンジ&レスポンス鍵は接触式インタフェースでも、ワイヤレスキーフォブとしても利用可能です。チャレンジ&レスポンス鍵のデータは不正な変更から保護されています。メモリの書込みサイクルカウンタによって改竄を明らかにすることができます。複製されたチャレンジ&レスポンス鍵は、公然と読取り可能なメモリデータが有効な場合でも、認証テストに失敗します。既存の設備をチャレンジ&レスポンス鍵にアップグレードすることは簡単で、新しい鍵を発行し、新しいファームウェアをロックまたはリーダにインストールするだけです。
参考文献
¹ 鍵(ロック):http://en.wikipedia.org/wiki/Key_(lock)
² インターネット検索によって、これらの項目の情報源となり得るものが数百または数千件見つかります。これ自体、チャレンジ&レスポンスセキュリティを使用しない電子ロックの潜在的な問題を示すものです。
{{modalTitle}}
{{modalDescription}}
{{dropdownTitle}}
- {{defaultSelectedText}} {{#each projectNames}}
- {{name}} {{/each}} {{#if newProjectText}}
-
{{newProjectText}}
{{/if}}
{{newProjectTitle}}
{{projectNameErrorText}}