密码与信息安全实验指导书-XXXX.docx

上传人:牧羊曲112 文档编号:1943143 上传时间:2022-12-27 格式:DOCX 页数:84 大小:2.38MB
返回 下载 相关 举报
密码与信息安全实验指导书-XXXX.docx_第1页
第1页 / 共84页
密码与信息安全实验指导书-XXXX.docx_第2页
第2页 / 共84页
密码与信息安全实验指导书-XXXX.docx_第3页
第3页 / 共84页
密码与信息安全实验指导书-XXXX.docx_第4页
第4页 / 共84页
密码与信息安全实验指导书-XXXX.docx_第5页
第5页 / 共84页
点击查看更多>>
资源描述

《密码与信息安全实验指导书-XXXX.docx》由会员分享,可在线阅读,更多相关《密码与信息安全实验指导书-XXXX.docx(84页珍藏版)》请在三一办公上搜索。

1、 密码与信息安全实验指导书皖西学院2013年7月前 言本课程是信息与计算科学专业的专业选修课程。计算机安全是一个受到全社会关注并亟待解决的大问题。本课程主要阐述如何保护自己的计算机以及网络系统中的数据不被破坏和丢失,如何保证数据在传输过程中的安全,如何避免数据被篡改以及确保数据的真实性等问题。本课程的主要任务是通过各个教学环节,配合实验手段,使学生掌握计算机系统安全的主要概念和技术,培养学生诊断系统错误、分析系统安全隐患、防备系统遭受攻击的能力。为从事计算机系统管理、科学研究打下坚实的基础。使学生掌握计算机系统安全基本知识,如内容涉及信息安全的基本理论框架,包括网络安全框架如安全模型,安全体系

2、结构等;对称密码技术、公开钥密码技术、HASH函数、MAC函数等基本密码学理论,同时也涉及到更高层的基于密码技术的安全协议分析和应用,也兼顾网络入侵、恶意软件、防火墙等网络安全技术。本实验将主要集中在涉及密码技术的实验内容上。信息安全理论和技术作为一门综合性科目,要求学生应具备较全面较扎实的理论基础,课程基础涉及范围广,课程理论相对比较抽象和繁杂,因而同学们在学习中会有一定难度。为了使理论教学与实践教学紧密结合,注重学生的理解和动手能力培养,我们安排了信息安全系列实验内容来配合教学环节,希望同学们能认真独立的完成实验内容,增进对课程内容的理解,提高自己理论联系实际的能力,提高自己独立思考解决问

3、题的能力。本实验采用了一些信息安全方面开放源码的较成熟的软件包和部分商业化并可用于教学目的的软件产品作为实验的基本平台,这有利于同学们能够充分利用因特网进行更多的实验内容的收集和进一步研究的展开,充分利用网络信息安全相关资源,将更有助于本实验内容的良好完成。 目 录一、 信息安全基本理论简介4二、 实验基本环境简介9三、 系列实验10实验一 VMWARE虚拟机和WIN2000安装10实验二 Sniffer网络侦听和pcap编程14实验三 对称加密算法实验20实验四 公钥算法实验24实验五 微软CA组件安装和配置28实验六 EJBCA系统的安装和配置30实验七 SureCA系统的安装和配置45实

4、验八 安全电子邮件的配置和使用62实验九 安全WEB访问的配置和使用68实验十 OPENSSL软件包的使用76实验十一 OpenVPN配置和使用82一、 信息安全基本理论简介1 对称密码技术对称密码加密也称常规密码加密、单钥密码加密、秘密密钥加密,它包括许多数据加密方法。对称密码系统的基本模型见下图 :其基本特征是:数据加密和解密使用同一个密钥;在算法公开的前提下所有秘密都在密钥中,因此密钥本身应该通过另外的秘密信道传递。对称密码系统的安全性依赖于两个因素:其一,加密算法强度至少应该满足:当敌手已知算法,通过截获密文不能导出明文或者发现密钥。更高的要求是当敌手即使拥有部分密文以及相应明文段落也

5、不能导出明文或者发现密钥系统。其二,发送方和接收方必须以安全的方式传递和保存密钥副本,对称加密的安全性取决于密钥的保密性而不是算法的机密性。2 公开钥密码技术 公钥密码也称为非对称密码,公钥密码系统的核心是信源端对明文加密和信宿端对密文解密时分别使用两个相互对应,但计算上只能单向推导的一对密钥。根据应用的需要,将其中一个称为公钥,另一个称为私钥。传统的对称密码系统主要是建立在位操作基础之上,而公钥密码算法和密钥生成则是建立在数学函数基础之上。目前,公钥密码理论中大量使用数论等数学理论和方法,对现代密码学产生了深远的影响。公钥加密方法的安全性主要基于复杂数学问题的难解性假设,根据所基于的数学难题

6、来分类,以下三类系统目前被认为是安全和有效的:基于大整数因子分解的公钥密码系统(如)、椭圆曲线离散对数系统(如 ),离散对数系统(如 )。 在数据保密通信中,加密钥匙是公开的,解密私钥原则上不传递,因此密钥的分配和管理较对称密码系统简单。公开密钥加密系统还能够很容易地实现数字签名。因此,公钥密码技术适应了电子商务应用需要。3 HASH函数HASH函数,又称杂凑函数,是在信息安全领域有广泛和重要应用的密码算法,它有一种类似于指纹的应用。在网络安全协议中,杂凑函数用来处理电子签名,将冗长的签名文件压缩为一段独特的数字信息,像指纹鉴别身份一样保证原来数字签名文件的合法性和安全性。SHA-1和MD5是

7、目前最常用的杂凑函数。经过这些算法的处理,原始信息即使只更动一个字母,对应的压缩信息也会变为截然不同的“指纹”,这就保证了经过处理信息的唯一性。为电子商务等提供了数字认证的可能性。 HASH函数,又称杂凑函数,是在信息安全领域有广泛和重要应用的密码算法,它有一种类似于指纹的应用。在网络安全协议中,杂凑函数用来处理电子签名,将冗长的签名文件压缩为一段独特的数字信息,像指纹鉴别身份一样保证原来数字签名文件的合法性和安全性。SHA-1和MD5是目前最常用的杂凑函数。经过这些算法的处理,原始信息即使只更动一个字母,对应的压缩信息也会变为截然不同的“指纹”,这就保证了经过处理信息的唯一性。为电子商务等提

8、供了数字认证的可能性。设有散列函数 (),这里 是可变长度消息,是固定长度的函数值。散列函数值行的作用是对消息 产生一个“摘要”,使得接收方能够对消息 的完整性进行检验。散列方法本身并不需要保密。4 MAC函数 MAC函数也称密码校验和,它由如下形式的函数C产生:MAC=CK(M),其中M是一个变长消息,K是收发双方共享的密钥,CK(M)是定长的认证符。在假定或已知消息正确时,将MAC附于发送方的消息后;接收方可通过计算MAC来认证该消息。5 数字签名在收发双方不能完全信任的情况下,数字签名是解决该问题的最好方法。其作用相当于手写签名。数字签名满足:必须能验证签名者、签名日期和时间;能认证被签

9、的消息内容;应能由第三方仲裁,以解决争议。数字签名必须是与消息相关的二进制位串,签名必须使用发送方某些独有的信息,以防止伪造和否认,产生数字签名比较容易,识别和验证签名比较容易,伪造数字签名在计算上是不可行的,保存数字签名的拷贝是可行的。基于密码技术的数字签名一般采用具有数字签名功能的公开钥密码算法,如RSA、DSA等。其基本原理是使用秘密钥加密实现数字签名,使用公开钥解密实现签名验证。在实际应用中,数字签名包括两个步骤:(1)对待签名信息计算HASH值(2)对HASH值采用秘密钥加密得到数字签名值;验证过程是首先将数字签名值用对应的公开钥解密,并和重新计算的信息的HASH值进行比较,如果相同

10、,证明验证签名正确,否则认为是错误。6 数字证书数字证书是指利用数字签名技术实现的经由第三方可信的、权威的机构CA签发的,将被认证对象(用户)的身份信息和其公开钥进行有效捆绑而编码形成的数字认证信息。通过验证者对数字证书的验证,确保用户身份和用户公开钥的一一对应性,从而确认用户对该公开钥的合法拥有,从而利用该公钥进行安全的信息加密。X509标准是数字证书的主要标准之一。在一个标准的数字证书中,包含证书版本号、证书序列号、证书签发者身份信息、证书拥有者(用户)身份信息、证书有效期、证书拥有者公钥信息、某些扩展信息、签名方法以及证书签发者用自己的私钥对以上信息所做的签名产生的签名信息。证书的验证主

11、要包括验证数字签名是否正确(确认证书是否被修改)、证书有效期是否有效、证书签发者是否可信、证书中其他信息是否符合政策、证书是否已经被注销等,在证书链中,还应验证证书链中所有的证书是否符合信任链关系等。7 证书注销列表(黑名单)数字证书在有效期内因各种原因(对应秘密钥丢失、身份信息变更等)可能变得不安全,需要申请注销。证书注销列表是由可信的、权威的第三方机构CA审核签发的所有在证书有效期内,但是被注销的证书的列表。该列表经由CA机构签名保证可信。用户通过定期下载,在验证证书有效性时使用。8 CA中心CA中心(Certificate Authority)即数字证书认证机构,是一个可信的、权威的第三

12、方机构,其主要功能就是为用户(包括人和设备等)签发数字证书,并实施相应的管理。CA 的核心功能就是发放和管理数字证书,具体描述如下:(1)接收验证最终用户数字证书的申请。(2)确定是否接受最终用户数字证书的申请证书的审批。(3)向申请者颁发、拒绝颁发数字证书证书的发放。(4)接收、处理最终用户的数字证书更新请求证书的更新。(5)接收最终用户数字证书的查询、撤销。(6)产生和发布证书注销列表(CRL)。(7)数字证书的归档。(8)密钥归档。(9)历史数据归档。CA 的数字签名保证了证书的合法性和权威性。主体的公钥可有两种产生方式:(1)用户自己生成密钥对,然后将公钥以安全的方式传给 CA,该过程

13、必须保证用户公钥的可验证性和完整性。(2)CA 替用户生成密钥对,然后将其以安全的方式传送给用户,该过程必须确保密钥的机密性、完整性和可验证性。该方式下由于用户的私钥为 CA 所产生,故对 CA 的可信性有更高的要求。RA(Registry Authority,注册中心),是数字证书注册审批机构。RA 系统是 CA 的证书发放、管理的延伸。它负责证书申请者的信息录入、审核等工作;同时,对发放的证书完成相应的管理功能。RA 系统是整个 CA 中心得以正常运营不可缺少的一部分。但有的系统中,将 RA 合并在 CA 中。一般说来,注册机构控制注册、证书传递、其他密钥和证书生命周期管理过程中主体、最终

14、实体和 PKI间的交换。9 PKI公钥基础设施(Public Key Infrastructure,PKI)是一个用公开钥密码算法原理和技术实现并提供安全服务的具有通用性的安全基础设施。PKI是一种遵循标准的利用公钥加密技术为电子商务、电子政务的开展提供一整套安全的基础设施。用户利用 PKI平台提供的安全服务进行安全通信。PKI这种遵循标准的密钥管理平台,能够为所有网络应用透明地提供采用加密和数字签名等密码服务所需要的密码和证书管理。使用基于公开密钥技术平台的用户建立安全通信信任机制的基础是,网上进行的任何需要提供安全服务的通信都是建立在公钥的基础之上的,而与公钥成对的私钥只掌握在他们与之通信

15、的对方。这个信任的基础是通过公钥证书的使用来实现的。公钥证书就是用户的身份与之所持有的公钥的结合,在结合之前,由一个可信任的权威机构认证机构(CA)来证实用户的身份。然后由可信任的 CA 对该用户身份及对应公钥相结合的证书进行数字签名,用来证明证书的有效性。PKI首先必须具有可信任的认证机构,在公钥加密技术基础上实现证书的产生、管理、存档、发放以及证书撤销管理等功能,并包括实现这些功能的硬件、软件、人力资源、相关政策和操作规范以及为 PKI体系中的各成员提供全部的安全服务,例如,身份认证、数据保密性、完整性以及不可否认性服务等。构建实施一个 PKI系统主要包括以下内容:(1)认证机构证书的签发

16、机构,它是 PKI的核心,是 PKI应用中权威的、可信任的、公正的第三方机构。(2)证书库证书的集中存放地,提供公众查询。(3)密钥备份及恢复系统对用户的解密密钥进行备份,当丢失时进行恢复,而签名密钥不能备份和恢复。(4)证书撤销处理系统证书由于某种原因需要作废,终止使用,将通过证书撤销列表 CRL 来实现。(5)PKI应用接口系统综上所述,PKI是一种新的安全技术,它基于公开密钥密码技术,通过数字证书建立信任关系。PKI是利用公钥技术实现电子商务安全的一种体系,是一种基础设施,可以保证网络通信、网上交易的安全。二、 实验基本环境简介基本的实验环境主要包括以下:1 虚拟安全环境的建立为了保持本

17、实验的独立性和安全性,搭建一个相对独立的安全环境很有必要。本实验建议在微机实验平台上首先安装一个硬件虚拟软件环境,如VMWARE等。在其中再安装一个操作系统平台,如WINDOWS2000 SERVER等。在这样一个虚拟硬件环境和操作系统平台上,安装和配置任何的安全实验环境将不会影响主系统平台的安全性。所以实验内容之一就是建立一个这样的安全环境。2 安全实验环境内容的总体描述本系列实验的总体目标是:通过安装和配置一系列CA系统(包括微软公司操作系统中提供的CA模块、商业化CA系统以及一些开放源码的CA系统),理解并掌握CA系统的原理和实际使用方法;进而根据实际应用系统的安全需要,通过数字证书的使

18、用,搭建一些基本的PKI安全环境,从而理解并掌握在实际应用中是如何做到基于密码技术来完成安全化改造的,进一步掌握PKI技术的开发,能够做到对系统进行安全需求分析,并做一些较为简单有效的安全方案,提高实际动手能力。本系列实验包括的环境是:l 搭建微软操作系统上自带的一套PKI安全环境。l 在WINDOWS平台上搭建一个基于JAVA和WEB环境的大型CA系统平台。l 配置一个在WINDOWS平台下基于C/S环境的CA系统环境。l 利用各种CA平台,签发各种类型的数字证书,并在实际应用环境中进行配置(典型和成熟的应用包括: 安全电子邮件系统、安全WEB访问等)。l 在C语言环境下,利用已经提供的安全

19、开发包, 进行二次开发,构造一个比较实际的安全应用,提高实际安全分析和动手能力。在该系列实验内容里,分三个层次:(1)了解和掌握CA系统是干什么的,为什么要这样,原理是什么(2)CA签发的数字证书是如何被使用的,为什么可以这样使用(3)是否可以利用一些现成的开发包去构造基于数字证书的安全应用。如果通过实验,达到了这三个目的,就算是一个成功的实验课了。三、 系列实验实验一 VMWARE虚拟机和WIN2000安装1.1 实验目的 通过在主系统平台上安装和配置一个虚拟机环境,为下面的实验打好实验环境基础。1.2 实验内容1 在主系统平台上安装和配置 VMwareworkstation-4.5.1 。

20、2 在VMWARE中安装WINDOWS 2000 SERVER操作系统。1.3 实验指导1.3.1 软件准备VMware是VMware公司出品的一个多系统安装软件。利用它,你可以在一台电脑上将硬盘和内存的一部分拿出来虚拟出若干台机器,每台机器可以运行单独的操作系统而互不干扰,这些“新”机器各自拥有自己独立的CMOS、硬盘和操作系统,你可以像使用普通机器一样对它们进行分区、格式化、安装系统和应用软件等操作,还可以将这几个操作系统联成一个网络。在虚拟系统崩溃之后可直接删除不影响本机系统,同样本机系统崩溃后也不影响虚拟系统,可以下次重装后再加入以前做的虚拟系统。同时它也是唯一的能在Windows和L

