全面解構 LINE 訊息加密技術、Letter Sealing 確保聊天內容安全不外洩
隨著日常生活及工作離不開網絡,近年來涉及網絡安全的事件愈來愈頻繁,而經過業界多年的努力,現時用戶對網絡安全的重視程度亦愈來愈高;而另一方面,廠商們所推出的各類型方案亦明顯提高了本身的安全防禦機制。
其中近日最令筆者注意到的,就是 LINE 推出的加密功能 – Letter Sealing。
訊息是如何傳送的?
要了解訊息的安全性,首先我們需要了解一下訊息傳送的流程。
首先當用戶於應用之中向朋友 A 傳送訊息後,訊息會先加密後再上傳至 LINE 的伺服器之中,然後訊息會解密/短暫存放於 LINE 的伺服器之中,此時用戶會收到「訊息提示」。當用戶開啟應用,查看訊息時,伺服器會將訊息再次加密並發送予接收訊息一方。
此方法表面上是安全的。大前題是 LINE 的伺服器沒有被入侵;又或者 LINE 內部的員工不會竊取用戶的通訊內容;然而世事無絕對,相信沒有人能夠擔保上述提及的情況絕對不會發生。
可能你會問,為甚麼不能從收/發雙方的 LINE應用之中直接完成加密及解密動作呢?其實有使用過 SSL 的都會知道,從來加密/解密都需要一條 Key,而這條 Key 往往有相當的長度,難道將之直接儲存在用戶的手機應用之中?那豈非更危險?
LINE 的解決方法
於是 LINE 便採用了一種方式,就是採用公開金鑰加密 (public key encryption),換句話說 LINE 會預先將 public key 加入到位於用戶端的 LINE 之中,然後當用戶傳送訊息時╴訊息會先通過位於用戶 LINE 應用之中的 public key 進行加密及同時與 LINE 伺服器建立加密通道;而這些已加密的訊息只有 LINE 的伺服器才能夠進行解密,從而確保安全性以及防止中間人攻擊。
Letter Sealing
為加強整體的保安,LINE 近日便於其應用之中加入 Letter Sealing 功能。此功能與前述的 RSA 方法的最大分別在於它本身是採用了 Diffie-Hellman (DH) 來進行密匙交換;而且用戶現時除了擁有 public key 之外,更會自己擁有 private key;而每個用戶會擁有屬於自己的 private key,而當用戶向另一位用戶傳送訊息時,只會向接收訊息的用戶交換public key 以進行解密工作,這種做法便可令收發雙方的訊息只可通過相互匹配的 public key 進行解密﹐從而省去了於 LINE 伺服器之中的解密過程,令訊息的安全大大提升。
現時 LINE 已將此新功能推送到 Windows 和 Mac OS X 平台個人電腦上的桌面版本;至於 Android及iOS的手機用戶則只須安裝LINE 5.3.0或以上版本便可立即使用Letter Sealing功能。
Letter Sealing初步會應用在單對單的聊天和位置訊息,其後將會擴展到其他不同的功能及裝置上。只要對話雙方都在裝置上開啟了Letter Sealing功能,兩者便能獲得全面的訊息加密保護。