数字签名和数字证书详解_第1页
数字签名和数字证书详解_第2页
数字签名和数字证书详解_第3页
数字签名和数字证书详解_第4页
数字签名和数字证书详解_第5页
已阅读5页,还剩103页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数字证书原理2014-11-1815:05

275人阅读

评论(0)

\o"收藏"收藏

\o"举报"举报

分类:

安全认证(27)

一.数字证书概述

数字证书是一段包含用户身份信息、用户公钥信息以及身份验证机构数字签名的数据。身份验证机构的数字签名可以确保证书信息的真实性,用户公钥信息可以保证数字信息传输的完整性,用户的数字签名可以保证数字信息的不可否认性。数字证书是各类终端实体和最终用户在网上进行信息交流及商务活动的身份证明,在电子交易的各个环节,交易的各方都需验证对方数字证书的有效性,从而解决相互间的信任问题。数字证书是一个经证书认证中心(CA)数字签名的包含公开密钥拥有者信息以及公开密钥的文件。认证中心(CA)作为权威的、可信赖的、公正的第三方机构,专门负责为各种认证需求提供数字证书服务。认证中心颁发的数字证书均遵循X.509V3标准。X.509标准在编排公共密钥密码格式方面已被广为接受。X.509证书已应用于许多网络安全,其中包括IPSec(IP安全)、SSL、SET、S/MIME。二.应用数字证书的目的数字信息安全主要包括以下几个方面:身份验证(Authentication)

信息传输安全

信息保密性(存储与交易)(Confidentiality)

信息完整性(Integrity)

交易的不可否认性(Non-repudiation)对于数字信息的安全需求,通过如下手段加以解决:

数据保密性加密

数据的完整性数字签名

身份鉴别数字证书与数字签名

不可否认性数字签名

为了保证网上信息传输双方的身份验证和信息传输安全,目前采用数字证书技术来实现,从而实现对传输信息的机密性、真实性、完整性和不可否认性。三.数字证书内容及格式数字证书包括证书申请者的信息和发放证书CA的信息,认证中心所颁发的数字证书均遵循X.509V3标准。数字证书的格式在ITU标准和X.509V3里定义。根据这项标准,数字证书包括证书申请者的信息和发放证书CA的信息。X.509数字证书内容:证书各部分的含义:域

含义

Version

证书版本号,不同版本的证书格式不同

SerialNumber

序列号,同一身份验证机构签发的证书序列号唯一

AlgorithmIdentifier

签名算法,包括必要的参数

Issuer

身份验证机构的标识信息

PeriodofValidity

有效期

Subject

证书持有人的标识信息

Subject'sPublic

Key

证书持有人的公钥

Signature

身份验证机构对证书的签名

证书内容由以下两部分组成:(1)申请者的信息第一部分申请者的信息,数字证书里的数据包括以下信息:版本信息,用来与X.509的将来版本兼容;证书序列号,每一个由CA发行的证书必须有一个唯一的序列号;A所使用的签名算法;发行证书CA的名称;证书的有效期限;证书主题名称;被证明的公钥信息,包括公钥算法、公钥的位字符串表示;包含额外信息的特别扩展。(2)发放证书CA的信息第二部分CA的信息,数字证书包含发行证书CA的签名和用来生成数字签名的签名算法。任何人收到证书后都能使用签名算法来验证证书是否是由CA的签名密钥签发的。四.验证证书持证人甲想与持证人乙通信时,他首先查找数据库并得到一个从甲到乙的证书路径(certificationpath)和乙的公开密钥。这时甲可使用单向或双向验证证书。单向验证是从甲到乙的单向通信。它建立了甲和乙双方身份的证明以及从甲到乙的任何通信信息的完整性。它还可以防止通信过程中的任何攻击。双向验证与单向验证类似,但它增加了来自乙的应答。它保证是乙而不是冒名者发送来的应答。它还保证双方通信的机密性并可防止攻击。单向和双向验证都使用了时间标记。单向验证如下:(1)甲产生一个随机数Ra。(2)甲构造一条消息,M=(Ta,Ra,Ib,d),其中Ta是甲的时间标记,Ib是乙的身份证明,d为任意的一条数据信息。为安全起见,数据可用乙的公开密钥Eb加密。(3)甲将(Ca,Da(M))发送给乙。(Ca为甲的证书,Da为甲的私人密钥)(4)乙确认Ca并得到Ea。他确认这些密钥没有过期。(Ea为甲的公开密钥)(5)乙用Ea去解密Da(M),这样既证明了甲的签名又证明了所签发信息的完整性。(6)为准确起见,乙检查M中的Ib。(7)乙检查M中的Ta以证实消息是刚发来的。(8)作为一个可选项,乙对照旧随机数数据库检查M中的Ra以确保消息不是旧消息重放。双向验证包括一个单向验证和一个从乙到甲的类似的单向验证。除了完成单向验证的(1)到(8)步外,双向验证还包括:(9)乙产生另一个随机数,Rb。(10)乙构造一条消息,Mm=(Tb,Rb,Ia,Ra,d),其中Tb是乙的时间标记,Ia是甲的身份,d为任意的数据。为确保安全,可用甲的公开密钥对数据加密。Ra是甲在第(1)步中产生的随机数。(11)乙将Db(Mm)发送给甲。(12)甲用Ea解密Db(Mm),以确认乙的签名和消息的完整性。(13)为准确起见,甲检查Mm中Ia。(14)甲检查Mm中的Tb,并证实消息是刚发送来的。(15)作为可选项,甲可检查Mm中的Rb以确保消息不是重放的旧消息。五.数字证书使用每一个用户有一个各不相同的名字,一个可信的证书认证中心(CA)给每个用户分配一个唯一的名字并签发一个包含名字和用户公开密钥的证书。如果甲想和乙通信,他首先必须从数据库中取得乙的证书,然后对它进行验证。如果他们使用相同的CA,事情就很简单。甲只需验证乙证书上CA的签名;如果他们使用不同的CA,问题就复杂了。甲必须从CA的树形结构底部开始,从底层CA往上层CA查询,一直追踪到同一个CA为止,找出共同的信任CA。证书可以存储在网络中的数据库中。用户可以利用网络彼此交换证书。当证书撤销后,它将从证书目录中删除,然而签发此证书的CA仍保留此证书的副本,以备日后解决可能引起的纠纷。如果用户的密钥或CA的密钥被破坏,从而导致证书的撤销。每一个CA必须保留一个已经撤销但还没有过期的证书废止列表(CRL)。当甲收到一个新证书时,首先应该从证书废止列表(CRL)中检查证书是否已经被撤销。现有持证人甲向持证人乙传送数字信息,为了保证信息传送的真实性、完整性和不可否认性,需要对要传送的信息进行数字加密和数字签名,其传送过程如下:(1)甲准备好要传送的数字信息(明文)。(2)甲对数字信息进行哈希(hash)运算,得到一个信息摘要。(3)甲用自己的私钥(SK)对信息摘要进行加密得到甲的数字签名,并将其附在数字信息上。(4)甲随机产生一个加密密钥(DES密钥),并用此密钥对要发送的信息进行加密,形成密文。(5)甲用乙的公钥(PK)对刚才随机产生的加密密钥进行加密,将加密后的DES密钥连同密文一起传送给乙。(6)乙收到甲传送过来的密文和加过密的DES密钥,先用自己的私钥(SK)对加密的DES密钥进行解密,得到DES密钥。(7)乙然后用DES密钥对收到的密文进行解密,得到明文的数字信息,然后将DES密钥抛弃(即DES密钥作废)。(8)乙用甲的公钥(PK)对甲的数字签名进行解密,得到信息摘要。乙用相同的hash算法对收到的明文再进行一次hash运算,得到一个新的信息摘要。(9)乙将收到的信息摘要和新产生的信息摘要进行比较,如果一致,说明收到的信息没有被修改过。而且由于消息是由甲的公钥解开的,说明该消息一定是甲的私钥进行签名的,因此消息一定来自于甲。六.证书存放方式数字证书可以存放在计算机的硬盘、随身软盘、IC卡或CUP卡中。用户数字证书在计算机硬盘中存放时,使用方便,但存放证书的PC机必须受到安全保护,否则一旦被攻击,证书就有可能被盗用。使用软盘保存证书,被窃取的可能性有所降低,但软盘容易损坏。一旦损坏,证书将无法使用。IC卡中存放证书是一种较为广泛的使用方式。因为IC卡的成本较低,本身不易被损坏。但使用IC卡加密时,用户的密钥会出卡,造成安全隐患。使用CUP卡存放证书时,用户的证书等安全信息被加密存放在CUP卡中,无法被盗用。在进行加密的过程中,密钥可以不出卡,安全级别最高,但相对来说,成本较高。结束语目前在网上传输信息时,普遍使用X.509V3格式的数字证书。在数字信息传输前,首先传输双方互相交换证书,验证彼此的身份;然后,发送方利用证书中的加密密钥和签名密钥对要传输的数字信息进行加密和签名,这就保证了只有合法的用户才能接收该信息,同时保证了传输信息的机密性、真实性、完整性和不可否认性。从而保证网上信息的安全传输。

