---
# System prepended metadata

title: 投票專題 Overview

---

# 投票專題 Overview

[投票專題 Overview](https://hackmd.io/@zRWCfXc1TOaCsnINOAPeCw/HkkDB4G12)
[投票專題 111上學期](https://hackmd.io/@zRWCfXc1TOaCsnINOAPeCw/not6914)
[投票專題 111下學期](https://hackmd.io/nVW37qBfQiKJsjqVrHP1iQ?view)
[投票專題 112上學期](https://hackmd.io/@zRWCfXc1TOaCsnINOAPeCw/Hkv1faxuh)
[系統整合實作的 Github organization](https://github.com/System-Integration-Implementation)

---

//10分鐘內(含QA)
<font color=red>紅色</font>字是分工，總共有1~4號
<font color=green>[X]</font>是投影片需要做幾頁
<font color=red>1</font>吳
<font color=red>2</font>簡
<font color=red>3</font>祝
<font color=red>4</font>楊

## Intro, Motivation (<font color=green>1</font>, <font color=red>1</font>)
投票是一件很重要的事；為了實現公正、可驗證且方便的投票，我們選擇開發手機投票系統。這不僅提高投票便利性，降低成本，而且利用手機內建的FIDO安全晶片進行身分認證，確保投票安全。

## 核心理念 (<font color=green>1</font>, <font color=red>1</font>)
方便快速且安全(FIDO無密碼驗證+安全晶片)

## how to define security, speaking of CIA (<font color=green>1</font>, <font color=red>1</font>)
別人會因為通過裝置的身分驗證，所以無法取的對應的key handle，所以登不進去這個帳號。

## 文獻回顧 (<font color=green>2</font>, <font color=red>2</font>)
- FIDO是啥?
FIDO是由FIDO聯盟制定的身分認證標準。FIDO標準的關鍵在於身分認證在裝置端進行，搭配非對稱公鑰私鑰架構，將身分驗證的方法統一，讓各服務能夠有共同的認證標準。
- 安全晶片是啥?
安全晶片就像一台小型電腦，具有獨立的處理器、記憶體和作業系統。即使手機作業系統被惡意程式攻擊，由於安全區域的獨立性，駭客無法存取機密資訊。手機資料經金鑰加密後存於磁碟，解密金鑰則存於安全區域，只有透過身份驗證後才能取得。此外，安全區域內還存有電子錢包的交易紀錄，防止惡意軟體存取。

## 實作環境 (<font color=green>1</font>, <font color=red>2</font>)
//可以放LOGO的圖
前端: Flutter
後端: Python Flask API + Google Cloud Platform Virtual Machine + Firebase

## 使用場景 (<font color=green>2</font>, <font color=red>3</font>)
//放之前使用場景由大到小排列的圖
//我們做的是最小範圍的
"公司或學校高層的投票決議"
先定義一下"公司或學校高層的投票決議"
1. 人數不會超過100個人(Firebase OAuth限制)
2. 對於私人投票有需求
3. 大家為了趕時間所以需要一個快速的投票方式
4. 對安全有一定的需求

## 研究方法 (<font color=green>2</font>, <font color=red>3</font>)
驗證: FIDO + 安全晶片
我們在一開始，為了測試投票流程是否完善，有先做一個完全仰賴Firebase的APP。而由於Firebase並不支援FIDO驗證，因此我們決定以這個版本為基礎，在不更改記錄使用者資訊的情況下，使用自己架設的API來完成FIDO。

//安全晶片
我們在參考官方網站的資料後，選擇Python Flask作為我們的框架，負責驗證、儲存驗證資料、以及銜接到Firebase。
再調用的api上，我們同樣在查找資料，了解FIDO的架構後，我們將android 提供的FIDO api與我們的app做整合。
安全晶片，其所提供的是一套安全的儲存空間，在概念是類似OS kernel mode管理，所以我們是以api將其與我們的app做整合。

## 投票流程 (<font color=green>1</font>, <font color=red>4</font>)
//Demo video
1. 登入
2. 創建投票
3. 分享私人投票
4. 參與投票
5. 查看投票結果

## QA <font color=red>4</font>