当前位置:文档之家› 非对称密码体制

非对称密码体制

非对称密码体制
非对称密码体制

云南大学数学与统计学实验教学中心实验报告

一、实验目的:

通过实验掌握非对称密码体制的重要思想。

二、实验内容:

查阅资料,实现RSA密码体制的编码算法、译码算法、密钥生成算法

查阅资料,实现ECC密码体制的编码算法、译码算法、密钥生成算法

三、实验环境

Win7、Eclipse

四、实验过程(请学生认真填写):

实验过程、结果以及相应的解释:

1. 预备知识

非对称密码体制也叫公钥加密技术,该技术就是针对私钥密码体制的缺陷被提出来的。

在公钥加密系统中,加密和解密是相对独立的,加密和解密会使用两把不同的密钥,加密密钥(公开密钥)向公众公开,谁都可以使用,解密密钥(秘密密钥)只有解密人自己知道,非法使用者根据公开的加密密钥无法推算出解密密钥,顾其可称为公钥密码体制。如果一个人选择并公布了他的公钥,另外任何人都可以用这一公钥来加密传送给那个人的消息。私钥是秘密保存的,只有私钥的所有者才能利用私钥对密文进行解密。公钥密码体制的算法中最著名的代表是RSA系统,此外还有:背包密码、McEliece密码、Diffe_Hellman、Rabin、零知识证明、椭圆曲线、EIGamal算法等。公钥密钥的密钥管理比较简单,并且可以方便的实现数字签名和验证。但算法复杂,加密数据的速率较低。公钥加密系统不存在对称加密系统中密钥的分配和保存问题,对于具有n个用户的网络,仅需要2n个密钥。公钥加密系统除了用于数据加密外,还可用于数字签名。

2. 实验过程

(一)RSA加密算法

A、原理分析:

RSA的具体计算算法:

假设Alice想要通过一个不可靠的媒体接收Bob的一条私人讯息。她可以用以下的方式来产生

一个公钥和一个私钥:

1.随意选择两个大的质数p和q,p不等于q,计算N=pq。

2.根据欧拉函数,求得r= φ(n) = φ(p)φ(q) = (p-1)(q-1)

3.选择一个小于r的整数e,求得e关于模r的模反元素,命名为d。(模反元素存在,当且

仅当e与r互质)

4.将p和q的记录销毁。

(N,e)是公钥,(N,d)是私钥。Alice将她的公钥(N,e)传给Bob,而将她的私钥(N,d)藏起来。

加密消息

假设Bob想给Alice送一个消息m,他知道Alice产生的N和e。他使用起先与Alice约好的格式将m转换为一个小于N的整数n,比如他可以将每一个字转换为这个字的Unicode码,然后将这些数字连在一起组成一个数字。假如他的信息非常长的话,他可以将这个信息分为几段,然后将每一段转换为n。用下面这个公式他可以将n加密为c:

计算c并不复杂。Bob算出c后就可以将它传递给Alice。

解密消息

Alice得到Bob的消息c后就可以利用她的密钥d来解码。她可以用以下这个公式来将c转换为n:

得到n后,她可以将原来的信息m重新复原。

解码的原理是

以及ed ≡1 (mod p-1)和ed ≡ 1 (mod q-1)。由费马小定理可证明(因为p和q是质数)

这说明(因为p和q是不同的质数,所以p和q互质)

注:本内容参考维基百科RSA加密算法,可能与老师说的有略微不同。

B、具体代码如下:

//具体实现的代码

//RSA实现时候用大数数来做比较简单

public class RSA1 {

private final static SecureRandom random = new SecureRandom();

private static BigInteger d; // 为私钥{d,n}中的d

private static BigInteger e; // 其实就是公钥 中的e

private static BigInteger n; // 为公开的 p x q

private static BigInteger p; // 需要保密的大素数 p q

private static BigInteger q;

/**

* 产生长度为N位的公钥和私钥

* @param N

*/

public void genKey(int N) {

// 产生两个N/2位的大素数p和q

p = BigInteger.probablePrime(N / 2, random);

q = BigInteger.probablePrime(N / 2, random);

// 计算(p-1)*(q-1)

BigInteger phi =

(p.subtract(BigInteger.ONE)).multiply(q

.subtract(BigInteger.ONE));

// 计算模数p*q

n = p.multiply(q);

// 随便找一个b,使得gcd(b, phi) =1;

// 通用的公钥是2^16 + 1=65537

e = new BigInteger("65537");

// 计算出a,即b的模n逆

d = e.modInverse(phi);

}

/**

* 加密函数

* @param plainText

* 明文

* @return密文

*/

public byte[] encrypt(byte[] plainText) {

return new BigInteger(plainText).modPow(e,

n).toByteArray();

}

/**

* 解密函数

* @param cipherText

* 密文

* @return明文

*/

public byte[] decrypt(byte[] cipherText) {

return new BigInteger(cipherText).modPow(d,

n).toByteArray();

}

public static void main(String[] args) throws FileNotFoundException,

IOException, ClassNotFoundException {

RSA1 rsa = new RSA1();

rsa.genKey(128); // 产生密钥

// 加密一句消息

byte[] cipher = rsa.encrypt("hello word".getBytes());

System.out.println("RSA 加密:" + new String(cipher));

// 解密

byte[] plain = rsa.decrypt(cipher);

System.out.println("RSA 解密:" + new String(plain));

}

}

结果如下:

运行时候,主要的是以下代码:

运行结果如下图:

//得到结果与真实结果一样。说明正确

(二)ECC加密算法

A、原理分析:

椭圆曲线密码学(Elliptic curve cryptography,缩写为ECC)是基于椭圆曲线数学的一种公钥密码的方法。椭圆曲线在密码学中的使用是在1985年由Neal Koblitz和Victor Miller分别独立提出的。

ECC的主要优势是在某些情况下它比其他的方法使用更小的密钥——比如RSA加密算法——提供相当的或更高等级的安全。ECC的另一个优势是可以定义群之间的双线性映射,基于Weil 对或是Tate对;双线性映射已经在密码学中发现了大量的应用,例如基于身份的加密。不过一个缺点是加密和解密操作的实现比其他机制花费的时间长。

ECC的具体计算算法:

a)密钥的生成

Bob(使用者)执行了下列计算:

i) 在区间[1,n-1]中随机选取一个整数d。

ii) 计算点Q=dP (d个P相加)

iii) Bob公开自己的公开密钥(E(Fq),p,n,Q)

iv) Bob的私钥为整数d。

Alice要发送消息m给Bob,Alice执行:

i) 查找Bob的公钥(E(Fq),p,n,Q),

ii) 将m表示成一个域元素m∈Fq,

iii) 在区间[1,n-1]内选取一个随机数k,

iv) 依据Bob的公钥计算点(x1,y1)=kP(k个P相加)

v) 计算点(x2,y2)=kQ,如果x2=0,则回到第iii)步

