The claw finding problem is a classical problem in complexity theory, with several applications in cryptography. In short, given two functions f, g, viewed as oracles, the problem is to find x and y such as f(x) = g(y). The pair (x, y) is then called a claw. Some problems, especially in cryptography, are best solved when viewed as a claw finding problem, hence any algorithmic improvement to solving the claw finding problem provides a better attack on cryptographic primitives such as hash functions.
Let
A,B,C
f:A\toC
g:B\toC
(x,y)\inA x B
f(x)=g(y)
If we view
f,g
|A| ⋅ |B|\geq|C|
|A| ⋅ |B|
(x,y)
x\inA,y\inB
1/|C|
|A| ⋅ |B|\geq|C|
If classical computers are used, the best algorithm is similar to a Meet-in-the-middle attack, first described by Diffie and Hellman.[1] The algorithm works as follows: assume
|A|\leq|B|
x\inA
(f(x),x)
f(x)
y\inB
g(y)
O(|A|+|B|)
O(|A|)
If quantum computers are used, Seiichiro Tani showed that a claw can be found in complexity
\sqrt[3]{|A| ⋅ |B|}
|A|\le|B|<|A|2
\sqrt{|B|}
|B|\ge|A|2
Shengyu Zhang showed that asymptotically these algorithms are the most efficient possible.[3]
As noted, most applications of the claw finding problem appear in cryptography. Examples include: