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