Безопасность для голосования приложения - PullRequest
2 голосов
/ 27 августа 2008

У меня есть проект по созданию настольного приложения для голосования для класса на Java. Хотя безопасность не является целью проекта, я бы хотел быть максимально реалистичным. Каковы некоторые из основных инструментов для интеграции безопасности в приложение Java.

Edit: меня не беспокоит физическая безопасность, мы просто создаем приложение, а не целую систему Я хочу убедиться, что голоса записаны правильно и не могут быть изменены или прочитаны кем-либо еще.

Ответы [ 8 ]

3 голосов
/ 27 августа 2008

Это действительно зависит от того, какую безопасность вы хотите интегрировать. Хотите ли вы, чтобы безопасность гарантировала, что пользователь не запускает никаких отладчиков или чего-то подобного, чтобы поменять биты в вашем приложении, чтобы изменить голоса? Вы хотите убедиться, что пользователь не устанавливает программное обеспечение для ведения журнала, чтобы отслеживать, кто за кого проголосовал? Вы хотите убедиться, что человек, который должен голосовать, действительно голосует? Безопасность - это очень широкий вопрос, и трудно дать ответ, не зная, что именно вы ищете.

2 голосов
/ 02 ноября 2008

Моя компания в последнее время сделала приложение с очень сильной безопасностью. Может быть, это поможет.

Наше приложение

Это было приложение Java EE.

Архитектура следующая:

  1. Клиентский компьютер имеет пакет криптографии.
  2. Грязный сервер, хранящий зашифрованный пользовательский ввод и вывод
  3. Чистый сервер, недоступный извне, в котором хранятся ключи и расшифрованные данные.

Пользователям выдаются криптографические карты (вы можете использовать что-то менее безопасное - например, pgp), и они требуются страницам jsp для шифрования всех вводимых данных. Страница содержит компонент, который подключается к криптографическому приложению, запрашивает у пользователя ключевую фразу, шифрует его с помощью открытого ключа сервера и подписывает его с помощью личного ключа пользователя, а затем отправляет.

Данные сохраняются на внешнем сервере, затем передаются на внутренний сервер, где они дешифруются и проверяются подписи, затем данные обрабатываются и повторно шифруются, затем они отправляются на грязный сервер, а затем пользователь может их получить.

Поэтому, даже если кто-то взломает грязный сервер (даже получит базу данных), он получит в основном бесполезные данные.

Ваше приложение

Я отправляю зашифрованные и подписанные голоса на сервер. Было бы утверждать две вещи:

  1. Вы знаете, кто отправил голос
  2. Никто не сможет узнать, каково было голосование.

Тогда получите данные с сервера, утверждайте, что все проголосовавшие не более одного раза подсчитывают голоса, вуаля!

1 голос
/ 27 августа 2008

Если вы ищете «высокоуровневое» объяснение этого материала (например, не кода), Прикладная криптография имеет довольно много соответствующих примеров (и я полагаю, что раздел «Безопасный») выборы », которая охватывает некоторые стратегии голосования).

0 голосов
/ 07 июля 2009

Вам известно, что электронное голосование является нерешенной проблемой исследования? Крупномасштабное мошенничество требует больших усилий.

0 голосов
/ 14 марта 2009

Ваша проблема в том, что вам нужно надежно идентифицировать пользователя, чтобы вы могли предотвратить повторное голосование и доступ к голосам друг друга.

Это ничем не отличается от любого другого настольного приложения, которое требует аутентификации (и, возможно, авторизации). Если ваши избиратели являются закрытой группой в сети с учетными записями пользователей, вы можете интегрироваться с каталогом и требовать от пользователей входа в систему.

Если у избирателей нет учетных записей пользователей сети, это становится интересным. Каждому пользователю все равно нужно будет пройти аутентификацию с помощью приложения. Вы можете создать учетные записи с паролями в приложении и безопасно распространять эту информацию до голосования. Ваше приложение может попросить пользователей выбрать пароль при первом доступе к приложению.

Не зная специфики, сложно дать более конкретный ответ.

0 голосов
/ 01 ноября 2008

Отложив в сторону вопросы защиты от физического взлома (например, базовой базы данных), поскольку вы оговорили, что физическая безопасность не является настоящей проблемой ...

Я думаю, что главное соображение - как обеспечить, чтобы данный избиратель голосовал только один раз. При проведении бумажного опроса каждый зарегистрированный избиратель ограничен определенной кабиной / местом, и проверка проводится по имени + SSN и подписи.

Может потребоваться захват цифровой подписи с высоким разрешением и, следовательно, периферийное устройство захвата с сенсорным экраном или терминал с сенсорным экраном. Более сложный подход - это биометрический сканер, но для этого потребуются правительственные записи отпечатков пальцев / отпечатков пальцев или сканирования сетчатки - я уже вижу сторонников конфиденциальности, выстраивающихся в очередь в кабинетах адвоката.

Другой подход заключается в том, чтобы «офис регистратора» избирателя выдавал цифровые ключи каждому избирателю до выборов - (относительно) короткий (криптографически стойкий) случайный буквенно-цифровой ключ, который вводится с именем и / или именем избирателя. SSN в приложении. Знание этого ключа требуется для этого конкретного избирателя на этих конкретных выборах. Эти ключи будут выдаваться по почте в конвертах с защитой от несанкционированного доступа, подобно тем, которые используются банками для почтового подтверждения электронных переводов и доставки ПИН-номеров. Ключ должен включать в себя данные контрольной суммы, чтобы пользователь мог сразу же проверить его запись, и он должен быть в группах по 4, что-то вроде XXXX-XXXX-XXXX-CCCC.

Любые другие «секретные» знания, такие как SSN, вероятно, слишком легко обнаруживаются для большого процента населения (хотя мы, кажется, не в состоянии заставить кредитные организации понять это), и, следовательно, они не подходят для аутентификации.

Подсчет голосов может быть произведен путем создания файла с зашифрованными данными с открытым ключом, который передается (через sneaker net?) В центральную систему. Это должно включать идентификационную информацию «кабины для голосования» и запись для каждого избирателя, включая его SSN и цифровой ключ (или подпись, или биометрические данные). Голоса с недействительными ключами исключаются. Несколько голосов с одинаковым ключом и одинаковыми голосами рассматриваются как один голос за этого кандидата. Несколько голосов с одним и тем же ключом и разными голосами помечаются для расследования мошенничества (с избирателем связались по телефону, выпустили новый ключ и направили на повторное голосование).

0 голосов
/ 27 августа 2008

Меня в первую очередь не беспокоит физическая безопасность, мы просто создаем приложение, а не целую систему. Я хочу убедиться, что голоса записаны правильно и не могут быть изменены или прочитаны кем-либо еще.

0 голосов
/ 27 августа 2008

Я считаю, что физическая безопасность важнее для системы кабины для голосования, чем вы знаете, для безопасности кода.
Эти машины по своей природе не должны быть подключены к каким-либо общедоступным сетям, особенно к Интернету. Но очень важно иметь хорошую физическую защиту, чтобы предотвратить любое физическое вмешательство.

...