实现安全的三种途径
回国的时候和 康神 及端木吃饭的时候聊起过这个话题,这里整理出来。
实现安全有三种主要的手法:基于隐蔽的安全(或者,基于假象的安全)、基于默认配置的安全和基于设计的安全。
基于假象的安全很容易理解,也很容易实现。举一个简单的例子,在一片西瓜地前面戳一块牌子,说这块西瓜地里有一个西瓜里面注射了剧毒。
可以想象,由于信息的不对称(不知道是哪个西瓜有毒,或者根本就没有西瓜有毒),试图偷西瓜的人就会有所忌惮—-如果偷走的西瓜含有剧毒,那么这个西瓜是没办法吃的。然而,这样做有至少三个很致命的弱点:首先,为了实现最大化的利益,很可能瓜地的主人并不真的注射剧毒(或者反过来说,把偷瓜的人毒死并不是他的目的,他的目的是尽可能地保护瓜不被偷);其次,即使瓜地的主人真的只给一个西瓜注射了剧毒,那么如果有人偷了那个西瓜并且死掉,那么知道这件事的人就可以冲过来直接把所有的西瓜偷走;最后,一个以牙还牙的小偷,很可能会在牌子上留下这么一段话:现在有两个了……
简单地说,基于假象或隐蔽的安全,建立在"别人不知道其机制"的基础上。这样的做法有时能够在一定程度上延缓攻击,但并不能使攻击的成功率降低。将弱点隐蔽这种方法成本比较低,例如,把门钥匙放在门框上、将知名服务端口如ssh(tcp/22)转到不知名端口如tcp/12580上、port knocking技术,以及国内银行常用的Active X插件等等。然而,假象终归是假象,这些方法都不能真正改善系统的安全性。这类做法,充其量只能作为没有其他更好的办法时候的一种临时 workaround,而不能带来长久的安全。
第二种做法,也就是基于默认配置的安全,是一类非常常见的策略。这种做法通常与其他安全机制合并使用。简单地说,采用这种策略的系统,在其出厂的时候是没有暴露在外的弱点的,例如它可能只开启了非常少量,甚至完全不开启任何服务,随后,管理员可以根据需要进行配置来开放一些需要的服务。
阅读全文…LLVM: 为什么你需要关注这个项目
LLVM 是 Illinois 大学发起的一个开源项目,它到底是什么呢?从字面上看,它是一个虚机系统,然而这又和之前为大家所熟知的 JVM 以及 .net Runtime 这样的虚机不同,它提供了一套中立的中间代码和编译基础设施,并围绕这些设施提供了一套全新的编译策略(使得优化能够在编译、连接、运行环境执行过程中,以及安装之后以有效的方式进行)和其他一些非常有意思的功能。
为什么这个项目很重要呢?对于普通的开发人员来说,LLVM计划提供了越来越多的可以使用、编译器以外的其他工具。例如代码静态检查工具 LLVM/Clang Static Analyzer,是一个 Clang 的子项目,能够使用同样的 Makefile 生成 HTML 格式的分析报告;而对关注编译技术的开发人员来说,LLVM提供了很多优点:
阅读全文…For 27 years...
“For 27 years, Sun has stood for courage, innovation, a willingness to blaze trails, to envision and engineer the future.”
Good luck, Sun!
参与评论美国运通(American Express)的年度对帐单
可怕,很可怕。
其实也没啥,年度对帐单其实就是把月度对帐单里面的帐目做了一下summary,然后分门别类地把刷卡的明细排列出来,告诉你每个月花了多少钱,有多少调整金额和charge(我从来不相信国内某银行宣传材料上写的那种月底不把钱还清是好的理财策略的说法,无论如何不还清导致最终的还款现值pv都会比还清的高,所以这项几乎一定是 < 0的)。
阅读全文…关于分治卖票协议的讨论
和蛇头GG讨论了一个关于卖票的问题,简单地说是票很有限,需求量很大,如何能够尽可能高效地让票以尽可能公平的方式卖出去。
我设计了一个分布式的结构来解决这个问题,当然这个原型可以进一步改进,此处按下不表。记录一下我对这个结构公平性的描述的一个比喻:
阅读全文…十多年以后又做了一次FAT文件恢复
今天又帮人做了一次恢复,上次干这个事是十几年前的事情了。数据恢复是个手艺活,恢复个60%-70%基本上靠工具,剩下的就靠运气和经验了。
想起很久以前做的一个小工具。简单地说是先把磁盘复制一份出来,然后在数据文件上去操作,把已知的链接上,然后把未知的文件的首簇、长度算出来,在空闲区里面找(很明显,大文件恢复的成功与否很大程度上取决于你多久整理一次磁盘以及是否经常删除文件)然后接个链出来。我当时很感激某文本编辑软件每次都会把之前的文件改名做BAK然后把文件整个重新写一遍。
阅读全文…Overhaul of libc Berkeley DB has been committed
First of all, thanks goes to all people who has helped me on this project, especially Pav (portmgr@) who gave it a twist on pointyhat.
It seems that this has taken me almost a month and 20 commits to get into the tree, after the code is ready. At the beginning, the changeset was ~200KB, and I believe it’s not good to just go ahead and commit it in one time, since it makes reviewing hard. Instead, I manually split it into smaller, functional related chunks, and commit it part-by-part.
阅读全文…如何:转换旧式编码的MySQL数据库到UTF-8
最近帮公司的一个客户做了一个数据库迁移,客户声称数据是 utf-8 的,然而在使用过程中出现了许多乱码,检查发现数据并非 utf-8,而是 utf-8 编码之后的 big5,而排序方式更是混乱不堪的默认的utf8-swedian-ci。
MySQL的国际化支持很差。MySQL从 4.1 版本开始大刀阔斧地进行了不兼容的改动,简单地说,这些改动让相当多的操作默认以UTF-8进行,然而这会给旧的应用程序带来很多问题。许多文献推荐使用 SET CHARACTER SET 作为 workaround,尽管这能够解决一些问题,但这种做法本质上会导致 MySQL 进行额外的转换,因此并不是十分理想。
终于,基于BIOS的终极木马诞生了
终于,是吧,直接写入BIOS的终极木马诞生了。十几年前的CIH病毒等等现在看来都是小儿科。
这种东西迟早会出现,这个我并不觉得奇怪,但是这次CORE实现的这个攻击是一个通用性很强的攻击,换言之,它能够适应多种不同品牌的 BIOS;实际上我认为这种攻击很可能也适用于网卡、RAID卡、显卡上面的可刷写ROM。例如,如果在 VBE 中写上这么一个玩意呢?现在看来 ACPICA 真是一个有前瞻性的玩意,也许 Intel 早就意识到了这种问题可能会发生?
阅读全文…Google SoC 2009/FreeBSD
之前在水木社区发过,这里也发一下。
我们目前正在寻找有意参加这次活动的在校学生。Google Summer of Code 是由Google公司赞助的供在校学生参与开源项目的暑期活动。目前,FreeBSD已经被选为符合资格的 mentoring organization,这是 FreeBSD 第 5 年参与 GSoC。
重要的日期:
- 3月23日 - 开始接受申请
- 4月 3日 - 申请截止日期
- 4月15日 - 对申请的审核结束
- 4月20日 - 正式宣布赞助的学生
- 5月23日 - 项目正式开始
- 7月 6日 - 开始提交中期评估
- 7月13日 - 中期评估最后日期
- 8月10日 - 推荐的项目完成时间,接下来的一周时间建议用于修正代码、完善文档等。
- 8月17日 - 开始提交最终评估
- 8月24日 - 最终评估deadline
Google将为获得资助的学生提供每人 $4,500 的资助,分3次支付;同时,对于每个项目,Google还会为对应的开源项目提供 $500 的资助。
关于 FreeBSD 本次 SoC 活动的 网站。
阅读全文…