Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Безопасность Для Применения Голосования
У меня есть проект по созданию голосующего настольного приложения для класса в Java. Хотя безопасность не является фокусом проекта, я хотел бы быть настолько реалистичным, насколько это возможно. Назовите некоторые из основных инструментов для интеграции безопасности в приложение Java.
Edit: я в первую очередь не беспокоюсь о физической безопасности, мы просто создаем приложение, а не целую систему. Я хочу убедиться, что голоса записаны правильно и не могут быть изменены или прочитаны кем-то другим.
Это действительно зависит от того, какую безопасность вы хотите интегрировать. Вы хотите, чтобы безопасность гарантировала, что пользователь не запускает никаких отладчиков или таких, чтобы перевернуть биты в вашем приложении, чтобы изменить голоса? Вы хотите убедиться, что пользователь не устанавливает программное обеспечение для ведения журнала, чтобы отслеживать, кто за кого проголосовал? Вы хотите убедиться, что человек, который должен голосовать, на самом деле голосует? Безопасность-это очень широкая тема, и трудно дать ответ, не зная, что именно вы ищете.
Моя компания недавно сделала приложение с очень сильной безопасностью. Может, это поможет.
Наше приложение
Это было приложение java EE.
Архитектура следующая:
- Клиентский компьютер имеет криптографический пакет.
- Грязный сервер, который хранит зашифрованный пользовательский ввод и вывод
- Чистый serwer, который не доступен извне, который хранит ключи и расшифрованные данные.
Пользователям выдаются криптографические карты (возможно, вы захотите использовать что - то менее безопасное-например. pgp), и требуются jsp страницами для шифрования с их помощью всех входных данных. Страница содержит компонент, который подключается к приложению cryctography, запрашивает у пользователя пароль ключа, шифрует его открытым ключом сервера и подписывает его закрытым ключом пользователя, а затем отправляет.
Данные хранятся на внешнем сервере, затем передаются на внутренний сервер, где расшифровываются и проверяются подписи, затем данные обрабатываются и повторно шифруются,затем они отправляются на грязный сервер, а затем пользователь может получить их.
Так что даже если кто-то взломал грязный сервер (даже получить доступ к базе данных) он будет получать в основном бесполезные данные.
Ваше приложение
Я бы отправил зашифрованные и подписанные голоса на сервер. Это утверждало бы две вещи:
- Вы знаете, кто послал голос
- Никто не сможет узнать, что это было за голосование.
Затем получить данные с сервера, утверждать, что все проголосовали не более одного раза подсчитать голоса, вуаля!
Если вы ищете объяснение "higher-level" этого материала (например, не кода), Прикладная криптография имеет довольно много соответствующих примеров (и я считаю, что раздел о "secure elections", который охватывает некоторые стратегии голосования).
Ваша проблема заключается в том, что вам нужно надежно идентифицировать пользователя, чтобы вы могли предотвратить их повторное голосование и доступ к голосам друг друга.
Это ничем не отличается от любого другого настольного приложения, которое требует аутентификации (и потенциально авторизации). Если ваши избиратели являются закрытой группой в сети с учетными записями пользователей, вы можете интегрироваться с каталогом и требовать от пользователей входа в систему.
Если у избирателей нет учетных записей пользователей сети, это становится интересным. Каждый пользователь все равно должен будет пройти аутентификацию в приложении. Вы можете создавать учетные записи с паролями в приложении и безопасно распространять эту информацию до голосования. Ваше приложение может попросить пользователей выбрать пароль при первом доступе к приложению.
Не зная специфики, трудно дать более конкретный ответ.
Я считаю, что физическая безопасность более важна для системы кабины для голосования, чем вы знаете, безопасность кода.
Эти машины по своей природе не должны быть подключены к каким-либо общественным сетям, особенно к интернету. Но иметь хорошую физическую безопасность для предотвращения любого вида физического вмешательства очень важно.
Откладывая в сторону вопросы защиты от физического вмешательства (например, базовой базы данных), поскольку вы оговорили, что физическая безопасность не является настоящей проблемой...
Я думаю, что главным соображением является то, как обеспечить, чтобы данный избиратель голосовал только один раз. В бумажном опросе каждый зарегистрированный избиратель ограничен определенным стендом/местоположением, и проверка осуществляется по имени+SSN и подписи.
Вам может понадобиться захват цифровой подписи с высоким разрешением и, следовательно, периферийное устройство захвата сенсорного экрана или сенсорный экран terminal. Более сложным подходом был бы биометрический сканер, но для этого потребовались бы правительственные записи отпечатков большого пальца/пальца или сканирование сетчатки глаза - я уже вижу, как защитники конфиденциальности выстраиваются в очередь в офисах адвокатов.
Другой подход заключается в том, чтобы избиратель "registrar office" выдал цифровые ключи каждому избирателю до выборов - (относительно) короткий (криптографически сильный) случайный буквенно-цифровой ключ, который вводится с именем избирателя и / или SSN в приложение. Знание этого ключа необходимо для этого конкретного избирателя на этих конкретных выборах. Эти ключи будут выдаваться по почте в конвертах, защищенных от несанкционированного доступа, как те, которые используются банками для почтового подтверждения банковских переводов и доставки номеров PIN. Ключ должен включать данные контрольной суммы, чтобы пользователь мог сразу же проверить его ввод, и он должен быть в группах по 4, поэтому что-то вроде XXXX-XXXX-XXXX-CCCC.
Любое другое знание "secret", такое как SSN, вероятно, слишком легко обнаруживается для большого процента населения (хотя мы, похоже, не в состоянии заставить кредитные организации понять это) и поэтому непригодно для аутентификации.
Подсчет голосов может быть выполнен путем создания зашифрованного файла данных с открытым ключом, который передается (sneaker net?) в центральную систему. Это должно включать в себя идентификационную информацию "voting booth" и запись для каждого избирателя, включая их SSN и цифровой ключ (или подпись, или биометрические данные). Голосов в недействительных ключей, будут благополучно устранены. Несколько голосов с одинаковым ключом и одинаковыми голосами рассматриваются как один голос за этого кандидата. Несколько голосов с одним и тем же ключом и разными голосами помечаются для расследования мошенничества (с учредителем связываются по телефону, выдают новый ключ и направляют на отзыв).