數字簽名的安全性基於:
1. Hash算法的抗碰撞性(collision-resistance)
即很難找到兩個不同的原文 m0, m1,讓它們的摘要Hash(m0) = Hash(m1)。
例:SHA-3現在比MD5,SHA-2都要安全,很難碰撞。
2. 偽造數字簽名的難度
即對於“新鮮”的原文摘要hash(m*),很難算出壹個在它上面的合法簽名,除非掌握服務器私鑰。
所謂“新鮮”是指這個摘要hash(m*)沒有被服務器簽名過。(簽過的原文-簽名對沒意義,本來就是服務器簽的)
所以,理論上來說,有下面兩種典型的攻擊:
1. 找與“舊”原文摘要值相同的原文,等價於攻擊hash算法,找出碰撞。如使用題主提到的用彩虹表或者其他的手段。
2. 直接偽造數字簽名。
其實,達到偽造任意簽名,就可以說完全攻破了這個數字簽名系統……
為什麽軟件需要數字簽名:網頁鏈接