Shell's Home

Feb 2, 2012 - 1 minute read - Comments

教育的思考

首先说明一点,这是贝壳自己对自己受到教育的反思。由于本人不从事教育行业,所以结论可能和现有的理论相悖离,也不保证正确。 教育最重要的时刻,不是在高中,而是在幼儿园。幼儿园的老师不应当教知识,而是应当教常识。常识是非常重要的,我们有意无意,善意或恶意,都会给小孩子灌输扭曲的常识,例如孩子问你他是哪里来的,你说是从垃圾桶中捡来的。等孩子成长了,他的第一件事就是推翻不正确的常识。还记得那个笑话么?——我知道你的父母和老师都对你这么说,但是,圣诞老人是不存在的。是的,超人也不存在。哦,不不,驯鹿和美国总统是存在的。 孩子听到越多不正确的常识,就需要浪费越久的时间逃脱常识的束缚。大部分孩子甚至终身会带着一些偏见——例如以前的“地球是宇宙的核心”,到不久前的“空间是连续的”。从有意的“抢到的东西就是自己的”,到无意的“大人说谎也不受惩罚”。越多错误的束缚,孩子需要浪费越多的时间逃离束缚,将来的成就就越小,这就是为什么我觉得幼儿园是一个孩子成长的关键的原因。 至于第二语言,真的没有必要在幼儿园就开始学起,我甚至觉得语言不应当被独立教授。还记得你的打字是怎么练成的么?我打赌我的读者中,有一半以上不是在正规的课堂中,按照老师的指示一点一点去练习每个键位,最后成为打字高手的。我自己是在QQ起步的时候,在网络上和别人聊天。从开始的一对一还是被人家嫌慢,到最后可以很轻松的一对二甚至一对多,大概只花了我半年多的时间。同样,要在课堂上学习语言,比不上在语言的环境中学习,这个大多数人都知道。但是什么是语言的环境?这不是说找个外教,或者用英语授课就解决的。孩子使用语言的关键,在于和同龄人组织学校社会的时候。如果他们圈子里面用英文,你的孩子只有三种可能,1.不和同龄人交往,变成书呆子,2.根本不去上课,退学了,3.英文熟的你根本听不懂。问题是,在中国如何控制学校中的学生交际圈呢?所以从这个意义上说,在中国要稳定的学好英文,而且和老外差不多,是不现实的。只能靠你孩子的天赋和运气。 很多人把孩子送到了国外,实话说,这是一个不负责任的选项。孩子可以没有很强的英语能力,但是在成长中,脱离家庭的关心是致命的。除非你送到国外后,在当地有其他人可以替代你关心孩子,否则将来成长的结果只能靠运气。有很多人,在出国后交往男女朋友(这个很正常),颓废,不用功学习,失去生活目标(这个不应当在初中和高中出现),乃至吸毒(这个也不算太少)。当然,以国内不少家长的情况而言,陪着孩子成长只会导致更严重的问题。 中国的小学和初中教育,是一个学习的过程,这个没问题。但是学的内容太深入,又不够广泛。现在家长都在喊教育内容不要超纲,喊教学速度过快,喊小学上大学内容。但是,什么是纲,为什么要有纲。诚然,学习的问题上,有些时候不到一定年龄,学生是理解不了某些问题的。但是在学习知识上,实际是没有边界的。我们拆掉考试的问题来反观教育,如果真的是为了更好的工作,那么凡是需要的知识都必须要学,可以多不能少,何来超纲?超纲是一个基于考试产生的现象,本质是考试的难度无法增加,就通过增加范围来提高分辨率,强行区分学生。 以初中数学为例,我们初中数学的很大一部分都在教授二次方程特性和解法。实际上呢?二次方程用到的机会非常少。大家也都是从考试中走出来的社会人,你们凭良心告诉我,毕业后有多少机会用到了二次方程?个人觉得这部分教到过概念和解法就可以了,不必对特性深入到奇怪的地步,特意构造一些特例问题来考察学生的解题能力。其实只要在需要的时候,找一下wiki,然后根据问题能解出来就行了。我的高等数学学了很久,现在也差不多都还给了老师。但是需要的时候,我可以通过很短时间的查找资料,把问题现场解出来。反倒是从小学到高中,对一些现代数学的基础学习不足,尤其是线性代数和统计学。高中没有教授现代统计学,因为这依赖于高等数学。线性代数只教了方程组解法和行列式,没有教授矩阵运算。实际上这是现代数学概念的基础,应当在足够的时间内深入学习。 至于语文和思政,更是沦为执政党的免费广告课程。这部分课程大部分人在高中开始就吐掉了,吃都吃不下去。 高中开始,学校教授的不应当是知识了,而是研究方法。当然,研究方法其实应当从小就开始学习了,包括论文格式,研究过程和方法,预算控制等等。尤其是一些现代科学中基本的精神,都应当在实际的课题报告中做足够的检讨。国人经常在一些莫名其妙的地方出奇奇怪怪的毛病,部分可能就源自没有系统的接受过研究方法论的影响。例如,在研究效果的时候,应当应用双盲法。如果这是一道填空题,我估计大部分国人都能做对。但是实际操作的时候,有很大可能陷入双盲误区中。尤其是单向相关性断定,当有A,就发生B时,就开始断定是A导致了B。又例如中医问题,对于接受过研究方法论的人而言,双盲法检验需要不需要根本不应当是一个问题。要么就拜托你,不要自称中医是科学,这也行。不是每个结论,在科学上都有解释。不管你信不信,反正有人信。这没什么,有人信上帝,有人信科学。但是不要对外声称,我们的上帝经过科学检验。。。 至于有些民科,或者一些不知道什么的人,写出来的东西就更神奇了。为什么地球在远处向太阳坠落就会形成旋转,为什么太阳是黑洞在发光。他们写的每个字我都认得,但是连贯起来就完全看不懂说了些什么。老外的神奇论文,是从常识性的结论和公式出发,通过推导,得出一个反常识的结果。然后再验证这个结果,而且居然是对的。例如泊松斑,水星近日点漂移,宇宙膨胀。对于这些东西,我虽然看不懂,但是每个上下文的联系都能看到,只是不明白基础知识,也不知道为什么要如此推导。民科的论文则相反,是从常识性的结论和没有公式出发,跳跃性的得出反常识的结果,然后没有人能够验证。我不但看不懂上下联系,而且连他想说什么都看不明白。当然,最神奇的是这样的东西也有人买。。。 至于大学,会在大学学习知识的人是傻子。大学是一个教授研究方法论和寻找人生意义的地方,如果一个学生大学毕业,能够找到自己的人生目标,认识一群好兄弟,就已经很满足了。至于学到的知识,真的和大学无关。如果要说有什么关系的话,最多是借助大学的环境,可以更广泛的接触自己想要接触的东西。当然,后者即使对于毕业的人也不是无法做到,所以去大学绝对不是学知识的。 说到这里,国人有个奇怪的现象。大部分人好像都相信知识改变命运,更多的知识就能带来更成功的人生。但是实际操作的时候却都是脑体倒挂,进行脑力劳动的不如进行体力劳动的。程序员赚钱靠什么?加班。书本靠什么赚钱?印刷。

