2006年5月17日星期三

四十年前的今天和四部电影

  四十年前的今天,中国历史上发生了一件改变中国历史进程的重大事件。

  1966年5月16日,政治局扩大会议召开,通过了《中国共产党中央委员会通知》(即《五一六通知》)。《五一六通知》的发布标志着文化大革命的正式开始。

  虽然这场运动是中国建国后最大的一次运动,但我对其却几乎一无所知(托我们的历史教科书之福)。在维基百科的相关条目上上,倒是可以找到很详细的事件经过和历程。

  我对这个事件的感性了解,也是从为数不多的电影中获得的,我最喜欢看的四部电影:《霸王别姬》《末代皇帝》《活着》《阳光灿烂的日子》都对那个特殊的历史时代有着或多或少的描写。

  《霸王别姬》中,段小楼在红卫兵的威胁下出卖程蝶衣和背叛菊仙那一幕,我可以体味到那种心灵的伤疼、流血和绝望。《末代皇帝》的结尾,我见识了传说中的“忠字舞”,我感觉不到群魔乱舞的荒谬可笑,我感觉到了疼,感觉到了戕害人性、暴殄天物的残酷。《活着》的主人公的亲人一个接一个地死去,最后凤霞也因为红卫兵医生的不学无术而导致产后大出血而丧命。活着是生命的唯一要求,这就是那个时代的真理。《阳光灿烂的日子》描写的是文革后期,红卫兵都被赶出城市,上山下乡了,剩下的一些小孩子们过着“阳光灿烂”的生活。

  在中国漫长动荡历史和各种各样政治事件中,能够活着并坚强地面对,是多么艰难而痛苦的事情啊。能够活下去,对于中国人来说,就是一种胜利。

霸王别姬

阳光灿烂的日子

末代皇帝

活着

2006年5月16日星期二

百度和Google谁更能搜索色情信息

  本文主要针对百度和Google搜索引擎的关键字过滤功能进行比较和分析。

  最近部分国内媒体刊登了一系列文章,包括“Google可搜大量色情链接 过滤可能损失流量”,“Google搜索不良条目量攀升 社会责任遭考验”,以大量篇幅论证Google包含色情违法信息,甚至有一种倾向,即将色情、违法信息泛滥的罪责推向了Google,似乎封杀了Google或搞定了Google关键词过滤,网络世界从此就会如同真空一样纯净。

  虽然Google推出了专门针对中国国情的“谷歌”(Google.cn),并使用了颇受争议的信息过滤技术,然而即使如此依旧无法摆脱被恶意攻击和诽谤的命运。

  该文章攻击道:“最常用的信息过滤、屏蔽技术被称为‘关键字过滤’,这项技术为广大搜索引擎企业所掌握”。并声称“这项‘信息过滤’技术不算是特别复杂的技术”。

