予測可能なシリアル番号攻撃とは、特定の目的のためにシリアル番号を生成するアルゴリズムを推測、発見、またはリバースエンジニアリングし、そのアルゴリズムを使用して新しいシリアル番号を予測し、新しく生成されたシリアル番号を不正な目的で使用するセキュリティ侵害の一種です。不正な目的とは、不当な利益を得るため、またはシリアル番号の正当な所有者へのサービスを拒否するためです。
電話カードが販売されており、カードに印刷されたシリアル番号を入力することで電話サービスを利用できるとします。 アリスはボブに電話をかけるために電話カードを正規に購入し、彼女のカードのシリアル番号は0003です。攻撃者のマロリーも2枚の電話カードを購入し、彼女の電話カードに印刷されたシリアル番号が0001と0002であることに気づきました。マロリーはカード0001と0002の残高を使い切った後、これらのシリアル番号を生成するために使用されているアルゴリズムが単純な数列であると推測し、0003が有効なシリアル番号であると予測し、プロンプトが表示されたら0003を入力して追加の電話サービスを受けました。アリスが自分のカードを使おうとすると、残高が盗まれており、カードは無価値になっていることに気づきました。
予測可能なシリアル番号攻撃を防ぐ一般的な方法は、SHA-2などの暗号学的ハッシュ関数を使用して実際のシリアル番号を生成することです。発行組織は内部的に、シリアル番号生成のためのソルトとして(擬似)乱数ナンスを作成し、それを秘密に保持します。発行者は内部シリアル番号をインクリメントしてソルトに付加し、計算されたメッセージダイジェストを使用して実際のシリアル番号を作成します。発行者は、誤って同一のシリアル番号を2つ発行しないように、既存の値との衝突を防ぐよう注意する必要があります。