Wiser Locker 如何保護你的資料
發布日期: 2026 年 9 月 24 日
最後更新日期: 2026 年 9 月 24 日
這份技術白皮書寫給想知道「Wiser Locker 到底怎麼保護我的照片」的人。我們公開做法,因為好的加密不靠隱藏設計,只靠你手上的密碼。
- 你的密碼只在手機上使用,不會傳給我們。我們沒有後門,也沒有可以替你解鎖的主鑰匙。
- 每個檔案都有自己的隨機鑰匙;檔案清單、標籤與縮圖同樣加密。
- 隱藏空間有獨立的鑰匙,必須同時知道保險庫密碼與隱藏空間密碼才能開啟。
- 所有加密都使用公開、經過長期檢驗的標準演算法。
- 安全性最終取決於密碼強度。請使用較長、不重複的密碼。
1. 你的密碼如何變成鑰匙
Wiser Locker 不直接用你的密碼加密檔案,而是一條由上往下的鑰匙鏈:
- 保險庫密碼經過刻意放慢、需要大量記憶體的運算,變成一把「開鎖鑰匙」。
- 開鎖鑰匙只用來打開一把主鑰匙。主鑰匙是建立保險庫時隨機產生的 256 位元金鑰,和你的密碼無關。
- 主鑰匙再分出三把用途鑰匙:一把開資料庫、一把保管檔案鑰匙、一把檢查資料是否被竄改。每把用途不同,即使其中一把外洩也推不回主鑰匙。
- 每個檔案有自己的檔案鑰匙,由「檔案保管鑰匙」加密保存。
這樣設計的好處是:改密碼時只需要重新包裝主鑰匙,幾秒鐘就完成,不必重新加密所有照片。
需要知道的代價:改密碼不會更換主鑰匙。如果有人在你改密碼之前就複製了整個保險庫,而且知道舊密碼,改密碼無法讓那份複本失效。
2. 每個檔案怎麼鎖
- 加入時,每個檔案都會得到一把隨機的檔案鑰匙,主檔與縮圖再各自分出不同的鑰匙。
- 檔案被切成 1 MiB 的小塊分別加密,每一塊都附有驗證碼,並記錄它屬於哪個檔案、是第幾塊、有多長。被截斷、調換順序,或混入別的檔案內容,都會被發現並拒絕讀取。
- 檔案鑰匙的保存方式綁定了它所屬的檔案與空間。把它搬到別的檔案或別的空間,就解不開。
- 在一般空間與隱藏空間之間移動檔案時,只重新包裝那把檔案鑰匙,照片與影片本身不會被解密到儲存空間上。
3. 檔案清單與標籤
- 檔名、標籤、篩選條件、日期、地點與統計,都存在加密資料庫裡。
- 資料庫的鑰匙由主鑰匙衍生,沒有另一組密碼可以讓人猜。
- 每筆檔案紀錄另有驗證碼,不知道鑰匙的人無法竄改。
4. 隱藏空間的兩道鎖
隱藏空間有自己的隱藏主鑰匙,同樣隨機產生,和一般空間的主鑰匙互不相干。要取出它,必須同時具備兩樣東西:
- 一般空間已經解鎖,也就是已經用保險庫密碼或生物辨識登入。
- 正確的隱藏空間密碼。
兩者合在一起才能組出打開隱藏主鑰匙的那把鑰匙。所以:
- 只知道隱藏空間密碼,進不去。
- 只知道保險庫密碼(例如被迫交出),也進不去。
- 生物辨識只能登入一般空間,無法開啟隱藏空間。
復原金鑰是設定隱藏空間時產生的一組隨機碼,用來在忘記隱藏空間密碼時處理資料。它同樣必須在一般空間已解鎖時使用。在 App 中,用它開啟的隱藏空間僅可整理,也就是只能取消隱藏或刪除,不能瀏覽照片影片;但它和隱藏空間密碼一樣能解開隱藏主鑰匙,請同樣妥善保管。
我們不宣稱別人無法察覺隱藏空間的存在。能查看手機檔案的人,可能看得出你設定了隱藏空間,以及大致的檔案數量與大小。我們保護的是內容。
5. 解鎖方式與脅迫密碼
| 方式 | 能打開什麼 |
|---|---|
| 保險庫密碼 | 一般空間 |
| 生物辨識 | 一般空間(鑰匙副本存放在 Android 硬體保護的安全儲存區,需使用強生物辨識) |
| 隱藏空間密碼 | 隱藏空間,但必須先登入一般空間 |
| 復原金鑰 | 隱藏空間的整理功能,但必須先登入一般空間 |
| 脅迫密碼 | 什麼都打不開 |
脅迫密碼(會員功能)是你事先設定的另一組密碼。被迫解鎖時輸入它,App 會立即清除手機上的整個保險庫,並依你的設定顯示「登入失敗」或空白保險庫。這個動作無法復原,也無法刪除你存放在其他地方的 .wlz 備份。脅迫密碼的儲存格式裡沒有能放鑰匙的地方,因此不可能透過它取得任何資料。
App 內另有密碼重試延遲。請注意它只限制在 App 裡輸入;見第 9 節。
6. 備份
- 備份檔(.wlz)用你的保險庫密碼保護,但每份備份都有自己的隨機鑰匙。
- 檔案數量、大小等資訊都在加密內容裡,備份檔外表看不出來。
- 隱藏空間的資料會以原本的加密狀態放進備份,建立或還原備份時都不會開啟隱藏空間。還原後仍需要隱藏空間密碼。
- 還原前會完整檢查備份;只要有任何檔案不符合預期,就停止還原,不會用不完整的資料覆蓋你的保險庫。
7. 使用中的保護
- 解密後的照片與縮圖只存在記憶體裡,不會寫成暫存檔。
- 影片透過只在手機內部可用的連線播放,網址帶有隨機、無法猜測的通行碼。
- 預設防止螢幕截圖與錄影;要關閉必須再次輸入保險庫密碼。
- 鎖定、切到背景自動上鎖或登出時,正在使用的鑰匙會立即清除並失效。
- 不參與 Android 系統備份,也不對其他 App 開放存取。
- 選用的使用情況分析預設停用,啟用後也只記錄「用了哪個功能」,不含檔名、標籤、內容或任何鑰匙。
- 只有你主動選擇解密時,才會把原始檔案寫到手機儲存空間。
8. 能防住的情況
| 情況 | 結果 |
|---|---|
| 手機遺失或被偷,對方不知道密碼 | 看到的全是加密資料 |
| 有人複製了保險庫資料夾或備份檔 | 沒有密碼就打不開;每猜一次密碼都要付出大量運算 |
| 被迫交出保險庫密碼 | 隱藏空間仍然打不開 |
| 被迫按指紋 | 只能進入一般空間 |
| 被迫輸入密碼 | 可改輸入脅迫密碼,清除手機上的保險庫 |
| 有人竄改加密檔案、紀錄或備份 | 會被偵測並拒絕讀取 |
| 其他 App 想讀取內容 | 無法存取 |
9. 無法防住的情況
請務必了解以下限制:
- 弱密碼會被離線猜中。 保險庫存在手機的共用儲存空間。拿到整個資料夾的人,可以把檔案複製到電腦上無限次猜密碼,App 的重試限制管不到。每次猜測都很慢,但像 6 位數字這樣的短密碼仍可能被猜中。保險庫密碼與隱藏空間密碼都請使用長密碼。
- 手機已被入侵。 如果手機已被 root 或裝了惡意程式,攻擊者可以在你解鎖時讀取畫面或記憶體。
- 旁人偷看或拍攝螢幕。 防止螢幕截圖擋不住另一台相機。
- 忘記密碼。 我們沒有後門。忘記保險庫密碼就無法解開;忘記隱藏空間密碼時,只能用復原金鑰取消隱藏或刪除。
- 改密碼之前已被複製的資料。 見第 1 節。
- 已經複製出去的備份。 脅迫密碼只能清除手機上的保險庫,無法刪除存放在其他地方的 .wlz 備份。
- 隱藏空間的存在。 見第 4 節。
10. 我們刻意不做的事
- 不取得、也不保存你的保險庫密碼或任何鑰匙。 我們的伺服器上沒有你的保險庫密碼、主鑰匙或復原金鑰,所以我們看不到你的資料,也無法替你找回密碼。目前保險庫只存在你的手機上;未來提供雲端同步時,雲端上也只會有加密後的保險庫,我們一樣不會收到能解開它的保險庫密碼或鑰匙。
- 不把保險庫鎖死在特定手機上。 重新安裝或換手機時,只要有密碼與保險庫資料夾(或備份)就能復原。代價是第 9 節提到的離線猜密碼風險。
- 不自創加密演算法。
11. 技術規格
給想知道細節的讀者:
| 用途 | 使用的標準 |
|---|---|
| 從密碼產生鑰匙 | Argon2id:64 MiB 記憶體、3 次迭代、平行度 2、每次隨機 16 位元組 salt |
| 從鑰匙分出子鑰匙 | HKDF-SHA256,每種用途、空間與保險庫分別區隔 |
| 包裝鑰匙 | AES-256-GCM |
| 照片影片內容 | AES-256-GCM 或 XChaCha20-Poly1305(可在設定中選擇),1 MiB 分塊驗證加密 |
| 資料庫 | SQLCipher |
| 紀錄防竄改 | HMAC-SHA256 |
| 隨機數 | 作業系統提供的密碼學安全亂數 |
| 鑰匙長度 | 所有主鑰匙、檔案鑰匙與復原金鑰皆為 256 位元 |
Argon2id 的參數固定寫在格式裡,讀取時若不符就拒絕,防止有人竄改檔案把運算成本調低。