百度谷歌

  据我所知,Google.cn(以后简称Google)和百度目前都对色情违法信息进行了过滤技术,不同的是,百度还增加了一项关键词屏蔽技术,就是对于一批敏感关键词,当服务器接收到用户提交的搜索词后,先将搜索词和上述“过滤词汇表”进行匹配对比;一旦匹配成功,服务器即返回“您输入的关键词可能涉及不符合相关法律法规的内容”,然后结束搜索。比如在百度搜索“色情”等词语后显示的效果。

  然而,从技术上讲,这种“过滤词汇表”实际上有很大缺陷和漏洞,对于稍懂一点电脑知识的人来说形同虚设,例如在百度搜索“色情”的确不让搜索,但是搜索“"色情"”(带引号的色情)即可返回18,300,000万条搜索记录,远远多于Google搜索出的记录(另外提一下,我用Google搜索“色情”返回的结果是“该页无法显示”,不知道这个记者用什么线路上网的,莫非是百度提供的专线?)。推而广之,所有百度通过“过滤词汇表”屏蔽的词汇,大部分只要加上个引号就全都可以搜索,另外,将多个屏蔽关键字组合在一起也可以搜索出结果,更可笑的是,在百度不可以搜索“色情”,但却可以搜索出“色情图片”70万条记录,“色情电影”51万条记录,“色情小说”23万条记录,“色情网站”79万条记录,可见这种屏蔽的方法实在是用来忽悠媒体的,实际作用非常有限。

  其次,对于使用具体过滤技术来看,Google和百度都通过内容的相关性过滤掉色情违法网站,Google过滤是会在页面底部显示“据当地法律法规和政策,部分搜索结果未予显示”。两者的过滤效果来看,搜索几个关键字即可感觉出来。

  百度搜索“色情图片”,第一页的大多数是论坛上的文章,并有4、5条包含色情信息,而在Google搜索“色情图片”,则第一页没有一篇是色情信息。搜索其他的信息进行对比也可以发现Google的确在信息过滤上做了不少工作,而百度则过滤的信息远不如Google,更进一步,用百度和Google搜索英文,我们发现百度对于英文网站的过滤效果更差,用百度搜索“hardcore”,结果出现了170万条数据,可以打开查看到非常多的色情网站,而在Google中搜索“hardcore ”只能搜索到288条结果,这个夸张的对比可以看出两者在过滤功能上所做的工作实在差距太大,所以,如果百度在这方面对Google进行指责攻击,那实在是颠倒黑白,指鹿为马。

  当然,这也反映出一个问题,就是Google和百度不同,Google根本不了解中国的国情,中国的国情就是人治,说明白点就是某些人凭自己的主观意志决定一切,你其实什么都不用做,但你其实什么都做了, 以前有个对联是“说你行,你就行,不行也行;说不行,就不行,行也不行”, 横批是“不服不行”。要深刻理解这种国情,必须知道这里谁说了算,谁能决定你企业的命运呢?当然是有权的人,只有他们才是主人,要想成功就需要积极向他们靠拢,争取进入他们的利益集团,形成共同利益,这才是在中国立于不败之地的方法。在中国做成功的企业要完全放弃自己的道德、良心和价值观,百度是“只说不做”,而Google是“只做不说”,Google还天真的以为配合中国进行信息过滤就可以顺利进入中国市场,其实百度在过滤上做的工作可能还不如Google的十分之一,但是百度却能让别人以为百度比Google做的多十倍。

  当然,Google是个很值得敬佩的企业,在企业的价值观、道德观方面,Google坚持“你可以挣钱而不必做坏事”,在公司内部,每个人都努力成为“极具创新精神、值得信赖、行事正直,而且极大地改变了这个世界的人”。Google无论在管理领域还是在服务领域都顺应个人化、大众化、社会化的趋势,坚持“做正确的事情”。可能正是因为这一点,才使得目前Google在和百度的竞争中处于劣势。

2006年5月14日星期日

