每個人都有一對“鑰匙”(數(shù)字身份),其中一個只有她/他本人知道(密鑰),另一個公開的(公鑰)。簽名的時候用密鑰,驗(yàn)證簽名的時候用公鑰。又因?yàn)槿魏稳硕伎梢月淇盥暦Q她/他就是你,因此公鑰必須向接受者信任的人(身份認(rèn)證機(jī)構(gòu))來注冊。注冊后身份認(rèn)證機(jī)構(gòu)給你發(fā)一數(shù)字證書。對文件簽名后,你把此數(shù)字證書連同文件及簽名一起發(fā)給接受者,接受者向身份認(rèn)證機(jī)構(gòu)求證是否真地是用你的密鑰簽發(fā)的文件。以下就是贏在威客網(wǎng)為您推薦的數(shù)字簽名設(shè)計(jì)的技巧。
在通訊中使用數(shù)字簽名一般基于以下原因:
鑒權(quán)
公鑰加密系統(tǒng)允許任何人在發(fā)送信息時使用公鑰進(jìn)行加密,數(shù)字簽名能夠讓信息接收者確認(rèn)發(fā)送者的身份。當(dāng)然,接收者不可能百分之百確信發(fā)送者的真實(shí)身份,而只能在密碼系統(tǒng)未被破譯的情況下才有理由確信。
鑒權(quán)的重要性在財(cái)務(wù)數(shù)據(jù)上表現(xiàn)得尤為突出。舉個例子,假設(shè)一家銀行將指令由它的分行傳輸?shù)剿闹醒牍芾硐到y(tǒng),指令的格式是(a,b),其中a是賬戶的賬號,而b是賬戶的現(xiàn)有金額。這時一位遠(yuǎn)程客戶可以先存入100元,觀察傳輸?shù)慕Y(jié)果,然后接二連三的發(fā)送格式為(a,b)的指令。這種方法被稱作重放攻擊。
完整性
傳輸數(shù)據(jù)的雙方都總希望確認(rèn)消息未在傳輸?shù)倪^程中被修改。加密使得第三方想要讀取數(shù)據(jù)十分困難,然而第三方仍然能采取可行的方法在傳輸?shù)倪^程中修改數(shù)據(jù)。一個通俗的例子就是同形攻擊:回想一下,還是上面的那家銀行從它的分行向它的中央管理系統(tǒng)發(fā)送格式為(a,b)的指令,其中a是賬號,而b是賬戶中的金額。一個遠(yuǎn)程客戶可以先存100元,然后攔截傳輸結(jié)果,再傳輸(a,b3),這樣他就立刻變成百萬富翁了。
不可抵賴
在密文背景下,抵賴這個詞指的是不承認(rèn)與消息有關(guān)的舉動(即聲稱消息來自第三方)。消息的接收方可以通過數(shù)字簽名來防止所有后續(xù)的抵賴行為,因?yàn)榻邮辗娇梢猿鍪竞灻o別人看來證明信息的來源。