不可否认性,有时候是必须的,那么还需要讲一下CA相关的知识
- CA基本概念
负责专门颁发数字证书的系统称为CA系统
负责管理并运营CA的机构称作CA中心
所有与数字证书相关的各种概念和技术统称为PKI
- CA作用
- 身份认证-证书包含个人身份,证书合法性,私钥个人私有。PIN保护私钥
- 保密性-加密密钥对,公钥加密,只有私钥可解。
- 完整性-整体防纂改,单独修改某一项或者几项能发现数据被修改。用哈希算法完成,但是单独的哈希是不能防止整体被替换。
- 抗抵赖性-签名私钥用户独有,PIN保护,签名是用户的操作。
密码的四个特性:真实性、保密性、完整性、不可抵赖性。
机密性(保密性):保证信息不被泄露给非授权实体的性质。
数据完整性:数据没有遭受非授权方式所作的改变的性质。
真实性:一个实体是其所声称实体的这种特性。真实性适用于用户、进程、系统和信息之类的实体。
不可否认性:证明一个已经发生的操作行为无法否认的性质
- CA和数字证书关系
CA 是证书权威,是密钥管理中心,拥有自己的公钥和私钥,负责给用户颁发证书
数字证书的文件格式,包含用户信息,用户公钥信息,CA中心私钥的签名
RA

RA(Registration Authority),数字证书注册审批机构。RA系统是CA的证书发放、管理的延伸。它负责证书申请者的信息录入、审核以及证书发放等工作;同时,对发放的证书完成相应的管理功能。发放的数字证书可以存放于IC卡、硬盘,USBKEY等介质中。RA系统是整个CA中心得以正常运营不可缺少的一部分。
RA作为CA认证体系中的一部分,能够直接从CA提供者那里继承CA认证的合法性。能够使客户以自己的名义发放证书,便于客户开展工作。
RA验证用户材料,明确是否接受用户注册(信任等级不一样,实名面签才具备合法性)
若用户是组织,则检验营业记录、历史文件和信用证明;
若用户是个人,则需要简单证明,如手机号,姓名、电子邮件地址等
1)通过向邮箱发送邮件来确认本人身份
2)通过第三方数据库来确认本来人身份
3)通过当面认证和身份证明确认本人身份
PKI/CA的一些基本组成
LDAP : Lightweight Directory Access Protocol 轻量目录访问协议,提供证书查询或下载服务,证书与证书撤销链发布是指CA把新签发的证书与证书撤销链送到LDAP目录服务器,以供用户查询、下载。
KMC : KMC Key Management Center密钥管理中心,管理加密私钥。备份防止数据丢失
CRL : Certificate Revocation List 证书作废列表,一段时间(24小时内)生成一次且发布成功一次
OCSP : Online Certificate Status Protocol 在线证书状态协议,提供实时查询接口。
SOCSP : Simple Online Certificate Status Protocol 简易在线证书状态协议
OCSP查询返回的证书状态:已撤销、 未知 、良好
双证书
签名证书,设备内生成,只用作签名,私钥不出硬件,私钥丢失不能恢复
加密证书,外部导入,只用于加密,CA生成,KMC管理,签名密钥对和加密密钥对只是用途不同
对称密钥,通过加密密钥对导入,在0016中,重启设备会失效。
证书操作
在线申请(实时生成证书并下载),注销(实时),验签(实时),证书下载,状态查询
注意证书注销后,证书必须立即无法验签通过!
实时获取证书状态,使用OCSP/SOCSP 。本地验签如何做到实时,业务状态和证书状态都要业务系统来管理即可。
引入标准CA可以用标准CA提供的接口验签,如果需要自己实现那么考虑如下:
- 签名
- 读证书
- 原始数据应包含随机数等(时间,事件),随机数应该由应用服务端生成,保证唯一,使用一次失效!
- 时间需验证有效性,时间一般为配置为N分钟失效,N可配置,N一般不超过5分钟
- 随机数使用一次失效(服务器生成,一般使用随机数签名即可,为了使签名有意义,可以加一下操作描述)
- 签名原值=SM3(原始数据)
- 签名值=私钥(签名原值)
- 签名数据至少包括:签名原值,签名值,证书,最好包含操作的描述(哪个事件和本次签名的操作,在服务端保证完整性)
- 验签
- 证书有效性
- 是否在有效期
- 是否注销
- 是否自身签发证书
- 证书单项信息是否匹配(姓名等)
2. 数据有效性
- 签名值有效
- 解析证书唯一标识用于业务判断(如需要)
X.509证书格式
Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate, -- 证书主体
signatureAlgorithm AlgorithmIdentifier, -- 证书签名算法标识
signatureValue BIT STRING --证书签名值,是使用signatureAlgorithm部分指定的签名算法对tbsCertificate证书主题部分签名后的值.
}
TBSCertificate ::= SEQUENCE {
version [0] EXPLICIT Version DEFAULT v1, -- 证书版本号
serialNumber CertificateSerialNumber, -- 证书序列号,对同一CA所颁发的证书,序列号唯一标识证书
signature AlgorithmIdentifier, --证书签名算法标识
issuer Name, --证书发行者名称,根据颁发者一层层往上找, 直到找到可信任根证书。
validity Validity, --证书有效期
subject Name, --证书主体名称(公钥所有者)
subjectPublicKeyInfo SubjectPublicKeyInfo,--证书公钥
issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,
-- 证书发行者ID(可选),只在证书版本2、3中才有,主要为了兼容v2版本证书格式,不允许出现在v1格式中,v3格式中不建议使用
subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,
-- 证书主体ID(可选),只在证书版本2、3中才有,主要为了兼容v2版本证书格式,不允许出现在v1格式中,v3格式中不建议使用
extensions [3] EXPLICIT Extensions OPTIONAL
-- 证书扩展段(可选),只在证书版本3中才有
}
用户身份鉴别完成后,加密密钥对与信息系统进行SM2密钥协商,协商出会话密钥,利用SM4算法和基于SM3的HMAC算法进行通信数据的机密性和完整性保护。
1)issuer :证书发行者名称,根据颁发者一层层往上找, 直到找到可信任根证书。
2)KeyUsage :确定证书类型(签名证书或加密证书)
3)CRL 发布点 查看 cRLDistributionPoits 项并验证
4)OCSP 查看 authorityInfoAccess 项并验证
1279

被折叠的 条评论
为什么被折叠?



