📄 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 + -