В криптографии протоколы тайного голосования — протоколы обмена данными для реализации безопасного тайного электронного голосования через интернет при помощи компьютеров, телефонов или других специальных вычислительных машин. Это направление криптографии всё ещё развивается, но уже применяется на практике.
 Многие страны мира, в том числе и Россия[нет в источнике (обс.)], уже внедряют электронные голосования на муниципальном уровне и выше. Для уверенности в правильности, надёжности и конфиденциальности таких выборов и используют протоколы с доказанной защищённостью, которые опираются на проверенные криптографические системы, вроде асимметричного шифрования и электронной подписи. Кроме того, им нужна готовая материальная и юридическая база. Слияние всех этих факторов образует непосредственный инструмент электронной демократии.
 В связи с бурным развитием компьютерных сетей возникает естественное «оцифровывание» различных областей жизни, например, возникновение электронных валют. Аналогичным образом появилось цифровое голосование, основной инструмент электронной демократии. Долгое время механические средства служили в голосованиях заменой обыкновенным бюллетеням или отвечали только за автоматический подсчёт бумажных бюллетеней. Основную работу по проверке голосующих и учёту голосов проводили другие люди. При такой системе отсутствовала надобность в описанных ниже протоколах. Однако, в последние годы, благодаря развитию интернета, голосования становятся полностью автоматизированными. У удалённого голосования много плюсов. Предполагается, что они удобнее для конечных пользователей, ведь люди могут голосовать не выходя из дома, от этого повышается активность избирателей. Поддержание электронного голосования обходится дешевле: вместо постоянной печати бюллетеней достаточно однократно разработать систему. Кроме того, из предположения, что никто не может вмешиваться в программу на устройстве для голосования, вытекает что электронное голосование менее подвержено коррупции, влиянию административного давления и человеческого фактора.
 Однако, при этом возникает ряд специфических проблем, препятствующих честности выборов. Например, при электронных выборах в Нидерландах и во Франции возникли сомнения в истинности результатов, полученных с помощью машин. Дистанционно намного сложнее авторизовать избирателя или удостовериться, что на ход голосования никто не повлиял. С другой стороны, интернет предоставляет больше возможностей для проверки рядовыми избирателями, правильно ли учтён голос. В настоящее время электронные голосования полностью легальны или частично применимы во многих странах мира. Так как в них вовлекается всё больше людей, усиливается необходимость в более безопасных и эффективных методах их проведения, для чего и призваны специальные криптографические протоколы.
 Ключевым элементом регламентации электронного голосования является закрепление его возможности в конституции государства. Такие статьи имеют конституции США, Швейцарии, Эстонии, Великобритании и некоторых других стран. Есть группа стран, в которую входят, например, Финляндия, Германия и Россия, которые имеют опыт в проведении подобных выборов, но ещё не ввели их полную регламентацию в законодательство. Разумеется, это не единственное бюрократическое препятствие. Также требуются спецификации на технику, с помощью которой голосование проводится, способы проверки честности результатов, протоколы в случае срыва голосования, и создание самой технической базы. На основе этих параметров можно вычислить индекс готовности страны к введению цифрового голосования (и конкретного его протокола).
 Первой страной, которая реализовала легальные общенациональные выборы через интернет, стала Эстония, за ней последовали Нидерланды и Швейцария. В России протоколы тайного электронного голосования применялись пока что только на экспериментальном уровне (например, на форуме Селигер-2009), но в ЦИК была высказана инициатива о развитии электронного голосования, в частности, в интересах граждан РФ за рубежом.
 Как бы то ни было, ни в одном законодательстве не закреплён сам протокол голосования. Так сделано по многим причинам, начиная от оставшегося недоверия к электронным методам голосования, заканчивая более лёгким переходом с текущего способа проведения на более эффективный. Прогресс техники позволил задуматься о голосовании через интернет только около 20 лет назад[прояснить], поэтому данный раздел криптографии всё ещё развивается. По нему нет общепризнанных книг, и ни один протокол ещё не получил подавляющую поддержку специалистов. Проблема осложняется тем, что организации, обладающие опытом внедрения этих систем, предпочитают не публиковать подробные отчёты, описывающие систему, и проблемы, возникшие при её введении.
 Сейчас для простых опросов или голосований внутри малых групп применяется тривиальный алгоритм. В случае, когда агент, подсчитывающий голоса, не имеет особой причины вести махинации, этот протокол является оптимальным вариантом. На выборах государственного уровня наиболее распространены модификации протокола Фудзиоки — Окамото — Оты. Именно он показал наилучшие результаты на экспериментальных выборах и создал положительный международный прецедент надёжного проведения выборов через интернет. Для него и некоторых его модификаций существуют доступные для использования частными лицами программы и электронные средства голосования. Кроме того многие научные статьи, описывающие новые протоколы тайного голосования, берут за основу именно его. Возможно, благодаря развитию техники и понижению цены на высокопроизводительные системы в ближайшем будущем появятся прецеденты использования протокола Хэ — Су. Хотя он уже имеет свои модификации, на практике этот протокол был применён только в студенческих экспериментальных выборах. То же самое можно сказать и про протокол ANDOS. Хотя авторы многих статей утверждают, что его можно эффективно реализовать, были только прецеденты его использования на местных выборах. Остальные протоколы представлены как переходные от простых к сложным или возможные модификации для достижения дополнительных целей.
 Обязательные:
 Желательные:
 Дело осложняется не только тем, что участники голосования и проводящее его агентство имеют основания не доверять друг другу, но и тем, что сам процесс голосования нужно защищать от вмешательства извне. Если провести аналогию с выборами президента, то избиратели должны защититься от вбросов бюллетеней со стороны избирательного комитета, ЦИК обязан обеспечить невозможность продажи голосов гражданами, и все вместе должны не допустить вмешательства агентов других стран.
 Некоторые требования противоречат друг другу. Например, возможность проверки, как проголосовал тот или иной избиратель (даже им самим), предоставляет возможность для продажи голосов, а дополнительные уровни защиты снижают отказоустойчивость и экономичность. Обычно предполагается, что защита от жульничества со стороны агентства, занимающегося выборами, приоритетнее, чем предотвращение продажи голосов. Во-первых, она наносит значительно больше вреда, а во-вторых, даже если протокол гарантирует невозможность доказать стороннему лицу, за кого отдан голос, избиратель может найти обходные пути. Например, попросту проголосовать прямо перед скупщиком. Тем не менее, защита от вмешательства со стороны приоритетнее, чем всё остальное.
 Простой алгоритм электронного голосования по сути представляет собой переписку с электронными подписями между избирательным комитетом и множеством избирателей. Пусть здесь и далее: А — агентство, проводящее электронное голосование (англ. agency), E — избиратель, легитимный участник голосования (англ. elector), B — цифровой бюллетень. B может содержать число, имя кандидата, развёрнутый текст или какие-либо другие данные, сообщающие о выборе E, верифицирующие его или необходимые для усиления безопасности протокола. Ход голосования выглядит так:
 Шаги 1-3 обязательны. Основная цель — определение и объявление числа активных участников n. Хотя некоторые из них могут не участвовать, а некоторые - и вовсе не существовать («мёртвые души», злонамеренно внесённые A), возможность манипулирования голосованием у A заметно снижена. В дальнейшем эти шаги будут считаться за один шаг «утвердить списки».
 Этот протокол чрезвычайно прост, тем не менее, его достаточно, чтобы защититься от внешнего вмешательства, подделки голосов и дискредитации легитимных избирателей. Однако голосующим приходится абсолютно доверять A, ведь его работа никем не контролируется. С одной стороны, E может предоставить злоумышленнику-покупателю голосов доказательство, как он проголосовал, а с другой — не может проверить, что A правильно учёл или даже получил его бюллетень. Поэтому тривиальный метод применим только в сообществах, где все доверяют друг другу и агентству, отвечающему за подсчёт голосов.
 Он же протокол Нурми — Саломаа — Сантина. Основная идея состоит в том, чтобы заменить одно избирательное агентство двумя, чтобы они контролировали друг друга. Пусть здесь и далее V — регистратор (англ. validator), в обязанности которого входит подготовка списков, а также допуск или недопуск участника до голосования. Последовательность действий выглядит так:
 Благодаря выкладыванию в общий доступ полученного файла на шаге 3, A не может впоследствии отрицать получение сообщения от E. При помощи пары шифр — бюллетень каждый избиратель может проверить, правильно ли был учтён его голос, что устраняет проблему с недостатком контроля над A. Однако такой подход лишь частично решает проблему необходимости абсолютного доверия к агентству. В случае, если A и V удаётся сговориться, A может манипулировать голосованием. Если агентству известно, кто скрывается под каким опознавательным тегом, оно может специально не принимать сообщения от некоторых избирателей. Кроме того, присутствует проблема «мёртвых душ». Если V внесёт в список заведомо несуществующих избирателей, то A сможет фальсифицировать бюллетени от них.
 В протоколах с двумя агентами голосующему не обязательно авторизоваться и перед регистратором, и перед избирательным комитетом. Если избиратель докажет свою личность регистратору, тот может поставить подпись на бюллетень или ключ избирателя. Именно она в дальнейшем будет играть роль допуска до голосования. Кроме того, не обязательно использовать именно метки для авторизации пользователя. По этим причинам в дальнейших алгоритмах конкретный способ идентификации пользователя будет опущен.
 Схема Фудзиоки — Окамото — Оты, разработанная в 1992 году, основывается на протоколе двух агентств и криптографической подписи вслепую. Несильно усложняя протокол, эта схема частично решает проблему сговора двух агентств. Для работы протокола необходим заранее выбранный способ маскирующего шифрования, под которым избиратель присылает регистратору бюллетень. Ослепляющее (маскирующее) шифрование — особый вид шифрования, позволяющее удостовериться в том, что документ подлинный и подписан авторизованным пользователем, но не даёт узнать содержащиеся в нём данные. Маскирующее шифрование должно быть коммутативным с электронной подписью, то есть 
  
    
      
        sign
        ⁡
        
          
            (
          
        
        blind
        ⁡
        (
        B
        )
        
          
            )
          
        
        =
        blind
        ⁡
        
          
            (
          
        
        sign
        ⁡
        (
        B
        )
        
          
            )
          
        
      
    
    {\displaystyle \operatorname {sign} {\big (}\operatorname {blind} (B){\big )}=\operatorname {blind} {\big (}\operatorname {sign} (B){\big )}}
  