Feb 1, 2012 - 1 minute read - Comments

如何写基于google code的watch file

google code很好用,可是他的下载页面很恶心,很难跟,而且还改过一次。debian打包党要做watch file的时候,估计会很郁闷。 去http://googlecode.debian.net/,然后提交你的包名,你会得到一个url(其实自己猜也可以猜到)。每次访问这个url的时候,他会代你解析google code,告诉你有没有更新。

Jan 31, 2012 - 1 minute read - Comments

PXE模式使用openwrt网络安装debian

废话不说,上干货。 首先,禁用arptables。当然,如果你没开这个防火墙,那么没必要。其次,注意你的openwrt必须有udisk,否则空间相差太多,根本没有实现的可能。 然后,如果你用的是新版的rom,应该在/etc/init.d/dnsmasq里面看到,dnsmasq()这个函数里面有。 append_parm "$cfg" "tftp_root" "--tftp-root" append_parm "$cfg" "dhcp_boot" "--dhcp-boot" 如果没有,加一下,有的话说明原生支持。下面可以直接修改。 dnsmasq是一个dhcp/dns双重服务器,而pxe引导的第一步就是支持bootp协议。这个选项在/etc/config/dhcp里面。config dnsmasq一节上,增加。 option 'dhcp_boot' 'pxelinux.0' 重启dnsmasq,完成bootp准备。 然后,安装tftpd-hpa,opkg update,opkg install tftpd-hpa。这是一个tftp服务器,默认不启动。如果你打算让pxe引导模式持久化,那么就改为默认启动,同时永久关闭arp防火墙。在/var/tftpd-hpa里面,可以看到tftpd的根路径。从参考3的的连接里面,你可以找到合适的一个下载路径,下载netboot.tar.gz到这个文件。解压后,可以看到pxelinux.0,这个和上面的pxelinux.0相对应。这是pxelinux的组件,隶属于syslinux项目,可以用来完成启动。 这样,就完成了安装的所有准备工作。你可以找一个设备实验一下,应当可以完成网络安装的步骤。 另外,如果需要启动选择amd64或者是i386,或者更进一步定制。那么需要下载其他镜像,自己生成pxelinux.cfg这个目录中的内容。 PXEhttp://wiki.debian.org/PXE NetbootPXEhttp://wiki.debian.org/DebianInstaller/NetbootPXE netinsthttp://www.debian.org/distrib/netinst 配置pxe,安装debian和ubuntuhttp://my.unix-center.net/~whtbie/wordpress/?p=290

