セキュリティトークン

**セキュリティトークン**（**ハードウェアトークン**、**認証トークン**、**暗号トークン**）とは、コンピュータサービスの利用権限のある利用者に、認証の助けとなるよう与えられる物理的な装置のことである。

## 概要
セキュリティトークン（ハードウェアトークン）の多くはポケットや財布に入れて持ち運べる程のサイズで、利用者のキーチェーンにつけられるように設計されているものもある。

カードサイズのトークンには、暗証番号を入力するための小さいキーパッドや、ワンタイムパスワードを表示する小さな表示部を備えるものもある。また、USB端子に挿入して使用するものもあり、その場合は市販のUSBメモリのような小型のものが多い。

トークン内部には、デジタル署名の署名鍵（暗号鍵）や指紋のような生体認証のためのテンプレート情報などを記憶するものがある。トークン内部に秘密情報を格納する場合には、を有するパッケージに収めるように設計されているものもある。

## トークンの実装例
トークンには、とてもシンプルなものから複数の認証方式を含む複雑なものまである。多数のベンダが各々独自の製品を提供していて特許を受けているものも多い。

### デジタル署名
デジタル署名が通常の手書きの署名のように信用されるためには、署名を作ることを認可されている利用者だけがデジタル署名を生成する署名鍵にアクセスできることが満たされている必要がある。署名鍵の生成と保管をトークン内部で行えることは、安全なデジタル署名を可能にし、また署名鍵は利用者の識別情報の証明にも使えるので、ユーザ認証にも使用することができる。

トークンを使って利用者を識別するためには、すべてのトークンがある種のユニークなナンバーを持たねばならない。法律では、基金が振り込まれる銀行の口座番号に基づく銀行業務を認証する場合などのケースでは、トークンにキーボードなどのユーザインタフェースを持たないものは、デジタル署名に使用することができない。

### シングルサインオンソフトウェア
enterprise single sign-onのような、いくつかのタイプのシングルサインオンソリューションにおいては、シームレスな認証やpassword filling（パスワードを自動的に埋める機能）をもつソフトウェアを格納するのにトークンを利用する。パスワードはトークンに格納されているので、利用者はパスワードを記憶する必要がなく、そのため、より安全なパスワードを選択することも、より安全なパスワードを割り当てられることも可能である。

### ワンタイムパスワード
ワンタイムパスワードには、ログイン毎に変化するタイプと、設定した時間が経過したあとに変化するタイプがある。

#### ログイン毎に変化するワンタイムパスワード

ログイン毎に変化するタイプのワンタイムパスワードには、秘密の共有鍵を初期値として、前のパスワードから新しいパスワードを生成するために、暗号論的なハッシュ関数のような複雑な数学的アルゴリズムを利用するものがある。

オープンソースのOATHアルゴリズムは標準化されているが、他のアルゴリズムは米国の特許になっている。

* CRYPTOCard - CRYPTOCardはボタンが押下されるたびに新しいワンタイムパスワードをつくる。コンピュータシステムは、アクシデントによってボタンが2回以上押された場合でも、いくつか先の値を受け付けるか、さもなくばクライアントは認証に失敗する。
* ID CONTROL - ID Controlは、携帯電話やデバイス（例：PDA、Blackberry）を、HandyIDの付属したOTPに基づくユーザ識別のトークンにすることにより、簡単で手頃で強力なOTPのユーザ識別を提供する。
* VeriSign - VeriSignはユーザ識別をOATH標準で統一している。VeriSignの統一されたユーザ識別OEMはAladdin Knowledge Systemsである。
* Deepnet Security - Deepnet SecurityはDeepnet Unified Authentication Platformの製品である。
* SafeNet (旧 Aladdin Knowledge Systems) のeToken NG-OTP - Aladdin Knowledge SystemsのeToken NG-OTPはハイブリッドUSBとワンタイムパスワードトークンである。これはスマートカードに基づくユーザ識別トークンと分離モードにおけるワンタイムパスワードによるユーザ識別技術の機能を統合したものである。

#### 時間同期ワンタイムパスワード

時間同期ワンタイムパスワードは設定した時間間隔（例：1分）ごとに絶え間なく変化する。このためには、クライアントのトークンと認証サーバはある種の同期が存在しなくてはならない。非接続型のトークンは、トークンがクライアントに配布される前にこの時間同期は完了しており、ほかのタイプのトークンは、トークンが入力デバイスに挿入されたときに同期を行う。

* Booleansoft - Booleansoft のトークンはUSB入力デバイスやCD-ROMドライブのような入力デバイスに挿入されたときに認証サーバと同期を行う。米国特許技術。
* 飛天ジャパンのOTP - 飛天ジャパン社のc200は、60秒毎にワンタイムパスワードを生成するOATH準拠のワンタイムパスワードトークン。ガンホーのラグナロクオンラインにも採用されている。
* RSAセキュリティのSecurID - RSAセキュリティ社のSecurIDは、一定周期で変化する数値を採用している。認証するとき、ユーザーはパスワードや暗証番号に加え、トークンのディスプレイに表示されるワンタイムパスワードを読み取り、入力する。冒頭画像のジャパンネット銀行（現PayPay銀行）のトークンがこのタイプ。
* Vasco's DigiPass - VASCOのDigiPassシリーズはユーザが暗証番号を入力できる小さなキーボードを持ち、36秒ごとに新しいワンタイムパスワードを生成する。米国特許技術。
* KerPass UST -  は携帯電話上の時間同期のOATHワンタイムパスワードを提供する。新しいパスワードは30秒ごとに作られる。SPEKEやSRPのようなゼロ知識証明アルゴリズムに関する文脈のKerPassパスワードを使用することを可能にする排他的なサーバ側のパスワード検証技術をKerPassは利用している。この組み合わせは中間者攻撃に耐性がある。
* Mega AS Consulting Ltd の CAT - Mega AS Consulting Ltd の CAT（Cellular Authentication Token）は、携帯電話、PDA、Pocket PCなどの携帯デバイス上で動作する、暗証番号で守られるソフトウェアトークンである。CATはいくつもの二要素認証のワンタイムパスワードを固定パスワードのように管理できる。
* SecuTech社のUniOTP 500 - カナダのSecuTech社により開発され、OATH準拠の時刻同期式ワンタイムパスワードである。60秒ごとに新しいパスワードを生成する。iOS用のソフトウェアバージョンも存在している。