.
 Лорри Кранор и Рон Ситрон (англ. Lorrie Faith Cranor, Ron K. Cytron) в 1996 предложили модификацию протокола Фудзиоки — Окамото — Оты под названием Sensus. Отличие заключается в шагах 5—6. После того, как A получило зашифрованное сообщение от E, оно не только добавляет его в публикуемый список, а вдобавок отправляет подписанный бюллетень обратно избирателю в качестве квитанции. Таким образом E не нужно ждать, пока проголосуют все остальные, и он может закончить голосование за один сеанс. Это не только удобно для конечного пользователя, но ещё и предоставляет дополнительного доказательство, что E участвовал в выборах. Кроме того, в Sensus регламентированы дополнительные вспомогательные модули, упрощающие и автоматизирующие ход голосования.
 Теперь даже если агентствам удастся сговориться, A не сможет опознать избирателей до того, как получит ключ. Хотя оно всё ещё имеет возможность не принимать сообщения, отпадает возможность игнорировать сообщения конкретно от «неугодных» избирателей. Остаётся лишь проблема подачи голосов за избирателей, не пришедших на выборы. Кроме того, чтобы позволить избирателю переголосовать, в том числе и из-за технической ошибки, необходим дополнительный модуль.
 На данный момент протокол Фудзиоки — Окамото — Оты (а также его модификации, включая и Sensus) является одним из самых проверенных протоколов дистанционного электронного голосования. Именно его вариация была применена на электронных выборах в Эстонии. Другая модификация протокола Фудзиоки — Окамото — Оты была использована для проведения выборов в органы самоуправления среди студентов Принстонского университета. Модули Sensus были написаны под системой UNIX с использованием криптографической библиотеки RSAREF, так что любой может ими воспользоваться.
 В 1998 году Ци Хэ и Чжунминь Су (Qi He, Zhongmin Su) представили ещё более продвинутый по сравнению с Sensus протокол голосования. Этот алгоритм удовлетворяет большей части требований к безопасному протоколу цифрового голосования. Как и Sensus, протокол Хэ — Су использует идею слепой подписи, но подписывается не бюллетень избирателя, а его ключ. Это позволяет голосующим изменять своё решение до конца голосования и ещё больше сужает возможности регистратора и избирательного агентства в случае сговора. Для этого протокола требуется заранее оговорённый способ ослепляющего шифрования и хеш-функция 
  
    
      
        h
        ⁡
        (
        )
      
    
    {\displaystyle \operatorname {h} ()}
  