Jan 29, 2012 - 1 minute read - Comments

tcp连接的建立和释放

大家新年好,新年第一博,我们来写一点干货。 建立tcp为什么是三次握手? 从两军问题说起太远了,三次握手的假定是一条双工线路的每个方向,要么持续通,要么持续不通。就好比一个电话,你和对方可以同时说话,所以是双工线路。你说了对方能听到,这叫单方向。单方向上,要么通,要么不通。 如果从一个不保证稳定的电话线上(例如移动电话,这是典型例子),你怎么确定你们通话是正常的? 假如你首先说“喂”,这时候你什么都不知道,对方能听到,他就知道你到他这里的电话是好的。他会说“喂,我听到了”。你听到了,会知道他到你这里的电话是好的。 事情结束了么?没有呢,他还不知道你能听到他讲的东西,所以你还要回“我听到了”,然后开始说正事。 回想一下自己打电话的经历,是不是往往漏掉了最后一个“我听到了”呢?这样会使得对方无法确认你能听到他说的东西。不过一般来说,当你开始滔滔不绝的时候,他会假定你听到了那句“喂,我听到了”。因为通常没有人会没听到对方的回应就开始说话说个不停。这个模式在tcp中也是可以做到的,在最后一个ack上附加数据。 为什么由发起方开始?因为我们必须要假定有一个方向开始,任意开始就需要处理碰撞问题(就是同时开始)。接通socket总是由发起方开始传输第一个包,你不觉得直接在这个包上面开始测试连通会比较合理一些么? 电话为什么由被叫方开始说话?因为主叫方打电话后,被叫方决定了电话什么时候接通。电话接通的时候,被叫直接就可以说话了(假如电话稳定的话),而主叫要等到下一个“嘟”不出现才能有所反应。所以通常都是被叫先开口。当然,也有被叫方接起电话来等着主叫说话的情况。 另外提一句,如果你使用手机拨打的话,当听到对方“喂,这里是XX,您好”之类的信息的时候,应当先说“喂,我是XX,您好”。等对方确认能听到了,再开口说正事。因为手机有不算太小的几率,双方都听不到,或者单方向听不到。如果不巧是后者,很容易引起不必要的误会和麻烦。例如你滔滔不绝的说,对方作为反应,说了几句。然后你什么都听不到,继续说。对方当然会生气,对不对? OK,现在我们来说说挂电话。 tcp的fin机制,其实是要解决这么一个问题。当你说“再见”后,能够马上把电话放下么? 不行的,因为对方可能还有一些重要的事情还没说。你一说再见就挂断,这个会造成问题。从简单的思考上,我们会得出一个结论。当你说了“再见”后,对方可能还需要说一些事情。当对方也说了“再见”后,你就可以挂电话了。 可是且慢,对电话而言这个模型成立,我们得稍作修改才符合网络——当你挂下电话机后,对方不会出现忙音。于是,当你说再见,对方说再见,你必须再说一次再见,对方才能确定你听见了再见。而且这次,事情非常符合两军问题——你们永远也无法就什么时候挂机达成一致。这个问题再折衷回来,也是一个三次模型,对方说再见,你说完你要说的话,然后说再见,对方再见,挂机。 被动关闭上,这个模型基本是正确的。当你收到“再见”后,把你要说的事情说完,然后再见。这时候不能挂电话,因为你不确认对方听到你的“再见”了。如果你的“再见“对方没收到,那么对方会死等到天荒地老。至于为什么对方可以肯定你收到了他的再见,是因为刚刚你说的那堆废话里,应该已经包含了“我知道你要挂电话了,我会尽快说完”的意思。所以,你需要等对方的“再见”回来。 当然,在tcp的实现上说,所有对对方的回应,都在ack里面。所以是FIN FIN-ACK ACK,关闭。最后一个ACK前,叫做LAST ACK状态。如果ACK丢失,会造成被动方挂断有问题,因此这里需要一个超时机制。用电话术语来说,就是最后一个再见没听见,你就要等到天荒地老,因此当对方首次再见完成的时候,你说再见,如果一定的时间等对方的最后一个再见等不到,就别等了,直接挂机。这个时间比等不到对方任何消息而挂机,要来的短。tcp标准设定为两倍最大生存周期,即2MSL。当然,如果等到了最后一个ACK,就直接删除连接数据结构。 主动关闭的时候,情况会更加复杂一点。为什么?因为刚刚的超时机制。我们从你说再见之前开始说起,这次你是主动告别一方。 你首先说了一个再见,然后进入FIN_WAIT1状态,换成电话术语,就是等对方说再见。tcp机制上,对方的ACK先到,就是FIN_WAIT2。对方的FIN先到,就是CLOSING——这种情况不多见,只在双方同时想挂断的时候发生。如果对方的FIN-ACK一起发送,那就直接保送上TIMED_WAIT。无论是哪种先,最后会收到一个ACK和一个FIN,并且发送一个ACK。换成电话术语,就是你说了再见,对方一定会说知道了和再见,并且你会说知道了。差别在于tcp需要用多个状态来表示哪个事情先,哪个事情后,打电话就不要这么麻烦了。 最复杂的事情,在于说了最后一个再见之后。当你说完最后一个再见,就可以直接挂电话么?电话可以,但是作为tcp,却不可以。因为某些情况下,对方的FIN包没有到就会进入TIMED_WAIT状态。另外一些情况下,对方的LAST_ACK等不到你的ACK,会把他的FIN重发一遍。如果直接销毁连接结构,那么最后一个FIN包可能对新的连接造成干扰,而且会阻碍对方关闭连接。所以,作为主动挂断一方,你有一点很不利的是,无论如何,你必须等这个2MSL的时间。这个值在linux中一般是60s,更进一步可以查看rfc1337。 刚刚解说的最后一个情况,就是很多机器TIME_WAIT很高的原因——因为你的服务器主动关闭了连接。作为本质解决方案,你需要理解为什么会发生这件事情,服务器端关闭连接是否正常。如果正常,那么加一些内存,并且启用tcp_tw_recycle来减缓这个问题。注意,这个参数不应当在NAT后的机器上被启用。具体可以查看rfc1323。