Ⅵ)计算C=mx2

Ⅶ)传送加密数据(x1,y1,C)给Bob

b) Bob的解密过程

Bob收到Alice的密文(x1,y1,C)后,执行

i) 使用私钥d,计算点(x2,y2)=d(x1,y1)

通过计算m=C*x2,恢复出明文数据

B、具体代码如下:

//具体实现的代码

package ECC;

public class ECC {

private int a, p;

private POINT ukAlpha, ukBeta;

private int rKey;

/**

* Method ECCImpClass

*/

public ECC(int a, int p, int priK, POINT alpha) { this.a = a;

this.p = p;

this.rKey = priK;

https://www.doczj.com/doc/6414407339.html,Alpha = alpha;

this.generatingUkBeta();

}

/**

* 欧几里得算法--求逆元

*/

public int[] euclid(int x0, int y0) {

int x, y, a, b, c, d, pa, pb, pc, pd, q, r;

int[] res = new int[2];

x = x0;

y = y0;

pa = 1;

pb = 0;

pc = 0;

pd = 1;

a = 1;

b = 0;

c = 0;

d = 1;

while (y != 0) {

r = x % y;

q = (x - r) / y;

a = pc;

b = pd;

c = pa - q * pc;

d = pb - q * pd;

x = y;

y = r;

pa = a;

pb = b;

pc = c;

pd = d;

}

if (a < 0) {

a = a + y0;

}

res[0] = x;

res[1] = a;

return res;

}

/**

* 求bmod p 下的逆元

*

* @param a

* @param b

* @param p

* @return

*/

public int aUpBModP(int a, int b, int p) { int invB, res1;

a = a % p;

b = b % p;

int[] res = this.euclid(b, p);

//System.out.println("b mod p 的逆元:" + res[1]);

invB = res[1];

res1 = (a * invB) % p;

if (res1 < 0) {

res1 = res1 + p;

}

return res1;

}

/**

* 求2P

*

* @param pt

* @return

*/

public POINT doublePoints(POINT pt) {

int x1, y1, x2, y2, lambda, n1, n2;

x1 = pt.getX();

y1 = pt.getY();

n1 = 3 * x1 * x1 + this.a;

n2 = 2 * y1;

lambda = this.aUpBModP(n1, n2, this.p);

x2 = (lambda * lambda - 2 * x1) % (this.p);

y2 = ((x1 - x2) * lambda - y1) % (this.p);

if (x2 < 0) {

x2 = x2 + this.p;

}

if (y2 < 0) {

y2 = y2 + this.p;

}

return new POINT(x2, y2);

}

/**

* 求nP

*

* @param m

* @param pt

* @return

*/

public POINT anyPoint(int m, POINT pt) { int k;

if (m == 1)

return pt;

else if (m == 2)

return this.doublePoints(pt);

else {

if (m % 2 == 0) {

k = m / 2;

POINT p1 = this.doublePoints(pt);

return this.anyPoint(k, p1);

} else {

POINT p1 = this.anyPoint(m - 1, pt);

return this.add2Points(pt, p1);

}

}

}

/**

* 两个点相加

*

* @param p1

* @param p2

* @return

*/

public POINT add2Points(POINT p1, POINT p2) { int x1, y1, x2, y2, x3, y3, lambda, n1, n2;

if (p1.isSamePoint(p2))

return this.doublePoints(p1);

x1 = p1.getX();

y1 = p1.getY();

x2 = p2.getX();

y2 = p2.getY();

n1 = y2 - y1;

n2 = x2 - x1;

lambda = this.aUpBModP(n1, n2, this.p);

x3 = (lambda * lambda - x1 - x2) % (this.p);

y3 = ((x1 - x3) * lambda - y1) % (this.p);

if (x3 < 0) {

x3 = x3 + this.p;

}

if (y3 < 0) {

y3 = y3 + this.p;

}

return new POINT(x3, y3);

}

/**

* Beta = d * alpha 生成

*/

public void generatingUkBeta() {

https://www.doczj.com/doc/6414407339.html,Beta = this.anyPoint(this.rKey, https://www.doczj.com/doc/6414407339.html,Alpha);

}

public POINT getUkBeta() {

return https://www.doczj.com/doc/6414407339.html,Beta;

}

/**

* 加密点pt

*

* @param pt

* @param ranK

* @return

*/

public POINT[] encripting(POINT pt, int ranK) { POINT[] ct = new POINT[2];

ct[0] = this.anyPoint(ranK, https://www.doczj.com/doc/6414407339.html,Alpha); // k*P

POINT temp = this.anyPoint(ranK, https://www.doczj.com/doc/6414407339.html,Beta);//

k*Q=(x2,y2)

ct[1] = this.anyPoint(temp.getX(), pt);// c = mx2

return ct;

}

/**

* 解密

*

* @param ct

* @return

*/

public POINT decripting(POINT[] ct) {

POINT p1, p2, p3;

p1 = new POINT();

p1.setX(ct[0].getX());

p1.setY(ct[0].getY());

p2 = this.anyPoint(this.rKey, p1);// (x2,y2)

int[] res = this.euclid(p2.getX(), this.p);

p3 = this.anyPoint(res[1], ct[1]);

// p3 = this.add2Points(ct[1], p2);

return p3;

}

/**

* Method main

*

* @param args

*/

public static void main(String[] args) {

System.out.println("\nTesting the ecc:");

System.out.println("——对(5, 19)加密——");

ECC ecc3 = new ECC(1, 23, 9, new POINT(3, 13));

POINT beta = ecc3.getUkBeta();

System.out.println("公钥,Q=(" + beta.getX() + "," + beta.getY() + ")");

POINT[] ct = ecc3.encripting(new POINT(5, 19), 5);

System.out.println("(x1,y1) = ("+ ct[0].getX() + ","+ ct[0].getY()

+ ")");

System.out.println("(x2,y2) = ("+ ct[1].getX() + ","+ ct[1].getY()

+ ")");

POINT x = ecc3.decripting(ct);

System.out.println("解密(" + x.getX() + "," + x.getY() + ")");

}

}

// 点类

class POINT {

private int x, y;

public POINT() {

}

public POINT(int x, int y) {

this.x = x;

this.y = y;

}

public void setX(int x) {

this.x = x;

}

public void setY(int y) {

this.y = y;

}

public int getX() {

return x;

}

public int getY() {

return y;

}

public boolean isSamePoint(POINT p) {

if (x == p.getX() && y == p.getY()) {

return true;

} else {

return false;

}

}

public void printPoint() {

System.out.println("The point is (" + this.x + "," + this.y + ")");

}

public POINT signPoint() {

return new POINT(-this.x, -this.y);

}

}

结果如下:

运行时候,主要的是以下代码:

五、实验总结

1.遇到的问题及分析:

遇到问题:ECC中在求几点P的素数阶n是不会求

分析并解决:-查阅资料也没有解决,后来想了到找了一个k>>n的一个数,这样来解决,但是个人感觉不太严谨。

2.体会和收获。

对于RAS这一块,编程序时没有多少技巧,直接按照算法来实现:生成密钥、加密、解密就行了。有点技巧的无非就是使用大数数来编写的话,java提供了一个直接求逆元的接口,实现起来十分容易。这一块由于是赶时间写出来的额,没有进行什么处理,同时加密之后就直接解密,没有密钥保存这一块,这是一个缺点。

ECC这一块完全是赶任务赶出来的,没有多少收获。只有期望下学年将之不上咯。六、参考文献

计算机网络课本。

七、教师评语:

非对称密钥加密

<2> 非对称密钥加密又叫作公开密钥加密算法。在非对称加密体系中,密钥被分解为一对(即一把公开密钥或加密密钥和一把私有密钥或解密密钥)。这对密钥中的任何一把都可作为公开密钥(加密密钥)通过非保密方式向他人公开,而另一把则作为私有密钥(解密密钥)加以保存。公开密钥用于对机密性信息的加密,私有密钥则用于对加密信息的解密。私有密钥只能由生成密钥对的用户掌握,公开密钥可广泛发布,但它只对应于生成该密钥的用户。公开密钥加密技术解决了密钥的发布和管理问题,是目前商业密码的核心。使用公开密钥技术,数据通信的双方可以安全的确认对方的身份和公开密钥。非对称密钥加密算法主要有RSA、PGP等。 ----数据加密技术可以分为三类,即对称型加密、不对称型加密和不可逆加密。 ----对称型加密使用单个密钥对数据进行加密或解密,其特点是计算量小、加密效率高。但是此类算法在分布式系统上使用较为困难,主要是密钥管理困难,使用成本较高,保安性能也不易保证。这类算法的代表是在计算机专网系统中广泛使用的DES(Digital Encryption Standard)算法。 ----不对称型加密算法也称公用密钥算法,其特点是有二个密钥(即公用密钥和私有密钥),只有二者搭配使用才能完成加密和解密的全过程。由于不对称算法拥有两个密钥,它特别适用于分布式系统中的数据加密,在Internet中得到了广泛应用。其中公用密钥在网上公布,为数据源对数据加密使用,而用于解密的相应私有密钥则由数据的收信方妥善保管。 ----不对称加密的另一用法称为“数字签名(Digital signature)”,即数据源使用其密钥对数据的校验和(Check Sum)或其他与数据内容有关的变量进行加密,而数据接收方则用相应的公用密钥解读“数字签名”,并将解读结果用于对数据完整性的检验。在网络系统中得到应用的不对称加密算法有RSA算法和美国国家标准局提出的DSA算法(Digital Signature Algorithm)。不对称加密法在分布式系统中应用时需注意的问题是如何管理和确认公用密钥的合法性。 2、对称性加密和非对称性加密 根据密钥技术的不同,可分为对称加密和非对称加密两种方法;对称加密是指用单一的密钥对明文进行加密,同时必须用该密钥对密文进行解密,加密和解密双方必须知道该密钥。非对称加密技术又称公共密钥技术,密钥成对存在,分别称为私有密钥(private key)和公共密钥(public key);在加密过程采用公共密钥,在解密过程采用私有密钥。 由此可以看出,非对称性加密技术使密钥更加安全,一般用于对密钥进行管理;但是非对称加密技术速度很慢,在数据传输过程中的加密一般采用对称加密算法。 对于VPN网关产品来说,因为非对称加密算法太慢,所以一般采用对称加密算法进行数据传输加密。 3、数据加密强度和加密算法

非对称密码体制的认证与对称密码体制的加密

非对称密码体制的认证和对称密码体制的加密 仵惠婷 22620139407 摘要:本文主要介绍在安全网络通信过程中:用非对称密码体制即公钥密码来进行通信双方的身份认证,以确保发送方是真的发送方,接收方是真的接收方;用对称密码体制对通信双方交互的通信数据进行加密的安全网络通信方案。非对称密码体制方案较对称密码体制方案处理速度慢,因此,通常把非对称密钥与对称密钥技术结合起来实现最佳性能。即用非对称密钥技术在通信双方之间传送会话密钥,而用会话密钥来对实际传输的数据加密解密。另外,非对称加密也用来对对称密钥进行加密。 关键词:非对称密码体制;认证;对称密码体制;加密; 1.引言 在要求安全的网络环境下通信双方首先要确认对方的身份是否属实,以防止伪造身份的恶意程序向正常服务发起服务请求,以防止恶意程序截获交付给正常客户程序的正常服务。然后要在整个通信过程中对通信双方交互的通信数据进行加密,以防止即使数据被泄露或者截获也不易被恶意程序篡改或伪造等。在现有密码技术条件下,应用非对称密码体制对通信双方进行身份认证,应用对称密码体制对通信数据进行加密的方案可谓设计精妙。 2.非对称密码体制的认证 非对称密码体制可以对信息发送与接收人的真实身份的验证、对所发出/接收信息在事后的不可抵赖以及保障数据的完整性是现代密码学主题的另一方面。 首先要介绍的是证书和CA。其中证书是将公钥和公钥主人名字放在一起被CA权威机构的私钥签名,所以大家都认可这个证书,而且知道了公钥的主人。而CA就是这个权威机构,也拥有一个证书,也有私钥,所以它有签字的能力。网上的公众用户通过验证CA的签字从而信任CA,任何人都应该可以得到CA的证书,用以验证它所签发的证书。如果一个用户想鉴别另一

对称密码体制

云南大学数学与统计学实验教学中心实验报告 一、实验目的: 通过实验掌握AES加密实验的构造算法,以及其重要思想。 二、实验内容: 查阅资料,实现AES密码体制的编码算法、译码算法、子密钥生成算法 三、实验环境 Win7、Eclipse 四、实验过程(请学生认真填写): 实验过程、结果以及相应的解释: 1. 预备知识 密码学中的高级加密标准(Advanced Encryption Standard,AES),是一种对称加密的方法。 本实验使用Java平台来编写的,虽然在java中已经很好的实现了AES等安全机制,但是为了了解如何实现,还是写了一个AES加密的java程序。 2. 实验过程 A、原理分析: 大多数AES计算是在一个特别的有限域完成的。 AES加密过程是在一个4×4的字节矩阵上运作,这个矩阵又称为“体(state)”,其初值就 是一个明文区块(矩阵中一个元素大小就是明文区块中的一个Byte)。(Rijndael加密法因支 持更大的区块,其矩阵行数可视情况增加)加密时,各轮AES加密循环(除最后一轮外)均 包含4个步骤: AddRoundKey —矩阵中的每一个字节都与该次回合金钥(round key)做XOR运算;每个子 密钥由密钥生成方案产生。 SubBytes —通过一个非线性的替换函数,用查找表的方式把每个字节替换成对应的字节。 ShiftRows —将矩阵中的每个横列进行循环式移位。 MixColumns —为了充分混合矩阵中各个直行的操作。这个步骤使用线性转换来混合每列的 四个字节。 最后一个加密循环中省略MixColumns步骤,而以另一个AddRoundKey取代。 B、具体代码如下: //如6.2,若是将每一行看做是一个对象的话 //具体实现的整体结构思想如此下图

第三章 对称密码体制

第三章对称密码体制 计算机科学与技术学院 对称密码体制 §1、对称密码体制简介 §2、典型的对称密码算法 §3、数据加密标准DES §4、高级数据加密标准AES §5、密码分析 §6、分组密码的工作模式 §7、流密码简介 2

3 §对称密码体制(私钥):加密密钥和解密密钥相同,且都需要保密。 ?优点:加密算法比较简便、高效、密钥简短,对方破译极其困难,且经受住时间的检验和攻击;?缺点:密钥必须通过安全的途径传送。 ?系统的机密性主要取决于密钥的安全性。 ?加密的方式: §按字符逐位加密(流密码) §将明文消息分组(分组密码) ?常用算法:DES ?适用范围:数据加密、消息认证1、对称密钥体制简介

2、典型的对称加密算法 1、DES加密算法 §定义:DES 全称为Data Encryption Standard即数据加密算法,它是IBM公司于1975年研究成功并公开发表的,1977年,美国把DES用于国家非保密机关。 §DES是一种采用传统加密方法的分组密码。它的算法是对称的,既可用于加密又可用于解密。 §基本思想:DES对64比特二进制数据加密,产生64比特等长的密文数据。使用的密钥为64比特,实际密钥长度为56比特(有8比特用于奇偶校验)。 5 典型的对称加密算法 §2、IDEA算法 ?IDEA(International Data Encryptdri Algorithm), 即“国际数据加密算法”。 ?IDEA采用基于“相异代数群上的混合运算”的设计思想,其算法的明、密文组位长度为64位,密钥长度为128位。 §3、FEAL-8密码 ?FEAL密码算法家族是日本NTT(日本电报电话公司 )设计的。密钥组位长度为64比特,明、密文组位长度 为64比特。作为一种分组密码,与DES相比,其增加了 每一轮迭代的算法强度,因此可以通过减少迭代次数而 提高运算速度。 6

对称密钥与非对称密钥的区别

对称密钥与非对称密钥的区别 一、对称加密(Symmetric Cryptography) 对称密钥加密,又称私钥加密,即信息的发送方和接收方用同一个密钥去加密和解密 数据。它的最大优势是加/解密速度快,适合于对大数据量进行加密,对称加密的一大缺点是密钥的管理与分配,换句话说,如何把密钥发送到需要解密你的消息的人的手里是一个 问题。在发送密钥的过程中,密钥有很大的风险会被黑客们拦截。现实中通常的做法是将对称加密的密钥进行非对称加密,然后传送给需要它的人。 对称加密通常使用的是相对较小的密钥,一般小于256 bit。因为密钥越大,加密越强,但加密与解密的过程越慢。如果你只用1 bit来做这个密钥,那黑客们可以先试着用0来解密,不行的话就再用1解;但如果你的密钥有1 MB大,黑客们可能永远也无法破解,但加密和解密的过程要花费很长的时间。密钥的大小既要照顾到安全性,也要照顾到效率,是一个trade-off。 二、非对称加密(Asymmetric Cryptography) 非对称密钥加密系统,又称公钥密钥加密。非对称加密为数据的加密与解密提供了一 个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用 这对密钥中的一个进行加密,而解密则需要另一个密钥。比如,你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人--银行才能对你的消息解密。与对称加密不同的是,银行不需要将私钥通过网络发送出去,因此安全性大大提高。

目前最常用的非对称加密算法是RSA算法。公钥机制灵活,但加密和解密速度却比对称密钥加密慢得多。 虽然非对称加密很安全,但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。为了解释这个过程,请看下面的例子: (1) Alice需要在银行的网站做一笔交易,她的浏览器首先生成了一个随机数作为对称密钥。 (2) Alice的浏览器向银行的网站请求公钥。 (3)银行将公钥发送给Alice。 (4) Alice的浏览器使用银行的公钥将自己的对称密钥加密。 (5) Alice的浏览器将加密后的对称密钥发送给银行。 (6)银行使用私钥解密得到Alice浏览器的对称密钥。 (7) Alice与银行可以使用对称密钥来对沟通的内容进行加密与解密了。 三、总结 (1)对称密钥加密与解密使用的是同样的密钥,所以速度快,但由于需要将密钥在

密码体制分类及典型算法描述

.AAA密码体制分类及典型算法描述 换位与代替密码体制 序列与分组密码体制 对称与非对称密钥密码体制 BBB试对代替密码和换位密码进行安全性分析。 1.单表代替的优缺点 优点:明文字符的形态一般将面目全非 缺点: (A)明文的位置不变; (B)明文字符相同,则密文字符也相同; 从而导致: (I)若明文字符e被加密成密文字符a,则明文中e的出现次数就是密文中字符a的出现次数; (II)明文的跟随关系反映在密文之中. 因此,明文字符的统计规律就完全暴露在密文字符的统计规律之中.形态变但位置不变 2.多表代替的优缺点 优点:只要 (1)多表设计合理,即每行中元互不相同,每列中元互不相同.(这样的表称为拉丁方表) (2)密钥序列是随机序列,即具有等概性和独立性。 这个多表代替就是完全保密的。 等概性:各位置的字符取可能字符的概率相同; 独立性:在其它所有字符都知道时,也判断不出未知的字符取哪个的概率更大。 2.多表代替的优缺点 密钥序列是随机序列意味着: (1)密钥序列不能周期重复; (2)密钥序列必须与明文序列等长; (3)这些序列必须在通信前分配完毕; (4)大量通信时不实用; (5)分配密钥和存储密钥时安全隐患大。 缺点:周期较短时可以实现唯密文攻击。 换位密码的优缺点 优点:明文字符的位置发生变化; 缺点:(A)明文字符的形态不变; 从而导致: (I)密文字符e的出现频次也是明文字符e的出现次数; 有时直接可破!(如密文字母全相同) 换位密码优缺点总结:位置变但形态不变. 代替密码优缺点总结:形态变但位置不变. CCC…..ADFGX密码解密过程分析。 1918年,第一次世界大战已经接近尾声。为了挽回日趋不利的局面,德军集中了500万人的兵力,向协约国发动了猛烈的连续进攻。 采用一种新密码:ADFGX密码体制。 该密码用手工加解密费时不多,符合战地密码的基本要求。 进行了两次加密,有两个密钥:一个是代替密钥(棋盘密钥)一个是换位密钥

RSA非对称密码算法

RSA非对称密码算法 1、RSA非对称密码算法简介 非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。另一方面,甲方可以使用乙方的公钥对机密信息进行签名后再发送给乙方;乙方再用自己的私匙对数据进行验签。甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要。 非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。 2、工作原理 1.A要向B发送信息,A和B都要产生一对用于加密和解密的公钥和私钥。 2.A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。 3.A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。 4.A将这个消息发给B(已经用B的公钥加密消息)。 5.B收到这个消息后,B用自己的私钥解密A的消息。其他所有收到这个报文的人都无法解密,因为只有B才有B的私钥。 3、主要功能 非对称加密体系不要求通信双方事先传递密钥或有任何约定就能完成保密通信,并且密钥管理方便,可实现防止假冒和抵赖,因此,更适合网络通信中的保密通信要求。

非对称加密算法的描述

一.非对称加密算法的描述 非对称加密算法: 非对称加密算法(asymmetric cryptographic algorithm)又名“公开密钥加密算法”,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。 算法介绍: asymmetric encoding algorithm 非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。 [非对称加密算法] 非对称加密算法: 另一方面,甲方可以使用自己的私密钥对机密信息进行加密后再发送给乙方;乙方再用甲方的公钥对加密后的信息进行解密。[1] 甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要。 非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。 算法起源: W.Diffie和M.Hellman 1976年在IEEE Trans.on Information刊物上发表了“ New Direction in Cryptography”文章,提出了“非对称密码体制即公开密钥密码体制”的概念,开创了密码学研究的新方向。 工作原理: 1.A要向B发送信息,A和B都要产生一对用于加密和解密的公钥和私钥。 2.A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。 3.A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。 4.A将这个消息发给B(已经用B的公钥加密消息)。

非对称加密算法有什么特点

非对称加密算法有什么特点 什么非对称加密算法非对称加密算法是一种密钥的保密方法。 非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。 另一方面,甲方可以使用乙方的公钥对机密信息进行签名后再发送给乙方;乙方再用自己的私匙对数据进行验签。 甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要。 非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。 工作原理1.A要向B发送信息,A和B都要产生一对用于加密和解密的公钥和私钥。 2.A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。 3.A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。 4.A将这个消息发给B(已经用B的公钥加密消息)。 5.B收到这个消息后,B用自己的私钥解密A的消息。其他所有收到这个报文的人都无法解密,因为只有B才有B的私钥。

非对称密钥加密技术

1.1 非对称密钥加密技术 1.1.1 实训目的 通过使用PGP软件实现数据加密和数字签名,理解非对称密钥加密的原理,学会对文件内容、电子邮件进行加密和数字签名,保障信息安全。 1.1.2 实训任务 客户公司的业务大部分都是靠电子邮件与合作伙伴进行交流的,但是发生过这样一起事故,当公司按照一个合作伙伴电子邮件的要求发了一批商品到对方,而对方却说商品型号发错了,经调查,公司确实是按电子邮件的要求发的货,而对方却不承认电子邮件中的商品型号。现在需要设置一个安全的电子邮件交流手段,不仅能对数据进行加密,还要能够防止数据被篡改,防止发送者抵赖。 1.1.3 背景知识 1. 非对称密钥加密 加密算法有两大类:对称密钥加密和非对称密钥加密。在对称密钥加密技术中,加密和解密使用的是同一个密钥,由于难于通过常规的渠道进行安全的密钥传递,例如不能通过电子邮件安全地传递密钥,因此在电子商务等领域对称密钥加密技术受到了很大的限制。 非对称密钥加密也叫公开密钥加密(Public Key Encryption),在加密和解密时使用不同的密钥,加密时使用的密钥和解密时使用的密钥形成一个密钥对,用其中的一个密钥加密的密文只能用另一个密钥解密,而不能由其它密钥(包括加密用的密钥)解密。通常一个密钥指定为“公钥”,可以对外公布,另一个则指定为“私钥”,只能由密钥持有人保管。 公开密钥加密技术解决了密钥的发布和管理问题,是目前商业加密通信的核心。使用公开密钥技术,进行数据通信的双方可以安全地确认对方身份和公开密钥,提供通信的可鉴别性。因此,公开密钥体制的建设是开展电子商务的前提。非对称密钥加密算法主要有RSA、DSA、DiffieHellman、PKCS、PGP等。 使用非对称密钥加密技术,可以实现下述目的: ?保密性:信息除发送方和接受方外不被其他人窃取; ?完整性:信息在传输过程中不被篡改; ?身份认证:接收方能够通过数字证书来确认发送方的身份; ?不可否认性:发送方对于自己发送的信息不能抵赖。 2. 消息摘要算法 消息摘要算法(Message Digest Algorithms)是采用单向Hash算法将消息进行处理,产生的具有固定长度的摘要值,无论消息的长度是多少,所产生的摘要的长度是相同的。产生摘要的过程不需要密钥,算法本身决定了摘要的产生。摘要算法必须满足下述三个条件:①无法从摘要反推出消息的内容;②无法控制消息的摘要等于某个特定的值;③无法找到具有同样摘要的消息。著名的摘要算法有MD5和SHA1。 3. 数据加密和数字签名 使用非对称密钥加密技术进行数据加密的原理是,发件人将待加密的报文(明文)用收件人的公钥进行加密,将加密后的报文(密文)发送给收件人,收件人用自己的私钥进行解密,从而得到明文,即原始的报文内容。收件人的私钥必须保管好,因为只有用收件人的私钥才能解密。 数字签名技术的原理是用发件人的私钥对明文进行加密,将密文发送给收件人,收件人用发件人的公钥进行解密,如果能够成功解密,则说明该报文确实是由公钥的原始持有人发送的,即证明是由该人签名认可的。但是在实际操作中,出于加解密运行效率等原因,并不

用非对称密码RSA算法加密文件

大连民族学院计算机学院 《网络安全》实验报告 学院:计算机科学与工程 题目:用非对称密码RSA算法加密文件 专业:网络工程 姓名:熊秋蕾 学号:2009083124 指导老师:姜楠

1、实验类型:设计型 2、实验目的 通过实际编程了解非对称密码算法RSA的加密和解密过程,加深对非对称密码算法的认识。 3、实验内容 (1)RSA算法分析。 (2)RSA算法编程。 4、实验原理 RSA密码体制描述: 1.密钥的生成 选择p,q,p,q为两个大的互异素数,计算n=p*q, ?(n)=(p-1)(q-1), 选择整数e使gcd(?(n),e)=1,(1

(3)实验结束后进行角色互换,再重复(1)中的实验,直到每个人都轮流当过三种角色。 7、实验步骤及注意事项 (1)利用奇数生成器,生成密钥对和私钥、公钥 java提供了密钥的生成器函数KeyPairGenerator;公钥保存在Skey_public.dat文件中,私钥保存在Skey_privat.dat package newpackge1; import java.io.*; import java.security.*; public class Skey_RSA{ public static void main(String args[]) throws Exception{ //创建密钥对生成器,指定加密和解密算法为RSA KeyPairGenerator kpg=KeyPairGenerator.getInstance("RSA"); //指定密钥的长度,初始化密钥对生成器 kpg.initialize(1024); //生成密钥对 KeyPair kp=kpg.genKeyPair(); //获取公钥 PublicKey pbkey=kp.getPublic(); //获取私钥 PrivateKey prkey=kp.getPrivate(); //保存公钥到文件 FileOutputStream f1=new FileOutputStream("Skey_public.dat"); ObjectOutputStream b1=new ObjectOutputStream(f1); b1.writeObject(pbkey); //保存私钥到文件 FileOutputStream f2=new FileOutputStream("Skey_privat.dat"); ObjectOutputStream b2=new ObjectOutputStream(f2); b2.writeObject(prkey); }} (2)加密过程,提取公钥,对字符串进行加密,将密文以字符串形式保存在文件中package newpackge1; import java.security.interfaces.*; import java.math.*;

非对称密码算法

实验1-3 非对称密码算法 RSA 一.实验目的 通过实际编程了解非对称密码算法RSA的加密和解密过程,加深对非对称密码算法的认识。 二.实验原理 前面讲的对称密码算法要求通信双方通过交换密钥实现使用同一个密钥,这在密钥管理、发布和安全性方面存在很多问题,而非对称密码算法解决了这个问题。 非对称密码算法是指一个加密系统的加密密钥和解密密钥是不相同,或者说不能从其中一个推导出另一个。在非对称密码算法的两个密钥中,一个是用于加密的密钥,它是可以公开的称为公钥;另一个是用于解密的密钥,是保密的,称为私钥。非对称密码算法解决了对称密码体制中密钥管理的难题,并提供了对信息发送人的身份进行验证的手段,是现代密码学的最重要的发明和进展。 RSA密码体制是目前为止最为成功的非对称密码算法,是在1977年由Rivest、Shamir 和Adleman提出的第一个比较完善的非对称密码算法。它的安全性是建立在“大数分解和素性检测”这个数论难题的基础上,即将两个大素数相乘在计算上容易实现,而将该乘积分解为两个大素数因子的计算量相当大。虽然的安全性还未能得到理论证明,但经过20多年的密码分析和攻击,迄今仍然被实践证明是安全的。 RSA算法描述如下: 1. 公钥 选择两个互异的大素数p和q,n是二者的乘积,即n = pq,使Φ(n)=(p-1)(q-1),Φ(n)为欧拉函数。随机选取正整数e,使其满足gcd(e, Φ(n))=1,即e和Φ(n)互质,则将(n,e)作为公钥。 2. 私钥 求出正数d,使其满足e×d=1 modΦ(n),则将(n,d)作为私钥。 3. 加密算法 对于明文M,由C=M e mod n ,得到密文C。 4.解密算法 对于密文C,由M=C d mod n,得到明文M。 如果窃密者获得了n,e和密文C,为了破解密文他必须计算出私钥d,为此需要先分解n为p和q。为了提高破解难度,达到更高的安全性,一般商业应用要求n的长度不小于1024bit,更重要的场合不小于2048bit。 三.实验环境 运行windows或linux操作系统的PC机,具有gcc(linux)、VC(windows)等C语言编译环境。 四.实验内容和步骤 1.为了加深对RSA算法,根据已知参数:p=3,q=11,M=2,手工计算公私钥,并对明文进行加密,然后对密文进行解密。 2.光盘中给出了一个可以进行RSA加密和解密的对话框程序RSATool,运行这个程序加密一段文字,了解RSA算法原理。尝试着加密一大段文字,记录程序的运行时间。使用DES算法加密相同的文字,比较两种算法加密的速度。 五.实验报告要求 e e mod n,记录程序 1.编写一个程序,随机选择三个较大的数x,,n然后计算x n 运行时间。实际中应用的素数为512bit,也就为1024bit。这样的大数在计算机上如何表示,如何进行运算,查阅资料给出简单说明。

对称密钥密码系统

对称密钥密码系统 2000多年以前,罗马国王Julius Caesar使用过现今被称为“凯撒密码”的加密算法。此加密算法其实是“移位密码”算法的一个特例。由于移位密码安全性不高,使用穷举爆力技术很容易将其破解,于是人们发明了“代换密码”。而移位密码其实是代换密码的一个子集。虽然代换密码安全性有所提高,使用穷举爆力技术较难破解,然而使用统计密码分析技术却可以很容易地破解代换密码。 到了几百年前,有人发明了“置换密码”有时也叫“换位密码”,之后现代密码技术开始出现。很多人把Claude Shannon誉为现代密码学之父,他提出了“扩散”和“混淆”来构造密码体制的基本要素。这种加密技术可以有效的挫败使用统计分析技术来破解密码。 1973年,Horst Feistel公开了他的“Feistel密码”,这是第一个体现密码之父Shannon思想的密码系统。目前,几乎所有的对称密码系统都使用了Feistel密码的设计特征。 1973年,(美)国家标准局(NBS),即现在的(美)国家标准技术研究所(NIST)公布了征求国家密码标准的提案,人们建议了许多的密码系统。 1977年7月,NBS经过对众多的密码系统进行评估后,采纳了IBM在20世纪60年代(1960s)研制出来的一个密码系统作为数据加密标准(DES),此系统是由Horst Feistel领导的一个研究组研制出来的。这个密码系统基于一个称为LUCIFER[Fic73]的密码系统。LUCIFER密码系统本质上是Feistel密码的一个推广。 1983年、1988年和1993年,DES再度被认定为(美)国家标准。 1997年,RSA实验室发布了一个以10000美元作为酬金的挑战:寻找一个前面带有一个已知明文块的密文的DES密钥。由Roche Verse牵头的一个工程小组动用了70000多台通过因特网连接起来的计算机系统,使用穷举爆力攻击程序大约花费96天的时间找到了正确的DES密钥。意识到DES已经快完成它的历史使命,NIST于1997年1月宣布了一项选择一个用作高级加密标准(AES)的候选算法的计划:这个新的标准的将取代DES。

公钥密码和对称密码

密码学中两种常见的密码算法为对称密码算法(单钥密码算法)和非对称密码算法(公钥密码算法)。 对称密码算法有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。在大多数对称算法中,加密解密密钥是相同的。这些算法也叫秘密密钥算法或单密钥算法,它要求发送者和接收者在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加密解密。只要通信需要保密,密钥就必须保密。对称算法的加密和解密表示为: Ek(M)=C Dk(C)=M 对称算法可分为两类。一次只对明文中的单个位(有时对字节)运算的算法称为序列算法或序列密码。另一类算法是对明文的一组位进行运算,这些位组称为分组,相应的算法称为分组算法或分组密码。现代计算机密码算法的典型分组长度为64位――这个长度大到足以防止分析破译,但又小到足以方便作用。 这种算法具有如下的特性: Dk(Ek(M))=M 常用的采用对称密码术的加密方案有5个组成部分(如图所示) l)明文:原始信息。 2)加密算法:以密钥为参数,对明文进行多种置换和转换的规则和步骤,变换结果为密文。 3)密钥:加密与解密算法的参数,直接影响对明文进行变换的结果。 4)密文:对明文进行变换的结果。 5)解密算法:加密算法的逆变换,以密文为输入、密钥为参数,变换结果为明文。 对称密码术的优点在于效率高(加/解密速度能达到数十兆/秒或更多),算法简单,系统开销小,适合加密大量数据。 尽管对称密码术有一些很好的特性,但它也存在着明显的缺陷,包括: l)进行安全通信前需要以安全方式进行密钥交换。这一步骤,在某种情况下是可行的,但在某些情况下会非常困难,甚至无法实现。 2)规模复杂。举例来说,A与B两人之间的密钥必须不同于A和C两人之间的