. Как и в протоколе Фудзиоки — Окамото — Оты маскирующее шифрование должно быть коммутативным с электронной подписью V: 
  
    
      
        sign
        ⁡
        
          
            (
          
        
        blind
        ⁡
        (
        B
        )
        
          
            )
          
        
        =
        blind
        ⁡
        
          
            (
          
        
        sign
        ⁡
        (
        B
        )
        
          
            )
          
        
      
    
    {\displaystyle \operatorname {sign} {\big (}\operatorname {blind} (B){\big )}=\operatorname {blind} {\big (}\operatorname {sign} (B){\big )}}
  
, а также 
  
    
      
        sign
        ⁡
        (
        A
        
        B
        )
        =
        sign
        ⁡
        (
        A
        )
        
        sign
        ⁡
        (
        B
        )
      
    
    {\displaystyle \operatorname {sign} (A\,B)=\operatorname {sign} (A)\,\operatorname {sign} (B)}
  
.
 Схема Хэ — Су удовлетворяет почти всем требованиям к протоколу тайного голосования. Остаётся только повышенный стимул купли/продажи голосов. у A и V теперь нет возможности сжульничать, так как теперь публикуются все списки: возможных избирателей, зарегистрировавшихся и авторизированных ключей. Соответственно, нельзя ни внести несуществующих избирателей, ни голосовать за существующих, но не пришедших. При этом во время составления этих списков ни избирательное агентство, ни регистратор дополнительной информации не получают. У избирателей есть возможность изменить голос. Основной недостаток протокола Хэ — Су — его сравнительная сложность. Так как для поддержания протокола необходимо большое количество ресурсов, он уязвим перед DoS-атаками.
 За основу взят протокол ANDOS (англ. All or Nothing Disclosure Of Secrets). Идея состоит в том, чтобы усилить стойкость протокола за счёт замены заранее выбранного шифрования секретным ключом на хеширование пользовательской функцией. Далее описано ядро алгоритма. В описании для краткости опущены меры предосторожности и безопасности. В случае необходимости можно применить методы криптографии на открытых ключах и электронной подписи. Предполагается, что для защиты от вмешательства кого-либо извне избиратели могут ещё и мешать информацию между собой, но тогда злонамеренный избиратель может вносить помехи в голосование, поэтому этот шаг тоже пропущен.
 Упрощённая версия шагов 2—4 может состоять в том, что E посылает A напрямую пару 
  
    
      
        
          p
          
            i
          
        
        ,
        
          v
          
            E
          
        
      
    
    {\displaystyle p_{i},v_{E}}
  