Jan 18, 2012 - 1 minute read - Comments

python的字符串相加效率

今天文章被人纠了错,就跑去人家主页上逛。结果看到有篇文章说字符串相加速度的,看看结论很奇怪。就做了一下实验。原文可以看这里。我们只讨论python部分的行为。首先是论证我观点的测试,无关部分就跳过了,大家应当可以自行补上。 def f(): s = '' for i in range(3): s += '123' print id(s) return s f() f() 输出: 138190216 138276992 138276992 138190216 138276992 138276992 至少在几十的规模,这个结论还是成立的。说明对象确实被缓存了,这导致了字符串相加的多次测试中,后续次数都没有实际的执行字符串分配动作。召dis来问之。 14 0 LOAD_CONST 1 (u'') 3 STORE_FAST 0 (s) 15 6 SETUP_LOOP 46 (to 55) 9 LOAD_GLOBAL 0 (range) 12 LOAD_CONST 2 (3) 15 CALL_FUNCTION 1 18 GET_ITER >> 19 FOR_ITER 32 (to 54) 22 STORE_FAST 1 (i) 16 25 LOAD_FAST 0 (s) 28 LOAD_CONST 3 (u'123') 31 INPLACE_ADD 32 STORE_FAST 0 (s) 17 35 LOAD_GLOBAL 1 (print) 38 LOAD_GLOBAL 2 (id) 41 LOAD_FAST 0 (s) 44 CALL_FUNCTION 1 47 CALL_FUNCTION 1 50 POP_TOP 51 JUMP_ABSOLUTE 19 >> 54 POP_BLOCK 18 >> 55 LOAD_FAST 0 (s) 58 RETURN_VALUE 我们看到s是local变量,这个符合我们的预期。但是后续确实发生了add,而string的+算法,我们可以参考Objects/stringobject.

Jan 17, 2012 - 1 minute read - Comments

计算机自动化的方向

