? ? ? ? 你發送給朋友一條消息(內容:明天下午來我家吃飯),這一過程中你不想讓除你朋友以外的人看到消息的內容,這就叫做消息的機密性,用來保護消息機密性的方式被叫做加密機制。
????????現在站在朋友的視角,某一天他收到了一封來信,他怎么知道消息是誰發給他的呢?(也許你想到了,簽個名不就好了,但如果有人偽造我的簽名給我朋友發消息怎么辦),他怎么得知消息里面的內容是真實的呢?(萬一有人篡改了消息內容:“后天早上來我家吃飯”)
? ? ? ? 這時候我們想確保對消息內容的真實性和完整性(比如沒有被篡改),也想確保消息來源的真實性(是我的朋友發給我的,不是其他別的什么人)。那么這就需要一種方式來對消息進行處理,用來保護消息的完整性,內容真實性和來源真實性,這種方式被叫做消息認證!
一、什么是消息認證?
????????消息認證(Message Authentication),也稱為數據源認證,是信息安全領域的一個關鍵概念,主要涉及驗證接收到的數據是否真實無誤地來源于聲稱的發送方,以及數據在傳輸過程中是否未被篡改。消息認證確保了信息的完整性和真實性,防止中間人攻擊、重放攻擊等安全威脅。
【注】拿上面的例子來說明重放攻擊,比如我朋友上周已經來我家吃過飯了,這周我的朋友又收到了一條消息,和上周我發他的一模一樣,因為是一模一樣所以我的朋友自然也就不會懷疑,他屁顛屁顛的跑來我家吃飯,結果我說我沒有發消息給他,他失落的回到家,發現家里被入室盜竊了。(這只是一種重放攻擊所造成的損失的假設,實際上網絡安全中重放攻擊更多的是重放某個獲取東西的請求,這樣攻擊者就能通過重放攻擊得到只有授權用戶才能得到的響應)
消息認證的目的:消息認證的主要目的是驗證消息的完整性(完整性認證)和確認消息的來源(源點認證)。它確保消息在傳輸過程中未被篡改,并且來自聲稱的發送方。
【注】在消息認證之前,收發雙發就已經通過某種方式建立了信任關系,并且共享了密鑰。這里更確切的說,我可以和一群人建立信任關系,我們都共享了密鑰,所以消息認證并不能讓我知道我收到的消息到底是誰發來的,我只知道是我信任的人(持有密鑰的人)發給我的。
二、實現消息認證的方式
(1)消息認證碼 MAC
????????消息認證碼(Message Authentication Code,簡稱MAC)是消息認證的一種實現方式,它通常基于共享密鑰,由發送方使用密鑰和消息內容生成一個短的固定長度的值,然后將這個值附加在消息后面一起發送。接收方收到消息后,使用同樣的密鑰和消息內容重新計算MAC值,然后與接收到的MAC值進行比較,以此來驗證消息的真實性和完整性。
MAC的主要特性包括:
-
完整性:MAC能夠檢測出傳輸過程中的任何更改,無論是無意的錯誤還是惡意的篡改。
-
真實性:由于MAC是使用共享密鑰計算的,所以只有持有相同密鑰的實體才能生成有效的MAC,這保證了消息來源于持有正確密鑰的實體。因此消息的真實性問題轉換為了如何安全的分發密鑰。一旦密鑰泄露那么也沒有辦法確認對方的真實性。
-
機密性:MAC本身并不提供對消息內容的加密,但是它可以與加密技術結合使用,以實現同時保護消息的隱私和完整性。
(2)消息檢測碼 MDC
????????消息檢測碼(Message Detection Code,簡稱MDC)是一種用于檢測數據是否發生變化的校驗碼,但與消息認證碼(MAC)不同的是,MDC不提供數據源的身份驗證或保密性。
????????MDC主要用于檢測數據在傳輸過程中是否發生了非故意的改變,例如由噪聲、干擾或其他物理因素引起的錯誤。它不提供防止惡意篡改的功能,因為任何人都可以生成正確的MDC,只要他們有原始數據。