数字签名与数字证书技术简介(一)标签:

加密PKI信息安全w-zrq2014-05-1923:54

1742人阅读

评论(0)

\o"收藏"收藏

\o"举报"举报

分类:

信息安全(2)

知识分享(27)

版权声明:本文为博主原创文章,未经博主允许不得转载。数字签名、数字证书等技术,是现代信息安全的核心技术,可谓使用面十分广泛。其基本理论本身并不复杂,本文希望通过深入浅出的介绍,能够让大家有一些基本了解。

对称加密、非对称加密让我们通过一个例子开始:我们的主角分别是Alice和Bob。现在假设Alice要给Bob发送一份文件,文件内容非常机密。Alice不希望文件在发送的过程中被人截取而泄密。这个时候,自然想到的方法就是对文件进行加密。当然除了加密外,我们还需要让Bob能够解密。就像Alice对文件上了锁,为了让Bob能够解开,则Bob必须有钥匙来对文件解锁。在信息安全或密码学中,我们将这种钥匙称为密钥。密钥一般分为两种,对称密钥与非对称密钥:

对称密钥很容易理解,如同Alice用一把钥匙将文件上锁,而Bob使用相同的钥匙就可以将文件解锁,即加密使用的密钥与解密使用的密钥是相同的。目前的对称密钥算法有DES、3DES、AES等,而密钥则一般是一串固定长度的字符。如下,Bob和Alice事先已经约定,将使用DES算法,并且已经约定好使用的密钥。于是Alice使用这份密钥对文件进行了加密,并发送给Bob。Bob使用相同的密钥对文件解密即可:

对称密钥算法的安全性还是非常有保障的。拿DES算法举例,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。而56位长的密钥的穷举空间为256,这意味着如果一台计算机的速度是每一秒钟检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间。而3DES(3次DES操作)、AES算法的安全性则更高。由此可见,使用对称密钥对文件进行了加密,基本上不用太担心文件可能泄密。

目前大部分的开发语言都有对应的数字加密模块,例如JAVA的JCE模块就可以调用简单的实现加解密。以下是一份JAVA代码例子:[java]

\o"viewplain"viewplain

\o"copy"copy

package

com.test.chiper;

import

javax.crypto.Cipher;

import

javax.crypto.spec.SecretKeySpec;

import

sun.misc.BASE64Decoder;

import

sun.misc.BASE64Encoder;

public

class

TestChiper

{

private

static

final

BASE64Encoder

base64En

=

new

sun.misc.BASE64Encoder();

private

static

final

BASE64Decoder

base64De

=

new

sun.misc.BASE64Decoder();

private

static

String

AESKey="1234567890123456";

public

static

String

encrypt(String

mText)

throws

Exception

{

SecretKeySpec

secrekeysp

=

new

SecretKeySpec(

AESKey.getBytes(),"AES");

java.security.Key

key

=

(java.security.Key)

secrekeysp;

Cipher

cipher

=

Cipher.getInstance("AES/ECB/PKCS5Padding");

cipher.init(javax.crypto.Cipher.ENCRYPT_MODE,

key);

byte[]

b

=

cipher.doFinal(mText.getBytes());

return

base64En.encode(b);

}

public

static

String

decrypt(String

mText)

throws

Exception

{

SecretKeySpec

secrekeysp

=

new

SecretKeySpec(

AESKey.getBytes(),"AES");

java.security.Key

key

=

(java.security.Key)

secrekeysp;

Cipher

cipher

=

Cipher.getInstance("AES/ECB/PKCS5Padding");

cipher.init(javax.crypto.Cipher.DECRYPT_MODE,

key);

byte[]

b

=

cipher.doFinal(base64De.decodeBuffer(mText));

return

new

String(b);

}

}