我认为,人类操纵各种设备的权利不言自明,这是软件/电气设备进化的必然结果。 OK,我在吐槽什么? 昨天,老婆用了一次家里的新自动洗衣机。很好用——晚上把衣服全丢进去,然后设定模式,倒进去洗衣粉,今早六点他会自动启动。早上就拿着半干的衣服去阳台晾晒,整个过程没有一点麻烦。外婆家里的那台老洗衣机,每次使用都需要搬进搬出,连接一堆管线,然后发出巨大的响声,再由人工把半湿的衣服拿去晾。 ——如果要那样的话我们还得看着洗衣机,或者任由刚刚洗好的湿衣服在洗衣机里面闷六个小时。 我觉得,这才是享受人生的方式。当然,老婆和我也是一样的观点——我们在父母家里可是受够了老式洗衣机的刁难。她在发现这玩意的好处后,脑筋动的可比我快多了。早上还没有睡醒,我就被她吵起来,然后问了一个问题。 怎么远程遥控家里的微波炉和空调? OK,很得意的说,这是家居设计时我早就发现的一个问题,然后很遗憾,我告诉她——暂时不行。这个是我调查了很久后得出的结论。我不大不小好歹是个程序员,怎么说在控制电器上也是有点经验的,不过这个问题确实超出了我的能力范围。目前我所知道的,控制电器的方式基本有三种。 1.电器本身支持某种协议,例如wifi,或者蓝牙。我的电视机就支持eth网络,我可以通过手机遥控电视,或者直接在电视上观看某些节目,而不用打开电脑。 2.通过电源接口做。例如我看到房屋装修中卖的最多的,号称智能屋的系统。大部分都只能支持电灯的开关,或者电灯开关支持的最好。因为电灯的开关是一个只和电源有关的问题,我们只需要做一个很小的单片机系统,装置在开关面板上。当这个机器收到无线信号的时候,就打开或者关闭电灯开关。 3.通过红外线仿真做。这个适用于IrDA兼容的无线红外遥控设备。通过购买一个红外线装置,接收遥控发出的红外信号,再对着设备重发。 而以上三种方案,都是有缺陷,而且是严重缺陷的。 方案一,需要设备支持。通常来说,这样的设备都是相当昂贵的,而且不是每类别的设备都能买满意了。如果有一个很小的厂子生产一种空调,支持wifi。但是这个厂的空调机以不稳定而出名,你是否愿意为了遥控而冒常常要去修空调的麻烦呢? 方案二,不是每个设备都能灵活控制。空调和微波炉接入电源后处于待机阶段,而不是启动——这是最有遥控价值的两台机器。即使能启动好了,我再如何通过电源告诉他,把里面的东西给我加热10分钟?而且单片机接收信号必须有相当复杂的加密,至少能对抗差分攻击。否则就会陷入汽车解锁遥控器同样的问题——被破解。 方案三,更加糟糕。红外是一种指向性相当强的方案,所以当年的红外数据传输方案很快就被蓝牙替代了。也就是说,我要遥控三台空调,需要买三个红外设备,做固定指向。或者买两个电机来摇动红外设备。即使给我做出来了,不支持遥控的微波炉,自然也无法使用这个方案。 然而你很容易的想到,如果一个完全不明白技术关键的外行,在接触程控的第一天,就把我摇起来问这个问题。那么这个问题,肯定是我们将来的目标。 未来的设备,不但需要一套硬件界面(这个是必须的),而且还需要一套协议界面。为什么?你可以在家里的电脑里,通过符合协议的软件,一次性控制家里的所有设备,这就是所谓的“完全中控”。如果你觉得我是瞎说,鬼才会想要这种东西。请自己问问手里有一台ipad的同学,他们是否想在ipad上装个软件,直接遥控家里所有的电器? 他们想死了。 晚上的时候,把面包放进烤炉,执行一个good morning app。早上到时间了,闹钟会自动叫你起床,同时餐厅空调开始工作。当你确定起床后,面包就会自动开始烤,刷牙完毕正好出炉。出门的时候,所有设备都会自动关闭——整个房间里面没有任何一台中控设备了。晚上回家前,你的移动中控设备会通过3G自动唤醒灯光和空调。出门购物的时候,家里的冰箱会把缺什么东西传到你的手机上。 这才是人生阿。 睡觉前总是习惯要听点音乐,睡着后需要自动关闭么?装个app吧,亲。那个app不能连带关闭空调么?换这个app吧,亲。想要起床前空调就开始工作么?我们的app带定制功能,而且有默认配置模板提供修改哦,亲。Bill Gates在《未来之路》里面所幻想的美好未来,其实和我们只有一步之遥。 这一步问题在哪里?协议。 其实我们是可以做到的,这样美好的生活。问题是,我们缺少一个协议。 有专业公司,提供装修服务。他们可以对你的家里进行改造,部分安装他们的外接设备,部分改为专用电器,并且在iphone上安装专用软件,实际上可以部分做到我刚刚说的。 问题是,贵,而且不开放。 开放的好处在于,如果这个系统不支持晚上睡觉前关闭空调,我可以自己写一个替换掉。而且如果某个电器坏了,我不需要高价问他们买一个新的专用电器,而是直接可以在商场里面买一个。而专用电器支持的问题则是,我必须持续使用他们的设备和服务,他们也不能关门。 所以我才说,我们需要一个协议。

Jan 16, 2012 - 1 minute read - Comments

加密学中一个规定的来历

为什么密码学中总有个假定,算法是对方已知的,密钥是可以更改的? 因为在很久以前,密码算法是靠人工运算的,更改算法每次都需要培训一堆人,很麻烦。所以变态的需求催生了变态的解法——算法彻底公开,靠密钥保密。 还记得很多谍战片中的“密码本”么?如果在现代,那就只一个记载着256个字符的纸条。因为整个过程其实地球人都知道,双方只是相差一个纸条上的256个字符而已。 觉得这点东西不靠谱,随便记忆一下就搞定了?你想想,以前的密码本也可以照相阿。是重建一个密码本,并且分发给各处安全,还是重建一个纸条并分发方便? 现代?其实还是很有意义的。因为很多遗留系统/硬件模块中的算法会长达10多年不变,如果依靠算法保密来保护安全性,哪天泄露了不是开玩笑的。上千万的硬件模块,没有人维护的遗留系统,都要整死人的。 而且算法本身也必须足够强,如果没有公开算法,“足够强”这个事情本身就是含糊不清的。没有人见过你这个算法,没有人讨论,谁知道是不是“够”安全呢?md5以前一直作为哈希的标准,我们都觉得够安全了,但是哈希碰撞的研究使得现在基本都推荐sha256了。同样,DES也不要再用了,换成AES吧。

Jan 13, 2012 - 1 minute read - Comments

昨天那个事情的后续——也谈网络安全

安全无小事阿,昨天批评到一半,发现遇到李鬼了。尴尬,赶紧修正文章,不知道影响多大。 我们事后推理,问题可能是这样的。有人故意在赶集网上用别人电话发布信息,然后等你的电话被打爆。赶集网本身只允许举报手机滥用,而不支持座机举报。所以你会找客服电话,但是他们客服电话又找不到。他们做一下SEO搜索,或者直接买关键词。你通过搜索,找到的就是他们。你要取消,他们就要你汇保证金。保证金进去了,然后你就被骗了。 当然,文章本身的批评也算是成立,常规发布电话信息应当是先确认再使用的,投诉的系统也应该支持座机等方式。由李鬼客服的存在,你可以想见到底有多少人试图投诉电话被错误使用,在系统中又无法删除。 但是我要说的是,这个诈骗差点成功的关键原因在于——赶集网没有公布自己的客服电话。由于没有官方公布,因此使用搜索引擎搜到的根本是李鬼。当然,如果打官司,赶集网肯定是无责任的。但是,被骚扰过的公司都知道,真的到了这个地步,你会很烦,非常烦。我相信对百度恨之入骨的不少公司应该都知道我的意思——明明不是我的事情,脏水泼头上,客户在骂娘。 我更进一步看了一下赶集网这个网站,安全么?也不安全。别的不说,登录系统还是使用http,而非https。两者差异非常大。使用http的,只要通过一个恶意的网关,就可以捕获到用户密码。作为玩玩而已的网站,我觉得使用http也就算了。作为一个商业公司,登录系统不使用https,实在是有点不专业。至于投诉电话也是一个例子。如果你打算联系新浪,打开网页,拉到最下方,直接就有400电话,根本不用担心这个问题。 各个网络教材反复告诉我们,安全不是一个技术问题。实际上,安全是一个从最高层到最下面的意识问题。作为安全的头一步,首先你要告诉你的用户——你应当信任什么。 如果你的公司是一家实体公司,以电话业务为主。那么你的宣传要点可能就是电话,而网站的具体网址可能就是通过短信方式进行分发(至少要有这个功能)。这方面的例子有携程。而如果是一家网络公司,以网络业务为主。那么你的宣传要点就是你的网址。为了安全,我建议稍微做大一点的时候,就干脆点,把常见的拼写错误全买下来,省的李鬼入侵。你的地址,联系电话,都通过网络分发,而且要让别人找的到。 上面一段简单点来说,就是,一个主要的宣传方式,上面发布所有的可信联系方式。为什么?如果你不发布,就可能有李鬼进来。到时候再处理,就非常困难。 盗梦空间里面说过,要确认你在真实的世界,而不是梦境中,并不容易。现实中,要确认和你说话的人的真实身份,也不容易。通常来说,如果你问我借钱,我要给你钱,你都能在对话里面发现我会问你一些有点奇怪的问题。frank应该心领神会,他问我借卡的时候,我可是在敲定事情后直接抄起手机给他打了个电话。通常来说,IM可以被偷,但是电话没有道理一起被偷。即使被偷了,还能伪装声音,那我也认栽了。我现在还欠着钱没还的小一,某位报社编辑,还有我帮忙充过卡的老燕子。如果你们看到这篇文章,应该也能回想起我给你们相关信息时问过一些奇怪的问题吧。 这些问题,叫做背景知识验证,我在前面的一篇文章中提到过。背景知识验证的基础是你们拥有相同的知识。而对于一个网站,你没办法使用这个办法的。所以,为了防止李鬼,你要反过来,使用无知假定。所谓无知假定,就是,在你面前的人充分证明自己之前,没人知道他是谁。也就是俗称的《互联网上没人知道你是一条狗》。所以作为客户来说,不要轻易相信搜到的联系方式,最好用114。当然,114上如果没有,那也没有什么太好的办法。 另外昨天和42区的同学谈了谈,他说会警告赶集的朋友。毕竟李鬼的存在对正品网站是一种伤害。但是从现在来看,只能采取防御策略。具体什么策略,就看赶集网的计划了。不过比较有意思的是,昨天我们谈到李鬼的时候,说到“互联网人士也无法分辨”,他给了我一个例子。在淘宝被诈骗5.46万始末。我看完吓了一跳。千鸟是小米的信息架构,算是IT圈子里面的人,不能算外行。在购物的时候,也是小心又谨慎。即使如此,还是被骗了!这只能说一点,即使是内行,也不要仗着自己专业就放松警惕。 我仔细看了一下流程,主要能找到的问题有以下几个。不过需要提前说明的是,这些都是马后炮。很多事情我们知道不应该,但是真的都有避免么?如同我某篇文章说的那样,就是彻底的神经质了。 1.在不可信环境中消费。这是一切问题的根源。本质上说,应当把环境分为“可信”和“不可信”,并且在几个信任等级间架防火墙。可信机器可以通过虚拟机产生一个不可信环境(沙盒),但是反之不可以。同密级机器可以弱密码或无密码互联。高密级机器可以无密钥连接低密级,反之不行。 2.没有在发生问题的第一瞬间进行止损。对于大额支付(对我而言,1000以上统统叫大额),网银一旦提示成功,而支付宝里面没看到钱。第一瞬间反应绝对不是再来一次,而是直接敲电话给网银,然后是支付宝。绝对不要试图在支付失败问题没搞明白的时候再试验一次,就算试,最多也只能试一毛钱。 但是归根结底,这件事情轮到谁头上基本都是中招的,因为要管理的问题太多了。 反思了一下自己,我打算在自己的环境中推进几个事情。 1.重新设定防火墙,关闭不需要的服务和开放设定。 2.重整U盾,假定他可复制,因此需要使用特殊的保密环境进行支付。 3.对环境中的几台不可信机器进行行为监控。 4.定期读日志,尤其是异常报告。 5.关掉“仅使用手机动态密码支付”的选项。 PS.这篇文章不代表我支持网络实名制,但是我觉得应当让自己想实名制的人实名制。

Jan 12, 2012 - 1 minute read - Comments

越想避开2B事,事情就越找上门——一个朋友的隐私泄漏问题

首先向赶集网道个歉,核实下来居然是李鬼,主题还真没写错。下文根据事实情况做了修正,看过原文的可以对比看看。 今天一个朋友中午给我打电话求助,问我能不能在网络上把一个信息给删了。我顿时一惊——你被陈老师了?还是有人曝光你们家怎么怎么,所以花钱删帖? 结果都不是的,她家里电话被登在了赶集网的某个页面上,还置顶了。一个中原地产的人发布房屋消息时,用的是她的座机。 我顺手查了查,赶集网有删除错误信息的选项阿。 ——你自己用用试试看? 我输入号码,我去阿,居然是js验证,要求号码必须是手机。仔细看看,是输入手机后发送验证码,输入验证码删除。 有点道理,可是我朋友家里是座机,咋办? 她找了找赶集的客服,但是没找到客服电话。搜索了一下网络上,有个人表示是赶集网的客服部,他说对方是付费用户,自己选择的置顶,她们无法删除。要么,交1000押金,立刻删除。对方三天内没提出意见,押金退还。 这个事情就很搞笑了,我自己的信息,要付费才能删除?传说中的百度产品经理去了赶集网么? 我说,你要么找发布者看看? 她说我找了,对方是中原地产的,说话很不客气。说这个事情我们检查一下,如果有问题,我们会处理的。她怀疑是对方在故意整她,不过这个事情目前没有任何证据的。 然后她只能等着,期间电话还是一个接一个的进。她家里也是开公司的,电话不能不接,也没法做垃圾过滤。 逼急了,她准备去报警,还不知道警察受理不受理。 42qu的某同学找我,说他认识一个赶集的人。他准备和对方沟通一下,看看能不能删除。先谢谢该同学。 过了中午,赶集的产品给了我一个消息。只要打给客服,客服会要求你提供电话。然后他们会回拨你一下,你接,就可以认证身份,然后对方就会删除信息。 我联系了朋友,她顿时觉得——怎么和上一个说的一点都不一样阿。 我和42qu的同学联系了一下,要了一下他们的客服电话(我们都找不到客服电话,他们的产品只有打过去要)。然后我朋友打过去,很快,问题解决了。 OK,大家现在应该猜到了,上午我们碰到了李鬼,也不知道我朋友是不是用百度搜索的。 如果真的打钱过去,就完蛋了。 先不说登录信息人的问题,我首先说赶集网的策略。 对于没有验证过的个人信息,采取“首先使用”的策略合理么?如果我找个虚假信息登记一下,成为用户,然后付费置顶,再录入某人或者某公司座机为火车票预定电话。那他们的电话不是瘫痪了? 其次,对于问题的反应,赶集网并不是很上心。网站的快速删除根本没有考虑座机如何操作,只考虑了手机。普通投诉在24个小时内也没有响应。而且没有明确的提供客服电话——至少两个程序员没有找到。如果赶集网本身提供了客服电话,或者快速响应了人工投诉,那么也没有后文的问题。问题是赶集网本身对客服并不是很热心。也许这是因为他们需要压缩客服成本。 最后,归结到根本上,赶集网对于有可能侵犯客户隐私的事情,有什么成本呢? 我怀疑没有成本。 我朋友如果去报警,最大可能是警方只提供记录,但是不处理。要解决,可以,自己起诉赶集网去。首先去公证处取证,一个页面3000(这还是07年的价格),然后去侵权所在地。赶集网的总部在北京,中关村软件园八号楼,所以要在北京市海淀区法院进行起诉。然而起诉前不能排除调解,因此可能还要过一遍调解过程。如果调解无效,那么开始起诉过程。如果对方不服,还有上诉。我不说隐私泄漏的结果如何计算,仅仅是这个时间和成本,就远远不是一般人能接受的。 因此赶集网实际上是没有风险的,因为很少有人会去执行。既然没有风险,那么自然也就没有动力考虑,如果被错误使用的不是手机如何,如果被错误使用的是地址如何,如何规避不慎泄漏了对方信息造成的风险——反正也没风险么。 在这里我批判的不是赶集网这个网站本身,作为一个公司,天大地大赚钱最大,你不能说这个是错的。那么和赚钱无关的事情不优先考虑,同样,也不能说是错的。我固然欣赏谷歌“不做恶”的信条,但是同样深知,你不能指望每个公司都信奉这点。 然而,难道说用户信息泄漏就是对的么?我们的电话被登录在网站上,被打爆,关键电话接不到,导致经济上的损失,或者其他一些事情,难道这就是对的么? 你必须让泄漏用户隐私变成公司的成本,而且是很大的成本,公司才会去关注这个问题。这点不仅对赶集如此,对百度如此,对人大代表如此,对你我也是如此。 你是否有把自己的手机写在人人和开心的页面上? 有写的话,就不要在接到垃圾短信的时候光抱怨各个公司泄漏你的个人消息。 你是否也有侵犯别人隐私的时候呢?例如你问,结婚了没?工资多少?在哪里上班?父母还在不在? 这些难道就不是隐私了么? 你见到没信用的公司的时候,是否还会用他们的产品呢?例如三鹿。虽然现在他被并购了,但是并购前,你还会喝他的牛奶么?如果不会,你看到侵犯隐私的公司,你会不会和他们提出意见呢?会不会用他们的产品呢?还是笑笑当作没事一样? 我知道这个社会一向不大把隐私当回事的。大到公司能大喇喇的把别人的家庭电话具体住址贴出来。小到我们每个人每天都在问别人的薪水。远到网络实名制的时候有人说,要么我们全填方老师的信息好了,并且把方老师的信息全公布出来。近到你看着看着这篇文章,突然手机响了,打开一看——又是垃圾短信。 我们每天都在被别人侵犯隐私,也在侵犯别人的隐私。我相信,即使在隐私保护比较好的国家,类似的问题也是层出不穷。问题是,我们多关注,多做一些事情,也许我们的情况就能好转点。虽然听起来没有联系,但是你少问别人工资,看到垃圾短信多举报(前提是这个机制要有用),看到网站对隐私保护不利要多投诉,也许在几千次的尝试后,你自己,或者你的后代,就能拥有更好的生活。 当然,如果你也不关心这个问题,那请当我没说。 最后,赶集网的客服电话是:010-59013666。特此公布以正视听。如果你发现有问题,可以在关于那里找到我的联系方式,我会尽快响应。