21、inux主机平台上运行的虚拟计算机软件。VMware虚拟机软件不需要重开机,就能在同一台电脑使用好几个OS,不但方便,而且安全,为了更好的运行虚拟机,一般对要求宿主计算机有比较大的内存(大于256M,推荐512M)。Windows 2000 SERVER 操作系统就不用介绍了。在安装有Vmware的系统上可以在其基础上安装更多新的操作系统。1 VMWARE虚拟机安装在安装上没必要作过多的介绍,请大家注意的是VMware只能安装在WinNT/2000/XP或Linux,以及FreeBSD下。装好之后,你可以发现你多了两块名为VMware Virtual Ethernet Adapter (bas

22、ic host-only support for VMnet1)和VMware Virtual Ethernet Adapter (Network Address Translation (NAT) for VMnet8)的虚拟网卡,这也是VMware的特色所在,因为在VMware下你可以使用虚拟网卡进行联网设置及其实验。2建立一个虚拟系统:WIN2000 SERVER在虚拟机中的安装双击桌面的“VMware”图标,即可进入VMware的主窗口,点击右侧的New Virtual Machine即可新建一个虚拟系统,之后选择Typical,再选择一种要安装的操作系统 。现在选择你建立的虚拟系统,

23、点击上方工具栏中的POWER ON键便可开机了。其他按钮分别是POWER OFF:关机。Suspend:挂起,可以让虚拟机记录下当前虚拟系统的状态,下次可以用Resume重新恢复选择挂起时的运行状态,以便接着工作。Reset:重启,相当于物理计算机的RESET按钮。Full Screen:全屏,将虚拟机全屏显示。现在一台和真实计算机一样的机器已经建起来了,点击虚拟机的窗口,你的鼠标就融入虚拟系统了,你可以和使用一台真的计算机一样使用它了,而且任何设置都不会影响到你本机。如果想回到主机系统,则可以按Ctrl+Alt使鼠标回到主机系统。不要在虚拟机中使用Ctrl+Alt+Del组合键,因为主机系统

24、同样也会对这个组合键做出反应,你应当使用Ctrl+Alt+Ins来代替。虚拟机的启动过程和你的PC的启动过程也是没有什么不同的,一开始是自检,这时按F2可以进入BIOS设置。每一台虚拟机都有它自己的BIOS。请到BIOS中去设置启动顺序(这里的BIOS当然是虚拟机中的BIOS)。之后便可使用光盘来启动安装(虚拟机可以用光盘镜像如:ISO、vcd文件作为光盘。比如从网上下载的Linux ISO文件,不需刻盘,可直接安装。软驱同理)。你会发现在虚拟机中的设备和你实际的设备完全不一样,VMware为了保证系统的兼容性和稳定性,把现有的设备都虚拟成了最标准的、兼容性最好的设备。由于实际驱动设备的程序仍

25、是在本机系统上运行的驱动程序,实际上的效率并没有多少降低。所以不要试图按照自己的机器配置系统。除此之外,在虚拟机中不用也不能安装任何驱动程序。通常在安装完虚拟机后,需要安装Vmware tools(菜单 VM-Install VM Tools),以便更好的支持各种驱动,如显示等。 实验二 Sniffer网络侦听和pcap编程2.1 实验目的(1)了解和验证网络安全威胁最基本的一种形式:网络窃听。(2)掌握Ethereal等网络侦听工具的用途和用法。2.2 实验内容(1) 查阅资料,回顾以太网的工作原理。(2) 使用Sniffer工具软件侦听网络传输信息,包括通信内容及账户/口令等敏感信息。(3

26、) 用winpcap/libpcap开发库进行编程开发(选做)。2.3 实验指导网络是以分组交换技术为基础的,即数据分组(报文)在网络中经过交换/路由设备的存储-转发接力完成递交,因此分组完全有机会被沿途的设备查看、篡改甚至假冒。局域网特别是以太网是一个完全不设防的共享式传输系统,尤其是在集线器(Hub)时代窃听是极其容易的。现在交换机(Switch)已成为主流,但是交换机并没有从根本上解决窃听问题。按照以太网原理,以太网卡可以收听到本网段上的所有帧,也包括和本机无关的其它机器之间的通信。一般开机后网卡正常被设置为过滤模式,即只过滤接收和本机有关的帧。如果把网卡设置为混杂模式(promiscu

27、ous),则可以接收到所有帧。下图第一个可以看到其它机器之间的流量,第二个图是对一个NetBIOS分组的格式字段解析。(注:后面使用了不同时期的版本程序的屏幕截图,但是和新版的基本类似)。 这种软件已经有很成熟的了,比tcpdump/windump、NetXray、Sniffer Pro、Ethereal等,统称为Sniffer软件。当然,这些工具软件的起始目的是为了网络管理和排错,用来演示窃听只是顺便。此类软件一般都具有协议解析及流量分析能力,操作界面也都类似。推荐使用Ethereal或Sniffer Pro。Ethereal功能够强大,而且是开源的,可以从Ethereal网站下载,安装是直

