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