密码学简介及加密算法介绍

密码学简介

密码学是一门年轻又古老的学科。它用于保护军事和外交通信可以追溯到几千年前。人类有记载的通信密码于公元前400年。古希腊人发明了置换密码。1881年出现了世界上的第一个电话保密专利。电报和无线电的发明使密码学成为通信领域中不可回避的研究课题。

从二战初期德国军方启用"恩尼格玛"密码机到太平洋战争中美军破译了 日本海军的密码机,可以说密码学在战争中起着非常重要的作用。随着信息时代的不断发展,密码学的作用已经不仅仅局限于军事、政治和外交方面,而是悄悄地融入到普通百姓的日常生活中,如网络银行、电子购物、电子邮件等等,都需要密码学知识来保护人们的个人信息和隐私。

密码学的发展历程大致经历了三个阶段:古代加密方法(手工阶段)、古典密码(机械阶段)和近代密码(计算机阶段)。

古代加密方法大约起源于公元440年古希腊战争中的隐写术。而后公元前400年斯巴达人发明了"塞塔式密码"。这段时间的密码技术可以说是一种艺术,而不是一门科学,使用的密码体制为古典密码体制,主要应用于军事、政治和外交。

古典密码的加密方法一般是文字置换,使用手工或者机械变换的方法来实现。古典密码系统已经初步体现出近代密码系统的雏形,比起古代加密方法更复杂但变化较小。最早的古典密码体制主要代表有单表代换密码体制和多表代换密码体制。

1949年Shannon发表的《保密系统的信息理论》一文为私钥密码系统建立了理论基础,从此密码学成为了一门科学。该学科最完整的非技术性著作是Kahn的《破译者》。二十世纪六十年代以来计算机和通信系统的普及,带动了个人对数字信息保护及各种安全服务的需求。IBM的Feistel在七十年代初期开始其工作,到 1977年达到顶点:其研究成果被采纳成为加密非分类信息的美国联邦信息处理标准,即数据加密标准DES,历史上最著名的密码体制。然而,随着计算机硬件的发展及计算能力的提 高,DES已经显得不再安全。1998年12 月美国决定不再使用DES。美国国家标准技术研究所(NIST)现在已经启用了新的加密标准AES,它选用的算法是比利时的研究成果 "Rijndael"。以上这两个阶段所使用的密码体制都称为是对称密码体制,因为这些体制中,加秘密钥和解秘密钥都是相同的,而进入密码学发展的第三个 阶段,则出现了非对称密码体制——公钥密码体制。公钥密码体制的诞生为数字签名的研究和应用开辟了一条广阔的道路。目前数字签名的研究内容非常丰富,包括普通签名和特殊签名。特殊签名有盲签名,代理签名,群签名,不可否认签名,公平盲签名,门限签名等。计算机和电子学时代的到来给密码设计者带来了前所未有的自由,他们可以轻易地摆脱原先用铅笔和纸进行手工设计时易犯的错误,也不用再面对用电子机械方式实现的密码机的高额费用。总之,利用电子计算机可以设计出更为复杂的密码系统。

密码学简介

加密算法介绍

现有的密码体制千千万万,但它们都可以分为单钥密码(对称密码体制)如DES密码, 和公钥秘密(非对称加密体制)如RSA密码。

对称加密(也叫私钥加密)指的是加密和解密使用相同密钥的加密算法。有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而在大多数的对称算法中,加密密钥和解密密钥是相同的,所以也称这种加密算法为秘密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信性至关重要。常用的对称加密有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等算法。

数据加密算法DES(Data Encryption Standard)是一种对称加密算法,很可能是使用最广泛的密钥系统,特别是在保护金融数据的安全中,最初开发的DEA是嵌入硬件中的。通常自动取款机(Automated Teller Machine, ATM)都使用DEA。它的特点是速度较快,适合用于加密大量数据的场合。

DES 的常见变体是三重 DES(3DES或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法,也就是使用 168 位的密钥对资料进行三次加密的一种机制;它通常(但非始终)提供极其强大的安全性。如果三个 56 位的子元素都相同,则三重 DES 向后兼容 DES。

高级加密标准AES(Advanced Encryption Standard),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。由于DES使用56位密钥,比较容易破解,DES近些年来逐渐被AES替代。AES可以使用128、192和256位密钥并且用128位分组加密和解密数据。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准AES已然成为对称密钥加密中最流行的算法之一。

非对称加密算法(asymmetric cryptographic algorithm)又名"公开密钥加密算法",非对称加密算法需要两非对称加密算法非对称加密算法图册个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。常见得非对称加密算法包括DH(Diffie-Hellman)、RSA、EL Gamal、ECC、DSA等。

Diffie-Hellman算法(D-H算法),密钥一致协议。是由公开密钥密码体制的奠基人Whitfield Diffie与Martin Hellman在1976年提出了一个奇妙的密钥交换协议,称为Diffie-Hellman密钥交换协议/算法(Diffie-Hellman Key Exchange/Agreement Algorithm)。这个机制的巧妙在于需要安全通信的双方可以用这个方法确定对称密钥。简单的说就是允许两名用户在公开媒体上交换信息以生成"一致"的、可以共享的密钥。即由甲方产出一对密钥(公钥、私钥),乙方依照甲方公钥产生乙方密钥对(公钥、私钥)。以此作为数据传输保密基础,同时双方使用同一种对称加密算法构建SecretKey对数据加密。如此双方便可以在互通了SecretKey算法之后,公开双方自己的公钥,使用对方的公钥和刚才产生的私钥加密数据,而用对方的公钥和自己的私钥对数据解密。

RSA公钥加密算法是1977年由罗纳德•李维斯特(Ron Rivest)、阿迪•萨莫尔(Adi Shamir)和伦纳德•阿德曼(Leonard Adleman)一起提出的。它是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。但在分布式计算和量子计算机理论日趋成熟的今天,RSA加密安全性受到了挑战。

DSA(Digital Signature Algorithm,数字签名算法,用作数字签名标准的一部分),它是另一种公开密钥算法,它不能用作加密,只用作数字签名。DSA使用公开密钥,为接受 者验证数据的完整性和数据发送者的身份。它也可用于由第三方去确定签名和所签数据的真实性。DSA算法的安全性基于解离散对数的困难性,这类签字标准具有 较大的兼容性和适用性,成为网络安全体系的基本构件之一。

同RSA一样,ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)也属于公开密钥算法。1985年N.Koblitz和Miller提出将椭圆曲线用于密码算法,根据是有限域上的椭圆曲线上的点群中的离散对数问题ECDLP。ECDLP是比因子分解问题更难的问题,它是指数级的难度。椭圆曲线上离散对数问题ECDLP定义如下:给定素数p和椭圆曲线E,对Q=kP,在已知P,Q 的情况下求出小于p的正整数k。可以证明由k和P计算Q比较容易,而由Q和P计算k则比较困难。

将椭圆曲线中的加法运算与离散对数中的模乘运算相对应,将椭圆曲线中的乘法运算与离散对数中的模幂运算相对应,我们就可以建立基于椭圆曲线的对应的密码体制。例如,对应Diffie-Hellman公钥系统,我们可以通过如下方式在椭圆曲线上予以实现:在E上选取生成元P,要求由P产生的群 元素足够多,通信双方A和B分别选取a和b,a和b 予以保密,但将aP和bP公开,A和B间通信用的密钥为abP,这是第三者无法得知的。

对应ELGamal密码系统可以采用如下的方式在椭圆曲线上予以实现:

将明文m嵌入到E上Pm点,选一点B∈E,每一用户都选一整数a,0<a<N,N为阶数已知,a保密,aB公开。欲向A送m,可送去下 面一对数偶:[kB,Pm+k(aAB)],k是随机产生的整数。A可以从kB求得k(aAB)。通过:Pm+k(aAB)- k(aAB)=Pm恢复Pm。

同样对应DSA,考虑如下等式:

K=kG [其中 K,G为Ep(a,b)上的点,k为小于n(n是点G的阶)的整数] 不难发现,给定k和G,根据加法法则,计算K很容易;但给定K和G,求k就相对困难了。

这就是椭圆曲线加密算法采用的难题。我们把点G称为基点(base point),k(k<n,n为基点G的阶)称为私有密钥(privte key),K称为公开密钥(public key)。

相关案例

联系我们

电  话:010-62579971

技术支持QQ:3045601746

邮  箱:support@drmfab.cn

地  址:北京市海淀区中关村善缘街1号立方庭

微信公众号 关注微信公众号