28、接的。2.3.1 用Sniffer工具观察协议分组观察ARP、UDP、TCP、DNS、HTTP、FTP、POP3、SMTP等协议的网络分组格式。这些标准格式的协议分组Sniffer程序都可以解析。其它程序使用自己的报文格式,比如QQ报文等则一般不能被解析。为了观察特定的分组,开启Sniffer,制造期望的分组。方法:(1) ping一个本网段但是未开机的机器的IP地址,可以引发ARP报文。(2) ping一个最近未曾访问过的网站的域名,可引发本机和DNS服务器之间的交互,可以观察到DNS报文,它是封装在一个UDP报文中的。(3) 访问某个网页,可以制造HTTP流量,顺便可以看到TCP会话,包括

29、三次握手的过程。也可能会有DNS报文。(4) 使用Outlook或Foxmail收发邮件,可以引发POP3和SMTP流量,都是封装在TCP协议中。(5) FTP到某个站点,可以观察FTP流量。2.3.2 观察口令推荐三类可以观察到口令的情形。(1) 邮件口令。使用Outlook或Foxmail收发邮件,可以捕获账户口令的明文。当然也可以看到邮件正文,不过大部分是编码过的,不能直接看懂。(2) Web邮件口令。很多人习惯使用Web界面的邮件。捕获登录并查看Web邮件的流量,可以看到明文口令和邮件正文内容。(3) 登录注册论坛等。登录学习论坛,记录流量,一般可以观察到帐号和口令。示例如下: 2.3

30、.3 开发在Linux下可以使用libpcap库编程实现包捕获功能。一个现成可参考的例子就是基于libpcap的tcpdump,它是开源的。Windows下一般使用Winpcap,它是libpcap的移植版本,大部分接口函数相同。Windump基于Winpcap是tcpdump的翻版。Winpcap是开源的,提供开发包以及示例程序的源文件。请下载winpcap的开发包,编译并运行其中的示例程序,然后观察源程序及相关文档,试演并提炼出简短报告,内容包括:(1) winpcap库的用法说明。(2) 一个包捕获程序的基本框架,要说明所调用的winpcap关键函数。(3) 选做:发送分组(帧),实现假

31、冒和重放。2.3.4 要求和建议一次实验:某楼层以太网,运行Sniffer约半个小时(10:30 2003-2-22),实测捕得10万个包,约100M字节。经搜索“pass”、“psw”等关键字,发现有效的帐号/口令出现约有8次。这种威胁不仅发生在局域网上,显然也可以发生在分组经由的沿途交换设备及其网段上。建议:(1)为了看清关心的流量,在逮包期间尽量关闭其它无关程序,尤其是P2P下载等程序。(2)某些Windows版本中(如2000服务器版)自带的网络监视器就是一个Sniffer程序,可以直接使用。(3)tcpdump/windump是命令行界面的Sniffer工具程序,灵活方便,功能强大,

32、建议了解并试用。思考如何保护网络传输数据安全:(A)抵御窃听;(B)发现窃听;(C)不被察觉地窃听。2.3.5 示例程序udpdump.c一个基于winpcap-3.1的逮包程序的框架,请参见 udpdump.c in WpdPack_3_1.zip,at http:/www.winpcap.org/ 。实验三 对称加密算法实验对称加密算法曾经是唯一,后来才有了非对称算法(公钥算法)。现在一般使用公钥算法做鉴别、认证以及协商会话密钥,然后使用对称算法加密批量数据。3.1 实验目的(1) 了解对称算法的基本工作流程。(2) 掌握对称算法的使用方法。3.2 实验内容(1) 认识OpenSSL工具包

33、。(2) 用简短的程序代码演示:分组加密算法(DES、AES)和流密码算法(RC4)的使用,其中包括分组算法的四种应用模式ECB、CBCCFB、OFB。(3) 编写一个简单但是安全的文件加密程序。3.3 实验指导分组算法在程序实现时一般首先被抽象为这样一个基本函数:F(K,IN,ENC/DEC)= OUT其中IN是固定长度的输入分组(DES算法是8字节,AES是16字节),OUT是同样长度的输出分组,密钥K是随机比特串(DES是56比特,AES是128比特)。OpenSSL中实现的对称算法太多,重点关注三个:DES、AES、RC4。3.3.1 DES算法函数接口在OpenSSL中,DES算法的

