[密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第6篇]我们怎么把NP问题解释成一组可以在多项式内证明的命题
這是密碼學52件事的第六篇,我們繼續解釋復雜性理論,這篇我們給NP問題另一個定義。(注:就是說這節中,我們把**"問題是否為NP的"轉換為另一組可以在多項式時間內判定的定理)**。
這個問題是緊接著上一周的問題的。上周我們回答了什么是復雜NP類問題。這周我們回答一個相關的問題—我們怎么把NP解釋成一組能被多項式時間檢查的命題。
現在我們看一個直覺上的"一個問題是NP的"這意味著什么?他不僅僅是一個直觀的定義,更是清晰的說明了為什么這類復雜性問題對密碼學和世界上其他問題那么重要。現在在我們討論怎么用之前,我們先給出定義:
- NP 是一類能在多項式時間內驗證的語言
首先我們有一個元素x,我們想要知道是否x∈L(L是NP語言)。我們有一個證明P對x輸出一個證據w,這可能需要要給多項式時間在給定x尋找w。然后如果我們給出x和w到我們的驗證器V,V能夠在多項式時間內輸出是否x∈L。
我在看到這里的時候以我的知識有點不懂。 這里就是交互式證明系統,限制了交互的時間復雜度。那為什么非要給出一個V,然后給出一個P呢。這個是交互式證明系統定義的一部分。在這種計算模型(交互式證明系統)下,限制一下計算時間,就可以給出了NP問題的定義。 這里我十分推薦讀下這節Sipser’s Introduction to the Theory of Computation, section 7.3.
這個定義似乎和上一周給出的不同,但是實際上他們是等價的。(Sipser的書中有精確的定義)。非正式的說,他們的等價性是因為w可以是NDT在每個分支節點做出的決定的序列,這樣就從非確定的降級成確定的自動機了。(上面的那節也給出了精確的證明)。
因此為什么這個問題在密碼學中那么有用呢?本質上,我們有一類這樣的原因,如果你沒有witness(憑據?密鑰?)可以用指數時間來檢查,但是如果你有這個witness那么你就可以用多項式時間來完成。這是很多密碼學算法的feel。(23333)。例如,如果你不知道key那么你就很難解密這個消息,如果你知道key那么你很快就能解密出消息。
一個警告:雖然密碼學中使用NP問題看起來是個不錯的做法。但是它可能不是那么簡單。因為NP問題的語言是基于最壞時間的。然而密碼學中的算法是基于平均時間的。例如,我們有一種NP語言,一個元素需要指數級的時間求解,其他元素都非常快。這不是好的加密方案。我們希望對所有的消息都是安全的。而不是僅僅一個。
現在我們不知道整數因子分解=是不是NP完全的,也不知道是不是P類問題。但是它是一個例子。見Ryan的博客說明我想要說的關于仔細選擇NP實例的問題。一般來說,找到一個數的因數很容易。其中一半能被2整除。但是如果我們選擇一個特定的我們將會很難分解。讓我們集中思路在形式N=p?q對p,q素數。現在如果這兩個數字有一個很小,那么分解它也是容易的,我們希望這兩個數字大小接近。由此我們可以根據這個構建加密方案(RSA)。
[1] Equivalence_of_definitions
原文鏈接:http://bristolcrypto.blogspot.com/2014/11/52-things-number-6-how-can-we-interpret.html
轉載鏈接:https://www.cnblogs.com/zhuowangy2k/p/11518770.html
總結
以上是生活随笔為你收集整理的[密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第6篇]我们怎么把NP问题解释成一组可以在多项式内证明的命题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 赵强老师免费公开课第一季:Hadoop的
- 下一篇: fireworks CS6安装教程