前文提到的对称密钥算法,已经基本满足了Alice对于文件机密性的要求。然而还是存在两个问题:1、Alice与Bob彼此之间必须约定将使用的密钥,而这个约定的过程本身就可能存在泄密的风险;2、如果除了Alice以外,还有Jessica、Eva、Mary等100位女士也需要向Bob发送文件。那么,Bob可能需要有100次约定密钥的过程。由此可见,无论是安全性还是可用性上,对称密钥都是存在问题的。而两个问题则是必须解决的。

1976年,美国斯坦福大学的研究生Diffie和教授Hellman发表一个基于非对称密钥加密的想法,这个想法开创了密码学的变革。他们的想法其实非常简单,将密钥分为公钥(publicKey)和私钥(privateKey)两种。公钥加密的内容,使用私钥可以解开;而私钥加密的内容,公钥可以解开。然而,单独的知道公钥或私钥,却没有办法推出另一份密钥。

继续我们的例子:仍然是Alice需要与Bob发送一份绝密文件。在此之前,Bob生成了一对密钥:公钥和私钥。Bob将公钥发布在了一个公共的密钥库中,而私钥则不对外公开,仅Bob本人持有。如下图所示,Alice从公钥库中取出Bob的公钥,对文件进行加密,再发送给Bob。而Bob通过自己持有的私钥,即可将文件解密:通过非对称密钥,Bob只是将公钥公布,并没有和Alice约定密钥。仅仅知道公钥是没有办法推出私钥的,因此不用担心私钥泄密的问题。另一反面,如果有jessica也想向Bob发送文件,仅需要从公钥库中取到Bob的公钥即可,也不需要更多的密钥。

非对称密钥算法很有效的解决了安全性和可用性的问题,非对称密钥算法又称作“公开密钥加密算法”,我们常说的PKI(PublicKeyInfrastructure)则是建立在此技术之上的安全基础体系。目前使用最为广泛的非对称密钥为RSA算法,该算法是由三位算法发明者的姓氏开头字母命名而来。由于非对称加密算法的复杂度更高,因此非对称加密的速度远没有对称加密算法快,甚至可能比对称加密慢上1000倍。后续文章将介绍非对称密钥算法的典型场景:数字签名数字签名与数字证书技术简介(二)标签:

信息安全加密PKI数字签名w-zrq2014-05-2023:42

1445人阅读

评论(0)

\o"收藏"收藏

\o"举报"举报

分类:

信息安全(2)

知识分享(27)

版权声明:本文为博主原创文章,未经博主允许不得转载。信息摘要、数字签名基于上篇文章,我们介绍了的非对称密钥算法:/u014419512/article/details/26290821现在我们可以继续我们的场景:假设有一天,Alice收到了一份署名为Bob的文件。Alice希望能够确认这份文件一定是来自Bob;另外Alice希望能够确信,这份文件在传输过程中并没有被它人篡改。那么基于非对称密钥算法我们应该怎么做?确认文件一定来自于Bob,其实就是Bob无法否认自己发送过这份文件。信息安全中称作不可抵赖性;另一方面,确信文件并没有中途被篡改,则称作不可篡改性。在非对称密钥算法中提到,公钥加密的内容使用私钥可以解密。同样的,基于私钥加密的内容使用公钥也可以解密,两者一一对应。因此我们可以很容易想到。如果Bob利用自己手里的私钥对文件进行加密后,传输给Alice。Alice再通过公钥库中Bob的公钥进行解密,则可以证明文件一定是由Bob发出(由于只有Bob持有私钥)。另外,因为传输的是密文,如果能够使用公钥解密,同时也证明了文件并没有中途被篡改。这样的做法其实已经同时满足了不可抵赖性和不可篡改性。然而,由于传输的文件可能很大,为了证明文件的不可抵赖性和不可篡改性,需要对整个文件进行加密,由于非对称算法效率较低,这样做的代价太大。因此常规的做法是用到信息摘要和数字签名的方式。所谓信息摘要,其实就是某种HASH算法。将信息明文转化为固定长度的字符,它具有如下特点:①无论输入的消息有多长,计算出来的消息摘要的长度总是固定的;

②用相同的摘要算法对相同的消息求两次摘要,其结果必然相同;

③一般地,只要输入的消息不同,对其进行摘要以后产生的摘要消息也几乎不可能相同;

④消息摘要函数是单向函数,即只能进行正向的信息摘要,而无法从摘要中恢复出任何的消息;

⑤好的摘要算法,没有人能从中找到“碰撞”,虽然“碰撞”是肯定存在的。即对于给定的一个摘要,不可能找到一条信息使其摘要正好是给定的。或者说,无法找到两条消息,是它们的摘要相同。

一般的,我们将信息的摘要也称作信息的指纹。如同指纹的含义,相同的信息一定会得相同的指纹,而仅通过指纹又无法还原出原始信息。目前主要的摘要算法有MD5和SHA1。

当有了信息摘要技术以后,基于Bob向Alice发送文件的场景,我们可以进行如下的操作:

第一步:①Bob将原始的信息进行一次信息摘要算法,得到原始信息的摘要值;

②Bob使用自己的私钥,对该摘要值进行加密。得到信息摘要的密文;

③Bob将原始文件和摘要值的密文一起发送给Alice。

④一般的,我们将原始文件和摘要密文称作Bob对原始文件的签名结果。第二步:①当Alice接收到Bob传输的信息(原始文件,信息摘要密文)后,使用Bob的公钥将摘要密文解密,得到信息摘要明文;

②使用信息摘要算法,取原文的摘要信息,获取原始文件摘要信息;

③Alice比较解密后的摘要信息和取得的摘要信息。如果相同,则可以证明文件一定由Bob发送,并且中途并没有经过任何篡改。一般将这个过程称作验签。

所谓数字签名,就是对原始文件的“指纹”进行了私钥加密。这样,即可保证文件的特征(摘要值)一定经过了私钥的加密。同时由于信息摘要的长度普遍不长(MD5为128位,SHA1主要为256位),也并没有带来太大的开销。如同对称密钥算法,在大部分开发语言中,基于非对称算法的数字签名,数字加密算法。也都进行了一定的封装。如下链接就比较详细的描述了基于JCE如何实现数字签名、加密、验证等:/centralperk/article/details/8538697数字签名与数字证书技术简介(三)标签:

