知识库 人物 历史 地理 自然 文化 艺术 社会 科学 技术 教育 生活 体育 企业 银行 组织 官职 外交 联合国 博物馆 基金会 纪念馆 军事组织 组织机构 职能部门 诺贝尔奖 汉族 民俗 风俗 婚俗 姓氏 习俗 百家姓
  密码术           

密码术

Murdoch Mactaggart 是一个自由撰稿人和商业顾问,他编写有关软件开发、因特网以及围绕这些领域的商业和管理事项的文章。读者是否能正确理解他所写的内容还是一个有争议的问题,但是,尽管他尝试达到灵活,他通常坚持用英语,而不是引入他自己创造的语言。您可以通过 IBMDev@TextBiz.com与他联系。

对他人隐私的好奇心和隐藏信息是所有人类社会的特征。随着计算能力的出现和高级数学技术的发展,系统变得非常复杂,目前有可能构造出很难被有效破解的密码。用来加密和解密数据的算法分为两大类:秘钥(secret key)或对称密码术,其中对加密和解密这两个过程使用同一密钥;以及公钥或非对称密码术,其中一个密钥用来加密,另一个用来解密。现在,标识发送方、认证和不可抵赖性(non-repudiation)与信息隐藏一样重要。本文对密码术做了广泛而详细的研究。在该系列的后续文章中会更详细地研究具体问题。

一般信息

好奇心是人类最普遍的特征之一,与之对应的是隐藏个人信息的愿望。情人、间谍和军队都会采用信息隐藏技术来安全地传递消息,有时还故意包含一些使人产生误解的信息。隐写术是在看起来单纯的情形中隐藏信息的一种机制,可单独使用,也可以与其它方法一起使用。

根本上讲,加密在于扰乱消息,这样它的内容就无法轻易获取,而解密是这一过程的逆向过程。这些过程取决于特定的算法,称为密码:经过适当扰乱的文本称为密文,而原始文本毫无疑问是明文。可读性并不是某些明文的充要条件。在有些情况下,例如,如果对已加密的文本进一步加密的话,在读取时,原始文本很可能没有任何明显的意义。还有可能构造一种机制,它的输出是可读文本,但与未经加密的原始文本实际上没有任何关系。

密钥与密码结合使用来加密或解密文本。在把字符串用作密码的情况下,密钥看起来可能是有意义的,但是与这个转换无关 — 密钥的功能在于由位组成的字符串,决定了明文到密文的映射。

直到最近,在计算机能力发展的帮助下,非常普遍的加密方法是使用某种替代形式。这可能非常简单,就象影片 2001: A Space Odyssey 中所声称的隐藏计算机实名那样,其中将字母 HAL 在字母表中移一位就会产生一个似是而非的结果。在众多间谍小说中,把一些从单纯的文档或书籍中选取的字或短语或任意字母序列用来生成消息,构造密钥或创建替代表,以加密或解密文本。

为什么使用密码术?

出于安全性原因而保护对信息的访问仍是使用密码术的主要原因。但是,它也正越来越多地用于个人的标识、认证和不可抵赖性。随着因特网、全球贸易和其它活动的增长,这一点尤为重要。电子邮件和 Web 用户的身份非常容易隐藏或伪造,而安全认证可以向那些用户提供远程交互的可信度:他们正与恰当的人进行交易,消息没有被伪造或更改。在商业活动中,不可抵赖性是一个重要概念,它确保(假设)如果商定了合同,一方就不能声称他们实际上并不同意来违约,也不能在其它时间(可能是价格上涨或下浮时)这样做。数字签名和数字时间戳记在这种情况下使用,并且常结合其它诸如消息摘要和数字证书等机制使用。

密码术及相关技术的使用范围是相当广泛的,而且正在稳定增长。密码使用很普遍,但是它们提供的保护却常常不可靠,因为可能许多组织中的安全性策略并没有经过深思熟虑,而且使用它们所引起的问题和麻烦会更多,根本不值得这样做。在许多使用密码的情况下(例如,保护字处理文档),使用的密码根本无法胜任,只要从可免费获得的一些攻击程序中使用一个,就能毫不费力地攻击它们。

遗憾的是,对立法者也有相当大的压力,使他们制定了一些荒谬的法规,如美国的“千年虫适应性法案(Millennium Compliance Act)”,它在本质上免除了组织设法尽力保护自己或承担不作为结果的责任。保护视频录制的机制(例如,CSS)是脆弱得可怜,实用程序 DeCSS 不费吹灰之力就可 以挫败它,并使资料可用于其它平台上。

对于开发人员应该掌握些什么?

