web-dev-qa-db-ja.com

Webアプリケーションを認証するためのハードウェアトークン

私の会社はWebアプリケーションを開発していて、ハードウェアベーストークン認証を使用してWebアプリケーションにログインする方法を調査するように依頼されました。繰り返します。基本的に、Webアプリがあり、コンピューターに接続するためのUSBがあります。ユーザーはどこかにユーザー名とパスワードを入力する必要があり、ユーザー名とパスワードが正しい場合、ユーザーWebアプリケーションを使用するには認証が必要です。もちろん、マシンが彼らのものではないかもしれないか、彼らが余分なことを何もしたくないので、ユーザーにそこのマシンに何かをダウンロード/インストールしてほしくない。私の会社はブラウザープラグインを用意することを提案しましたが、プラグインはブラウザーが持つシステム権限と同じかそれ以下の権限を持っているため、ブラウザーは基盤となるハードウェアにアクセスできません(カメラとマイクは例外です)。

それを行う方法の1つは、おそらくセキュリティトークン(usb)が存在するかどうかを確認し、そこからWebアプリを起動する機能を備えたWebブラウザーの変更バージョンを持つことです。ユーザーが何も実行したくない場合、またはターゲットコンピューターがこの種の実行を許可していない場合、これを実行することは不可能だと思います。私が何かを逃していないかどうかあなたたちと一緒にチェックしたいだけです。

5
wakandan

次に、ユビキーを提案します( http://www.yubico.com )。 Yubikeyは、キーボードのふりをするOTPハードウェアトークンであり(したがって、追加のソフトウェアのインストールは必要ありません)、128ビットの暗号化されたシークレットをサーバーに送信します。トークンは管理者によって完全にプログラム可能であり、さまざまな方法でトークンを使用できます。パスワードなしでトークンを使用することもできます。たとえば、トークンを「あなたが持っているもの」という1要素の認証として使用できます。

ただし、トークンのボタンを押す前にユーザーにパスワードを入力させることもできます。

トークンを構成して、パブリックIDを使用し、ユーザーごとに一意のAESキーを使用することもできます。ORシークレットIDを使用して、すべてのAESキーを反復処理して復号化することができます(たとえば、 10人のユーザーがいる場合、サーバーに保存されている10個の異なるAESキーを反復処理しますが、プロセスはCPUを消費する可能性があります。ORすべてのユーザーに同じAESキーを使用できます。

最初の選択肢でいずれかを選択した場合、任意のYubicoトークンを使用できます。最後の代替案に進む場合は、改ざん耐性のある暗号化スマートカードチップを備えたYubikey NEOをお勧めします。これにより、悪意のあるユーザーがyubikeyを改ざんしてAESキーを抽出できなくなります(これにより、この不正なユーザーが自分を別のユーザーとして識別する可能性があります)。

秘密のIDを使用する利点は、誰かがユビキーを見つけた場合、ユビキーが誰であるかを見つけることができないことです。 NEOのもう1つの利点は、NFCサポートがあり、「NFC URLステッカー」が行う信号を生成できるが、「 http ://www.example.com/login.php?otp = ifhgieififhgieififhgieififhgieif "ユーザーは自分のYubikeyを使用して、NFC互換の携帯電話からログインできます。

4

CryptoStickWeb Cryptography API を使用して、キーをブラウザーに公開します。提案されたUSBセキュリティトークン製品製品は、同様の手法を使用する可能性があります。 CryptoStickはオープンソースです なので、サードパーティがセキュリティを確認するのは簡単です。

私が定期的に使用する2要素認証は Google Authenticator です。これにより、Webアプリケーションで2要素認証を非常に簡単にサポートできます。ますます多くのサービスがGoogle Authenticatorをサポートしているようで、LastPassとAmazon AWSが良い例です。

2
rook

セバスチャンの回答に加えて、ユビコスバックエンドサーバーを使用せずに独自のシステムを実行することも検討できます。これにより、認証リクエストはyubicoに転送されず、独自のシステムまたは独自の(顧客)サブネット内で処理されます。残念ながら、そのようなバックエンドシステムをインストール/実行する必要があります。 Yubico自体が認証サーバーを提供しますが、オープンソースの認証バックエンド privacyidea を確認することもできます。これは、ユビキーだけでなく、Google認証システムのようなソフトOTPトークンの管理にも使用できます。

また、そのようなシステムを1つセットアップし、それを複数の顧客に対して実行することもできます。

1
cornelinux

RSAトークンは別のオプションである可能性があります。これには、RSAトークンに表示されるOTPを入力する必要があります。うまく機能しますが、安価ではありません。

1
michiel perdeck