第六個知識點:咱們怎麼把NP問題解釋成一組能夠在多項式內證實的命題

第六個知識點:咱們怎麼把NP問題解釋成一組能夠在多項式內證實的命題

原文地址:http://bristolcrypto.blogspot.com/2014/11/52-things-number-6-how-can-we-interpret.htmlhtml

這是密碼學52件事的第六篇,咱們繼續解釋複雜性理論,這篇咱們給NP問題另外一個定義。(注:就是說這節中,咱們把"問題是否爲NP的"轉換爲另外一組能夠在多項式時間內斷定的定理)。算法

這個問題是緊接着上一週的問題的。上週咱們回答了什麼是複雜NP類問題。這周咱們回答一個相關的問題---咱們怎麼把NP解釋成一組能被多項式時間檢查的命題。安全

如今咱們看一個直覺上的"一個問題是NP的"這意味着什麼?他不單單是一個直觀的定義,更是清晰的說明了爲何這類複雜性問題對密碼學和世界上其餘問題那麼重要。如今在咱們討論怎麼用以前,咱們先給出定義:ui

NP 是一類能在多項式時間內肯定的問題加密

NP 是存在多項式時間運行的Verifierspa

這到底啥意思?首先咱們有一個元素\(x\),咱們想要知道是否\(x \in L\)(\(L\)是NP語言)。咱們有一個證實\(P\)\(x\)輸出一個證據\(w\),這可能須要要給多項式時間在給定\(x\)尋找\(w\)。而後若是咱們給出\(x\)\(w\)到咱們的驗證器\(V\)\(V\)可以在多項式時間內輸出是否\(x \in L\)code

我在看到這裏的時候以個人知識有點不懂。 這裏就是交互式證實系統,限制了交互的時間複雜度。那爲何非要給出一個V,而後給出一個P呢。這個是交互式證實系統定義的一部分。在這種計算模型(交互式證實系統)下,限制一下計算時間,就能夠給出了NP問題的定義。 這裏我十分推薦讀下這節Sipser's Introduction to the Theory of Computation, section 7.3.htm

這個定義彷佛和上一週給出的不一樣,可是實際上他們是等價的。(Sipser的書中有精確的定義)。非正式的說,他們的等價性是由於\(w\)能夠是NDT在每一個分支節點作出的決定的序列,這樣就從非肯定的降級成肯定的自動機了。(上面的那節也給出了精確的證實)。blog

所以爲何這個問題在密碼學中那麼有用呢?本質上,咱們有一類這樣的緣由,若是你沒有witness(憑據?密鑰?)能夠用指數時間來檢查,可是若是你有這個witness那麼你就能夠用多項式時間來完成。這是不少密碼學算法的feel。(23333)。若是你不知道key那麼你就很難解密這個消息,若是你知道key那麼你很快就能解密出消息。ip

一個警告:雖然密碼學中使用NP問題看起來是個不錯的作法。可是它可能不是那麼簡單。由於NP問題的語言是基於最壞時間的。然而密碼學中的算法是基於平均時間的。例如,咱們有一種NP語言,一個元素須要指數級的時間求解,其餘元素都很是快。這不是好的加密方案。咱們但願對全部的消息都是安全的。而不是僅僅一個。

如今咱們知道整數因子分解不知道是否是NP徹底的,也不知道是否是P類問題。可是它是一個例子。說明我想要說的關於仔細選擇NP實例的問題。通常來講,找到一個數的因數很容易。其中一半能被2整除。可是若是咱們選擇一個特定的咱們將會很難分解。讓咱們集中思路在形式\(N = p * q\)\(p,q\)素數。如今若是這兩個數字有一個很小,那麼分解它也是容易的,咱們但願這兩個數字大小相同。由此咱們能夠根據這個構建加密方案(RSA)。

[1] Equivalence_of_definitions

相關文章
相關標籤/搜索