Вероятност за засичане на измама при контролното преброяване на машинния вот

Текстът е препубликуван от блога на "Данни за добро" - организация, подкрепяща представителите на гражданския сектор, които работят за разрешаването на значими задачи в обществена полза, като предостява знания и услуги, свързани с обработка и анализ на данни.
Докато стилът на този пост е шеговит, той сериозно илюстрира как дори и минимален извадков контрол на бележките от машините за гласуване би засякъл скрит в софтуера опит за манипулация на вота.
Нека проиграем следния сценарий:
Тео има неограничен достъп до кода на машините за гласуване. Достатъчно сръчен е да може да го пренапише така, че той да прави каквото си поиска. Твърдо решен е да се възползва злонамерено от този свой достъп, за да подобри резултата на любимата си партия (ЛБ).
Тео ще добави няколко реда код, които да "бутнат" резултата на ЛБ с 10 процента. За да стане това, всяка машина ще трябва да подмени автоматично вота на всеки десети гласоподавател и вместо за партията, за която е гласувал, да запише един глас повече за ЛБ.
Дотук добре, но Тео знае, че освен записа в паметта машината разпечатва и бележка, която гласоподавателят пуска в кутията. Ако той я погледне и на нея пише ЛБ вместо партията, за която наистина е гласувал, той ще се оплаче на членовете на комисията и планът за подмяна ще бъде провален.
Затова Тео решава да инструктира машината да разпечата бележка с истинския вот на избирателя, но да запише глас за ЛБ в паметта. Така гласоподавателят бива успешно заблуден и за да бъде засечена измамата, трябва да се сравнят бележките в кутията с данните в паметта на машината.
Тео знае, че такава проверка няма да се направи във всички секции и затова решава да сметне каква е вероятността при проверка на даден брой секции на случаен принцип неговата манипулация да бъде засечена. Очевидно, ако всяка машина е компрометирана, вероятността е 100%, защото дори една секция да бъде проверена, разликата между протокола и бележките ще бъде засечена.
Дали обаче няма някакъв начин да се добави едно условие в кода, което да намали броя на машините, в които има подмяна, така че вероятността да бъдат засечени при проверка да е приемливо малка.
Тео, разбира се, е много добър по математика (както и в търсенето в Гугъл). Той бързо намира отговор на въпроса си в този пост в StackExchange.
Тео научава че, дистрибуцията на определени избрани елементи (в случая компрометирани секции) в случайна извадка без повтаряне е хипергеометрична. Тя може да се сметне със следното уравнение.

Където:
- N e популацията (общ брой секции = 13 000)
- K е общия брой избрани елементи (компрометирани секции)
- n e размерът на извадката
- k e броя избрани елементи в извадката, (в случая 0)
- P (W=k) е вероятността да има k елемента в извадката
На Тео даже не му се налага да го смята на ръка. Той може да използва този хипергеометричен калкулатор, за да сметне различните сценарии:

Тео обича риска и решава да провери при колко машини вероятността да бъде заловен е по-малка от тази да не бъде заловен или
P (W=k) > 0.5.
Ето резултатите:
- При 10% извадков контрол K=1300. Максималният брой секции, които може да компрометира, е 6
- При 5% извадков контрол K=650. Максималният брой секции е 14
- Дори и само 1% от секциите да се проверяват K=130. Ако Tео компрометира повече от 70 секции, вероятността да го хванат е по-голяма от 50%
Тео въобще не е доволен от резултата и бързо си дава сметка, че е безсмислено да се занимава повече с това.