Сведения о вопросе

Codeliver

22:24, 15th August, 2020

Теги

java   security   desktop    

Безопасность Для Применения Голосования

Просмотров: 401   Ответов: 8

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

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



  Сведения об ответе

FAriza

17:33, 19th August, 2020

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


  Сведения об ответе

VERSUION

14:37, 4th August, 2020

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

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

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

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

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

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

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

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

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

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

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

Затем получить данные с сервера, утверждать, что все проголосовали не более одного раза подсчитать голоса, вуаля!


  Сведения об ответе

DAAA

01:39, 1st August, 2020

Если вы ищете объяснение "higher-level" этого материала (например, не кода), Прикладная криптография имеет довольно много соответствующих примеров (и я считаю, что раздел о "secure elections", который охватывает некоторые стратегии голосования).


  Сведения об ответе

LIZA

10:16, 13th August, 2020

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


  Сведения об ответе

VCe znayu

01:04, 4th August, 2020

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

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

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

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


  Сведения об ответе

davran

07:46, 23rd August, 2020

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


  Сведения об ответе

DINO

06:56, 7th August, 2020

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


  Сведения об ответе

SEEYOU

02:50, 28th August, 2020

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

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

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

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

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

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться