Urik 開源 Android 鍵盤:查原始碼確認它真的沒有網路權限、詞庫真的加密

Urik 是主打隱私的開源 Android 鍵盤,我查了它的原始碼,確認 AndroidManifest 真的沒有網路權限、詞庫真的走 SQLCipher 加密,本文帶你看懂它的隱私架構、GPL 授權與 beta 階段的硬限制。

用 AI 摘要這篇文章:

Urik 是一支主打隱私的開源 Android 鍵盤,它的賣點聽起來很熟悉:打字、糾錯、學習詞庫都在手機上完成,不傳資料出去,用戶詞庫加密儲存,沒有遙測。這類宣稱在隱私工具的介紹文裡幾乎是標準配備,問題是它們通常只能選擇相信,無從核對。Urik 比較不一樣的地方在於,它的關鍵隱私宣稱可以直接打開原始碼查證。這篇文章的基礎,是我把專案的 AndroidManifest、建構設定、授權條款與 README 都讀過一遍,沒有實際安裝使用。所以下面講的是它「在工程上做了什麼」,以及哪些事查得到、哪些事查不到,打字手感與穩定度則不在本文範圍。

沒有網路權限這件事,你可以自己查

Android 應用能做什麼,由它宣告的權限決定。一支鍵盤要能把資料傳出去,前提是它在 AndroidManifest 裡宣告了 android.permission.INTERNET。我打開 Urik 在 GitHub 上的 app/src/main/AndroidManifest.xml 全文比對,整份檔案只宣告了一條用戶權限:android.permission.VIBRATE,也就是震動回饋。沒有 INTERNET,沒有任何能對外連網的權限。

這個查證動作的價值在於,它把「不連網」從一句行銷話術變成系統層級的硬限制。Android 的權限模型下,一個沒有宣告 INTERNET 權限的應用,作業系統根本不允許它發起任何網路連線,不是「宣稱不連」而是「連不了」。這是你在手機上也能自己重複核對的事:同一個檔案就在 repo 裡,任何人打開看一遍就能確認,不需要信任任何第三方的轉述。

Urik 在 README 裡還主動把這點寫進隱私段:沒有遙測、沒有分析統計、沒有網路權限,所有處理都在裝置上完成。這些話和我在 manifest 看到的一致。要補充的是,manifest 裡有設一組 networkSecurityConfig,但那是在沒有 INTERNET 權限的前提下做的防護設定,並不代表 app 有連網能力,別看到這個設定就誤會。

TechMoon 文內圖|Urik 官方宣傳圖,主打無追蹤與完全在地處理的鍵盤介面Pin
Urik 官方宣傳圖,強調無追蹤與完全在地處理(圖片來源:Urik 官網 urik.io)

詞庫加密是怎麼落地的

光沒有網路權限還不夠。鍵盤會學你打過的字、記住你常用的詞,這些資料如果明文存在手機上,手機遺失或被取出儲存時一樣會暴露。Urik 的處理方式是把用戶詞庫與學習詞寫進一個加密的資料庫。

這點同樣查得到。我在 app/build.gradle.kts 的依賴清單裡看到它引入了 android.database.sqlcipher。SQLCipher 是一套在 SQLite 之上做透明加密的函式庫,等於把資料庫檔案整個加密。README 進一步說明,加密金鑰走 Android Keystore 系統保管,並用 AES-256 加密本地儲存;想看學習詞時,Urik 還要求生物辨識驗證才能開啟。

這幾層設計串起來的意思是:你的個人詞彙不是明文落盤,金鑰交給 Android 系統層級的 Keystore 保管,app 自己無法隨意讀取,而且即使手機解鎖,要看詞庫內容還得過生物辨識這關。這是「在裝置上把資料守住」的具體工程選擇,不是只靠一句「我們重視隱私」。不過有個範圍要講清楚:加密能不能擋住所有攻擊,取決於裝置本身的安全性與 SQLCipher 的實作,本文沒有做滲透測試,只能確認它「確實採用了這套加密方案」,不能保證「絕對破解不了」。

加密的範圍其實比你想的廣一點。除了學習詞庫,Urik 連剪貼簿歷史也用加密儲存,這代表你複製過的內容不會以明文留在系統裡。考量到鍵盤是最容易碰到敏感剪貼內容(驗證碼、密碼、地址)的環節之一,這層處理不是多餘的。另一方面,作者也沒有把資料鎖死在裝置上:README 提供「學習詞匯的匯出與匯入」功能,方便你換手機時把個人詞庫搬過去,同時你可以逐筆瀏覽、搜尋、刪除學到的詞,等於把「自己的詞庫自己管」這件事做到可以操作,不必只在全盤接受與整批清除之間二選一。要特別留意一個設計上的取捨:README 說明雙字預測與詞頻資料「只留在本地、不會跟著匯出」,所以你匯出去的是詞彙本身,不是整套預測模型。

