5.1. User Code Brute Forcing (ユーザーコードブルートフォース)
ユーザーコードはユーザーによって入力されるため、ユーザビリティの理由から短いコードがより望ましいです。これは、エントロピーが通常、コードの長さがユーザビリティに影響しないデバイスコードや他の OAuth ベアラートークンタイプに使用されるものよりも少ないことを意味します。したがって、サーバーがユーザーコードの試行に速度制限を実施することが推奨されます。
ユーザーコードは、速度制限やその他の緩和策と組み合わせた場合、ブルートフォース攻撃が実行不可能になるのに十分なエントロピーを持つべきです (SHOULD)。たとえば、暗号化用の 128 ビット対称鍵は今日十分に良いとされています。これは、攻撃者がブルートフォースで正しく推測する 2^-32 の確率を得るために 2^96 の作業を行う必要があるためです。ユーザーコードの速度制限と有限のライフタイムは、攻撃者が「実行」できる作業量に人工的な制限を設けます。たとえば、8 文字の base 20 ユーザーコード(約 34.5 ビットのエントロピー)を使用する場合、速度制限間隔と有効期間は、ランダムな推測による成功の同じ 2^-32 の確率を得るために 5 回の試行のみを許可する必要があります。
ユーザーコードのブルートフォースに成功すると、攻撃者は自分の資格情報で認可グラントを承認できるようになり、その後デバイスは攻撃者のアカウントにリンクされたデバイス認可グラントを受け取ります。これは、OAuth ベアラートークンがブルートフォースされるシナリオとは逆のシナリオであり、攻撃者が被害者の認可グラントの制御を取得します。このような攻撃は常に経済的に意味をなすとは限りません。たとえば、ビデオアプリの場合、デバイスの所有者は攻撃者のアカウントを使用して映画を購入できる可能性があります(ただし、この場合でもプライバシーリスクは依然として残るため、保護することが重要です)。さらに、デバイスフローの一部の使用では、デバイスの制御など、保護が必要なアクションを実行する能力が付与アカウントに与えられます。
ユーザーコードの正確な長さとそれに含まれるエントロピーは認可サーバーの裁量に委ねられており、ユーザーコード形式を決定する際には、特定の保護されたリソースの機密性、ユーザビリティの観点からのコード長の実用性、速度制限などの実施されている緩和策を考慮する必要があります。