对称密钥密码

1引言 计算机的发展给人类带来了前所未有的便利,以计算机信息技术为手段的企业信息化建设,已成为企业必不可少的部分。计算机CAD技术高速度、高精度和高效等的优点,已经逐步取代手工设计,广泛应用于产品设计工作中。CAD图纸,在任何时候,都是一个企业的命脉。在使用SolidWorks等软件绘制图纸的过程中,作为企业是否经常会考虑:我们厂刚刚设计出来的新产品,怎么市场上别的牌子的产品也已经上市啦?技术人员的流动,是否会同时有图纸的流动?我们花了几十万买的图纸,怎么隔壁的那个厂子图纸和我们的一样呢?我们的光驱、软驱、U盘接口都封掉了,可是图纸怎么还是传出去啦?解决这些问题的一种有效方法就是使用现代密码技术,加密技术是保障信息安全的最基本的、最核心的技术措施。对CAD图纸进行加密应该是一种比较合适的安全保密措施 2密码技术 2.1基本概念 密码学是研究编制密码和破译密码的技术科学。密码在早期仅对文字或数码进行加、脱密变换,随着通信技术的发展,对语音、图像、数据等都可实施加、脱密变换。随着先进科学技术的应用,密码学已成为一门综合性的尖端技术科学。它与语言学、数学、电子学、声学、信息论、计算机科学等有着广泛而密切的联系。密码就是一组含有参数K的变换E。设已知信息M,通过变换E得到密文C。即C=EK(M)这个过程称之为加密,参数K称为密钥。

