Как мне подписать переменные? - PullRequest
2 голосов
/ 23 марта 2010

У меня есть несколько переменных, которые должны храниться на стороне клиента. Как обычно, все на стороне клиента может быть подделано. Я хотел бы подписать несколько переменных и проверить их, когда данные отправляются обратно на сервер. На данный момент я думаю, что это 5 64-битных переменных.

На сервере я хотел бы подписать эти 5 переменных, а затем убедиться, что подпись верна, когда клиент отправляет ее обратно. Как мне сделать это с помощью C # .NET?

-edit- в этом случае я не использую asp.net

Ответы [ 3 ]

2 голосов
/ 23 марта 2010
1 голос
/ 23 марта 2010

Как минимум:

  1. На сервере должна быть пара ключей асимметричной подписи (частная для подписи, открытая для проверки).

  2. Сервер должен отправить клиенту сообщение, содержащее данные переменных, и подпись для хеш-значения данных переменных:

    M, S (H (M))

  3. При получении клиент сохраняет все сообщение. Когда приходит время, клиент отправляет серверу все обратно, затем сервер вычисляет хеш для данных переменных и проверяет, что

    V (S (H (M))) = H (M)

    Таким образом, убедившись, что данные переменных были выданы сервером.

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

При реализации этого в .NET практически все необходимые функции обеспечиваются пространством имен Security.Cryptography. См. Следующую статью MSDN , в которой приведен пример кода для подписи и проверки заданного значения хеш-функции с использованием DSA. См. Здесь для примера кода создания значения хеша с использованием SHA256.

1 голос
/ 23 марта 2010

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

например. конвертируйте числа в строки, объединяйте их и вычисляйте по ним хеш MD5. Это можно «улучшить», добавив имя текущего вошедшего в систему пользователя или текущий SessionID в строку перед вычислением хэша.

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