SHA1 VS RSA: в чем между ними разница?

В чем разница между SHA1 и RSA? Являются ли они просто разными алгоритмами или они принципиально (т.е. используются для разных вещей) отличаются на каком-то уровне.


person Ted Smith    schedule 09.04.2009    source источник
comment
Что вы имеете в виду под принципиально другим?   -  person David Z    schedule 09.04.2009


Ответы (6)


Принципиально разные.

SHA1 – это хэш-алгоритм, представляющий собой одностороннюю функцию, превращающую входные данные любого размера в выходные данные фиксированной длины (в данном случае – 160 бит). Криптографическая хеш-функция — это функция, для которой невозможно найти два входа, дающих один и тот же результат, кроме как с помощью грубой силы (например, для 128-битной функции вам нужно попытаться в среднем 2 ^ 64 сообщения, чтобы найти такое сообщение). "столкновение" из-за чего-то, что называется парадоксом дня рождения - Google для получения дополнительной информации).

На самом деле для SHA1 это уже не так — алгоритм (по крайней мере, с криптографической точки зрения) теперь сломан, с атакой коллизии, описанной Xiaoyun Wang et al, которая превосходит классическую атаку дня рождения. Семейство SHA2 не нарушено, и NIST ведет процесс согласования алгоритма SHA3 или семейства алгоритмов.

Изменить. Теперь Google сгенерировал и опубликовал фактический конфликт SHA1.

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

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

person David M    schedule 09.04.2009
comment
Задачу с коллизией традиционно называют парадоксом рождения, а не эффектом. - person sharptooth; 09.04.2009
comment
Слышал, как это называется, но отредактирую. Применительно к попытке найти коллизию в хэш-функции использование этого парадокса или эффекта называется атакой дня рождения, и это термин, с которым я больше всего знаком из трех! - person David M; 09.04.2009
comment
Еще одно замечание: алгоритмы хеширования, такие как SHA-1, могут вычислять дайджесты данных любой длины в качестве входных данных. Асимметричные алгоритмы, такие как RSA, ограничены по длине данных, которые они могут преобразовать. По этой причине исходное сообщение редко подписывается с помощью RSA, вместо этого подписывается дайджест SHA-1 исходного сообщения. Получатель сообщения и его подписи вычисляет дайджест SHA-1 сообщения, затем расшифровывает подпись с помощью открытого ключа отправителя и проверяет, что дайджесты точно совпадают. - person jordanbtucker; 23.02.2013
comment
Хорошее объяснение — вы рекомендуете использовать AES-256 или RSA для шифрования e2e? - person ha9u63ar; 04.08.2017

Ответы ранее уже являются достаточными объяснениями. Но я думаю, вы задаете этот вопрос только потому, что 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-битных данных, чтобы увидеть, совпадают ли они.

person demonguy    schedule 22.01.2015
comment
Вы не должны говорить о шифровании с закрытым ключом, когда имеете в виду подписи. - person CodesInChaos; 22.01.2015
comment
Что ты имеешь в виду? Насколько я знаю, подпись - это просто данные, зашифрованные RSA из 128-битных данных, сгенерированных SHA (по крайней мере, в этом случае), я ошибаюсь? - person demonguy; 22.01.2015
comment
Подпись использует операцию с закрытым ключом RSA точно так же, как расшифровка использует операцию с закрытым ключом. Шифрование всегда использует открытый ключ и добавляет заполнение шифрования, например OAEP. При расшифровке всегда используется закрытый ключ и проверяется заполнение шифрования. Подпись, с другой стороны, хеширует сообщение, добавляет дополнение подписи, такое как PSS, а затем использует операцию с закрытым ключом. Проверка происходит с использованием открытого ключа. - person CodesInChaos; 22.01.2015
comment
Также самая большая проблема с использованием подписи RSA без хэширования сообщения заключается в том, что вы не можете уместить более 200 байтов в один блок RSA. Подписание путем разделения сообщения на блоки и применения операции с закрытым ключом RSA к каждому блоку аналогично режиму ECB не является безопасным. - person CodesInChaos; 22.01.2015
comment
Хороший момент (и он может быть неточным), но SHA1 генерирует 160 бит, а не 128 . - person Al Lelopath; 22.06.2017

SHA1 — это алгоритм хеширования (подписание документов и сертификатов), а RSA — это алгоритм шифрования/дешифрования (безопасная связь).

person Spencer Ruport    schedule 09.04.2009

Как отмечали другие, это принципиально разные вещи, выполняющие разные функции. Вы используете RSA, чтобы скремблировать информацию в кажущуюся случайной форму, в то время как вы используете SHA1, чтобы гарантировать целостность сообщения (т. е. ни один из битов не изменился). В приложении безопасности вы будете использовать один или оба, в зависимости от того, какая функциональность вам нужна.

person sybreon    schedule 09.04.2009

SHA1 — это криптографическая хеш-функция, тогда как RSA — это алгоритм шифрования.

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

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

person AnnaR    schedule 09.04.2009

Алгоритм 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, но, что примечательно, никогда не было найдено двух одинаковых ключей, которые столкнулись бы.

person sangupta    schedule 09.04.2009
comment
SHA НЕ является алгоритмом шифрования. Это алгоритм хеширования. Это разные звери. - person David M; 09.04.2009