2.1.1传统密码学 自从有了人类社会就有了信息交流,特别是出现了战争,为了信息交流的安全,就出现了密码技术。从古代到16世纪末由于这个时期生产力低下,产生的许多密码体制都是可用纸笔或者简单的器械实现加密/解密的,这个时期的密码体制主要有两大类:一类是换位密码体制,另一类是代替密码体制。从二十世纪初到20世纪50年代末,为了适应密码通信的需要,密码设计者设计出了一些采用复杂的机械和电动机械设备实现信息加密/解密操作,他们代替了繁重的手工作业方式,在战争中发挥了重要的作用。转轮密码机是这一时期的杰出代表。 2.1.2现代密码学 对称密钥密码体制又称为单密钥密码体制或秘密密钥密码体制。这种密码体制的加密密钥和解密密钥相同,或者虽然不相同,但可由其中的任意一个可以和容易地推导出另一个。传统的密码学都是属于对称密钥密码体制。现在,在传统密码学地基础上对称密码体制也有了新地发展,像序列密码,分组密码,还有对称密钥密码体制的典型代表:数据加密标准DES和高级数据加密标准AES。非对称密钥密码体制又称为双密钥密码体制或公开密钥密码体制。这种密码体制的加密/解密操作分别使用两个不同地密钥,并且不可能由加密密钥推导出解密密钥。采用非对称密钥密码体制的每个用户都有一对相互关联而又彼此不同地密钥,使用其中的一个密钥加密的数据,不能使用该密钥自身进行解密,而只能使用对应的另一个密钥进行解密。在这一对密钥中,其中一个密钥称为公钥,它可以公开并通过公开的信道发给任何一位想与自己通信的另

