
U2Fは、
FIDO Allianceによって開発されたオープンな汎用2要素認証プロトコルです。
この提携には、Google、PayPal、Lenovo、MasterCard、Microsoft、NXP、Visaなどが含まれます。
このプロトコルは、バージョン38以降のChromeブラウザーでサポートされています。Windows/ MacOS / Linuxでは、ドライバーなしでそのまま使用できます。
現在、
Google、LastPass、Wordpressでサポートされてい
ます 。
この記事では、NFCおよびOpenPGPカードをサポートするYubikey NEOトークンを使用した経験、SMSを介した2要素認証の欠点について説明します。
2段階SMS認証が危険な理由
SMSまたは通話による2段階認証は、現在非常に人気があります。
もちろん、これは便利であり、ほとんどの場合、このような追加のチェックは効果的です。 自動化された攻撃、フィッシング、パスワード選択、ウイルスから保護し、失われたアクセスを復元します。
しかし、あなたの人がプロの詐欺師の標的になった場合、接続された電話は致命的な役割を果たす可能性があります。 ほとんどの場合、アカウントが関連付けられている電話番号は秘密ではありません。通常、これはメインの連絡先番号です。 アカウントへのアクセスを取り戻そうとすると、ほとんどすべてのサービスが希望する人に最初または最後の数字を報告します。 したがって、アカウントに関連付けられている番号を簡単に見つけることができます。
ロシアで誰が番号を発行したかを知ることは難しくありません。 Roem.ru
の男性の
実験を読むのに十分です。
番号の所有者の個人データを受け取った詐欺師は、偽の委任状、運転免許証またはパスポートを引き、携帯電話会社の最寄りの支店に送られます。
SIMカードを再発行する権限には、最も怪しい携帯電話サロンの普通の従業員がいます。
面白いのは、加入者のプロフィールのほとんどのオペレーターが番号の所有者の写真さえ持っていないことですが、何らかの理由で彼らはパスポートをコピーしています。 つまり、パスポートに一致する詳細を描き、適切な写真を貼り付けるだけで十分です。
オペレーターは、プロキシによるSIMカードの再発行を禁止するオプションがありますが、偽の運転免許証とパスポートによって番号が正常に再発行されるため、これは架空の防御です。
ウクライナでは、ほとんどの数字が匿名であるため、状況はさらに悪化しています。
SIMカードを再発行するには、Kyivstarオペレーターは最後のアカウント補充のチェックを表示し、呼び出しが行われた3つの番号に名前を付ける必要があります。
多くの銀行などの優れたサービスは、電話番号とともに
IMSI (International Mobile Subscriber Identity)-一意のSIMカード識別子も保存します。 IMSIが変更された場合、番号バインディングはキャンセルされたと見なされ、バインディング手順を繰り返す必要があります。
残念ながら、そのようなサービスは多くありません。
HLRリクエスト
smsc.ru/testhlrを使用して、任意の番号のIMSIを確認できます
パラノイアのレシピ:smsc.ruには、Python、PHP、Perl、Ruby、Java、C#、Delphi、C ++の便利なライブラリがあり、特にHLRリクエストを送信できます。 たとえば、1日に2回、番号のIMSIを確認し、変更された場合はアラームを鳴らすことができます。 最も高価な関税では、1リクエストにつき0.2ルーブル、1つの番号につき年間約150ルーブルが出ます。 同じライブラリを介して、アラーム付きのSMSを送信できます。 私はお勧めします;)
コール転送のセットアップ、ボイスメールのインターセプトなど、携帯電話経由で確認をバイパスする他の方法があります。 しかし、それらの説明はこの記事の範囲外です。
U2F-FIDOユニバーサル2ファクター
U2Fで計画されているように、オーセンティケーターはハードウェアモジュールです。USBトークン、SIMカード、またはキーを格納し、暗号化操作を独立して実行するNFCキーフォブです。 同時に、キーは実稼働中に事前にインストールされ、トークンから離れることはありません。
動作原理は次のとおりです。
- ユーザーはログインパスワードを使用してウェブサイト/アプリケーションにログインします
- サーバーは資格情報を確認し、正しい場合はトークンのチャレンジを生成し、ユーザープログラム(この場合はブラウザー)に送信します。
- ブラウザはチャレンジをトークンに渡します。トークンは、ユーザーの裁量でアクションを要求できます。 私の場合、これは接触パッド上の指のタッチです。 ただし、これには、たとえば、PINコードの入力、生体認証、またはその不在が含まれる場合があります
- トークンはプログラムに応答を返し、それがサーバーに送信されます
- 認証完了

現在、バージョン38以降のU2FサポートはGoogle Chromeで利用可能です。 おそらくまもなくFireFoxに追加されるでしょう。
GoogleアカウントとLastpassアカウントでの認証は既にサポートされており、Wordpress、Django、および異なる言語のライブラリ用のプラグインがあります。
Linux PAM、OpenSSHなどのモジュール。
OTP / U2F認証をサポートするサービスの表-www.dongleauth.info
Yubikey NEOトークンを使用した個人的な経験
最も高度なU2FデバイスはYubicoによって製造されています。
ロシアの販売代理店
-yubico.ru私は現時点で最も洗練されたキーチェーン-Yubikey NEOを購入しました。