34、基本函数就是ECB操作模式对应的函数DES_ecb_encrypt()。该函数把一个8字节明文分组input加密成为一个8字节密文分组output。参数中密钥结构ks是用函数DES_set_key()准备好的,而密钥key是用随机数算法产生的64个随机比特。参数enc指示是加密还是解密。该函数每次只加密一个分组,因此用来加密很多数据时并不方便。void DES_ecb_encrypt(const_DES_cblock *input,DES_cblock *output, DES_key_schedule *ks,int enc);int DES_set_key(const_DES_cblock

35、 *key,DES_key_schedule *schedule);DES算法CBC操作模式加解密函数是DES_ncbc_encrypt()。参数length指示输入字节长度。如果长度不是8字节的倍数,则会被用0填充到8字节倍数。因此,输出可能比length长,而且必然是8字节的倍数。void DES_ncbc_encrypt(const unsigned char *input,unsigned char *output, long length, DES_key_schedule *schedule, DES_cblock *ivec, int enc);DES算法CFB操作模式加解密函数

36、是DES_cfb_encrypt()。参数length指示输入字节长度。参数numbits则指示了CFB每次循环加密多少明文比特,也即密文反馈的比特数目。ivec是初始向量,被看做第0个密文分组,是不用保密但应随机取值的8个字节。如果在一次会话中数次调用DES_cfb_encrypt(),则应该记忆ivec。由于CFB模式中每次DES基本操作只加密numbits比特明文,因此如果numbits太小则效率太低。void DES_cfb_encrypt(const unsigned char *in, unsigned char *out, int numbits, long length, DE

37、S_key_schedule *schedule, DES_cblock *ivec, int enc);另有一个numbit是64比特的版本,既高效又没有填充的麻烦,推荐使用。num中的返回值指示了ivec中的状态,是和下次调用衔接的。void DES_cfb64_encrypt(const unsigned char *in, unsigned char *out, long length, DES_key_schedule *schedule, DES_cblock *ivec, int *num, int enc);OFB和CFB类似,也有两个函数,用法一样。void DES_ofb_

38、encrypt(const unsigned char *in,unsigned char *out,int numbits,long length,DES_key_schedule *schedule,DES_cblock *ivec);void DES_ofb64_encrypt(const unsigned char *in,unsigned char *out,long length,DES_key_schedule *schedule,DES_cblock *ivec,int *num);3.3.2 AES算法函数接口典型参数的AES的基本操作是把128比特明文在128比特密钥指引下

39、加密成128比特密文。OpenSSL中关于AES的函数名和参数接口和DES的雷同。相关函数名如下(参数略)。int AES_set_encrypt_key();int AES_set_decrypt_key();void AES_ecb_encrypt();void AES_cbc_encrypt();void AES_cfb128_encrypt();void AES_ofb128_encrypt();3.3.3 RC4算法函数接口RC4密码算法是流算法,也叫序列算法。流算法是从密钥作为种子产生密钥流,明文比特流和密钥流异或即加密。RC4算法由于算法简洁,速度极快,密钥长度可变,而且也没有填

40、充的麻烦,因此在很多场合值得大力推荐。OpenSSL中RC4算法有两个函数: RC4_set_key()设置密钥,RC4()加解密。可以把RC4看作异或,因此加密两次即解密。void RC4_set_key(RC4_KEY *key, int len, const unsigned char *data);void RC4(RC4_KEY *key, unsigned long len, const unsigned char *indata, unsigned char *outdata);3.3.4 一个文件加密例子程序一个最简单的(但是相当安全的)文件加密程序例子,参见rc4.zip和m

