-
-
[转帖]freegate 6.2的加密算法及安全性分析 by Team509
-
发表于:
2006-12-7 20:10
9205
-
[转帖]freegate 6.2的加密算法及安全性分析 by Team509
原文链接 作者:doublelee(doublelee[at]gmail.com)
这是一个HTTP加密代理软件,其中包含了如下一些算法
1,RC4,这个不用多说,最常见的流加密算法一个,几乎可以默写出来了
2,变形的base64,把base64的码表简单替换为abcdefghijklmnopqrstuvwxyz-=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ,并且没有结尾的填充字符。大家知道标准base64是用一个等号作填充的。
3,一个针对字母的替代算法,定义'a'=0,'b'=1,...'z'=25和一个恺撒加法即可,比如'a'+'b'='b', 'z'+'b'='a',注意保持左元的大小写
前三个算法用来处理请求
4,一个输出反馈的序列密码,密码表只有8字节,初始化常数是"365d98ae54b26c3f",用密钥简单处理后开始工作。每次输出一个字符后,用简单的异或算法更新该表,用密文更新指针。
for(i=c=0; i<datalen; i++)
{
key[c] ^= (i|i>>4)&0xFF;
data[i] ^= key[c];
c ^= data[i]&7;
}
此算法用来处理数据部分
5,一个4字节整数置换算法,用来转化一个整数为另外一个整数
f(a1.a2.a3.a4)=b1.b2.b3.b4
b1=(a1>>1)^0xAA
b2=b1^a2
b3=b1^a3
b4=b1^a4
如果b1属于(0xC0,0x0A,0xAC,0x00,0x7F,0x01)之一,则需要再置换一次,这个算法用于某些DNS结果的转化
6,一个简单的校验算法,用于校验一个至少2字节的随机字符串。校验和有两个字节,第一个字符是前两个字符的恺撒和,第二个字符则是所有字符恺撒和取反再加上一个常数
密钥的生成和交换
密钥有三部分,一部分随机生成,第二部分由硬盘号生成,一般随主机固定,最后一个是32字节的常数,无需交换
十分可惜,密钥的交换几乎完全是明文的,所以这个加密代理其实没有任何保密性可言。
结论:这个加密代理不安全。
[培训]科锐逆向工程师培训第53期2025年7月8日开班!