客户和服务器端的安全通信.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章密码技术基础分组作业
------ 客户和服务器端的安全通信功能
第七组
赵鹏 p-zhao07@
田敏求tianminqiu@
卓雪君 zhuoxj07@
张秋艳 zhang-qy07@
宋晓明 songxm07@
1
目录
1. 作业要求 (3)
2. 作业分工 (3)
3. 程序设计原理 (3)
3.1 通信协议设计 (3)
3.2 技术原理 (4)
4.技术细节 (6)
4.1 申请证书 (6)
4.2 双向身份认证 (8)
4.3协商会话密钥 (9)
4.4 生成摘要 (9)
4.5 加解密文件 (9)
4.6完整性验证 (10)
5.实验演示 .......................................................................................... 10 参考文献 ................................................................................................ 16 2
1. 作业要求
实现客户和服务器端的安全通信功能,其中包括:
(1) 基于公钥证书,实现双向的身份认证
(2) 会话密钥协商(算法自选)
(3) 数据传输:加密、完整性保护(算法自选)
(4) 简明的设计文档
图 1.1 协议流程图
2. 作业分工
赵鹏: 认证, 会话密钥协商, 代码整合
田敏求: 数据加解密
卓雪君张秋艳: 通信部分, 摘要生成, 完整性验证, 界面,代码整合宋晓明: 文档
3. 程序设计原理
3.1 通信协议设计
整个通信过程包括了:证书申请、双向身份验证、会话密钥协商、传送/接收加密文件、文件完整性校验五大部分。具体协议设计如图3.1所示。 3
图3.1 C/S通信协议图
图中一些符号注释如下:
KS_PUBLIC:服务器公钥
KS_PRIVATE:服务器私钥
KC_PUBLIC:客户端公钥
KC_PRIVATE:客户端私钥
n1, n2:随机数,用来防止重放攻击
K:会话密钥
Seed:生成会话密钥的种子
M:发送的明文文件
m:明文文件对应的摘要
其中证书采用离线拷贝的方式,保证通信双方在建立连接前已经拥有对方的证书。在双向身份验证的过程中采用生成随机数的方式防止了重放攻击。协商会话
密钥的过程中传送的是经过加密的生成会话密钥的种子。传送文件时,在文件末尾附上了用MD5生成的文件摘要,方便接收方进行文件的完整性验证。
3.2 技术原理
(1) Openssl简介
SSL是Secure Socket Layer(安全套接层协议)的缩写,目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。改协议能使用
户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对用户进行认证。
Openssl是一个功能丰富且自包含的开源安全工具箱。它提供的主要功能有:SSL 协议实现(包括SSLv2、SSLv3和TLSv1)、大量软算法(对称/非对称/摘要)、大数运算、非对称算法密钥生成、ASN.1编解码库、证书请求(PKCS10)编解码、数字证书编解码、CRL编解码、OCSP协议、数字证书验证、PKCS7标准实现和PKCS12个人数字证书格式实现等功能。
Openssl采用C语言作为开发语言,这使得它具有优秀的跨平台性能。Openssl支持Linux、UNIX、windows、Mac等平台。openssl目前最新的版本是0.9.8e. OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库、SSL协议库以及应用程序。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。
(2) CryptoAPI简介
微软的CryptoAPI是PKI推荐使用的加密 API。其功能是为应用程序开发者提供在Win32环境下使用加密、验证等安全服务时的标准加密接口。CryptoAPI处于应用程序和CSP(cryptographic service provider)之间,如图3.2所示。
图3.2 Microsoft CryptoAPI
CryptoAPI的编程模型同Windows系统的图形设备接口 GDI比较类似,其中加密服务提供者CSP等同于图形设备驱动程序,加密硬件(可选)等同于图形硬件,其上层的应用程序也类似,都不需要同设备驱动程序和硬件直接打交道。CryptoAPI共有五部分组成:简单消息函数(Simplified Message Functions)、低层消息函数(Low-level Message Functions)、基本加密函数(Base Cryptographic Functions)、证书编解码函数(Certificate Encode/Decode Functions)和证书库管理函数(Certificate Store Functions)。其中前三者可用于对敏感信息进行加密或签名处理,可保证网络传输信心的私有性;后两者通过对证书的使用,可保证网络信息交流中的认证性。
5
CryptoAPI可以从保密和确证这两方面来保证安全通信。CryptoAPI系统有四类函数:基本Cryptographic函数、简化Cryptographic函数、存储函数和验证加密/解密函数,前两类函数提供保密性,后两类函数提供确证。CryptoAPI允许调用这些函数来加密数据、交换公钥、散列一个消息来建立摘要以及生成数字签名。