U2Fに加えて、彼は次のことができます。
- OpenPGPスマートカード -OpenPGPカードバージョン2.0が挿入されたICCIDリーダーとして定義
- NFC-スマートフォンで使用でき、アクセス制御のキーとして使用できます。 エミュレーションモードでMifare Classicカードとして機能できます
- OTPおよびTimeOTP-これは非表示キーボードとして定義され、押すとワンタイムパスワードが入力されます。 ソフトウェアアプレットを介した時間ベースのOTP(Google認証システムの置き換え)
- PIVスマートカード -( 個人識別検証 )アメリカの州のスマートカード標準
デフォルトでは、デバイスはYubico OTPモード(独自のワンタイムパスワードプロトコル)で動作し、HIDキーボードとしてのみ定義され、ボタンを押すと、デバイスIDに基づいてワンタイムパスワードを印刷します。
Windows / Mac / Linuxで利用可能な独自のユーティリティを使用してU2Fモードを有効にする必要があります。

U2FおよびICCIDモードがOpenPGPカードとして機能するようにしたかったのです。

以上です。 U2Fはすぐに動作し、ドライバーは不要です。
デモアプリケーション
demo.yubico.com/u2fで作業を確認できます
トークンをGoogleアカウントにリンクするのは非常に簡単です。

トークンをバインドすると、デフォルトで2番目の要素になりますが、代替方法であるSMSまたはTOTPを無効にすることはできません。

別の2番目の要因として、TOTPを選択しました。 1Passwordを介して
TOTPの
ソフトウェア実装を使用し
ます (デスクトップ上でのみ、Google認証システムと同じです)。 Yubikey NEOはTOTPにも対応していますが、パスワードを生成するためのキーはトークンに格納されており、抽出できません。 しかし、パスワードは時間に基づいて生成されるため、トークンに時間を転送するためにソフトウェアアプレットを実行し続ける必要があります。
また、他のデバイス機能についても簡単に調べました。
OpenPGPカードは、gpgtools.orgパッケージのGnuPG 2.0.27ですぐに機能しました。
gpg --card-statusApplication ID ...: F3427001240104000006010230340000 Version ..........: 2.0 Manufacturer .....: Yubico Serial number ....: 1023034 Name of cardholder: [not set] Language prefs ...: [not set] Sex ..............: unspecified URL of public key : [not set] Login data .......: [not set] Signature PIN ....: forced Key attributes ...: 2048R 2048R 2048R Max. PIN lengths .: 127 127 127 PIN retry counter : 3 3 3 Signature counter : 0 Signature key ....: [none] Encryption key....: [none] Authentication key: [none] General key info..: [none]
カードバージョン2.0、キーはRSAのみで、2048ビット以下。
カードの操作は、たとえばAndroidで
http://www.openkeychain.org/を使用してNFCを介して行うこともでき
ます 。 この接続の利点は、秘密キーを使用したすべての操作がカードで実行され、キーがカードから離れることがなく、カードから削除できないことです。
残念ながら、先日、Yubikey NEOでのOpenPGPの実装に
脆弱性が
見つかりました。これにより、PINコードの入力をバイパスし、秘密鍵で操作を実行できます。 また、デバイス上のファームウェアの更新はセキュリティ上の理由から禁止されているため、バグを修正する方法はありません。 Yubico社は、湾曲した腺をすべての人と交換することを約束しています。
ファームウェア1.0.8の脆弱なバージョンがありました
Mifare Classicエミュレーションは、私にとって最もわかりにくい機能です。 通常のMifare Classicと同様に、彼女と通信しようとすると、カードは奇妙な動作をします。
ログイン試行のあるlibnfc出力 $ LIBNFC_LOG_LEVEL=3 ./readmifare1k.py -s 115200 -l /dev/tty.SLAB_USBtoUART debug libnfc.config key: [allow_autoscan], value: [false] debug libnfc.config key: [allow_intrusive_scan], value: [false] debug libnfc.config key: [log_level], value: [1] debug libnfc.config key: [device.name], value: [microBuilder.eu] debug libnfc.config key: [device.connstring], value: [pn532_uart:/dev/tty.SLAB_USBtoUART] debug libnfc.config Unable to open directory: /usr/local/etc/nfc/devices.d debug libnfc.general log_level is set to 3 debug libnfc.general allow_autoscan is set to false debug libnfc.general allow_intrusive_scan is set to false debug libnfc.general 1 device(s) defined by user debug libnfc.general
カードには7バイトのUIDがあります
ATQA (SENS_RES): 00 44 UID (NFCID1): 04 1b b1 4e f7 00 f1 SAK (SEL_RES): 28 ATS: 78 f7 b1 02 59 75 62 69 6b 65 79 4e 45 4f 72 33
物理的には、RFIDタグは非常に良好に機能します。小さなアンテナにもかかわらず、地下鉄のリーダーは3センチメートルから「つかみます」。
おわりに
私が使用していたすべてのハードウェアトークンと比較して、U2Fテクノロジーは非常に便利です。 証明書のインポート、ドライバーのインストール、Javaアプレットの使用などに煩わされる必要はありません。
Windows 7、Mac OS 10.10、Ubuntu 14.0.4での実行をテストしました。 すべてのシステムで、Chromeはドライバーをインストールせずにすぐにトークンを取得しました。 一般に、展開は非常に単純で理解しやすいため、子供でも処理できます。
また、完全にオープンな仕様、プラグイン、ライブラリの存在により、U2Fをあらゆるアプリケーションに固定できます。