加密技术在企业数据安全中的应用

  随着大型企业管理软件的发展,其应用越来越广泛,企业数据平台涉及局域网、广域网、Internet等,在各类系统中保存的企业关键数据量也越来越大,许多数据需要保存数十年以上,甚至是永久性保存。于是关键业务数据成了企业生存的命脉和宝贵的资源,数据安全性问题越来越突出。如何增强企业软件系统的安全性、保密性、真实性、完整性,成为每一位软件开发人员关注的焦点。

  为了解决关键业务的数据安全问题,首先对数据系统进行全面、可靠、安全和多层次的备份是必不可少的,除此以外,各种安全产品,无论防火墙、防病毒、防黑客、防入侵等等,都或多或少地肩负着一些保护数据的责任。从保护数据的角度讲,对数据安全这个广义概念,可以细分为三部分:数据加密、数据传输安全和身份认证管理。

  l 数据加密就是按照确定的密码算法将敏感的明文数据变换成难以识别的密文数据,通过使用不同的密钥,可用同一加密算法将同一明文加密成不同的密文。当需要时,可使用密钥将密文数据还原成明文数据,称为解密。这样就可以实现数据的保密性。数据加密被公认为是保护数据传输安全惟一实用的方法和保护存储数据安全的有效方法,它是数据保护在技术上最重要的防线。

  l 数据传输安全是指数据在传输过程中必须要确保数据的安全性,完整性和不可篡改性。

  l 身份认证的目的是确定系统和网络的访问者是否是合法用户。主要采用登录密码、代表用户身份的物品(如智能卡、IC卡等)或反映用户生理特征的标识鉴别访问者的身份。

  数据加密

  数据加密技术是最基本的安全技术,被誉为信息安全的核心,最初主要用于保证数据在存储和传输过程中的保密性。它通过变换和置换等各种方法将被保护信息置换成密文,然后再进行信息的存储或传输,即使加密信息在存储或者传输过程为非授权人员所获得,也可以保证这些信息不为其认知,从而达到保护信息的目的。该方法的保密性直接取决于所采用的密码算法和密钥长度。

  根据密钥类型不同可以将现代密码技术分为两类:对称加密算法(私钥密码体系)和非对称加密算法(公钥密码体系)。在对称加密算法中,数据加密和解密采用的都是同一个密钥,因而其安全性依赖于所持有密钥的安全性。对称加密算法的主要优点是加密和解密速度快,加密强度高,且算法公开,但其最大的缺点是实现密钥的秘密分发困难,在大量用户的情况下密钥管理复杂,而且无法完成身份认证等功能,不便于应用在网络开放的环境中。目前最著名的对称加密算法有数据加密标准DES和欧洲数据加密标准IDEA等,目前加密强度最高的对称加密算法是高级加密标准AES。

  对称加密算法、非对称加密算法和不可逆加密算法可以分别应用于数据加密、身份认证和数据安全传输。

  l 对称加密算法

  对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。不足之处是,交易双方都使用同样钥匙,安全性得不到保证。此外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量成几何级数增长,密钥管理成为用户的负担。对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。在计算机专网系统中广泛使用的对称加密算法有DES、IDEA和AES。

  传统的DES由于只有56位的密钥,因此已经不适应当今分布式开放网络对数据加密安全性的要求。1997年RSA数据安全公司发起了一项“DES挑战赛”的活动,志愿者四次分别用四个月、41天、56个小时和22个小时破解了其用56位密钥DES算法加密的密文。即DES加密算法在计算机速度提升后的今天被认为是不安全的。

  AES是美国联邦政府采用的商业及政府数据加密标准,预计将在未来几十年里代替DES在各个领域中得到广泛应用。AES提供128位密钥,因此,128位AES的加密强度是56位DES加密强度的1021倍还多。假设可以制造一部可以在1秒内破解DES密码的机器,那么使用这台机器破解一个128位AES密码需要大约149亿万年的时间。(更深一步比较而言,宇宙一般被认为存在了还不到200亿年)因此可以预计,美国国家标准局倡导的AES即将作为新标准取代DES。

  l 不对称加密算法

  不对称加密算法使用两把完全不同但又是完全匹配的一对钥匙—公钥和私钥。在使用不对称加密算法加密文件时,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。加密明文时采用公钥加密,解密密文时使用私钥才能完成,而且发信方(加密者)知道收信方的公钥,只有收信方(解密者)才是唯一知道自己私钥的人。不对称加密算法的基本原理是,如果发信方想发送只有收信方才能解读的加密信息,发信方必须首先知道收信方的公钥,然后利用收信方的公钥来加密原文;收信方收到加密密文后,使用自己的私钥才能解密密文。显然,采用不对称加密算法,收发信双方在通信之前,收信方必须将自己早已随机生成的公钥送给发信方,而自己保留私钥。由于不对称算法拥有两个密钥,因而特别适用于分布式系统中的数据加密。广泛应用的不对称加密算法有RSA算法和美国国家标准局提出的DSA。以不对称加密算法为基础的加密技术应用非常广泛。

  l 不可逆加密算法

  不可逆加密算法的特征是加密过程中不需要使用密钥,输入明文后由系统直接经过加密算法处理成密文,这种加密后的数据是无法被解密的,只有重新输入明文,并再次经过同样不可逆的加密算法处理,得到相同的加密密文并被系统重新识别后,才能真正解密。显然,在这类加密过程中,加密是自己,解密还得是自己,而所谓解密,实际上就是重新加一次密,所应用的“密码”也就是输入的明文。不可逆加密算法不存在密钥保管和分发问题,非常适合在分布式网络系统上使用,但因加密计算复杂,工作量相当繁重,通常只在数据量有限的情形下使用,如广泛应用在计算机系统中的口令加密,利用的就是不可逆加密算法。近年来,随着计算机系统性能的不断提高,不可逆加密的应用领域正在逐渐增大。在计算机网络中应用较多不可逆加密算法的有RSA公司发明的MD5算法和由美国国家标准局建议的不可逆加密标准SHS(Secure Hash Standard:安全杂乱信息标准)等。

  传输安全

  数据传输加密技术目的是对传输中的数据流加密,以防止通信线路上的窃听、泄漏、篡改和破坏。数据传输的完整性通常通过数字签名的方式来实现,即数据的发送方在发送数据的同时利用单向的不可逆加密算法Hash函数或者其它信息文摘算法计算出所传输数据的消息文摘,并将该消息文摘作为数字签名随数据一同发送。接收方在收到数据的同时也收到该数据的数字签名,接收方使用相同的算法计算出接收到的数据的数字签名,并将该数字签名和接收到的数字签名进行比较,若二者相同,则说明数据在传输过程中未被修改,数据完整性得到了保证。

  Hash算法也称为消息摘要或单向转换,是一种不可逆加密算法,称它为单向转换是因为:

  1)双方必须在通信的两个端头处各自执行Hash函数计算;

  2)使用Hash函数很容易从消息计算出消息摘要,但其逆向反演过程以目前计算机的运算能力几乎不可实现。

  Hash散列本身就是所谓加密检查,通信双方必须各自执行函数计算来验证消息。举例来说,发送方首先使用Hash算法计算消息检查和,然后将计算结果A封装进数据包中一起发送;接收方再对所接收的消息执行Hash算法计算得出结果B,并将B与A进行比较。如果消息在传输中遭篡改致使B与A不一致,接收方丢弃该数据包。

  有两种最常用的Hash函数:

  ·MD5(消息摘要5):MD5对MD4做了改进,计算速度比MD4稍慢,但安全性能得到了进一步改善。MD5在计算中使用了64个32位常数,最终生成一个128位的完整性检查和。

  ·SHA 安全Hash算法:其算法以MD5为原型。 SHA在计算中使用了79个32位常数,最终产生一个160位完整性检查和。SHA检查和长度比MD5更长,因此安全性也更高。

  身份认证

  身份认证要求参与安全通信的双方在进行安全通信前,必须互相鉴别对方的身份。保护数据不仅仅是要让数据正确、长久地存在,更重要的是,要让不该看到数据的人看不到。这方面,就必须依靠身份认证技术来给数据加上一把锁。数据存在的价值就是需要被合理访问,所以,建立信息安全体系的目的应该是保证系统中的数据只能被有权限的人访问,未经授权的人则无法访问到数据。如果没有有效的身份认证手段,访问者的身份就很容易被伪造,使得未经授权的人仿冒有权限人的身份,这样,任何安全防范体系就都形同虚设,所有安全投入就被无情地浪费了。

  在企业管理系统中,身份认证技术要能够密切结合企业的业务流程,阻止对重要资源的非法访问。身份认证技术可以用于解决访问者的物理身份和数字身份的一致性问题,给其他安全技术提供权限管理的依据。所以说,身份认证是整个信息安全体系的基础。

  由于网上的通信双方互不见面,必须在交易时(交换敏感信息时)确认对方的真实身份; 身份认证指的是用户身份的确认技术,它是网络安全的第一道防线,也是最重要的一道防线。

  在公共网络上的认证,从安全角度分有两类:一类是请求认证者的秘密信息(例如:口令)在网上传送的口令认证方式,另一类是使用不对称加密算法,而不需要在网上传送秘密信息的认证方式,这类认证方式中包括数字签名认证方式。

  l 口令认证方式

  口令认证必须具备一个前提:请求认证者必须具有一个 ID,该ID必须在认证者的用户数据库(该数据库必须包括ID和口令)中是唯一的。同时为了保证认证的有效性必须考虑到以下问题:

  · 求认证者的口令必须是安全的。

  · 在传输过程中,口令不能被窃看,替换。

  ·请求认证者在向认证者请求认证前,必须确认认证者的真实身份。否则会把口令发给冒充的认证者。

  口令认证方式还有一个最大的安全问题就是系统的管理员通常都能得到所有用户的口令。因此,为了避免这样的安全隐患,通常情况下会在数据库中保存口令的Hash值,通过验证Hash值的方法来认证身份。

  l 使用不对称加密算法的认证方式 (数字证书方式)

  使用不对称加密算法的认证方式,认证双方的个人秘密信息(例如:口令)不用在网络上传送,减少了认证的风险。这种方式是通过请求认证者与认证者之间对一个随机数作数字签名与验证数字签名来实现的。

  认证一旦通过,双方即建立安全通道进行通信,在每一次的请求和响应中进行,即接受信息的一方先从接收到的信息中验证发信人的身份信息,验证通过后才根据发来的信息进行相应的处理。

  用于实现数字签名和验证数字签名的密钥对必须与进行认证的一方唯一对应 。

  在公钥密码(不对称加密算法)体系中,数据加密和解密采用不同的密钥,而且用加密密钥加密的数据只有采用相应的解密密钥才能解密,更重要的是从加密密码来求解解密密钥在十分困难。在实际应用中,用户通常将密钥对中的加密密钥公开(称为公钥),而秘密持有解密密钥(称为私钥)。利用公钥体系可以方便地实现对用户的身份认证,也即用户在信息传输前首先用所持有的私钥对传输的信息进行加密,信息接收者在收到这些信息之后利用该用户向外公布的公钥进行解密,如果能够解开,说明信息确实为该用户所发送,这样就方便地实现了对信息发送方身份的鉴别和认证。在实际应用中通常将公钥密码体系和数字签名算法结合使用,在保证数据传输完整性的同时完成对用户的身份认证。

  目前的不对称加密算法都是基于一些复杂的数学难题,例如目前广泛使用的RSA算法就是基于大整数因子分解这一著名的数学难题。目前常用的非对称加密算法包括整数因子分解(以RSA为代表)、椭园曲线离散对数和离散对数(以DSA为代表)。公钥密码体系的优点是能适应网络的开放性要求,密钥管理简单,并且可方便地实现数字签名和身份认证等功能,是目前电子商务等技术的核心基础。其缺点是算法复杂,加密数据的速度和效率较低。因此在实际应用中,通常将对称加密算法和非对称加密算法结合使用,利用AES、DES或者IDEA等对称加密算法来进行大容量数据的加密,而采用RSA等非对称加密算法来传递对称加密算法所使用的密钥,通过这种方法可以有效地提高加密的效率并能简化对密钥的管理。

  结束语:数据安全问题涉及到企业的很多重大利益,发展数据安全技术是目前面临的迫切要求,除了上述内容以外,数据安全还涉及到其他很多方面的技术与知识,例如:黒客技术、防火墙技术、入侵检测技术、病毒防护技术、信息隐藏技术等。一个完善的数据安全保障系统,应该根据具体需求对上述安全技术进行取舍。

