# 4/2 Learning report ## 董事會投票 ### Workflow - Before : Admin去拿所有人的名單,然後去Voting machine設置投票內容。 - In : Voter拿手機去admin做身分認證拿到票,之後到Voting machine上做投票。 - 先拿android當UI和操作介面->安全性考量將全部做在m2354上面 - After: 之後到Voting machine拿結果。 ### Mecha Admin: android Voter: android Voting machine: M2354+android Communication: Admin <-> Voting machine : 藍芽 Admin <-> Voter : 藍芽 Voter <-> Voting machine : 藍芽 Data: Data Serializtion: Json ### Function - onboard( low-priority ): - Menu: - issue initialization u-ticket to voting machine - issue ownership u-ticket to Admin - Admin: - onboard(): 交換公鑰。 - apply ownership u-ticket to voting machine - Voting machine: - onboard(): 交換公鑰。 - Before: - Admin: - init(): 拿所有人的名單,以及設置投票內容。(透過電腦) - admin_issue_config_uticket(): 和Voting machine連結並設置投票內容。(以u票形式) - Voting machine: - vm_recv_uticket(): 接受config的設置。 - In: - Admin: - send_nonce() : send a nonce after the bluetooth connection. - verify_voter() : receive signature and verify - response_voter() : response success or fail - issue(): issue voting U-ticket to Voter - Voter: - scan() : scan the QR code on Admin - sign() : Voter sign the nonce with private key and send signature - request(): request voting U-ticket from Admin - voter_apply_ticket(): apply voting U-ticket - Voting machine: - vote_auth() : verify voting U-ticket from Voter - store_result() : store the result from Voter - r票存起來 - After: - Admin: - tally(): 叫Voting machine傳結果。(u票形式) - receive(): 統計並且顯示結果 - upload(): 上傳結果及r票到blockChain。 - Voting machine: - 回傳結果給Admin。 ### Todos #### Team Android - Build U-ticket and R-ticket class using ureka-framework. - Implement the functions of admin and voter. 畫圖 -- workflow(function), mechanical e.g.    Define API # 4/2 YangBao 開發路徑: 先轉成java, c -> ***test*** with simulation 完成之後再將其植入m2354, android --- 開發文件: 一般有兩個版本(外部文件(一般人), 內部文件(工程人員)) - 外部文件:操作說明, UI - 要講為啥我們要這樣做,而不是全雲端。 專題展就照著學長給的ppt改。 --- Ureka mapping voting mahcine -> IOT device tally machine (merge Election admin) -> agent voter -> agent m2354 做tally 和 voting reuse api 不要自己定義新的資安function ### next week 完成文件(參考學長的) 看code 寫feature(分工) ## 4/15 1. Admin 需透過 tally 傳 config 給 voting 2. voter 拆成 passer ## 4/16 assumption(會不會被惡意植入程式) 所有的program都是正常運行的 補齊ownership->是一個人 每個人都有一個機器(可能是手機)還不存在(可能是卡片)device裡面裝有private key,可以生出去很多不同的public key eid怎麼來的怎麼灌進tally machine大家都可以撿到u-ticket但只有user可以用 陽寶一開始想的就是最棒的不要東改改西改改 assumed 事功發的是就可以先設計一臺就好 assumption 很重要最後再來討論 voter 合併passer passer 參考其他國家的投票(例如印度 owner scope 要定義一夏 ### next week 開發環境(兩三個人一起實作的開發環境) 想一下 windows10 (github)拉拉拉屎 ## 4/18 1. 因為做身份認證也需要發送u-ticket,所以不能直接跟tally做,需要先跟admin要求身份認證的u-ticket 2. 設計足夠安全的app  4/30 想說哪一些情況是合理或不合理 voting machine要account voting的rule要知道才能有一致的結果 RULE要可以被大家驗證之後投票才會成立 voting machine可以存幾張票(RULE+R票) 用docker中environment 討論: eid怎麼做 5/8 1. 假設有eid, eid裡面有key pair和events 2. 根據是否有進入董事會來決定是否可以投票。 3. 從鏈上下載有“進入董事會”這個event的eid -> 獲得key table 4. Admin 將 voter 投完得到的R Ticket傳到鏈上,否則票數對不上的話會判定失效。投票結果包在tally R Ticket中。 5. key table要在admin machine上 6. 用hashmap保證投過不能再投 7. 為什麼要分voting machine和admin agent? 因為要降低admin的權利 (避免可以同時操控上傳區塊鏈以及計票的功能) 5/20 Configuration: 1. 用eID event生成voter table 和 candidate table 2. 由admin agent下載兩張table並拿去config voting machine 3. Config R-Ticket 傳給 Admin agent 並上傳bc 4. Config R-Ticket 存有兩個 table 的 hashValue 5. Config 僅可設置一次,需要經過tally後才可以再次進行 In election: 1. Voter 拿著 Voter agent 找 Admin agent 做身份驗證 2. Voter agent 需有App (包含 eID key pair) 3. Admin agent 驗證後核發 Voting U-Ticket 4. Voter Agent 拿著 Voting U-Ticket 找 Voting machine 5. Voting machine 先確認 U-Ticket 上的 Public key 有無投票過以及是否可以投票(驗證投票者身份及確保只有投過一次) 6. 驗證完成後 Voter agent 進行投票 7. Voting machine 將 R-Ticket 的副本傳給 Voter agent (R-Ticket 正本將會在 tally 時傳回給 Admin agent) After election: 1. Admin machine 傳送 Tally U-ticket 要求 voting machine 進行結算 2. Voting machine 結算後回傳 Tally R-Ticket 以及所有 voting R-Tickets 3. Tally R-ticket 包括結果(各個候選人得票數) 4. Admin agent 將這些 R-Tickets 上傳bc 5. bc 確認所有 voting R-Tickets 的 key 是否都在 key table 上並確認R-Ticket 總數符合總票數 Q: 1. Voting R-Ticket 需要紀錄 voter key嗎?(與現實相反) 2. 需不需要 check? -> 因為我們的系統不存在除了系統故障以外的潛在風險,我們認為R-Ticket就可以解決 5/22 Q1: 我們要讓任何人都可以不經過admin去跟voting machine 要R票 1. plan A: permissionless ticket -> can see config R-Ticket 2. plan B: use button 3. tally 後才能做這件事情 4. 誰都可以看 Q2: 什麼時候進入tally階段 1. 所有人完成投票 2. 訂一個時間,在這個時間以前且還有未投票者則無法tally 3. 投票者拿著voting U-ticket需在admin進行tally以前完成投票,否則該票無效 5/29 1. 把投過票的名單包在tally R-Ticket回傳 -> 解決空間問題 2. 採用時間模組 3. 測驗 - Admin 創假人: - 有沒資格的人來投票: - 有人重複投票: - Admin 亂改結果:
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up