. Однако, в этом случае будет невозможно для E как проверить засчитан ли голос правильно, так и переголосовать на более поздней стадии. Так может выйти, так как если A публикует идентификатор 
  
    
      
        
          p
          
            i
          
        
      
    
    {\displaystyle p_{i}}
  
 в списке тех, кто придерживался стратегии 
  
    
      
        
          v
          
            E
          
        
      
    
    {\displaystyle v_{E}}
  
, то E будет точно знать, что его голос зачтён правильно, однако впоследствии кто-нибудь сможет замаскироваться под обладающего идентификатором 
  
    
      
        
          p
          
            i
          
        
      
    
    {\displaystyle p_{i}}
  
 и изменить голос на угодный ему. С другой стороны, если A публикует только количество участников, придерживающихся определённой стратегии 
  
    
      
        
          v
          
            E
          
        
      
    
    {\displaystyle v_{E}}
  
, то участники не могут ничего проверить и A может публиковать любые результаты выборов. Хеш-функции используются для того, чтобы злоумышленники не могли определить количество голосов с определённой стратегией 
  
    
      
        
          v
          
            E
          
        
      
    
    {\displaystyle v_{E}}
  
 (эта информация оказывается полезной), так как задача нахождения исходных значений вычислительно тяжёлая с учётом характерного времени проведения голосования.
 Спустя некоторое время можно начать процедуру изменения голосов (см. финальный шаг). Более простой вариант (Шаг 7) может быть использован для проведения единственного круга повторного голосования.
 По сравнению с шагом 7, шаг 7' имеет преимущество в том, что участники, отличные от E, могут лишь наблюдать, что что-либо исчезло из списка 
  
    
      
        v
      
    
    {\displaystyle v}
  
