オルタナティブ・ブログ > 路の上で >

日頃考えていることをぽちぽち書きます。

AppleのPasskeys実装を調べ始めて、W3C Web Authenticationへ

»

AppleのPasskeys実装を調べようと、彼らのドキュメントを読んでみましたが、いきなりAPIの解説なので、ほとんどわかりません。
Public-Private Key Authentication
Register and authenticate users without using passwords.

そこで、その中で紹介されていたW3Cの仕様へ。
Web Authentication: An API for accessing Public Key Credentials Level 2

これの5. Web Authentication APIの概要図(Figure 1 Registration FlowとFigure 2 Authentication Flow)でやっと構成を理解できました。
以下は参考にFigure 2 Authentication Flowです。

Relying Party Serverは、ユーザー登録、認証を行うサーバーです。それぞれ識別のためのID (Relying Party Identifier)を持ちます。ユーザーを認証するため、鍵ペアの公開鍵を記録しています。

Authenticatorは、Relaying Partyに対応するユーザー情報を記録し、Relying Partyからの要求に基づいて認証情報を返します。認証するための鍵ペアはAuthenticatorが生成します。形態としては、Browserと一体になったり、PCの別アプリであったり、さらに別スマホであったり。鍵ペアはRelying Party Identifier (RP ID)とセットで記録されるので、人を騙すレベルのフィッシングでは破れません。

中央(RP JavaScript ApplicationとBrowser)はクライアント側で、Relying PartyのJavaScriptアプリケーションがあり、Browserを介して、Authenticatorとやりとりします。

盗まれたり、たまたま忘れたり、壊れてしまったり、Authenticatorが無いと無力です。再発行等はサービス依存なのかもしれませんが、どうするのか気になります。Appleの実装はiCloudで秘密鍵を共有するので、複数の機器を持っていれば大丈夫でしょうけど、iPhone 1台しかない人も多そうですね。

今でもパスワードマネージャーを使っていれば、簡単にフィッシングに引っかかることはありませんが、パスワードに対応する根幹の秘密鍵を通信しないのは良いですね。

Comment(0)