非对称密钥体制问题研究

非对称密钥体制问题研究 【摘要】本文通过分析非对称密钥体制中存在的问题,提出了非对称密钥安全解决方案,为非对称密钥体制的研究提供一定的借鉴。 【关键词】非对称密钥问题安全解决方案 随着信息技术的广泛应用,信息安全已成为战争决定因素,加强信息安全管理、完善法规制度、创新技术手段,是确保信息保密性、真实性、完整性的重要途径。非对称密钥体制不仅解决了传统的信息加密技术中难以克服的密钥传送和保管问题,而且可以有效解决信息使用者的身份认证和数字签名问题。 一、非对称密钥体制 1、非对称密钥的定义。非对称密钥体制是相对传统体制而言的,传统密钥体制又称密钥体制,用于信息加密和解密的通信密钥完全相同,如果任何一方密钥泄露,都必须更换所有的密钥,因此管理的难度相对较大,而且制密的周期因管理的好坏非周期性变化。加密密钥公之于众,解密密钥只有解密人自己知道,分别成为公开密钥和私有密钥,用公开密钥加密的信息,只有用对应的私有密钥才能解开,而由公开密钥推出私有密钥却是极其困难的。 2、非对称密钥体

制架构。非对称密钥体制主要由认证中心、注册机构、数字证书库、密钥备份及恢复系统、证书撤销与更新系统、证书策略及认证组成[1],它还包括一系列技术、协议和标准,还包括策略、准则等管理的要求。通过这套体制来确保网上身份认证、传递信息的保密性、完整性和信息源的不可否认性,从而保证网上活动的安全可靠。3、非对称密钥运行机制。在非对称密钥体制中实现数据完整性服务的主要方法是数 字签名;数据保密性服务是发送方使用接收方的公开密钥加密,传递给对方,接收方使用私有密钥将密文解密;不可否认服务主要是客户端在向服务端发送信息时,要将信息用自己用于签名的私有密钥加密,服务端接收后由于用该用户的公开密钥就能把明文还原出来,所以用户无法否认他发送了该信息,这就保证了信息的不可否认性。 二、非对称密钥体制中存在的问题 1、非对称密钥体制中信任度呈现出递减。在非对称密钥运行?C制中由于根CA不可能直接面对数目庞大的申请主体[2],因此CA一般签发证书给分支机构,这样随着CA和RA的增加,在相互签署的信任链上,信任度是呈现出递减趋势的,这给整个非对称密钥的广泛应用带来了很大的局限性。比如:根CA下设二级域CA,二级域CA下设RA或三级域CA,但是在实践中就不能等同于根CA可以99%的信任RA或三级域CA,信任链上逐渐呈现出递减的趋势。

