コラム セキュリティ

なぜPINはパスワードより単純でも良いのか(初級編)

はじめに

Windows10以降はサインインに様々な方法が利用できるようになりましたが、PINとパスワードってどう違うのか社内で説明するときに悩まれることがあると思います。そんな場合のヒントになったらいいな、というお話です。

なお、非ITセクションへの説明方法を考えるという観点ですので、正確さが若干犠牲になっている面がありますのでご理解いただけますと幸いです。

背景:PINがオンラインパスワードよりも優れている理由、とは?

Windows10以降ではデバイスへのサインイン時に従来通りのパスワードと、Windows HelloとしてPINや生体認証など多様なサインイン方法が標準サポートされるようになりました。

さて、皆様はサインイン方法をどのようにしているでしょうか?今まで通りのパスワードでしょうか?それとも、PINや生体認証を利用しているのでしょうか?数字数桁入れるだけでサインインできるなんてPINは危険だからダメだ、と上司から言われてしまった方もいらっしゃるかもしれません。本当に危険なのでしょうか?

Microsoft社からもPINはオンラインパスワードより安全というアナウンスを出しておりますが、こちらをすでに読んでおり直感的に理解できた情シス担当者の皆様、素晴らしいです!

ですが、同時にそれなりの前提知識を要求する資料であることから、社内への説明資料としてはちょっと使いにくいのではないかと思います。

この記事では、パスワードとPINが似ているけど違う仕組みであることを社内の上司に説明するためのヒントをまとめてみました。なお、特に指定がない場合はWindows10/11の実装を元に説明しています。

前提:オンラインパスワードとPIN

MicrosoftアカウントやAzure ADアカウントなど、オンラインサービスでも利用されるアカウントに使われる「オンライン」パスワードとPINを比較して安全性を論じていることにご注意ください。

ローカルアカウントのパスワードとPINの比較については最後に説明します。

なぜPINの方が安全なのか?

先のドキュメントでは以下の三つの理由で構成されていますが、ここが読み解きにくく感じるところです。

  • PIN がデバイスに関連付けられている
    • PINは多要素認証のうち記憶要素認証である
    • 認証を完了するにはデバイスを所持している必要がある
  • PIN はデバイスに対してローカルです
    • 経路上での盗聴が困難である
    • オープンなネットワークに流れない
  • PIN はハードウェアによってサポートされています
    • 複数回間違えるとロックされる
    • 再試行に厳しい制限がある

実は、身近なものがこの考え方で長年運用されています。

実例:銀行キャッシュカードの暗証番号とPIN

これは、日常で使われている銀行キャッシュカードと暗証番号の仕組みと同じなのです。

暗証番号も数字4桁なのに大きな問題になっていません。キャッシュカードを盗んだ上で暗証番号が分からないと悪用ができないのです。(一緒に盗まれやすい免許証に誕生日が書かれているから、誕生日を暗証番号に使ってはいけないわけです)

認証を完了するにはデバイスを所持している必要がある

いずれも多要素認証になっています。

  • 銀行:所持要素認証がキャッシュカード、記憶要素認証が暗証番号です
  • PC:Windows上では所持要素認証がパソコン本体(その中のTPMセキュリティチップ)、記憶要素がPINです

オープンなネットワークに流れない

記憶要素認証の盗聴から保護されている仕組みがあります。

  • 銀行:専用のATMとその先の銀行システムで閉じた仕組みの中で暗証番号が使われており、外部からの傍受が困難です
  • PC:Windowsであればパソコン内のTPMセキュリティチップに対してPINを送るため、端末外部からの傍受が困難です

再試行に厳しい制限がある

複数回間違えるとロックされる、または再試行回数が制限される仕組みがあります。

