客户和服务器端的安全通信

上传人:206****923 文档编号:91095313 上传时间:2019-06-21 格式:DOC 页数:14 大小:915.50KB
返回 下载 相关 举报
客户和服务器端的安全通信_第1页
第1页 / 共14页
客户和服务器端的安全通信_第2页
第2页 / 共14页
客户和服务器端的安全通信_第3页
第3页 / 共14页
客户和服务器端的安全通信_第4页
第4页 / 共14页
客户和服务器端的安全通信_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《客户和服务器端的安全通信》由会员分享,可在线阅读,更多相关《客户和服务器端的安全通信(14页珍藏版)》请在金锄头文库上搜索。

1、第三章 密码技术基础分组作业- 客户和服务器端的安全通信功能第七组赵鹏 p-田敏求卓雪君 张秋艳 zhang-宋晓明 1目录1.作业要求.32.作业分工.33.程序设计原理.33.1通信协议设计.33.2技术原理.44.技术细节.64.1申请证书.64.2双向身份认证.84.3协商会话密钥.94.4生成摘要.94.5加解密文件.94.6完整性验证.105实验演示.10 参考文献.16 21. 作业要求实现客户和服务器端的安全通信功能,其中包括:(1) 基于公钥证书,实现双向的身份认证(2) 会话密钥协商(算法自选)(3) 数据传输:加密、完整性保护(算法自选)(4) 简明的设计文档图 1.1

2、协议流程图2. 作业分工赵鹏: 认证, 会话密钥协商, 代码整合田敏求: 数据加解密卓雪君 张秋艳: 通信部分, 摘要生成, 完整性验证, 界面,代码整合 宋晓明: 文档3. 程序设计原理3.1 通信协议设计整个通信过程包括了:证书申请、双向身份验证、会话密钥协商、传送/接收加密文件、文件完整性校验五大部分。具体协议设计如图3.1所示。 3图3.1 C/S通信协议图图中一些符号注释如下:KS_PUBLIC:服务器公钥KS_PRIVATE:服务器私钥KC_PUBLIC:客户端公钥KC_PRIVATE:客户端私钥n1, n2:随机数,用来防止重放攻击K:会话密钥Seed:生成会话密钥的种子M:发送

3、的明文文件m:明文文件对应的摘要其中证书采用离线拷贝的方式,保证通信双方在建立连接前已经拥有对方的证书。在双向身份验证的过程中采用生成随机数的方式防止了重放攻击。协商会话密钥的过程中传送的是经过加密的生成会话密钥的种子。传送文件时,在文件末尾附上了用MD5生成的文件摘要,方便接收方进行文件的完整性验证。3.2 技术原理(1) Openssl简介SSL是Secure Socket Layer(安全套接层协议)的缩写,目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。改协议能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对用户进行认证。Op

4、enssl是一个功能丰富且自包含的开源安全工具箱。它提供的主要功能有:SSL协议实现(包括SSLv2、SSLv3和TLSv1)、大量软算法(对称/非对称/摘要)、大数运算、非对称算法密钥生成、ASN.1编解码库、证书请求(PKCS10)编解码、数字证书编解码、CRL编解码、OCSP协议、数字证书验证、PKCS7标准实现和PKCS12个人数字证书格式实现等功能。Openssl采用C语言作为开发语言,这使得它具有优秀的跨平台性能。Openssl支持Linux、UNIX、windows、Mac等平台。openssl目前最新的版本是0.9.8e. OpenSSL整个软件包大概可以分成三个主要的功能部分

5、:密码算法库、SSL协议库以及应用程序。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。(2) CryptoAPI简介微软的CryptoAPI是PKI推荐使用的加密 API。其功能是为应用程序开发者提供在Win32环境下使用加密、验证等安全服务时的标准加密接口。CryptoAPI处于应用程序和CSP(cryptographic service provider)之间,如图3.2所示。图3.2 Microsoft CryptoAPICryptoAPI的编程模型同Windows系统的图形设备接口 GDI比较类似,其中加密服务提供者CSP等同于图形设备驱动程序 ,加密硬件(可选)等同于

