CCTsing / phpsocks5

Automatically exported from code.google.com/p/phpsocks5
0 stars 0 forks source link

加强加密保护 #62

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
我下载了0.6(不是SP1)版本,注意到里面的加密和解密函数��
�基于密钥对数据的异或的。这样不安全。例如一旦知道明文-
密文对,就知道了全部密钥。或者根据概率分析也能找出密��
�。这属于经典密码学的范畴。

虽然大多数服务器可能没有mcrypt,而自己用PHP写一个加密函��
�可能在性能上又有问题(例如使用phpseclib),但是还有一种�
��密方法:
用MD5函数(更好的是SHA1)处理一系列计数器字符串(例如:z
mphfrpk_SECRETKEY_0001,zmphfrpk_SECRETKEY_0002...),这样同样可以产生�
��够长的用于异或的数据流,而且如果散列函数做得足够好(
SHA1足够好了),数据流就是伪随机的。之后得到的随机流和�
��据流异或得到密文。
——这个方法(CTR模式的变种)类似Salsa20算法的思想,算是�
��较强壮的加密技术。
——在这个过程中,密钥是SECRETKEY, 
zmphfrpk是和会话相关的随机参数。在加密和解密过程中,SECRET
KEY都是秘密参数,但是zmphfrpk是附加的公开参数(可以附加在
密文开头)。

服务器和客户端通信时,SECRETKEY可以使用配置文件中固定的��
�然后随机参数在会话初始化时交换即可(注意使用SECRETKEY作�
��密钥的HMAC方法认证这个随机参数,HMAC函数应该是服务器自�
��的,即使不是,自己写一个也相当简单)。

另外我有意申请开发基于Python的客户端程序。

Original issue reported on code.google.com by nemoship...@gmail.com on 27 Oct 2012 at 5:44