关于证书安全体系的理解

1 篇文章 0 订阅
1 篇文章 0 订阅

有关计算机网络领域的证书安全体制,常常存在很多理解,如果大家理解不一致,将会造成很多困扰,本文试图从很初浅的概念来阐述该体制的内容。

 

在现实世界中,人与人的相互信任,往往建立在相互不断增进的了解基础上,但是在计算机网络领域,交易双方通过网络连接,无法直接沟通,如何解决相互信任的问题,有关专家提出证书安全体系,利用该体系,保证交易双方身份真实(防假冒),交易内容安全(防窃取,防非法修改)。下面主要阐述身份认证方面,交易内容安全不再提及。

 

该体制的基础是公钥和私钥签名和加密算法,如果有一种算法保证:有一对密钥,其中一把为私钥,一把为公钥,它们对应出现。对特定字串,用私钥加密后,只有对应的公钥才能解开,而且知道加密结果和公钥,无法推断出对应的原文和私钥。这种算法就可以用于身份识别,当需要进行身份认证时,A方可以用自己的私钥(A方掌握,永不示人)将原文加密,得到加密后的字串(即签名),将公钥、签名、和原文发送给B方,B方用公钥将签名解密,和原文比较,如果相同,表示A方为公钥对应的身份。但这种方法是有漏洞的,如果中途C方将原文截获,用自己的私钥签名,连同自己的公钥发送给B方,B无法认证到底是A方还是C方,因此在证书安全体制中引入证书概念来保证A方的真实身份。

 

证书安全体制中,需要交易双方共同信任一个公信机构,如同现实世界中大家信任公安局。大家到公信机构注册,公信机构给每人颁发证书,如同公安局给每人颁发身份证一样。

在证书中,有几项关键内容:

  •  使用者唯一标识
  •  使用者公钥
  •  颁发者唯一标识
  •  颁发者证书签名

 

如同我们的身份证上有:我的身份证号(使用者唯一标识),公安局名称(颁发者唯一标识),公安局的防伪标识(颁发者证书签名),但是没有使用者公钥,这是计算机证书特有的。

 

对于公信机构,它自己也有一个证书,称为根证书,此时使用者和颁发者为同一人。

 

证书安全体制中,上级证书的公钥可以用来验证下级证书的真伪,即用根证书的公钥,验证下级证书的签名,因为该签名是由上级证书的私钥签出来的。

 

计算机证书和身份证还有一个很大不同,计算机证书可以给任何人公示,可以任意拷贝,而身份证每个人都得自己看管好。

 

回到上面的例子,如果A,B双方都在公信机构注册,都获得了根证书,自己的证书。A方将自己的证书发给B方,B方发现该证书和自己的证书为同一颁发者,即A证书和B证书中的颁发者唯一标识相同,B认为A方和自己为同一机构的注册者,B用自己保管的根证书中的公钥,验证A证书的真伪,如果为真,说明A的证书确实是公信机构颁发的,但A的身份仍需进一步认证,此时B方给一个随机数(明文发送),要求A方签名,A用自己的私钥签名后,将签名值(仍然明文发送),B方用A方证书中的公钥验证签名,如果和随机数匹配,说明A方确认是A证书的拥有者。如果C方想假冒,将不可能进行,因为C方无A的私钥,签不出名来,即使它有A的证书。而且C方也无法篡改证书,因为公信机构保证每个证书使用者唯一标识的唯一性,如果C方用伪公信机构制造一张假证书,即使用者唯一标识和颁发者唯一标识都拷贝A证书的,但公钥和签名换成假的了,但B方用自己的根证书一验,就知道证书的真假,C方仍然无法欺骗B方。

 

 

 

下面举几个例子描述更复杂的认证过程。

下图描述一个分层次的信任体系,T为最高级公信机构,它给下级机构E、F颁发证书,E向A、B用户颁发证书,F向C、D用户颁发证书。

  • A保存:T证书,E证书,A证书
  • B保存:T证书,E证书,B证书
  • C保存:T证书,F证书,C证书
  • D保存:T证书,F证书,D证书

 

 

 

例子一:

B向A表明身份。

1.        B向A打招呼:“A哥,我是小B”

2.        A说:“小B已离家十年了,我凭什么信你?”

3.        B忙说:“我有咱爸发的证书呢”,连忙交出B的证书

4.        A打开B的证书一看,确实是E颁发的,正好A自己的证书也是E颁发的,于是拿出自己保存的E证书中的公钥验证B证书的真伪,发现果然是真,说:“你的证书是小B的,但你有没有偷小B的证书还不知道,你签个名先”,将随机数发给B

5.        B用私钥签名后吧签名值发给A,A用B证书的公钥验证签名,通过,A说:“小B呀,我的好兄弟”

 

例子二:

D向A表明身份。

1.      D向A打招呼:“A,我是你堂哥D”

2.      A说:“拿证书看看”

3.      D递上自己的证书,A打开证书一看,说:“里面的D,F我都不认识,我怎么信你?你还得把F的证书给我”

4.      D把F的证书给A,A发现F的证书是爷爷T颁发的,A正好也有T的证书,于是用保存的T证书来验证F的证书,发现F证书是T颁发的,再用F证书验证D的证书,都通过,说:“D,你的证书是我们家的。但你是不是骗子还不一定,你给我签个名”,把随机数发给D

5.      D说:“我签,我签,我签签签”,把签名给A

6.      A用D证书公钥验证签名,通过,说:“D,我信你了”

 

在实际系统中,本地不一定保存上级证书,需要到签发机关的服务器去取,如LDAP服务器,而且会进行有效性验证,例如检查是否被撤销了(查询撤销列表)。本文只是简述,不一定和真实系统一一对应。

 

 

天天笑

Jerryshi68@hotmail.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值