自由研究

FIDOについてなるべく平易にまとめてみる

投稿日:

この記事は情報系の学生ぐらいの知識を想定しています。なるべく平易に書きますが、わからないことがあったら自分で調べながら読んでください。

話の枕

こないだ、Pixel 3aというGoogle製のスマホを買った。すると5,000円のGoogleストアのクーポンが付いてきた。GoogleストアというのはAndroidのPlayストアとは別モノで、ソシャゲーの課金とかには使えない。こいつぁ買うモンねぇな、と思ってしばらく放置したら、いつの間にかTitan セキュリティ キー バンドルなるものがラインナップに増えていて、6,000円といい感じの価格だったので、せっかくなので買うことにした。
このTitan セキュリティ キーというのは、FIDO対応のセキュリティトークンなのだけど、実はFIDOについて詳しく調べたことがなかったので調べてまとめることにした。

強固な認証の必要性

近年、「二段階認証」という言葉が流行っている。二段階認証というのは、ごくザックリ言うと、パスワードだけじゃ危険だから、もう一つ別の認証を加えて安全にしようという考え方のこと。
で、なぜパスワードだけじゃ危険かというと、これもザックリ言うと、パスワードが漏洩したら、地球の裏側の人でもあなたに成りすますことができるから。最近の7payの不正利用事件が良い例で、自分の住んでいるところとは全く違うセブンイレブンで大量の不正購入が行われた。

パスワードが漏れても大丈夫なようにしよう、ということで強固な認証が求められるようになってきて、二段階認証を採用したシステムもたくさんでてきた。
そこで乱立しはじめた認証について標準規格を作ろう、っていうことで出来たのがFIDO、らしい。

3つのFIDO

FIDOは今のところ3つの規格がある。

  • FIDO UAF (Universal Authentication Framework)
  • FIDO U2F (Universal 2nd Factor)
  • FIDO 2.0

このうちFIDO 2.0はUAFとU2Fを組み合わせた上でWebAPIにしたようなモノ、らしい。
そして、今回買った「Titan セキュリティ キー」は、FIDO U2Fに対応した機器である。逆に言えばUAFには対応していない。

というわけで今回はFIDO U2Fを中心に説明する。

FIDO U2F

Titan セキュリティ キーを例に

で、今回買った「Titan セキュリティ キー」というのは、Googleストアで以下のように説明されている。

Titan セキュリティ キーをパスワードと組み合わせて2 段階認証を構築することで、フィッシングを防止し、オンライン アカウントへの不正アクセスを防ぎます。

さすがGoogle、的確かつシンプル、誤解なく説明がまとまってる。
FIDO U2Fとはつまり、

  • パスワードと組み合わせる
  • 2段階認証を構築する
  • フィッシング詐欺を防止する
  • 不正アクセスを防げる

というものである。

パスワードだけだとどうなるか

FIDO U2Fが何を防ぐかを示すために、FIDO U2Fが無い場合にどうなるかを考えてみる。

たとえばあなたがあるECサイトにアカウントを持っているとする。
このサイトは、ユーザー名とパスワードだけでログインできる。

ある日あなたのメールアドレスに、「アカウントを確認してください」というメールが届く。
メールにあるリンクをクリックすると、見慣れたログイン画面が開かれる。
あなたは特に疑いもせずにユーザー名とパスワードを入力する。
これがフィッシング詐欺だ
実はアカウント確認メールはネット犯罪者の送信したメールで、ログイン画面も真っ赤なニセモノだ。
こうして犯罪者は、ユーザー名とパスワードを盗み出す。

犯罪者は世界中のあらゆるメールアドレスに対してこのようなフィッシング詐欺メールを大量に送信していて、ユーザー名とパスワードを盗み出している。
もしくは、他のいろいろなWebサービスにハッキングして、大量のユーザー名とパスワードのリストを手に入れることもある。ほとんどのユーザーはパスワードを使い回すので、別のWebサービスにも高確率でログインできる、というわけである。

