Основным способом взлома шифрования, особенно в этом сценарии, по-прежнему является грубая сила.В большинстве случаев он работает очень хорошо и очень эффективно.
Чтобы взломать, к примеру, секретный токен, используемый для подписи некоторого URL-адреса или пароля за хешем md5, вы можете просто запустить несколько экземпляров Amazon EC2, просто заплативих на то время, когда они вам нужны, и распределите атаку грубой силой.Большинство алгоритмов работают намного лучше на графических процессорах, чем на CPUS, но в основном это более удобно, потому что вы можете арендовать и совместно использовать процессоры.
Так что это значит?Теоретически, если вы можете распространить атаку, вы можете за считанные минуты войти в любой защищенный паролем или ключом аккаунт.На практике это в основном не работает, потому что сервер аутентификации ограничивает количество запросов, поэтому ограничивает вашу возможность применять грубую силу.
В этом случае кажется, что вы полностью передаете данные потенциальному злоумышленнику.
Итак, если вы храните файлы на моем компьютере, и я хочу взломать их, я могу распространить их в огромном вычислительном облаке (которое обходится мне всего в несколько сотен долларов за это короткое дело) и уничтожить вашу подпись.
Если это возможно, даже длинные цифровые подписчики не защищены.Конечно, количество необходимой вычислительной мощности возрастает экспоненциально с увеличением длины ключа, но этого на самом деле недостаточно.
Итак, после этого вступления ... Так какой же путь?
ВПо моему мнению, лучше всего было бы создать уникальную подпись для каждого файла и оставить их на стороне клиента.НЕ используйте общую подпись.
Поэтому, если я отправляю файл fileA.zip на ваш сервер, я держу файл fileA.zip.key на своей стороне, который позволяет мне расшифровать его.Таким образом, вы можете уничтожить один файл, но моя учетная запись не будет компромиссирована.
Если вы делаете 2048-битный ключ или что-то, что выделено для каждого файла в отдельности, это должно быть действительно довольно безопасно.
Вы также можете подумать об использовании bcrypt, где вы можете намеренно замедлить процесс шифрования, чтобы сделать атаки более сложными.но имейте в виду, что это также замедляет дешифрование с вашей стороны.Но если его резервное хранилище или что-то еще, это будет значительным выигрышем в безопасности.