非对称密码算法RSA原理

非对称密钥加密算法-RSA 一.非对称密钥加密概述 前面讲述了对称密钥加密体制。使用对称密钥加密体制进行保密通信时,任意不同的两个用户之间都应该使用互不相同的密钥。这样,如果一个网络中有n个用户,他们之间彼此可能需要进行秘密通信,这时网络中将共需要n(n-1)/2个密钥(其中,每个用户都需要保存n-1个密钥),这样巨大的密钥量给密钥分配和管理带来了极大的困难。另外,随着计算机网络,特别是因特网的发展,网络上互不相识的用户可能需要进行保密的会话(例如,如果用户在进行电子商务活动时,需要保密的连接,这时的客户对象可能根本不是固定的对象)。最后,对称密钥加密机制难以解决签名验证问题。 非对称密钥加密也称为公开密钥加密,或者叫做公钥加密算法。使用公开密钥密码的每一个用户都分别拥有两个密钥:加密密钥和解密密钥,它们两者并不相同,并且由加密密钥得到解密密钥在计算机上是不可行的。每一个用户的加密密钥都是公开的(因此,加密密钥也称为公开密钥)。所有用户的公开密钥都将记录在作用类似于电话号码薄的密钥本上,而它可以被所有用户访问,这样每一个用户都可以得到其他所有用户的公开密钥。同时,每一个用户的解密密钥将由用户保存并严格保密(因此,解密密钥也称为私有密钥)。 非对称密码算法解决了对称密码体制中密钥管理的难题,并提供了对信息发送人的身份进行验证的手段,是现代密码学最重要的发明。公钥加密算法一般是将对密钥的求解转化为对数学上的困难问题的求解,例如RSA算法的安全性是建立在“大数分解和素性检测”这个数论难题的基础上,已知两个大素数a、b,求出a*b是容易计算的,而已知a*b,想知道其是哪两个大素数的乘积目前还没有好的计算方法,另外也有一些非对称加密算法(如ELGamal算法)的安全性是基于求“离散对数”这个数学难题上的。

