预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共20页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实习一密钥分配 一、实习目的 1.理解密钥管理的重要性; 2.掌握对称密码和公钥密码密钥管理的不同特性; 3.掌握密钥分发基本方法,能设计密钥分发方案 二、实习要求 1.实习前认真预习第2章的有关内容; 2.复习对称密码和公钥密码相关内容; 3.熟悉Java平台的JCE包有关类。 三、实习内容 假定两个用户A、B,用户A、B的通讯密钥为K,他们的公私钥对分别是KPUa、KPRa和KPUb、KPRb,他们要进行安全通讯,密钥分发与通信过程如1所示。 (1)根据图1所示,实现利用公钥密码算法分发对称密钥的过程。 实现的阶梯任务如下: =1\*GB3①以本地两个目录模拟两个用户,采用变量方式直接实现密钥的分发; =2\*GB3②实现算法的图形化方式,用户可以选择算法、参数、工作模式等; =3\*GB3③以文件方式管理密钥及明文、密文; =4\*GB3④采用Socket,建立安全通信过程; =5\*GB3⑤将方案移植到某个web应用中。 (2)按照(1)的阶梯任务,实现基于DH密钥协定的密钥分发。 四、实验过程 1.知识回顾 DES是数据加密标准(DataEncryptionStandard)的简称,出自IBM的研究工作,并在1977年被美国政府正式采纳。它是使用较为广泛的密钥系统,最初开发DES是嵌入硬件中DES特别是在保护金融数据的安全,如自动取款机中,使用较多。 在DES中,使用了一个56位的密钥以及附加的8位奇偶校验位,产生最大64位的分组大小。加密过程中,将加密的文本块分成两半。使用子密钥对其中一半应用循环功能, 然后将输出与另一半进行“异或”运算;接着交换这两半。循环往复。DES使用16个循 环,但最后一个循环不交换。 攻击DES,一般只能使用穷举的密钥搜索,即重复尝试各种密钥直到有一个符合为 止。如果DES使用56位的密钥,则可能的密钥数量是256个,穷举难度较大。IBM曾对DES拥有几年的专利权,但在1983年到期。 在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然解密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK。 正是基于这种理论,1978年出现了著名的RSA算法,它通常是先生成一对RSA密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。这就使加密的计算量很大。为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方式,即信息采用改进的DES或IDEA对话密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。对方收到信息后,用不同的密钥解密并可核对信息摘要。 2.问题分析 (1).对称密钥密码体系 对称密钥密码体系也叫密钥密码体系,它是指消息发送方和消息接收方必须使用相同的密钥,该密钥必须保密。发送方用该密钥对待发消息进行加密,然后将消息传输至接收方,接收方再用相同的密钥对收到的消息进行解密。这一过程可用数学形式来表示。消息发送方使用的加密函数encrypt有两个参数:密钥K和待加密消息M,加密后的消息为E,E可以表示为E=encrypt(K,M)消息接收方使用的解密函数decrypt把这一过程逆过来,就产生了原来的消息M=decrypt(K,E)=decrypt(K,encrypt(K,M)) (2).非对称密钥密码体系 非对称密钥密码体系又叫公钥密码体系,它使用两个密钥:一个公共密钥PK和一个私有密钥SK。这两个密钥在数学上是相关的,并且不能由公钥计算出对应的私钥,同样也不能由私钥计算出对应的公钥。这种用两把密钥加密和解密的方法表示成如下数学形式。假设M表示一条消息,pub—a表示用户a的公共密钥,prv—a表示用户a的私有密钥,那么: M=decrypt(pub—a,encrypt(prv—a,M)) 3.算法分析及流程图 Start DES生成密钥K RSA生成公钥密钥对 RSA加密算法使用公钥对密钥K加密 RSA解密算法使用私钥解密 End 4.实验原理 (1)利用java中的KeypairGenerator类创建公钥密钥对,工厂类KeypairGenerator的静态方法getInstance()可以获得KeypairGenerator类型对象。 (2)方法getInstance()的参数为字符串类型,指定加密算法为RSA。 (3)RSA算法是使用整数进行加密运算的,RSA的公钥中包含两个信息:公钥对应的整数e和用于取模的整数n。对于明文m计算密文的公式是memodn。java中的BigInteger类中定义的mo