## トークンのタイプ
### Bluetooth型トークン
Bluetoothで通信可能なタイプ。USB端子もついていることが多く、Bluetoothが利用できない時でもUSBを介して通信をすることができる。

### 携帯電話
T-FAツールの新しいカテゴリーにより、PCユーザーの携帯電話をトークンデバイスに変換することができる。セキュリティトークンが携帯電話にインストールされているか、SMSメッセージ交換を使うか、あるいは対話型の電話通信を起こすか、あるいは http あるいは https のような標準的なインターネット・プロトコルを使うことで携帯電話認証トークンになり得る。

このような方法は、実装を単純化してロジスティクスのコストを削減し、そして別途ハードウェアトークン装置を導入しなくて済む。SMSを用いる場合は、テキストメッセージやWAP/HTTPサービスのために料金が発生するかもしれないが、バンド外の認証解決はPCベースのキーロガーのような脅威に対抗することができる。無線ベースの一回限りのパスワードシステムはトークンとまったく同じような中間者攻撃を受けやすい。中間者攻撃を阻止するためには強い相互認証が必要である。また一部の企業は、標準的なクレジットカードにセキュリティのトークンを取り入れることに成功している。

### 非接続型トークン
現在、最も普及しているタイプ。他に機器が不要というメリットがあるが、一方でバッテリーの寿命が10年間使用できるUSB型と比べて3〜5年と短い。費用を抑えるため、バッテリーのみを交換できるタイプもある。

### PCカード型トークン
ノートパソコン用のトークン。厚さの薄いType IIのPCカードがよく用いられる。

* Mykotronx Corp. - マイコトロンクス社は、PCカードを入れたラップトップ向けにFortezzaカードトークンを製造している。

### スマートカード型トークン
スマートカード型トークンは他のタイプと比べて費用が安いが、その半面、耐久性が弱いため、寿命が短い。

### USB型トークン
コンピューターでの接続規格として普及しているUSB端子を使ったトークン。費用が安く、特別な機器が不要なのが特徴。

* Booleansoft - Booleansoft社には数種類のUSB型トークンがあり、指紋認証などの生体認証の機能を備えているものもある。トークンを接続すると、トークン内に格納されたソフトが自動的に起動し、電子署名とワンタイムパスワードを発行する。
* VeriSign - VeriSign社の統一認証は、あらゆる種類の二要素認証を提供し管理するための、単一の統合されたプラットフォームを提供する。
主要メーカーの製品:
* Feitian Technologies社のePass　USBトークンhttp://www.ftsafe.co.jp/
* SecuTech社のUniToken Lite / UniToken STDhttp://www.esecutech.com/ja/

### スマートカード・USB型トークン
スマートカード・USB型は、スマートカードチップを備え、スマートカード・USBの両方で通信できる。幅広いセキュリティーに対応し、特別な機器が不要。また、スマートカード本来の機能、セキュリティーを使用できるのも特徴である。OS側から見ると、このトークンは「USBで接続された、スマートカードを内蔵するスマートカードリーダー」ということになる。

主要メーカーの製品:　
* Feitian Technologies社（日本法人：飛天ジャパン株式会社）製ePassシリーズhttp://www.ftsafe.co.jp
* SecuTech社のUniToken PRO / UniToken Drivehttp://www.esecutech.com/ja/

### その他
特殊な用途を持っていたり、写真つきIDカードとして使用できたりするものもあり、携帯電話やPDAをセキュリティートークンとして使用することもできる。また、Booleansoftはおよそクレジットカード大のCDトークンを提供している。

## 関連技術
### エンタープライズ・シングル・サインオン
一部のエンタープライズ・シングル・サインオン (E-SSO) ソリューションではセキュリティートークンを使用している。

### 二要素認証 (T-FA)
セキュリティートークンは、二要素認証および多要素認証ソリューションにおいて「what you have」コンポーネントを提供する。

## 使用方法
もっともシンプルなセキュリティートークンはコンピュータへの接続を必要としない。クライアントは、要求されたときにトークンに表示されている数字（通常はユーザーIDも）を入力するだけである。そうでないものは、Bluetoothのような無線技術でコンピュータに接続する。また別のものはコンピュータに挿入する。この場合は、：
# 適切な入力デバイスを用いてトークンをコンピュータに接続する
# ユーザーIDを入力する

すると、トークンのタイプに応じてコンピュータのOSは以下の動作をする：
* トークンからキーを読み取り、暗号解読する、または
* トークンのファームウェアを問い合わせる

トークンに関連した応用例の一つとしてハードウェアドングル (dongle) があり、これはソフトウェアの所有権があることを立証するために一部のコンピュータプログラムが必要とするものである。ドングルを入力機器に装着すると、そのソフトウェアは、問題のソフトウェアの使用を認可するためのI/O装置にアクセスする。

## 関連項目
*ワンタイムパスワード
## 脚注
#  PKCS -- The RSA standards PKCS #11 and PKCS #15 define software interfaces.
#  Specification for Integrated Circuit(s) Cards Interface Devices

## 外部リンク
* OATH Initiative for open authentication
* Token Authentication Article from AuthenticationWorld