您當前的位置:首頁 > 動漫

微信聊天記錄如何證明內容沒被篡改?

作者:由 豬兒笨笨 發表于 動漫時間:2021-08-21

從技術上講,如果只拿到單機資料,其實是沒有辦法驗證該記錄是否被篡改過的。就好比,一張紙如果用標準文字列印了一句話,然後告訴你這是某人說的話,你如果不去問當事人,並拿出相應的證據,也是沒有辦法證實的。下面簡單說下為什麼不能驗證:

一條完整的微信紀錄,在手機上如果想篡改記錄,那麼一般來說,需要以下幾步:

要獲得手機的超級使用者許可權(Android是Root,iOS是越獄)。

破解相應的資料庫密碼,能夠修改資料庫(網上是有如何破解微信資料庫密碼的資料)。

如果微信為每條記錄做了簽名,那麼還需要得到對應的簽名演算法,還需要得到演算法的金鑰(應該是存在本地),然後就可以進行篡改了。可以定期修改金鑰或者說演算法,但在修改的間隔週期裡,仍然是可以篡改。比如每週更換一次金鑰類(我原來做類似的業務,是每三天更新一次本地金鑰),但在這一週內還是可以篡改的。

以上的難度還是挺高的,我以前幫網警處理過一個網路紅包的案件,就是過了第二步(那個嫌疑人自己越獄了)。第三步在技術上講也是可以被破解的。當然還有一些篡改記錄的其它方法,這裡就不介紹了。

所以如果只有一臺手機,是很難在法律上嚴格認證內容不被篡改的,即使把兩個人的聊天記錄放在一起比較,發現不一致,想判斷哪一臺是被篡改的可能也很難(有一些方案是可以解決兩臺手機的微信記錄防篡改的,比如各有一套非對稱金鑰,用來對一條訊息做兩次簽名並儲存在各自手機上,可以參見ssl之類的握手協議,但這太複雜了,對於普通的通訊軟體,真沒這個必要。就這個問題,多說兩句,你可以認為一條訊息必須由通訊雙方都加一次簽名,雙方都把這條簽名記錄下來,比如A發給B一條Txt,傳送的時候,加上一個A自己的簽名,然後B收到後,再對這個Txt加一個B自己的簽名,然後把這個簽名返回給A,那麼當然沒有那麼容易篡改,但中間的通訊流程非常複雜。而且仍然得有一箇中間機構,來對雙方的金鑰進行認證,否則雙方對質只能證明有篡改,但無法證明是誰篡改的)。

如果想解決這個問題,理論上講是必須有一個第三者,比如騰訊,可以接受每一條訊息,然後在服務端進行簽名(再嚴格點,按照夏農資訊理論,每次簽名都用不同的金鑰),然後發回給兩臺手機並儲存,這樣在騰訊伺服器沒有被攻破前,是可以識別出誰篡改了資料。

標簽: 篡改  簽名  金鑰  微信  手機