[OpenBSD]


"任何优秀的安全工程师都奉之为圭皋:'安全不是一个产品,而是一个过程'。 不只是把强大的密码技术融入系统的设计;安全是在整个系统的设计上, 让所有的安全措施,包括密码技术都整合到一起,协同工作。"

-- Bruce Schneier, "Applied Cryptography" 的作者。

Cryptography


Index
为什么我们提供密码系统?
OpenSSH
伪随机数生成器 (PRNG): ARC4,...
密码学散列函数: MD5,SHA1,...
密码学变换: DES,Blowfish,...
对密码系统硬件的支持
寻找国际密码系统安全专家
进阶读物


为什么我们提供密码系统?

简单的说: 因为我们有这个能力

OpenBSD 项目基地设在加拿大。

加拿大出口控制列表没有对密码学软件的出口设置特别的限制性条款, 甚至明文规定允许自由出口自由的密码学软件。Marc Plumb 已经做了一些研究来验证相关的法律

因此,OpenBSD 项目把密码学技术嵌入了操作系统的很多地方。 我们要求所使用的加密软件可以免费获取并拥有良好版权许可。 我们不会直接使用那些带有令人厌恶的专利权的加密软件。 我们还要求这些软件是从有出口许可的国家输出的, 因为我们并不想违反任何国家的法律。 我们当前使用的密码学软件组件来自阿根廷,澳大利亚,加拿大,德国,希腊, 挪威和瑞士。

当我们制作 OpenBSD 发行版本和快照版本的时候, 我们在允许自由输出的国家来完成, 以保证我们提供的源码和二进制代码可以被用户自由使用。 在过去,我们提供的编译好的版本是在加拿大,瑞士和德国完成的。

OpenBSD 包含了 Kerberos V。其基本代码来自瑞士的可以出口的 Heimdal 版本。 我们的 X11 源码也已经扩展到可以使用 Kerberos 验证机制了

VPNC TEST PARTNER OpenBSD 是第一个带 IPsec 栈的操作系统。我们从1997年发行的 OpenBSD 2.1 版本就开始带 IPsec。我们完全内嵌在内核里面的 IPsec 栈, 加上可基于多种卡的硬件加速,以及我们自由的 ISAKMP 守护进程, 被用于 VPNC 中的一些 IPsec 兼容性测试主机。

今天,密码学技术成为了增强操作系统安全性的一个重要手段。 OpenBSD 中对密码学技术的利用可以分为以下几个方面。

OpenSSH

从版本 2.6 开始,OpenBSD 包含 OpenSSH,一个完全自由免费,没有任何专利权限制的 ssh 实现。 OpenSSH 除了兼容 ssh 版本 1 之外还增加了很多新特性:

粗略的说,我们发行的是 OpenBSD 自由的兼容版 ssh。大约过了一年后,我们把 OpenSSH 扩展至支持 SSH 2 协议,从而 OpenSSH 就可以支持所有主要的 3 个 SSH 协议: 1.3,1.5 和 2.0。

伪随机数生成器

伪随机数生成器(PRNG)为应用程序提供数字流,并且为系统安全提供了重要的特性:

PRNG 通常只是算法,相同的初始值将产生同样的输出序列。 在一个多用户操作系统上,有很多来源为 PRNG 产生种子。 OpenBSD 内核使用鼠标中断时间,网络数据中断延时,键盘按键间隔时间, 和磁盘 IO 信息来填充熵池。内核例程可以读取随机数, 而且也通过设备输出到了用户空间程序。到目前为止,随机数用于如下场合:

密码学散列函数

散列函数在接收输入的数据后,将其压缩到一个恒定的大小。 对散列函数来说,不可能出现以下情况:

在 OpenBSD 中,MD5,SHA1,和 RIPEMD-160 用于散列函数,举例来说:

密码学变换

密码学变换被用于数据的加密和解密。通常是一个加密密钥用于数据加密, 一个解密密钥用作数据的解密。一个密码学变换的安全性取决于密钥自身。

OpenBSD 提供了 DES, 3DES, Blowfish 和 Cast 用于内核与用户空间的程序, 它们用于许多场合,例如:

对密码系统硬件的支持

从 OpenBSD 2.7 开始支持一些密码系统硬件,比如加速器和随机数生成器。

如果有人愿意帮助编写驱动程序,请加入我们的行列

寻找国际密码系统安全专家

当然,我们的项目需要人们来开发这些系统。 如果有非美国的密码学专家满足上述要求,愿意帮助我们开发嵌入 OpenBSD 的密码学系统,请联系我们。

进阶读物

OpenBSD 团队成员已经撰写了很多关于他们在 OpenBSD 的密码学系统方面所作改变的资料。这些文档的 postscript 格式可从下列地址获取。


OpenBSD www@openbsd.org
$OpenBSD: crypto.html,v 1.2 2008/03/02 12:13:00 tobias Exp $