当前位置:文档之家› 非对称密钥加密技术

非对称密钥加密技术

非对称密钥加密技术
非对称密钥加密技术

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. 数据加密和数字签名

使用非对称密钥加密技术进行数据加密的原理是,发件人将待加密的报文(明文)用收件人的公钥进行加密,将加密后的报文(密文)发送给收件人,收件人用自己的私钥进行解密,从而得到明文,即原始的报文内容。收件人的私钥必须保管好,因为只有用收件人的私钥才能解密。

数字签名技术的原理是用发件人的私钥对明文进行加密,将密文发送给收件人,收件人用发件人的公钥进行解密,如果能够成功解密,则说明该报文确实是由公钥的原始持有人发送的,即证明是由该人签名认可的。但是在实际操作中,出于加解密运行效率等原因,并不

是直接对明文加密,而是对明文进行摘要运算(md5或sha1),对摘要进行加密,形成一个数字化的签名文本,附加在明文之后,收件人可以利用签名文本对明文进行验证,从而确认明文是由发件人签名,并且内容没有被篡改。

1.1.4 实训材料

每组计算机二台。PGP 8.1软件及汉化包。

1.1.5 实训步骤

本实训由每组二人合作完成,每人有一台计算机,各自安装PGP 8.1,并创建自己的公钥私钥对,然后互相交换公钥。为方便起见,本实训中称此二人为张三和李四。

1. 安装

安装PGP 8.1版,安装过程中会提问是否已经拥有PGP密钥对,初次安装回答“No, I’m a New User”(错误!未找到引用源。),在提问选择安装插件组件时,根据需要选择,例如,如果希望在Microsoft Outlook中使用加密签名功能,则选中对应的选项(错误!未找到引用源。)。

图1.1-1 安装时选择“新用户”图1.1-2 安装时为PGP选择插件组件

2. 初始设置

安装结束后,必须重启动系统。重新开机后,如果在安装时回答了“No, I’m a New User”时,会出现PGP初始化设置窗口,为用户创建一对密钥并用口令保护密钥中的私钥(错误!未找到引用源。和错误!未找到引用源。)。

图1.1-3 创建PGP密钥对图1.1-4 保护私钥的口令短语

每组中各人使用自己的姓名(例如张三和李四)输入姓名、电子邮件地址、口令短语(即密码,至少8个字符长,用于保护私钥),然后接受默认值,直到完成。

此时,PGP 已经根据输入的姓名、电子邮件地址生成了一对公钥私

钥。公钥私钥对在PGP 中称为密钥环(Keyring )。

3. 密钥管理

安装后,在系统托盘上可以看到PGP

的图标。点击该图标出现

PGP 的菜单(见错误!未找到引用源。),通过【选项】菜单,可以对PGP

进行配置。

从错误!未找到引用源。中可以看到,密钥环文件保存在

C:\Documents and Settings\Administrator\My Documents\PGP\目录下,公

钥文件是pubring.pkr ,私钥文件是secring.skr 。公钥文件和私钥文件都是二进制文件。

提示:用户的密钥是极其重要的文件,如果丢失了密钥环,将导致无法解密已被加密的文件,因此,要将公钥和私钥保存到光盘等永久性存储介质上,并保存好口令短语(密码),长期保存(数年以上)。

(1) 新建密钥环

前一步骤是针对新用户,在安装后重启动

操作系统时创建了一个密钥环(内含公钥私钥

对),当需要时还可以创建新的密钥环。通常

情况下只需拥有一个自己的密钥环。

从系统托盘的PGP 图标打开PGPkeys ,窗

口中显示的是PGP 密钥环。从菜单【密钥】→

【新建密钥】打开【PGP 密钥生成向导】,过

程与前述相同,创建结束后,窗口中将显示二

个用户的密钥环(本实训每人只需创建一个密

钥环)。

(2) 发布自己的公钥

现在每组中各人都有自己的密钥环,但是还需要将自己的公钥传给同组的对方,以便今后的通信。从系统托盘中打开PGPkeys ,窗口中显示的是PGP 密钥环。有三种办法可以发布公钥,如果有多个密钥环,应先选中要操作的密钥环(错误!未找到引用源。中选中“张三”):

