【雜】word文件加密和壓縮加密


寫於20210906。

起源在於我想要整理一下自己一團亂麻的密碼,想要找個合適的方法記錄密碼。人腦畢竟是有極限的,遺忘也是難免的。然后考慮到最簡單的word自帶的加密以及rar加密。主要是保存密碼,除了考慮安全性,也需要考慮是否方便,不然有些密碼一找不到就直接重置了,似乎保存密碼也沒有了意義。最簡單的,我們需要一個加密后的文件,可以放在電腦或者手機,點開輸入密碼后可以直接看到。再不濟,重要賬號的密碼,可以自己添加一個簡單好記但只有自己知道的密碼轉換規則,只將加密后的密文保存在加密后的文件中。

所以我的想法僅僅是證明一下這兩個加密方法暫時還算可靠罷了。

最終覺得,沒有完全嚴謹的無法破解的密碼……但是加密算法加密流程的優化,使得破解的門檻及成本不斷上升,或許在看不見的地方還有人在斗法,不過大部分人小小的隱私似乎也還無法引起那部分人的注意。而提供加密產品的人,也比我們更懂得如何保證加密產品的可靠性——如果他們並沒有別的要求與心思的話。

1、word加密

1.0 總結

使用的版本是2019。

破解的方法或許有。但是已經出現的問題,word背后的團隊應該會尋求解決的方法,所以我在網上找到的方法均已失敗告終。唯一還沒有嘗試的持保留意見的是暴力枚舉。一般來說,很多密碼的最基礎以及最終的破解方法都是暴力枚舉,所以足夠長且不定長,足夠多的字符組合(大小寫字母、數字、特殊字符),以及多次嘗試錯誤后的保護機制:直接鎖定、冷卻時間、加入防止機器破解的圖形碼等等方法都是防止暴力枚舉不錯的方法。到了一定程度,暴力枚舉雖然也是一種解決方法,但是所耗費的時間與復雜程度將不能被接受,還不如去研究加密方式中哪個地方有漏洞。

所以說,有些東西的優化,在我們看不到的地方,的確起了許多關鍵的作用。

1.1 加密方法

版本是2019,方法是【文件】--【信息】--【保護文檔】--【用密碼進行加密】,輸入密碼后進行保存,再打開就需要輸密碼了。

解除密碼則是在輸入密碼的界面將密碼刪掉后保存即可。

 

1.2 解密方法1

參考:word文檔加密如何破解

是針對2010版本的word。我之前還在奇怪,但是后面認真看了看,我似乎誤解了這個教程所面對的方法。這個方法所做的似乎只是將【密碼限制編輯】的文檔更改為可編輯。不然的話這個加密方法將會讓人覺得很是簡陋。因為一個這個是否加密僅僅是靠着一個明文的參數為1或者0來控制。

而解密的方法僅僅是使用文本打開后,查找到對應參數enforcement,更改其值而已。

而這個方法前面還有一步,就是打開文檔后零存在xml文件。這部分就是我本來想要提的,但是既然這個教程僅僅是針對【限制編輯】的文檔,那么這個還是留到后面來說。

1.3 解密方法2

參考:word文檔四種解鎖方法

寫於2018年,針對的是2017版本的word。其中的

  • 方法一:打開后-另存為xml-找到protection對應的部分刪除部分代碼--轉回doc文檔即可。

  • 方法二:通過word本身的【插入】-【對象】-【文件中的文字】繞開加密。

  • 方法三:通過Adobe Acrobat DC文件轉pdf、pdf轉回word的方法繞開加密。

我自己本身是沒有實踐成功的,也不清楚其可行性。針對這些方法,需要討論以下幾點:

  • 密碼不正確,還是能打開文件界面--一個未顯示文字的錯誤的但仍屬於該文件的操作界面。

  • word本身其他功能對於加密上的漏洞

  • 給其他軟件功能支撐上加密的漏洞

看情況,這個加密加了個寂寞,文檔還是按照原本編碼方式存在(未經加密轉換),只是添加了一段代碼,在程序識別到這段代碼,那么應用會在加載文件的時候顯示錯誤,僅僅未將文件內容加載到主界面。那么我刪除這段用於識別的代碼、或者由於某些功能未添加對這個攔路的“門”的識別,那么我就能直接讀取到加密前的數據了。

