学习java安全技术前的准备

1/5/2008来源:Java教程人气:4478

email:janins@163.com

安全的基础知识

在高度保证企业应用程序安全的过程中我们不免会考虑到如下的安全需求,然后我们针对这些安全需求提出各种安全技术:

1、完整性验证(IntegrityVerification)。也就是以防止我们需要的内容不被篡改。

2、机密性保持(ConfidentialityPReservation)。通俗的说就是防止内容被别人读懂。

3、认证和访问授权(AuthenticityPermission)。通俗的说就是对来访者提供的信息进行分析和判定,从而确定来访者身份,然后根据身份决定该来访者具有什么权限。

4、不可抵赖的证据(NonrepudiationEvidence)。举个很简单的例子,假如你去银行交费,银行必须该你一个交过费的凭证,不然被别人私通怎么办?题外话:假如我们的银行弄假的话,我们肯定被欺无疑^^。

5、审计证据(AuditingEvidence)。对一些安全性十分重要的数据操作进行纪录和观察,相当于银行的那个摄像头,在需要的时候他们的作用你就知道。

针对上面提到的需求列表对各个技术进行比较粗略地介绍。具体内容请从email:janins@163.com获取。

加密技术(包括防止篡改技术)

加密技术是其它安全服务技术的基础,其他安全穿插使用相当广泛。所以在学习软件安全技术之前了解各种加密技术是相当重要的。

加密技术的分类

1、消息摘要

消息摘要主要用于保持数据的完整性,我们经常听到的校验和就是消息摘要的一个特例。它的算法是一个单项函数。也就是直接将输入的数据进行消息摘要提取,但绝不能从消息摘要生成原数据。消息摘要的算法分为如下几类(最常用的是md5和SHA-1):

  • MD2:是一个速度很慢但相当安全的算法,它产生128位的摘要值。

  • MD4:速度很快,但安全性下降。同样产生128位的摘要值。

  • MD5:是MD4的一个更安全的版本,同时速度更快。也产生128位的摘要值。

  • SHA:安全哈希算法,产生一个160位的摘要值。

  • SHA-1:在克服SHA的一些缺陷基础上形成的哈希算法。

  • SHA-256、SHA-383和SHA-512提供更长的指纹,大小分别是256位、383位和512位。

  • MAC:消息认证码,使用秘密密钥和消息摘要算法来创建消息摘要。

    我们可能经常会疑问,我们有了消息摘要为什么还要认证码呢?听我给你举个例子,前面提到的消息摘要的算法可以确保消息摘要和具体的消息之间的一一对应,也就是只要你有相同的消息,采用相同的算法肯定能产生相同的消息摘要,但有时为了非凡的目的我们需要只有特定的人才能生成这个摘要,这时候我们可以通过在生成消息摘要的过程中加入相应的密钥,从而使生成的消息摘要在没有密钥的情况下难以生成。

    鉴于消息摘要的一一对应,经常在一些保护用户密码的地方我们采用了这种算法。例如,在银行系统,为了不让治理数据库的员工把你的密码看到,系统本身在你的密码存入库中之前就做了消息摘要的提取,这样库中别人看到的是一串希奇的串,他也没法逆向获得你的明文密码。当然,假如银行的安全系统被控制,那什么事情都可以做。

    2、对称密钥(私钥加密)

    对称密钥应该是相当强壮的信息加密算法。这和我们生活中的钥匙极为相像。例如你家的门锁可以有好几把钥匙,并且这些钥匙都相同。在现实生活中,你可以将做好的钥匙手递手交给你的亲人,指要有了钥匙,你就可以打开你家的门。我们经常登陆网站用的用户名和密码的原理就是这样的。但密码等在网络传输中很轻易被窃听和截取,为了确保传输安全我们必须和后面提到的传输相关的加密算法配合进行,例如我们在登陆时使用https。下面是一些最普通的对称密钥算法:

  • DES:DES(数据加密标准)是由IBM于上世纪70年代发明的,美国政府将其采纳为标准,使用56位的密钥。

  • 3-DES(TripleDES):该算法被用来解决使用DES技术的56位时密钥日益减弱的强度,其方法是:使用两个密钥对明文运行DES算法三次,从而得到112位有效密钥强度。TripleDES有时称为DESede(表示加密、解密和加密这三个阶段)。

  • RC2和RC4:可以使用2048位的密钥并且提供了一个十分安全的算法。他们都来自于领先的加密安全性公司RSASecurity。