作者 |翁佳驥
實習編輯 | 李柏均
衛福部疾病管制署於 5 月 13 日推出的「臺灣社交距離 App」,提供台灣地區使用者接收 COVID-19(又稱武漢肺炎、新冠肺炎)的接觸通知,若收到通知,則表示曾與確診者在特定期間近距離接觸,App 會提醒收到接觸通知的使用者連繫當地衛生局,以減少傳染風險,並讓具有潛在感染風險的使用者,能進行居家隔離或自我健康管理等相應控制措施。
等等,它會洩漏我的行蹤嗎?
「臺灣社交距離」畢竟是一款接觸追蹤(contact tracing)的應用程式,既然試圖「追蹤」與確診者的「接觸」,必然會上傳使用者的足跡到某處,才能與確診者的足跡比對。然而,這樣做不就等於暴露使用者的隱私給他人嗎?
很快地,衛福部、專家達人乃至負責研發此 App 的 「AI Labs 臺灣人工智慧實驗室」創辦人杜奕瑾 都撰文解釋這個 App 的運作原理,AI Labs 亦將完整的技術白皮書公開放在存放程式源碼的 GitHub 平台上。「臺灣社交距離」的數據完全以「去中心化」方式傳遞,因此傳遞內容不會集中存放於同一處;再者,使用者的足跡資料會經過「去識別化」處理,也就是不會有人知道上傳足跡的確診者究竟是誰,因此不會發生如五股獅子會前會長到訪茶室,傳得人盡皆知的事件。此 App 的機制設計,也就是演算法,既能滿足疫調追查與比對確診者足跡的需求,亦可顧及個人隱私。
「臺灣社交距離」的演算法乍看周全。但仍有一處尚未澄清的關鍵:演算法雖考慮周到,但我們怎麼知道開發團隊有沒有照著這個演算法做?
如何確定開發者有照做?
這個問題並不是針對 AI Labs 的開發團隊而來,而是一個所有跟公眾有關的軟體、資訊系統都需考慮的問題。「臺灣社交距離」與公眾利益、個人隱私息息相關;實際上不只是「臺灣社交距離」,所有政府單位所使用的軟體與資訊系統,其日常運作所影響的往往不只是政府單位本身,而且包含了全國民眾。但這些軟體與資訊系統在開發或決定購入、租賃時,政府承辦人員考核的是廠商是否有做到其宣稱會提供的功能,往往無暇也無能力細究廠商「沒說」的部分。這些未言明的部分可能是無心的意外,例如軟體出錯、資料傳輸機制有漏洞、系統的安全缺陷,甚至可能是開發團隊刻意植入的功能,例如:為了方便掌握系統狀態,提供第一線客服人員後門帳號密碼,使其能登入客戶系統的功能。
以 Zoom 這套品質優良的視訊會議軟體為例,自從 COVID-19 疫情在全球蔓延,大家改採遠距視訊會議工作與教學,Zoom 的下載量暴增。然而若不是專家研究後公布,沒人想得到 Zoom 會在視訊期間偷偷把某些資料往北京的伺服器送。實際上,Zoom 送了哪些資料、那些資料跟個人隱私有沒有關都是其次,最重要的是:我們要如何知道,某個資訊系統在我們不知情的狀況下,做了哪些事?
這個根本的問題該怎麼解決?最簡單的,實際上也是唯一的辦法,就是要求政府單位所使用的軟體、資訊系統,還有像「臺灣社交距離」這種與公眾利益息息相關的軟體,將它的程式源碼(source code),也就是構成應用程式(App)的內容組成,開放出來給大家檢視。
納稅人出錢寫的 App,為什麼納稅人看不到也用不了源碼?
2017 年歐洲自由軟體基金會推出了一個活動,叫做 「Public Money? Public Code!」(下簡稱 PMPC)活動中請大家去找自己選區的國會議員,要求「用納稅人的錢(Public Money)所寫的軟體,全國公眾都應該有權使用(Public Code)!」更進一步地詮釋,就是所有由政府出資所取得、包含購買、租賃、委外開發的系統與軟體,都應該以開放源碼授權釋出,讓全國乃至於全世界的使用者、開發者都能自由檢視、取得、再利用。雖然當初此活動是針對歐盟國家所發起,但其理念是全世界通用的。因此在此活動推出前,臺灣自由軟體社群朋友即直接與歐洲自由軟體基金會聯繫,成為共同發起的團體之一。
我們來看圖片 1。這裡列出了我們目前政府單位所使用的各式資訊系統所面臨的問題。若我們好好檢視過去政府單位的軟體系統,從開發標到後續的維護標,不難發現一個固定的模式。不管是內部的公文系統、資產管理系統還是對外公開的網站等,經常會透過標案委由民間廠商開發,然而政府單位的承辦人往往沒有足夠的能力驗證廠商開發後的成果。一般來說,規格書、需求書中提到的功能無論品質好壞,有做到就可以驗收,若無法驗收,對承辦人來說可能還會是個大麻煩。那麼,做完了、上線了之後發生問題怎麼辦?理論上當然是找原廠商解決,但實務上大家會發現有些問題廠商不願處理、不想處理、不會處理,而政府單位承辦人可能一點辦法也沒有。再來,第一期開發案結束了,於是有了第二期、第三期以後的維護案。但維護案由誰做呢?講白一點,別的廠商也未必有意願來收拾前一個廠商的爛攤子呢!所以如果真的大規模地下去查驗,應該可以發現有一定比例的標案由相同廠商不斷維護下去,服務建議書也都是從前一年甚至更早以前複製貼上。此時的政府單位已經被「綁架」了。
PMPC 即是針對圖片 1 中所列出的「現有問題」提出的解方。既然是由政府單位出資,那麼開發出來的程式源碼也應開放出來供大眾、專家檢視,最直接的效果將是這些系統的品質必然會獲得驗證,政府單位也不會被特定廠商綁架。
再回到臺灣社交距離這個 App。它對公眾利益極為重要,因此做了哪些事、是不是真的照所公布的演算法所做?都必須要非常謹慎,並且越公開透明越好。將程式源碼開放出來是唯一、也是最容易取信於人的做法。源碼開放了,自然會有許多專家、開發者檢視、找出並回報問題,甚至直接動手協助解決問題,也直接為此 App 乃至開發團隊背書。
而目前已經有不少在資訊業界重量級人物提出相同的理念與訴求。例如翟本喬在他的貼文上就說得很清楚:「(要避免懷疑)其實很簡單,這個程式只有 1.9MB,源碼應該也很短。就把它開源出來,好好打臉一下那些懷疑主義者!」,在開放資料上一向貢獻巨大的江明宗(Kiang)也遠在此 App 發布前一個多月就已經要求開放源碼。
其它國家的開放源碼接觸追蹤系統
這裡有一份清單列出世界各國所使用的開放源碼接觸追蹤系統。在這清單裡我們可以看到開放出來的源碼大多是前端 ,也就是手機上使用的 Apps,不過像是英國的 NHS COVID-19 App(可參見遠見雜誌的專文)、加拿大的 COVID Alert、捷克的 eRouška、德國的 Koronavilkku 等則是連後端系統也都將源碼開放出來,開放程度更徹底。
開放源碼讓大家一起找問題,減輕開發團隊的負擔
開放源碼的其中一種優勢,就是錯誤回報機制:透過在 GitHub 上開設「議題(Issue)」反映問題,來自各方的人們可以共同糾錯,協助開發團隊改善程式。以西班牙所使用的 Radar COVID 為例,其系統有一個從瑞士的 DP-3T 專案再利用的伺服器專案。由於它開放源碼的特性,有人發現問題後直接揪出程式碼中的問題。這個例子雖然簡單,但蘊藏了無限可能性:不只是程式碼中的問題,整體運作流程都可以詳加檢視與討論。冰島所使用的 Rakning C-19 也是一個很好的例子。裡面的討論除了問題回報(如 Issue #62)、對後端 API 伺服器開源的要求(Issue #49)、甚至對授權衝突的疑慮(Issue #56)等都是可以被檢視與討論的議題。
除了上述的問題外,民間專家也可以更進一步地檢視演算法並提出建議。例如在自由軟體社群裡相當活躍的小兒科醫生李柏鋒曾在個人臉書及「台灣社交距離」的 GitHub 平台上回報議題提出,比對接觸超過兩分鐘即提出通知警告的設定必須檢討:「太過嚴格的標準容易引起恐慌而且增加疫調人員負擔、潛在的醫療篩檢負擔,與隔離場所負擔。」若臺灣社交距離能採用開放源碼釋出,李醫師與其他有能力的社群朋友即可直接針對此問題,找出該調整的設定與程式碼並提出修補的程式碼(稱為 patch),待開發單位內部討論後確認應修改,即可立即套用,如此也減輕了開發人員的負擔。
總而言之,正因為隱私跟防疫都非常重要,所以將追蹤系統的演算法與實作開放出來,讓大家知道資料是如何去識別化、去中心化地傳遞,才是取得隱私與防疫平衡的最佳解方。如果您也關心防疫與隱私的平衡,請一起來推動政府單位,以「臺灣社交距離」這個 App 做為一個 Public Money? Public Code! 政策的示範,除了取信於社會大眾,也能向國際發聲,告訴大家臺灣在防疫與保護隱私兩方面所做的努力。
本文章授權條款採 創用 CC BY (姓名標示) 4.0。
