טענתי שאפשר להכין פתרון פשוט, אז כתבתי משהוא, מאוד פשוט (אולי פשטני).
כתבתי ב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 <tzaf...@cohens.org.il>:

> On Thu, Nov 13, 2014 at 11:43:06AM +0200, Meir Maor wrote:
> > בכל פתרון הבעיה העיקרית היא תיאום מפתח/סיסמא ראשונית. במערכת בה ההצבעות
> > גלויות, החשיבות שלו יורדת ומשמשת בעצם רק להגנה בפני התחזות למצביעים לא
> > פעילים וגם בפני זה אפשר להתגונן על ידי יצירת קשר יזום עם מדגם מצביעים
> > לאימות הצבעתם.
> >
> > אם אנחנו משתמשים בדוא"ל להפצת מזהה יחודי אקראי (סימטרי) לרשימת המצביעים.
> > וכל אחד יוכל בעזרת אותו מפתח לגשת לאתר להזין את אותו מפתח ולציין את
> הצבעתו,
> > ויתווסף רישום של הצבעתו לצד שמו באופן גלוי לכל.
> > כל אחד יכול לספור קולות בעצמו, כל אחד יכול לאמת את הצבעתו של עצמו שנרשמה
> > כנדרש, וכל אחד יכול לראות את ההצבעות של כולם ולבחור באיזה אמצעי שרוצה
> לנסות
> > לאמת הצבעות של גורמים נוספים.
> > ההתקפה בידי מורשה הכי פרקטית שאני מכיר כנגד שיטה כזאת היא ייצור מצביעים
> > פיקטיביים אבל זאת בעיה בכל שיטה והשקיפות ברשימת המצביעים אמורה לעזור
> בפניה.
> >
> > אפשר לבחור שיטה אחרת להפצת מפתחות ראשונית, או לחילופין איסוף מפתחות, או
> > מעבר למנגנון א-סימטרי, אבל אני לא בטוח שיש בכך צורך.
>
> אפשר להציע הרבה דברים.
>
> טענת שאתה יכול לממש בקלות. אתה יכול להראות דוגמת מימוש כדי שיהיה על מה
> לדבר?
>
> --
> Tzafrir Cohen         | tzaf...@jabber.org | VIM is
> http://tzafrir.org.il |                    | a Mutt's
> tzaf...@cohens.org.il |                    |  best
> tzaf...@debian.org    |                    | friend
> _______________________________________________
> Discussions mailing list
> Discussions@hamakor.org.il
> http://hamakor.org.il/cgi-bin/mailman/listinfo/discussions
>
John Doej...@example.comiXgjLrgdN4a6Bm7Q
Someone Elsesome...@example.com0GIIKxqXbI1U1+a1
Average Joejoe...@example.comQz4UskAPgFhVlHiE

Attachment: assignKeys.sh
Description: Bourne shell script

John Doej...@example.com
Someone Elsesome...@example.com
Average Joejoe...@example.com

Attachment: vote.sh
Description: Bourne shell script

_______________________________________________
Discussions mailing list
Discussions@hamakor.org.il
http://hamakor.org.il/cgi-bin/mailman/listinfo/discussions

לענות