技术信息安全标准caw-zrq2014-05-2023:45

1543人阅读

评论(0)

\o"收藏"收藏

\o"举报"举报

分类:

知识分享(27)

信息安全(2)

版权声明:本文为博主原创文章,未经博主允许不得转载。

数字证书前两篇文章,分别介绍了非对称加密算法和数字签名技术:/u014419512/article/details/26290821/u014419512/article/details/26408029基于非对称密钥算法,Bob生成了一对公私钥。Bob将公钥发布在公开的密钥库中。而Alice在向Bob发送加密文件或者验证Bob签名的文件时,均要从公钥库取到Bob的公钥。我们已经知道,一般来说公钥就是一段固定长度的字符串,并没有特定的含义。为了让Alice能够方便的辨别公钥,我们可以考虑对给公钥附加一些信息,例如该公钥使用的算法,该公钥的所有者(主题),该公钥的有效期等一系列属性。这样的数据结构我们称作PKCS10数据包公钥的主题我们采用唯一标示符(或称DN-distinguished

name),以尽量唯一的标示公钥所有者。以下是基于抽象语法表示法所定义的PKCS10数据结构:[plain]

\o"viewplain"viewplain

\o"copy"copy

CertificationRequestInfo

::=

SEQUENCE

{

version

INTEGER

{

v1(0)

}

(v1,...),

subject

Name,

subjectPKInfo

SubjectPublicKeyInfo{{

PKInfoAlgorithms

}},

attributes

[0]

Attributes{{

CRIAttributes

}}

}

SubjectPublicKeyInfo

{

ALGORITHM

:

IOSet}

::=

SEQUENCE

{

algorithm

AlgorithmIdentifier

{{IOSet}},

subjectPublicKey

BIT

STRING

}

PKInfoAlgorithms

ALGORITHM

::=

{

...

--

add

any

locally

defined

algorithms

here

--

}

Attributes

{

ATTRIBUTE:IOSet

}

::=

SET

OF

Attribute{{

IOSet

}}

CRIAttributes

ATTRIBUTE

::=

{

...

--

add

any

locally

defined

attributes

here

--

}

Attribute

{

ATTRIBUTE:IOSet

}

::=

SEQUENCE

{

type

ATTRIBUTE.&id({IOSet}),

values

SET

SIZE(1..MAX)

OF

ATTRIBUTE.&Type({IOSet}{@type})

}

我们已经有了PKCS10数据包,除了公钥信息外,还有公钥的持有者,公钥的版本号等信息。然而这样的数据结构其实并没有任何权威性。例如有一天一个叫做Richard的人想冒充Bob,也生成一对公私钥,并且使用了相同的公钥主题封装为P10数据结构。Alice其实并没有办法分辨哪个是真实Bob的公钥。为了解决这个问题,就需要一个权威的第三方机构,对P10结构的数据进行认证。就如同对P10文件盖上一个权威的章,防止仿照。这样的权威机构,我们称作CA(Certificate

Authority)数字证书认证中心。而CA如何为P10数据盖章呢?非常简单,就是我们前文已经提到的数字签名技术:①如上图所示,CA机构其实也持有一张私钥。一般来说,CA会对这份私钥进行特别的保护,严禁泄漏和盗用。②Bob将自己的公钥附加上一系列信息后,形成了P10数据包(请求包),并发送给CA。③CA机构通过其他一些手段,例如查看Bob的身份信息等方式,认可了Bob的身份。于是使用自己的私钥对P10请求进行签名。(也可能会先对数据进行一些简单修改,如修改有效期或主题等)④这样的签名结果,我们就称作数字证书。

数字证书同样遵循一个格式标准,我们称作X509标准,我们一般提到的X509证书就是如此。以下是X509的格式:[plain]

\o"viewplain"viewplain

\o"copy"copy

