学习java安全技术前的准备
2008-01-05 18:34:45 来源:WEB开发网email:janins@163.com
安全的基础知识
在高度保证企业应用程序安全的过程中我们不免会考虑到如下的安全需求,然后我们针对这些安全需求提出各种安全技术:
1、完整性验证(IntegrityVerification)。也就是以防止我们需要的内容不被篡改。
2、机密性保持(ConfidentialityPReservation)。通俗的说就是防止内容被别人读懂。
3、认证和访问授权(AuthenticityPermission)。通俗的说就是对来访者提供的信息进行分析和判定,从而确定来访者身份,然后根据身份决定该来访者具有什么权限。
4、不可抵赖的证据(NonrepudiationEvidence)。举个很简单的例子,假如你去银行交费,银行必须该你一个交过费的凭证,不然被别人私通怎么办?题外话:假如我们的银行弄假的话,我们肯定被欺无疑^^。
5、审计证据(AuditingEvidence)。对一些安全性十分重要的数据操作进行纪录和观察,相当于银行的那个摄像头,在需要的时候他们的作用你就知道。
针对上面提到的需求列表对各个技术进行比较粗略地介绍。具体内容请从email:janins@163.com获取。
加密技术(包括防止篡改技术)
加密技术是其它安全服务技术的基础,其他安全穿插使用相当广泛。所以在学习软件安全技术之前了解各种加密技术是相当重要的。
加密技术的分类
1、消息摘要
消息摘要主要用于保持数据的完整性,我们经常听到的校验和就是消息摘要的一个特例。它的算法是一个单项函数。也就是直接将输入的数据进行消息摘要提取,但绝不能从消息摘要生成原数据。消息摘要的算法分为如下几类(最常用的是md5和SHA-1):
我们可能经常会疑问,我们有了消息摘要为什么还要认证码呢?听我给你举个例子,前面提到的消息摘要的算法可以确保消息摘要和具体的消息之间的一一对应,也就是只要你有相同的消息,采用相同的算法肯定能产生相同的消息摘要,但有时为了非凡的目的我们需要只有特定的人才能生成这个摘要,这时候我们可以通过在生成消息摘要的过程中加入相应的密钥,从而使生成的消息摘要在没有密钥的情况下难以生成。
鉴于消息摘要的一一对应,经常在一些保护用户密码的地方我们采用了这种算法。例如,在银行系统,为了不让治理数据库的员工把你的密码看到,系统本身在你的密码存入库中之前就做了消息摘要的提取,这样库中别人看到的是一串希奇的串,他也没法逆向获得你的明文密码。当然,假如银行的安全系统被控制,那什么事情都可以做。
2、对称密钥(私钥加密)
对称密钥应该是相当强壮的信息加密算法。这和我们生活中的钥匙极为相像。例如你家的门锁可以有好几把钥匙,并且这些钥匙都相同。在现实生活中,你可以将做好的钥匙手递手交给你的亲人,指要有了钥匙,你就可以打开你家的门。我们经常登陆网站用的用户名和密码的原理就是这样的。但密码等在网络传输中很轻易被窃听和截取,为了确保传输安全我们必须和后面提到的传输相关的加密算法配合进行,例如我们在登陆时使用https。下面是一些最普通的对称密钥算法:
赞助商链接