Same Device Flow/Cross Device Flow
Same Device Flow/Cross Device Flowとは、証明を提示するときに、同じ端末の中で完結する流れと、別の端末をまたぐ流れを指す言い方のことです。
別表記:same-device/cross-device/同一端末フロー/別端末フロー/同一デバイスフロー/クロスデバイスフロー
同じ端末で完結する場合(Same Device Flow)
スマートフォンでWebサイトを見ていて、そのまま同じ端末の所有者側のソフトウェア(ウォレット)から提示する流れです。画面の移動だけで済みます。
提示したデータは、所有者側のソフトウェアから確認する側へ、戻り先のURLのうち # より後ろの部分(フラグメント)に付けて渡されます。受け渡しは画面の移動(リダイレクト)で行われます。
別の端末をまたぐ場合(Cross Device Flow)
パソコンの画面に出たQRコードを、スマートフォンで読み取って提示する流れです。提示したデータは画面の移動ではなく、確認する側のサーバーへ直接送られます。
QRコードには要求の在り処だけを入れ、本体は別途取りに行く形が推奨されています。QRコードに収められる量に限りがあり、要求に署名や暗号化を施したい場合にも都合がよいためです。この取りに行く形は Same Device Flow でも使えます。
よくある誤解:QRコードを読み取るだけなら安全か
Cross Device Flow には、固有の弱点があります。攻撃者が自分の画面に出した要求を他人に読み取らせ、返ってきたデータを自分の手続きに使う、という手口です。
Same Device Flow では、提示したデータが必ず元のブラウザに返るため、この手口は成立しません。Cross Device Flow では、この守りが働きません。高い水準を求める取り決め(HAIP)は、Same Device Flow だけを使うことを推奨しています。
