トークンコード、スマートカード、FIDOキー:VPNが受け入れるもの
コードキー、スマートカード、FIDOキーはいずれもハードウェアトークンと呼ばれます。それぞれ異なる流れに関わり、証明書の鍵を保持するのはそのうち一つだけです。
同じコネクタと同じキーホルダーの輪を持つ三つのデバイスが、互いに関係のない三つのやり取りに参加します。一つはサーバーが検査するコードを表示し、一つはデバイスから決して出ない鍵で署名し、もう一つは独自のプロトコルでブラウザーのサインインを承認します。したがって、VPNが証明書を使うべきかハードウェアトークンを使うべきかという問いは、形式とデバイスの種類を比べていることになります。答えは、実際に買ったのが三つのどれかによって変わります。
デバイスの前に証明を名づける
ワンタイムコードトークンは、認証サービスが独自の仕組みで検証する値を生成します。VPNはRADIUSやフェデレーション型のIDプロバイダーを通じてそのサービスに到達できます、そしてトークンはトンネル自体に属するものを保持する必要がまったくありません。それが証明するのは、その人がコードを生成するデバイスを持っていることです。コードを入力したマシンについては何も証明しません。
スマートカード型のトークンは秘密鍵を保存し、要求に応じて署名処理を行います。これにより鍵を外部に出すことなく証明書の身元が証明され、隣にある証明書は公開の材料であり、その証明書を渡すことは鍵を渡すこととはまったく別の行為です。
FIDOキーはさらに第三のプロトコルで話します。ブラウザーからのサインインはIDプロバイダーでそれを使えますが、そのサイトでの成功は、同じ鍵がVPNクライアントのスマートカードインターフェース経由で現れることを意味しません。
一部のデバイスはこれらのアプリケーションをいくつも並行して実装しており、ベンダーのドキュメントがモードを別々に挙げているのはまさにそのためです。市場のすべての鍵がすべてのモードに対応する証拠ではありません。
ハードウェアが守るのは鍵であり、ポリシーではない
証明書を基盤とするデバイスのPINは通常、鍵のローカルな使用を許可するものであり、VPNのアカウントシステムが検査するパスワードではありません。NISTの認証器に関するガイドラインのような指針は、そのローカル入力をアクティベーション秘密と呼び、認証器そのものとは区別しています。保証は設計全体から生まれるもので、画面に出るプロンプトの数からではありません。
登録、更新、削除はいずれにしても身元の所有者のもとに残ります。誰が登録できるかを決め、資格情報を正しい人に結びつけ、デバイスを失ったときに交換を可能にする人が依然として必要です。新しい鍵を買っても古い鍵は失効しません。
ハードウェアを選ぶ前に、利用者がコードを入力するのか、署名鍵を解錠するのか、ブラウザーのプロンプトを承認するのかというサインインの儀式を書き出してください。答えごとにクライアント、ゲートウェイの設定、ヘルプデスクの手順が変わります。
実際に流れが分かれるところ
コードトークンは導入が最も簡単で、入力したコードをリアルタイムで中継できるため巧妙な偽ページには最も弱い方式です。証明書を基盤とする鍵はその種の攻撃に耐えますが、発行と失効がサービスの一部になるため運用コストが高くなります。FIDOキーはWebのサインインとともにあり、IDプロバイダーがこのアプリケーションに対応しているかどうかに完全に依存します。
混在した環境はよくあることで自動的に間違いではありません。トンネル用の証明書と管理コンソール用のコードトークンという組み合わせは両方が同じ身元に対して登録されていれば筋の通った分割であり、壊れるのは誰も文書化していない分割で、ヘルプデスクが利用者にどの要素が欠けているか言えない場合です。
判断を具体的にする
実際の利用者が行う手順の並びとして儀式を書き出し、クライアント、ゲートウェイ、IDプロバイダーのすべてがその並びに対応しているか確認します。不一致はたいてい最後の手順で現れ、クライアントがデバイスにまったく届かないことが分かります。
そのうえで、デバイスを失ったときや証明書が切れたときに何が起きるかを確認します。その答えが書かれていなければ、展開には月曜の朝に発覚する穴があります。
pkcs11-tool --list-slots
pkcs11-tool --list-objects --type cert