今天,我來給大家簡單介紹一下用對稱密碼體制進行數字簽名,也許好多人聽過用
公鑰密碼體制進行數字簽名的,還沒有聽過這對稱密碼體制也可用來簽名。但我們現在
用得最多的當然是用公鑰密碼體制進行數字簽名的。
先說說數字簽名的功能。數字簽名可以解決否認、偽造、篡改及冒充等問題、
凡是需要對使用者的身份進行判斷的情況都可以使用數字簽名,比如加密信件、商
務信函、定貨購買系統、遠端金融交易、自動模式處理等等。
數字簽名在資訊保安的五大服務中主要是提供的是抗否認服務。資料簽名一般不採用
直接對資料進行簽名(好多資料上說是加密,這實際上是不對的雖然加密與簽名用的是加密
演算法,但是提供的安全服務與處理時是有一點小小的區別的),而是傳送方對整個明文進行
加密變換----如使用md5雜湊演算法,得到乙個雜湊值,將雜湊值進行簽名處理。
好了,說了這麼多的準備工作,該進入正題了,我這裡是由例子講解,設a:傳送方
b:接收方 另外,當然還要乙個a與b都信任的乙個機構,這個機構能提供金鑰的生成與分發
並且在通訊雙方發生爭執時能供確定地,公證地,能作為法律依據的裁定,說得通俗點就是
具有類似裁判的作用,我這裡設它為ca
當然,這次簽名過程中,a、與b在此過程中都要與ca進行通訊,所以a,b都有與ca通訊
的秘密金鑰,我們暫且設為ka與kb,也就是(a,ca,ka),(b,ca,kb)。
過程如下進行:
1、使用者a用自己的秘密金鑰加密資料報文p等到了密文ka(p),並且發給可信任機構ca。
2、ca用ka對密文ka(p)進行解密得到了明文p,然後建立乙個由a的名字和位址、日期d
初始的明文p組成乙個新的報文(a,d,p),這裡的日期d用於以後認證與作證
然後再用個對任何人都不知的金鑰k加密新的報文(a,d,p),從而得到新密文
k((a,d,p))。並把這個密文k((a,d,p))回發給傳送方a
3、這時,傳送方a把這個密文k((a,d,p))發給接收方b。進行a與b的通訊。
4、接收方b把k((a,d,p))發給ca,請求得到報文資料(當然這裡是對b與ca來說的,
實質上對其它使用者來說這個報文資料是以kb加密的密文) ,ca把k((a,d,p))
解密得到(a,d,p),並且用kb加密得到了kb((a,d,p)),然後嘛就發給b了。
5、b用自己的金鑰kb解密得到了(a,d,p),這就是a與b通訊的明文了。
如何抗否認過程:
如果傳送方a否認曾發過p給b的話,則b可以把密文k((a,d,p))提供給法官
法官則要求ca解密這個密文k((a,d,p)),然後法官可看到密文(a,d,p)。
顯然這樣法官則可確定是a傳送過,因為b不知k,所以也不可能偽造密文k((a,d,p))
同理,若b否認曾收到,也可得出。
1、ca是如何知是a請求要與b通訊的?
2、如果b否認曾收到過a發的資訊,則法官該如何進行取證裁定?
本文僅是簡單介紹用對稱密碼體制簽名的,要是有什麼不對地方,請指出,本人將不勝感激
我的郵箱是anmeihong@sina.***
對exe檔案進行數字簽名
在之前的文章 py2exe inno setup整合打包python程式 中,我們編寫了python指令碼,使得可以一鍵對python編寫的windows程式進行打包,並編譯成exe可執行檔案,現在我們在此基礎上新增對exe檔案進行數字簽名的指令碼。首先,在對exe檔案進行數字簽名時,當然要有乙個p...
如何給ocx,dll控制項進行數字簽名
下面用到的命令可以從 microsoft visual studio 6.0安裝後的 sdk bin 目錄中找到 1 製作證書 makecert sv bksx.pvk ss 某某ie外掛程式 n cn 公司名稱,e lga 163.com,o lga bksx.cer 這個是製作證書 sv 是製作...
對稱加密,非對稱加密,數字簽名
一般,非對稱加密有一對密碼,分別稱為公鑰和私鑰,互相成對使用。對稱加密,是收發方使用同一密碼,加密和解密。一種場景是 公鑰加密,私鑰解密。對外公開公鑰,私鑰自己保留,傳送資訊時,使用公鑰加密後傳送,接收方使用私鑰解密 一般地,使用這種方式傳送對稱加密的密碼,雙方得到該密碼後,使用對稱加密方式收發資料...