1) 导出为文本文件:从菜单中【密钥】→【导出】(错误!未找到引用源。),可将PGP 密钥环中的公钥导出为ascii 文本文件,默认的文件扩展名为.asc ,可用记事本打开阅读。可将该文件直接复制给联系人(如通过U 盘等);

2) 通过电子邮件发送:选择菜单【服务器】→【邮件接收人】可以将公钥通过电子邮件发送给联系人(错误!未找到引用源。);

3) 发送到互联网上的公用密钥服务器(keyserver ):这是最方便的办法,选择菜单【服务器】→【域服务器】(错误!未找到引用源。),PGP 会自动将公钥在互联网上发布。

图1.1-7 导出密钥、导入密钥

图1.1-8 发布公钥 (3) 保护自己的私钥

私钥是非常重要的文件,即不能丢失,又不能被他人获得,有两件事是必须做的: ? 备份:可以将私钥和公钥文件复制到光盘上。

图1.1-5 PGP 菜单

图1.1-6 密钥环文件

? 加口令保护:在生成PGP 密钥环时已经使用口令对私钥进行加密保护,通过

PGPkeys 工具可以修改保护口令。

(4) 收藏联系人的公钥

当通过U 盘或电子邮件收到他人的公

钥后(以ascii 文本文件形式保存的公钥),

可以通过PGPkeys 工具导入到PGP 中,用

于今后的通讯。

方法是从菜单中【密钥】→【导入】(错

误!未找到引用源。),然后选择联系人的公

钥文件(后缀asc ),导入后的密钥也称为密

钥环,但其中只有公钥(错误!未找到引用

源。)。 4. 加密和解密数据

进行数据加密的首要条件是必须持有接收者的公钥,发送者必须确认接收者就是该公钥的原始拥有人,加密文件只能发送给公钥的原始持有人。通过前述步骤,用户张三拥有了自己的密钥环,以及李四的密钥环(只有公钥,错误!未找到引用源。),用户李四拥有自己的密钥环,以及张三的密钥环(只有公钥)。

数据的加密是使用接收者的公钥对数据进行加密,数据的解密是使用接收者的私钥(只有接收者本人拥有,并有口令保护)对数据进行解密,这就是非对称密钥加密的原理。用PGP 加密和解密数据有多种途径,本实训介绍最简单直观的方法。

(1) 加密数据

下面的例子说明“张三”将一段文字加密后传给“李四”的过程。在“张三”的计算机上,打开任何一个字处理软件,如Word 或记事本,输入一些文字,例如: 这是双方商议的合同内容,我方确认的条款如下:

1、第一条:

上述内容核对无误。

对数据进行加密时,必须使用数据接收者的公钥(即李四的公钥)对数据进行加密。方法是在保留光标在输入窗口的同时,从系统托盘中PGP 的图标中选择【当前窗口】→【加密】(错误!未找到引用源。),在弹出的【密钥选择对话框】中有两个公钥,一个是自己的,一个是对方“李四”的,自己的名字默认已在接收人栏目,将数据接收者李四拖入接收人栏目,然后按【确定】,当前窗口的数据即被加密。

一个加密文件可以有多个接收人,每个接收人都可以用自己的私钥解密该文件。发送人默认是接收人之一,这是为了防止以后发送人再也无法解密自己发送的文件。如果张三将自己的名字从接收人栏目中删除(错误!

未找到引用源。),这样加密后的文件连张三本人也无法解密,而只有李四能够解密。

图1.1-10 加密数据

图1.1-11 选择加密用公钥 加密后的内容是ascii 文本形式(错误!未找到引用源。)

,但是不可读。加密的内容由“-----BEGIN PGP MESSAGE-----”开始,以“-----END PGP MESSAGE-----”结束。

图1.1-9 用户张三导入李四的公钥

图1.1-12 加密后信件的内容图1.1-13 解密后的内容张三将数据加密后,可以用任何方式(电子邮件、U盘复制)将文件发送给李四。

(2) 解密数据

当收到加密的数据后,因为数据是用接收者的公钥加密的,必须用接收者的私钥进行解密。方法与加密基本相同,下面说明李四将收到的密文解密的过程。

在“李四”的计算机上用记事本或其它字处理软件打开加密后的数据,在保留光标在该窗口的同时,从系统托盘中PGP的图标中选择【当前窗口】→【解密&校验】,这时只有一个私钥,所以没有其它选择,只能选择自己的私钥,在输入私钥的保护口令后,数据被解密,解密后的数据显示在【文本查看器】窗口中(错误!未找到引用源。)。

解密需要二个条件:一是接收者的私钥,二是该私钥的保护口令。

5. 数字签名及验证

进行数字签名的首要条件是接收者拥有发送者的公钥,并且接收者认可发送者的公钥。数字签名是用发送者的私钥对数据进行处理,它不对数据加密,而是根据数据的内容形成一个摘要,然后对摘要进行加密(即签名),该签名摘要保证了数据的不可抵赖性和不可篡改性,即证明了数据是由该私钥的拥有者发出的,并且发出以后没有被有意或无意的篡改过。接收者只要用发送者的公私即可对其进行验证。

(1) 数字签名

下面李四将发出一份签名的文件给张三。在李四的计算机上编辑文件,然后进行签名,过程与加密相似,从系统托盘中PGP的图标中选择【当前窗口】→【签名】,签名用自己的私钥,因此还需要输入密钥口令。签名后的文本由两部分组成,第一部分是文件原来的内容,第二部分是签名,二部分由“-----BEGIN PGP SIGNA TURE-----”分隔,见错误!未找到引用源。。

(2) 数字签名的验证

用PGP对签名后的数据进行验证的方法与解密的过程完全相同,在“张三”的计算机上打开签名后的文件,从系统托盘中PGP的图标中选择【当前窗口】→【解密&校验】,只是结果显示有些不同,显示中带有“有效签名”的文字说明、签名人的名字、签名的时间等信息(见错误!未找到引用源。)。其中“来自无效的密钥”表示该密钥未被验证。

图1.1-14 签名后的内容图1.1-15 验证签名

应该注意对签名后的文本不能作任何改动,即使是删除一个空格或加入一个空行,也会

引起签名的失效,由此可以保证文件的不可篡改性。错误!未找到引用源。显示删除一个空格后(文件中“李四”和“签名”之间的空格)的无效签名。

6. 发送签名并加密的邮件

不论是使用Outlook Express 还是使用Web 邮件

(如google 邮件),都可以象上述操作那样实现邮件

的加密和签名,操作方法基本一致,错误!未找到

引用源。和错误!未找到引用源。是对邮件内容签

名并加密前后的结果。

图1.1-17 邮件明文

图1.1-18 签名和加密后的邮件 1.1.6 实训小结

非对称密钥加密技术对电子商务具有极其重大的意义,其原理是利用一对公钥私钥密码对,用公钥加密的数据只能用私钥解密,反之,用私钥加密的数据只能用公钥解密。私钥由持有人拥有,公钥则可对外公布。

当需要发送加密的数据给接收者,用接收者的公钥加密,只有接收者用其私钥才能解密。 当需要发送签名的数据给接收者,用发送者的私钥加密,任何接收者都能用发送者的公钥来证实是该发送者发送的,并且没有被篡改。

图1.1-16 无效签名

密码学对称加密算法