回数上限または短時間での再試行に制限がある

  • 銀行:キャッシュカードの暗証番号だと銀行次第ですが3-5回程度となっています。
  • PC:Windowsでは5回目以降の再試行に待ち時間が発生します
    • PIN入力を4回連続で失敗するとチャレンジフレーズの入力を要求され、失敗で再起動が必要になり、さらに4回失敗を繰り返すとチャレンジフレーズの入力が要求され、失敗すると再起動が要求されます。繰り返すたびにチャレンジフレーズを要求されるまでの再試行待ち時間が長く(30秒、1分、2分、5分、10分、30分、1時間、2時間)なります。
    • Windows Hello for Businessはチャレンジフレーズを要求される試行回数をGPOで設定できます。
    • なお、TPMセキュリティチップ自体にも試行回数制限が設定されており、TPM2.0では最大32回です。

試行回数上限に達すると利用不可能

  • 銀行:上限に達するとキャッシュカードと暗証番号による認証は利用できなくなります。解除のためには本人確認書類、キャッシュカードを用意して窓口対応になります
  • PC:上限に達すると標準設定ではサインインできなくなります。PINのリセットにはオンライン上での作業が必要になります。
    • Windows HelloであればMicrosoftアカウントへのサインインを行なって対応しますが、その際には登録していたメールアドレスやSMSなどでの本人確認が必要です。
    • Windows Hello for Businessであれば管理者に連絡して対処をお願いする方法になります。

本当にそうなの?

ここまでで疑問がありそうなので、まとめておきます。

キャッシュカードって複製できると聞いたことあるけど?

所持要素認証を容易に偽造できるのであれば確かに問題ですが、仮にキャッシュカードを複製できても暗証番号が不明な場合は複数回の認証失敗でロックされます。多要素認証が適切に働いている状態です。

また、キャッシュカードも磁気情報方式からICチップ方式へ移行が進んでいますし、Windowsではより高度なICチップ(TPMセキュリティチップ)を採用しています。

銀行の暗証番号をオンラインで入力させているサービスを見たことあるけど?

はい。そういった間違った使い方をすれば大変危険で、過去にそのような配慮に欠けたサービスがあり大きな問題となったのはその通りです。

暗証番号について再試行制限も行われていなかった上、暗証番号を固定して口座番号を変化させ機械的に連続試行する逆総当たり攻撃を考慮されていなかったことが重大な問題を引き起こしたと推測される事例があります。

ローカルアカウントのパスワードはどうなの?

それならWindowsのローカルアカウントのパスワードであればPINと同じではないか、と考えた方もいらっしゃると思います。最後にこの点について説明します。

ローカルパスワード/PINが正しいか確認するための方法の違いがポイントです。ローカルパスワードの場合はPC内部のファイルとして保存されている情報から解析が可能ですが、PINはTPMセキュリティチップと紐づいているため解析が著しく困難です。

これが「Windows はローカル パスワードを TPM にリンクしないため、PIN はローカル パスワードよりも安全と見なされます。」という意味です。

ローカルアカウントのパスワード認証

PCのファイル(レジストリエントリの中にハッシュ化されて保存)と比較します。

PINの認証

TPMセキュリティチップのPIN解除で認証とします。TPMセキュリティチップは解析や改ざんに対する耐タンパ性を備えており、PINを特定する手がかりをPCのストレージから入手することができません。

まとめ

PINがパスワードより単純でも良い理由というのは多要素認証に基づいているからであり、身近な例として銀行キャッシュカードを取り上げてはどうか、というお話をさせていただきました。マイナンバーカードのPINも同様でかつ大変良い例なのですが、長く使われている仕組みの方が社内で理解されやすいのではないかと思います。

こういった身近な疑問も聞かれたときにスラスラと例示を含めて答えられると、自身で何か推進したいときに上司から任せておいて安心だな!と思ってもらえる効果もありますので、うまく活用してみてください。

さて、タイトルで初級編と書いていたのには実は理由がありまして…。裏付け文書がMicrosoft社のドキュメントだと自社製品の説明だから信用できない、より公的な資料はないかと聞かれる場合もあるのではないでしょうか。

そこで、この分野で広く知られているNIST SP800-63と絡めてみようという上級編を考えています。厳しいご指摘を頂きそうなんですが、頑張ってみます。

けーはっく

流れ流され好奇心旺盛なまま色んなお仕事をやってきて、その経験を活かしてクラウドネイティブでお仕事しています。リモート情シス&コンサル歴は6年くらいですが、インターネット歴25年。