Самостоятельная проверка зашифрованной строки - возможен ли метод? - PullRequest
0 голосов
/ 20 мая 2019

У меня есть цепочка ключей, которая позволяет клиенту иметь дополнительные функции.

Очевидно, я хотел бы, чтобы программное обеспечение проверило, что эта строка действительна, а не изменена.

Возможна ли следующая идея:

  • получить строку ключа в виде зашифрованного значения и закодировать ее в Base64 (моя зашифрованная строка составляет около 100 символов, для моей цели)
  • вычислить контрольную сумму (MD5), конечно, используя частную соль.
  • сплетить контрольную сумму в зашифрованные данные

В принципе:

xxxxCxxxxxxCxxxxxxxxCxxxxxxxxxxCxxxxxxxxxxxxxCxxx
  • места для переплетения в зашифрованные данные можно определить по первому критерию шифрования, создавая до 16 различных шаблонов.

При проверке достоверности кода я просто «расплетаю» контрольную сумму,проверьте, правильно ли это, и таким образом узнайте, были ли данные изменены.

Правильно ли мое мнение?

1 Ответ

1 голос
/ 20 мая 2019

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

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

Если у вас нет доступа к AES-GCM, следующим вариантом является AES-CBC + HMAC, который использует более вездесущий AES-CBC со случайным IV и добавляет тип зашифрованного хэша (называемый HMAC) до конца сообщения, чтобы подтвердить его. Для проверки подлинности вам необходимо удалить HMAC, использовать его для проверки того, что зашифрованный текст не изменен, и затем продолжить обычную расшифровку. Эта схема обычно называется «шифровать, а затем MAC».

Детали реализации будут зависеть от вашего языка и фреймворков.

...