Различие между шифрованием и хешированием

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

Главная причина мы используем шифрование везде, состоит в том, что у нас уже были хорошая библиотека шифрования и системный ключ. Это действительно не казалось стоящим времени для разработки библиотеки хеширования, кроме того.

Есть ли какая-либо угроза безопасности, которую мы создаем при помощи шифрования вместо хеширования?

9
задан Pace 20 June 2010 в 21:18
поделиться

6 ответов

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

Помните, что центральные базы данных хороши тем, что однажды кто-то получит данные. По крайней мере, если история послужит уроком.

7
ответ дан 4 December 2019 в 14:26
поделиться

Вы назвали секретность ключа слабым местом, я бы сказал, что это риск, хотя для оценки серьезности потребуются более подробные сведения.

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

0
ответ дан 4 December 2019 в 14:26
поделиться

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

1
ответ дан 4 December 2019 в 14:26
поделиться

Любые данные, которые можно зашифровать, также можно расшифровать.

Хеширование - это односторонний процесс, особенно если вы используете новые методы SHA2.

1
ответ дан 4 December 2019 в 14:26
поделиться

Насколько я понимаю, вы хотите добиться целостности своих данных (т.е. вы хотите, чтобы никто не мог изменить ваши данные незаметно). Это может быть достигнуто с помощью цифровой подписи (например, RSA, DSA) или MAC (кода аутентификации сообщения). Mac - это симметричный эквивалент цифровой подписи, которая обычно представляет собой асимметричную схему.

Итак, в вашем случае MAC (например, HMAC) должен быть хорошим выбором!

1
ответ дан 4 December 2019 в 14:26
поделиться

Если вы используете симметричный шифр, и система развернута во "враждебной" среде, то вопрос времени, когда мотивированный человек сможет изолировать ключ и подписать свои собственные (или чужие) лицензионные данные.

В этих случаях вам понадобится ассиметричный шифр, чтобы "подписать" лицензию вашим закрытым ключом, который надежно хранится на компьютере в хранилище и не имеет связи с внешним миром. Хорошо, небольшое преувеличение, но в безопасной среде.

Обычный хэш не поможет в этом случае, потому что он может быть использован для подписания поддельных лицензий. Если вы хотите быть уверены, что только вы можете утверждать изменения в лицензии, то использование ассиметричного шифра для шифрования лицензии (или хэша лицензии) является наиболее простым способом.

4
ответ дан 4 December 2019 в 14:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: