@gateway
Това е много интересно. Намерих тази статия в която има опсиан FOO voting protocol-а (стр 7-9):
http://www.win.tue.nl/~evink/research/Postscript/vodca06.pdfНе е съвсем както го описваш (относно личния ключ) но като цяло идеята е същата.
Това което ме смущава е, че до колкото разбирам, този алгоритъм разчита, че администратора и брояча са независими и отделни.
Ще повторя нещо което писах в началото - за мен най-големия проблем е централизираната обработка и съхранение на данните. Незнам как изглежда одит, който да ти гарантира какъв точно код се изпълнява на даден сървър, без одитора сам да инсталира всичко собственоръчно, но тогава той се превръща в слабото звено. Затова и споделих мнението че нещо в посока биткойн е може би по-сигурно.
Относно FOO - тук отново трябва да се доверим на тези 2 сървъра. Но ако се доверим на тях, то тогава защо изобщо да правим такива сложни криптирания - нека си пазим една таблица с ид-та и бюлетини и да им вярваме че няма да я прочетат или променят. От гледна точка на нужно доверие, което да се делегира на органа по организиране на изборите, то е едно и също дали с FOO или без грам криптиране и схеми.
Ето на прима виста защо FOO ми се струва че не помага:
На края на изборите, админ+брояч сървърите (за които няма причина да разсъждаваме като отделни независими актьори) разполагат със
1. 5000000 криптирани бюлетини
2. 5000000 криптирани блайнднати бюлетини + ЕГН-та
3. знаят че блайндинг функцията е XOR с неизвестно число. Но предполагам разсъждението ми ще важи за всяка биекция
4. знаят частния ключ на админ сървъра с който подписва блайнднатите бюлетини
5. всички частни ключове на избирателите, с които в последната фаза декриптират вотовете
6. подписите на админ сървъра за всяка блайндната и всяка "само криптирана"
И единствено незнаят случайното число за блайндване на всеки от гласоподавателите. Остават само около 0.5*(5000000^2) стъпки да сравнят всяка "блайндната" с всяка "само криптирана", да отгатнат блайндинг функцията (имайки входа и изхода) и да сравнят подписите. В крайна сметка имат асоциация между ЕГН и бюлетина.
Поправи ме ако греша но ако до колкото разбирам блайндинг-а е просто някъв XOR, то е тривиално да отгатнеш X ако имаш М и N, в уравнението M _xor_ X = N?
ЕДИТ:
Всъщност може и да не съм прав точно в този случай за асоцииране на бюлетините - те подписите винаги ще съвпадат за всяка двойка - трябва да пия още едно кафе. Но това не изключва една камара практически проблеми (примерно транзакционност и паралелно offline гласуване при технически проблем или DDoS ). Както и да е, ще го помисля малко повече.