Average Case Hardness Assumptions
A Summary of Average Case Hardness using the DistNP Complexity Class.
Preface/Introduction:
After taking Great Ideas in Computer Science (15-251) I remember being enamoured by all of the fascinating new topics that we learned of. From turing machines, undecidability, discrete finite automata (DFAs), and quantum computing (from my goat Ryan O'Donnel), I thoroughly enjoyed pretty much every topic. But one topic stood out to me more than the others, and that was .
The concept that some family of problems were easy to verify and (conjectured to be) hard to solve was pretty interesting. And the fact that polynomial time reductions could expand these classes of problems seemed very useful. With this I was also becoming increasingly interested different cryptographic algorithms while TAing and learning about cryptography in these Theoretical CS Classes [see my Quantum Cryptography Project :)]
In the past, It really bothered me that when learning popular cryptography algorithms (RSA, Diffie-Hellman, etc.), that they were based on problems (like integer factorization and discrete-log) that were "easy" for quantum computers to break. While practical quantum computers are distant, it still bugged me. Thus looking for NP-hardness assumptions seemed to me the best way to ensure that quantum computers wouldn't crack future encrypted messages easily, as a firm believer.
Misconceptions:
During my individual thoughts about NP-hard encryption schemes I incorrectly assumed that using any NP-hard problem as a cryptographic primitive would be sufficient. I forgot that NP-hard problems are only hard in their "worst-case" (which we will define in the next section). In order to encrypt some value, I would need to encode the value into some hard problem and still preserve the hardness of that problem with some high probability.
For example, one thought I had at the start was that if you could generate a k-Clique in a way that encodes a bit (by having the graph in k-Clique if b=1 and not in k-Clique if b=0) such that the decrypter knows some secret about how the graph was generated so they can efficiently check k-Clique while an adversary couldn't check efficiently (due to it being NP-hard in my mind). However, this doesn't address the fact that degenerate cases that are easy to solve can be generated or even how a secret would be stored.
Thus we need a notion of how hard problems are to solve when randomly generated from a probability distribution, and perhaps a class of problems that may be useful for cryptographic primitives.
Definitions:
-
(Def 1) Complexity Classes: Let be a language and be an alphabet. We say that for any complexity class , is -Hard iff every language in can be reduced to There exists a polynomial-runtime algo () mapping to (). [A karp reduction in particular].
-
(Def 2) The Class DistNP: Consider the following class of languages where is a poly-time sampleable pdfProbability Density Function. We call elements in and "distributional problems".
-
(Def 3) Reductions for DistNP: We say that a distributional problem reduces to iif there exists a poly-time function such that:
- 1.) is a valid reduction:
- 2.) dominates : For every and , and for every :
-
(Def 4) Polynomial Time on Average: Suppose we have an algorithm for a distributional problem that runs in time on input . We say that algorithm has poly runtime on average if there are constants and such that: .
-
(Def 5) The Class AvgP: We say a distributional problem if there exists an algorithm that decides correctly on all inputs, and whose runtime is polynomial on average with respect to , in the sense of (Def 4). Intuitively, is the average-case analogue of : that a random instance (drawn from ) is easy with overwhelming probability.
-
(Def 6) DistNP-Completeness: A distributional problem is -complete if every reduces to it in the sense of (Def 3). This is the distributional analogue of NP-completeness: if we can show -complete problems exist, then showing even one of them is in would collapse entirely every distributional problem in NP, under every polynomial-time sampleable distribution, would suddenly be easy on average
WIP
References
https://lucatrevisan.github.io/cs278-08/lecture23.pdf