Security

gmpy/离散对数

前几天做一个解离散对数的题用到了 gmpy,它是 GMP 的 Python 封装,用来算大数。

这里记两笔。首先是大整数需要用 mpz 对象,例如:

p = mpz(13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084171)

判断大数是否是质数:is_prime(p) (求离散对数其实用不着)

求逆元 x1x^{-1}invert(x, p)。例如, y = invert(x, p)(xy)modp=1(x * y) \mod p = 1

阅读全文…( 本文约 690 字,阅读大致需要 2 分钟 )

多次使用同一个一次性密码本的破解

正确地使用一次性密码本进行加密,在理论上是无法破解的。需要注意的是,许多对称式加密算法本质上是通过一定的算法来将密钥作为伪随机数发生器的种子来产生(近似于)一次性密码本的序列,因此类似的问题也需要予以重视:不要重复使用同一个一次性密码本(或密钥)来加密不同的明文数据。

以基本的一次性密码本加密算法,即按字节做 XOR 来看,由于在这个算法中明文和密文的字节位置是一一对应的,很明显,同一个位置的两份密文之间做 XOR,可以知道两份明文之间的 XOR 值(因为在这个过程中,密钥 k 被 XOR 消去了)。

假如明文碰巧又没有做任何压缩处理,实际上我们可以用程序来穷举出部分的密码本,并逐步解出全部明文。具体方法大致如下:

阅读全文…( 本文约 776 字,阅读大致需要 2 分钟 )

Project HoneyPot

很久以前 Cisco 的 刘老师 就做过蜜罐系统,所谓蜜罐其实是一些"看起来"像是正常,但并不对正常人提供服务的网络资源,例如邮箱、网页,甚至网络服务等等。它们存在唯一的作用是吸引攻击者的机器人来攻击,从而得到关于攻击本身的更多信息,或在攻击开始之前采取防御。这种做法有点像有些国家在火箭基地附近建设几个一模一样的、假的火箭基地,防止敌军轰炸等等。

阅读全文…( 本文约 361 字,阅读大致需要 1 分钟 )

周末地图炮时间:沙箱与开发者的良心

TextMate 2 宣布开源了,在 一则报道 中指出,这是对苹果 OS X 新增的限制的回应,我对此十分怀疑。

为什么呢?因为沙箱是非常重要的安全机制。沙箱其实到处存在,只不过在过去没有 OS X 中这样全面和细致而已。例如,现代操作系统中两个进程不能随便互相写对方虚拟内存中的内容;又比如,操作系统中通过"用户"、“属主"等概念来进行访问控制,等等。这些机制的存在,限制了由于开发人员偶然犯错导致的损失范围。许多不靠谱而且不负责任的开发者,则会以种种借口指责沙箱拖慢了他们的开发进度。更有甚者,其中的一些甚至还会告诉用户打破沙箱(例如比较常见的是很多 php 应用建议用户 chmod -R 777),其结果则必然是在发生问题时产生更大的损失。

阅读全文…( 本文约 380 字,阅读大致需要 1 分钟 )

SHA512-crypt

早期的 FreeBSD 版本中采用的是 md5crypt,其作者 Poul Henning-Kamp 最近发表了一篇文章:Md5crypt Password scrambler is no longer considered safe by author,所以 FreeBSD 预设的密码格式也就随之改成了 SHA512 crypt。

阅读全文…( 本文约 249 字,阅读大致需要 1 分钟 )

nginx的https压缩

| Security | #nginx | #HTTPS | #compression | #SSL | #performance

官方版本的 nginx 在 https 的时候是不对流量做压缩的,具体原因在这里这里 有解释,它会增加半兆的连接内存开销。

启用 https 压缩除了需要 nginx 本身做少量修改(例如去掉 if[n]def SSL_OP_NO_COMPRESSION 部分的语句块)之外,还需要 OpenSSL 本身编译了加密支持。FreeBSD ports 的 security/openssl 预设启用了 ZLIB 扩展,但基本系统目前没有(由于 zlib 是很大的一片代码,也许需要做了 Capsicum 处理之后才可以放进来用)。

阅读全文…( 本文约 286 字,阅读大致需要 1 分钟 )

计时攻击和登录系统设计

计时攻击是一种通过观测由于某些操作时泄露出来的时间信息来获取更多信息的攻击。由于设计和实现的不同,攻击者能够通过计时得到的信息也会不一样。简而言之,作为安全系统的设计者,必须对可能泄露信息的各种渠道有充分的了解,并针对它们采取因应措施。

阅读全文…( 本文约 556 字,阅读大致需要 2 分钟 )

为什么安全更新通常在周三发表

目前多数软件产品的安全更新都是在周二或者周三公布了。这种做法 据说 是微软开始采用的,不过具体是谁先开始这么做,目前我还没有找到非常可靠的资料。

一般来说,软件开发者在发布安全更新之前,需要做下面这些事情:

阅读全文…( 本文约 352 字,阅读大致需要 1 分钟 )

全盘加密

最近在琢磨一个产品里实现全盘加密的问题,简单来说就是加入存储卷的硬盘存储的是完全加密的数据。对于保存机密数据(例如患者数据)的存储设备来说,这一点十分重要,举例来说,如果硬盘出现故障,OP可以直接把硬盘拆下送回厂商,而不是必须做抹除数据的动作。

阅读全文…( 本文约 264 字,阅读大致需要 1 分钟 )

为什么输入敏感数据(如登录信息)的页面也要做成 https?

| Security | #HTTPS | #security | #web security | #privacy | #SSL

有一种错误的观念是,对于不太敏感的内容(例如论坛之类),只要用 https 保护登录过程中提交密码的部分就足够了。例如国内非常流行的网易邮箱,很早以前便提供了"SSL安全登录"的选项,这样做显然是比完全不提供SSL登录选项的新浪邮箱要强多了[注1],但是仍然是不够的。

阅读全文…( 本文约 467 字,阅读大致需要 1 分钟 )