对称加密算法 一、网络安全 1.网络安全 (1) 网络的安全问题:有以下四个方面 A. 端-端的安全问题,主要指用户(包括代理)之间的加密、鉴别和数据完整性维护。 B. 端系统的安全问题,主要涉及防火墙技术 C. 安全服务质量问题,主要指如何保护合法用户的带宽,防止用户非法占用带宽。 D. 安全的网络基础设施,主要涉及路由器、DNS服务器,以及网络控制信息和管理信息的安全问题。 (2)网络的安全服务:有以下五个方面 A.身份认证:这是考虑到在网络的应用环境下,验证身份的双方一般是通过网络而非直接交互,所以传统的验证手段如根据对方的指纹等方法就无法应用。同时大量的黑客随时都可能尝试向网络渗透,截获合法用户的口令并冒充顶替,以合法身份入网。所以应该提供一种安全可靠的身份认证的手段。 B.授权控制:授权控制是控制不同用户对信息资源的访问权限。授权控制是以身份认证为基础的。通过给不同用户的提供严格的不同层次和不同程度的权限,同时结合可靠的身份认机制,可以从很大程度上减少非法入侵事件发生的机会。 C.数据加密:数据加密技术顾名思义。在互联网上应用加密技术来保证信息交换的可靠性已经的到了人们普遍的认可,已经进入了应用阶段。目前的加密技术主要有两大类:一类是基于对称密钥加密的算法,另一类是基于非对称密钥加密的算法。它们都已经达到了一个很高的强度,同时加密算法在理论上也已经相当的成熟,形成了一门独立的学科。而从应用方式上,一般分成软件加密和硬件加密。前者成本低而且实用灵活,更换也方便;而后者加密效率高,本身安全性高。在应用中,可以根据不同的需要来进行选择。 D.数据完整性:数据完整性是指通过网上传输的数据应该防止被修改、删除、插入、替换或重发,以保证合法用户接收和使用该数据的真实性。 E.防止否认:在网上传输数据时,网络应提供两种防止否认的机制:一是防止发送方否认自己发送过的信息,而谎称对方收到的信息是别人冒名或篡改过的;二是防止接收方否认自己收到过信息。利用非对称加密技术可以很好的实现第一个否认机制。 二、加密技术 (1) 加密技术的产生和发展 A. 古代,目前记录的比较早的是一个在公元前2世纪,由一个希腊人提出来的,26个字母放在一个5×5的表格里,这样所有的源文都可以行列号来表示。 B. 近代,在第二次世界大战里,密码机(如紫罗兰)得到了比较广泛的已经技术,同时破译密码的技术也得到了发展,出现了一次性密码技术。同时密码技术也促进了计算机的发展。 C. 现代,由于计算机和计算机网络的出现,对密码技术提出了更高的需求。密码学的论文和会议不断的增加,以密码技术为主的商业公司开始出现,密码算法层出不穷,并开始走向国际标准化的道路,出现了DES,AES等国家(美国的)标准。同时各个国家和政府对密码技术也越来越重视,都加密技术的出口和进口都作了相当严格的规定。 (2) 加密技术的分类 A.对称加密技术 a. 描述 对称算法(symmetric algorithm),有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而在大多数的对称算法中,加密密钥和解密密钥是相同的。所以也称这种加密算法为秘密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信性

非对称密钥加密

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

非对称加密实验

非对称加密实验 【实验环境】 ISES客户端 Microsoft CLR Debugger 2005或其它调试器 【实验内容】 通过运算器工具实现RSA和ElGamal算法的加解密计算 手工计算RSA密钥并检验,将其应用于签名中并验证 对RSA密钥生成、RSA密钥加密、ElGamal参数生成、ElGamal密钥生成和ElGamal加密进行算法跟踪 非对称加密实验 【实验原理】 非对称密码体制又称为公钥密码体制,加解密使用公私钥密钥对,私钥由密钥拥有者保管,公钥可以公开,基于公开渠道进行分发,解决了对称密钥体制中密钥管理、分发和数字签名等难题。 一、 RSA算法 RSA公钥算法由Rivest、Shamir、Adleman于1978年提出的,是目前公钥密码的国际标准。算法的数学基础是Euler定理,是基于Deffie-Hellman的单项陷门函数的定义而给出的第一个公钥密码的实际实现,其安全性建立在大整数因子分解的困难性之上。 RSA算法的明文空间M=密文空间C=Z整数,其算法描述如下: n (1) 密钥生成 随机选择两个大素数p和q,计算n=p?q,;选择一个随机整数e<,满足,计算整数;公开公钥(n,e),安全的销毁p、q和,并保留(d,n)作为私钥。

(2) 加密 (3) 解密 使用中国剩余定理可以加速RSA密码算法的实现。 二、 ElGamal算法 ElGamal算法是Deffie-Hellman单项陷门函数的一个成功应用,把函数转化为公钥加密体制,其安全性建立在有限域上的离散对数问题。 ElGamal算法的描述如下: (1) 密钥生成 随机选择一个素数p,计算p个元素的有限域的乘法群的一个随机乘法生成元g;均匀随机地在模p-1的整数集合中选取x,计算;把(p,g,y)作为公钥公开,把(p,g,x)作为私钥。 (2) 加密 均匀随机地在模p-1的整数集合中选取k,消息m

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

