白書3:1-Wire SHA-1デバイスはなぜ安全なのか

白書3:1-Wire SHA-1デバイスはなぜ安全なのか

著者の連絡先情報

要約

このアプリケーションノートでは、想定される攻撃のシナリオを紹介し、ハードウェアや推奨利用手順においてSHA-1デバイスがどのように攻撃に対抗するかを説明することによって、1-Wire®とiButton® SHA-1デバイスが安全である理由を示しています。1-Wireデバイスによるデータとハードウェアの認証は、アクセス制御や電子マネーなど、さまざまなタイプのサービスアプリケーションで提起される基本概念です。1-Wire/iButton SHA-1デバイスは、暗号的に優れたハッシュを使用し、ランダムチャレンジに基づいたメッセージ認証コード(MAC)を作成することのできる携帯トークンです。これは、上記のサービスアプリケーションにとって理想的な選択肢となります。

はじめに

このアプリケーションノートを読む前に、SHA-1と利用可能な1-Wire SHA-1デバイスの説明について「白書8:1-Wire SHA-1の概要」を見直しておいてください。この白書8でも、電子マネー(eCash)トークンのサービスプロバイダの観点からこれらのデバイスを取り上げています。

このアプリケーションノートでは、起こり得る攻撃シナリオを紹介し、ハードウェアや推奨する使用手順において1-Wireデバイスがどのように攻撃に対抗するかについて説明します。(特殊な用語、コマンド、またはコードについては、わかりやすくするためイタリック体で示しています。)用語の解説については、「白書4:Glossary of 1-Wire SHA-1 Terms」に掲載されています。

攻撃

攻撃とは何か?攻撃とは、システムに侵入してこれを奪い取ろうとするあらゆる悪意ある行為のことです。この行為の動機は、提供されるサービスによって異なります。電子マネーシステム(たとえば自販機の場合など)では、その動機は「ただで間食すること」かもしれません。サービスが極秘扱いの研究室へのアクセス制御である場合、動機はまったく異なる可能性があります。以下の攻撃は、ほぼ、簡単なものから難しいものへと順に並べられています。これらの攻撃はすべて、攻撃者が、サービスの一部である有効なユーザトークンへのアクセスが可能であることを想定しています。つまり、認証秘密が設定されているということであり、またデバイス内のデータが有効であるということになります。

コピー攻撃

「コピー攻撃」とは、サービスの一部であるデバイスから有効なサービスデータをコピーし、サービスの一部かどうかわからない別のデバイスにこのデータを書き込むことによって行われる攻撃です。正しい認証秘密がインストールされていれば、デバイスはサービスの一部となります。この攻撃の目的は、有効なトークンを取得し、このトークンから新たなトークンを作成することによって、2つの有効なトークンを作り出すことです。これは、また、IDや金銭価値(eCash)などの属性を別のデバイスにコピーすることで、より多くのお金を生み出す、あるいはアクセス不能な場所にアクセスすることができるようにすることも可能です。

条件 デバイス 攻撃に打ち勝つ方法
標的デバイスはシステムの一部でない(認証秘密が設定されていない) DS1963S、DS1961S、DS2432、DS28E01 標的デバイスの認証秘密が正しい値に設定されていないため、データがどのようなものであってもこのデバイスがサービスによって受け入れられることはありません。
標的デバイスはシステムの一部である(認証秘密が正しく設定されている) DS1963S 標的デバイスは、認証テストに合格します。ただし、サービスデータに埋め込まれた2番目のMAC (メッセージ認証コード)が存在します。このMAC (「サービスデータ署名」)には、SHA-1計算の一部としてトークンの「ROM ID」が含まれています。標的デバイスの「ROM ID」はこれとは異なるため、データは無効と見なされ、デバイスは不合格になります。
標的デバイスはシステムの一部である(認証秘密が正しく設定されている) DS1961S、DS2432、DS28E01 標的デバイスは、データをデバイスに書き込むには有効なMACを必要とします。攻撃者はこの秘密を知らないため、デバイスへの書込みは不可能になります。

反射攻撃

「反射攻撃」の攻撃者は、有効なデバイスのサービスデータからコピーを作成します。次に攻撃者は、eCashやその他の使用領域を使い果たします。その後、保存したデータを元のデバイスにコピーします。このようにして、古いデータが「再利用」されます。

条件 デバイス 攻撃に打ち勝つ方法
なし DS1963S 安全なデータのために使用される各ページには、読取り専用で非ロールオーバ式のページ書込みサイクルカウンタが関連付けられています。デバイスは、認証MACを生成するために正しい秘密を引き続き所有しますが、サービスデータに埋め込まれた2番目のMAC (サービスデータ署名)は無効になります。このMACには、書込みサイクルカウンタとそれが常駐するページ番号が含まれています。古いデータを元のページや別のページに書き込んでも無効になります。同じデータを再書込みした場合であっても無効になります。書込みサイクルカウンタが先に進んでいるからです。
なし DS1961S、DS2432、DS28E01 標的デバイスは、書込み保護機能を備えているため、データをデバイスにコピーするには有効なMACを必要とします。攻撃者はこの秘密を知らないため、デバイスへのコピーは不可能になります。

盗聴攻撃

「盗聴攻撃」とは、1-Wire通信を監視し、秘密や複製される可能性のある繰り返しパターンを暴き出すことです。

条件 デバイス 攻撃に打ち勝つ方法
有効なトランザクションの間に1-Wire通信を監視してログ記録 DS1963S、DS1961S、DS2432、DS28E01 サービスの一部であるかどうかを検証するためにデバイスを認証するとき、MAC計算に含めるためのランダムチャレンジが提示されます。このランダム値(salt値)によって、各トランザクションに伴う1-Wire通信のトラフィックは大幅に変更されます。また、保護された環境で秘密をインストールしたときを除き、1-Wire経由で秘密が送信されることは決してありません。

ABA攻撃

「ABA攻撃」とは、2つの異なる金銭SCU (サービス制御ユニット)を別々に操作し、これらを騙して、支払った価値以上の製品を奪い取ろうとするものです。この攻撃は、1番目のSCU 「A」にトークンを提示することから始まります。借方への記入が完了する前にトークンが取り除かれますが、ほとんど完了する直前であるため、SCUは、記入が完了したものと思い込んでいます。ただし、検証は行われていません。これは、1-Wire通信を監視し、適切な時刻にシーケンスに割り込みをかけることによって成し遂げることができるものです。その後、SCU 「A」は、借方への記入が完了したことを検証するためにトークンが再提示されるのを待ちます。トークンは次に、別のSCU 「B」に提示されて借方への記入がすべて完了し、これによって製品が与えられます。次にトークンは1番目のSCU 「A」に戻され、トランザクションの完了を検証することができるようになります。これによって、「A」はだまされて、借方への記入を自分が完了したものと思い込み、再び製品を与えます。したがって、2つの製品が1つの借方記入だけで得られることになります。

条件 デバイス 攻撃に打ち勝つ方法
SCU 「A」で行われるトランザクションは、微妙なタイミングで停止される必要がある DS1963S、DS1961S、DS2432、DS28E01 「トランザクションID」と呼ばれるランダム値は、あらゆる金銭インスタンスを一意なものにするためのサービスデータの一部です。SCU 「A」が、借方記入の完了を再び検証しようとするとき、「トランザクションID」が正しくないため、検証は失敗に終わります。

エミュレーション攻撃

マイクロプロセッサを使用して、1-Wireトークンの動作をエミュレートするものです。エミュレータは、それが実際のデバイスであるかのように、十分高速に1-Wireマスタに応答しなければなりません。以下に示すように、攻撃者が認証秘密を知らない限り、危険はありません。この危険は、秘密計算内の1つの要素としてROM IDを採用することで各認証秘密を一意なものにするという手法(「一意の認証秘密」)によって、さらに低減されます。

条件 デバイス 攻撃に打ち勝つ方法
認証秘密は知られていない DS1963S、DS1961S、DS2432、DS28E01 エミュレート対象のデバイスは、与えられたチャレンジに対して正しいMACを作成することはできないため、サービスの一部として受け入れられることはありません。
認証秘密が知られている DS1963S、DS1961S、DS2432、DS28E01 なし

最大可能データレートでSHAデバイスと通信します。1-Wireマスタ(SCU)は、1ms~2msでSHA計算が行われるものと想定しています。これによって、エミュレータの作成が極めて困難なものとなります。

認証秘密を決して公開または開示しないでください。

総当り攻撃(MAC)

「総当り攻撃」とは、所望の結果を得るために考えうるあらゆる可能性を列挙するという力ずくの攻撃です。この攻撃の各MACは、チャレンジ/レスポンスペアのすべてを列挙し、エミュレータが使用するデータベースに結果を保持します。このため、サービスの一部である有効な1-Wireデバイスにアクセスすることが必要となります。ランダムチャレンジは3バイト長(DS28E01は5バイト長)であり、160万を超える可能なチャレンジ/レスポンスペア(DS28E01は1.1 × 1012ペア)の番号を指定します。得られるSHA-1 MACは20バイト長であるため、3バイトチャレンジによって作成されるデータは、0xFFFFFF (チャレンジ) × 20 (MACのサイズ) = 335,544,300バイト(320MB)になります。このため、事前に計算済みのMACルックアップテーブルを作成し、これをエミュレータが使用できるようにしています。

条件 デバイス 攻撃に打ち勝つ方法
eCashなどの動的データ。デバイスが提示されるたびに、「サービスデータ署名」とともに新しいサービスレコードが作成されて書き込まれる DS1963S、DS1961S、DS2432、DS28E01 新しいサービスレコードは、トークンに書き込まれた後、再び読み取って認証する必要があります。新しいサービスレコードの認証用として異なるMACが存在するため、エミュレータはこのMACも知っておく必要があります。サービスレコードには「トランザクションID」と呼ばれるランダム値を含める必要があります。これによって、エミュレータは、新しいサービスレコードを予測することができなくなり、したがってこの新しいMACの総当りを実行することができません。
静的データ。データは変更されず、認証されるのみ DS1963S、DS1961S、DS2432、DS28E01 静的データを認証した後、未使用のページにランダムデータを書き込みます。次にそのページから別の認証を実行します。エミュレータは、この新しいMACを知ることはありません。

