On Dec 27, 9:23 pm, "virus...@gmail.com" <virus...@gmail.com> wrote:
> 贴我昨天的blog来跟大家讨论讨论,看看有没有能让效率更高的办法。目前用了http://www-cs-students.stanford.edu/~tjw/jsbn/的大数运算库,效率提高很多,在webkit内核的浏览器上已经算比较可用了。IE可用est建议的CAPICOM,应该也会比较好,但Firefox太慢了。
>
> 代码在http://code.google.com/p/phpjsrsa/
>
> demo在:http://blog.devep.net/rsatest/test.php
>
> 这是一个用于文本加密的库,主要用于http协议下的防窃听。一般来说,如果应用https协议可以有效的避免窃听。但有几种情况必须考虑。
>
> (1) 主机同时有https和http协议,部分用户通过https协议访问,获得了保护。但也有用户通过http访问,这部分用户会遭到窃听。除非关闭http请求 ,全面转向https。
> (2) 主机并没有https支持。
>
> 很多情况下,我们需要保证主机安全,最好的办法是将其混入数字森林中。即:这台主机输出的内容没有人能看得懂的,只由无意义的代码和数字组成。用户浏览这台主机 ,不会触发任何关键词扫描。甚至该主机连https协议都不使用,更凸显其低调本色。
>
> 换言之,一个网站如果把自己的内容都变成字母和数字的组合,且不使用https协议,那么他就是数字森林中的一片树叶,丝毫不引人注意。
>
> 我们的目标应该是传输过程中不引人注意,并非绝对的不可破解的安全。
>
> 因此这个库的工作流程是:
> 1 php对"内容"做rsa加密->将加密结果输出到页面上。
> 2 用户浏览页面,html代码中的"内容"被加密成数字形态。私钥可以直接输出在页面代码中,也可由用户输入一次,保存在cookie中。使用cookie会降低 密钥泄露的危险,更加有效。
> 3 通过javascript在用户浏览器上将这些数字解密为内容。
> 4 通过javascript dom来把内容写回到页面上。用户即可浏览。
>
> 利用javascript解密,可以把运算负担分散到客户端上。窃听者如要窃听每一个页面的内容,则必须要 1 获得密钥 2 用密钥解密内容
>
> 在已知密钥情况下,如客户端的每个页面运算负担为 1 ,页面数量n ,那么窃听者获得密钥之后的运算负担为 1*n。
>
> 为了运算效率,使用小质数作为rsa的p,q,理论上窃听者可以通过因数分解算出密钥,其运算负载为k,注意k 远远大于1。
>
> 如果每个站点使用不同的密钥,共计m个站点,窃听者的运算负担为 m*k+1*n,且负载集中。
>
> 而,如果采用双向可逆加密方法,在得知算法的情况下,窃听者运算负载极小。如果在通过变换算法来增加难度,又无法做到通用,给用户正常浏览造成困难。使用rsa 方法,算法是标准的,用户使用成本很低,窃听成本很高。
>
> 在项目代码中,我已经实现了这一目标。但仍然有效率问题。
>
> 目前问题:
>
> 1 在没有bcmath和gnumath函数的php主机上,php加密内容的运算效率很低。和bcmath差距几十倍。好在大部分情况下,主机都是有bcmath 函数的。这个问题不严重。
> 2 js的bigint运算效率很低,主要是powmod的效率低,而这是rsa解密最频繁的操作。
>
> --------------------------------------------------------------------------- ---------------------
> 霍炬
> 北京银杏科高信息技术有限公司 http://www.ginkgotek.com
> tel:13911041484 010-63105844
> email:virus...@gmail.com
> gtalk:virus...@gmail.com MSN:huo...@hotmail.com
如果你一定要在HTTP里加密,可否这样实现(仅仅是想法,没有实现,共讨论):
请求建立的时候协商一个公用的密码,协商过程要安全,可以有很多方式来交换这个初始的密码,这方面已经有现成的标准的。
在后续的通信中发送方把要发送的内容实用这个密码做AES(或其它对称加密算法)加密,接收方在收到数据后再进行之前的密码解码。
对称加密/解密比非对称的效率有非常大的区别的。相信这种方法可以提供你的性能。
2009/12/28 viru...@gmail.com <viru...@gmail.com>:
> 贴我昨天的blog来跟大家讨论讨论,看看有没有能让效率更高的办法。目前用了
> http://www-cs-students.stanford.edu/~tjw/jsbn/
> 的大数运算库,效率提高很多,在webkit内核的浏览器上已经算比较可用了。IE可用est建议的CAPICOM,应该也会比较好,但Firefox太慢了。
> 代码在 http://code.google.com/p/phpjsrsa/
> demo在: http://blog.devep.net/rsatest/test.php
> 这是一个用于文本加密的库,主要用于http协议下的防窃听。一般来说,如果应用https协议可以有效的避免窃听。但有几种情况必须考虑。
> (1)
> 主机同时有https和http协议,部分用户通过https协议访问,获得了保护。但也有用户通过http访问,这部分用户会遭到窃听。除非关闭http请求,全面转向https。
你可以在你认为存在敏感信息的页面自动把HTTP跳转到HTTPS。这个不是很难吧。
> (2) 主机并没有https支持。
> 很多情况下,我们需要保证主机安全,最好的办法是将其混入数字森林中。即:这台主机输出的内容没有人能看得懂的,只由无意义的代码和数字组成。用户浏览这台主机,不会触发任何关键词扫描。甚至该主机连https协议都不使用,更凸显其低调本色。
难道因为是 HTTPS 就惹火啦吗?可以把HTTPS的端口换成80 ?
--
Regards.
Chen Ming
我认为要安全,最简单的方式还是HTTPS。
如果你一定要在HTTP里加密,可否这样实现(仅仅是想法,没有实现,共讨论):
请求建立的时候协商一个公用的密码,协商过程要安全,可以有很多方式来交换这个初始的密码,这方面已经有现成的标准的。
在后续的通信中发送方把要发送的内容实用这个密码做AES(或其它对称加密算法)加密,接收方在收到数据后再进行之前的密码解码。
对称加密/解密比非对称的效率有非常大的区别的。相信这种方法可以提供你的性能。
2009/12/28 viru...@gmail.com <viru...@gmail.com>:
--
Regards.
Chen Ming
对内容审查,我不怎么关注,但还是不知觉中受它的影响导致很多网站不能访问,不知道下面这个页面你看过没有:
http://zh.wikipedia.org/wiki/%E4%B8%AD%E5%9B%BD%E7%BD%91%E7%BB%9C%E5%AE%A1%E6%9F%A5
其实很多国家又有类似内容审查的东西,自然也就匿名的TOR,自然也就会有人研究如何反TOR...
2009/12/28 Tinyfool <tiny...@gmail.com>:
--
Regards.
Chen Ming
2009/12/28 ChenMing <mocke...@gmail.com>:
可以参考BitTorrent的进化历史。就产生了 Protocol encryption (PE),和 protocol header
encrypt (PHE)
HTTP、SSL、SSH都可以被认为是不安全的,因为它们的握手是明文的。
我知道netifera做了一套定制版的openssh,可以实现obfuscated handshake.
2009/12/28 Tinyfool <tiny...@gmail.com>:
如果只认证服务器的证书,只接受已知的服务器证书指纹,也是相对安全的。
2009/12/28 est <electr...@gmail.com>:
--
Regards.
Chen Ming
2009/12/28 Kenny Yuan <yuank...@gmail.com>:
中国的敏感词省更狠,全断了,HO HO
不知道为什么伊朗狠不下心来,切断网络多简单、多省力啊
许多中国专家走狗和火灾中先走的人肯定也在想和我一样的问题
我们组织起来做一个反审查内容发布系统吧只谈技术..
Time: 124ms :Chrome
Time: 1437ms:Opera 10.10
Time: 221ms :Opera 10.50 PreAlpha
Time: 2110ms :IE8
Time: 1758ms :FireFox 3.5.5
On Dec 28, 10:23 am, "virus...@gmail.com" <virus...@gmail.com> wrote:
> 贴我昨天的blog来跟大家讨论讨论,看看有没有能让效率更高的办法。目前用了http://www-cs-students.stanford.edu/~tjw/jsbn/的大数运算库,效率提高很多,在webkit内核的浏览器上已经算比较可用了。IE可用est建议的CAPICOM,应该也会比较好,但Firefox太慢了。
>
> 代码在http://code.google.com/p/phpjsrsa/
>
> demo在:http://blog.devep.net/rsatest/test.php
>
> 这是一个用于文本加密的库,主要用于http协议下的防窃听。一般来说,如果应用https协议可以有效的避免窃听。但有几种情况必须考虑。
>
> (1) 主机同时有https和http协议,部分用户通过https协议访问,获得了保护。但也有用户通过http访问,这部分用户会遭到窃听。除非关闭http请求-,全面转向https。
> (2) 主机并没有https支持。
>
> 很多情况下,我们需要保证主机安全,最好的办法是将其混入数字森林中。即:这台主机输出的内容没有人能看得懂的,只由无意义的代码和数字组成。用户浏览这台主机-,不会触发任何关键词扫描。甚至该主机连https协议都不使用,更凸显其低调本色。
>
> 换言之,一个网站如果把自己的内容都变成字母和数字的组合,且不使用https协议,那么他就是数字森林中的一片树叶,丝毫不引人注意。
>
> 我们的目标应该是传输过程中不引人注意,并非绝对的不可破解的安全。
>
> 因此这个库的工作流程是:
> 1 php对"内容"做rsa加密->将加密结果输出到页面上。
> 2 用户浏览页面,html代码中的"内容"被加密成数字形态。私钥可以直接输出在页面代码中,也可由用户输入一次,保存在cookie中。使用cookie会降低-密钥泄露的危险,更加有效。
> 3 通过javascript在用户浏览器上将这些数字解密为内容。
> 4 通过javascript dom来把内容写回到页面上。用户即可浏览。
>
> 利用javascript解密,可以把运算负担分散到客户端上。窃听者如要窃听每一个页面的内容,则必须要 1 获得密钥 2 用密钥解密内容
>
> 在已知密钥情况下,如客户端的每个页面运算负担为 1 ,页面数量n ,那么窃听者获得密钥之后的运算负担为 1*n。
>
> 为了运算效率,使用小质数作为rsa的p,q,理论上窃听者可以通过因数分解算出密钥,其运算负载为k,注意k 远远大于1。
>
> 如果每个站点使用不同的密钥,共计m个站点,窃听者的运算负担为 m*k+1*n,且负载集中。
>
> 而,如果采用双向可逆加密方法,在得知算法的情况下,窃听者运算负载极小。如果在通过变换算法来增加难度,又无法做到通用,给用户正常浏览造成困难。使用rsa-方法,算法是标准的,用户使用成本很低,窃听成本很高。
>
> 在项目代码中,我已经实现了这一目标。但仍然有效率问题。
>
> 目前问题:
>
> 1 在没有bcmath和gnumath函数的php主机上,php加密内容的运算效率很低。和bcmath差距几十倍。好在大部分情况下,主机都是有bcmath-函数的。这个问题不严重。
> 2 js的bigint运算效率很低,主要是powmod的效率低,而这是rsa解密最频繁的操作。
>
> -------------------------------------------------------------------------------------------------
> 霍炬
> 北京银杏科高信息技术有限公司 http://www.ginkgotek.com
> tel:13911041484 010-63105844
> email:virus...@gmail.com
> gtalk:virus...@gmail.com MSN:huo...@hotmail.com
2009/12/29 xLight <xblue...@gmail.com>:
我觉得不一定要用到 rsa 这么重量级的,比较简单的加密方法也可以试试(当然不要到 base64 这样的),毕竟只是骚扰 GFW,最后只要人工
一审核还是要挂.
另外我觉得这种技术可以用在 webproxy 上,但是之前 webproxy 被 GFW 废掉的直接原因是出在 url 上,间接的原因还是因为
网页的内容会触发 GFW reset,所以我想只要想办法解决 url 的反过滤,再加上内容采用楼主的这种技术,webproxy 就应该能在
GFW 下复活了.
On Dec 29, 2:22 pm, est <electronix...@gmail.com> wrote:
> - -
>
> GFW早就有base64模块了。。。。。
>
> 2009/12/29 Jay Shu <jay.sh...@gmail.com>:
>
> > 密钥都存在页面里面,用rsa也没什么意思了吧,直接base64呗。
>
> > 2009/12/29 xLight <xblueli...@gmail.com>:
/**
* 将传出的复杂大量数据压缩编码成为URL-safe的字符串
* 详情可以参见http://php.net/base64_encode 下面的User Contributed Notes
*/
class base64Url{
private static $Pkey = 'fuckGFW';
static public function encode($data){
$data = serialize($data);
$data = preg_replace('/d:([0-9]+(\.[0-9]+)?([Ee][+-]?[0-9]+)?);/e',
"'d:'.((float)$1).';'", $data);//去掉系列化后,浮点数超长的字符
$data = gzdeflate($data,9);
$data ^= str_repeat(self::$Pkey,strlen($data));
$data = strtr(base64_encode($data), '+/=', '-_,');
return $data;
}
static public function decode($data){
$data = base64_decode(strtr($data, '-_,', '+/='));
$data ^= str_repeat(self::$Pkey,strlen($data));
$data = unserialize(gzinflate($data));
return $data;
}
}
> > >>> (1) 主机同时有https和http协议,部分用户通过https协议访问,获得了保护。但也有用户通过http访问,这部分用户会遭到窃听。除非关闭http请求--,全面转向https。
> > >>> (2) 主机并没有https支持。
>
> > >>> 很多情况下,我们需要保证主机安全,最好的办法是将其混入数字森林中。即:这台主机输出的内容没有人能看得懂的,只由无意义的代码和数字组成。用户浏览这台主机--,不会触发任何关键词扫描。甚至该主机连https协议都不使用,更凸显其低调本色。
>
> > >>> 换言之,一个网站如果把自己的内容都变成字母和数字的组合,且不使用https协议,那么他就是数字森林中的一片树叶,丝毫不引人注意。
>
> > >>> 我们的目标应该是传输过程中不引人注意,并非绝对的不可破解的安全。
>
> > >>> 因此这个库的工作流程是:
> > >>> 1 php对"内容"做rsa加密->将加密结果输出到页面上。
> > >>> 2 用户浏览页面,html代码中的"内容"被加密成数字形态。私钥可以直接输出在页面代码中,也可由用户输入一次,保存在cookie中。使用cookie会降低--密钥泄露的危险,更加有效。
> > >>> 3 通过javascript在用户浏览器上将这些数字解密为内容。
> > >>> 4 通过javascript dom来把内容写回到页面上。用户即可浏览。
>
> > >>> 利用javascript解密,可以把运算负担分散到客户端上。窃听者如要窃听每一个页面的内容,则必须要 1 获得密钥 2 用密钥解密内容
>
> > >>> 在已知密钥情况下,如客户端的每个页面运算负担为 1 ,页面数量n ,那么窃听者获得密钥之后的运算负担为 1*n。
>
> > >>> 为了运算效率,使用小质数作为rsa的p,q,理论上窃听者可以通过因数分解算出密钥,其运算负载为k,注意k 远远大于1。
>
> > >>> 如果每个站点使用不同的密钥,共计m个站点,窃听者的运算负担为 m*k+1*n,且负载集中。
>
> > >>> 而,如果采用双向可逆加密方法,在得知算法的情况下,窃听者运算负载极小。如果在通过变换算法来增加难度,又无法做到通用,给用户正常浏览造成困难。使用rsa--方法,算法是标准的,用户使用成本很低,窃听成本很高。
>
> > >>> 在项目代码中,我已经实现了这一目标。但仍然有效率问题。
>
> > >>> 目前问题:
>
> > >>> 1 在没有bcmath和gnumath函数的php主机上,php加密内容的运算效率很低。和bcmath差距几十倍。好在大部分情况下,主机都是有bcmath--函数的。这个问题不严重。
> > >>> 2 js的bigint运算效率很低,主要是powmod的效率低,而这是rsa解密最频繁的操作。
>
> > >>> --------------------------------------------------------------------------------------------------
2009/12/30 张慧聪 <zhcfr...@gmail.com>:
2009/12/30 est <electr...@gmail.com>:
2009/12/31 Kenny Yuan <yuank...@gmail.com>:
关键是这个概率太小了。
2009/12/31 WindyWinter <bsl...@gmail.com>: