數字簽名能用對稱加密嗎?如果用了會怎樣

我知道現在的數字簽名都是用公鑰和私鑰相結合,但是如果用了對稱加密會怎樣啊,真的很想知道啊


lz搞錯了一個問題,對稱加密和非對稱加密一字之差,但是用途是不一樣的,尤其是在數字簽名這個應用里。對稱加密和非對稱加密的確都可以用於明文的加密,但是非對稱加密的更大的用途是身份驗證——因為通常認為私鑰的持有者只有一個,持有私鑰的只能是本人。

數字簽名就是利用了這個特性,如果數字簽名正確,那麼驗證者可以認為1,消息無誤,未經篡改;2,發消息的人的身份;3,發消息的人無法抵賴他發過這條消息。如果換成對稱加密,那麼2,3都不能保證。


簡單來說,如果使用的對稱密鑰,也就是說,簽名和驗證用的是同一個密鑰k,那麼任一個持有k的人都給完成簽名,這個文件到底是誰簽的就不知道了。(簽名演算法本身是完全公開的,所有人都知道,簽名用的密鑰才是驗證「是誰簽的」的唯一手段)

具體例子:

假設你和銀行都有可以用來簽名的、相同的密鑰k,

你在第一次轉賬一千塊的時候給自己的電子支票用k簽了個名。

銀行內部某人知道k(很正常,因為k必須公開,否則其他人沒法驗證你的簽名),通過這次交易知道了你的卡號,然後他用你的信息和k弄了個一萬塊的電子支票轉賬給他自己。

月底你查賬單,發現虧了一萬,起訴銀行,結果敗訴,原因是誰也說不清到底是你自己用k簽的名還是別人用k簽的名。


最直接的回答,看你的應用場景。

數字簽名有兩個作用,一個是消息完整性,就是保證接收的過程中消息沒有被改過;一個是提供不可否認的證明,說明這個文件確實是誰發的。

如果你只是要提供完整性,在對稱密鑰情形下,完全可以實現,並且十分容易。考察下面的情景,假定A女對B男很有好感,同時E女也對B男有想法,而且E女是個哎踢女漢子,隨時監控A女對B發的消息並進行過濾。A向B發送「我想你嘞」,但是害怕被E女漢子發現,怒火中燒並且把消息改成「你個sb」,於是A根B嗲,B同意他們雙方共享了一個密鑰K,A再發送消息的時候,再「我想你嘞」後面再加上一堆校驗信息,我們記為d,d是通過 消息,密鑰以及可能的一些隨機數作用產生,我們記為d&<=MAC(K,M) (MAC 為message authenticaton code 縮寫)。他的功能是要保證沒有人在不知道K的情況下,可以產生一個合法的d。在對稱秘鑰的情境下,這種簽名又叫消息認證碼,實際使用中可以是某些特定的帶密鑰的hash。最簡單的例子如果K=(a,b), d=MAC(K,M)=aM+b(註:這個MAC只是一次有效,更詳盡的認證碼理論和構造可參考http://cseweb.ucsd.edu/~mihir/cse207/w-mac.pdf)。

但是消息認證碼有個問題, A和B都知道K,他們都可以產生d,假如B男跟朋友去炫耀,說你看有妞主動跟我示好,拿出「我想你嘞||d」,並拿出K讓朋友驗證,別人去問A女,A很不好意思,就說,「B精蟲入腦了把,自己編這玩意來歪歪」。這就如 @玄星所說,在對稱密鑰的情況下,「簽名」(即MAC)是可以被否認的,因為雙方都有可能生成d,在這種情形下,如果不僅要保證消息不被篡改,同時要提供不可否認性,只能使用公鑰密碼系統,也就是傳統的數字簽名,在這種情況下,只有一個人擁有私鑰並且只有他能夠生成簽名,因此如果簽過名,不能再否認。

ps,no offense,不知道一樓想說啥


約定text為文本,C1 P1分別是1這個人的加密和解密演算法對應的密鑰

C2 P2是2這個人的加密和解密演算法對應的密鑰。加解密演算法全公開。

step1:1對其簽名text-&> text,C1(text)

step2:2對其簽名 text,c1(text)-&>text,c2(c1(text))

簽名完畢。

驗證的時候需要分別出示密鑰。這個不太方便。而且不能保證 P1(P2(C1(C2(text))))?=P2(P1(C1(C2(text))))=text

如果是公鑰依舊是C1,P1 C2,P2

只公開C1和C2

step1:text-&>text,P1(text)

step2:text,P1(text)-&>text,P2(P1(text))

驗證的時候使用C1,C2(公開的,不需要麻煩簽名的人),並且當使用RSA演算法的時候一定能保證 P1(P2(C1(C2(text))))=P2(P1(C1(C2(text))))=text 驗證完畢。


大家說的都對,但是數字簽名非常重要一點就是抗抵賴,如果使用對稱加密的話,和 @玄星說的一樣,失去了抗抵賴這一要素,所以電子簽名不符合這方面場景。能不能用呢?如果用對稱加密那麼只能做到加密這一點,失去了抗抵賴這一要素,所以不可以用,用了就不叫數字簽名。


不能哦~如果用了的話就不能抗抵賴


為何樓主不去百度百度非對稱加密呢?知乎一群大佬怎麼會回答這麼小白或者說顯得ZZ的一個問題呢。


不能,數字簽名用到了非對稱加密技術,用私鑰加密,對方用公鑰解密確定身份。


當然不可以。能簽名意味著是唯一的,而且簽完名後內容依然是可見的,對稱加密做不到


不邀自來。

舉個例子,假如某部門經常在門口的飯店打白條,打白條的時候各自簽自己的名字,月底結帳的時候就能知道誰欠了多少帳,如果統一簽部門名稱,那就不知道是誰消費,只能集體埋單了。


推薦閱讀:

用已知加密演算法AES加密文本123,得到密文xxx,問能否根據密文、加密演算法、原文本123直接推導出密鑰是什麼?
PDF文件禁止列印的原理是什麼?
異或加密使用於哪種需求?
怎樣設置密碼最難被破解?
關於https中的ssl證書,伺服器發往客戶端的信息是安全的嗎? ?

TAG:網路安全 | 信息技術IT | 加密 | 密碼 | 數字簽名 |