이것은 본질적으로 계산 복잡성 클래스의 영역입니다. 예를 들어, 클래스 BQP는 양자 컴퓨터에서 효율적으로 해결 될 수있는 모든 문제의 집합으로서 조잡하게 기술 될 수있다. 복잡성 클래스의 어려움은 많은 클래스 사이의 분리, 즉 한 클래스에는 있지만 다른 클래스에는없는 문제의 존재를 입증하기 어렵다는 것입니다.
어떤 의미에서, "이 양자 알고리즘이 그것을 깨뜨릴 수 없다면 안전하다"고 말할 수 있으면 충분합니다. 올바른 알고리즘을 사용해야합니다. Jones 다항식의 근을 찾는 것과 같은 BQP 완료 알고리즘이 필요합니다. 모든 양자 알고리즘은 BQP 완료 알고리즘의 인스턴스로 캐스트 할 수 있습니다. 그러나이 알고리즘을 크래킹에 사용 하는 방법 은 완전히 불분명하고 사소하지 않습니다. 당신이 직접 물건을 무차별 공격 할 수 없다는 것을 보는 것만으로는 충분하지 않습니다. 따라서이 방법은 그다지 도움이되지 않습니다.
우리는 사후 양자 암호 시나리오에서 무엇을 원합니까? 우리는 필요합니다 :
- 기능 y=f(x) 암호화 목적으로 쉽게 계산할 수 있습니다.
- 그 반대의 경우 f−1(y) 양자 컴퓨터에서 쉽게 계산할 수 없습니다. 즉 문제 등급이 BQP 외부에 있습니다.
- 비밀이 주어진다면 z고전적으로 효율적으로 계산 가능한 기능이 있습니다 g(y,z)=x즉, 보충 정보, 기능 f(x)반전 될 수 있습니다. 이것은 올바른 사람 (개인 키를 가진 사람,z) 메시지를 해독 할 수 있습니다.
마지막 글 머리 기호는 복잡성 클래스 NP의 정의입니다. 솔루션을 찾기 어려울 수도 있지만 증명이 주어지면 솔루션을 쉽게 확인할 수있는 문제 (우리의 경우 개인 키에 해당) .
따라서 우리가 따르는 것은 NP의 문제이지만 BQP의 문제는 아닙니다. 우리는 NP = BQP인지 알지 못하기 때문에 그러한 것들이 존재하는지 모릅니다. 그러나 해결책을 찾는 좋은 방법이 있습니다. 우리는 NP- 완전 문제를 고려합니다. 이것들은 NP에서 가장 어려운 문제입니다.≠NP (일반적으로 믿어지고 있음), NP- 완전 문제는 확실히 BQP에 있지 않습니다. (복잡성 클래스에 대한 문제가 완료되면 효율적으로 해결할 수 있다면 클래스의 모든 인스턴스를 효율적으로 해결할 수 있음을 의미합니다.) 따라서 이것은 양자 후 알고리즘을 찾을 수있는 지침의 일종입니다. .
그러나 문제를 복잡하게 만드는 추가적인 미묘함은 복잡성 클래스가 최악의 복잡성, 즉 주어진 문제 크기에 대해 이야기하는 것이 대략 (전문가 아님)입니다. 문제의 가장 어려운 인스턴스가 얼마나 어려운지에 관한 것입니다. 그러나 이러한 문제 인스턴스는 하나만있을 수 있습니다. 즉, 표준과 같이 문제 크기를 수정하면 (예 : 1024 비트 RSA에 대해 이야기 할 수 있습니다. 1024 비트는 문제 크기 임) 개인 키는 하나만 있습니다. 우리가 알고 있다면 도청자는 개인 키를 사용하여 메시지를 해독 할 수 있습니다. 따라서이 계산 복잡성 추론은 가능한 많은 입력에 적용 할 필요가 있습니다. 이것은 내가 이해하는 것처럼 그러한 진술을하기가 훨씬 어려워지는 평균 사례 복잡성의 세계로 당신을 안내합니다.
공개 키 암호화 시스템 인 RSA와 비교하고 양자 컴퓨터의 존재를 무시하는 것이 도움이 될 수 있습니다. 많은 복합 수를 인수 분해하는 데 어려움이 있습니다. 이 문제는 P에서는 믿지 않기 때문에 고전적인 컴퓨터를 가진 해커가 대답하기가 어렵다고 생각됩니다. 한편, 솔루션이 쉽게 검증되기 때문에 NP에 있습니다 (한 요인이 주어지면 쉽게 요인인지 확인할 수 있습니다). 즉, 올바른 수신자가 클래식 컴퓨터를 사용하여 암호를 해독 할 수 있습니다.