信息安全实习报告4_信息安全实习报告

实习报告 时间:2020-02-28 00:18:56 收藏本文下载本文
【www.daodoc.com - 实习报告】

信息安全实习报告4由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“信息安全实习报告”。

实习四 基于 Diffle-Human 的密钥交换 一 实习名称基于 Diffle-Human 的密钥交换二 实习目的1 理解密钥管理相关内容,熟悉 Diffle-Human 的密钥交换协议 2 在 java 平台上实现基于 Diffle-Human 的密钥交换三 实习要求1 实习前认真预习关于 Diffle-Human 的密钥交换相关内容 2 熟悉 Java.security.*的密钥交换四 实习内容1 问题描述: Diffle-Human 算法是建立在 DH 公钥和私钥基础上的密钥分配算法,如 A 需要和 B 共享密 钥时,A 和 B 各自生成 DH 的公钥和私钥,公钥对外公布而私钥各自秘密保存 2 基本要求 在 java 平台上实现基于 Diffle-Human 的密钥交换 3 实现提示(1)利用公钥密码中的 KeyGenerator 类创建公钥对,其参数指定为“DH”,另外在初始化 时 需 要 为 DH 指 定 的 参 数 DHParameterSpec DHP=new DHParameterSpec(skip1024Modulus,skip1024Base);(2)skip1024Modulus 指定模块,skip1024Base 指定基数。(3)建立两个目录 A 和 B,模拟需要秘密通信的 A,B 方 DH 算法需要 A 和 B 各自生成 DH 公钥和私钥(4)java 中 KeyAgreement 类实现了密钥协定,它使得 init()方法传入自己的私钥,使用 doPhase()方法传入对方的公钥,进而可以使用 generateSecret()方法生成共享的信息 3 密钥交换方法Y BxAYAXB核心代码: /*DH 密钥对的生成*/private static final BigInteger skip1024Modulus =new BigInteger(1,skip1024ModulusBytes);private static final BigInteger skip1024Base=BigInteger.valueOf(2);public static void main(String args[])throws Exception{ /*DH创建密钥对时所用到的基数和模*/ DHParameterSpec DHP=new DHParameterSpec(skip1024Modulus,skip1024Base);KeyPairGenerator kpg=KeyPairGenerator.getInstance(“DH”);kpg.initialize(DHP);KeyPair kp=kpg.genKeyPair();PublicKey pbk=kp.getPublic();PrivateKey prk=kp.getPrivate();FileOutputStream f1=new FileOutputStream(“Key_DH_pub.dat”);ObjectOutputStream b1=new ObjectOutputStream(f1);b1.writeObject(pbk);FileOutputStream f2=new FileOutputStream(“Key_DH_prv.dat”);ObjectOutputStream b2=new ObjectOutputStream(f2);b2.writeObject(prk);}/*共享密钥的创建*/ /*密钥协定*/ public cla KeyAgree { public static void main(String[] args)throws Exception { // TODO Auto-generated method stub /*读取 DH 私钥和对方公钥*/FileInputStream f1=new FileInputStream(“Key_DH_pub.dat”);ObjectInputStream b1=new ObjectInputStream(f1);PublicKey pbk=(PublicKey)b1.readObject();FileInputStream f2=new FileInputStream(“Key_DH_prv.dat”);ObjectInputStream b2=new ObjectInputStream(f2);PrivateKey prk=(PrivateKey)b2.readObject();/*创建私钥协定对象*/ KeyAgreement ka=KeyAgreement.getInstance(“DH”);/*用自己的私钥初始化密钥协定对象*/ ka.init(prk);/*执行密钥协定对象的 doPhase()方法,其在第一个参数中传入对方公钥,本例中只 有 A,B 双发,所以*第二个 参数为 true,如

果有 A,B,C 三方需要共享密钥,则对方有两个 doPhase()要写两次,每次在第一个参数中传入一个公钥,参数中传入一个公钥,第二个参数为 false,最后一次的第二个参数为 true,依次类 推,可以创建多方协定*/ ka.doPhase(pbk,true);byte[]sb=ka.generateSecret();for(int i=0;i五 实习总结这次实习的内容是基于 Diffle-Human 的密钥交换,在老师所给的代码的基础上,我完成 了实习所实现的内容,重点在于理解 Diffle-Human 的密钥交换思想。Diffle-Human 密钥交换 算法使得两个用户能够安全的交换密钥,得到一个共享的会话密钥,但算法分身不能用于加 解密,DH 算法的安全性是建立在求离散对数的困难性的基础上的。首先考虑这种密钥交换方法的保密性:由于 道了XA,XB是随机生成的,及时破解者知Y ,YAB,a,p 也不易求出XA,XB,如果要求出,及要求离散对数。因此,共享密钥是安全的。采用 DH 方法,根据通信双方格子的秘密信息计算出公开信息后,把各自的公开信息传 送给对方,再计算共享密钥,但是一定要保密。用随机数生成器生成会话密钥,然后用共享 密钥对会话密钥进行加密,给通信方,让其可以解密后知道会话密钥,这时用会话密钥对数 据加密,传送密文,接收方受到密文用会话密钥解密成明文即可。通过这次实习,我更加深入理解了 Diffle-Human 密钥交换的过程,以及说它密钥安全的 机制所在,收获很多。

下载信息安全实习报告4word格式文档
下载信息安全实习报告4.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

    热门文章
      整站推荐
        点击下载本文