1.对称加密体制的优缺点

1.对称加密体制的优缺点: 优点:加密速度快,保密度高。 缺点: 1.密钥是保密通信的关键,如何才能把密钥安全送到收信方是对称加密体制的突出问 题。 2. n个合作者,就需要n各不同的密钥,使得密钥的分发复杂。 3.通信双方必须统一密钥。 4.难以解决数字签名认证问题。不适合网络邮件加密需要。 DES是采用传统换位与置换的加密方法的分组密码系统。 2.非对称加密体制的优缺点: 缺点: 加密算法复杂,加密和解密的速度比较慢。 优点: 1.公钥加密技术与对称加密技术相比,其优势在于不需要共享通用的密钥。 2.公钥在传递和发布过程中即使被截获,由于没有与公钥相匹配的私钥, 截获的公钥对入侵者没有太大意义。 3.密钥少便于管理,N个用户通信只需要N对密钥。 4.密钥分配简单,加密密钥分发给用户,而解密密钥由用户自己保留。 3.数字签名和加密的区别 数字签名采用公开密钥算法实现,数字签名与通常的数据加密算法作用是不同的,它们的实现过程与使用的密钥不同。 数字签名使用的是发送方的密钥对,发送方用自己的私有密钥进行加密,接收方用发送方的公开密钥进行解密。数字签名是一个一对多关系:任何拥有发送方公开密钥得人都可验证数字签名的正确性。数字签名是为了证实信息确实是由某个用户发送,对网络中是否有人看到该信息并不关心。 数据加密使用的是接受方的密钥对,发送方用接收方的公开密钥进行加密,接受方用自己的私有密钥进行解密。加密是一个多对一的关系:任何知道接受方公开密钥的人都可以向接收方发送加密信息,只有拥有接收方私有密钥的人才能对信息解密。 一个用户通常有两个密钥对,一个用来对数字签名进行加密解密,一个用来对私密密钥进行加密解密。 4.RSA算法中,素数p=7,q=11,加密密钥e=7,计算解密密钥d 解:N=pq=7*11=77 φ(n)=(p-1)(q-1)=6*10=60 根据公式d× e ≡ 1 (mod (p-1)(q-1)) 又e=7,所以7*d≡ 1 (mod 60)。。即7d mod 60 = 1。 7x43=301 301除以6刚好余1. 所以d=43 5.已知RSA算法中的两个素数P=11,Q=17,公钥部分E=13,明文M=9, 请计算出私钥部分的D和密文C的值是多少?(c=25 d=37)