对称密钥与非对称密钥的区别 一、对称加密(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)对称密钥加密与解密使用的是同样的密钥,所以速度快,但由于需要将密钥在

非对称加密技术非对称加密技术的教学探讨

非对称加密技术非对称加密技术的教学探讨 一、问题的提出非对称加密技术是电子商务安全的基础,是电子商务安全课程的教学重点。笔者查阅许多电子商务安全教材、网络安全教材,发现这些教材过于注重理论,涉及具体操作较少,内容不够通俗易懂。笔者认为,学生掌握非对称加密技术,需要学习以下四个方面:图形直观认识、 RSA File演示软件直观操作、RSA算法直接计算、PGP的实际应用。 二、非对称加密图形直观认识 非对称密码体制也叫公钥加密技术,该技术就是针对私钥密码体制的缺陷提出来的。在公钥加密系统中,加密和解密会使用两把不同的密钥,加密密钥(公开密钥)向公众公开,解密密钥(秘密密钥)只有解密人自己知道,非法使用者根据公开的加密密钥无法推算出解密密钥,顾其可称为公钥密码体制。非对称密码体制的加密模型如图所示。 非对称加密的优势:一方面解决了大规模网络应用中密钥的分发和管理问题。如采用对称加密进行网络通信,N个用户需要使用N (N-1)/2个密钥,而采用对称加密体制,N个用户只需要N对密钥。

另一方面实现网络中的数字签名。对称加密技术由于其自身的局限性,无法提供网络中的数字签名。公钥加密技术由于存在一对公钥和私钥,私钥可以表征惟一性和私有性,而且经私钥加密的数据只能用与之对应的公钥来验证,其他人无法仿冒。 三、RSA File演示软件直观操作 利用一款RSA File演示软件可向学生直观展示非对称加密解密过程。其步骤如下: 第一,点击图标,生成密钥对,公钥保存为1.puk,私钥保存 为2.prk。 第二,新建RSA.txt文本,输入内容“RSA演示”。 第三,点击加密图标,装载公钥1.puk,然后载入明文文件RSA.txt,点击加密文件按钮,生成密文“RSA.txt.enc”。若将密文扩展名改为TXT,打开将全是乱码。 第四,点击解密图标,装载私钥2.prk,然后载入密文文件RSA.txt.enc,点击解密文件按钮,生成明文“RSA.dec.txt”。

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

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

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、主要功能 非对称加密体系不要求通信双方事先传递密钥或有任何约定就能完成保密通信,并且密钥管理方便,可实现防止假冒和抵赖,因此,更适合网络通信中的保密通信要求。

【深度分析】运用非对称加密技术进行去中心化身份验证

【深度分析】运用非对称加密技术进行去中心化身份验证 文章出自Fr8 Network首席工程师Yevgeniy Spektor Fr8 Network简介 Fr8 Network希望通过其分布式网络彻底改变物流业。他们旨在为承运人和托运人创建一个点对点的网络,这可能会对商品和服务产生重大影响。因为整个过程将在区块链上公开,从而降低商品价格。 这个系列的文章分为两部分,这篇文章侧重于身份识别和验证,而下一篇文章将讨论智能合约的权限问题。

传统的身份验证和身份识别始终依赖中央服务器,用户必须向其发送密码进行验证。这种中心化的身份验证方法存在一些安全漏洞,最近几年发生过几起重大的恶性事件,导致企业损失数百万美元。 本文中提出的身份验证方案利用非对称加密技术对用户进行身份验证,无需中央服务器,也无需密码或私钥。用户将使用公钥和带有私人密钥签名的随机字符串进行身份验证,而不是使用用户名和密码进行身份验证。 OAuth 2.0和SAML 2.0 身份验证的最大挑战之一,就是用户需要管理和维护大量软件、服务和平台的凭据。而OAuth 2.0或SAML能解决这个问题,让用户可以在多个平台上使用一组凭据来进行识别和验证。但需要注意OAuth 2.0还具有的资源授权的功能,而这一功能很多时候不会常用。 传统验证方案有两个主要缺陷。首先,OAuth 2.0和SAML都需要中央身份验证服务器来验证登录资格和代币访问权限。身份验证依赖于中央实体,这就让应用程序和服务存在了安全风险。如果授权服务器(OAuth)或身份提供商(SAML)因任何原因不可用或者受到破坏,用户将无法登录。例如,假设应用程序A允许用户使用他们的脸书帐户登录,但如果脸书遭到入侵无法使用,应用程序