通常,安全性问题都难于理解和实现,所以对于开发人员来说,掌握一些应用于加密的原则并学习使用的机制是很有用的。编写密码算法是一项困难且复杂的任务,但是切合实际地在应用程序中实现现有机制,或利用著名的产品来帮助信息隐藏或认证就不太一样了,这可能是一个非常有用的技能。

可以采样和提取或更改数字数据而不用担心检测,这一事实是密码术使用快速增长的一个原因。特别是在跨因特网的情况中,不会发生面对面的接触,消息可能通过多个易受攻击的系统传播:网站可能保存应受保护的敏感数据;信用卡号和其它敏感的个人数据都需要安全地传输;电子邮件可以象明信片那样方便地读取;可能需要控制对受限区域的访问;价值单位(数字现金、电子债券等)不能在没有保护的情况下随意地到处摆放;内容供应商希望保护他们的电影或电视节目或音乐,以便只有订户才有访问权;需要控制对网络的远程访问;移动电话、PDA 和膝上电脑会很容易地丢失或被盗;ATM 只应对合法请求分发现金。这些都是需要并使用密码术的一些实例。

本文的目的是:概括地介绍相关背景知识,广泛地评价使用的一些技术和考虑一些含义。接下来的其它文章将就不同主题更详细地论述。

密码技术

最古老的加密方法已经用了几千年,这种方法被称为密钥或对称加密。在这种方法中,同一密钥既用于加密明文,也用于解密密文。使用的机制可能非常多样化,但它们共同的弱点 — 因为需要共享密钥,所以一旦密钥落入坏人之手将很危险。一旦未经授权的人得知了密钥,就会危及基于该密钥的安全性。如果只涉及一条消息,可能不要紧;但是,电子通信的真正本质就意味着:同一个密钥很可能被重复使用,而未必知道密钥已不再是保密的。

当然,一个密钥很可能被许多人作为一组算术方式构造的文件所共享,这样在可以使用密钥前都需要对任何元素进行一些最小组合,但是这并不改变普遍原理。

对称系统一般都比较快,现在实际上可以使它很难于破解。与任何这类事物一样,不存在绝对的保证,但是有理由说,运用目前可用的知识和使用当前级别的计算能力,一个正确构造的系统可以是彻底安全的。

不同的密码容易受到不同形式的攻击侵袭,因此,在某些情况下,某组一些特定密钥的安全性会比其它的要差。但是,密钥越长(其它所有条件相同),破解加密的难度就越大。

软件代码是一种有价值的资源,许多公司竭尽全力保护它们的源代码,完全反对“自由软件基金会(Free Software Foundation)”或开放源码运动的观点。但是,在密码情况中,将算法完全地无偿地公之于众,接受大众的详细审查是必要的。在字处理程序情况中,这可能会使人不快,但如果出现一些错误或其它问题,通常也没有太大关系。错误是一定存在的,即使没有目前那种急于推出不成熟产品的倾向。在加密软件或至少其中的密码部分的情形中,错误是非常危险的,会产生极端严重的后果。发现这样的缺陷的唯一切实可行的方法是公开内部代码,让其他人进行同级评估与分析。简单地说:不要相信,也不要使用任何其核心部分(包括加密算法)不可公开访问、而且尚未同意同级评估的加密软件。密码发展的历史显示了众多证明这一策略的实例。

1976 年撰写的论文 New Directions in Cryptography 包含了设计一个具有公/私钥对系统的协议的详细信息;随后这一算法以两位作者的姓名:Whitfield Diffie 和 Martin Hellman(他们当时在斯坦福大学)命名。Diffie-Hellman 算法现在在公共领域中广泛使用, 作为大量被称为公钥系统的基础。

公钥系统使用两个由质数构成的、互补的密钥,使得一个密钥用于加密明文,然后可以用另一个且只能用这个密钥来解密。这也称为非对称密码术。

密钥对中一个密钥秘密保管,称为私钥,而另一个是公钥,它被广为公开。这一过程独特的本质是:任何知道我的公钥的人都可以加密一条消息,然后只能由我有使用安全的私钥才能解密这条消息。相反,我可以用我的私钥加密一条消息,任何使用我自由可用的公钥解密它的人都可以确信这条消息是我发出的。实际上,情况要比这复杂得多,因为非对称密钥与对称密钥相比,通常都很长(大约 768 位相对于 56 或 128 位),所以处理文本会很慢。其中一个最广泛使用的公钥系统是 1977 年由三个 MIT 的研究人员:Ron Rivest、Adi Shamir 和 Leonard Adelman 利用 Diffie 和 Hellman 引入的概念开发的。这一系统以他们姓名的首字母 RSA 命名,并于 1983 年在美国获得专利。