[Certificate

::=

SEQUENCE

{

tbsCertificate

TBSCertificate,

signatureAlgorithm

AlgorithmIdentifier,

signature

BIT

STRING

}

TBSCertificate

::=

SEQUENCE

{

version

[0]

EXPLICIT

Version

DEFAULT

v1,

serialNumber

CertificateSerialNumber,

signature

AlgorithmIdentifier,

issuer

Name,

validity

Validity,

subject

Name,

subjectPublicKeyInfo

SubjectPublicKeyInfo,

issuerUniqueID

[1]

IMPLICIT

UniqueIdentifier

OPTIONAL,

--

If

present,

version

must

be

v2or

v3

subjectUniqueID

[2]

IMPLICIT

UniqueIdentifier

OPTIONAL,

--

If

present,

version

must

be

v2or

v3

extensions

[3]

EXPLICIT

Extensions

OPTIONAL

--

If

present,

version

must

be

v3

}

Version

::=

INTEGER

{

v1(0),

v2(1),

v3(2)

}

CertificateSerialNumber

::=

INTEGER

Validity

::=

SEQUENCE

{

notBefore

CertificateValidityDate,

notAfter

CertificateValidityDate

}

CertificateValidityDate

::=

CHOICE

{

utcTime

UTCTime,

generalTime

GeneralizedTime

}

UniqueIdentifier

::=

BIT

STRING

SubjectPublicKeyInfo

::=

SEQUENCE

{

algorithm

AlgorithmIdentifier,

subjectPublicKey

BIT

STRING

}

Extensions

::=

SEQUENCE

OF

Extension

Extension

::=

SEQUENCE

{

extnID

OBJECT

IDENTIFIER,

critical

BOOLEAN

DEFAULT

FALSE,

extnValue

OCTET

STRING

}

基于数字证书,我们可以再来看看Bob如何给Alice发送一份不可否认、不可篡改的文件:第一步:Bob除了对文件进行签名操作外,同时附加了自己的数字证书。一同发给Alice。第二步:Alice首先使用CA的公钥,对证书进行验证。如果验证成功,提取证书中的公钥,对Bob发来的文件进行验签。如果验证成功,则证明文件的不可否认和不可篡改。可以看到,基于数字证书后,Alice不在需要一个公钥库维护Bob(或其他人)的公钥证书,只要持有CA的公钥即可。数字证书在电子商务,电子认证等方面使用非常广泛,就如同计算机世界的身份证,可以证明企业、个人、网站等实体的身份。同时基于数字证书,加密算法的技术也可以支持一些安全交互协议(如SSL)。下一篇文章,将为大家介绍SSL协议的原理。

数字证书及CA的扫盲介绍2015-07-1714:18

179人阅读

评论(0)

\o"收藏"收藏

\o"举报"举报

分类:

破解(16)

黑客技术(15)

转载:/page/194742/★先说一个通俗的例子考虑到证书体系的相关知识比较枯燥、晦涩。俺先拿一个通俗的例子来说事儿。

普通的介绍信想必大伙儿都听说过介绍信的例子吧?假设A公司的张三先生要到B公司去拜访,但是B公司的所有人都不认识他,他咋办捏?常用的办法是带公司开的一张介绍信,在信中说:兹有张三先生前往贵公司办理业务,请给予接洽云云。然后在信上敲上A公司的公章。张三先生到了B公司后,把介绍信递给B公司的前台李四小姐。李小姐一看介绍信上有A公司的公章,而且A公司是经常和B公司有业务往来的,这位李小姐就相信张先生不是歹人了。说到这,爱抬杠的同学会问了:万一公章是伪造的,咋办捏?在此,俺要先声明,在本例子中,先假设公章是难以伪造的,否则俺的故事没法说下去鸟。

引入中介机构的介绍信好,回到刚才的话题。如果和B公司有业务往来的公司很多,每个公司的公章都不同,那前台就要懂得分辨各种公章,非常滴麻烦。所以,有某个中介公司C,发现了这个商机。C公司专门开设了一项“代理公章”的业务。今后,A公司的业务员去B公司,需要带2个介绍信:介绍信1含有C公司的公章及A公司的公章。并且特地注明:C公司信任A公司。介绍信2仅含有A公司的公章,然后写上:兹有张三先生前往贵公司办理业务,请给予接洽云云。某些不开窍的同学会问了,这样不是增加麻烦了吗?有啥好处捏?主要的好处在于,对于接待公司的前台,就不需要记住各个公司的公章分别是啥样子的;他/她只要记住中介公司C的公章即可。当他/她拿到两份介绍信之后,先对介绍信1的C公章,验明正身;确认无误之后,再比对介绍信1和介绍信2的两个A公章是否一致。如果是一样的,那就可以证明介绍信2是可以信任的了。★相关专业术语的解释费了不少口水,终于说完了一个俺自认为比较通俗的例子。如果你听到到这,还是想不明白这个例子在说啥,那后续的内容,就不必浪费时间听了:(下面,俺就着上述的例子,把相关的名词,作一些解释。

什么是证书?“证书”洋文也叫“digitalcertificate”或“publickeycertificate”(专业的解释看“这里”)。它是用来证明某某东西确实是某某东西的东西(是不是像绕口令?)。通俗地说,证书就好比例子里面的公章。通过公章,可以证明该介绍信确实是对应的公司发出的。理论上,人人都可以找个证书工具,自己做一个证书。那如何防止坏人自己制作证书出来骗人捏?请看后续CA的介绍。

什么是CA?CA是CertificateAuthority的缩写,也叫“证书授权中心”。(专业的解释看“这里”)它是负责管理和签发证书的第三方机构,就好比例子里面的中介——C公司。一般来说,CA必须是所有行业和所有公众都信任的、认可的。因此它必须具有足够的权威性。就好比A、B两公司都必须信任C公司,才会找C公司作为公章的中介。

什么是CA证书?CA证书,顾名思义,就是CA颁发的证书。前面已经说了,人人都可以找工具制作证书。但是你一个小破孩制作出来的证书是没啥用处的。因为你不是权威的CA机关,你自己搞的证书不具有权威性。这就好比上述的例子里,某个坏人自己刻了一个公章,盖到介绍信上。但是别人一看,不是受信任的中介公司的公章,就不予理睬。坏蛋的阴谋就不能得逞啦。文本后续提及的证书,若无特殊说明,均指CA证书。

什么是证书之间的信任关系?在俺的例子里谈到,引入中介后,业务员要同时带两个介绍信。第一个介绍信包含了两个公章,并注明,公章C信任公章A。证书间的信任关系,就和这个类似。就是用一个证书来证明另一个证书是真实可信滴。

什么是证书信任链?实际上,证书之间的信任关系,是可以嵌套的。比如,C信任A1,A1信任A2,A2信任A3这个叫做证书的信任链。只要你信任链上的头一个证书,那后续的证书,都是可以信任滴。

什么是根证书?“根证书”的洋文叫“rootcertificate”,专业的解释看“这里”。为了说清楚根证书是咋回事,再来看个稍微复杂点的例子。假设C证书信任A和B;然后A信任A1和A2;B信任B1和B2。则它们之间,构成如下的一个树形关系(一个倒立的树)。处于最顶上的树根位置的那个证书,就是“根证书”。除了根证书,其它证书都要依靠上一级的证书,来证明自己。那谁来证明“根证书”可靠捏?实际上,根证书自己证明自己是可靠滴(或者换句话说,根证书是不需要被证明滴)。聪明的同学此刻应该意识到了:根证书是整个证书体系安全的根本。所以,如果某个证书体系中,根证书出了问题(不再可信了),那么所有被根证书所信任的其它证书,也就不再可信了。这个后果是相当相当滴严重(简直可以说是灾难性的),具体在下一个帖子里介绍。★证书有啥用?CA证书的作用有很多,俺为了节省口水,只列出常用的几个。

验证网站是否可信(针对HTTPS)通常,我们如果访问某些敏感的网页(比如用户登录的页面),其协议都会使用HTTPS而不是HTTP。因为HTTP协议是明文的,一旦有坏人在偷窥你的网络通讯,他/她就可以看到网络通讯的内容(比如你的密码、银行帐号、等);而HTTPS是加密的协议,可以保证你的传输过程中,坏蛋无法偷窥。但是,千万不要以为,HTTPS协议有了加密,就可高枕无忧了。俺再举一个例子来说明,光有加密是不够滴。假设有一个坏人,搞了一个假的网银的站点,然后诱骗你上这个站点。假设你又比较单纯,一不留神,就把你的帐号,口令都输入进去了。那这个坏蛋的阴谋就得逞鸟。为了防止坏人这么干,HTTPS协议除了有加密的机制,还有一套证书的机制。通过证书来确保,某个站点确实就是某个站点。有了证书之后,当你的浏览器在访问某个HTTPS网站时,会验证该站点上的CA证书(类似于验证介绍信的公章)。如果浏览器发现该证书没有问题(证书被某个根证书信任、证书上绑定的域名和该网站的域名一致、证书没有过期),那么页面就直接打开;否则的话,浏览器会给出一个警告,告诉你该网站的证书存在某某问题,是否继续访问该站点?为了形象起见,下面给出IE和Firefox的抓图:大多数知名的网站,如果用了HTTPS协议,其证书都是可信的(也就不会出现上述警告)。所以,今后你如果上某个知名网站,发现浏览器跳出上述警告,你就要小心啦!

验证某文件是否可信(是否被篡改)证书除了可以用来验证某个网站,还可以用来验证某个文件是否被篡改。具体是通过证书来制作文件的数字签名。制作数字签名的过程太专业,咱就不说了。后面专门告诉大家如何验证文件的数字签名。考虑到大多数人用Windows系统,俺就拿Windows的例子来说事儿。比如,俺手头有一个Firefox的安装文件(带有数字签名)。当俺查看该文件的属性,会看到如下的界面。眼神好的同学,会注意到到上面有个“数字签名”的标签页。如果没有出现这个标签页,就说明该文件没有附带数字签名。选择该标签页,看到如下界面。顺便说一下,某些数字签名中没有包含“邮件地址”,那么这一项会显示“不可用”;同样的,某些数字签名没有包含“时间戳”,也会显示“不可用”。不要紧张,这里显示的“不可用”跟数字签名的有效性没关系。一般来说,签名列表中,有且仅有一个签名。选中它,点“详细信息”按钮。跳出如下界面:通常这个界面会显示一行字:“该数字签名正常”(图中红圈标出)。如果有这行字,就说明该文件从出厂到你手里,中途没有被篡改过(是原装滴、是纯洁滴)。如果该文件被篡改过了(比如,感染了病毒、被注入木马),那么对话框会出现一个警告提示“该数字签名无效”(图中红圈标出)。界面如下:不论签名是否正常,你都可以点“查看证书”按钮。这时候,会跳出证书的对话框。如下:

从后一个界面,可以看到俺刚才说的证书信任链。图中的信任链有3层:第1层是根证书(ThawtePremiumServerCA)。第2层是Thawte专门用来签名的证书。第3层是Mozilla自己的证书。

目前大多数知名的公司(或组织机构),其发布的可执行文件(比如软件安装包、驱动程序、安全补丁),都带有数字签名。你可以自己去看一下。建议大伙儿在安装软件之前,都先看看是否有数字签名?如果有,就按照上述步骤验证一把。一旦数字签名是坏的,那可千万别装。★总结费了半天口舌,大致介绍了CA证书相关的概念。想更深入了解这方面知识的同学,可以找些信息安全或密码学方面的资料,继续钻研。如果哪个同学觉得俺有说得不对的地方,或者有需要补充的内容,欢迎给俺写邮件(program.think@)。

深入理解加密、解密、数字签名和数字证书2012-11-1913:45

4253人阅读

评论(0)

\o"收藏"收藏

\o"举报"举报

分类:

PKI(7)

版权声明:本文为博主原创文章,未经博主允许不得转载。

随着电子商务的迅速发展,信息安全已成为焦点问题之一,尤其是网上支付和网络银行对信息安全的要求显得更为突出。为了能在因特网上开展安全的电子商务活动,公开密钥基础设施(

PKI,

Public

Key

Infrastructure

)逐步在国内外得到广泛应用。我们是否真的需要

PKI

PKI

究竟有什么用?下面通过一个案例一步步地来剖析这个问题

:

甲想将一份合同文件通过

Internet

发给远在国外的乙,此合同文件对双方非常重要,不能有丝毫差错,而且此文件绝对不能被其他人得知其内容。如何才能实现这个合同的安全发送?

问题

1:

最自然的想法是,甲必须对文件加密才能保证不被其他人查看其内容,那么

,

到底应该用什么加密技术,才能使合同传送既安全又快速呢

?

可以采用一些成熟的对称加密算法

,

DES

3DES

RC5

等对文件加密。对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥,即加密密钥也可以用做解密密钥,这种方法在密码学中叫做对称加密算法,

问题

2:

如果黑客截获此文件,是否用同一算法就可以解密此文件呢

?

不可以

,

因为加密和解密均需要两个组件

:

加密算法和对称密钥

,

加密算法需要用一个对称密钥来解密

,

黑客并不知道此密钥。

问题

3:

既然黑客不知密钥,那么乙怎样才能安全地得到其密钥呢?用电话通知,若电话被窃听,通过

Internet

发此密钥给乙,可能被黑客截获,怎么办

?

方法是用非对称密钥算法加密对称密钥后进行传送。与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(

Public

Key

)和私有密钥(

Private

Key

)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫做非对称加密算法

(

/

私钥可由专门软件生成

)

。甲乙双方各有一对公

/

私钥,公钥可在

Internet

上传送,私钥自己保存。这样甲就可以用乙的公钥加密问题

1

中提到的对称加密算法中的对称密钥。即使黑客截获到此密钥,也会因为黑客不知乙的私钥,而解不开对称密钥,因此也解不开密文,只有乙才能解开密文。

问题

4

:既然甲可以用乙的公钥加密其对称密钥,为什么不直接用乙的公钥加密其文件呢?这样不仅简单,而且省去了用对称加密算法加密文件的步骤?

不可以这么做。因为非对称密码算法有两个缺点

:

加密速度慢

,

比对称加密算法慢

10

100

,

因此只可用其加密小数据

(

如对称密钥

)

,另外加密后会导致得到的密文变长。因此一般采用对称加密算法加密其文件

,

然后用非对称算法加密对称算法所用到的对称密钥。

问题

5

如果黑客截获到密文,同样也截获到用公钥加密的对称密钥,由于黑客无乙的私钥,因此他解不开对称密钥,但如果他用对称加密算法加密一份假文件

,

并用乙的公钥加密一份假文件的对称密钥,并发给乙,乙会以为收到的是甲发送的文件,会用其私钥解密假文件

,

并很高兴地阅读其内容,但却不知已经被替换。换句话说,乙并不知道这不是甲发给他的,怎么办

?

答案是用数字签名证明其身份。数字签名是通过散列算法

,

MD5

SHA-1

等算法从大块的数据中提取一个摘要。而从这个摘要中不能通过散列算法恢复出任何一点原文,即得到的摘要不会透露出任何最初明文的信息,但如果原信息受到任何改动,得到的摘要却肯定会有所不同。因此甲可以对文件进行散列算法得到摘要,并用自己的私钥加密

(

因为非对称算法可逆,即用私钥可解开公钥加密的文件,反之亦然

)

,这样即使黑客截获也无用。因为黑客不会从摘要内获得任何信息,但乙却不一样,他可用甲的公钥解密,得到其摘要

(

如果用甲的公钥能够解开此摘要,说明此摘要肯定是甲发的,因为只有甲的公钥才能解开用甲的私钥加密的信息

,

而甲的私钥只有甲自己知道

)

,并对收到的文件

(

解密后的合同文件

)

也进行同样的散列算法,通过比较其摘要是否一样

,

就可得知此文件是否被篡改过

(

因为若摘要相同,则肯定信息未被改动,这是散列算法的特点

)

。这样不仅解决了证明发送人身份的问题,同时还解决了文件是否被篡改问题。

问题

6

通过对称加密算法加密其文件,再通过非对称算法加密其对称密钥

,

又通过散列算法证明其发送者身份和其信息的正确性,这样是否就万无一失了

?

回答是否定的。问题在于乙并不能肯定他所用的所谓甲的公钥一定是甲的

,

解决办法是用数字证书来绑定公钥和公钥所属人。

数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件

,

是网络通信中标识通信各方身份信息的一系列数据,它提供了一种在

Internet

上验证身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证,人们可以在交往中用它来识别对方的身份。

最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。一般情况下证书中还包括密钥的有效时间、发证机关

(

证书授权中心

)

名称、该证书的序列号等信息。它是由一个权威机构——

CA

机构,又称为证书授权

(Certificate

Authority)

中心发放的。

CA

机构作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。

CA

中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。

CA

机构的数字签名使得攻击者不能伪造和篡改证书,

CA

PKI

的核心,负责管理

PKI

结构下的所有用户(包括各种应用程序)的证书,把用户的公钥和用户的其他信息捆绑在一起,在网上验证用户的身份。

因为数字证书是公开的,就像公开的电话簿一样,在实践中,发送者(即甲)会将一份自己的数字证书的拷贝连同密文、摘要等放在一起发送给接收者(即乙),而乙则通过验证证书上权威机构的签名来检查此证书的有效性(只需用那个可信的权威机构的公钥来验证该证书上的签名就可以了),如果证书检查一切正常,那么就可以相信包含在该证书中的公钥的确属于列在证书中的那个人(即甲)。

问题

7

至此似乎很安全了。但仍存在安全漏洞,例如:甲虽将合同文件发给乙

,

但甲拒不承认在签名所显示的那一时刻签署过此文件

(

数字签名就相当于书面合同的文字签名

)

,并将此过错归咎于电脑,进而不履行合同,怎么办

?

解决办法是采用可信的时钟服务

(

由权威机构提供

)

,即由可信的时间源和文件的签名者对文件进行联合签名。在书面合同中,文件签署的日期和签名一样均是十分重要的防止文件被伪造和篡改的关键性内容

(

例如合同中一般规定在文件签署之日起生效

)

。在电子文件中,由于用户桌面时间很容易改变

(

不准确或可人为改变

)

,由该时间产生的时间戳不可信赖,因此需要一个第三方来提供时间戳服务(数字时间戳服务(

DTS

)是网上安全服务项目,由专门的机构提供)。此服务能提供电子文件发表时间的安全保护。

时间戳产生的过程为

:

用户首先将需要加时间戳的文件用哈希编码加密形成摘要,然后将该摘要发送到

DTS

DTS

在加入了收到文件摘要的日期和时间信息后再对该文件加密(数字签名),然后送回用户。因此时间戳

(time-stamp)

是一个经加密后形成的凭证文档,它包括三个部分:需加时间戳的文件的摘要,

DTS

收到文件的日期和时间,

DTS

的数字签名。由于可信的时间源和文件的签名者对文件进行了联合签名

,

进而阻止了文档签名的那一方

(

即甲方

)

在时间上欺诈的可能性

,

因此具有不可否认性。

问题

8:

有了数字证书将公

/

私钥和身份绑定

,

又有权威机构提供时钟服务使其具有不可否认性

,

是不是就万无一失了

?

,

仍然有问题。乙还是不能证明对方就是甲,因为完全有可能是别人盗用了甲的私钥

(

如别人趁甲不在使用甲的电脑

),

然后以甲的身份来和乙传送信息

,

这怎么解决呢

?

解决办法是使用强口令、认证令牌、智能卡和生物特征等技术对使用私钥的用户进行认证,以确定其是私钥的合法使用者。

解决这个问题之前我们先来看看目前实现的基于

PKI

的认证通常是如何工作的。以浏览器或者其他登记申请证书的应用程序为例说明,在第一次生成密钥的时候会创建一个密钥存储,浏览器用户会被提示输入一个口令,该口令将被用于构造保护该密钥存储所需的加密密钥。如果密钥存储只有脆弱的口令保护或根本没有口令保护,那么任何一个能够访问该电脑浏览器的用户都可以访问那些私钥和证书。在这种场景下

,

又怎么可能信任用

PKI

创建的身份呢

?

正因为如此,一个强有力的

PKI

系统必须建立在对私钥拥有者进行强认证的基础之上,现在主要的认证技术有:强口令、认证令牌、智能卡和生物特征(如指纹,眼膜等认证)。

以认证令牌举例

:

假设用户的私钥被保存在后台服务器的加密容器里,要访问私钥,用户必须先使用认证令牌认证(如用户输入账户名、令牌上显示的通行码和

PIN

等),如果认证成功,该用户的加密容器就下载到用户系统并解密。

通过以上问题的解决,就基本满足了安全发送文件的需求。下面总结一下这个过程

,

对甲而言整个发送过程如下

:

1.

创建对称密钥

(

相应软件生成,并且是一次性的

)

,用其加密合同,并用乙的公钥打包对称密钥。

2.

创建数字签名,对合同进行散列算法

(

MD5

算法

)

并产生原始摘要,甲用自己的私钥加密该摘要

(

/

私钥既可自己创建也可由

CA

提供

)

3.

最后

,

甲将加密后的合同、打包后的密钥、加密后的摘要

,

以及甲的数字证书

(

由权威机构

CA

签发

)

一起发给乙。

而乙接收加密文件后,需要完成以下动作

:

1.

接收后,用乙的私钥解密得到对称密钥

,

并用对称密钥解开加密的合同

,

得到合同明文。

2.

通过甲的数字证书获得属于甲的公钥

,

并用其解开摘要

(

称做摘要

1)

3.

对解密后的合同使用和发送者同样的散列算法来创建摘要

(

称做摘要

2)

4.

比较摘要

1

和摘要

2,

若相同

,

则表示信息未被篡改

,

且来自于甲。

甲乙传送信息过程看似并不复杂

,

但实际上它由许多基本成分组成

,

:

对称

/

非对称密钥密码技术、数字证书、数字签名、证书发放机构(

CA

)、公开密钥的安全策略等

,

这其中最重要、最复杂的是证书发放机构(

CA

)的构建。在此强调下证书和签名:

证书实际对于非对称加密算法(公钥加密)来说的,一般证书包括公钥、姓名、数字签名三个部分。证书好比身份证,证书机构(ca)就好比是公安局,职责就是负责管理用户的证书也就是身份证。比如我的公钥是FrankKey,姓名是FrankXuLei。公安局可以给我登记,但是怎么保证我和别的FrankXuLei区别开呢,于是公安局(证书机构)就使用我的名字和密钥做了个组合,再使用一种哈希算法,得出一串值,来标识我的唯一性,这个值就是我的身份证号码,也就是证书里的数字签名(消息摘要),同时为了不能让黑客仿造数字证书,数字证书的发行者用自己的私钥对数字签名进行加密,这样,使用该数字证书的网络交易实体就可以用证书发行者的公钥进行解密验证。(即:数字签名的目的是证明自己的身份的确是真实的自己而非其他人,所以需要用自己的私钥进行加密,让使用者用公钥进行解密验证,从而从技术上杜绝了伪造自己的黑客。)

假设一个朋友给我写信,他就可以到公安局(证书机构)来查找我的身份证(证书)。上面包括我的个人信息,可以保证这个公钥就是我的。然后他把新建进行加密,邮寄给我。别人即使拆开我的信件,因为没有密钥进行解密,所以无法阅读我的信件内容。这样就保证了信息安全。

所以说加密不一定要证书,取决于你数据安全具体的需求。一般大型的电子商务网站都有自己特定的证书。证书管理的机构比较有名的就是VeriSign(可以说是互联网上的身份证管理局)。企业可以申请注册,它会给申请者生成特定的签名。我们自己的企业内部应用如果需要的话,可以在企业局域网内部建立企业私有的证书服务器,来产生和管理证书。其实X.509是由国际电信联盟(ITU-T)制定的一种定义证书格式和分布的国际标准(相当于制作身份证的规范)。为了提供公用网络用户目录信息服务,并规定了实体鉴别过程中广泛适用的证书语法和数据接口,X.509称之为证书,或者说是身份证的一种形式,类似与我们现在的二代身份证,也是身份证的一种,根据特定的标准制作出来的。另外证书使用的时候还有有效期的限制,和我们的身份证的10年有效期一样。证书也可以设置有效期。

附:U盾的工作原理介绍一、什么是U盾

U盾,即工行2003年推出并获得国家专利的客户证书USBkey,是工行为您提供的办理网上银行业务的高级别安全工具。它外形酷似U盘,像一面盾牌,时刻保护着您的网上银行资金安全。从技术角度看,U盾是用于网上银行电子签名和数字认证的工具,它内置微型智能卡处理器,采用1024位非对称密钥算法对网上数据进行加密、解密和数字签名,确保网上交易的保密性、真实性、完整性和不可否认性二、工作原理

U盾又作移动数字证书,它存放着你个人的数字证书,并不可读取。同样,银行也记录着你的数字证书。当你尝试进行网上交易时,银行会向你发送由时间字串,地址字串,交易信息字串,防重放攻击字串组合在一起进行加密后得到的字串A,你的U盾将跟据你的个人证书对字串A进行不可逆运算得到字串B,并将字串B发送给银行,银行端也同时进行该不可逆运算,如果银行运算结果和你的运算结果一致便认为你合法,交易便可以完成,如果不一致便认为你不合法,交易便会失败。(理论上,不同的字串A不会得出相同的字串B,即一个字串A对应一个唯一的字串B;但是字串B和字串A无法得出你的数字证书,而且U盾具有不可读取性,所以任何人都无法获行你的数字证书。并且银行每次都会发不同的防重放字串(随机字串)和时间字串,所以当一次交易完成后,刚发出的B字串便不再有效。综上所述,理论上U盾是绝对安全的****注意是理论上发生伪造概率大约为2的80次方分之一,但是如果有像变形金刚中的那种DNAbasecomputer的话。参考文献:/uid-23637692-id-3057988.html(介绍了PKI体系和常见证书)

数字签名与数字证书2013-07-2509:41

10986人阅读

评论(3)

\o"收藏"收藏

\o"举报"举报

分类:

Java-编程语言(93)

版权声明:本文为博主原创文章,未经博主允许不得转载。目录\o"系统根据文章中H1到H6标签自动生成文章目录"(?)\o"展开"[+]前言先看一下百度百科对数字签名和数字证书的解释:数字签名:将报文按双方约定的HASH算法计算得到一个固定位数的报文摘要。在数学上保证:只要改动报文中任何一位,重新计算出的报文摘要值就会与原先的值不相符。这样就保证了报文的不可更改性。将该报文摘要值用发送者的私人密钥加密,然后连同原报文一起发送给接收者,而产生的报文即称数字签名数字证书:数字证书就是互联网通讯中标志通讯各方身份信息的一系列数据,提供了一种在Internet上验证您身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。它是由一个由权威机构CA机构,又称为证书授权(CertificateAuthority)中心发行的,人们可以在网上用它来识别对方的身份。数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。对数字签名和数字证书的理解一直较模糊。最近看了一篇很形象的关于数字证书的图形化介绍,豁然就开朗了^^原文:WhatisaDigitalSignature?中文版

正文1.鲍勃有两把钥匙,一把是公钥,另一把是私钥。

2.

鲍勃把公钥送给他的朋友们帕蒂、道格、苏珊每人一把。3.

苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果4.鲍勃收信后,用私钥解密,就看到了信件内容

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论