6、图形硬件,其上层的应用程序也类似,都不需要同设备驱动程序和硬件直接打交道。 CryptoAPI共有五部分组成:简单消息函数(Simplified Message Functions)、低层消息函数(Low-level Message Functions)、基本加密函数(Base Cryptographic Functions)、证书编解码函数(Certificate Encode/Decode Functions)和证书库管理函数(Certificate Store Functions)。其中前三者可用于对敏感信息进行加密或签名处理,可保证网络传输信心的私有性;后两者通过对证书的使用,可保证网

7、络信息交流中的认证性。5CryptoAPI可以从保密和确证这两方面来保证安全通信。CryptoAPI系统有四类函数:基本Cryptographic函数、简化Cryptographic函数、存储函数和验证加密/解密函数,前两类函数提供保密性,后两类函数提供确证。CryptoAPI允许调用这些函数来加密数据、交换公钥、散列一个消息来建立摘要以及生成数字签名。CryptoAPI使用两种密钥:会话密钥与公钥/私钥对。会话密钥采用单钥密码体制,效率高,但必须保证密钥的安全传递。公钥/私钥算法较慢,主要用于身份的认证以及用于加密少量数据,例如用于加密会话密钥。Microsoft CryptoAPI体系结构

8、如图3.3所示:图 3.3 Microsoft CryptoAPI体系结构4.技术细节4.1 申请证书主要通过openssl的命令来手工生成证书,主要过程为:(1) 生成RSA密钥对:Openssl genrsa -out prikey.pem 10246(2) 利用密钥对生成证书请求:Openssl req new key prikey.pem out req.pem(3) 利用openssl自带的ca来给证书请求签名Openssl ca in req.pem out cert.pem notext参数notext的作用是生成的证书中不带明文的生成过程。 利用同样的步骤生成client.pe

9、m,server.pem和各自相应的私钥文件prikeyclient.pem, prikeyserver.pem4.2 双向身份认证假设通信双方为A,B,在通信之前都拿到了对方的证书。那么验证过程为:(1) 生成一个随机的字符串m(2) sha1(m), 利用hash算法对m做sha1计算(3) 利用A自己的私钥对sha1(m)加密,完成签名Asha1(m)(4) 利用B的公钥来对m进行加密,B,然后和第3步完成的内容一起发送给B(5) B利用自己的私钥对B进行解密,同时利用A的公钥对Asha1(m)解密,然后比较内容是否相同。(6) 在B端重复(1)-(5)的步骤。4.3协商会话密钥由A端生

10、成一个随机的字符串,用这个字符串作为对称密钥生成的种子。然后将这个字符串用B的公钥进行加密然后传输给B。B接收到后利用自己的私钥进行解密,得到种子字符串。双方都利用这个种子字符串来生成对称加密密钥。4.4 生成摘要首先获得指定CSP密钥容器句柄,然后创建一个空哈希对象,并将指定的文件加到指定的哈希对象,进行哈希。这样就实现了对一个不定长度的文件生成摘要的过程,摘要长度为128Bit。4.5 加解密文件(1) 文件加密步骤 打开源文件File.txt 取得密钥容器(CSP)句柄 根据用户输入的密码创建一个会话密钥,即应用对称密钥对原文件加密。i.ii.iii.iv. 创建一个Hash对象 用用户

11、输入的密码产生一个散列 通过散列生成一个会话密钥 销毁Hash对象 非对称密钥由于效率非常低,所以一般不用于对数据直接加密,而是对会话密钥进行加密,然后把它传送给对方。对方通过非对称密钥解密获得会话密钥(即对称密钥),然后再对数据文件进行解密。 加密数据文件i. pbBuffer循环读入待加密文件的固定长度的内存块;如果一次读入整个文件,那样会很浪费内存空间,而且影响扩展性,即存在缓冲区溢出的可能。 清理回收工作i. 释放内存缓冲区空间、密钥句柄、CSP句柄等。(2) 文件解密步骤打开加密文件EnctyptedFile.txt取得密钥容器(CSP)句柄根据用户输入的密码创建一个会话密钥,即应用对称密钥对原文件解密。实际应用中,这个用户输入的“密码”是一个产生密钥的种子,一旦产

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号