NTU 電子投票回憶錄

Mouse Kuo
10 min readJan 20, 2024

NTU 電子投票回憶錄由 Mouse Kuo 撰寫於 2017/08/27,給台大學生會做內部留存, 在 2024/01/20 重新排版後在 Medium發佈。

https://www.facebook.com/photo/?fbid=10160207694153318

「電子投票於過去20年在世界各地進展相當緩慢,部分先進國經過測試後,最終還是恢復紙本投票方式」

在這次 2024 總統大選結束後,社群媒體上熱絡地討論著電子投票的議題,在看到 fOx 分享了一篇關於電子投票的研究,喚起了我快 10 年前的記憶,於是我決定把當時留存給台大學生會的回憶錄發佈在這裡。

臺大學生會的前身是由班代表或系代表間接選舉主席組成團隊的國立臺灣大學學生代表聯合會(簡稱「代聯會」),於1980年代校園民主運動浪潮下,1988年臺大學生選出第1屆會長,代聯會於同年8月正式改組為直接選舉產生會長的國立臺灣大學學生會,其後按照1990年5月31日全校學生複決通過《國立臺灣大學學生會自治規程》,是臺灣直接選舉產生會長和會員數最多的學生會 — 國立臺灣大學學生會(維基百科)

正文開始

2013年,台科大學生會長選舉

2013 年底(101 年下學期)台科大舉辦的學生會長選舉出了點狀況,宣布延期投票,倪嘉德學長接任主委,而我被找去擔任選委會委員。

這場選舉採用紙本投票,在郵局前廣場、國際大樓一樓各設置了投票所,同學可以就近投票。我們寫了一支程式,透過線上登記已經投票的同學,來確保沒有人重複投票,而投票方式就參考中選會的規定進行,一切也順利進行。

台大學生會推動電子投票

因為台大校地廣、學生多,而每個學期的學生自治選舉,會在校園設置10多個投票所,並跟區公所借用票匭、票亭,比照中央的模式辦理,辦理學生選舉可以說是很熱血的一件事情。

102 年上學期,首次在學生代表選舉當中應用了電子投票系統,效果不錯,終於不用再開票到半夜。

到了下學期,因預算、時程關係,原廠商無法繼續提供服務,距離選舉剩下三個禮拜,即將出大包,經過某個學長介紹,推薦找我來接手這個案子。

當時的電子投票設計流程,比較像「紙本選票」電子化:

  1. 選務人員檢查學生證
  2. 在註冊章旁蓋章,代表已投過票
  3. 依照同學的系所給予對應的「授權碼」,有點像傳統的加退選流程
  4. 走至票亭,裡頭有平板電腦,在投票介面上輸入授權碼
  5. 完成投票圈選

這樣的規劃,可以滿足上學期的選舉需求,但下學期的選舉很複雜,有學生會長、研協會長,還有協助其他系所舉辦系學會長選舉,身份別對應投票關係複雜、投票人數也比上學期還多。

在接下任務的時候,只有兩個禮拜左右的時間能進行開發,開發工作相當挑戰,在與選委會主委劉司捷、副主委張哲豪討論需求後,我就開工了。

因為同學的身份已轉換為授權碼,而授權碼是隨機發送,去識別化,滿足匿名性。

記票方式也不能透過數字往上加,為求嚴謹,我將記票的資訊放置於檔案,每一次儲存選票,接著新增一行記錄,內容是投票時間與投給誰,用 git 進行 commit,然後傳送到 GitHub 備份,於開票後公開。

投票記錄請參考 https://github.com/mousems/NTUvote102-2-result

我也將系統程式碼開源,也因為開源的關係,也有許多朋友協助幫忙檢視、除錯。

請參考 https://github.com/mousems/NTUvote102-2

系統則放在 AWS,投票平板裝置透過 VPN 連線到 VPC,並有多台主機同時提供服務,透過 Git 的 Merge 功能,可以方便的合併投票紀錄。

然而這是一切杯具的開始…

兩個禮拜上線、演練不足、各種出包

依照 102 上學期的經驗,投票平板的電力足夠使用一整天,因此沒有準備行動電源或是延長線,但投票平板有 VPN、使用頻率又很高,耗電速度比想像中快。

而投票所都在室外,WiFi 不穩定,台大校園內 3G 訊號也很差,網路連線透過全球一動的 WiMax 還勉強可以使用。但候選人照片沒壓縮、Android 平板瀏覽器時常閃退、載入費時,瀏覽器閃退後系統又被登出,需要選務人員重新登入,因此投票速度相當慢。

加上投票所只有準備兩台平板,都要排隊半小時以上,因此還上了新聞。

對,只有我

現場負責的工程師只有我,光處理零星發生的狀況就疲於奔命,再加上程式有 Bug,造成研協代表選舉當中編號 10 號以後的候選人,所得的票皆被當廢票,整個大出包,而改採遠距投票補選。

程式碼參考:https://github.com/mousems/NTUvote102-2/commit/486fc2199d3e579f735fd3558b87768b15c7b668

因為現場人員的流程複雜,加上訓練不完整,造成很大的影響,決定重新設計整體流程,接著再次應用在 103 上學期的選舉。

重新規劃電子投票系統架構

103 學年上學期,選委會主委陳昱芸上任,台大開源社社長姜柏任(RSChiang)也一同參與規劃,討論新系統的架構,這會是台大學生會第三次實施電子投票。

新系統拆分為兩個部分:「身份驗證系統」及「記票系統」

前者由開源社長姜柏任負責開發,後者由我負責開發,現場的網路與電力則外包廠商架設。

  • 身份驗證系統:包含選務 APP 以及後端系統,APP 安裝在支援 Mifare 技術的 Nexus 7 上,刷學生證後,可以讀取悠遊卡內碼,透過教務處的學籍 API 即時確認在籍狀態,並確認學生證補發次數,避免使用補辦的多張學生證重複投票。
  • 記票系統:包含計票後端系統跟投票前端頁面,前者可即時知道投票平板的使用狀況,後者用來提供投票圈選功能。

