要約:データセキュリティを論じる際にはよく暗号化に焦点が当てられますが、暗号化よりもおそらく「認証」の方がより重要な要素であると考えられます。この白書では、ハードウェア、データ、およびユーザをディジタル認証するための簡単な手法について説明します。次に、この手法を使用した1-Wire® SHA-1 (セキュアハッシュアルゴリズム1)デバイスの概要を説明します。最後に、今後の研究と開発のための参考として、関連ドキュメント、キット、および事例を記載しています。
はじめに
セキュリティは、ディジタル的なあらゆる事象に付きまとう問題です。データセキュリティを論じる際にはよく暗号化に焦点が当てられますが、暗号化よりもおそらく「認証」の方がより重要な要素であると考えられます。情報と通信は、最終的にはすべて一時的に1と0に変換されるため、その正当性と信憑性が問題になる可能性が高くなります。この白書では、ハードウェア、データ、およびユーザを認証するための簡単な手法について説明します。次に、この手法を使用した1-Wire SHA-1 (セキュアハッシュアルゴリズム1)デバイスの概要を説明します。最後に、今後の研究と開発のための参考として、関連ドキュメント、キット、および事例を記載しています。(特殊な用語、コマンド、またはコードについては、わかりやすくするためイタリック体で示しています。用語の解説については、「白書4:Glossary of 1-Wire SHA-1 Terms 」に掲載されています。)
ハッシュ
ハッシュとはメッセージを抽出したものです。通常この抽出物はメッセージよりもはるかに短く、また一定のサイズになります。暗号として強力な ハッシュは非可逆的 でなければなりません。つまり、ハッシュの結果を調べても、元のメッセージのいずれの部分も取り出すことができないということです。またハッシュは、入力メッセージをほんの少し変更しても(たとえそれが1ビットであっても)、確実に変化することが必要です。これは「なだれ効果」 と呼ばれています。またハッシュには衝突耐性 も必要です。つまり、同じハッシュを備えた2つのメッセージを見つけることが実質的に不可能であるということです。これらのハッシュ特性を使用して、メッセージが改竄されていないことを検証することができます。
MAC
MAC (メッセージ認証コード)とは、入力メッセージの一部が秘密であるハッシュのことです。この秘密を知る当事者だけが、再計算を行ってMACの信憑性を検証することができます。MACの生成方法については、図1 を参照してください。
図1. MACの生成
このため、システムの(秘密を知る)当事者は、メッセージとMACの組み合せが本物であることを検証することができます。これによって、暗号化に頼ることなく、前述の一時的な1と0を信頼できるようになります。MACは広範囲なアプリケーションに対応できる有力な手法です(後述の「アプリケーション」 の項を参照)。
SHA-1
ハッシュを用いた認証方式を確立するためには、暗号として強力なハッシュ関数を選択することが重要となります。SHA-1には非可逆性、衝突耐性、および優れたなだれ効果を備えています。SHAは、連邦情報刊行物180-1および180-2 (FIPS
180-1、FIPS 180-2)に規定された規格です。SHAシリーズのハッシュは現在のところ、FIPSで承認された唯一の方式です。SHA-1は、ISO/IEC 10118-3でも規定されています。「Applied Cryptography (暗号技術大全)第2版」 (John Wiley & Sons出版、1996年)の著者ブルース・シュナイアー氏は同書の中で「SHAに対抗する既知の暗号攻撃は存在しない」と述べています。この理由によってSHA-1を選択しました。SHA-1は、512ビット(64バイト)から成る1つまたは複数のブロックで構成され、160ビット(20バイト)のハッシュを生成します。
アプリケーション
認証とは、デバイス、人物、およびメッセージが正当でかつ本物であることをホストに証明するプロセスです。MACを利用するこの認証手法は「チャレンジ&レスポンス」と呼ばれます。チャレンジとは、認証対象のデバイスに対してホストが提示するランダムなデータです。このチャレンジがMACの計算に取り込まれます。これによってあらゆる認証セッションはそれぞれが個別なものとなり、決定論的なものではなくなります。
何を認証することができるのでしょうか?2つの装置間のメッセージは、両装置がその秘密を知っている場合に認証可能となります。扉に対して携帯トークンを認証することで、管理された部屋に入ることができます。想定されるアプリケーション(ホストと認証対象も含む)の一覧については、以下の表1を参照してください。
表1. MACを使用したアプリケーション
Application
Host
Authentication Target
Device authentication
Equipment
Peripheral device with embedded token
Physical access control
Electronic door lock Building access Filing cabinet lock Safe
Portable token
User access control
Workstation
Portable token and user
Software authorization
PC Software Equipment Firmware
Portable, attached, or embedded token
Electronic cash (eCash)
Vending machine Parking meter Toll booth Pay phone Gaming
Portable token
信頼あるトークンの生成について
上述のほとんどのアプリケーションでキーとなる部品は、特定の携帯電子トークンです。SHA-1 MACによる認証を実行するためには、秘密を安全に保持できてMACを計算することのできる、信頼あるクライアントを作成する必要があります。クライアントは物理的に安全で堅牢であること、またSHA-1演算を迅速に実行可能であることが必要となります。マキシムは、10年以上にわたって、i Button®携帯トークンを製造しており、今日ではSHA-1性能を備えたモデルを提供しています。i Buttonのような形状が必要でない場合には、チップでもご利用いただけます(図2 を参照)。
図2. 1-Wire SHA-1デバイス
ある状況を想定すれば、これらトークンのアプリケーションと使用方法は簡単に説明できるようになります。図3 は、サービスの全容を示しています。サービスプロバイダ(自販機メーカーなど)は、有効データを備えたトークンをユーザ層に配布します。ユーザがSCU (サービス制御ユニット。キャンディマシンなど)にトークンを渡すと、SCUは、サービスの一環としてトークンを認証し、データを正当なもの(電子マネーすなわちeCash)として認め、必要に応じてデータを更新します。SCUは、SHA-1 MACを計算できることも必要です。これは内部のコプロセッサで実行可能です。トークンの特定フィールドと機能、およびSCUについては、以降の項で説明します。
図3. サービス
1-Wire SHA-1トークンには2種類あります。DS1963Sは、8種類のSHA-1秘密と512バイトのNV RAM (不揮発性RAM)ユーザデータ空間を備えた最高品質のデバイスです。DS1963Sは、SCUのコプロセッサとして使用することもでき、必要となるホスト側のSHA-1 MACすべてを計算することができます。DS1963Sには、SCUプロセッサから秘密を完全に削除するという別のセキュリティ機能もあります。サービスデータを検証するための秘密(マスタ署名秘密 )と、トークンを認証するための秘密(マスタ認証秘密 )の両方が、DS1963Sのコプロセッサに安全に保持されます。内蔵のリチウムセルが、DS1963S内部のNV RAMをバックアップします。短時間であっても(たとえば物理的な攻撃によって)この電源が取り外されると、秘密と記憶内容は消去されてしまいます。
DS1963Sでは、それぞれが専用の秘密を保持する7種類の動的サービスレコードをサポートすることができます。8番目の秘密は、コプロセッサ型の機能用として予約されています。このデバイスには、これとは別に32バイトの汎用データページが8つあり、静的サービスレコード用に使用することができます。これらの特別なページには、それぞれ1つの秘密が関連付けられていますが、書き込みサイクルカウンタはありません。書き込みサイクルカウンタは、書き込みの検出に使用するための、読み取り専用で非ロールオーバ式のページ書き込みカウンタです。書き込みサイクルは、システムへの特定の攻撃を防ぐために使用されます。
DS1963Sは、各サービスレコードごとに2種類のMACを使用します。1つ目のMACは1-Wireトークンによって生成され、システムに対してトークンを認証します(一意の認証秘密 )。2つ目のMACはSCUホストによって生成され、サービスレコードに組み込まれて、これを検証するために使用されます。このMACはサービスデータ署名と呼ばれます。この署名の作成に使用される秘密(マスタ署名秘密 )は、ユーザデバイス上には常駐しておらず、SCUまたはそのコプロセッサ内にのみ存在します。
他の2つのデバイス、DS1961SとDS2432は、基本的には同じデバイスですがパッケージが異なります。DS1961Sは標準i Buttonパッケージで提供され、DS2432は小型TSOCパッケージまたはチップスケールパッケージで提供されます(2.5mm × 1.5mm)。これらの2つのデバイスは、NV RAMではなくEEPROM技術を使用しているため、パッケージのリチウムセルが不要です。これらのデバイスでは、4つのすべてのページに秘密が1つだけ関連付けられています。DS1963Sについては書き込み制限がありませんが、DS1961S/DS2432への書き込みについては、デバイスに対する認証MACの提示が必要です。これによって実質的にデバイスへの書き込みが保護されます。書き込みアクセスは、認証秘密を知るSCUに制限されるため、デバイスは書き込みサイクルカウンタを備えておらず、データ内にMAC署名を組み込む必要はありません。DS1961S/DS2432には認証秘密が1つしかないため、サポートできるサービスプロバイダは1つだけです。デバイスには4つのページがあるため、このサービスプロバイダは、最大4種類のサービスをインストールすることができます。
1-Wireデバイスによって作成されたSHA-1の結果は、FIPS 180-1仕様に準拠していることに留意してください。ただし、最後に追加される定数は除去されます。FIPS-180の仕様では、これらの定数は、各ブロックを計算した後、結果に追加されます。1-Wireデバイスは1つのブロックしか計算しないため、これらの定数を追加してもセキュリティは向上せず、定数を取り除くことによってハードウェアでのMACの計算速度を早めています。FIPS 180-1への準拠が必要な場合、SCUによって元どおりに定数を追加することができます。
図3は、1つのサービスレコードの検証に使用される1-Wireトークンの関連メモリと特殊レジスタを示しています。各トークンには、レーザーでROMに焼き付けられた64ビットの一意のデバイスIDが含まれます。各デバイスにこの一意のROM ID が備わっているため、秘密の計算の1つの要素としてこれを使用することで、各デバイスの認証秘密を一意にすることができます(一意の認証秘密 )。認証を行うとき、SCUなどのホストは、マスタ認証秘密 とROM ID から一意の認証秘密 を再計算する必要があります。各デバイスには、SCUによって送信された認証チャレンジを保持するための一時メモリの場所も含まれています。チャレンジはSCUによって作成されるランダムデータであり、これによって各認証シーケンスが一意となります。ページ番号は、データメッセージが存在するメモリ内の物理的な場所となります。
1-Wireデバイスは、各フィールドを取得し、内蔵のSHA-1エンジンを通じてこれらのフィールドを実行した後、認証のためにMACを返します。SCUは、計算した一意の認証秘密 を使用して同じ情報を取得し、そのMACが適正であることを検証します。図4 は、デバイス内で認証MACが構築される様子を示しています。
図4. トークン認証
DS1963Sには書き込みアクセスの制限がないため、サービスレコードに、データを検証するためのサービスデータ署名 を含める必要があります。このMACはサービスデータとともに保存され、アカウントデータの正当性を検証するために使用されます。図5 は、サービスデータ署名 を生成して検証するために利用される情報を示しています。図6 は、SCUとDS1963Sトークンによる全体処理、図7 は、DS1961Sトークンを用いた場合の処理を示しています。
図5. DS1963Sによるサービスデータの検証
図6. DS1963Sの標準処理フロー
図7. DS1961Sの標準処理フロー
詳細について
多数のドキュメントが利用可能で、1-Wire SHA-1デバイスをベースにしたシステムの理解と実装に役立ちます。これらのドキュメントの内容は、「理論」 、「実装の詳細」 、および「API」 という3つのカテゴリに分類することができます(図8 を参照)。「理論」 に関するリソースでは、利用できるアルゴリズムを用いて電子マネーの安全性を確保する仕組みについて論じています。「実装の詳細」 では、1-Wireデバイスを用いて認証と電子マネーの処理を遂行するための、通信の詳細な手順について説明しています。「API」 に関するリソースは、今すぐSHA-1デバイスを利用したい場合に有効です。APIのソースコードは、カスタム実装を行う場合の実用的な開発ツールとして利用することもできます。
図8. リソース概要
表2. 理論
表3. 実装の詳細
表4. アプリケーションプログラマインタフェース(API)
「1-Wire Public Domain Kit」
1-Wire Public Domain Kitは、i Buttonsを含む、ほとんどすべての1-Wireデバイスを取り扱った、豊富な事例集付きのportable 'C'ライブラリです。単純な認証や完全なeCashシステムを実装するための実例が格納されています。ほぼ自由なライセンスの下でソース全体を入手することができます。
ドキュメント
キット(zip)
URL
http://japan.maxim-ic.com/products/ibutton/software/1wire/wirekit.cfm
「1-Wire API for Java」
「1-Wire API for Java」は、最初から、Javaで1-Wireのアプリケーションを構築するための堅牢で高度なオブジェクト指向の基盤となるように設計されたものです。完全なeCashシステムを実装するための事例も備えています。ソース全体は、ほぼ自由なライセンスの下で入手することができ、J2ME (Java2マイクロエディション)をサポートします。
ドキュメント
キット(tar-zip、tgz)
URL
http://japan.maxim-ic.com/products/ibutton/software/1wire/1wire_api.cfm
「Using the eCash Processor」
eCashプロセッサは、1つ以上のDS1963S SHA-1コプロセッサを備えたマイクロプロセッサであり、組み込まれたeCashのリファレンス実装を実行します。この実例は、「eCash Evaluation Kit」に記載されています。eCashプロセッサには、eCashの負債を管理および追跡するための便利なシリアルインタフェースが用意されています。このドキュメントでは、このインタフェースについて説明しており、大規模なシステムの1つの要素としてeCashプロセッサを使用できるようにしています。
ドキュメント
白書
URL
(未公開。http://japan.maxim-ic.com/appnotes10.cfm/ac_pk/1 を確認してください)
「DS1963S SHA 1-Wire API Users Guide」
このガイドは、マキシムが提供する「1-Wire Public Domain 'C'」と「1-Wire API for Java」においてDS1963S eCash実装を使用する方法について説明しています。
ドキュメント
アプリケーションノート156
URL
http://japan.maxim-ic.com/appnotes.cfm/appnote_number/156
「Guide to the Embedded eCash Processor Reference Implementation」
このドキュメントは、eCashプロセッサのリファレンス実装に関する設計の考慮点、フロー、および詳細コーディングについて説明しています。リファレンス実装のソースコードのほとんどは、マイクロプロセッサやその他の小型メモリデバイス用に最適化されたportable 'C'で記述されています。この実例は、「eCash Evaluation Kit」に記載されています。
ドキュメント
アプリケーションノート
URL
(未公開。http://japan.maxim-ic.com/appnotes10.cfm/ac_pk/1 を確認してください)
1-WireはMaxim Integrated Products, Inc.の登録商標です。
i ButtonはMaxim Integrated Products, Inc.の登録商標です。
JavaはSun Microsystems, Inc.の商標です。
フィードバックをお寄せください。 内容に満足されましたか、あるいは満足されていませんか?もっと良いページにできると思いますか?あるいは、単なるコメントでも結構です。フィードバックをお待ちしています。 —マキシムはお客様からいただく訂正、提案を元に改善していきます。
このページを評価し、フィードバックを送信する。
自動アップデート
お客様が関心のある分野でアプリケーションノートが新規に掲載された際に自動通知Eメールの受信を希望する場合は、EE-Mail™にご登録ください。
その他の情報
APP 1201: Sep 15, 2004
ダウンロード、PDFフォーマット (174kB)
AN1201,
AN 1201,
APP1201,
Appnote1201,
Appnote 1201