整理数字证书及其认证过程.docx
《整理数字证书及其认证过程.docx》由会员分享,可在线阅读,更多相关《整理数字证书及其认证过程.docx(10页珍藏版)》请在冰豆网上搜索。
整理数字证书及其认证过程
数字证书及其认证过程
编辑整理:
尊敬的读者朋友们:
这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(数字证书及其认证过程)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为数字证书及其认证过程的全部内容。
加密和解密使用同一个密钥的算法,称为对称加密算法;加密和解密使用的是不同的密钥,称为非对称加密算法,公钥系统即属于非对称加密算法.对于对称加密而言,需要着重保护的是对称密钥,对于公钥算法而言,需要着重保护的是私钥.
公钥加密算法,以及衍生出的数字签名、数字证书技术,不仅广泛应用于Internet通讯中,例如HTTPS协议中的SSL/TLS,在单机系统中也越来越受到重视,例如WindowsXP的设备驱动程序、。
NET的GACassembly都要求数字签名。
微软从Windows98/NT4起即提供了CryptographAPI,支持DES,RC2,RC4,IDEA等对称加密算法和RSA公钥系统等非对称密算法,以及MD5,SHA,MAC等摘要(Digest,也称为Hash,散列)算法。
本文译自:
scape。
com/tech/security/ssl/howitworks。
html
这是一篇生动浅显的文章,对了解公钥系统的工作原理很有帮助,CSDN上已有一篇译文:
http:
//www。
csdn。
net/Develop/article/27/27524。
shtm
但本人认为上文的关键地方不够准确,欠通顺。
本译文在上篇译文的基础上,关键的术语采用了通用译法,少数地方采用了意译,而且附有英文原文,有翻译不当的地方大家可以对照原文。
希望能对公钥系统有兴趣的朋友们有所帮助.
BTW:
上面提到的所有对称加密和非对称加密,它们的加解密算法都是公开的,只要不知道密钥,算法的设计者有信心使加密结果不会被轻易破解,这点与WAPI截然不同:
)。
以下是中英文对照的译文:
Publickeyencryptionisatechniquethatusesapairofasymmetrickeysforencryptionanddecryption。
Eachpairofkeysconsistsofapublickeyandaprivatekey.Thepublickeyismadepublicbydistributingitwidely。
Theprivatekeyisneverdistributed;itisalwayskeptsecret.
公钥加密是使用一对非对称的密钥加密或解密的技术.每一对密钥由公钥和私钥组成。
公钥被广泛发布。
私钥是隐密的,不公开。
Datathatisencryptedwiththepublickeycanbedecryptedonlywiththeprivatekey。
Conversely,dataencryptedwiththeprivatekeycanbedecryptedonlywiththepublickey。
Thisasymmetryisthepropertythatmakespublickeycryptographysouseful。
用公钥加密的数据只能够被私钥解密。
反过来,使用私钥加密的数据只能用公钥解密.这个非对称的特性使得公钥加密很有用。
USINGPUBLICKEYCRYPTOGRAPHYFORAUTHENTICATION
使用公钥加密法认证
Authenticationistheprocessofverifyingidentitysothatoneentitycanbesurethatanotherentityiswhoitclaimstobe。
InthefollowingexampleinvolvingAliceandBob,publickeycryptographyiseasilyusedtoverifyidentity。
Thenotation{something}keymeansthatsomethinghasbeenencryptedordecryptedusingkey。
验证是一个核实身份的过程,以便一方能确认另一方的确是其所声称的那个身份。
在下列例子中包括甲和乙,公钥加密会轻松地校验身份。
符号{数据}key意味着”数据”已经使用key加密或解密。
SupposeAlicewantstoauthenticateBob.Bobhasapairofkeys,onepublicandoneprivate.BobdisclosestoAlicehispublickey(thewayhedoesthisisdiscussedlater)。
AlicethengeneratesarandommessageandsendsittoBob:
A-〉B random-message
BobuseshisprivatekeytoencryptthemessageandreturnstheencryptedversiontoAlice:
B->A {random—message}bobs-private—key
AlicereceivesthismessageanddecryptsitbyusingBob’spreviouslypublishedpublickey。
ShecomparesthedecryptedmessagewiththeonesheoriginallysenttoBob;iftheymatch,sheknowsshe'stalkingtoBob.Animposterpresumablywouldn’tknowBob’sprivatekeyandwouldthereforebeunabletoproperlyencrypttherandommessageforAlicetocheck。
假如甲想校验乙的身份。
乙有一对密钥,一个是公开的,另一个是私有的。
乙透露给甲他的公钥。
甲产生一个随机信息发送给乙.
甲——〉乙:
randommessage
乙使用他的私钥加密信息,把加密后的信息返回甲.
乙—-〉甲:
{random—message}乙的私钥
甲收到这个信息然后使用乙的前面公开的公钥解密。
他比较解密后的信息与他原先发给乙的信息。
如果它们完全一致,就会知道在与乙说话。
任意一个中间人不会知道乙的私钥,也不能正确加密甲检查的随机信息。
BUTWAIT,THERE’SMORE
等一下,事情还没有完
Unlessyouknowexactlywhatyouareencrypting,itisneveragoodideatoencryptsomethingwithyourprivatekeyandthensendittosomebodyelse。
Thisisbecausetheencryptedvaluecanbeusedagainstyou(remember,onlyyoucouldhavedonetheencryptionbecauseonlyyouhavetheprivatekey).
用私钥加密某些信息,然后发送给其他人不是一个好主意,除非你清楚知道这个信息的含义。
因为加密后的信息可能被用来对付你(记住,别人知道该信息是你加密的,因为只有你有加密用的私钥).
So,insteadofencryptingtheoriginalmessagesentbyAlice,Bobconstructsamessagedigestandencryptsthat。
Amessagedigestisderivedfromtherandommessageinawaythathasthefollowingusefulproperties:
Thedigestisdifficulttoreverse。
SomeonetryingtoimpersonateBobcouldn’tgettheoriginalmessagebackfromthedigest。
Animpersonatorwouldhaveahardtimefindingadifferentmessagethatcomputedtothesamedigestvalue.
所以,取代直接加密甲发来的原始信息,乙创建一个信息摘要并且加密该摘要。
信息摘要由任意信息运算而来,并具有以下有用的特性:
1。
从这个摘要值难以还原出原始信息。
任何人即使伪装成乙,也不能从摘要值得到原始信息;
2.不同的信息很难计算出相同的摘要值;
Byusingadigest,Bobcanprotecthimself。
HecomputesthedigestoftherandommessagesentbyAliceandthenencryptstheresult。
HesendstheencrypteddigestbacktoAlice.AlicecancomputethesamedigestandauthenticateBobbydecryptingBob’smessageandcomparingvalues。
使用摘要,乙能够保护自己。
他计算甲发出的任意信息的摘要,加密摘要值,然后发送加密的摘要值给甲。
甲能够计算出相同的摘要值并且解密乙的信息,最终认证乙。
(译者注:
摘要(Digest)算法又称为散列(Hash)算法)
GETTINGCLOSER
进一步的讨论
Thetechniquejustdescribedisknownasadigitalsignature.BobhassignedamessagegeneratedbyAlice,andindoingsohehastakenastepthatisjustaboutasdangerousasencryptingarandomvalueoriginatedbyAlice。
Consequently,ourauthenticationprotocolneedsonemoretwist:
some(orall)ofthedataneedstobeoriginatedbyBob.
A—〉B hello,areyoubob?
B—>A Alice,ThisIsbob{digest[Alice,ThisIsBob]}bobs-private-key
Whenheusesthisprotocol,BobknowswhatmessageheissendingtoAlice,andhedoesn’tmindsigningit。
Hesendstheunencryptedversionofthemessagefirst,”Alice,ThisIsBob。
"Thenhesendsthedigested-encryptedversionsecond。
AlicecaneasilyverifythatBobisBob,andBobhasn'tsignedanythinghedoesn’twantto.
刚刚讨论的技术称为数字签名。
乙直接在甲产生的信息上签名,这样做和加密甲产生的任意信息是同样危险的。
因此我们的验证协议还需要加一些技巧:
某些或全部信息需要由乙产生:
甲——〉乙:
你好,你是乙么?
乙——〉甲:
甲,我是乙{摘要[甲,我是乙]}乙的私钥
使用这个协议,乙知道他发送给甲的信息的内容,他不介意在上面签名。
他先发送不加密的信息,"甲,我是乙”,然后发送该信息的加密后的摘要。
甲可以非常方便地核实乙就是乙,同时,乙还没有在他不想签名的信息上签名.
HANDINGOUTPUBLICKEYS
分发公钥
HowdoesBobhandouthispublickeyinatrustworthyway?
Let'ssaytheauthenticationprotocollookslikethis:
A—〉B hello
B—>A Hi,I'mBob,bobs—public-key
A-〉Bproveit
B—>AAlice,ThisIsbob {digest[Alice,ThisIsBob]}bobs—private-key
那么,乙怎样以可信的方式提交他的公钥呢?
看看如下所示的验证协议:
甲——>乙:
你好
乙-—〉甲:
嗨,我是乙,乙的公钥
甲——>乙:
请证明
乙——〉甲:
甲,我是乙{摘要[甲,我是乙]}乙的私钥
Withthisprotocol,anybodycanbeBob.Allyouneedisapublicandprivatekey。
YoulietoAliceandsayyouareBob,andthenyouprovideyourpublickeyinsteadofBob's。
Thenyouproveitbyencryptingsomethingwiththeprivatekeyyouhave,andAlicecan’ttellyou’renotBob.
使用这个协议,任何人都能够成为”乙".只要你有一对公钥和私钥。
你欺骗甲说你就是乙,只要提供你的公钥,而不是乙的公钥。
然后,你发送用你的私钥加密的信息,证明你的身份。
甲并不能发觉你并不是乙。
Tosolvethisproblem,thestandardscommunityhasinventedanobjectcalledacertificate。
Acertificatehasthefollowingcontent:
Thecertificateissuer’sname
Theentityforwhomthecertificateisbeingissued(akathesubject)
Thepublickeyofthesubject
Sometimestamps
Thecertificateissignedusingthecertificateissuer’sprivatekey。
Everybodyknowsthecertificateissuer'spublickey(thatis,thecertificateissuerhasacertificate,andsoon。
..).Certificatesareastandardwayofbindingapublickeytoaname。
为了解决这个问题,标准化组织发明了证书。
一个证书有以下的内容:
证书发行者的名称
被发给证书的实体(也称为主题)
主题的公钥
一些时间戳
证书使用发行者的私钥加密.每一个人都知道证书发行者的公钥(就是说,每个证书的发行者也拥有一个证书,以此类推).证书是一个把公钥与一个名称绑定的标准方式.
Byusingthiscertificatetechnology,everybodycanexamineBob'scertificatetoseewhetherit’sbeenforged。
AssumingthatBobkeepstightcontrolofhisprivatekeyandthatitreallyisBobwhogetsthecertificate,thenalliswell.Hereistheamendedprotocol:
A—〉B hello
B-〉AHi,I’mBob,bobs—certificate
A->Bproveit
B->AAlice,ThisIsbob{digest[Alice,ThisIsBob]}bobs—private-key
NowwhenAlicereceivesBob'sfirstmessage,shecanexaminethecertificate,checkthesignature(asabove,usingadigestandpublickeydecryption),andthencheckthesubject(thatis,Bob’sname)andseethatitisindeedBob。
ShecanthentrustthatthepublickeyisBob'spublickeyandrequestBobtoprovehisidentity.Bobgoesthroughthesameprocessasbefore,makingamessagedigestofhisdesignandthenrespondingtoAlicewithasignedversionofit.AlicecanverifyBob’smessagedigestbyusingthepublickeytakenfromthecertificateandcheckingtheresult。
通过使用证书技术,每个人都可以检查乙的证书,判断其是否被伪造.假设乙控制好他的私钥,并且他确实是得到证书的乙,就万事大吉了.下面是修订后的协议:
甲—->乙:
你好
乙——〉甲:
嗨,我是乙,乙的证书
甲-—〉乙:
请证明
乙——〉甲:
甲,我是乙{摘要[甲,我是乙]}乙的私钥
现在当甲收到乙的第一个信息,他能检查证书,核查证书上的签名(如上所述,使用摘要和公钥解密),检查证书中的主题(这里是乙的姓名),确定是乙.他就能相信公钥就是乙的公钥,然后要求乙证明自己的身份.乙通过前面描述过的过程,制作一个信息摘要,用一个签名版本答复甲.甲可以通过使用从证书上得到的公钥检验乙的信息摘要,并对比结果.
Abadguy—let’scallhimMallet—candothefollowing:
A—〉Mhello
M—>AHi,I’mBob,bobs-certificate
A->Mproveit
M—>A ?
?
?
?
ButMalletcan'tsatisfyAliceinthefinalmessage.Malletdoesn’thaveBob’sprivatekey,sohecan'tconstructamessagethatAlicewillbelievecamefromBob.
假设有一个坏小子,我们称他为H,他可以这么做:
甲——〉H:
你好
H—-〉甲:
你好,我是乙,乙的证书
甲——〉H:
请证明
H——〉甲:
?
?
?
H不能满足甲的最后一个信息,他没有乙的私钥,因此他不能建立一个令甲相信是来自乙的信息。
EXCHANGINGASECRET
交换密钥(secret)
OnceAlicehasauthenticatedBob,shecandoanotherthing-shecansendBobamessagethatonlyBobcandecode:
A->B {secret}bobs—public—key
TheonlywaytofindthesecretisbydecryptingtheabovemessagewithBob’sprivatekey.Exchangingasecretisanotherpowerfulwayofusingpublickeycryptography.EvenifthecommunicationbetweenAliceandBobisbeingobserved,nobodybutBobcangetthesecret。
一旦甲已经验证乙后,他就可以做另外的事情了-—发送给乙一个只有乙可以解密、阅读的(另一个)密钥:
甲——>乙:
{secret}乙的公钥
只有使用乙的私钥才能解密上述信息,得到secret(另一个密钥)。
交换(额外的)密钥是公钥密码术提供的另一个强有力的手段.即使在甲和乙之间的通讯被侦听,只有乙才能得到密钥。
ThistechniquestrengthensInternetsecuritybyusingthesecretasanotherkey,butthistimeit'sakeytoasymmetriccryptographicalgorithm(suchasDES,RC4,orIDEA)。
AliceknowsthesecretbecauseshegenerateditbeforesendingittoBob.BobknowsthesecretbecauseBobhastheprivatekeyandcandecryptAlice'smessage.Becausetheybothknowthesecret,theycanbothinitializeasymmetriccipheralgorithmandthenstartsendingmessagesencryptedwithit。
Hereisarevisedprotocol: