您的位置:首页 > 理论基础 > 计算机网络

计算机网络与通信技术-数据加密

2013-01-01 22:04 393 查看
数据加密

加密体制:对称密钥体制(DES)和非对称密钥体制

一.Elgamal加密算法(基于离散对数的加密方法)

1.公钥与密钥的产生

选择一个素数P(很大)和一个整数g,再秘密选择一个整数x(私钥),其中需要g和x均小于P.

计算:y=g^x mod P

则y为公钥(加密密钥),x为私钥(解密密钥)。

公开: P, g,y

2.加密:

设明文M,(M看成一个整数且M<P),发送方选择一个随机数k(k与P-1互素),

计算: a=g^k mod P

b=y^k * M mod P

则(a , b)为密文(注:密文长度正好是明文的两倍)。

3.解密:

M=b/a^x mod P

例:

Alice Bob

Pka (Alice的公钥) Pkb

Ska (Alice的私钥) Skb

1.A用Pkb加密——>B用Skb解密。

2.A用Ska签名——>B用Pka验证。

(加密要用对方的公钥,签名要用自己的私钥)

二.数字签名

满足三个条件:

能够核实签名者;签名者不能抵赖;不能篡改签名报文。

基本原理:



三.RSA数字签名

设:签名者分别有一个公钥e和私钥d,n = p*q(其中p和q为两个很大的素数),H为哈希函数,m为代签的报文。

Hash函数(单向函数),把任意长度的输入变成固定长度的输出,产生消息摘要

1)产生签名 签名者计算 M = H(m),S = M^d mod n,则(M,S)为m的签名。 将(m,S )发送给验证者(接收方)

2)验证签名 M' = S^e mod n M = H(m) 若M' = M,则签名有效,否则无效。

分析:①Trudy若伪造签名:

A:则必须知道d

B:将m->m',则H(m) = H(m'),但H发生冲突的概率很小。

② 哈希函数H的引入,减少了运算量。(但同时安全性相应降低)。

四.Elgamal 数字签名

设签名者的私钥为x,相应的公钥为y = g^x mod p

1)产生签名 签名者选择一随机数k(k<p且k与p-1互素)

计算: r = g^k mod p

解同余方程:g^m≡ y^r *r^s mod p (1)

gm ≡g^(xr)* g^(ks) mod p (2)

m≡ xr + ks mod (p-1) (3)

得到 S 将(m , r , s )发送给验证者。

2)验证签名 验证者验证方程:g^m ≡ y^r*r^s mod p

若上式成立,则签名有效,否则无效。

3)安全性分析 Trudy 试图恢复签名者的私钥x

方式1:Trudy截取L个签名报文(mi,ri,si)i = 1.2.......L。由此根据(3)式,将得到由L个方程组成的方程组:

M1 ≡ xr1 + k1s1 mod (p-1)

M2 ≡ xr2 + k2s2 mod (p-1)

。。。。。。。。。。。。。。。。。。。。。。。。。。

ML ≡ xrL + kLsL mod (p-1)

上式方程组中只有(x , k1 , k2 , ....kL)为未知数,由于每次签名都选择不同的ki,所以上述方程组中有L个方程组成,却包含L+1个未知数,无论如何都解不出x的值,故此攻击方式无效。

(故Elgamal尽量选择不同的随机数k,避免短时间内使用重复的k值。)

方式二:Trudy试图根据y=g^x mod P求解x。会遇到离散对数求解的困难。

方式三:Trudy试图假冒签名,给定m,Trudy试图找到r和s,使其满足签名验证方程

g^m ≡ y^r r^s mod p 如果随即选择k,计算出r = g^k mod p,再由g^m≡ y^r *r^s mod p 计算S,但这等价于离散对数求解问题。

g^m≡y^r r^s mod p A≡B r^s mod p AB-1≡ r^s mod p

如果先固定S,再计算下式求r

A≡ r^s*y^r mod p

但其难度不低于离散对数求解,若同时求r和s,但依照目前的研究成果,尚无有效法。

五 身份认证

1.含义:⑴ 仅证实通信连接双方的真实身份,而不与其后要传输的数据联系,其安全性有限;⑵ 不仅证实通信双方的真实身份,并为后继传输数据建立了安全通道,具有更高安全性。

2.简单的身份认证协议:

设Alice和Bob共享一个密钥KAB



反射攻击:利用截取对方的有用信息来攻击对方



挫败反射攻击的方法:Alice和Bob分别从不同的整数集合中选择随机数,例如Alice选择奇数,Bob选择偶数

本协议没有考虑到如何产生和管理共享会话密钥:1)每个用户产生和管理n-1个会话密钥2)难以做到“一次一密“

