采用密碼學(xué)方面的軟件會(huì)越來(lái)越多,對(duì)于一個(gè)破解者是否有必要因此學(xué)習(xí)大量的數(shù)論知識(shí)?
首先我們要明確,加密算法在軟件保護(hù)中的作用是什么?加密算法在軟件保護(hù)中的作用,是防寫(xiě)注冊(cè)機(jī)。而對(duì)其他pj方式防護(hù)能力較差。加密算法,在很多情況下是可知的,網(wǎng)絡(luò)安全中,可以通過(guò)閱讀通信協(xié)議,來(lái)了解算法;而軟件中,算法往往嵌入在程序代碼中。所以基于算法保密上的安全永遠(yuǎn)是不可靠的。于是人們通過(guò)密鑰 來(lái)解決這個(gè)問(wèn)題。目前所有流行的算法的安全性,都是基于密鑰的保密。而對(duì)于軟件來(lái)說(shuō),對(duì)稱密鑰算法,沒(méi)有什么意義。因?yàn)槊荑€必須嵌入軟件中。所以公開(kāi)密鑰(不對(duì)稱密鑰)算法,成為軟件加密的理想選擇。
對(duì)于一個(gè)普通的破解者,包括普通的程序員,是沒(méi)有必要學(xué)習(xí)大量的數(shù)論知識(shí)。因?yàn)楝F(xiàn)在現(xiàn)成算法函數(shù)接口很多,隨便拿來(lái)用就可以,不必自己去一行一行的去寫(xiě)代碼,只要搞清算法的加密流程就可以了。一個(gè)普通的破解者只要跟某段代碼時(shí),能夠感覺(jué)到他大概是什么算法,然后用算法驗(yàn)證軟件(我常用cryptool),檢查一下,就可以了;而且pj軟件的方法很多,比如做補(bǔ)丁,并不是寫(xiě)注冊(cè)機(jī)這一種方法。理論上,軟件可以在機(jī)器上正常運(yùn)行所有功能一次,就是可以破解的。
當(dāng)然,對(duì)于想往更高層次發(fā)展的Cracker學(xué)一些數(shù)論知識(shí)是必要的,當(dāng)然我們不太可能發(fā)現(xiàn)某的算法的弱點(diǎn),但至少可以在,某個(gè)高人,發(fā)現(xiàn)算法的弱點(diǎn),并公開(kāi)時(shí),能看懂人家是如何實(shí)現(xiàn)的(這需要涉及很多理論性的東西,會(huì)涉及數(shù)論的),并能寫(xiě)成代碼。(zmworm 回答)
學(xué)了一丁點(diǎn)的理論,智力平庸,就沒(méi)往里鉆了,我感覺(jué)熟悉常用的加密算法就行了。