Мы хотим создать веб-API, в котором пользователи получают хеш-маркеры (196-бит) по электронной почте в рамках их приобретения нашей лицензии на программное обеспечение и могут затем использовать этот токен для активации их пробную версию программного обеспечения для «полного» программного обеспечения. Веб-API отвечает за получение хеш-маркера и подтверждает или отклоняет пользователя от обновления до полного.Контрмеры для временной атаки на SQL SELECT хэш-токена
Оставляя много подробностей об этом, кажется, что он получает хеш-маркер таким образом, а затем просто проверяет с помощью SQL SELECT, если этот токен находится в базе данных, предоставляет временную атаку. Злоумышленник может попытаться угадать отдельные байты из токенов в базе данных, измеряя время отклика.
Как защититься от этого? В общем и конкретно в Ruby on Rails.
Идея до сих пор: (? Как)
- Достигнуть постоянное время для просмотровых окон
- Добавить случайный шум (? Сколько)
- Split маркера в ключевой части (32-разрядная версию) и остаток. Выполнять поиск только по ключу и безопасному сравнению с остальным
Вы можете запутать время запроса путем добавления случайного ожидания до возвращения данных клиенту. Таким образом, время запроса зависит не только от поиска базы данных. – Oliver
Что было бы подходящим количеством времени для компенсации? –
Я предполагаю, что он должен зависеть от среднего времени выполнения запроса (но я не специалист по статистике). Если вы знаете максимальное время выполнения, вы также можете максимизировать время отклика с некоторым отрывом (например, всегда требуется 10 секунд для ответа на такие запросы). Конечно, по-прежнему возникают проблемы с ситуациями с большой нагрузкой, но, по моему опыту, более тяжелая нагрузка увеличивает непредсказуемость индивидуального времени выполнения запроса. В сочетании с механизмом DOS-защиты это делает такие атаки неосуществимыми. – Oliver