Typeless 隱私檢查

有個叫做 Typeless 的 app,就如同其名一樣,希望讓大家從打字中解放,用語音輸入就可以把許多事情搞定。據說很好用,用的人不少,但近期有人指出可能有些資安上的疑慮,因此我好奇把它拆開來看了一下。

話說在這個人手一個 AI agent 的時代,其實把它拆開來很容易,你就跟你的 AI agent 說它是個 Electron App,它就會找到 asar,解開,然後分析裡面的 JavaScript。就算不講它是 Electron,我相信 AI 應該也能判斷得出來。

首先是語音辨識的部分,是 100% 雲端沒錯,你的語音輸入外加 context 都會被送到他們的 server。不過這點其實他們官網就有寫,我預期使用者在用之前應該也會知道?

Cloud Processing: Transcription is performed on the cloud to ensure the highest accuracy and low-latency performance.

但在安裝使用的時候,確實有一行標題寫說:「所有數據保持本地」,敘述是「所有歷史紀錄都保留在你的設備上」,這倒是有一點誤導,敘述是對的,但標題的「所有數據」並不包含你的語音。

然後順帶一提,還有一個標題寫「零數據保留」,根據我的淺薄理解,零數據保留其實跟雲端是不衝突的。你可以把資料傳到雲端,但 service provider 又宣稱沒存你的數據。

至於是不是真的呢,第一看你信不信任這間公司,第二看有沒有拿什麼第三方合規認證,這就見仁見智了。很多大公司的雲端產品也都有零數據保留相關的 policy。

把話題拉回來,那 Typeless 除了語音辨識以外還會幹嘛呢?看了一下,主要就是收集語音辨識時需要的 context,這 context 包含現在 focus 的應用程式、標題、URL(如果是瀏覽器)、input 內的文字以及當前畫面能看到的文字等等,具體請求內容我放截圖了,這是我在 Github Issue 上面留言,所回傳 server 的資料。

我自己是覺得這些 context 還算合理啦(儘管完整 URL 跟 visible screen content 應該有些人會覺得有點可怕),就真的是語音辨識的時候需要用到,藉由這個 context 能讓結果更強。

至於按鍵監聽的部分,是拿來做熱鍵偵測沒錯,但我也不確定常見做法是什麼(Electron 也有內建,不過我沒用過),至少沒看到把按鍵資訊直接回傳。

總而言之呢,作為一個立志要讓語音辨識變得超好用的 app,目前的 context 看起來還算合理,至少從原始碼中沒看到它偷傳什麼奇怪的資料,不過有幾點是肯定的:

  1. 語音會被傳到 server
  2. context(內容見附圖)會被收集並傳到 server

知道這些以後要不要使用,就看每個使用者自己了。

有些人覺得這些資料是合理的,是必要的,就繼續用。有些人可能覺得它拿的東西太多,或甚至有些人希望語音永遠留在本地不要上雲,這都是每個人的選擇。

然後我也只是隨便看了幾眼,程式碼靠 AI 幫我先看過一輪我再稍微對照,只確認了一下請求格式,然後弄個 proxy 實際看一下傳了什麼,不是很認真的研究。

話說我弄 proxy 的時候搞半天沒攔到東西,讓 cursor 一出手就搞定了,直接幫我把 asar 弄出來、patch 完然後塞回去,順便重新 sign 了一下 app,真的厲害,佩服佩服。雖然我自己弄也搞得定,但是出一張嘴就有人幫我辦事再好不過了。

評論