要約
データセキュリティを論じる際にはよく暗号化に焦点が当てられますが、暗号化よりもおそらく「認証」の方がより重要な要素であると考えられます。この白書では、ハードウェア、データ、およびユーザをディジタル認証するための簡単な手法について説明します。次に、この手法を使用した1-Wire SHA-1 (セキュアハッシュアルゴリズム1)デバイスの概要を説明します。最後に、今後の研究と開発のための参考として、関連ドキュメント、キット、および事例を記載しています。
はじめに
セキュリティは、ディジタル的なあらゆる事象に付きまとう問題です。データセキュリティを論じる際にはよく暗号化に焦点が当てられますが、暗号化よりもおそらく「認証」の方がより重要な要素であると考えられます。情報と通信は、最終的にはすべて一時的に1と0に変換されるため、その正当性と信憑性が問題になる可能性が高くなります。この白書では、ハードウェア、データ、およびユーザを認証するための簡単な手法について説明します。次に、この手法を使用した1-Wire® SHA-1 (セキュアハッシュアルゴリズム1)デバイスの概要を説明します。最後に、今後の研究と開発のための参考として、関連ドキュメント、キット、および事例を記載しています。(特殊な用語、コマンド、またはコードについては、わかりやすくするためイタリック体で示しています。用語の解説については、アプリケーションノート1099 「White Paper 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年以上にわたって、iButton®携帯トークンを製造しており、今日ではSHA-1性能を備えたモデルを提供しています。iButtonのような形状が必要でない場合には、チップでもご利用いただけます(図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は標準iButtonパッケージで提供され、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. 理論
「Electronic Cash and User Authentication using Maxim DS1963S」 | |
電子マネーについて詳しく紹介し、また1-Wire SHA-1デバイスの機能について説明したチュートリアルです。暗号に関する必須の概念と、電子マネー(eCash)システムの携帯トークンに必要な機能について、基本から詳細までを網羅しています。 | |
ドキュメント | チュートリアル(Power Point) |
URL | http://files.maximintegrated.com/sia_bu/public/ecash_sha_tutorial.ppt (4MB) |
「Glossary of 1-Wire SHA-1 Terms」 | |
このドキュメントは、DS1963S、DS1961S、DS2432など、1-Wire SHA-1デバイスの使用に関する用語を一覧で記載しています。 | |
ドキュメント | 白書4 |
URL | https://www.maximintegrated.com/jp/app-notes/index.mvp/id/1099 |
「Challenge and Response with 1-Wire SHA devices」 | |
このアプリケーションノートは、チャレンジ&レスポンスの基本メカニズムについて解説しています。また、1-Wire SHAデバイスを使用した実装の実例を示しています。「1-Wire API for Java™」を使用したこのサンプルコードは、ダウンロードして利用可能です。 | |
ドキュメント | アプリケーションノート190 |
URL | https://www.maximintegrated.com/jp/app-notes/index.mvp/id/190 |
「SHA iButton Secrets and Challenges」 | |
優れた秘密と真にランダムなチャレンジを選択することの重要性について説明しています。システムの脆弱性を回避するための経験則もいくつか提示しています。 | |
ドキュメント | アプリケーションノート152 |
URL | https://www.maximintegrated.com/jp/app-notes/index.mvp/id/152 |
「Why are 1-Wire SHA-1 Devices Secure?」 | |
サービスにおける1-Wire SHA-1デバイスの利用シナリオを提示しています。サービスで想定される攻撃について説明し、1-Wireデバイスの機能や推奨利用手順を用いてこれらの攻撃を阻止する仕組みについて説明しています。 | |
ドキュメント | 白書3 |
URL | https://www.maximintegrated.com/jp/app-notes/index.mvp/id/1098 |
「Passwords in SHA Authentication」 | |
このドキュメントは、1-Wire SHA-1デバイスでパスワードまたはPINを使用することによって、このデバイスを所有するユーザを認証する手法について説明しています。 | |
ドキュメント | アプリケーションノート154 |
URL | https://www.maximintegrated.com/jp/app-notes/index.mvp/id/154 |
「Information technology - Security techniques - Hash-Functions - Part 3」 | |
SHA-1を含むさまざまなハッシュ規格を提示したISO規格です。この規格は、MACの作成に関連する他のISO規格でも参照されています。 | |
ドキュメント | ISO/IEC 10118-3規格(PDF。購入用) |
URL | https://webstore.ansi.org/Standards/ISO/ISOIEC101182018 |
「Secure Hash Standard」 | |
標準SHA-1を規定した連邦情報刊行物規格(FIPS)です。 | |
ドキュメント | FIPS 180-1 (HTML) |
URL | http://www.itl.nist.gov/fipspubs/fip180-1.htm |
「Applied Cryptography, Second Edition」 | |
暗号化技術と理論についての優れた一般入門書です。SHA-1などの一方向ハッシュ関数は第18章で説明されています。 | |
ドキュメント | ブルース・シュナイアー, John Wiley & Sons, 1996 (出版物) |
URL | http://www.wiley.com/WileyCDA/WileyTitle/productCd-0471117099.html |
「Handbook of Applied Cryptography」 | |
ハッシュを含むさまざまな暗号化手法を網羅した書物です。ハッシュとデータセキュリティについては、第9章で取り扱っています。 | |
ドキュメント | A. Menezes, P. van Oorschot, and S. Vanstone, CRC Press, 1996 (出版物、PS、PDF) |
URL | http://www.cacr.math.uwaterloo.ca/hac/ |
表3. 実装の詳細
「SHA iButton 1-Wire API Overview」 | |
完全なSHA-1 eCashシステムのためのAPIを作成するのに必要な手順の概要を詳述しています。このガイドは、マキシムの開発者キットの中で提示したAPIを作成するときに使用したものです。 | |
ドキュメント | アプリケーションノート157 |
URL | https://www.maximintegrated.com/jp/app-notes/index.mvp/id/157 |
「Maxim's Digital Monetary Certificates」 | |
マキシムのAPIで使用される、金融アカウントを表す標準の証明書データフォーマットについて説明しています。同フォーマットにはデータおよびそれに付随するMAC位置が含まれます。 | |
ドキュメント | アプリケーションノート151 |
URL | https://www.maximintegrated.com/jp/app-notes/index.mvp/id/151 |
「SHA-1 Devices used in Small Cash Systems」 | |
1-Wireデバイスでの認証とeCashの処理方法について詳細に順を追って説明しています。これは、eCashシステムの実装と検証のための優れた参考資料です。 | |
ドキュメント | 白書1 |
URL | https://www.maximintegrated.com/jp/app-notes/index.mvp/id/1820 |
「DS1963S SHA iButton」 | |
デバイスのコマンドと動作条件のすべてを記載したDS1963S用のデータシートです。 | |
ドキュメント | データシート |
URL | https://www.maximintegrated.com/jp/datasheet/index.mvp/id/2822 |
「DS1961S 1kb Protected EEPROM iButton With SHA-1 Engine」 | |
デバイスのコマンドと動作条件のすべてを記載したDS1961S用のデータシートです。 | |
ドキュメント | データシート |
URL | https://www.maximintegrated.com/jp/datasheet/index.mvp/id/3557 |
「1-Wire File Structure」 | |
マキシムが提供するAPIとドキュメントで使用されるeCash証明書。これは、デバイス上のファイルに記載されており、1-Wire標準ファイル構造に準拠しています。 | |
ドキュメント | アプリケーションノート114 |
URL | https://www.maximintegrated.com/jp/app-notes/index.mvp/id/114 |
表4. アプリケーションプログラマインタフェース(API)
「1-Wire Public Domain Kit」 | |
1-Wire Public Domain Kitは、iButtonsを含む、ほとんどすべての1-Wireデバイスを取り扱った、豊富な事例集付きのportable 'C'ライブラリです。単純な認証や完全なeCashシステムを実装するための実例が格納されています。ほぼ自由なライセンスの下でソース全体を入手することができます。 | |
ドキュメント | キット(zip) |
URL | https://www.maximintegrated.com/jp/products/ibutton/software/1wire/wirekit.cfm |
「1-Wire API for Java Software Development Kit」 | |
「1-Wire API for Java」は、最初から、Javaで1-Wireのアプリケーションを構築するための堅牢で高度なオブジェクト指向の基盤となるように設計されたものです。完全なeCashシステムを実装するための事例も備えています。ソース全体は、ほぼ自由なライセンスの下で入手することができ、J2ME (Java2マイクロエディション)をサポートします。 | |
ドキュメント | キット(tar-zip、tgz) |
URL | https://www.maximintegrated.com/jp/products/ibutton-one-wire/one-wire/software-tools/api-java-sdk.html |
「DS1963S SHA 1-Wire API Users Guide」 | |
このガイドは、マキシムが提供する「1-Wire Public Domain 'C'」と「1-Wire API for Java」においてDS1963S eCash実装を使用する方法について説明しています。 | |
ドキュメント | アプリケーションノート156 |
URL | https://www.maximintegrated.com/jp/app-notes/index.mvp/id/156 |
{{modalTitle}}
{{modalDescription}}
{{dropdownTitle}}
- {{defaultSelectedText}} {{#each projectNames}}
- {{name}} {{/each}} {{#if newProjectText}}
-
{{newProjectText}}
{{/if}}
{{newProjectTitle}}
{{projectNameErrorText}}