MAC比數字簽名好嗎?
MAC 不同於數字簽名,因為 MAC 值是使用共享密鑰生成和驗證的。與數字簽名相比,這是否以任何方式使 MAC 處於劣勢?其中一個比另一個更好?
正如您所說,MAC“是使用共享密鑰生成和驗證的”,而使用數字簽名時,簽名是用一個密鑰生成的,並用另一個密鑰進行驗證(並且用單獨的驗證器密鑰)。
因此,通過數字簽名,我們可以賦予某人驗證簽名的能力,但不能生成它們;使用 MAC,我們不能這樣做。
這個區別重要嗎?嗯,這完全取決於我們在做什麼,以及我們是否可以驗證消息的人是否也可以創建它們。
例如,考慮 Alice 向 Bob 發送消息的情況。Bob 想確保這些消息確實來自 Alice,因此它們共享密鑰;Alice 對消息進行簽名/MAC,然後 Bob 驗證這些消息。如果那是該密鑰的唯一用途,我們不介意 Bob 是否也可以使用他的密鑰來生成消息,因為我們可以相信他不會。畢竟,唯一會驗證消息的人實際上是 Bob。如果 Bob 確實生成了他自己的資訊,那麼他唯一能用它來愚弄的人就是他自己,而這沒有任何意義。
對於另一個方向的範例,考慮分佈式股票報價的範例,其中(例如)紐約證券交易所發布股票的目前價格。現在,人們需要能夠確定這些報價是否來自紐約證券交易所,因此它們需要以某種方式進行驗證。如果這些報價被 MAC 化,這意味著 NYSE 需要分發 MAC 密鑰(以便人們可以驗證報價);這意味著有人可以生成虛假的股票報價(說的是,通用汽車的價格剛剛大幅下跌);因為他有 MAC 密鑰,他可以計算出正確的 MAC,這會欺騙其他人,導致他們傾銷所有通用汽車股票。為了防止這種情況,任何此類系統都需要使用簽名方法,並分發 NYSE 簽名密鑰。這樣,任何人都可以驗證股票報價,
現在,下一個明顯的問題是“如果數字簽名可以做 MAC 可以做的所有事情,我們為什麼還要使用 MAC”?嗯,答案是,雖然可以在我們目前使用 MAC 的地方使用數字簽名,但它也更昂貴;MAC 的計算和驗證成本要低得多(幾個數量級),而且還要短一些。當一個相當便宜的 MAC 可以完成這項工作時,沒有人會使用數字簽名。