2006年5月13日星期六

密码学基础

  本文简要地介绍了现代密码学的一些基础理论,供参考。

  1 加密技术概述

  一个密码系统的安全性只在于密钥的保密性,而不在算法的保密性。

  对纯数据的加密的确是这样。对于你不愿意让他看到这些数据(数据的明文)的人,用可靠的加密算法,只要破解者不知道被加密数据的密码,他就不可解读这些数据。

  但是,软件的加密不同于数据的加密,它只能是“隐藏”。不管你愿意不愿意让他(合法用户,或 Cracker)看见这些数据(软件的明文),软件最终总要在机器上运行,对机器,它就必须是明文。既然机器可以“看见”这些明文,那么 Cracker,通过一些技术,也可以看到这些明文。

  于是,从理论上,任何软件加密技术都可以破解。只是破解的难度不同而已。有的要让最高明的 Cracker 忙上几个月,有的可能不费吹灰之力,就被破解了。

  所以,反盗版的任务(技术上的反盗版,而非行政上的反盗版)就是增加 Cracker 的破解难度。让他们花费在破解软件上的成本,比他破解这个软件的获利还要高。这样 Cracker 的破解变得毫无意义——谁会花比正版软件更多的钱去买盗版软件 ?

  2 密码学简介

  2.1 概念

  (1) 发送者和接收者

  假设发送者想发送消息给接收者,且想安全地发送信息:她想确信偷听者不能阅读发送的消息。

  (2) 消息和加密

  消息被称为明文。用某种方法伪装消息以隐藏它的内容的过程称为加密,加了密的消息称为密文,而把密文转变为明文的过程称为解密。

  明文用M(消息)或P(明文)表示,它可能是比特流(文本文件、位图、数字化的语音流或数字化的视频图像)。至于涉及到计算机,P是简单的二进制数据。明文可被传送或存储,无论在哪种情况,M指待加密的消息。

  密文用C表示,它也是二进制数据,有时和M一样大,有时稍大(通过压缩和加密的结合,C有可能比P小些。然而,单单加密通常达不到这一点)。加密函数E作用于M得到密文C,用数学表示为:

  E(M)=C.

  相反地,解密函数D作用于C产生M

  D(C)=M.

  先加密后再解密消息,原始的明文将恢复出来,下面的等式必须成立:

  D(E(M))=M

  (3) 鉴别、完整性和抗抵赖

  除了提供机密性外,密码学通常有其它的作用:.

  (a) 鉴别

  消息的接收者应该能够确认消息的来源;入侵者不可能伪装成他人。

  (b) 完整性检验

  消息的接收者应该能够验证在传送过程中消息没有被修改;入侵者不可能用假消息代替合法消息。

  (c) 抗抵赖

  发送者事后不可能虚假地否认他发送的消息。

  (4) 算法和密钥

  密码算法也叫密码,是用于加密和解密的数学函数。(通常情况下,有两个相关的函数:一个用作加密,另一个用作解密)

  如果算法的保密性是基于保持算法的秘密,这种算法称为受限制的算法。受限制的算法具有历史意义,但按现在的标准,它们的保密性已远远不够。大的或经常变换的用户组织不能使用它们,因为每有一个用户离开这个组织,其它的用户就必须改换另外不同的算法。如果有人无意暴露了这个秘密,所有人都必须改变他们的算法。

  更糟的是,受限制的密码算法不可能进行质量控制或标准化。每个用户组织必须有他们自己的唯一算法。这样的组织不可能采用流行的硬件或软件产品。但窃听者却可以买到这些流行产品并学习算法,于是用户不得不自己编写算法并予以实现,如果这个组织中没有好的密码学家,那么他们就无法知道他们是否拥有安全的算法。

  尽管有这些主要缺陷,受限制的算法对低密级的应用来说还是很流行的,用户或者没有认识到或者不在乎他们系统中内在的问题。

  现代密码学用密钥解决了这个问题,密钥用K表示。K可以是很多数值里的任意值。密钥K的可能值的范围叫做密钥空间。加密和解密运算都使用这个密钥(即运算都依赖于密钥,并用K作为下标表示),这样,加/解密函数现在变成:

  EK(M)=C

  DK(C)=M.

  这些函数具有下面的特性:

  DK(EK(M))=M.

  有些算法使用不同的加密密钥和解密密钥,也就是说加密密钥K1与相应的解密密钥K2不同,在这种情况下:

  EK1(M)=C

  DK2(C)=M

  DK2 (EK1(M))=M

  所有这些算法的安全性都基于密钥的安全性;而不是基于算法的细节的安全性。这就意味着算法可以公开,也可以被分析,可以大量生产使用算法的产品,即使偷听者知道你的算法也没有关系;如果他不知道你使用的具体密钥,他就不可能阅读你的消息。

  密码系统由算法、以及所有可能的明文、密文和密钥组成的。

  基于密钥的算法通常有两类:对称算法和公开密钥算法。下面将分别介绍:

  2.2 对称密码算法

  对称算法有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。在大多数对称算法中,加/解密密钥是相同的。这些算法也叫秘密密钥算法或单密钥算法,它要求发送者和接收者在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加/解密。只要通信需要保密,密钥就必须保密。

  对称算法的加密和解密表示为:

  EK(M)=C

  DK(C)=M

  对称算法可分为两类。一次只对明文中的单个比特(有时对字节)运算的算法称为序列算法或序列密码。另一类算法是对明文的一组比特亚行运算,这些比特组称为分组,相应的算法称为分组算法或分组密码。现代计算机密码算法的典型分组长度为64比特——这个长度大到足以防止分析破译,但又小到足以方便使用(在计算机出现前,算法普遍地每次只对明文的一个字符运算,可认为是序列密码对字符序列的运算)。

  2.3 公开密码算法

  公开密钥算法(也叫非对称算法)是这样设计的:用作加密的密钥不同于用作解密的密钥,而且解密密钥不能根据加密密钥计算出来(至少在合理假定的长时间内)。之所以叫做公开密钥算法,是因为加密密钥能够公开,即陌生者能用加密密钥加密信息,但只有用相应的解密密钥才能解密信息。在这些系统中,加密密钥叫做公开密钥(简称公钥),解密密钥叫做私人密钥(简称私钥)。私人密钥有时也叫秘密密钥。为了避免与对称算法混淆,此处不用秘密密钥这个名字。

  用公开密钥K加密表示为

  EK(M)=C.

  虽然公开密钥和私人密钥是不同的,但用相应的私人密钥解密可表示为:

  DK(C)=M

  有时消息用私人密钥加密而用公开密钥解密,这用于数字签名(后面将详细介绍),尽管可能产生混淆,但这些运算可分别表示为:

  EK(M)=C

  DK(C)=M

  当前的公开密码算法的速度,比起对称密码算法,要慢的多,这使得公开密码算法在大数据量的加密中应用有限。

  2.4 单向散列函数

  单向散列函数 H(M) 作用于一个任意长度的消息 M,它返回一个固定长度的散列值 h,其中 h 的长度为 m 。

  输入为任意长度且输出为固定长度的函数有很多种,但单向散列函数还有使其单向的其它特性:

  (1) 给定 M ,很容易计算 h ;

  (2) 给定 h ,根据 H(M) = h 计算 M 很难 ;

  (3) 给定 M ,要找到另一个消息 M‘ 并满足 H(M) = H(M’) 很难。

  在许多应用中,仅有单向性是不够的,还需要称之为“抗碰撞”的条件:

  要找出两个随机的消息 M 和 M‘,使 H(M) = H(M’) 满足很难。

  由于散列函数的这些特性,由于公开密码算法的计算速度往往很慢,所以,在一些密码协议中,它可以作为一个消息 M 的摘要,代替原始消息 M,让发送者为 H(M) 签名而不是对 M 签名 。

  如 SHA 散列算法用于数字签名协议 DSA中。

  2.5 数字签名

  提到数字签名就离不开公开密码系统和散列技术。

  有几种公钥算法能用作数字签名。在一些算法中,例如RSA,公钥或者私钥都可用作加密。用你的私钥加密文件,你就拥有安全的数字签名。在其它情况下,如DSA,算法便区分开来了??数字签名算法不能用于加密。这种思想首先由Diffie和Hellman提出 。

  基本协议是简单的 :

  (1) A 用她的私钥对文件加密,从而对文件签名。

  (2) A 将签名的文件传给B。

  (3) B用A的公钥解密文件,从而验证签名。

  这个协议中,只需要证明A的公钥的确是她的。如果B不能完成第(3)步,那么他知道签名是无效的。

  这个协议也满足以下特征:

  (1) 签名是可信的。当B用A的公钥验证信息时,他知道是由A签名的。

  (2) 签名是不可伪造的。只有A知道她的私钥。

  (3) 签名是不可重用的。签名是文件的函数,并且不可能转换成另外的文件。

  (4) 被签名的文件是不可改变的。如果文件有任何改变,文件就不可能用A的公钥验证。

  (5) 签名是不可抵赖的。B不用A的帮助就能验证A的签名。

  在实际应用中,因为公共密码算法的速度太慢,签名者往往是对消息的散列签名而不是对消息本身签名。这样做并不会降低签名的可信性。

  注:本文由计算机专业相关教材整理

