?? about.txt
字號:
廿載磨一劍,FF之密碼終結者
FF所使用的密碼系統:
對稱密碼系統:應用于加密/解密,計算量小,速度快,密鑰長128位,對明文以128比特為單位分塊進行加密。
摘要函數:其實是對稱密碼系統的變形。即使用一個固定的“摘要密鑰”來替代一次一變的加密密鑰,當然,為了更好地適應摘要計算的特殊要求,還進行了一些小的變形。
非對稱(公開)密鑰系統:應用于密鑰的傳遞和數字簽名,簽名的速度無可挑剔(私鑰體長只有512位),但核對簽名時的速度我就無能為力了(公鑰體131072字節!但應該也不會比1000位的RSA慢多少吧?我沒有對比過),好在要傳遞的密鑰和要簽名的摘要都只有128位,需要計算的數據很少。密鑰的實際空間256位(心理作用,既然是公開的密鑰,總得設定得長一點才心安,如果你覺得還不夠,我可以將其改為512位,不過公鑰就擴展得太厲害了,可能有幾M)。
FF所使用的密碼系統均為開發者自行開發的,耗時二十余年。我是在讀高中時,受徐遲的報告文學《歌德巴赫的猜想》影響而喜歡上數學的。時值恢復高考之際,使開發者能有幸在川大數學系學了幾天概率統計,雖然川大的數論拓樸等研究領域在全國都是領先的,但因開發者愚頓,僅學了恩師的一點皮毛,故在開發FF時,不敢使用數論等高深技術。
在開發時,開發者的設計指導思想是“安全第一”,所以該系統沒有使用“大數”,開發者認為有關“大數”的一些理論是一些不能確定的猜想,如RSA的“大數難于分解”的猜測,沒有人證明過有簡單的方法可以分解一個大數,當然,同樣也沒有人證明大數無法進行方法簡單的因子分解。FF所使用的方法都是相對比較簡單的,開發者崇尚“越是簡單的東西,就越堅固可靠”,因為只有簡單的算法,才可能對其進行可靠性論證。
在該思路的指導下,FF在加密理論(不是具體的算法)上是完全新創的,沒有使用質數,生成密鑰的過程十分簡單,這也是為什么自稱是“密碼終結者”的原因:已經沒有繼續研究加密方法的必要了,FF是無法破解的,而且它提供了一種構造具體算法的方法,如果隨著計算能力的提升,你認為密鑰已經不夠安全,則簡單地增加長度就可以了。
FF密碼不是一種算法,而是一種密碼理論,可以產生無數種算法變形。
FF(Found Friend):一套網絡安全及傳輸系統,包括:
安全系統(FfEnc):以密碼終結者為核心的加密及簽名系統,即你現在正在使用的程序;
IP定位服務系統:為沒有固定IP和端口的程序提供IP定位服務,建設中;
即時通訊:類似于QQ和MSN的短信服務,建設中。
FF (FFF@tanglijun.com)
2003-9-5
于測試版發行日
----------------------------------------------------------------------------------------------
為什么要研發FfEnc?
1、加密軟件作為一類特殊的軟件,除非廠商出版中文版,否則是無法漢化的。因為漢化必然要修改軟件,這就意味著可能會影響軟件的安全性,而這又正是注重安全的用戶所忌的。所以我們用的都是原裝的,而這類軟件又都是英文的(主要原因是算法的專利掌握在美國人手中,FF是國人的第一個算法完整的方案)。因國人大多E文欠佳,故急需國產的加密軟件。
順便說一下,開發者的E文也欠佳,是否有人愿意幫忙將FF西化?軟件中用的幾個詞我倒還能對付,但寫說明文檔我就沒有辦法了。實際上我連中文的都寫不好:)
2、現有的算法本身不安全。現在的主流算法是RSA算法,開發者一直在關注RSA,雖未能將其破解,但我有一種預感:RSA應該是能解開的——尤其是使用概率統計的辦法,對于一個特定的“大數”,雖然你不一定能將其解開,但如果你運氣好的話,可能也就是幾分鐘的事(具體的概率我沒有算過,不好意思,大學時太貪玩,概率統計沒有學好)。
3、加密是信息安全的基礎,一個泱泱大國,我們不可能把自己的安全建立在美國的加密軟件基礎之上。我們必須要有自己的算法和軟件。
4、美國規定,所有的加密軟件都必需留后門。如果你E文尚可,可以讀一下PGP等美國加密軟件的說明文檔,里邊都有一個警告,大意是:“依政府之有關規定,本軟件留有后門,以便執法部門在必要時可以不用密鑰而直接解密你的加密文件”!!!!!!至于除了執法部門外,是否還有其他人知道后門就不得而知了,但廠商和他的程序員肯定知道的。
即使是這樣,美國還不許向中國出口/發行最新版的加密軟件(即使已經留有了后門),下載服務器只給美國和加拿大提供最新版本的軟件下載。下載過PGP的用戶肯定是有所體會的。
FF真的無法破解嗎?
這看你如何理解“無法破解”的含意。
從理論上講,只有一次一密的算法才是真正無法破解的,而所有使用密鑰的算法都是可以破解的,FF亦同,因為使用密鑰就意味著不是一次一密。
從實際的角度講,如果破解一個密碼要用幾萬甚至于幾億年的時間,則我們可以認為該密碼是不可破譯的。
密碼學體系包括以下幾個主要部分:加密、摘要、密鑰傳遞、簽名等。
加密/摘要的問題不大,主要是密鑰長度,只要把密鑰加長,就能應付攻擊。這兩個問題可以說已經被密碼學界早已解決了。當然,標準是另外的問題。
現今密碼學的熱點是密鑰傳遞/簽名問題。FF的成功突破之處也正在于此。FF與RSA不同之處是:FF是一種方法(不是算法),使用該辦法可以很隨意地構造出任意多的具體算法,所有的算法都不用“大數”,而是用成千上萬個小的隨機數作為密鑰。所以FF的密鑰長度是任意的,你可以構造任意長的密鑰,而密鑰越長,就越安全,可以抵抗更高強度的攻擊。從這個角度說,FF是無法破解的。
當然,FF的缺陷也正在于此,FF的公鑰擴散的十分嚴重,因為這成千上萬的小數是相關的,不是真正隨機的,他們是由256位真正的隨機數計算出來的。你現在使用的2.0.0版(第一個正式的發行版,1.0版是測試版)的公鑰實際密鑰空間是256位,但公鑰體已經長達131072字節(約一百萬位),如果將FF公開密鑰的長度增加到1000位,則公鑰體將長達幾十M字節(約幾億位)。
也可以用FF構造另外一種算法,公鑰就不會擴散的這么嚴重,但程序代碼就比較復雜了,所以我還是選擇了這種代碼最簡單的算法,如果把軟件封面的地圖去掉,本版的程序才40K。
而RSA算法要找兩個“很大”的質數作密鑰,但找大質數是十分困難的,所以其密鑰長度受制于尋找質數的能力,不能隨意加長。
FF (FFF@tanglijun.com)
2003-9-15
于2.0.0版發行日
FF算法已知的問題與缺陷:
FF包括摘要、加密、密鑰傳遞、簽名等幾部分。其中密鑰傳遞和簽名是同一算法(FF公鑰算法)的不同應用,故FF實際上有三種算法組成。
FF摘要和加密算法遵循密碼學界公認的指標要求,是安全可靠的。
從理論上講,用私鑰加密的信息可以用公鑰將其恢復,反之,用公鑰加密的信息也可以用私鑰將其恢復。但在實際應用中,由于受計算機的計算精度所限,恢復出來的“原文”與真正的原文總是存在著一定的差異,這就是FF公鑰算法的“偏差”。
所以在FF2.0及以前的版本中,有可能存在著:
1、簽名人用私鑰對摘要進行簽名后,因FF公鑰算法偏差的存在,他人在用簽名人的公鑰進行驗證時,恢復出來的摘要與原摘要不同,導致簽名的驗證失敗;
2、發信人用收件人的公鑰加密通信密鑰后,將密鑰與密文信一并交收件人,但收件人用其私鑰對密鑰進行恢復后,因FF公鑰算法的偏差,恢復出來的密鑰與真正的密鑰有差異,導致密文信無法解密。
經過初步的測試、統計和論證,FF認為偏差值應該是基本上呈正態分布的,即偏差越大,其出現的可能就越小。
對于1,FF在FFCA(密碼終結者的數字身份認證系統)中將使用修正技術,以使所有的簽名均能通過驗證。由于文件格式的原因,2.1.0版只能對其進行部分的控制,以便絕大多數的簽名能通過驗證。
對于2,因為本次所選用的具體算法及計算方式、表達方式等原因,FF無法完全解決該問題,在2.1.0及以后的FFCA版本中,將使用控制技術,盡可能地將該現象出現的可能性減小。經評估,新版中出現該現象的可能性小于1/2^128,應該是可以接受的。
FF (FFF@tanglijun.com)
2003-9-19
于2.0.0版發行日
現已改版為FFCA(霏霏認證)1.0.1版,增加了數字證書功能。
FFCA (FFCA@offca.com)
2003-10-4
于1.0.1版發行日
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -