Есть ли способ расшифровать закодированную строку без ключа в Ruby? - PullRequest
0 голосов
/ 26 апреля 2019

В этом и состоит проблема, строка прошла через три отдельных шифрования в следующем порядке: Оригинал -> Base64 -> AES-256 -> Blowfish (Keyless) -> Final.Напишите метод, который принимает эту тройную закодированную строку mystery_string = "OXbVgH7UriGqmRZcqOXUOvJt8Q4JKn5MwD1XP8bg9yHwhssYAKfWE+AMpr25HruA" и полностью расшифровывает ее в исходное состояние.

Я изучил различные библиотеки / документацию для aes256 и blowfish, но всем им требовался ключ.Единственный, который не требовал ключа, был Base64 (то есть Base64.encode64('some string')).Не совсем уверен, куда идти отсюда.

1 Ответ

0 голосов
/ 27 апреля 2019

Во-первых, единственный способ взломать AES-256 и Blowfish без ключа - это путем перебора всех 32-байтовых комбинаций, которые могут быть использованы в качестве ключа.Теоретически это означает, что в нашей жизни он не трескается.Могут быть некоторые уязвимости, которые вы могли бы использовать, поскольку у вас также есть простой текст, но я сомневаюсь, что вы столкнетесь с этим в реальной ситуации.* encode-decode.com https://encode -decode.com / , на самом деле у вас недостаточно информации для декодирования строки, даже если вы знаете пароль.

Различные режимы работы для функции шифрования AES256 требуют либо 32-байтовой (или иногда 64-байтовой) клавиши.Секрет, который вы использовали (вы, возможно, только что оставили его пустым), необходимо преобразовать в 32-байтовый ключ шифрования.Это делается с использованием алгоритма хеширования, но мы не знаем, какой из них используется.Надеемся, что на сайте использовалась функция получения ключа, которая обеспечивает несколько преимуществ безопасности.Однако функции получения ключей требуют нескольких параметров, и нам нужно знать, какие параметры вводить вместе с нашим секретом, чтобы получить правильный ключ шифрования.

Наконец, мы не знаем, соединяется ли секрет ссоль перед хешНе зная, используется ли соль и что это за соль, мы не можем определить правильный 32-байтовый ключ, используемый для шифрования простого текста.

В итоге, ответ на ваш вопрос: нет, нетбыстрый способ расшифровать эту строку, не зная ключа.

Однако шифрование - это замечательная тема для изучения.

Я бы посоветовал вам просмотреть документацию по ruby ​​для Библиотека OpenSSL .На самом деле они довольно хороши (кроме тех, о которых я упоминал ниже).

Функция шифрования на основе пароля PBKDF2 - одна из функций получения ключей, о которых я говорил.

При шифровании с помощью AES вы, скорее всего, захотите использовать AES-256-GCM , который является аутентифицированным шифрованием.

Несколько запретов:

  • Не используйте случайные шифры ... поймите их сильные и слабые стороны
  • Не используйте AES-128-EBC - объяснение

Еще одна хорошая библиотека шифрования rb-NaCl .

...