ここ最近でPasskeysっちゅう技術が流行っているのか流行ってないのかどうなんだ?っていう時代が来てますよね。
世の中のPasskeysの認知があまり高くない?
「パスワード入れなくてもログインできるやつやろ?」
「パスワードいらなくなるやつやろ?」
「スマホあったらいろんなサービス入れるようになるやつやろ?
とか合っているものも合ってないものもどれも「パスキー」だとして流布されつつあって、実際どうなんだ?みたいなところがある技術ですよね。
僕も初めはiCloudにPCのWebブラウザログインするのに一回設定しとけばiPhoneから入れるようになるんだろ」とかいうくらいのやんわりした認識でしかいなかったわけでこれは「否」でした。
確かに、パスキーログインできるサイトに手持ちのスマホから設定をすれば次からログインが楽になる、それは間違いではないのですが、半分正解と言った所かなと思います。
流行らない理由は認証器設定問題。
認証器というのはお手持ちのスマホの機能で、厳密に言えばスマホの中に入っているiPhoneならicloud Chainというパスワードを司っている仕組みであり、AndroidだとGoogleアカウント内に存在するパスワードマネジャーだったりします。
それがあるからと言って認証器が使えるわけでなく、Chromeの場合はGoogleアカウントの設定で2段階認証の設定を済まして、パスキーに使う端末の登録をしなければ認証器が動かないのでその設定を行った人だけがPasskeysが使える準備ができているといえます。ぎゃくにこの設定が周知されて誰でも設定できてしまえばPasskeysを享受できます。あ、でも後述のBluetoothアダプタも必要です。
WindowsにはWindows Helloという認証器がありますが、それはWindows11以上でないとスマートフォンを認証解除キーとして使えないので、Windows11以上でないしダメだし、認証器をGoogleのものを使うためにPCからChromeを使ってWebサービスにログインする場合は、Bluetooth4.2以上のBLEの対応したUSB端末がないとパソコンとスマホとの通信ができないのでマトモに使い始めるまでのハードルが高いのが非常にネック。
バッファロー USB Bluetooth 5.0対応 アダプター 小型 ブラック BSBT5D205BK
MacなどはもとからBluetoothがついているのでとてもPasskeysが使いやすい環境にあるが、Windowsはハードの実装がマシンに寄ってまちまちなのでなかなか流行らないという現状がありますね。
実装も難しいのが相俟って今はまだはやってない
Web実装もNode.jsだと簡単にWebAuthを実装できるサーバとクライアントが作成できるsimplewebauthnライブラリが提供されているのでバックエンドとフロントエンドがあえば結構簡単に実装できそう。
ただ、 PHPなどになるとちょっとややこしくなるイメージ。これもSimpleWebAuthnライブラリのbrowserライブラリを使えばはまりポイントを半分に減らせるかもしれないですね。
流行って欲しいとは切に思うが、がんばろうぜWeb技術者!
パスワード打つのが面倒いのでこの仕組みがどのサービスにも入っていればログインは相手側サーバから送られてきたデータと手持ちのスマホとの認証やり取りだけでログインできるのでパスワードいらずとなります。
サーバサイドからクライアントサイドまで広くて考えないといけないので少し難易度が高いかもと思いますが、使いこなしてやりてぇなと思いますね。