第三方介紹會把兩個細節講錯

把 Urik 的官方資料和網路上幾篇介紹對照著看,有兩個地方特別容易被講錯,剛好都和讀者判斷有關。

第一個是拼寫檢查的原理。有第三方介紹說 Urik 採用 SymSpell 演算法做本地拼寫檢查。但我查 README 和建構依賴,找不到任何 SymSpell 的痕跡。README 的說明是,拼寫檢查使用一套自製的 URIK 二進位詞典格式(全名 Ultra-compressed Ranked Input Korpus),搭配 Levenshtein 自動機走訪來做比對。這不是套用現成的 SymSpell 函式庫,而是專案自己定義的一套壓縮詞典格式。這個差異會不會影響你的使用?大概率不會。但如果你想深入了解它的糾錯機制,或者要評估它的詞典能不能換成自己的版本,照著 SymSpell 去找資料會找錯方向,這一點值得先校正。

第二個是所謂的密碼管理器功能。Urik 的 repo 描述寫著 password manager support,字面上容易讓人以為它內建了一個密碼管理器。但翻進 README 的功能細節,實際的條目是「支援密碼管理器的內嵌自動填入(Android 11 以上)」。這指的是 Android 系統的 Autofill 框架:Urik 作為鍵盤,可以讓你原本就在用的密碼管理器(例如 Bitwarden、1Password)直接在鍵盤介面上內嵌填入帳號密碼,而不是 Urik 自己幫你保管密碼。你的密碼還是存在那個密碼管理器裡,Urik 自己並不保管密碼,只負責把填入的介面接到鍵盤上。這個區別很重要:鍵盤內建密碼庫才會把高敏感資料拉進一個輸入法 app 的風險範圍,而 Urik 走的是和外部密碼管理器合作的定位,密碼的保管責任不落在它身上。

授權是 GPL-3.0,傳染性要看清楚

Urik 採用 GNU 通用公共授權第 3 版(GPL-3.0)。這和很多開源工具常用的 MIT 或 Apache 2.0 不一樣,差別在於 GPL-3.0 帶有「傳染性」的條款:如果你修改了 Urik 的原始碼,然後把修改後的版本對外發布,就必須以同樣的 GPL-3.0 授權釋出,並提供原始碼。

這條義務只在你「對外發布修改版」時觸發。純粹自己改來用、不安裝到別人的裝置上,不會產生任何義務。所以一般用戶把 Urik 裝來打字,完全不用擔心授權問題。會被這條影響的,是想拿 Urik 當基底、改一版再發布出去的開發者,例如做一支衍生鍵盤 app 的人。這類情境下你得連帶釋出自己的修改,不能把衍生版直接關起來當閉源軟體賣。

另外值得注意的是,Urik 雖然本身是 GPL-3.0,但它內建了幾份不同授權的資料:拼寫詞典的詞頻資料來自 FrequencyWords(CC-BY-SA-4.0),表情符號的關鍵字來自 Unicode CLDR(Unicode License v3),日文漢字轉換用的則是 Google 的 Mozc 詞典(BSD 3-Clause)。這些資料的授權和 app 主體是分開的,其中 CC-BY-SA-4.0 本身也是一種帶「相同方式分享」條款的授權。對一般使用沒影響,但如果你要研究它的資料組成或做衍生應用,這層授權混合值得留意。

它現在能與不能取代 Gboard 的地方

從 repo 的狀態和官方資料,可以看出 Urik 目前的能力邊界。

先說定位。它被當成 Gboard 的開源替代方案,主要賣點是 Gboard 做不到、或不願意做的隱私保證:Gboard 背後是 Google,即使開啟無痕模式也難以擺脫「輸入資料進 Google 手裡」的疑慮;Urik 則用「沒有網路權限」這個可查證的事實,把資料流向問題從根源切斷。在「不把打字資料送出去」這個特定目標上,Urik 的工程選擇確實比 Gboard 徹底。這也呼應我們在其他工具上反覆驗證過的道理:想確認一支軟體有沒有偷偷連網,最可靠的辦法是看它的權限和原始碼,別只看它的宣傳文案,例如 KeyStats 這個鍵盤計數器 就是讀原始碼才發現它一邊記次數一邊藏了一條遙測。

