2012-11-10 52 views
2

(我只是想找到我失去了什麼......)爲什麼我們需要通過密鑰哈希?

假設約翰有明確短信,他就可以創建一個常規hash(如MD5或SHA256)和然後加密消息

John現在可以向Paul發送消息+其明文散列,Paul可以知道消息是否被更改。 (解密然後比較散列)。

即使如果攻擊者能夠改變encrpyted數據(沒有解密) - - 當保羅將打開消息 - 和重計算哈希 - 它不會產生相同的散列作爲一個約翰送給他。

那麼爲什麼我們需要散列鍵?

enter image description here

enter image description here

+0

你所說的「通過密鑰散列」是什麼意思?在你的例子中,密鑰函數是明文消息。 – SomeWittyUsername

+0

@icepack編輯感謝。 –

回答

1

它看起來像你不它僅僅是一個好主意,因爲通過在哈希鍵它顯示。數據確實是用原始密鑰加密的 - 幾乎是無限期的,顯然你上面的例子可以工作,但我會說你不能100%確定這個消息沒有被智能操縱,或者暴力試驗和錯誤,在另一方產生一個正確的解密,但不會觸發哈希檢查失敗。

的HMAC函數由消息發送器,以產生由冷凝祕密密鑰和消息輸入形成的值(MAC)。通常將MAC與消息一起發送到消息接收器。接收器使用與發送器所使用的相同的密鑰和HMAC功能來計算接收到的消息上的MAC,並將計算的結果與接收到的MAC進行比較。如果兩個值匹配,則消息已被正確接收,並且接收者可以確信發件人是共享密鑰的用戶社區的成員。

FIPS PUB 198
聯邦信息處理標準出版物
「的密鑰散列消息認證碼(HMAC)」

使用上述方法意味着你有一個額外的檢查安全。在解密消息之後,您將原始密鑰附加到消息並運行散列函數。然後,您將新散列與發送的散列進行比較。這是一個更好的檢查,因爲您知道攻擊者必須知道密鑰(或非常幸運)才能生成通過散列檢查的內容。這基本上是試圖避免那些可能知道哈希函數的攻擊者,並限制他們可以做出的改變。

+0

嗨,你可以去http://chat.stackoverflow.com/rooms/19369/room-for-royi-namir-and-pebbl –

+0

@羅伊納米爾道歉,我出去了昨天剩下的時間......今天再出來。如果你有問題,但我應該能夠在一週內回答他們。 – Pebbl

0

如果你問爲什麼鍵被散列,它允許數據庫或操作系統存儲在更安全的格式的密碼。系統可以通過比較密鑰的哈希和密鑰的存儲哈希來檢查密鑰的有效性。此外,一個安全系統不僅散列一個密鑰,而且還有一個密鑰+已知的隨機模式(= salt),它可以防止人們生成最常用密碼的散列字典。即使使用密碼=密碼,系統首先會將它附加到「passwordAK(43mafk2;)」並計算散列值,該散列值不再與任何其他人的預先計算好的字典相匹配,但攻擊者必須將他自己的密碼字典連接到「AK (43mafk2「;以及遍佈再次計算哈希值對系統中的每個密碼

+0

恕我直言 - 鹽沒有關係。它們只是爲了防止彩虹表而存在,並防止相同的數據產生相同的散列。我的問題是'爲什麼我們需要通過鑰匙來計算哈希值? –

+0

你能否詳細說明一下,「hash _by_ key」是什麼意思? –

+0

已編輯。謝謝....... –

0

之所以有原來的未加密的文字的哈希以增加安全性。這裏的問題不是是否有人操縱的加密數據 - 該操作將極少解密成有意義的事情,而是防止別人誰擁有從解密的文字,改變它,並使用相同的密鑰重新加密它的關鍵。

所以基本上,即使有人有辦法解密您的文本,如果他們這樣做,改變您的文本,重新加密並將加密數據傳遞到最終目的地,您可以驗證數據是否被操縱。

例如: 我有文件#1,裏面有文本「Samuel」 - 這是我們組織中間諜的名字。讓我們假設我將它加密到帶有文本「qwerty」的文件#2中。我將文件#2傳遞給彼得送到亞當。然而,彼得是一個狡猾的騙子,是蘇聯的間諜。他之前偷了我的加密/解密協議,他想通過將「Samuel」改爲「Justin」來誤導我們。於是,他解密「QWERTY」回「塞繆爾」,改變「塞繆爾」到「賈斯汀」,用同樣的規則加密成「asdfg」,並沿此文件,以亞當通行證。亞當解密文件#2成功,並會承擔「賈斯汀」是蘇聯間諜....如果他不湊「賈斯汀」,並要求我確認我們是否哈希匹配。驚喜!他們不!因此,我們知道有人操縱數據,並且有人知道解密/加密協議!數據完整性保存!

相關問題