Безопасность в серверной системе
Содержание |
Подделка голоса при открытом голосовании
Эта проблема решается тем, что каждый голос подписывается персональной ЭЦП каждого голосующего. Подделать ЭЦП на данном этапе развития вычислительной техники считается невозможным.
"Вброс" голосов при открытом голосовании
Т.к. каждый голос подписывается персональной ЭЦП, предварительно заверенной определенным образом, вброс голосов возможен только при подделке и мошенническом удостоверении GPG ключа.
Анонимность при тайном голосовании
Анонимность при тайном голосовании обеспечивается тем что данные о варианте вместе с одноразовым идентификатором пользователя передаются на сервер отдельно от данных о его подписи об участии в голосовании. Данные об одноразовом идентификаторе в подписи шифруются открытым ключем пользователя. При этом расшифровать их может только сам пользователь.
Хотя в систему эти данные идут разными запросами, теоретически при желании их можно сопоставить по временной метке и по IP. Однако, ни время запросов ни IP клиента в БД не записываются. Это, конечно, сложно проверить снаружи.
Однако, изнутри системы при не слишком активном голосовании есть возможность сопоставить некоторые подписи определенным голосам. При помощи временного сопоставления. Если голосование достаточно активно (несколько голосов в секунду), то и этот метод уже не будет давать однозначного результата.
В данном случае в дело вступают уже принципы нашего проекта. Суть в том, что при несоблюдении их наш проект не имеет никакого смысла. Поэтому если возникнет подозрение в том, что в системе ведется слежка о которой говорится в предыдущем параграфе, проект просто исчезнет. И именно поэтому нам нет никакого смысла заниматься такой слежкой изнутри системы.
Подделка или "вброс" голоса при тайном голосовании
При тайном голосовании доставка на сервер подписи голосующего производится отдельно от доставки самого голоса (разными запросами). Теоретически, злоумышленник может попробовать послать свой поддельный голос между моментами когда пользователь отправляет свою подпись и моментом когда пользователь отправляет свой голос. Т.к. при этом количество голосов сразу становиться больше чем количество подписей - такую ситуацию возможно сразу обнаружить. Далее возможны различные варианты действий. Но главное что попытка такой атаки обнаруживается сразу и достаточно надежно.
Теоретически возможен перехват злоумышленниками пакета пользователя с его голосом до сервера так, что он туда не пройдет, и замена злоумышленниками содержимого этого пакета. При этом такая подмена останется незамеченной. Однако, такое технически сложно осуществимо. Злоумышленник при этом должен находиться либо непосредственно перед серверами системы, либо рядом с пользователем. Такое возможно при наличии специального вируса в системе пользователя. Однако, и способы противодействия этому тоже имеются.
Подделка ключей GPG
На данный момент этот вопрос пока еще один из самых неясных.
Предполагается что достоверность ключа пользователя будет подтверждаться подписыванием его другими пользователями.
Однако, пока не совсем понятно каким образом определять ситуацию что один пользователь нагенерировал большое количество ключей и подписал их другими им-же сгенерированными.
Возможен подход к этому вопросу с двух сторон:
- Анализ сети доверия (сети подписания ключей) и выявление подозрительных ключей на основе каких-то признаков (их еще предстоит выработать);
- Создание сервиса для координации действий по подписыванию ключей. С его помощью любой пользователь, которому не удалось с кем-то договориться о проверке ключа обычным способом и возникло подозрение что ключ соответствует виртуальному пользователю, может инициировать в системе процедуру проверки ключа другого пользователя. При этом все шаги такой проверки будут регистрироваться в системе и по каждому шагу информация будет отправляться с сервера и проверяющему и проверяемому (это исключит возможные злоупотребление со стороны проверяющего).
Первый способ будет защищать сеть доверия от проникновения виртуалов на этапе входа ключа в систему. Второй способ - это способ избавиться от виртуалов, каким-либо образом проникших в систему.
Подразумевается что уличенные в создании виртуалов реальные пользователи будут лишены права подписания других ключей. Физически пользователь сможет подписывать другие ключи, но система будет игнорировать информацию о таких подписях. Так-же, "черный список" таких ключей, которым запрещено подписывать другие ключи, будет вывешиваться в общем доступе.
Метка времени в подписи
Пока GnuPG не позволяет создавать электронную подпись без времени ее создания. Это может представлять некоторую проблему с точки зрения сопоставления времени подписи с онлайн-данными, например, по тайному опросу. Поэтому, пока принято решение не публиковать список участников тайных опросов. Возможно, мы будем публиковать эти списки не в режиме онлайн, что несколько снизит опасность, связанную с наличием времени в подписи.
Получение достоверных подписей
Непонятно каким образом получить достоверные подписи граждан РФ. Не все настолько хорошо работают с компьютером, чтобы самостоятельно установить необходимое программное обеспечение, помнить пароли, хранить закрытые ключи. Без решения этой проблемы система носит лишь академический характер и лишена практического смысла