非对称密钥技术

非对称密钥技术 1976年,美国学者Dime和Henman为解决信息公开传送和密钥管理问题,提出一种新的密钥交换协议,允许在不安全的媒体上的通讯双方交换信息,安全地达成一致的密钥,这就是“公开密钥系统”。相对于“对称加密算法”这种方法也叫做“非对称加密算法”。 与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 贸易方利用该非对称加密算法实现机密信息交换的基本过程是:贸易方甲生成一对密钥并将其中的一把作为公用密钥向其他贸易方公开;得到该公用密钥的贸易方乙使用该密钥对机密信息进行加密后再发送给贸易方甲;贸易方甲再用自己保存的另一把专用密钥对加密后的信息进行解密。贸易方甲只能用其专用密钥解密由其公用密钥加密后的任何信息。 非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要,但加密和解密花费时间长、速度慢,它不适合于对文件加密而只适用于对少量数据进行加密 在微软的Window NT的安全性体系结构中,公开密钥系统主要用于对私有密钥的加密过程。每个用户如果想要对数据进行加密,都需要生成一对自己的密钥对(keypair)。密钥对中的公开密钥和非对称加密解密算法是公开的,但私有密钥则应该由密钥的主人妥善保管。 使用公开密钥对文件进行加密传输的实际过程包括四步: (1)发送方生成一个自己的私有密钥并用接收方的公开密钥对自己的私有密钥进行加密,然后通过网络传输到接收方; (2)发送方对需要传输的文件用自己的私有密钥进行加密,然后通过网络把加密后的文件传输到接收方; (3)接收方用自己的公开密钥进行解密后得到发送方的私有密钥; (4)接受方用发送方的私有密钥对文件进行解密得到文件的明文形式。 因为只有接收方才拥有自己的公开密钥,所以即使其他人得到了经过加密的发送方的私有密钥,也因为无法进行解密而保证了私有密钥的安全性,从而也保证了传输文件的安全性。实际上,上述在文件传输过程中实现了两个加密解密过程:文件本身的加密和解密与私有密钥的加密解密,这分别通过私有密钥和公开密钥来实现。 https://www.doczj.com/doc/6414407339.html,/detail_frame.asp?col=1333&id=49&isFromDetail=1 非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。

相关主题
文本预览
相关文档 最新文档