Encryption
Salsa20/ChaCha20 在加密點陣圖時是否仍然提供完整性?
原諒我這個問題。我有一個想法,使用沒有 Poly1305 的 ChaCha20/Salsa20 加密 *.bmp 點陣圖文件。
這只是一個簡單的程序,我可以在其中加密 *.bmp 點陣圖圖像,生成的 CipherText 格式為 *.bmp 文件,仍然可以打開並顯示已加密的隨機像素。圖片說明如下:
- 這可能嗎?
- 如果是這樣,解密時密文是否會產生與 PlaintText 相同的點陣圖文件(兩者俱有相同的校驗和值)?
- 這(加密點陣圖時仍然提供完整性)可能嗎?
不,ChaCha20 只是一個流密碼,它本身不提供消息完整性/真實性;並非沒有重大改變——然後它會被稱為別的東西。
- 如果是這樣,解密時密文是否會產生與 PlaintText 相同的點陣圖文件(兩者俱有相同的校驗和值)?
是的,除非密文被更改,否則解密仍然是加密的逆過程。當使用正確的密鑰初始化時,密碼既是確定性的又是可逆的。
(Poly1305) 身份驗證標籤用於檢測密文(或標籤)是否由於損壞(傳輸錯誤、儲存期間的缺陷)或攻擊者的蓄意嘗試而被更改。如果沒有發生外部更改,則不需要保持完整性。
由於 ChaCha20 是一種(非明文感知)流密碼,加密功能與自身相反:它生成一個密鑰流,然後與明文進行異或運算以進行加密,並與密文進行異或運算以進行解密。
這樣做的缺點是您不能簡單地在明文中放入“嬰兒床”或已知值來檢測解密是否成功 - 基本上可以通過更改密文來隨意更改生成的明文中的任何值。
文件中經常有可以隱藏資訊的位置。例如,如果您想儲存額外的字節(例如 Poly1305 身份驗證標籤),可以查看DIB 標頭或顏色表/配置文件。