不過2019版本的word文檔,已經不一樣了。

一是,密碼錯誤完全不能打開文檔,並沒有另存為的界面,從另一個文檔引用該文件也會提示需要輸入密碼。

二是,我將加密前doc文件另存為xml,然后用密碼打開doc加密后的文件后另存為xml,對比兩個文件的差別。

未加密的doc文件中可以很清楚地看到許多文檔信息。如w:body/w:body所包裹的正文部分

<w:body><w:p w14:paraId="74F636FB" w14:textId="23CD0A65" w:rsidR="00F16D10" w:rsidRDefault="0078136F"><w:r><w:rPr><w:rFonts w:hint="eastAsia"/></w:rPr><w:t>大傻子!!!</w:t></w:r></w:p><w:sectPr w:rsidR="00F16D10"><w:pgSz w:w="11906" w:h="16838"/><w:pgMar w:top="1440" w:right="1800" w:bottom="1440" w:left="1800" w:header="851" w:footer="992" w:gutter="0"/><w:cols w:space="425"/><w:docGrid w:type="lines" w:linePitch="312"/></w:sectPr></w:body>

 

而加密后的doc文件對應的xml則是在使用文本查看的時候是亂碼的文字,間或漏出一兩個有點眼熟的英文,如下所示,其前面都是諸如NUL``EOT的格式,其后面大部分是中文及特殊字符亂碼。在文件末尾有</encryption>

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<encryption xmlns="http://schemas.microsoft.com/office/2006/encryption" xmlns:p="http://schemas.microsoft.com/office/2006/keyEncryptor/password" xmlns:c="http://schemas.microsoft.com/office/2006/keyEncryptor/certificate"><keyData saltSize="16" blockSize="16" keyBits="256" hashSize="64" cipherAlgorithm="AES" cipherChaining="ChainingModeCBC" hashAlgorithm="SHA512" saltValue=
......
​
<dataIntegrity encryptedHmacKey="U7lJ/rC15dgyQ0u/O3qWjBs8t1IhEFm+N+OU83qrPOt//YK4SKcfe3Ej+hNxZDjNfePFRe5ga+pwwhGsbekwhA==" encryptedHmacValue="qV5rlXdI5bARCrNr47k8ofEIqRbnZ43aK1N/zRX+/raMKwBfqOcwH3tkPt7ASdh8ZD1SW4I/GcEaplWf+Ke+aQ=="/><keyEncryptors><keyEncryptor uri="http://schemas.microsoft.com/office/2006/keyEncryptor/password"><p:encryptedKey spinCount="100000" saltSize="16" blockSize="16" keyBits="256" hashSize="64" cipherAlgorithm="AES" cipherChaining="ChainingModeCBC" hashAlgorithm="SHA512" saltValue="ueu5rlVFNOHeUARbwkcHpQ==" encryptedVerifierHashInput="Z7vPrPk4zadDPpSjdHtEeg==" encryptedVerifierHashValue="nt0dv6PhWQP9oWbECsvBv7+9jLgjKuXo5z1qY081+xJVym6Scp7OnXvzArv5O98nmN8T0jlwwcgJQiO3DcpxXg==" encryptedKeyValue="czxp4ETtrmrtGi9mcZejP0CbIi9Priro4g+TyKTwhS4="/></keyEncryptor></keyEncryptors></encryption>

 

嘗試分析一下加密后的文檔,首先直接刪除<encryption></encryption>里面的內容行不行?應當不行,看文件內容,這部分應該是包含了大部分加密后的文檔信息。而且一個很重要的安全策略就是“不要嘗試打開一個不完整的文檔”。譬如說一個文檔缺失了重要的基本文檔結構信息,不會說使用默認的兼容的方式打開,加載能加載的信息,而是直接提示“Word 無法讀取此文檔,文檔可能已損壞”。

