טענתי שאפשר להכין פתרון פשוט, אז כתבתי משהוא, מאוד פשוט (אולי פשטני).
כתבתי בbash, לא כי אני מומחה אלא כי נדמה לי שזאת שפה שרבים ברשימה יוכלו
לקרוא. (ולא נראה לי סביר לכתוב בC).

מתחילים עם רשימה של שמות וכתובות דוא"ל: votersRaw.tsv
הסקריפט הקצרצר assignKeys.sh מגריל מפתח אקראי לכל אחד (אפשר להחליף
/dev/random במקום /urandom)
cat votersRaw.tsv | ./assignKeys.sh > voters.tsv

את המפתחות מפיצים למצביעים (אפשר להוסיף פקודת mail קצרה שתפיץ כך בעת
היצירה).

הצבעה בעזרת cgi script מצורף vote.sh (שרוב מוחץ של הקוד זה קריאת פרמטרים של
cgi)
http://localhost/cgi-bin/vote.sh?vote=BAR&key=Qz4UskAPgFhVlHiE

הוא מחפש את המפתח ברשימת המצביעים ומשרשר לקובץ ההצבעות, ומציג את הקובץ
העדכני.

אני לא משוכנע שמה שכתבתי הוא injection proof וצורת השרשור הפשטנית לא מבטיחה
אטומיות(אפשר ברמת השרת להבטיח מצביע אחד בו"ז).
אבל המטרה היא להראות שאפשר להכין מערכת הצבעה מאוד פשוטה.
המערכת לא מונעת הצבעות כפולות היא פשוט מתעדת אותן. ואפשר להחליט איך סופרים
(ראשון, אחרון, משהוא אחר).
אין פה UI, ואין פה החלטה על מה זה הצבעה(סתם מחרוזת של אותיות ומספרים)

בקילוף קוד של cgi כל הקוד פה:

> USER=`grep -P "\t${CLEAN_KEY}$" voters.tsv | cut -f1`
>
> NOW=`date`
>
> echo "$USER $NOW $CLEAN_VOTE" >> ../votes.tsv
>
>
>> cat ../votes.tsv
>
>
והקצאת מפתחות:

>

function mkpw() { head /dev/urandom | uuencode -m - | sed -n 2p | cut
> -c1-${1:-16}; }

while read line

do

    KEY=$(mkpw)

    echo "$line "$KEY

done


 מאיר

2014-11-13 12:24 GMT+02:00 Tzafrir Cohen <[email protected]>:

> On Thu, Nov 13, 2014 at 11:43:06AM +0200, Meir Maor wrote:
> > בכל פתרון הבעיה העיקרית היא תיאום מפתח/סיסמא ראשונית. במערכת בה ההצבעות
> > גלויות, החשיבות שלו יורדת ומשמשת בעצם רק להגנה בפני התחזות למצביעים לא
> > פעילים וגם בפני זה אפשר להתגונן על ידי יצירת קשר יזום עם מדגם מצביעים
> > לאימות הצבעתם.
> >
> > אם אנחנו משתמשים בדוא"ל להפצת מזהה יחודי אקראי (סימטרי) לרשימת המצביעים.
> > וכל אחד יוכל בעזרת אותו מפתח לגשת לאתר להזין את אותו מפתח ולציין את
> הצבעתו,
> > ויתווסף רישום של הצבעתו לצד שמו באופן גלוי לכל.
> > כל אחד יכול לספור קולות בעצמו, כל אחד יכול לאמת את הצבעתו של עצמו שנרשמה
> > כנדרש, וכל אחד יכול לראות את ההצבעות של כולם ולבחור באיזה אמצעי שרוצה
> לנסות
> > לאמת הצבעות של גורמים נוספים.
> > ההתקפה בידי מורשה הכי פרקטית שאני מכיר כנגד שיטה כזאת היא ייצור מצביעים
> > פיקטיביים אבל זאת בעיה בכל שיטה והשקיפות ברשימת המצביעים אמורה לעזור
> בפניה.
> >
> > אפשר לבחור שיטה אחרת להפצת מפתחות ראשונית, או לחילופין איסוף מפתחות, או
> > מעבר למנגנון א-סימטרי, אבל אני לא בטוח שיש בכך צורך.
>
> אפשר להציע הרבה דברים.
>
> טענת שאתה יכול לממש בקלות. אתה יכול להראות דוגמת מימוש כדי שיהיה על מה
> לדבר?
>
> --
> Tzafrir Cohen         | [email protected] | VIM is
> http://tzafrir.org.il |                    | a Mutt's
> [email protected] |                    |  best
> [email protected]    |                    | friend
> _______________________________________________
> Discussions mailing list
> [email protected]
> http://hamakor.org.il/cgi-bin/mailman/listinfo/discussions
>
John Doe[email protected]iXgjLrgdN4a6Bm7Q
Someone Else[email protected]0GIIKxqXbI1U1+a1
Average Joe[email protected]Qz4UskAPgFhVlHiE

Attachment: assignKeys.sh
Description: Bourne shell script

John Doe[email protected]
Someone Else[email protected]
Average Joe[email protected]

Attachment: vote.sh
Description: Bourne shell script

_______________________________________________
Discussions mailing list
[email protected]
http://hamakor.org.il/cgi-bin/mailman/listinfo/discussions

לענות