総当り攻撃(秘密)

「秘密の総当り攻撃」は、正しいMACが生成されるまで、可能な秘密をすべて列挙します。サービスの一部であるトークンは、正しいMACの内容を供給します。秘密が見つかった場合、1ミリ秒でハッシュを実行することができるようなSHA-1コプロセッサがあれば、この秘密をエミュレータで使用することができるでしょう。秘密は8バイト長です(FFFFFFFFFFFFFFFF hex)。高速コンピュータ上でSHA-1を計算するのに1マイクロ秒かかる場合、すべての秘密を列挙するまでに58万年かかることになります。

条件 デバイス 攻撃に打ち勝つ方法
計算能力およびほとんど無制限の時間 DS1963S、DS1961S、DS2432、DS28E01 各デバイスで一意の秘密(一意の認証秘密)を使用することで、問題の重大度が緩和されます。これは、秘密生成の一部としてデバイスの一意なROM IDを使用することで成し遂げられます。秘密が発見されても、システムの「クラスブレーク」はありません。その特定のROM IDを持つ1つのデバイスだけがエミュレートされます。そのROM IDをブラックリストに掲載することで、そのROM IDを使用することができなくなり、攻撃者は別のデバイス上で別の総当たり攻撃をすることを余儀なくされます。

マイクロプローブによる物理攻撃(秘密)

物理攻撃とは、内部のシリコンチップをプローブで探査して、「一意の認証秘密」を読み取ろうとするものです。これは非常に難しく、特にEEPROMデバイスよりもNV RAMデバイス(DS1963S)の方が難しくなります。iButtonバージョンの1-Wire SHA-1デバイスは、パッケージの力を借りてプローブ攻撃に対向する保護層を追加しています。缶のエンクロージャは、球状のシリコンで覆われたステンレス鋼です。DS1963Sでは、たとえ一瞬でもバッテリとの接触が失われると、オンボードの秘密は消去されます。総当り攻撃の場合と同様、秘密が発見されれば、エミュレータはこれを使用して、サービス内で有効と見なされるデバイスを作成することができます。このエミュレート対象のデバイスを使用すれば、eCashなどの以前のデータを再利用することができます。この攻撃の条件および一部のソリューションは、上記の総当り攻撃(秘密)と同じです。

ホスト/SCU攻撃(秘密)

認証を行う1-Wire SCUを特定し、これをプローブで探査して「マスタ認証秘密」「マスタ署名秘密」を得ようとするものです。

条件 デバイス 攻撃に打ち勝つ方法
SCUへの物理的なアクセスが必要 なし SCUを安全な状態に維持します。たとえば、ファームウェアの読取りを許さないDS5002などの安全なマイクロプロセッサを使用します。
SCUへの物理的なアクセスが必要 コプロセッサとしてのDS1963S 部分的なソリューションとして、SCUでのデバイス認証とデータ検証のためDS1963Sを「コプロセッサ」として使用するというソリューションがあります。秘密が検出されることがなくなります。ただし、パディングデータ(「頭文字だけの署名」)が知られている場合、このコプロセッサを使用して有効な「サービスデータ署名」を作成することができる可能性があります。

競争者攻撃

「競争者攻撃」とは、悪意を持って意図的に、データを破壊または中断することで、システムの評判を落とそうとするものです。

条件 デバイス 攻撃に打ち勝つ方法
トークンを悪意のあるリーダに提示することが必要 DS1963S トークンを無効にするような、いずれのデータも上書きすることが可能です。ただし、秘密への書込みは、これに関連付けられた書込みサイクルカウンタを検査することによって検出することができます。正しいデータと秘密をデバイスに再ロードした場合は、このデバイスを再使用することができます。
トークンを悪意のあるリーダに提示することが必要 DS1961S、DS2432、DS28E01 標的デバイスは、保護機能を備えているので、データをユーザメモリ領域に書き込むには有効なMACを必要とします。攻撃者は秘密を知らないため、デバイスへの書込みは不可能になります。標的デバイスには、秘密に対する書込み保護メカニズムも備わっています。攻撃者が秘密に上書きするのを防止するためには、この機能を有効にする必要があります。

結論

データとハードウェアの認証は、アクセス制御や電子マネーなど、さまざまなタイプのサービスアプリケーションで提起される基本概念です。暗号的に優れたハッシュを使用し、ランダムチャレンジに基づいたメッセージ認証コード(MAC)を作成することのできる携帯トークンは、これらのサービスアプリケーションにとって理想的なソリューションとなります。マキシムの1-Wire SHA-1デバイスは、経済的で頑丈なソリューションを提供します。