3.基于公钥证书的认证协议:由公钥和私钥产生共享会话密钥

基于公钥的认证:PKI(公钥基础设施)通过颁发离线公钥证书(即数字证书)



CA:证书颁发机构(可信的第三者)

A、B:表示两个用户Alice、Bob

1.申请公钥证书:用户提交自己的标识、公钥、用户名及身份等信息。以及自己的公钥(也可由CA产生)

2.CA产生和颁发公钥证书(数字证书):

核实用户的真实身份;产生公钥证书;通过安全信道颁发:

1)直接发给Alice 2)存放在证书库中

3.Bob认证Alice:

Alice将公钥证书发送给B,B用CA的公钥验证证书,同理Alice也可以认证Bob。

4.产生会话密钥:



说明:1)产生Kab(或者命名Ks)是为了节省运算量 2)协议不是唯一的

1.RSA算法

(1)秘密的选取两个大素数P和Q(>=2^512);

(2)计算n=p*q和z=(p-1)(q-1);(欧拉方程)

(3)秘密地选择一个与z互素的数d作为解密私钥(密钥)

(4)解同余方程(e*d)mod z =1;解得e作为加密密钥(公钥),公开(e,n)

(5)加密:c = P^e mod n

(6)解密:P = c^d mod n

P为明文,C为密文

2.椭圆曲线密钥算法(ECC)

(1)数学定义:由威尔斯特拉斯方程:y^2+axy+by=x^3+cx^2+dx+e所确定的平面曲线称为椭圆曲线(关于x轴对称)称为椭圆曲线E;满足上述方程的(x,y)称为椭圆上的点,则在E上还定义一个无穷点(零点)0;

对有限域Fp,可通过一系列变换将上述方程简化为y^2=x^3+ax+b

ECC感兴趣的是模P椭圆群,即给定一个素数P,选择来年规格小于P的非负整数a和b,使得(4a^2+27b^2)mod p != 0

因此对ECC来讲,椭圆曲线的参数可由多元偶(a,b,p)来确定

设有限域Fp上的E:y^2=x^3+ax+b mod p,P、Q为E上的两点,L是P、Q的连线。R为L与E相交的另一点,L'是R与无穷点0的连线(即与y轴平行),则L'与E的另一个交点S称为P与Q的点加,记作S=P+Q;

K个P的点加称为k与P的点积k*P=P+p+……+P

设m为大于1的整数,若x^2=n mod m可解,则称n为对m的平方剩余,否则为n对m的非平方剩余

设P、Q为E的任意两点,L为P、Q的连线,L与E相交于另一点R,则

P+0=P P+Q+R=0 P+Q=Q+R (P+Q)+R=P+(Q+R)



(1)ECC算法

1)确定某一椭圆曲线E y^2=x^2+ax+b mod p,其中P>2^130,4a^3+27b^2 mod p != 0,a,b均小于P,再从E中选取一个基点G,选择G的准则:nG=0,最小n值是一个足够大的素数。选定的参数(P,a,b,G)保存在一个公开的文件中。

2)私钥和公钥以及共享密钥的产生

公钥为E上点,私钥为整数,G公开

用户A随机选择一个整数Sa作为自己的私钥,计算Pa=Sa*G(Pa为A的公钥也就是加密密钥)

用户B用类似的方法产生自己的私钥和公钥Sb和Pb

用户A产生共享会话密钥Ka=SaPb

用户B产生共享会话密钥Kb=SbPa

显然Ka=SaPb=Sa(Sb*G)=Sb(Sa*G)=SbPa=Kb

3)编码:将明文映射到椭圆曲线上,在对明文m加密前需要将m映射到E上,如果m较长,可分段处理。注意:编码方法不唯一;编码不保密

下面介绍一种编码方法:

将m看成二进制整数,使得0<=m<=[P/256]-1 (256的大小可调整)

即将m映射到Pm(x,y),使得

256m<=x<=256(m+1);Pm(x,y)属于Fp,满足平方剩余的点

一般情况下:y^2=x^3+ax+b mod p是非平方剩余的概率很小

4)加密处理:c = Pm(x,y) + SaPb

5)解密处理:Pm(x,y) = c - SbPa

6)解码:m=[x/256]

3.身份认证协议:大嘴蛙协议 Borrows



KDC:可信的密钥分发中心

Ka:Alice与KDC的共享密钥

Kb:Bob与KDC的共享密钥

Ks:Alice挑选的与Bob的会话密钥

分析:

1)每个用户仅需保存和管理一个会话密钥

2)Ks可以做到“一次一密”,Ka,Kb不能做到“一次一密”

3)容易受到“重放攻击”
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: