2015-06-17 5 views
0

Я в игровой компании, и мы используем алгоритм md5 для проверки порядка оплаты.Несколько вопросов о столкновении md5 в производстве

Вот как мы это делаем:

  1. На обоих Pay-центральный сервер и наш игровой сервер есть общий «секретный ключ».

  2. Pay-center отправляет запрос на игру с дополнительной игрой на наш игровой сервер.
    В котором есть много обычных параметров и специальный параметр с именем «знаком»

  3. Когда мы получили запрос на игровом сервере, мы используем md5 («все обычные параметры» + «секретный ключ») для производства результат.
    Если результат равен параметру «знак», мы рассмотрим этот порядок начислений действительным.


Мой вопрос являются:

Если кто-то слепо, используя случайные генерируемые «псевдо-секретный ключ» для ведения md5 вычислений со всеми другими параметрами для получения знака.
И по совпадению он сделал действительный знак с одним из своих «псевдосекретных ключей».

  1. Сколько раз ему нужно попытаться создать допустимый знак для каждой группы «обычных параметров»?

  2. Сколько шансов есть pseudo-secret-key идентично моему оригиналу secret-key, когда это происходит, чтобы создать действительный sign?

  3. Если pseudo-secret-key отличается с моим оригинальным secret-key, это почти невозможно использовать pseudo-key, чтобы произвести правильный знак, используя другие различные комбинации conventional parameters?

+0

В чем смысл рассуждать об этом? Не можете ли вы просто обновить более безопасную хэш-функцию? Насколько это дорого (с учетом затрат по затратам)? Если вы собираетесь подавать на любой вид аудита безопасности, MD5 в функции обработки платежей будет выделяться неблагоприятно. Я не утверждаю, что слепо следовать контрольным спискам, но MD5 действительно довольно устарел. – Thilo

+1

Thi sisn't действительно вопрос кодирования - нет никакого примера кода, нет ясной ошибки - он может быть более подходящим для http://crypto.stackexchange.com или http://security.stackexchange.com – TessellatingHeckler

+1

@Thilo, у нас есть для работы со многими другими платными центрами sdk, и почти все из них используют md5() для шифрования. – Zen

ответ

1

Основной: результат хеша md5 равномерно распределен. Это шанс 1 из 2^128.

  1. Вы не можете точно определить, сколько попыток ему понадобится. Вы можете, однако, рассчитать шансы на поражение в t попытках: 1 - (1 - 1/(2^128))^t. Например, после 2^128 попыток у него есть шанс около 1/3.
  2. Зависит от диапазона вашего ключа.
  3. Опять же, есть вероятность, что 1/(2^128).

 Смежные вопросы

  • Нет связанных вопросов^_^