В чем разница между SHA1 и RSA? Являются ли они просто разными алгоритмами или они принципиально (т.е. используются для разных вещей) отличаются на каком-то уровне.
SHA1 VS RSA: в чем между ними разница?
Ответы (6)
Принципиально разные.
SHA1 – это хэш-алгоритм, представляющий собой одностороннюю функцию, превращающую входные данные любого размера в выходные данные фиксированной длины (в данном случае – 160 бит). Криптографическая хеш-функция — это функция, для которой невозможно найти два входа, дающих один и тот же результат, кроме как с помощью грубой силы (например, для 128-битной функции вам нужно попытаться в среднем 2 ^ 64 сообщения, чтобы найти такое сообщение). "столкновение" из-за чего-то, что называется парадоксом дня рождения - Google для получения дополнительной информации).
На самом деле для SHA1 это уже не так — алгоритм (по крайней мере, с криптографической точки зрения) теперь сломан, с атакой коллизии, описанной Xiaoyun Wang et al, которая превосходит классическую атаку дня рождения. Семейство SHA2 не нарушено, и NIST ведет процесс согласования алгоритма SHA3 или семейства алгоритмов.
Изменить. Теперь Google сгенерировал и опубликовал фактический конфликт SHA1.
RSA – это асимметричный алгоритм шифрования, который преобразует входные данные в выходные данные, которые затем можно расшифровать (в отличие от алгоритма хеширования, который нельзя отменить). Он использует другой ключ для шифрования (открытый) и для дешифрования (закрытый). Поэтому его можно использовать для получения зашифрованных сообщений от других — вы можете опубликовать свой открытый ключ, но только вы с закрытым ключом сможете расшифровать сообщения, которые были зашифрованы с его помощью.
Если вы поменяете местами ключи для RSA, его можно будет использовать для создания цифровой подписи — зашифровав что-то вашим закрытым ключом, любой может расшифровать это с помощью открытого ключа, и, если они уверены, что открытый ключ принадлежит вам, то они уверенность в том, что именно вы зашифровали оригинал. Обычно это делается в сочетании с хеш-функцией — вы хэшируете свой ввод, затем шифруете его своим закрытым ключом, давая цифровую подпись фиксированной длины для вашего входного сообщения.
Ответы ранее уже являются достаточными объяснениями. Но я думаю, вы задаете этот вопрос только потому, что SHA и RSA часто встречаются вместе. Позвольте мне объяснить, почему.
Во-первых, имейте в виду, что
RSA не эффективен, но SHA эффективен.
Предположим, вы загружаете Windows 7 и хотите убедиться, что это оригинальная Windows 7 от Microsoft. Если Microsoft просто зашифрует Windows 7 с помощью RSA, то на это уйдет очень много времени, и мы этого терпеть не можем. Итак, Microsoft использует SHA1 в Windows 7 и генерирует данные длиной 160 бит. А затем Microsoft подписывает эти 160-битные данные с помощью RSA (используя свой закрытый ключ).
Затем все, что вам нужно сделать, это убедиться, что ваш открытый ключ принадлежит Microsoft. А затем используйте SHA1 для генерации данных длиной 160 бит. А затем используйте открытый ключ RSA для расшифровки подписи Microsoft. Затем вы просто сравниваете два 160-битных данных, чтобы увидеть, совпадают ли они.
SHA1 — это алгоритм хеширования (подписание документов и сертификатов), а RSA — это алгоритм шифрования/дешифрования (безопасная связь).
Как отмечали другие, это принципиально разные вещи, выполняющие разные функции. Вы используете RSA, чтобы скремблировать информацию в кажущуюся случайной форму, в то время как вы используете SHA1, чтобы гарантировать целостность сообщения (т. е. ни один из битов не изменился). В приложении безопасности вы будете использовать один или оба, в зависимости от того, какая функциональность вам нужна.
SHA1 — это криптографическая хеш-функция, тогда как RSA — это алгоритм шифрования.
Хеш-функция принимает часть данных и возвращает строку фиксированной длины. В криптографической хеш-функции все возвращаемые строки имеют одинаковую вероятность. Имея только номер хэша, вы не можете определить ввод, а также не можете найти другой ввод, который дает тот же хэш (за исключением очень малой вероятности). Sha1 имеет некоторые недостатки безопасности.
Алгоритм шифрования дает, берет кусок данных, но на выходе не фиксированной длины - ваше шифрование. Учитывая вывод (шифрование), вы можете (если у вас есть правильные ключи) определить ввод.
Алгоритм Secure Hash Algorithm (SHA) принимает сообщение длиной менее 264 бит и создает 160-битный дайджест сообщения. Алгоритм немного медленнее, чем MD5, но более крупный дайджест сообщения делает его более защищенным от коллизий грубой силы и инверсионных атак. Алгоритм, указанный в стандарте безопасного хеширования (SHS, FIPS 180), был разработан NIST. SHA-1 — это версия SHA, опубликованная в 1994 году; в редакции исправлена неопубликованная ошибка в SHA. Его дизайн очень похож на семейство хеш-функций MD4, разработанное Rivest. SHA-1 также описан в стандарте ANSI X9.30.
RSA — это алгоритм шифрования с открытым ключом. Это первый известный алгоритм, пригодный как для подписи, так и для шифрования, и одно из первых значительных достижений в области криптографии с открытым ключом. RSA широко используется в протоколах электронной коммерции и считается безопасным, учитывая достаточно длинные ключи и использование современных реализаций.
Самое заметное отличие заключается в том, что SHA — это алгоритм шифрования, тогда как RSA — это и алгоритм шифрования, и алгоритм подписи.
16.08.2005 было объявлено, что найти коллизию в SHA-1 можно за 2^63 операции. Этот результат исследования принадлежит профессору Сяоюнь Вану из Университета Цинхуа в Пекине вместе с профессорами Эндрю Яо и Фрэнсис Яо. Он расширяет работу Вана, Инь и Ю, которые продемонстрировали, что столкновение можно найти за 2^69 операций. Это означает, что в SHA легче произойти коллизия, чем в RSA, но, что примечательно, никогда не было найдено двух одинаковых ключей, которые столкнулись бы.