2006年5月12日星期五

赠送Gmail、Orkut的邀请

  本站赠送Google Gmail和Google Orkut的邀请。

  Google Gmail是Google的免费网络邮件服务。它随付内置的Google搜索技术并提供2,700兆字节以上的存储空间(仍在不断增加)。可以永久保留重要的邮件、文件和图片,使用搜索快速、轻松地查找任何需要的内容,让这种作为对话的一部分查看邮件的全新方式更加顺理成章。Gmail支持自动转发,通过SMTP和POP3访问,是目前首选的电子邮件服务。

  Google Orkut是目前流行的社会软件,它的理论基础,是美国著名社会心理学家米尔格伦(Stanley Milgram)于20世纪60年代最先提出的“六度分隔法”。通过这一服务,用户可以在互联网上建立一个虚拟社会关系网。拥有Orkut帐户,必须首先成为Gmail帐户。收到邀请信的用户,可以通过信中地址激活自己的Orkut帐户。

  更新:最新消息,现在,大家不必设置代理服务器了,Gmail已经在2007年2月14日情人节全球同步开放注册。大家直接访问mail.google.com即可直接注册Gmail。

  更新:需要Orkut帐号的,请使用GMail信箱发送邮件到williamlone$gmail.com信箱,邮件标题是“需要Orkut邀请”(请将邮件地址上的$替换为@),请注意必须使用GMail信箱,因为其他信箱是无法获得邀请的。

  长期发送,送完为止。

2006年5月11日星期四

再谈百度和Google的问题

  先前发的一篇批评百度的文章,引起了很大的争论,不过这是一件好事,真理往往越辩论越清晰,我自己也可以通过这些辩论来发现文章论点的不足和缺陷。

  首先,KESO发现了百度的创始人的确于1997年在美国申请过一项专利-超文本文档检索系统和方法(Hypertext document retrieval system and method),而后一年Google申请了PageRank专利,不过,这两项专利基本上是不太相关的,因此对于搜索引擎底层的PageRank技术,应该就没有谁抄袭谁的说法。

  其次,百度的支持者(或员工)透露百度股权“提供双重级别的普通股”,提供反恶意收购计划,即使绝大部分股权均被美资收购(目前美资在百度中占有51%以上的份额),但只要李彦宏等创始人大股东所持的股份在11.3%以上,即可获得对公司的绝对控制权。

  但是,对于另外几项指控(竞价排名、流氓软件、侵犯版权、技术落后),则大多数百度支持者采取了回避的态度。

  昨天我发现新浪科技的李明顺也加入了讨论,当然观点是支持百度的,并间接回应了上述指控,大概意思是说胜者为王败者为寇,中国和西方有着巨大的差异,即使百度有这样那样的错误和缺点,我们也应该支持百度。

  这样的观点其实也不新鲜,并且可以理解,百度的流量为中文网站之首,无论大站还是小站都不敢得罪百度,因为大多数中文网站的流量主要还是来自百度,批评百度往往需要巨大的勇气,即使象新浪这样的网站也会惧其三分。

  然而,我们这样迁就百度,是在帮助百度,还是在坑害百度呢?

  的确,百度在中国的商业运作目前来看是很成功的,但是我不认同百度获取商业成功的手段,我在另一篇文章中描述了百度的技术缺陷和百度的庞大流量导致垃圾网站的泛滥,以及由此而引出的疑问:一个技术有重大缺陷的搜索引擎为什么会取得这样的好成绩?这样的成绩是否有可持续发展性?以及为了达到的这个目的所用的手段的道德和法律上的问题。

  我们批评百度技术落后,百度的支持者肯定会不服气,但我们更希望百度能反省自己和Google的差距,这种差距不仅仅是技术上的,更包括道德和商业策略上的。为什么Google敢于将自己很多产品接口公开提供编程API,甚至我们这些开发人员可以将自己写的应用嵌入到Google工具条或Google桌面等产品中使用,做为鲜明的对比百度将自己的搜霸工具条做成了典型的流氓软件,这简直是将中国的程序员往Google阵营里赶。百度的商业策略对于普通网民来说是成功的,但对于自身的发展却极为不利。

  我虽然批评百度的技术,但我还要说的事实是,百度的开发和技术能力目前是所有中国网络公司中最高的,百度有能力做的更好,关键在于百度做不做,怎么做。

  我们也发现百度在改变,或许也已经发现以前的种种问题带来的严重后果,对于竞价广告和流氓软件等做了一些调整。但是令人遗憾的是,百度在侵犯知识产权的方面并没有什么太大的改善,反而是更加恶化了。

  也许百度和很多中国的网络公司对于“知识产权”这东西很不感冒,当今中国的网络界谁不抄袭啊,无非就是个大抄还是小抄的问题,百度相比于某些公司来说抄袭剽窃的还不算多。如果百度的支持者都是这种态度的话,那他们实际是在坑害百度。百度如果不严格要求自己符合国际规范准则,百度就难有更大的突破,知识产权这样的问题,百度如果现在不重视,将来就会遇到触及国际法律的情况。处理不好这些法律问题,对于一个企业甚至行业来说,都可能是致命的。当然,如果百度真的愿意只在中国做一辈子地头蛇的话,那也可以对这些问题毫不在乎。

  可是我们必须面对的事实是,中国的网络广告市场是非常小的,某些市场已经饱和,随着中文Google的进入,中国的市场竞争会越来越激烈,百度要想取得更大的突破,仅仅依靠中国市场是远远不够的,最有效的办法就是国际化。

  百度2005年营业收入为3960万美元,Google的2005年营业收入为61.39亿美元,可见国际市场和国内市场的巨大差距。如果百度在美国取得和中国相同的搜索流量,那么我相信百度的收入至少会翻十倍。

  中国的本土企业也不乏国际化成功的典型案例,华为在拓展国际市场就取得了不错的成绩,成为可以与朗讯、北电、思科等世界级企业同台竞逐并可以显出胜数的电信设备商。但是在华为进入美国市场时,Cisco就以知识产权作为武器对华为提起诉讼,控告华为侵权,并要求美国地方法院下令禁售华为产品,最终华为不得不将部分产品撤出美国市场。

  因此,如果百度真的想要进军国际市场,做一个大的跨国公司,那么就应该更高的严格要求自己,解决自己产品中侵犯知识产权的问题。债总是要还的,现在不解决这些问题,将来会遇到更大更难解决的问题。现在虽然中国的IT行业发展很不规范,但如果能放下眼前的蝇头小利,放眼全球,进行战略性的调整,那么相信百度还是有可能成为受人尊敬的公司的。
 