41、yrc4.zip。3.3.5 例子程序(仅作参考)DES示例程序AES示例程序RC4示例程序需要使用OpenSSL库RC4算法从OpenSSL中分离出来了,不需要OpenSSL库一个参考AC2ED的教学实现,很慢3.3.6 提示和建议基于口令的文件加密的安全性依赖于几个方面:(1) 算法选择。需要使用经过考验的公开的加密算法,如DES/AES/RC4等;(2) 口令的质量,以及从口令衍生密钥的方法。建议使用PKCS#5或者类似的思路从口令产生密钥。(3) 发现错误的密文或口令保护。在加密前对明文添加校验保护,比如添加MD5/SHA1校验值,如果解密后校验不符则可以断定密文有篡改或口令不对。做一

42、个练习题。如何评价市面上有的“高强度文件夹加密”软件声称“上百G的数据仅需1秒钟完成”?请进一步查阅网络资料完成分析。实验四 公钥算法实验使用公钥密码算法可以克服协商对称密钥的困难,也可以用来认证和签名。为了避免公钥算法的速度缺陷,当前普遍使用混合密码体制,即使用公钥算法做鉴别和协商会话密钥,使用对称算法加密批量数据。公钥密码算法当前仍是RSA算法占统治地位。OpenSSL加密函数库中提供了对RSA等算法的支持。4.1 实验目的(1)掌握公钥算法的使用方法(2)掌握混合密码体制的工作原理4.2 实验内容(1)使用RSA算法加解密和签名验证(2)使用混合密码体制的文件加密4.3 实验指导不同于对

43、称加密算法中加密和解密使用同样的密钥,公钥算法分为加密密钥K1和解密密钥K2两部分,而且从K1很难计算推导出K2。这样就可以保密K2而公布K1,从而大大简化了密钥管理。习惯上K1称为公钥,K2称为私钥。加密使用公钥,解密使用私钥。ENC(P,K1)= CDEC(C,K2)= PRSA加密算法的步骤是这样的:(1) 找两个随机大素数p和q;(2) 计算模n=pq和Euler函数(n) =(p-1)(q-1);(3) 选取数e后用扩展Euclid算法求数d满足ed1 mod (n);(4) 保密私钥K2=(d, n),发布公钥K1=(e, n);(5) 加密明文p时,计算密文c = pe mod

44、n;(6) 解密c时,计算p = cd mod n。RSA算法也可以用来签名:(7) 对消息m,其签名s = md mod n;(8) 验证(m,s)即判断m =? se mod n。下面介绍OpenSSL中RSA算法的函数接口。4.3.1 RSA密钥产生RSA密钥产生函数RSA_generate_key(),需要指定模长比特数bits和公钥指数e。另外两个参数为NULL即可。RSA *RSA_generate_key(int bits, unsigned long e, void (*callback) (int,int,void *),void *cb_arg);目前对于长达663比特的R

45、SA模数已经有成功分解的先例,因此当前典型的应用场合使用1024比特模长的RSA算法,此时一个分组是128字节。如果从文件中读取密钥,可使用函数PEM_read_bio_PrivateKey()/ PEM_read_bio_PUBKEY(),其中EVP_PKEY 中包含一个RSA结构,可以引用。EVP_PKEY *PEM_read_bio_PrivateKey(BIO *bp, EVP_PKEY *x, pem_password_cb *cb, void *u);4.3.2 RSA加密和解密RSA加密函数RSA_public_encrypt()使用公钥部分,解密函数RSA_private_de

46、crypt()使用私钥。填充方式常用的有两种RSA_PKCS1_PADDING和RSA_PKCS1_OAEP_PADDING。出错时返回-1。输入必须比RSA钥模长短至少11个字节(在RSA_PKCS1_PADDING时?)。输出长度等于RSA钥的模长。intRSA_public_encrypt(int flen, const unsigned char *from,unsigned char *to, RSA *rsa,int padding);intRSA_private_decrypt(int flen, const unsigned char *from,unsigned char *

47、to, RSA *rsa,int padding);4.3.3 RSA签名和验证签名使用私钥,验证使用公钥。RSA签名操作是把被签署消息的散列值编码后用私钥加密,因此函数中参数type用来指示散列函数的类型,一般是NID_md5或NID_sha1。正确情况下返回0。int RSA_sign(int type, const unsigned char *m, unsigned int m_length, unsigned char *sigret, unsigned int *siglen, RSA *rsa);int RSA_verify(int type, const unsigned char *m, unsigned int m_length, unsigned char *sigbuf, unsigned int siglen, RSA *rsa);4.3.4 RSA算法例子程序(供参考)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号