タイミング攻撃を防ぎながら、2 つの同じ長さの文字列が等しいかどうかをチェックする古典的なアルゴリズムがあります。
foldl bitwiseOr 0 (zipWith bitwiseXor firstString secondString) == 0
このようなシナリオでは、悪意のあるユーザーがマシンに、隠された秘密の文字列と入力文字列を比較させ、それらが同じかどうかを報告させます。たとえば、パスワードが暗号化されているがハッシュ化されていないブルート フォース パスワード攻撃を考えてみましょう。一致する頭文字が多いほど、パスワードが一致しないと判断するのに時間がかかります。ユーザーが効果を測定できれば、パスワードを最初から最後まで段階的に推測できます。
しかし、どちらの文字列が大きいか、または等しい場合にそのような攻撃に抵抗する一般的なアルゴリズムはありますか?