浅析非对称加密的应用领域

浅析非对称加密的应用领域 非对称加密 非对称加密能够提供一对密钥,公钥和私钥,使用公钥加密的内容无法使用公钥进行解密,必须使用其对应的私钥才能解密,反之亦然,正好符合我们的要求: 我们可以自己保留私钥,把公钥提供给Web程序,这样注册文件只能由私钥生成而无法使用公钥进行生成,用户即使掌握了公钥也无法生成注册文件。 简单介绍一下我们使用的非对称加密方法:RSA,该方法基于一个数学难题:大数的因子分解,该加密方法已经集成在.net的类库中。 在C#中我们可以使用RSACryptoServiceProvider类进行产生密钥对,明文加密和密文解密的动作。 在使用RSACryptoServiceProvider类的时候我们会发现,类库要求我们进行加密的明文必须为128个字节,多于这个数量会引发异常,所以很多朋友在网上提出解决方案,比如把明文切断,分别加密啦等等,其实我觉得这是一个误区,要解释这个误区,我们得先从非对称加密的常用领域说起。

非对称加密的常用领域 使用非对称加密时我们一般会将私钥保留,将公钥分发给用户,当然,具体的分发动作是通过证书还是怎么样不在我们这次的讨论范围内。 第一种场景:用户使用公钥进行加密,则只能由我们自己的私钥进行解密,就可以保证我们传递的信息是加密过的只有私钥的持有人能够对密文进行解密,其他人(包括公钥的持有人)也是无法解密密文的,但是这同样带来一个问题,由于非对称加密实现算法较为复杂,加密过程比较耗时,因此,我们一般将对称加密和非对称加密结合使用。即:使用对称加密算法对明文进行加密,使用非对称加密算法对对称加密的密钥进行加密,其实说到底,就是使用非对称加密算法进行对称加密密钥的发布,这也是“一次一密”的一种实现方法。 第二种场景是我们使用私钥进行加密,公钥的持有人都可以使用公钥进行解密,这样,公钥持有人就可以确认该内容是由私钥的持有人发布出来的,同样,由于非对称加密和解密比较耗时的原因,我们可以对该实现方式进行改良,最常见的改良方式为:我们可以对明文进行散列操作,最终将明文散列为较短的一个散列码,然后我们使用私钥对该散列码进行加密,在公钥的持有人收到消息后,可以重复上面的操作,比对自己的散列码和解析出的散列码是否相同,如果相同,则可以证明该消息是由公钥的持有人发布的,这就是我们常说的电子签名,当然我们也可以将上面提到的对称密钥的发布过程也包含在电子签名的过程中,以此来保证消息的内容只有公钥的持有人能够查看。 通过上面两种应用场景我们可以发现,非对称加密算法只要能够满足128个字节的加密就能满足所有的应用需求。

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