兩套系統間透過 API 溝通,選務人員只需要用 APP 刷學生證、就可以請同學到平板投票

將人為因素出錯機會降低,對同學而言投票的流程也相當簡單,如下圖:

到了 2014 年底,系統開發告一段落,並且再一個月就是六都選舉,選委會想在法定民調截止時間前,在台大校園舉辦模擬投票,炒熱氣氛並順便測試系統(其實這才是重點XD)。

模擬投票舉辦在小福前面,我們拉了網路線架設 WiFi,教務處 API 也在活動前幾天開通,到了當天一切順利,也趁這次的經驗進行最後的系統調整。

另外這次投票系統的伺服器改由台科大學生會提供(跨界合作XD),選舉前也舉辦多場選務訓練會,讓選務人員熟悉系統操作,順便測試各項功能。

小差錯

投票當天,有選務陸續反應學生證感應不良,交叉測試後是 NFC 晶片的 Bug,手機 NFC 功能重新啟動後就能運作。

除此之外,還有選務太頻繁感應學生證,導致硬體故障,幸好有備品,真是考驗後勤能力啊…

選務中心監控畫面

另外若網路不穩,可能會導致系統認為同學已經取票,但其實同學根本還沒投票,選務只能打電話回選務中心,由工程師解除領票紀錄,讓同學再次領票。

而 ASUS 平板因為不支援雙頻 WiFi,內建瀏覽器對於前端開發相當不友善,不支援主流的前端技術,比 IE 還要 IE,因此我們打算在下學期換掉它。

這些小問題不影響整體的投票結果,選舉也順利舉辦完畢,緊接而來的是 103 下學期較大規模的選舉。

103 下學期,身份驗證 APP 加上了許多的防呆與檢查,降低選務人員操作失誤造成的意外。投票平板也改成 iPad,透過引導使用模式,直接限制使用者的操作方式,Safari 支援主流的前端技術,並可以連接 Mac OS X 的 Safari 進行即時除錯,於是我們找了前端大神將投票操作介面重新設計一番!

我們在投票所協同計中架設了臨時 WiFi,讓網路更順暢,但還是有出包,不小心錯將獸醫系系學會被歸類到醫學院,純粹是設定錯誤,後續在工作流程調整為選監要針對系統設定進行重複確認。

第四次電子投票

104 上學期,由於開源社長姜柏任接任學生會福利部長,身份驗證系統的開發工作交由黃昱豪,改使用 banana pi 搭配 RFID 讀卡機,作為身份驗證系統,投票前一晚因讀卡機部署不及、系統不夠完善仍有很多 bug,且網路部署不及,選委會宣布因不可抗力因素延期。

光纖被挖斷

經過一番開發,到了投票當天中午,卻發生台科大的光纖被挖斷,全校網路斷線,因此中斷了電子投票進行(因為伺服器放在台科大呀!),經過了半小時的緊急處理,將電子投票系統切換至備用系統,便恢復投票,但這次一連串的問題,導致電子投票不被信任。

因電子投票已實施三年,選委皆無經歷紙本投票時期,學生會長陳宣竹請來上古神獸選委黃順明,借助他的紙本選舉經驗,在七天後舉辦了很多年未見過的紙本投票,而因紙本投票無法判讀選舉人是否已經在別處投票,於是我拿出了 101 學年在台科大的小工具,領票前先輸入學號至系統,查詢選舉人可領取哪些選票,並記錄已經領票,選舉順利完成。

第五次電子投票

105上學期,詹皓詠接任選務主委,但是開學後不到兩周,周維里因會長罷免案發酵而閃電辭職,由時任議長周安履代理會長一職,需要進行補選,因此選委會先使用先前的身份確認小工具,搭配紙本搭配,緊急在期中考前舉辦完會長補選,這是第二次實施電子確認身份、紙本投票。

接著到了上學期的例行學生選舉,則再次進行了電子投票系統的部署,讀卡機系統在本學期加入了數樣新功能,包括了遠端管理操作(可即時監控各票點之讀卡機狀態,當異常發生時可人工快速介入,而不用由工程師奔波至票點搶救)、讀卡機後台改以平板電腦顯示,選務人員僅需簡單操作即可,容易上手。

除了例行學代選舉和會長補選之外,105–1學期還舉辦過社科院吳欣陽學代罷免投票,以及因同票而需要再次舉辦選舉的社科院、電資院學代,因為是小規模選區的投票,成本和時程上考量使得兩次皆使用身份驗證小工具搭配紙本投票方式完成(票匭使用紙箱)。

對台大選委會來說,105上學期可說是史無前例,最精采也最燒肝的學期。

第六次電子投票

105下學期,順利地舉辦學生會長、學生代表和各院系學會的多合一選舉,除了讀卡機偶爾會熱當之外,沒有其他問題發生,並在投票當晚完成撤收,因為我也畢業的關係,就淡出了電子投票的開發任務。

後記

這次將回憶錄整理排版後發佈,我另外也翻到另外一篇由徐連毅撰寫的《2015–2019年,台大學生自治見聞錄與一些感想》,的確,電子投票的原意是要解決開票到凌晨的問題,但在技術終究是無法取得 100% 的信任,而投票選舉作為民主的最基礎建設,必須是能被 100% 信任的,回歸最傳統的方式,技術只用來拉近距離(例如增加身份驗證的工作效率),這樣就夠了。

雖然我不是台大學生,但那些年應該算參與了台大的學生自治,那些記憶就留在那裡吧。

--

--