犯罪者はユーザー名とパスワードがあればいくらでもログインできる。
あなたのアカウントで、好きなものを購入できてしまう。

かんたんな図にまとめておこう。

そこで、パスワードだけではログインできないように、FIDO U2Fの出番である。

FIDO U2Fはどのようにユーザーを守るか

さてFIDO U2Fは、物理的なトークンである。完全にそうだと決まったわけではないようだが、まぁ、Titanセキュリティキーは物理的なトークンである。
Titanセキュリティキーの場合はこんな形をしている。ちなみにGoogleストアの写真をパクってきた。なお、指紋認証センサーは無い。もう一度いうが、Titanセキュリティキーは指紋認証ではない

物理的なトークンの何が良いか、というと、ネット越しに盗めないことだ。
FIDO U2Fを使う場合、ユーザーはログイン時にパスワードと一緒に「トークンを持っている」という情報を送信する。
物理的に窃盗を働かない限り、トークンが盗まれることはない。パスワードだけ盗んでもログインできないので、フィッシング詐欺に強い、というわけだ。

しかし待ってほしい。Titanセキュリティキーがいくら物理的なモノだからといって、結局はインターネットで通信して認証する。「Titanセキュリティキーのデータ」が盗聴されたらオシマイなのではないか。
そこで、FIDO U2Fは「公開鍵暗号方式」と「チャレンジレスポンス認証」を採用している。
これらの技術の詳細は省くが、ログイン時に送信する「トークンを持っているという情報」のデータが毎回変わる仕組みである。
そのため、たとえ通信が盗聴されていたとしても、同じデータを使ってもログインできないわけだ。

この、「トークンを使った認証方式」や、「トークンそのものの安全性」について規格を定めているのがFIDO U2Fであり、FIDO U2Fに対応した機器・Webサービスであれば同じように使うことができる、というのがFIDOの利点だ。

2段階認証 / 2要素認証

さてFIDO U2FはUniversal 2nd Factorの略であり、直訳すれば「2要素」となるだろう。
一方でGoogleはTitanセキュリティキーを「2段階認証」の機器としている。
ここで「2段階」とは、2つの手間が必要だ、という意味で、「2要素」とは、2つの要素を使う、という意味だ。
少し意味が違うので説明しておこう。

そもそも認証における専門用語として、「認証の3要素」という言葉がある。
この3要素とは、「知識情報(Something You Know)」「所持情報(Something You Have)」「生体情報(Something You Are)」の3つを指す。
知識情報とはすなわちパスワードなどのことで、生体情報とは指紋や静脈、顔認証などのことだ。
そして所持情報というのが、今回出てきたTitanセキュリティキーのような、「モノを持っている」という情報である。

「2要素認証」というのは、認証の3要素のうち2種類を組み合わせて認証するよ、という認証方式のことである。
逆に言えば「2段階認証」には「認証の3要素を組み合わせろ」という意味合いはないので、集合として「2要素認証⊂2段階認証」の大小関係がある。

通常、「パスワード(知識情報)+トークン(所持情報)」で2要素認証を組むのが普通であるが、Googleは少し集合を小さく取って2段階認証という言い方をしたのだろう。

一般的な2段階認証について

せっかくなので一般的に用いられる2段階認証を説明しておこう。
通常、2段階認証を採用したWebサービスは、登録時に、ケータイの電話番号が求められる。
そして、ケータイのSMSに認証コードが届き、認証コードを入力することで登録が完了する。
これは、「ケータイそのもの」を所持情報として利用した2段階認証である。
実際にはケータイのシリアルNoなどが所持情報として保存されており、ログイン時に送信されている(はずだ)。
仮に新規デバイスからのログインがあった場合、登録したケータイに本人確認の連絡が飛び、「このデバイスを信用するか」という選択を行う(はずだ)。
世間的にこのパターンが浸透しすぎたため、「2段階認証?あのSMSにコードが届くやつね?」という認識になってしまっているが、実際にはケータイを所持情報として利用した認証方式であることは理解しておきたい。

FIDO UAF

以上がFIDO U2Fについての説明になるが、FIDO UAFについても触れておこう。

FIDO U2Fは所持情報を利用した認証方式であるため、単体では本人確認として不適切である。
物理的な窃盗を受けた場合、ごく簡単に不正な認証ができてしまう。そのため、パスワードと組み合わせる必要がある。

FIDO UAFはパスワードと組み合わせることなく使える認証方式である。主に指紋による生体認証を行う。
FIDO UAFの特徴は、「生体認証をデバイス内で完結させ、Webサービス側には認証の成否のみを通信する」という点である。
これもパスワードと同じく、指紋データそのものを通信に乗せると盗聴の危険があるためだ。
FIDO規格に対応した機器はFIDO Allianceに登録される。これにより「生体情報+所持情報」の2要素認証になっている(と思う)。さらに不正な機器を使用した指紋の偽装やハッキングなどからも守られている。
また、Webサービス毎に指紋を登録する必要もないため、万が一Webサービスの運営会社がユーザ情報が流出したとしても、ユーザの指紋情報は流出せず、他のWebサービスへの不正アクセスの心配もない。

結言

以上がFIDOについて大雑把に調べた内容である。
アイデアや方式は非常に強力で、不正アクセスへの耐性は極めて強いと思われる。

現時点では対応するWebサービスは多くないが、7payの事件のおかげで世間的に認証への感心も強まっており、FIDO普及の追い風になっている。銀行やECサイトでの対応が進めば一般に浸透する日も近いだろう。

一方で、FIDO U2Fは所持情報を基本とした認証方式のため、トークンそのものに対して「厳重に保管しつつ常時持ち歩く」という難しい運用が求められる。
しかもトークンはクレジットカードサイズでもなく、丈夫な金属製というわけでもない。ネット上では、「鍵束に付けていたらこすり傷がついちゃった」などのレビューもあり、取り扱いはすこし難しそうだ。
FIDO規格をパソコンやスマートフォンに組み込んだ例もあり、専用のハードウェアを購入して取り扱うよりも、スマホの1アプリとして利用するスタイルが普及するのかもしれない。

-自由研究

執筆者:

関連記事

no image

3DF Zephyrでフォトグラメトリーする際のノウハウ

最近フォトグラメトリーにハマり、その成果として3DF Zephyrを使って神社まるごと3D化しました。 横浜熊野神社 by givemegohan on Sketchfab このときのノウハウを共有し …

no image

「遠赤外線で温かい」とは何か調べてみた

皆さん、遠赤外線好きですか? コタツとか、サウナとか、電気ヒーターとかから出てるらしいです。 焼き芋とか焼き鳥とか、土鍋とかも、遠赤外線で美味しくなるらしいです。 どういうことなんでしょう。私はよくわ …

no image

オンライン麻雀ゲームの牌山イカサマの検証について

今日、雀魂のアップデートがあり、牌山の検証システムに使われるハッシュ値がMD5からSHA-256にアップデートされました。 で、牌山検証とはなんぞや、というと、オンライン麻雀はシステムがイカサマをして …

no image

謎のアパレルブランド「電子女子」について

電子女子 ここに謎の新アパレルブランド「電子女子」がある。 今わかっているのはtwitterアカウントのみ。 2019/11/1現在、ツイート数は3つ。全部引用する。 Coming soon #電子女 …

no image

不定期連載「認証と周辺技術」その1「認証と識別」

たまには技術っぽい記事もないとな、と思ったので、最近ちょっと気になっている「認証」について、調べながらまとめます。 さらっと書ける範囲でこまめに書きたいです。 はじめに みなさんは普段の生活においてど …