Lockspeare 如何保護你的照片
Lockspeare 會在你的手機上加密每一張照片和每一段影片。這一頁會清楚說明它是怎麼做到的,也包括它無法防範的情況,讓你自己判斷。
簡單來說
- 每張照片和每段影片在儲存前,都會先在你的手機上以 AES-256-GCM 加密。
- 打開相簿的金鑰受到雙重保護:一是你的 PIN 碼或解鎖圖形,二是 Android Keystore 中由硬體保護、永遠不會離開手機的金鑰。
- 就算有人複製你手機的儲存空間,拿到的也只有加密資料。沒有你手機的安全硬體,誰都無法拿它來試 PIN 碼或解鎖圖形。
- 你的 12 個單字復原短語,是在另一支手機上或從備份打開相簿的唯一方法。
- Lockspeare 沒有伺服器,也沒有帳號。我們永遠不會收到你的檔案、PIN 碼或解鎖圖形,以及金鑰。
加密哪些內容
你放進相簿的所有東西:照片、影片、縮圖、原始檔名、日期和相簿。
每個檔案都用自己的金鑰加密,這把金鑰由相簿的主金鑰衍生而來。大型檔案會切成 1 MB 的區段分別加密,每段都有自己的完整性檢查,所以影片不必整個解密就能播放,而且加密檔案只要被改動就會被發現。這部分我們使用 Google 的 Tink 程式庫,而不是自己寫加密程式。
加密後的檔案以隨機名稱存放在 Lockspeare 的私人 App 儲存空間。所有相簿的檔案都放在同一個資料夾裡,所以從資料夾看不出哪個檔案屬於哪個相簿。
PIN 碼或解鎖圖形如何打開相簿
設定 Lockspeare 時,你可以選擇解鎖方式:至少 6 位數的 PIN 碼,或是像螢幕鎖定一樣在 3×3 格點上畫的解鎖圖形。手機上的每個相簿都使用同一種鎖,所以從鎖定畫面看不出任何資訊。
每個相簿都有一把隨機產生的 256 位元主金鑰,在你的手機上建立。這把金鑰永遠不會以可讀的形式儲存,而是以兩種上鎖的形式存放:
用你的 PIN 碼或解鎖圖形上鎖,存在這支手機上。 你的 PIN 碼或解鎖圖形會透過 Argon2id 轉換成金鑰。Argon2id 是一種刻意讓每次猜測都又慢又吃記憶體的演算法。轉換結果會再用 Android Keystore 中的金鑰加密一次,這把金鑰存放在手機的安全硬體裡,無法從手機複製出來。
這點很重要,因為 PIN 碼或解鎖圖形都很短。單靠它們的話,電腦拿著你檔案的副本就能很快猜出來。把它和手機硬體綁在一起,代表只能在你的手機上猜,而且每猜一次都很慢。
用你的復原短語上鎖。 建立相簿時,Lockspeare 會顯示 12 個單字,從一份 2,048 個單字的標準清單中隨機挑選。這相當於約 128 位元的隨機性,遠遠超出任何人能猜到的範圍。如果你忘了 PIN 碼或解鎖圖形、換了新手機或要還原備份,就用這組短語打開相簿。
相簿完成設定前,你要先確認其中幾個單字。請把它們抄在安全的地方。我們沒有副本。
獨立相簿與偽裝相簿
每組 PIN 碼或解鎖圖形都打開自己的相簿。你可以用第二組建立一個偽裝相簿,放些無關緊要的照片,以防哪天有人逼你解鎖 App。
不論你用一個還是多個相簿,Lockspeare 在儲存空間裡都會保留相同數量的相簿位置。沒用到的位置會填入隨機資料,看起來和真正加密的相簿一模一樣。App 裡沒有相簿清單。所以不論是畫面上,還是檔案副本裡,都看不出你有幾個相簿。
有一個限制:為了避免建立新相簿時覆蓋掉舊的,App 會記錄哪些位置已被使用,這份紀錄用手機的硬體金鑰上鎖。如果有人完全掌控你已解鎖的手機,就可能讀到這份紀錄,得知你有幾個相簿,但看不到裡面的內容。
備份
備份是選用的,分成兩種。
Google Drive。 Lockspeare 會把備份存放在你自己 Google Drive 裡的隱藏 App 資料夾。上傳的檔案和存在手機上的完全一樣:已經加密。它也會上傳用復原短語上鎖的相簿金鑰。它絕不會上傳用 PIN 碼或解鎖圖形上鎖的那一份,因為那一份只能搭配你手機的硬體使用。
要在新手機上還原,先輸入復原短語,再設定新的 PIN 碼或解鎖圖形。
Lockspeare 只要求存取你 Drive 裡它自己的隱藏資料夾,不會要求存取你的其他檔案。Google 看得到有多少個備份檔、大概多大,以及上傳時間,但看不到裡面的內容。
備份檔。 你也可以把相簿匯出成單一加密檔案,存放在任何地方:其他雲端服務、記憶卡或電腦。這個檔案只能用你的復原短語打開。
Android 內建的自動備份對 Lockspeare 是關閉的。它無法還原綁定硬體的金鑰,所以只會複製一堆沒人能用的資料。
使用 App 時
- 截圖、螢幕錄影和最近使用的 App 預覽都會被封鎖。
- 只要你離開 App,相簿就會立刻上鎖,除非你設定了短暫的延遲。
- 上鎖時會清除 App 記憶體和暫存空間中的金鑰與已解密的預覽。Android App 執行的系統可能會在內部複製記憶體,所以我們會清除所有我們能控制的部分,但無法保證在記憶體被重新使用之前,裡面完全沒有殘留的副本。
- 用 Lockspeare 內建相機拍的照片和影片會直接進入相簿,絕不會出現在你的圖庫裡,所以雲端照片備份永遠看不到它們。照片直接從記憶體加密。Android 的錄影功能需要一個檔案,所以錄影時影片會寫入 Lockspeare 的私人儲存空間,停止錄影後立刻加密,並刪除未加密的檔案。
從圖庫移入照片
從圖庫加入照片時,Lockspeare 會先加密,再重新打開加密後的副本,確認它和原始檔一致。確認之後,才會透過 Android 自己的確認對話框,詢問你是否刪除原始檔。
有兩個地方是 Lockspeare 管不到的,每次匯入後我們都會提醒你:
- 圖庫的垃圾桶。 很多圖庫 App 會把刪除的照片保留大約 30 天。清空垃圾桶才能徹底刪除。
- 雲端照片備份。 如果照片已經被雲端照片服務備份,那一份會一直留在雲端,直到你自己刪除。
哪些資料會離開你的手機
- 預設什麼都不會。 Lockspeare 可以完全離線運作。
- Google Drive,只有在你開啟備份時,而且只會上傳加密檔案。
- Google Play,用來處理購買。
- 當機報告,只有在你於「設定」中開啟時才會傳送。內容是技術細節,例如手機型號和 App 出錯的位置。絕不包含你的檔案、檔名、PIN 碼或解鎖圖形。
App 裡沒有廣告、沒有廣告 ID,也沒有分析程式庫。
Lockspeare 無法防範的情況
坦白說出限制,也是安全的一部分。Lockspeare 無法防範:
- 有人偷看你輸入 PIN 碼或畫解鎖圖形。 請遮住螢幕。
- 相簿開啟時手機已遭入侵。 能深入存取手機的惡意軟體,或被駭的作業系統,看得到你螢幕上的內容。
- 有人完全掌控你已解鎖的手機,而且有無限的時間。 他們可以直接在手機上嘗試 PIN 碼或解鎖圖形。Argon2id 讓每次嘗試都很慢,較長的 PIN 碼或解鎖圖形也會大幅提高難度,但短的終究還是短。
- 別人看出你安裝了 Lockspeare、它存放了多少加密資料,以及每個加密檔案的大概大小。
- PIN 碼或解鎖圖形和復原短語都弄丟了。 這時沒有人能打開相簿,包括我們。
獨立審查
這套設計尚未經過獨立稽核。我們計畫在 Lockspeare 上架前請人審查,並把結果公布在這裡。如果你發現問題,請寫信到 security@lockspeare.com。