, но не будут знать, что оно переместилось в список 
  
    
      
        
          v
          ′
        
      
    
    {\displaystyle v'}
  
.
 В протоколе ANDOS возможна ситуация, когда два голосующих выберут одно и то же i, таким образом получив одинаковый идентификатор 
  
    
      
        
          p
          
            i
          
        
      
    
    {\displaystyle p_{i}}
  
. Возможные решения этой проблемы:
 Протокол ANDOS довольно затратен, зато для него не нужен независимый регистратор V. Избирателям необходимо выбирать и пересылать не только идентификаторы, но и хеширующие функции, что может быть сложно или долго. А всё ещё может жульничать, распределяя по своему выбору голоса тех, кто заявил о своём намерении принять участие в голосовании, но так и не совершил свой выбор, а E имеют повышенный стимул купли/продажи голосов, так как можно убедиться в результате сделки.
 Существует множество других протоколов и криптографических примитивов с различными специфическими свойствами. Они не так широко известны и применяются, чтобы справиться с какими-либо особыми ограничениями среды или достичь дополнительных целей.
 Например, протокол двух агентств можно распространить на 
  
    
      
        n
      
    
    {\displaystyle n}
  
 избирательных центров, представляющие различные противоборствующие, но заинтересованные в честных выборах фракции. В этом случае распределение голосов может быть подделано только если все центры окажутся в сговоре, что не имеет смысла по условию. Такой алгоритм использует какую-либо схему неинтерактивного публично проверяемого разделения секрета (англ. NIVSS — Non-Interactive Verifiable Secret Sharing). В зависимости от выбранного способа разделения секрета (кто за кого проголосовал) протокол может иметь разную стойкость к разным атакам и разную скорость обработки данных. Хороший результат показывает, например, использование проблемы дискретного логарифмирования для обеспечения сокрытия данных.
 Главным недостатком системы является то, что хотя сфальсифицировать результаты могут только все избирательные центры вместе, сорвать ход выборов может любой из них в одиночку. Решением дилеммы является ещё одна модификация алгоритма, когда распределение голосов могут восстановить 
  
    
      
        k
        <
        n
      
    
    {\displaystyle k<n}
  
 центров. Но тогда и подделать результаты смогут 
  
    
      
        k
      
    
    {\displaystyle k}
  
 сговорившихся центров, а сорвать выборы — 
  
    
      
        n
        −
        k
      
    
    {\displaystyle n-k}
  
. Схема может быть улучшена, чтобы допускать несколько вариантов ответа в бюллетени, а также поэтапное или параллельное голосования. Дополнительный плюс: при такой системе избиратель не может доказать, за кого именно он проголосовал, что делает чрезвычайно трудной покупку/продажу голосов.
 Для работы данного протокола необходим примитив «доска бюллетеней» — область данных, которую могут читать все целиком, а писать — каждый только в свою часть. По сути это — общая область памяти с доступом по сети и некоторыми криптографическими ограничениями. Если в выборах участвует 
  
    
      
        n
      
    
    {\displaystyle n}
  
 центров голосований 
  
    
      
        
          A
          
            1
          
        
        ,
        …
        ,
        
          A
          
            n
          
        
      
    
    {\displaystyle A_{1},\dots ,A_{n}}
  
 и 
  
    
      
        m
      
    
    {\displaystyle m}
  
 избирателей 
  
    
      
        
          E
          
            1
          
        
        ,
        …
        ,
        
          E
          
            m
          
        
      
    
    {\displaystyle E_{1},\dots ,E_{m}}
  
, то количество битов, необходимое для доски бюллетеней — 
  
    
      
        O
        (
        n
        m
        k
        )
      
    
    {\displaystyle O(nmk)}
  
, где 
  
    
      
        k
      
    
    {\displaystyle k}
  
 — некоторая переменная криптостойкости, пропорциональная количеству битов ключа.
 Среди других специальных криптографических примитивов можно выделить «сборщика» (англ. pollster) — удобный интерфейс между пользователем и системой. Идея в том, что избиратель-человек может отдать бюллетень сборщику, а тот выполнит за него всю работу по шифрованию и обмену данными с остальными сторонами. Избиратель должен полностью доверять данному модулю. Это сильное условие, однако его сравнительно просто реализовать, ведь сборщик запущен на машине голосующего.