遵从前面提到的警告和条件,公钥系统也可以是无懈可击的。对这种系统的攻击方法通常是尝试对数字进行因数分解,而对大质数的因数分解是极其困难的。但是,也可以采用其它方法,完全有可能发现新的数学技术,严重危及这些密码中的一个或多个,或致使密码完全无效。而且,就象密钥密码术会因在分发时单个密钥落入坏人之手而易受攻击一样,公钥密码术也容易受到称为内奸的风险的攻击。稍后将对此进行更完整地讨论,但是本质上这是愚弄用户:让用户相信公钥来自某个源的,而实际上它是来自另一个源。出于这一原因,公钥密码术通常都与其它安全性方法(如数字证书,它寻求确认公钥的完整性)相关联。显然,私钥被人知道后,系统也是易受攻击的,但因为一般不需要共享私钥,所以这一风险不会很大。

我在前面曾提到,消息认证正变得与信息隐藏一样重要了。这里需要的是一种机制,使接收方放心:消息真的是来自所声称的发送方,并且自它创建以来没有被改过。通常,通过使用散列技术生成消息摘要来提供消息的完整性。散列是一种将变长字符串转换为定长结果(一般 128 位)的技术。实际上,对消息所做的任何更改 — 即使只是象添加或除去一个空格这样细微的更改 — 都会导致在运行进程时创建一个不同的散列值。

下面这个简化的模型显示了这些不同元素如何在一起工作,以保护消息不会被随意查看,并且确信接收到的消息是我(授权发送方)发出的:

我对明文消息应用一个适当的处理,以生成一个用作消息摘要的散列值。

我用私钥加密这个摘要,而不是消息本身,向任何可以用公钥解密它的人确认消息是我发出的。

我生成一个一次性使用的密钥,用来迅速加密消息文本。

我使用接收方的公钥加密这个密钥并将整个包发送给他。

我的收件人使用他的私钥获得这个密钥,接着用该密钥解密消息,对消息应用相同的消息摘要算法,并将其与使用我的 公钥解密的消息摘要进行比较。倘若它们匹配,他就可以确定消息是我发出的,而且没有被更改过。

虽然实际应用可能要复杂些,但这基本上就是使用非常广泛的程序 — “PGP 加密软件(Pretty Good Privacy,PGP)”和其它一些应用程序的工作原理, 它们极好地以一种有效而快速的方法结合了一起工作的各种互补元素。

结束语

安全性在于管理风险,而不是排除风险。密码术是任何安全性策略的一个重要组成部分,它正越来越多地在大量情形中在幕后使用。计算机技术的发展意味着,早期曾被认为是十分安全的密码,现在可能已不再安全了,或只有适度的安全性。同时,在使用新算法或早期算法的变体时,上述的这些发展也使得在合理的期限内使用越来越长的密钥成为可能。诸如椭圆曲线(elliptic curve)或量子密码术(quantum cryptography)等一些技术都展示了相当可观的前景,但是它们对于常规使用仍可能过于深奥。

现在,为了所有实际用途,在任何合理的时间段实现完全安全的系统是极可能的。接下来的问题是如何实现一个这样的系统,以及如何理解在机器和人类术语方面的含义。还有一点:虽然绝对认证似乎是一个有吸引力的选项,但是它有相当的风险 — 如果某人的数字身份被盗,则结果会是灾难性的。政府将密码系统当作战略资源,并希望控制它们的分发和使用,尽管政府有各种关于出口和使用的宽松的法规,但仍越来越担心它们提供的内容。虽然它们可能不愿承认这一点,但如果不对公认的行为自由实施严格限制的话,则它们正在进行的是一场不可能获胜的战斗。

对于开发人员,在开发使用加密技术的应用程序和掌握各种系统的优缺点,以及在组织的约束内如何正确管理一些安全性风险等方面都有相当多的机会。

上一篇:知识:步线行针  下一篇:知识:修复神经纤维
∷排行知识文章∷ ∷推荐知识文章∷
· 龙门楼
· 阿兹台克人
· 笔记本硬盘
· 变颜变色
· 叶明
· 鲁斯兰与柳德米拉
· 国民经济学
· 麻辣鸡肫毛豆
· 成事不足败事有余
· 凉城岱海旅游区
· 马尔克
· 斑节海龙
· 无锡市胜利门中学
· 辣子牛肉
· Salvatore Ferragamo
· 七星庙
· 马希崇
·
· 苴却砚
· 西芹炒百合
· 苏州乐园度假酒店
· 北京中医医院
· 怀集县人民医院
· 时乐濛
Copyright © 2006-2008 版权所有 中华知识库
本站资源均来源于网络,如侵犯了您的版权,请来信告知,我们将立即改正!
信箱: QQ:26655353 粤ICP备05006761号

 股票 贸易 钱币 铸币 税收 营销 证券 流行 另类 涂鸦 饰品 模特 茶道 纹身 手绘 暴走 自拍 品牌