#g0v.tw
2016-03-28
2024-12-04
2024-12-03
2024-12-02
2024-12-01
2024-11-30
select..
AUTO⬇
05:21:11
g0vtelegrambot
<> Hello
06:11:06
🅣 gugod
M3tf@: hi
06:33:51
ⓢ acechen
還有「新竹物流」(不知道算不算)
08:34:25
🅣 M3tf@
Hi
13:57:46
ⓢ linroex
想問一下大家,我最近在規劃學校學生會的電子投票,我們遇到一個問題是如果有投票者投完之後跑來,堅持他投給A候選人,可是機器卻顯示B候選人,我們該怎處理比較好O_O 因為選舉本身的匿名性,我們其實無從判斷他到底投給誰
13:57:51
ⓢ linroex
不知道在這裡問合不合適XD
14:04:47
🅣 mmis1000
怎麼確認投票者身份的啊?
14:07:02
🅣 mmis1000
如果已經盡到防止被冒名投票的義務,那無視就好了?
14:14:17
🅣 othree
選舉是匿名的話,他怎麼知道他的票是錯的
14:16:47
🅣 mmis1000
在伺服器無法直接知道這張票是誰的的情況下,證明這張票是你的,理論上可能吧?
14:17:02
🅣 mmis1000
不過一般應該不會做到這麼複雜?
14:19:17
🅣 othree
理論上可能,可是這就像是你的密碼沒加密一樣
14:19:47
🅣 othree
使用者看的到他自己的票,他不會懷疑系統實際上是非匿名的嗎
14:21:27
ⓢ dirty
這是已經發生了, 還是假設的問題?
14:23:28
ⓢ dirty
我覺得就是投完後給一個亂碼, 自己之後想查的話, 可以把這個亂碼記下來, 但不提供線上確認的服務
14:25:01
ⓢ ronnywang
之前有跟朋友技術討論過這些問題,我自己是覺得電子投票要能做到匿名但是又讓投票者可信真的很難做到
14:25:42
ⓢ ttcat
區塊鍊?lol
14:26:18
🅣 mmis1000
就算是實體投票都一堆爭議了
15:23:08
ⓢ lanf0n
原問題的情況就怪怪的吧......如果是匿名的話系統上跟投票者 *應該* 查不到才對啊....
15:25:33
ⓢ lanf0n
另外問一下 ls 有類似 jsdoc 的 document generator 嗎QQ
15:31:36
ⓢ ronnywang
實體投票除非自己蓋錯,要不然你蓋幾號你很確定那張投票紙上就是你的選項。但是電子投票你無法確定你投了A時,實際上後面票被記在B上面這種事不會發生,除非放棄匿名性讓之後可以查到自己的投票記錄
15:33:03
🅣 mmis1000
匿名性是別人查不到吧,並沒有說到自己查不到?
15:34:33
🅣 mmis1000
不過無論怎樣,都很難確定主辦方是否監守自盜
15:35:18
🅣 mmis1000
畢竟沒有實體,被竄改也死無對證
15:40:11
🅣 S_ean
票名 = hash(學號 + salt₁ + 身份證);
15:40:11
g0vtelegrambot
<S_ean>
15:40:11
🅣 S_ean
修改用密碼 = hash(學號 + salt₂ + 身份證);
15:40:11
g0vtelegrambot
<S_ean>
15:40:11
🅣 S_ean
salt 設計成只有程式能讀;
15:40:12
🅣 S_ean
不能線上修改,只能直接去找管理員;
15:40:12
🅣 S_ean
密碼在完成投票後顯示,不可再持續;
15:40:13
g0vtelegrambot
<S_ean>
15:40:13
🅣 S_ean
這樣有漏洞嗎?
15:41:03
🅣 mmis1000
有,這樣票是誰投的,管理員就能輕鬆看到了
15:41:36
kcwu
技術上(密碼學)應該可以讓自己能 verify, 不過一般人不容易理解, 沒辦法信任
15:41:48
🅣 mmis1000
票名至少有一個,必須是user掌握,而且管理員看不到
15:42:18
🅣 S_ean
用 user 的 PGP key 簽吧 (誤
15:42:48
🅣 seadog007
如果有人逼你查給他看呢?
15:43:19
🅣 seadog007
傳統投票沒這問題
15:43:20
🅣 othree
完全匿名化的 raw data 送他
15:45:48
🅣 mmis1000
seadog007: 查詢限實體站點啊
15:46:18
🅣 mmis1000
有種就跟去警察背後找碴
15:47:07
ⓢ ronnywang
只是如果個別查都可以查到自己投誰沒問題,但是最後加總的地方搞鬼呢 XD
15:48:48
🅣 mmis1000
所以還是需要公正第三方認證啊
15:48:55
kcwu
完全匿名化的 raw data 公布, 大家可以查自己的票有沒有在裡面, 也可以自行加總
15:49:33
🅣 mmis1000
問題在於,要怎麼知道有沒有多出票
15:49:37
kcwu
(我不想處理被迫查票的 case)
15:49:39
ⓢ ronnywang
但是如果再參入一些幽靈票進去,這些幽靈票也是匿名的
15:49:50
🅣 S_ean
即使顯示結果,提供 API 、票數圖表
15:49:51
g0vtelegrambot
<S_ean>
15:49:51
🅣 S_ean
投票後可以查自己投的有沒有加票數
15:51:18
ⓢ ronnywang
即時顯示結果也滿可怕的,這時間點只有一個人投票,然後即時結果的票就變了,我就知道他投誰了
15:51:33
🅣 mmis1000
只要是線上投票,都要處理管理員自己灌票的狀況
15:52:03
🅣 mmis1000
但是幾乎無解
15:52:33
🅣 mmis1000
除非真的搞成btc那樣
15:54:16
kcwu
還要公布誰有來投票, 以學生會的例子比較簡單, 用學號. 如果是身分證號的話就不太可行, 一般人沒辦法查那個號碼是不是 valid
15:54:18
🅣 seadog007
blockchain驗證喔
15:56:35
🅣 mmis1000
所以線上投票需要
15:56:36
🅣 mmis1000
別人無法知道那張票是你的
15:56:36
🅣 mmis1000
你可以查到你自己投給誰
15:57:04
🅣 mmis1000
主辦能知道那些人有投票
15:57:05
🅣 mmis1000
主辦無法自己灌票
15:57:33
🅣 mmis1000
其實也才4個條件
15:57:48
🅣 mmis1000
但是全部符合好像很難
15:58:13
kcwu
大家知道誰有投票, 如果 group 不是太大, 就能讓主辦不能灌票.
15:59:11
ⓢ ronnywang
傳統投票還有一個要求叫秘密投票,就是我無法跟別人證明我投給了誰(所以投票所內禁止亮票,禁止攝影) ,這是為了防止賄選可以用證明自己投了誰來拿錢... 這點電子投票可能完全只能放棄
16:01:18
🅣 mmis1000
不能查的話,就無法確認主辦有沒有在票動手腳了
16:01:33
🅣 mmis1000
這跟第四點衝突
16:01:35
kcwu
在投票時, user 要輸入選項及一個 random token. 開票時, 要公布 token 跟選項的 list. 還有有投票的名單.
16:02:33
🅣 mmis1000
但是能線上查又有亮票問題
16:02:57
kcwu
每個人可以 download full list, offline query
16:04:48
🅣 mmis1000
有人可以證明符合以上全部條件,在邏輯上有沒有衝突嗎?
16:10:34
🅣 seadog007
mmis1000: 定點查
16:11:49
🅣 seadog007
然後定點投票?
16:11:56
ⓢ ronnywang
定點查的話,我把我的 random token 給別人查呢?
16:12:34
🅣 seadog007
g0vircbot: 這也是個問題
16:12:49
🅣 seadog007
除非有方法驗證是本人
16:13:49
🅣 seadog007
可是生物特徵資料庫數據太少了
16:14:05
ⓢ ronnywang
down full list, offline query 聽起來不錯,讓 admin 擁有的資訊跟大眾擁有的越接近能惡搞的就越少
16:15:37
kcwu
如果是在開票之後被迫, 你可以謊報別人的 token; btw, 我不喜歡定點查, 天知道那台電腦有沒有問題/被監視
16:16:38
ⓢ ronnywang
但是要如何防止 admin log 每一張票的投票時間,再搭配報到時間的時間差來推算出原投票者投了誰
16:19:43
kcwu
這題聽起來密碼學要上場了
16:20:10
ⓢ ttcat
更重要的問題是如何防止 admin log 每一個使用者的 token 跟他投票的紀錄直接就可以知道是誰投票給誰了。
16:22:19
🅣 mmis1000
無法,你只能信任網站
16:23:19
🅣 mmis1000
真要這則做,投票時明碼側錄就好了,根本沒必要這麼麻煩
16:26:19
🅣 mmis1000
這些討論的前提是,就算資料庫整個被幹走,你都無法知道到底誰投誰,並不考慮程式碼自己被動手腳的狀況
16:26:55
ⓢ ronnywang
我倒覺得邪惡的 admin 也是討論內的範圍耶 XD
16:27:28
ⓢ ttcat
我覺得不是誒,這個討論的前提是不信任 admin 的情況吧。否則的話只要 admin 不 log 就不會有問題了啊。
16:27:34
🅣 mmis1000
把admin討論進去應該又更複雜了吧
16:28:05
ⓢ ronnywang
像 kcwu 提到的投票時,input 只有 random token 和投給誰兩個,主要目的就是 admin 只會記錄到 random token 但是不知道這個人是誰
16:28:53
ⓢ ttcat
事實上還是會知道是誰誒
16:29:12
kcwu
邪惡 admin 要 auth, 所以會知道是誰
16:29:34
🅣 mmis1000
時間差攻擊一般有解?
16:30:05
ⓢ ttcat
分成兩部分處理呢?第一個部分只有投票過程,每一個 user 有一個自己才知道的 token 不用 sumit,然後在本地端用這個 token 跟投票選項算出一個亂數的驗證密碼上傳。這一份投票 list 也是所有 client 都有一份 copy,所以投票過程無法竄改。也沒人知道誰投給誰,admin 只知道誰有來投票。
16:30:06
ⓢ ↵
第二部分就是要開票的時候,用分散的方式,user 把自己本機的 token 交給自己信任的人 or 單位集中(不限方式)然後去公開,完整公開後大家都可以下載計算總票數。
16:31:01
ⓢ ttcat
P2P 的方式去公開的話就可以用公用網路的 ip 無法 trace back 誰丟出了這個 token
16:31:10
ⓢ ronnywang
不然就是投開票所當地一切設備都不准連上網路,最後投完票結果的資料只能通過一顆 16MB 的隨身碟把 full list 帶出來,其他東西和設備一律燒燬,然後這個 full list 是完整公開的 XD
16:32:07
ⓢ ronnywang
確保 admin 跟大眾得到的資訊是一模一樣的,admin 無法多 log 東西
16:32:24
kcwu
ttcat: user 送給雙方不同 token 就麻煩了
16:34:56
ⓢ ttcat
@kcwu 應該是用公鑰私鑰的方式?client 產生的 token 跟他 submit 到 vote list 的那個紀錄是相對的可驗證的。然後一的 key 只有對應一張票可以被解鎖。這樣就算一個 user/單位 收集很多 key 同時公開也無所謂。
16:35:19
🅣 seadog007
g0vircbot: 那怎麼知道誰有投
16:36:19
🅣 othree
可以投票用另外一套機制,驗證有投票資格就好
16:38:49
ⓢ ttcat
第一部分è¦�投票那邊就è¦�é©—è‰ä½¿ç”¨è€… => 通é�Žäº†æ‰�å�¯ä»¥æŠ•ç¥¨ï¼Œæ‰€ä»¥ç¬¬ä¸€éƒ¨åˆ†ç„¡è«–如何都「å�¯ä»¥ã€�知é�“誰有來投票,所以è¦�匿å��的話,就è¦�用 admin 無法解開的密碼瞞ä½�第一部分的這個 admin æŠ•ç¥¨å…§å®¹ã€‚ä¹Ÿç‚ºäº†é˜²æ¢ admin 竄改,自己å�‡é€ 該 user 的投票çµ�果,所以è¦�把 list open 讓æ¯�個使用者都有備份,å�¯ä»¥é‡�複驗è‰ã€‚user 用自己æ‰�知é�“çš„ç
16:38:50
🅣 gugod
目前一般實體的投開票也算是匿名。在打開票匭之後,投票人也無法在事後識別自己的票是哪一張
16:38:50
🅣 gugod
。
16:39:49
🅣 seadog007
gugod: 但是票在那裡可以查
16:39:53
ⓢ ronnywang
只是實體的使用者可以確定他的票是他投的結果,不會被邪惡 admin 修改
16:40:17
ⓢ ronnywang
除非有壞人在投票時直接在票箱丟入紅墨水
16:40:19
🅣 seadog007
電子容易被黑箱 所以要使用者自己查
16:41:04
🅣 gugod
所以變成要實做的是 blockchain / bitcoin ?
16:41:06
ⓢ ttcat
不過第二部分開票的地方就會遇到一樣的問題。如果我把我剛剛要瞞 admin m 用的那把 key 上傳到某個地方,那台 server go evil 的話,他就會知道我是誰、我的 key 是什麼、我投給了誰。所以才說如果用開放分散式的開票方式,這樣基本上不會有一個中心伺服器也無法紀錄是哪些 ip 進來丟 key。
16:43:49
🅣 gugod
用 bitcoin 實做投票 => 每個選項建一個錢包。轉帳 0.01B 過去便等於投票。加上額外的機制去拒絕 0.01B 以上或多次的轉帳。
16:44:18
ⓢ ttcat
我不曉得 blockchain 實際上程式是長怎樣誒,只聽過概念 XD
16:44:19
🅣 gugod
(假設 bitcoin 驗證真身的機制是可以理解而被信任的..... XD)
16:44:49
ⓢ ttcat
(聽說是任何一個區塊被修改整個鍊都會長得不一樣?)
16:46:24
ⓢ ronnywang
就我了解 bitcoin 的交易記錄是公開的,也就是帳號A給帳號B多少錢都是絕對可以查的到,他的匿名性是做在你不知道帳號A和帳號B對應到現實上的誰?
16:47:58
kcwu
bitcoin 的匿名性其實要許多條件才能辦到, 而且是不是可靠還很難說(research topic).
16:48:57
ⓢ ttcat
電子的匿名性太難了
16:49:19
ⓢ ronnywang
匿名不難,難的是又要匿名又要一人只能投一次 XD
16:49:20
🅣 othree
bitcoin 記得佔有超過某個比例的運算量就會被操控了
16:49:34
🅣 gugod
ttcat: 交易記錄的驗證是的把整串交易歷史的 hash。所以一般不那麼容易偽造。有個說法是要很多錢包一起偽造。
16:50:34
🅣 gugod
單一實體人如果對應到整個網絡中的 50% 就有較高的可能去偽造交易歷史
16:51:19
🅣 gugod
ronneywang: 帳號A /B 對應到現實中 A’ B’ ==> 這部份是要公開的,還是 A B 本人知道就好?
16:51:25
ⓢ ttcat
我剛剛又想到如果真的要追查特定人投票給誰,admin 還是可以在開票之後再從 open 的 key 去追回去誰投給誰。
16:51:29
ⓢ ttcat
orz...
16:51:56
ⓢ ronnywang
假設 A1, A2, A3, A4 ... 是投票人 B1, B2, B3 ... 是候選人
16:52:14
ⓢ ronnywang
那 A 對應到現實的誰應該只有 A 本人能知道,而 B 則沒差
16:53:59
ⓢ ronnywang
一開始 A1, A2 ... A2300萬 每人發0.01bitcoin ,然後他們自行把錢轉給 B1, B2 ... 等候選人,最後看誰錢多的贏,這應該是 bitcoin 模式吧
16:59:50
🅣 seadog007
othree: 51%
17:00:25
kcwu
bitcoin 可以交易到其他人手上, 可以分割合併, 所以轉手很就很難追. 選票要做的話, 就是就要一堆人沒事跟人 exchange 選票(透過程式自動化)
17:01:36
ⓢ ttcat
對,這是一開始想像的,但是剛剛在想的是說,一定會去驗證 A1, A2 … A2300,的帳戶有沒有 0.01,驗證有才讓他們轉帳。這個驗證的過程是不是會有人紀錄誰是誰?或是預先發錢的那的地方?單位?是不是有辦法 trace 哪個帳號對應誰?
17:01:56
ⓢ ttcat
@kcwu 交換選票是好主意 XD
17:03:37
*
kcwu 不覺得一般人有辦法理解+相信+實作 bitcoin model
17:03:50
🅣 gugod
[不考慮 bitcoin 的話] =>如果投票資料是集中處理,那也許就是定時公開累積性的資料進行驗證。 匿名性一樣定義為「本人可以識別自已的票,但難以識別他人的票」。
17:05:20
🅣 gugod
「累積性的資料」指的是中途得票分佈之類的...
17:05:47
ⓢ ronnywang
但是選票如果能交換的話,我就直接把我的票賣給賄選者就好了
17:07:05
🅣 gugod
這樣子應該可以用 public/secret 處理匿名識別。
17:07:05
kcwu
規定只有候選人能 1:0 交易, 其他人只能 1:1 交易
17:07:55
*
kcwu btw, slack 跟 telegram 都可以看到 irc 的 action 嗎?
17:08:20
🅣 gugod
但這樣也不容易識別 admin 灌票
17:09:20
🅣 gugod
kcwu: telegram 的狀況: https://ipfs.pics/QmRD5YytLTUYmxp11MUY9YkEtfmwoVbEAHg71D2WECPFZx
17:09:22
kcwu
g0vtelegrambot's url: [A picture hosted on the permanent web]
17:09:35
🅣 gugod
好像算是「可以看見 action」那一邊 😆
17:12:35
🅣 gugod
之前提 bitcoin 主要也只是他有個「群眾驟證」的過程(雖然對使用都來說是不明顯的)
17:13:23
kcwu
ronnywang: slack 上可以看到我的 action 嗎?
17:13:39
ⓢ ronnywang
Slack上看不到
17:16:22
kcwu
ok, issue created https://github.com/g0v/slack-irc-plugin/issues/5
17:16:24
kcwu
kcwu's url: [slack 上看不到 irc 的 action · Issue #5 · g0v/slack-irc-plugin · GitHub]
19:22:10
ⓢ ttcat
@tkirby: 投稿數據視覺化還順利嗎 XD
20:57:44
ⓢ ipa
@yhsiang: @mrorz 如果可以的話,每個講題的 permalink 希望早一點可以出現,這樣貼議程宣傳可以加在文末 <https://github.com/g0v/summit.g0v.tw/issues/165 >
20:57:45
kcwu
slackbot5's url: [每一個 talk 的 permalink · Issue #165 · g0v/summit.g0v.tw · GitHub]
21:33:27
ⓢ caasi
linroex: 想起以前看過這些討論 <https://g0v.hackpad.com/LiquidFeedback--ggBlvqzmtcW >
21:33:30
kcwu
slackbot5's url: [LiquidFeedback 堅持「公開透明」就一定與「秘密投票」原則衝突嗎? - g0v.hackpad.com]
21:41:17
ⓢ caasi
linroex: 還有這篇! <http://blog.clifflu.net/blog/2013/06/%E8%AD%AF%E6%96%87-%E5%A7%94%E4%BB%BB%E6%8A%95%E7%A5%A8%E9%81%8B%E4%BD%9C%E5%8E%9F%E7%90%86/ >
21:41:18
kcwu
slackbot5's url: [[譯文] 委任投票運作原理 | clifflu 又架 blog 了 O.o/]
22:19:27
🅣 seadog007
請問一下 g0v的英文要怎麼念XD g zero v
22:19:28
🅣 seadog007
這樣嗎
22:19:49
ⓢ yhsiang
"gov zero"
22:20:11
🅣 seadog007
好喔w
22:40:06
ⓢ ipa
seadog007: <https://blend.io/etblue/jingle >
22:40:09
kcwu
slackbot5's url: [Jingle made with GarageBand by ETBlue : Blend]
22:54:50
ⓢ etblue
XDDDD
23:14:28
ⓢ linroex
感謝大家XD 本來是有想要做完全線上投票,但後來覺得太多問題無法顧到,所以這次是打算先用實體投票但背後用電腦計票
23:14:38
ⓢ linroex
是尚未發生的問題,只是有先想到這個可能性
23:15:45
ⓢ linroex
我們打算的做法是讓大家先認證身份,拿授權碼,之後用授權碼去投票,授權碼跟身份是分開的,這樣可以保障匿名性。投完票之後會列印出實體單據,投票者只能看不能帶走,他會自動跳進票箱做備援驗證用
23:16:58
ⓢ linroex
至於本來提出的問題,我後來想到或許用不對稱金鑰可以解決,只有投票人可以解開他的票並檢視他投給誰,所以他今天如果有質疑,他可以用他的key把票解開來證明系統有錯(用實體收據+系統記錄相互驗證)
23:17:34
ⓢ linroex
這個驗證可以交給電腦處理,這樣就可以避免「人」會知道投票者投給誰的問題
23:18:00
ⓢ linroex
不過最後問題就變成是... 計票程式的程式碼誰來驗證XD
23:18:50
ⓢ linroex
然後來讀一下大大的文章,感謝大家的幫忙XD
23:28:14
🅣 S_ean
看有沒有公正單位讓你們只能用 git push code 上去,在 push 時發無法取消的公告/發信給訂閱者
23:28:14
🅣 S_ean
這樣應該可以證明開發者的公正
23:31:28
🅣 gugod
應該有把投票變成是一種協定的發想吧。讓發票、收票、計票都是不同團體來進行之類的。
23:40:47
ⓢ linroex
我覺得協定是不錯的方向
23:40:58
ⓢ linroex
不然電子投票要達到現有投票各項特性真的很難