不過在功能完整度與成熟度上,Urik 和 Gboard 顯然還有差距,而這部分正好是官方資料無法替它背書的地方。README 列出的能力相當全面:滑行輸入與點按輸入、多種鍵盤配置(QWERTZ、AZERTY、Dvorak、Colemak 等)、本地雙字模型預測、十九種語言、十五種以上主題與 Material You 動態配色、無障礙支援(WCAG AA 對比度與 TalkBack)。這些說明的是「能力存在」,但滑行的準確度、糾錯會不會越幫越忙、多語切換順不順、長時間使用的穩定度,全部只有實際裝來用才知道,README 不可能也沒有替這些背書。

TechMoon 文內圖|Urik 多語言鍵盤介面與主題切換的官方示意Pin
Urik 多語言輸入與主題切換的官方介面示意(圖片來源:Urik 官網 urik.io)

還有幾個會直接影響採用決策的條件。Urik 目前是 open beta 階段,作者自己標明是測試軟體,還不是正式穩定版,這代表遇到輸入法當機、特定 app 內鍵盤跳不出來、或某個語言的詞典不夠完整,都屬於這個階段可能發生的狀況,回報到 issue 追蹤區比期待它立刻修好更實際。它只支援 Android 8.0 以上,沒有 iOS 版本,iPhone 用戶完全不在它的範圍內,這也是開源 Android 輸入法的普遍限制,因為 iOS 不允許第三方鍵盤完全取代系統輸入法、對鍵盤擴充功能的網路與資料存取也有嚴格約束。README 列出的官方取得管道是 F-Droid 和 GitHub Releases 的 APK 兩個來源,(不少第三方介紹提到 Google Play 測試通道,但官方 README 目前沒有列入,用 com.urik.keyboard 這個 package 在 Play Store 也查不到對應頁面,想安裝的人暫時以 F-Droid 或 GitHub Releases 為準比較可靠),F-Droid 的收錄本身就是一層獨立的可審查性背書,因為 F-Droid 會做自己的建置與查核,確認上架的版本和 repo 原始碼一致。從 GitHub 上的活動看,repo 到目前累積約四百顆星、三十個 fork,掛著三十幾個未關閉的 issue,最近一次推送在 2026 年中,專案還活著、沒有封存,但這個規模和 issue 數量也說明它還在磨合期,不是那種有大型團隊兜底的成熟專案。順帶一提,Android 上要動到系統權限的工具,像靠 Shizuku 借 ADB 權限錄通話的 ShizuCallRecorder 一樣,權限模型才是決定它能做什麼的關鍵,Urik 反向操作、主動不拿網路權限,反而是更罕見的取捨。

自己花十分鐘核對完再決定

如果你考慮把 Urik 當成 Gboard 的替代品,有一個幾乎不用成本的核對動作:直接打開它的 GitHub repo,點進 app/src/main/AndroidManifest.xml 看權限清單,再到 app/build.gradle.kts 確認 sqlcipher 依賴。十分鐘之內你就能自己判斷兩件事:它的隱私宣稱是不是真的有原始碼支撐、以及這個專案的維護狀態你能不能接受。

如果這兩關都過了,下一步就是把它裝起來實際用一陣子,因為鍵盤這種每天要敲上萬下的工具,手感與準確度只有自己打才知道,再多的文件都替代不了。從 F-Droid 取得的好處是,F-Droid 版經過獨立建置,等於多一層和 GitHub 原始碼一致的保證。要記住的是,Urik 現在仍是 beta,把它當主力鍵盤前最好先在非關鍵情境試用一週。如果你對開源 Android 工具有興趣,也可以看看我們介紹過的 PlainApp 這個開源 Android 管理工具,同樣走「免帳號、資料留在裝置上」的路線。

總結一句:Urik 最值得肯定的是,它的核心隱私宣稱落實在你可以自己打開的原始碼裡,這比任何行銷口號都實在。沒有網路權限、詞庫加密這兩件事經得起查證。但它還在 beta、只支援 Android、功能和穩定度都要自己裝來驗證。把它當成「值得親自測試的隱私鍵盤候選」是合理的期待,把它當成「現成可以無痛取代 Gboard 的完成品」就過頭了。

Sliven 褚崇名
Sliven 褚崇名

每日分享科技新知、免費資源以及 WordPress、虛擬主機相關主題,任何問題歡迎在科技月球下方留言,或是發送 Email 至 [email protected] 與我聯繫。

文章: 788

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


Share to...