🔐

passkeyでもマイナカードでも!?みんなが気になるユーザー認証方式とクレデンシャル管理

2022/10/24に公開

ritouです。

最近ちょっと気になってしまう人が多そうな話です。

passkeyが気になっちゃう

最近、passkeyという仕組みに注目が集まっています。
docomoも対応予定だと発表があった件です。

https://www.docomo.ne.jp/info/news_release/2022/10/17_00.html

デバイス単位ではなく、プラットフォーマーのユーザー単位で秘密鍵が同期される...FIDO認証におけるアッピールポイントの一つである堅牢性みたいなポリシーを緩めてもリカバリー困難問題を解消しに行ったこの方針に、ついつい考えたくなるのがクレデンシャル管理です。

  • デバイス単位で秘密鍵が保存され、ローカル認証により正当なユーザーが利用したことを検証された上で公開鍵暗号を利用した認証処理が行われるのがFIDO認証
  • それがユーザー単位になるってことは...これまでのFIDO認証よりセキュリティレベル?は下がってしまうよね???
  • Attestationのところが空になったらサービス側が検証できなくなる vs そもそもAttestation検証っている?使わなくね?

みたいな話があります。

マイナンバーカードでも気になっちゃう

別件で、こんなTweetを見かけました。

https://twitter.com/aono/status/1583603801269088257

最初のTweetの続きで、こうもおっしゃられています。

https://twitter.com/aono/status/1583703240675561472

https://twitter.com/aono/status/1583706679971307520

最初のTweetを引用した "わかってない系" ツイートがいっぱい溢れていて元のツイートがよく読まれてない可能性もありますが、いわゆるクレデンシャル管理が気になっちゃってる話ととれます。

  • 紛失しやすい物理カード : 所持要素の部分も弱い
  • パスワードがどこかから漏洩していることを前提に : サービスからの漏洩リスクを考慮するならば複雑なパスワードもあれですが、暗証番号単体で見ると推測しやすい、使い回しやすい、聞き出しやすい、忘れやすいなどがあるので不安なので、組み合わせる認証部分はなんとかしろ

提供するサービスに対して適切なAALになっているか というのと、 では他の認証方式と組み合わせたところで誰しもが利用できるUXとなるのかどうか というところで、十分に検討されてきたのだとは思いますが、なかなか難しいですね。

みんな気になるユーザー認証

特に新しい話ではないですが、ユーザー認証のセキュリティなどについて考慮する場合、認証方式自体の仕様や実装とクレデンシャル管理の両軸を整理する必要があります。

  • 認証方式自体の仕様や実装
    • ピースサインの画像や大根の指で生体認証が使えるのやばい
    • パスワードに使えるのが英数のみ、桁数短いのってやばい
    • スマホの顔認証の精度がー
    • エラーカウンタが...ないだと...?
    • 1時間以上Push通知が送られたり
  • クレデンシャル管理
    • SMSが第3者に...
    • 悪意のあるFIDO Authenticatorって作れるんだっけ?
    • TOTPの処理なんてライブラリで簡単に実装できるよね
    • 端末の管理や共有機能次第ではpasskeyの鍵情報が第3者に...
    • マイナンバーカードをなくすかもしれない
    • 私が渋谷でスマホと財布を落としてから4年が経ちました

マイナンバーカード、クレジットカード、キャッシュカードなどでは所持要素 + 暗証番号という知識要素による認証が採用されています。

https://twitter.com/ritou/status/1583820640024338438

ということは、カードを所持していて暗証番号を知っている人物を正規のユーザーとして扱うわけです。
それ以上でも以下でもないわけですが、この認証方式の主にクレデンシャル管理の部分まで考慮して、マイナンバーカードを利用するサービスの機能、扱うデータに見合った安全性を持つかどうかが議論のポイントになるでしょう。

これは普段のC向け/B向けのサービスでも同様の話が出てくるでしょう。
前者の認証方式自体の仕様や実装はガイドラインや評価の仕組みもあるので、それと照らしながら採用する必要はあります。後者はどうでしょうか?

B向けでクレデンシャル管理をちゃんとやらせたかったら端末管理の話になる

B向けのサービスでは特にこういうのが気になるでしょう。
FIDOでもエンタープライズ分野とコンシューマ分野で要件が違うだろうってことは認識されていて、例えば

  • 社員アカウントで利用できる端末を管理したい
  • 社用端末の利用状況を管理したい

みたいな話は情シス管理である程度できると思います。

passkeyのところで話題になったのは、AttestationやAAGUIDによる認証器の検証の必要性というところです。本来ならば認証器のIDみたいなのまでとりてえぇって思ってるかもしれませんが難しい、では他に使える情報はないかっていう思考において同期される鍵で作成されたデータから情報が取れないのは辛い、となるでしょう。

プライバシー保護的な観点からどうしてもクレデンシャルの管理状態について認証フローの途中でサービスが把握するのは難しい状況においては、端末管理側で何かできるとこの辺りの人たちは嬉しいのかもしれません。

C向けサービスでクレデンシャル管理を求めることは難しい?

サービス側の視点で見た時に、悩ましいのもクレデンシャル管理です。

  • 認証方式自体の仕様や実装 しっかりしていると評価されているものを利用する -> これはできるはず
  • ユーザーのクレデンシャル管理を検証する : これは難しい

パスワード認証を採用しているサービスにとって、ユーザーがパスワードマネージャーをちゃんと利用していたら安全です。けど使い回し、推測可能なパスワード、パートナーと共有とかを考えるとたまりません。
passkeyも、AndroidやApple系の端末管理がゆるふわにされていたらどうしようもない気もしてきますが、そこはなかなかサービス側で何かを強制することはできないので難しいですね。

まとめ

  • ユーザー認証におけるクレデンシャル管理に注目が集まっている気がする
  • クレデンシャル管理は認証方式の仕様と実装の話とは別で考慮しなければならない

ではまた。

Discussion