网络信息安全课程论文题目:浅析Java网络安全加密技术学生姓名:阮先清学号:3111101138院系:闽江学院专业:计算机网络工程浅析java的网络安全加密技术摘要班级:11网络工程学号:3111101138姓名:阮先清随着信息化的快速发展,网络在人们生活中起到越来越重要的作用,网络安全成为保证人们正常生活的重要问题。本文从电子商务应溺中的安全问题出发,详细阐述了网络安全加密技术中的消息摘要,公钥钥密码体制和数字签名技术的定义、原理、实现过程,同时探讨了这三项加密技术基于Java技术的实现方式关键字:消息摘要;公私钥对;数字签名随着计算机网络技术的迅猛发展和网络系统的深入应用,信息网络的社会化和国际化使人类社会的生活方式发生丁重大变化,网络已经成为今天的各项社会生活赖以存在的基础设施,电子商务成为随之而形成的商务活动的新模式。但是,网络社会越发达,它遭受攻击的危险性也越大。如果想保证商务活动安全稳定的进行,保证网络安全是最关键的问题。网络安全不仅从一般性的防卫变成了一种非常普通的防范,而且还从一种专门的领域变得无处不在。网络安全用于保证信息在处理、存储或传递过程中的可靠性和权成性。早期这项安全技术大部分是基于军事上的需求,到了90年代,Internet和电子商务得到广泛应用,尤其是Java技术的发展才使得网络安全在商业上广受重视并成为主流技术。网络安全机制常常得益于加密技术的应用,加密技术也不是存在于真空之中的,它也依靠软件和硬件实现。下面主要介绍一下基于Java的商务网络安全加密技术的实现。1.消息摘要“消息摘要”也称作“数字指纹”,在商务活动中发送方通过单向散列函数计算从报文文本中生成一个l28位的散列值(即消息摘要),然后用自己的私钥这个散列值进行加密来形成数字签名。报文摘要依靠单向散列函数计算生成,单向散列函数是—种正向计算简单,反向计算复杂,而且很难找到两个不同的输入值对应于同一个输出值的函数。假定在磁盘上存储文件,把文件内容作为函数输入,可以计算散列函数值,它通常比文件长度短许多。以后,可以把文件的当前内容作为输入计算散列函数值,如果新旧函数值不一致,就表明文件已经被窜改。由此得到,单向散列函数在文件内容和函数值之间充当一种防止伪造的连接。消息摘要的生成如图l所示。设计者可以将密钥和单向散列函数的输入组合在一起,这样,在密钥未知的情况下,不能正确计算或预测散列值。所以,利用单向散列函数的报文摘要技术保证了不可伪造性。2.密码体制密码体制是一个将明文信息转换成密文或者将密文恢复为原始明文的系统。具体做法是通过加密把某些重要信息从可以理解的明文形式转换成难以理解的密文形式,经过线路传送到达目的端后再将密文通过解密还原成明文。采用一定的密码体制可以避免数据在传输中被非法截获、阅读.篡改等。“密钥”在转换过程中起关键作用,每个方向的转换都需正确的密钥来实现。根据密钥使用的不同,通常将密码体制划分为对称密钥和公钥密钥。对称密钥是指加密和解密的过程中使用相同的密钥、交易双方所有的信息都通过同一密钥加密解密信息,也就是说一把钥匙开一把锁。对称密码体制有很多不足之处:(1)密钥答理与传输困难;(2)难以实现陌生人之间的通信保密;(3)数字签名难以实现。现在加密技术中通常用的是公钥密码体制,也称非对称密钥体制,它可以解决以上对称密钥的问题。非对称密钥体制中每个用户都有两个密钥:一个密钥是公开的,称为公钥;另一个密钥由用户秘密保存,称为私钥.公钥和私钥紧密相关,如果用公钥对数据进行加密,只有用对应的私钥才能解密;反之如果用私钥对数据进行加密,只有用对应的公钥才能解密。若以公钥作为加密密钥,以用户专用密钥(私钥)作为解密密钥,则可实现多个用户加密的信息只能由一个用户解读;反之,以用户私钥作为加密密钥而以公钥作为解密密钥,则可实现由一个用户加密的信息而由多个用户解读。前者可用于数字加密,后者可用于数字签名。原理如图2所示。公开密钥用于加密,私有密钥用于解密,私有密钥只能由生成密钥的交换方掌握,公开密钥可以广泛公布,但它只对应于生成密钥的交换方。非对称加密方式可以使通信双方无须事先交换密钥就可以建立安全通信,广泛应用于身份认证、数字签名等信息交换领域。非对称加密体系一般是建立在某些已知的数学难题之上,是计算机复杂性理论发展的重要成果,其中最具有代表性是RSA公钥密码体制。3.数字签名数字签名是公开密钥加密体制的一类应用。它的主要方式是:报文的发送方从报文文本中生成一个128位的散列值(或报文摘要)。发送方用自己的专用密钥对这个散列值进行加密来形成发送方的数字签名。然后,这个数字签名将作为报文的附件和报文一起发送给报文的接收方。报文的接收方首先从接收到的原始报文中计算出128位的散列值(或报文摘要),接着再用发送方的公开密钥来对报文附加的数字签名进行解密。如果两个散列值相同,那么接收方就能确认该数字签名是发送方的。通过数字签名能够实现对原始报文的鉴别和不可抵赖性。在实际应用中,为了不让报文的内容泄露,在发送报文前,先用接收者的公用密钥对报文加密,再进行数字签名,这样,对报文签名确认无误后,只有接收方才能用自己的私用密钥解开密文。实现过程如图3所示。4.基于JAVA技术的实现上世纪90年代,网络安全在商业上广受重视并成为主流技术。这得益干Java技术的发展。Java密码学结构(JcA)最早出现在JDK1.1中,当时只有有限的功能,包括一些为数字签名和消息摘要而设计的API。为了访和开发Java平台的密码学,Java2SDK着重地将JCA扩展为框架结构。现在Java2SDK1.4中集成的JCA包含r与密码学有关的安全API,还包括一些提供者体系结构,允许多种可相互作用的密码学实现,并且具有平台无关性。用于网络加密的Java技术从此日趋完善。下面给出在jdk1.4环境下消息摘要、公私钥对、数字签名的实现方案。4.1计算消息摘要消息摘要(messagedigest)是基干密码学安全的,它以任意大小的字节数组作为输人参数,所生成的固定大小输称为摘要(digest)。规定两条不同的消息能具有相同摘要值,并且摘要不能泄漏生成它的输入数据的任何信息。用SHA-1算法来计算消息摘要。假设有一个由三个字节数组a、b、C构成的消息,那么首先创建一个正确初始化的消息摘要对象,然后通过对消息摘要对象来运行者三个字节数组,一边计算散列函数值,如下所示:MessageDigestsha=MessageDigest.getInstance(“SHA1”);Sha.Update(a);Sha.Update(b);Sha.Update(c);byte[]hash=sha.digest();消息摘要计算结束后,消息摘要类自动复位并且转而接受新的数据并计算其摘要,提交给update调用的数据随之丢失。4.2生成公私钥对用RSA算法生成一对公私钥对,可以通过使用一个用户派生的种子(名为userseec1),生成密钥和1024位的模数。首先,为r生成针对DSA算法的密钥,先获得一个KeyPa证Generator对象,然后,为了初始化KeyPairGenerator,需要一个从SecureRandom对象获得的随机种子,如下所示:KeyPairGeneratOrkeyGen=KeyPairGenerator.getInstance(“RSA”);SecureRandomrandom=SecureRandom.getInstance(“SHAlPRNG”,”SUN”);random.setSeed(userSeed);keyGen.initialize(1024,random);最后,生成密钥对:KeyPairPair=keYGen.generateKeyPair();4.3生成并且验证签名通过上面生成的密钥对生成并验证一个签名,首先,需要创建一个Singnature对象,然后通过上面生成的密钥对,用私钥来初始化对象并且给一个名为data的字节数组签名,如下所示:SignaturedsaSignature.getlnstance(”SHAlWithRSA):/使用私钥初始化Signature对象/PrivateKeypriv=pair.getPrivate();dsa.initSign(priv);/提供用来签名的数据,并进行签名/dsa.ulxlate(data);byte[]sig=dsa.sign();验证签名:/使用公钥初始化Signature对象/PublicKeypub—pair.getPublic();dsa.LnitVeAfy(Pub);/提供用来验证的数据并进行验证/dsa.update(data);Booleanvefifies--dsa.verify(sig);System.out.println(“signatureverfies);总结:由于Internet自身的开放性和复杂性以及Java程序的可移植、分布等特点,导致了其安全问题的复杂性。Java语言是面向对象的的卓越代表,它的移植性使其能够用于不同的操作系统和平台,同时也对传统的安全模型提出了挑战。参考文献[1]LiGong,GaryElison,MaryDageforde.深入Java2平台安全[M].北京:电子工业出版社.2004[2]倪春胜,牛伟建等数字签名技术在电子商务中的应用[j].计算机工程与应用.2001[3]刘栋梁,陈艳萍.RSA密码体制在电子商务中的安全应用[J].大众科技.2005陈姗.助教.本科.网络安全方向。