В чем разница между обфускацией, хищением и шифрованием?

В чем разница между Obfuscation, Hashing и Encryption?

Вот мое понимание:

  • Хеширование - это односторонний алгоритм; не может быть отменено.
  • Обфускация похожа на шифрование, но не требует никакого "секретного" понимания (например, ROT13)
  • Шифрование является обратимым, но для этого требуется "секрет".

Ответы

Ответ 1

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

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

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

Ответ 2

Это объяснение высокого уровня. Я попытаюсь их уточнить:

Хеширование - в совершенном мире, это случайный оракул. Для того же входа X вы всегда получаете тот же вывод Y, который находится в NO WAY, относящемся к X. Это математически невозможно (или, по крайней мере, недоказано, что это возможно). Самое близкое, что мы получаем, это функции люка. H (X) = Y для H-1 (Y) = X настолько сложно сделать, что вам лучше попытаться перебрать силу Z так, что H (Z) = Y

Обфускация (мое мнение) - Любая функция f, такая, что f (a) = b, где вы полагаетесь на f быть секретным. F может быть хеш-функцией, но часть "обфускации" подразумевает безопасность через неясность. Если вы раньше не видели ROT13, это было бы запутывание

Шифрование - Ek (X) = Y, Dl (Y) = X, где E известно всем. k и l являются ключами, они могут быть одинаковыми (в симметричном, они одинаковы). Y - зашифрованный текст, X - открытый текст.

Ответ 3

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

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

Очень наивный и простой хеш - "Первые три буквы строки". Это означает, что хэш "abcdefg" будет "abc". Очевидно, эта функция не может быть отменена, что является цельной целью хэша. Однако обратите внимание, что "abcxyz" будет иметь точно такой же хеш, это называется collision. Итак, снова: хеш только доказывает с определенной способностью, что два сравниваемых значения одинаковы.

Другой очень наивный и простой хеш - это 5-модуль числа, здесь вы увидите, что 6,11,16 и т.д. будут иметь одинаковый хеш: 1.

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

Ответ 4

Обфускация в криптографии кодирует входные данные до, она хеширована или зашифрована.

Это делает атаки грубой силы менее осуществимыми, так как становится сложнее определить правильный текст.

Ответ 5

Вот как я всегда смотрел на него.

  • Хеширование выводит значение из другой, используя заданный алгоритм. В зависимости от используемого алгоритма это может быть одним из способов, возможно, не будет.

  • Обфускация что-то делает труднее читать по символу замена.

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

Ответ 6

Это не плохое описание на высоком уровне. Вот несколько дополнительных соображений:

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

Шифрование включает в себя хранение некоторых секретных данных, а безопасность секретных данных зависит от сохранения отдельного "ключа" от плохих парней.

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

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

Ответ 7

Краткий ответ:

Хеширование - создание поля проверки для некоторых данных (чтобы определить, когда данные будут изменены). Это односторонняя функция, и исходные данные не могут быть получены из хэша. Типичными стандартами для этого являются SHA-1, SHA256 и т.д.

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

Шифрование - использование ключа для преобразования данных, так что только те, у кого правильный ключ, могут его понять. Зашифрованные данные могут быть дешифрованы для получения исходных данных. Типичными стандартами являются DES, TDES, AES, RSA и т.д.

Ответ 8

Все отлично, кроме обфускации, на самом деле не похоже на шифрование - иногда это даже не включает шифры, такие же простые, как ROT13.

Ответ 9

Обфускация скрывается или что-то труднее понять.

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

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

Ответ 10

  • Хеширование - односторонняя задача создания одного значения из другого. Алгоритм должен попытаться создать максимально короткое и уникальное значение.

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

  • шифрование является двусторонним, и всегда существует некоторое дешифрование, работающее наоборот.

Итак, да, вы в основном правы.

Ответ 11

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

Как правило, разница между хэшированием и шифрованием заключается в том, что хэширование обычно просто использует формулу для перевода данных в другую форму, где шифрование использует формулу, требующую ключа (ов) для шифрования/дешифрования. Примерами будут кодирование базы 64, являющееся алгоритмом хеширования, где md5 является алгоритмом шифрования. Любой может дешифровать данные, закодированные base64, но вы не можете дешифровать зашифрованные данные md5 без ключа.