那么根據能看懂的部分代碼,是否能分析出加密方法,通過更改部分代碼來“替換密碼”呢?自我感覺不是很簡單的一件事情,或者說需要去了解更多的底層知識。譬如說,如果encryptedKeyValue是最終的秘鑰,前面提示了“SHA512”“AES”等等信息……通過觀察多幾個加密前后的文檔的情況,來觀察相同密碼,不同密碼,相同時間戳,不同時間戳等等情況下反推加密過程,通過得到的秘鑰加密的過程,將自己最后的密碼如“123456”進行加密后替換,那么最終就可以使用123456來打開加密文檔了。

不過一切都是紙上談兵罷了,加密算法的不斷優化,在加大了加密流程耗費的時間與資源的同時也大大地加大了反向逆推解密的成本和精力。安全性大概還是可信的。

1.4 解密方法3

參考:word加密文檔忘記密碼如何破解?

通過更改doc文件為rar文件后再通過打開rar文件的方式,讀取到doc文檔對應的一些詳細設置的文檔,如,比較關鍵的settings.xml文件,依舊是更改一下settings.xml文件中有關加密的那部分代碼后破解。

現在不用想了,實踐后,現在rar讀取的時候會直接提示“rar文件損壞,無法打開”。

這種通過rar解包的方式讓我想到了jar包。jar包中會包含對應的.class文件,以及.xml等文件,在拋去.class文件的一些反編譯及防止反編譯的討論,如果我們將一些重要配置如數據庫的賬號密碼直接放到.xml等類似的配置文件中,那么這些信息可以直觀地看到,當然,也方便修改,所以在設計模式中建議可以將這些參數寫在配置文件中。但是如果是一些對安全性有要求的應用……這樣子做卻是不怎么合適。

2、壓縮包加密

2.1 加密方法

右鍵-添加壓縮文件-然后如圖所示,可以設置密碼。可以加密文件、甚至加密文件名。是否勾選“加密文件名”的區別是:若是勾選了,那么打開壓縮包就需要輸入密碼了,若沒有勾選,可以正常打開壓縮包,僅在打開對應文件的時候需要輸入密碼。

加密壓縮后,原文件還在原來位置,需要刪除。

解除加密密方法就是解壓文件(輸入密碼)。

2.2 解密方法

參考:RAR/ZIP密碼可以被破解嗎?需要多長時間?

這個就沒有多少人列舉解密方法,通常只能是枚舉法伺候,有不少軟件,word也有一些破解軟件,大多用的枚舉,我就都略過了,並不想下載奇奇怪怪的軟件或者付費軟件。

3、暴力破解和枚舉破解

我之前稱呼的是“暴力枚舉”,因為我一直將這兩種方法視為一種,后面仔細看了看還是有區別的。

暴力破解就是每一種組合我都試一試,進行排列組合,只要密碼的長度和組合限制得足夠,能跑到天荒地老。這種無差別的嘗試,會把所有情況都考慮到,但同時也會做許多無用功。

而枚舉,則是在有限的枚舉庫里面,將庫里面的組合一一比對尋找。這樣子耗費的時間是有限的,但是也有可能找不到密碼。不過只要庫足夠好,找到密碼的可能性不低,因為除非是隨機生成的亂碼,人為設置的密碼,有時候還為了好記,總會有自己的特征。譬如說有些小傻瓜屢教不改使用123456做密碼(指自己)。不要以為簡單的密碼沒有人用,賬號那么多,總有時候有人會覺得某個小號不重要,隨意設置密碼(再次指自己)。

4、密碼設置的一些建議

雖說現在有時候覺得信息安全在這個時代有點像笑話,不過設置密碼的時候需要注意一些事情,這些都是老生常談了。

  1. 盡量不要多個平台公用密碼,很容易某個平台安全措施不夠就直接牽連全部了。甚至來說相似密碼、一套的密碼,如果真有人想搞你,弄個枚舉庫不是太麻煩的事情。

  2. 你心里覺得再不重要的賬號,在隨意設置密碼的時候想清楚這個賬號涉及現實的你的哪些信息,小心這些賬號成為攻擊你其他賬號的跳板。在輸入重要信息的時候,心里也想一想這個賬號的密碼是否有問題,是否夠安全。

 

不少重要平台、應用也構建了不少安全措施、便攜的登錄措施……不過有時候還是自己注意一點。

參考

 

如何記住各種賬號密碼? - 首席鑒黃官的回答 - 知乎 https://www.zhihu.com/question/27259239/answer/781665625


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM