臺灣社交距離 App
catcutecat
2021.08.31
運作機制
- 總覽
- 系統架構
- 藍牙規格
- 加密規格

-
與接觸過的裝置交換 RPIs (Rotating Proximity Identifiers)
-
確診者可自行選擇是否上傳過去 14 天的 TEK (Temporary Exposure Key)

- 銨
-
- App 自動定期向 Server 下載確診者上傳的 TEK
- 若有接觸紀錄,App 會跳通知提醒使用者
系統架構
手機
衛生單位的人
伺服器
衛生單位的人提供驗證碼給使用者
App 拿驗證碼向伺服器換取 token
App 加密並打包 TEK 等要上傳的資料,連同 token 一起向伺服器換取 certificate
App 把要上傳的資料連同 certificate 一起傳送給 key server
藍牙規格
- Service UUID - 0xFD6F
- Service Data
- A 16 byte Rolling Proximity Identifier
- A 4 byte Associated Encrypted Metadata
- Broadcasting Interval
- Is subject to change
- Currently 200-270 milliseconds
- Scanning interval
- Discover nearby within 5 minutes
加密規格
- ENIntervalNumber
- 10 minute time window
- Temporary Exposure Key (TEK)
- TEKRollingPeriod - 144 (24 hours)
- Size - 16 bytes
- 臺灣時間每天早上 8:00 更新
- Rolling Proximity Identifier (RPI)
- Change when BLE MAC changes (10 - 20 minutes)
- Size - 16 bytes
Exposure Notifications API
FAQ
- 多久比對一次
- 示警條件與通知規則
- 到底需不需要開定位
- 資料保存時間
- 移除 App 會怎樣
多久比對一次
- 設定上是每 4 個小時比對一次
- 用 WorkManager
- 例外
- 看各手機系統的心情 XD
示警條件與通知規則
- 示警條件
- >= -65dB && >= 2 minutes
- 無風險通知規則
- 臺灣時間每天晚上 6 - 10 點之間,最多一次
- 有風險通知規則
- 使用者進入 App 主頁面前 - 每次比對後
- 使用者進入 App 主頁後 - 停止通知
到底需不需要開定位
- Android 10 以前 - 要開
- Android 11 以後 - 不用
- 官方說明
- 有趣的 Issue 串 (2015 ~ 2021)
資料保存時間
- Server 端
- 確診者上傳的 TEK - 10 天
- 手機端
- 接觸紀錄 - 14 天
- 自己的 TEK - 14 天
移除 App 會怎樣
- Android
- 資料會全部不見
- 重新安裝也一樣,不見就不見了
- iOS
- 資料會留著
其他
- 開發時程/團隊人數/分工
- 一些數據資料
- 開源過程
- 中國機
- 疑難雜症
開發時程/團隊人數/分工
- 第一階段 2020.04 ~ 2020.06
- 自行處理藍牙訊號收發、加密、儲存、比對
- 第二階段 2021.02 ~ now
- 串接 Exposure Notifications API
- Jarvis + Designer 1, iOS 1~2, Android 1, Server 2
一些數據資料
- 使用者數量趨勢變化
- 兩平臺使用者數量比例
- 確診者資料上傳情形
- Crash & ANR Rate

機師
二級

開源過程
中國機
- 評論:「臺灣天網」
- 評論:「好厲害的反共技術還特地封鎖中國機」
「......」
疑難雜症
- 沒有每天收到無風險通知、半夜收到無風險通知
- 小工具尺寸不是 1x1
- 重開機後快速啟動鍵可能會失效
- Sony Z3 Android 6.0 無法解鎖螢幕
- 掃描 QR Code 後 無法送出/內容空白/內容是前次的
- 要連續掃描兩次才不會跳掉
- 簡訊送出後還是會反覆出現
- ... 歡迎來發 PR ~~
連結匯總
Q & A
0831 TSD App
By catcutecat
0831 TSD App
- 181