非对称加密算法有什么特点 什么非对称加密算法非对称加密算法是一种密钥的保密方法。 非对称加密算法需要两个密钥:公开密钥(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的私钥。

对称密钥密码系统

对称密钥密码系统 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。

对称密钥密码

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。非对称密钥密码体制又称为双密钥密码体制或公开密钥密码体制。这种密码体制的加密/解密操作分别使用两个不同地密钥,并且不可能由加密密钥推导出解密密钥。采用非对称密钥密码体制的每个用户都有一对相互关联而又彼此不同地密钥,使用其中的一个密钥加密的数据,不能使用该密钥自身进行解密,而只能使用对应的另一个密钥进行解密。在这一对密钥中,其中一个密钥称为公钥,它可以公开并通过公开的信道发给任何一位想与自己通信的另

非对称密码体制

云南大学数学与统计学实验教学中心实验报告 一、实验目的: 通过实验掌握非对称密码体制的重要思想。 二、实验内容: 查阅资料,实现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的记录销毁。

用非对称密码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.*;

非对称加密、解密算法RSA的C++实现

信息安全技术实验报告 ———非对称加密、解密算法RSA的C++实现 计算机学院 2008级12班 学号:53081224 姓名:胡守峰

非对称加密、解密算法RSA的C++实现 【我的目的】根据课上老师所讲“非对称加密、解密算法RSA”的有关知识, 编写其的C++语言实现。 【我的加密思想】第一步,用户首先输入两个素数p和q,并求出 n = p*q,然后再求出n的欧拉函数值phi。 第二步,在[e,phi]中选出一个与phi互素的整数e,并根据e*d ≡1(mod phi),求出e的乘法逆元。至此我们已经得到了公开密钥{e,n}和秘密密钥{d,n}。 第三步,让用户输入要进行加密的小于n一组正整数(个数不超过MAXLENGTH=500),输入以-1为结束标志,实际个数存入size中,正整数以clear[MAXLENGTH]保存。 第四步,对第三步所得的明文clear[MAXLENGTH]进行加密。遍历clear[size],对每一个整数用以下算法进行加密,并将加密后的密文保存在Ciphertext[MAXLENGTH]中。 注意:此处不能用m2[j] = clear[j] ^ e整数的幂,因为当e和clear[j]较大时,会发生溢出,至使出现无法预料的结果。 第五步,输出加密后的密文。 【我的解密思想】第一步,根据在以上算法中求出的解密密钥[d,phi],对加 密后的密文Ciphertext[MAXLENGTH]进行解密,结果保存在DecryptionText[MAXLENGTH]中,算法如下:

第二步,输出对加密前的明文和加密并解密后的密文进行比较,判断两个数组是否一致,从而得知算法是否正确。 【我的实验】 1、RSA加密、解密算法的C++实现(可以在VC6.0上运行): #include #include using namespace std; #define MAXLENGTH 500 //明文最大长度,即所允许最大整数个数 int size = 0;//保存要进行加密的正整数的个数 int p, q; //两个大素数 int n, phi; //n = p * q,phi = (p-1) * (q-1) 是n的欧拉函数值 int e; //{e, n}为公开密钥 int d; //{d, n}为秘密密钥 int clear[MAXLENGTH], Ciphertext[MAXLENGTH];//分别用于存放加//密前的明//文和加密后的密文 int DecryptionText[MAXLENGTH];//存放解密后的明文 //////////////////////////////////////////////////////////// //以下为加密算法 void Encryption() {//加密算法 cout << " 请输入两个较大的素数:" ; cin >> p >> q ; cout << " p = " << p << ", q = " << q << endl; n = p * q;//求解n, phi = (p - 1) * ( q - 1 );//求解n 的欧拉函数值 cout << " n = " << n << ", phi = " << phi << endl; cout << " 请从[0," << phi - 1 << "]中选择一个与" << phi << " 互素的数e:"; cin >> e; float d0; for( int i = 1; ; i++) {///求解乘法逆元e * d ≡1 (mod phi) d0 = (float)(phi*i+1) / e; if( d0 - (int)d0 == 0 )

非对称加密、公钥、密钥、证书、签名的区别和联系

非对称加密、公钥、密钥、证书、签名的区别和联系以及(2009-12-02 13:27:46) 转载▼ 分类:安全性 标签: 杂谈 【1】非对称加密算法: 非对称加密算法又称为公钥加密算法,按照密码学的Kerckhoff原则:“所有算法都是公开的,只有密钥是保密的”。即安全系统的设计者不能指望使用某种秘密的无人知道的算法来保密,而应当使用一种公开的被验证过的算法——只要密钥是安全的,已知算法的攻击者实际上无法破解秘文的算法才是好的算法。 RSA算法是目前最流行的公钥密码算法,它使用长度可以变化的密钥。RSA是第一个既能用于数据加密也能用于数字签名的算法。RSA算法的原理如下: 1.随机选择两个大质数p和q,p不等于q,计算N=pq; 2.选择一个大于1小于N的自然数e,e必须与(p-1)×(q-1)互素。 3.用公式计算出d:d×e = 1 (mod (p-1)×(q-1)) 。 4.销毁p和q。 最终得到的N和e就是“公钥”,d就是“私钥”,发送方使用N去加密数据,接收方只有使用d才能解开数据内容。 RSA的安全性依赖于大数分解,小于1024位的N已经被证明是不安全的,而且由于RSA 算法进行的都是大数计算,使得RSA最快的情况也比DES慢上好几倍,这也是RSA最大的缺陷,因此它通常只能用于加密少量数据或者加密密钥。需要注意的是,RSA算法的安全性只是一种计算安全性,绝不是无条件的安全性,这是由它的理论基础决定的。因此,在实现RSA算法的过程中,每一步都应尽量从安全性方面考虑。 非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要。 【2】公钥和私钥: 对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 公钥加密:公钥加密使用一个必须对未经授权的用户保密的私钥和一个可以对任何人公开的公钥。公钥和私钥都在数学上相关联;用公钥加密的数据只能用私钥解密,而用私钥签名的数据只能用公钥验证.NET 通过抽象基类(System.Security.Crytography.AsymmetricAlgorithm) 提供下列非对称(公钥/私钥)加密算法: ?D SACryptoServiceProvider ?R SACryptoServiceProvider

实验2 对称加密算法:DES

实验1-2 对称密码算法DES 一.实验原理 信息加密根据采用的密钥类型可以划分为对称密码算法和非对称密码算法。对称密码算法是指加密系统的加密密钥和解密密钥相同,或者虽然不同,但是可以从其中任意一个推导出另一个,更形象的说就是用同一把钥匙开锁和解锁。在对称密码算法的发展历史中曾出现过多种优秀的算法,包括DES、3DES、AES等。下面我们以DES算法为例介绍对称密码算法的实现机制。 DES算法是有美国IBM公司在20世纪70年代提出,并被美国政府、美国国家标准局和美国国家标准协会采纳和承认的一种标准加密算法。它属于分组加密算法,即明文加密和密文解密过程中,信息都是按照固定长度分组后进行处理的。混淆和扩散是它采用的两个最重要的安全特性,混淆是指通过密码算法使明文和密文以及密钥的关系非常复杂,无法从数学上描述或者统计。扩散是指明文和密钥中每一位信息的变动,都会影响到密文中许多位信息的变动,从而隐藏统计上的特性,增加密码安全。 DES将明文分成64比特位大小的众多数据块,即分组长度为64位。同时用56位密钥对64位明文信息加密,最终形成64位的密文。如果明文长度不足64位,则将其扩展为64位(例如补零等方法)。具体加密过程首先是将输入的数据进行初始换位(IP),即将明文M 中数据的排列顺序按一定的规则重新排列,生成新的数据序列,以打乱原来的次序。然后将变换后的数据平分成左右两部分,左边记为L0,右边记为R0,然后对R0施行在子密钥(由加密密钥产生)控制下的变换f,结果记为f(R0 ,K1),再与L0做逐位异或运算,其结果记为R1,R0则作为下一轮的L1。如此循环16轮,最后得到L16、R16,再对L16、R16施行逆初始置换IP-1,即可得到加密数据。解密过程与此类似,不同之处仅在于子密钥的使用顺序正好相反。 DES全部16轮的加密过程如图1-1所示。 DES的加密算法包括3个基本函数: 1.初始换位(IP) 它的作用是把输入的64位数据块的排列顺序打乱,每位数据按照下面换位规则重新组合。即将第58位换到第1位,第50位换到第2位,…,依次类推。重组后的64位输出分为L0、R0(左、右)两部分,每部分分别为32位。 58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4 62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8 57, 49, 41, 33, 25, 17, 9, 1 59, 51, 43, 35, 27, 19, 11, 3 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7 R0和K1经过f(R0,K1)变换后的输出结果,再和L0进行异或运算,输出结果做为R1。R0则赋给L1。L1和R1同样再做类似运算生成L2和R2,…,经过16次运算后生成L16和R16。 2.f函数 f函数是多个置换函数和替代函数的组合函数,它将32位比特的输入变换为32位的输出,如图1-2。R i经过扩展运算E变换后扩展为48比特的E(R i),与K i+1进行异或运算后输出的结果分成8组,每组6比特的并联B,B=B1B2B3B4B5B6B7B8,再经过8个S盒的选择压缩运算转换为4比特,8个4比特合并为32比特后再经过P变换输出为32比特的f(R i-1,K i)。其中,扩展运算E与置换P主要作用是增加算法的扩散效果。

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