2006年5月9日星期二

蠕虫病毒的防治

  家里的电脑中了一个很奇怪的病毒。

  回家使用电脑的时候,发现Symantec AntiVirus杀毒软件启动有异常,当时也没有在意,但是用着用着,发现系统越来越慢,很多网站都无法打开,打开任务管理器,发现有一个filereg.exe的奇怪进程占用很多资源,且无法关闭。

  这是我怀疑中了病毒,我试图打开注册表编辑器regedit,但是regedit却被自动关闭,我意识到病毒程序在阻止我编辑注册表,并且我发现Symantec AntiVirus并没有象正常情况下运行,这时我觉得需要重新启动机器了。

  重启的时候我选择安全模式进入,防止病毒在启动时候加载,打开regedit,果然发现病毒修改了注册表,在HKEY_LOCAL_MACHINE>SOFTWARE>Microsoft>Windows>CurrentVersion>Run、HKEY_LOCAL_MACHINE>SOFTWARE>Microsoft>Windows>CurrentVersion>RunServices 、HKEY_CURRENT_USER>Software>Microsoft>Windows>CurrentVersion>Run 和HKEY_CURRENT_USER>Software>Microsoft>Windows>CurrentVersion>RunServices四处增加了ActiveX File Registration Service = “filereg.exe” 内容,我将这四处信息都删除了,然后打开WINNTsystem32目录,发现里面有个filereg.exe的文件,删除掉。然后按正常方式重新启动。

  重新启动后我发现Symantec AntiVirus有可以正常运行了,但是杀毒程序报告我说需要删除HOSTS文件的内容,我打开WINNTsystem32driversetcHOSTS文件,竟然惊奇的发现,病毒居然通过修改HOSTS文件屏蔽了symantec,mcafee,trendmicro,microsoft等网站,以防止杀毒软件和系统更新,真厉害啊,于是将HOSTS文件中增加的信息全部删除。

  上网查询知道,这个病毒名字是WORM_RBOT.EOB,趋势杀毒网站里面也介绍了手动删除病毒的方法,和我使用的方法一样,通过以上方法即可手动删除病毒。

  这个蠕虫病毒具有反杀毒软件的一些特性,感觉其危险程度较高。