数字证书
1. 创建资源
开始实验之前,您需要先创建实验相关资源。
在实验室页面,单击创建资源。
(可选)在实验室页面左侧导航栏中,单击云产品资源列表,可查看本次实验资源相关信息(例如IP地址、子用户信息等)。
说明:资源创建过程需要3~5分钟(视资源不同开通时间有所差异,ACK等资源开通时间较长)。完成实验资源的创建后,您可以在云产品资源列表查看已创建的资源信息,例如:子用户名称、子用户密码、AK ID、AK Secret、资源中的项目名称等。
实验环境一旦开始创建则进入计时阶段,建议学员先基本了解实验具体的步骤、目的,真正开始做实验时再进行创建。
资源创建成功,可在左侧的资源卡片中查看相关资源信息以及RAM子账号信息
2. 实验原理
实验原理
哈希函数
哈希函数是一个具有以下输入和输出的数学函数 H(X)=Y
H:哈希函数,其输入参数为X,输出为Y。
X:哈希方法的输入,可以是任意长度的任意数据。
Y:哈希方法的输出,是一段固定长度的二进制数据,长度可以是 256,384,516...。
用于加密的哈希函数有下面的特征:
无法找到产生相同输出的输入。从数学理论上来说,我们可以找到有相同输出的输入,因为输入可以是任何数据,而输出则是固定长度的。但是对于一个好的哈希函数来说,希望的是即使使用地球上所有的计算机一起进行计算,也无法在可接受的时间范围内找出具有相同输出的输入。
无法通过输出反推出输入。当输入值的取值范围很大,就很难通过输出反推出输入。当输入值的取值范围是一个有限的集合时,很容易通过遍历尝试每一个输入值来推断。在这种情况下,我们可以为输入 X 加上一个随机值 R 来隐藏输入值,即 H(R|X)=Y。由于攻击者不知道 R 的值,因此无法再通过遍历尝试每个输入的方法推断出 Y 对应的输入。这种做法被称为“加盐”,例如我们在存储密码时就会通过“加盐”的方法来避免彩虹表攻击。
从哈希函数的特点可以看出,一段数据的哈希值就是该数据的一个固定长度的,独一无 二的“特征”,我们可以把哈希值看作该数据的“数字指纹”。
数字签名
数字签名是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防 止被人进行伪造。它是对电子形式的消息进行签名的一种方法,一个签名消息能在一个通信网络中传输。基于公钥密码体制和私钥密码体制都可以获得数字签名,主要是基于公钥密码体制的数字签名。
公钥密码算法采用公钥进行加密,私钥进行解密,数字签名则采用私钥进行加密,用公钥进行解密来验证数字签名。
秘钥拥有者(发送者)首先将原文通过特定的哈希函数得到摘要信息,然后采用私钥对摘要进行加密,就得到了签名。然后将签名附加在原文后一起传送给接收者,接收者拥有公钥,对签名进行解密后得到原文的摘要信息,然后用 HASH 函数对收到的原文提炼出一个摘要信息,与解密得到的摘要进行对比,可以判断接收到的信息是否被篡改,确定信息的完整性。由于私钥是不公开的,只有发送者才能采用私钥对数据加密,所以这种方式可以确定 消息的不可抵赖性。
在数字证书,区块链,比特币中就采用了数字签名来验证用户身份。下图展示了数字签名和验证的流程:
数字证书
数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在 Internet 上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个签名)。它是由权威机构—— CA 机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份,它的基本任务是将一个公钥与安全个体(个人、公司等)的名字绑在一起。
最简单的证书包含密钥、名称以及证书授权中心的数字签名。数字证书还有一个重要的特征就是只在特定的时间段内有效。数字证书是一种权威性的电子文档,可以由权威公正的第三方机构,即 CA(例如中国各地方的 CA 公司)中心签发的证书,也可以由企业级 CA 系统进行签发。
从数字签名使用对象的角度分,目前的数字证书类型主要包括:个人身份证书、企业或机构身份证书、支付网关证书、服务器证书、安全电子邮件证书、个人代码签名证书,这些数字证书特点各有不同。
个人身份证书
符合 X.509 标准的数字安全证书,证书中包含个人身份信息和个人的公钥,用于标识证书持有人的个人身份。数字安全证书和对应的私钥存储于 E-key 中,用于个人在网上进行合同签定、定单、录入审核、操作权限、支付信息等活动中标明身份。
企业或机构身份证书
符合 X.509 标准的数字安全证书,证书中包含企业信息和企业的公钥,用于标识证书持有企业的身份。数字安全证书和对应的私钥存储于 E-key 或 IC 卡中,可以用于企业在电子商务方面的对外活动,如合同签定、网上证券交易、交易支付信息等方面。
支付网关证书
支付网关证书是证书签发中心针对支付网关签发的数字证书,是支付网关实现数据加解密的主要工具,用于数字签名和信息加密。支付网关证书仅用于支付网关提供的服务 (Internet 上各种安全协议与银行现有网络数据格式的转换)。支付网关证书只能在有效状态下使用。支付网关证书不可被申请者转让。
服务器证书
符合 X.509 标准的数字安全证书,证书中包含服务器信息和服务器的公钥,在网络通讯中用于标识和验证服务器的身份。数字安全证书和对应的私钥存储于 E-key 中。服务器软件利用证书机制保证与其他服务器或客户端通信时双方身份的真实性、安全性、可信任度 等。
企业或机构代码签名证书
代码签名证书是 CA 中心签发给软件提供商的数字证书,包含软件提供商的身份信息、 公钥及 CA 的签名。软件提供商使用代码签名证书对软件进行签名后放到 Internet 上,当用户在 Internet 上下载该软件时,将会得到提示,从而可以确信:软件的来源;软件自签名后到下载前,没有遭到修改或破坏。代码签名证书可以对 32-bit.exe 、.cab 、.ocx 、.class 等程序和文件进行签名。
安全电子邮件证书
符合 X.509 标准的数字安全证书,通过 IE 或 Netscape 申请,用 IE 申请的证书存储于 WINDOWS 的注册表中,用 NETSCAPE 申请的存储于个人用户目录下的文件中。用于安全电子邮件或向需要客户验证的 WEB 服务器(https 服务) 表明身份。
个人代码签名证书
个人代码签名证书是 CA 中心签发给软件提供人的数字证书,包含软件提供个人的身份信息、公钥及 CA 的签名。软件提供人使用代码签名证书对软件进行签名后放到 Internet 上,当用户在 Internet 上下载该软件时,将会得到提示,从而可以确信:软件的来源;软件自签名后到下载前,没有遭到修改或破坏。代码签名证书可以对 32-bit .exe、.cab、.ocx、.class 等程序和文件进行签名。
从数字证书的技术角度分,CA 中心发放的证书分为两类:SSL 证书和 SET 证书。一般地说,SSL 证书(安全套接层)是服务于银行对企业或企业对企业的电子商务活动的;而 SET(安全电子交易)证书则服务于持卡消费、网上购物。虽然它们都是用于识别身份和数字签名的证书,但它们的信任体系完全不同,而且所符合的标准也不一样。
数字证书的格式
数字证书的格式普遍采用 RFC5280 定义的 X.509 标准。下表列出了 X.509 标准格式的证书中的主要字段。
证书主要的文件类型和协议有:PEM、DER、PFX、JKS、KDB、CER、KEY、CSR、 CRT、CRL、OCSP、SCEP 等。Openssl 使用 PEM 格式存储证书。
数字证书的一个实例是 https 协议,用于网页加密。以下是百度网页的数字证书例子:
3. 实验内容
实验内容
实验要求
利用openssl 生成公钥、私钥对,并生成自己的数字证书。密码算法不局限于 RSA,这里鼓励大家利用 openssl 生成其他公钥密码算法的密钥对。要求个人独立完成,撰写实验报告(包含实验思路,实验结果截图等)。
实验工具:OpenSSL
openssl 是一个功能强大的工具包,它集成了众多密码算法及实用工具。我们可以利用它提供的命令台工具生成密钥、证书来加密解密文件,也可以在利用其提供的 API 接口在 代码中对传输信息进行加密。
以 RSA 为加密算法,生成数字证书为例:(生成 RSA 私钥公钥的过程参考实验4)
根据私钥生成证书签名请求。
查看证书签名请求内容。
发送证书签名请求到 CA 进行签发,生成 X.509 证书。(这里我们先生成一个 CA 服务器)
生成 CA 私钥
根据 CA 私钥生成 CA 的自签名证书(与生成证书签名请求有区别)。
查看自签名的 CA 证书。
使用 CA 的私钥和证书对用户证书签名。
实验链接:https://developer.aliyun.com/adc/scenario/63dff60194d34900b6ef84e71d53468a