1qwer1
Новичок
- Статус
- offline
- Регистрация
- 15.11.2019
- Сообщения
- 3
- Репутация
- 1
Добрый день, данная статья взята у очень хорошего человека, который очень сильно старается просветлить не опытных не взымая с них плату!
Надеюсь вам понравится!
ссылочку оставлю тут же: https://hacker-basement.ru/2019/08/23/kryptografia-dlay-hakerov-algorytmy-shifrovaniy/
Статья от многоуважаемого Pul$e.
А мы приступим...
Мы с тобой уже рассмотрели немало тем в области работы сетей в целом, и информационной безопасности в частности. И очень часто в своих материалах я упоминал такие слова как шифрование, алгоритмы шифрования, хэши, ну и всякие словечки наподобие. И вроде бы в контексте эти слова были уместны и понятны, но, я тут подумал, что, на самом деле мало кто понимает, что именно означают эти термины, а уж раскрыть концепцию и принципы работы всего этого – вообще смогут единицы. И для начинающего, либо для любителя это вполне нормально, а вот когда люди считающие себя серьёзными хацкерами, либо анонимусами с пеной у рта доказывают, что какой-то алгоритм уязвим и пользоваться им нельзя, но, при этом не могут даже приблизительно сформулировать что такое алгоритм шифрование, в чём суть уязвимости, а главное уязвимости к чему, это вызывает снисходительную улыбку. Но ты ведь не хочешь таким быть, правда? Поэтому я решил посветить эту статью криптографии в целом, и шифрованию в частности, но я постараюсь не углубляться в теоретические глубины, а сосредоточусь на практической части вопроса, больше внимания посвящая именно алгоритмам шифрования.
Начнём, как и положено с начала. А в начале всего стоит криптография – это такая наука, причём очень древняя и очень сложная. Исторически сложилось, что основной целью криптографии можно выделить обеспечение конфиденциальности т.е. защиты информации от посторонних личностей. И эта цель не менее актуальна и сейчас, но с развитием информационных технологий, а соответственно с развитием криптографии, начали появляться новые, но не менее важные цели этой науки, например к наиболее популярным можно отнести: аутентификацию т.е. проверку неизменности ключевых свойств объект (например авторство, дата создания, история изменений и т.д.) и целостность данных т.е. невозможность незаметного или не санкционированного изменения информации. С развитием криптографии, развивались и методы, применяемые этой наукой, для достижения результата. Если когда-то, давным-давно, достаточно было использовать алфавитный, а чуть позже цифровой шифр, и чем он был замудрённей тем и надёжней, потому что разгадывать его приходилось в ручную, то с появлением компьютеров, а соответственно серьёзных вычислительных мощностей, эти самые шифры канули в лету, ввиду их абсолютной уязвимости к анализу и перебору для выявления закономерностей, а соответственно разгадыванию секретного ключа т.е. самого шифра (этот процесс, кстати, принято называть криптоанализом) . Но кому-то очень умному пришло в голову использовать вычислительные мощности не только для разгадывания ключа, но и для самого шифрования. Именно так начали появляться алгоритмы шифрования в том понимании, в котором их знают сейчас.
Алгоритмы шифрования
И тут, человеки, как им свойственно, проявили немалую изобретательности и понавыдумывали столько, что если захочешь во всём этом разобраться, то пару институтов придется закончить. Но мы не в институте, да и нам не зачем в эти глубины вникать, а потому разберем основное.
В криптографии существует довольно много видов классификаций алгоритмов шифрования, но, что бы не забивать себе голову, наиболее приемлемо выделить три основных вида:
Симметричное шифрование
Теперь вернемся к тому из-за чего собрались, а именно к самим алгоритмам. Симметричное шифрование – это такой способ шифрования когда для шифрования и расшифровывания используется один и тот же ключ, соответственно у кого есть ключ тот и может расшифровывать сообщение.
В свою очередь, само симметричное шифрование можно разделить на два подвида – это блочные и поточные шифры.
Блочный шифр – информация шифруется блоками данных фиксированного размера, как правило это степени 2 (64, 128 и т.д.), применяя к каждому блоку ключ в несколько раундов подстановки и перемешивания, достигая таким образом увеличения несоответствия битов между блоками начальных и зашифрованных данных. Именно так работают большинство современных алгоритмов шифрования, используя, для перемешивания и подстановки сеть Фейстеля или SP-сеть.
Поточный шифр – принцип работы тот же самый, что и у блочного, только на шифруемый текст предварительно накладывается последовательность случайных чисел и информация шифруется не блоками, а побитово, этот процесс, кстати, называется гаммированием, так вот если блочный шифр запустить в режиме гаммирования – получится потоковый. Правда если перегнуть с этой последовательностью случайных чисел – получишь абсолютно стойкий шифр – круто, но бесполезно.
Примеры наиболее распространённых симметричных шифров:
Асимметричное шифрование
Асимметричное шифрование или шифрование с открытым ключом – в подобных системах используется два ключа – открытый и закрытый, математически связанные между собой, при этом открытый ключ не от кого не прячется, может передаваться не защищенными каналами связи и используется для шифрования данных и проверки электронной цифровой подписи. А вот для генерации цифровой подписи и расшифровки данных используется закрытый т.е. секретный ключ. Простыми словами это работает так: если мы хотим получить от кого-то некую секретную информацию, мы передаём ему открытый ключ, с использованием которого эта информация будет зашифрована. При этом мы не боимся что злодеи перехватят наш ключ, ведь с ним можно только зашифровать данные, но не расшифровать. После того как наш собеседник получает ключ, он шифрует сообщение и отправляет нам, а получив мы расшифровываем его с использованием секретного ключа, который мы тщательно хранили, никому не передавали и не показывали, и, как бонус, мы ещё и проверяем не изменил ли кто данные в процессе пересылки и пришли ли они от нужного нам адресата. Сам понимаешь, такая схема многократно надежней чем с симметричным шифрованием.
Наиболее распространённые асимметричные алгоритмы шифрования:
Хеширование
И третий, интересующий нас вид шифрования, это хеширование его ещё называют хеш-функция или функция свёртки – это одностороннее шифрование, при котором, с использованием алгоритма хеширования, начальные данные, независимо от их длины, превращаются в битовую строку фиксированной длины. Именно эта битовая строка и называется хешем. Идеальным считается такой алгоритм хеширования, который делает невозможным обратное преобразование хеша в данные. Т.е. имея на руках хеш – невозможно узнать начальные данные. При этом, для применения на практике, как раз начальные данные знать и не нужно, нужно знать, что с использованием определенного алгоритма генерация хэша от какого-то текста создает тот же хэш. Соответственно, мы можем хранить, например пароль, в виде хеша и даже если его украдут – узнать пароль не смогут, а когда пользователь вводит пароль то хеш введенного пароля сверяется с сохраненным хешем, и если они совпали – значит пароль правильный. По такому же принципу может проверяться целостность файлов.
Самая главная проблема хеш-функций называется коллизией, суть её в том что хеши не всегда уникальны и иногда, правда очень редко, случаются ситуации, что два разных входных блока дают одинаковый хеш. Именно поэтому основной уязвимостью алгоритмов хеширования считается построение коллизий т.е. их искусственное создание. Для примера именно подобную уязвимость эксплуатировал червь Stuxnet в Windows, получая от системы абсолютно белый сертификат и таким способом становясь неуязвимым для антивирусов.
Примеры алгоритмов хеширования: MD4, MD5, SHA1, SHA2.
Ну, а на этом нашу ознакомительную экскурсию в мир криптографии можно считать оконченной. Не забывай возвращаться, нам нужно узнать ещё очень много.
Надеюсь вам понравится!
ссылочку оставлю тут же: https://hacker-basement.ru/2019/08/23/kryptografia-dlay-hakerov-algorytmy-shifrovaniy/
Статья от многоуважаемого Pul$e.
А мы приступим...
Мы с тобой уже рассмотрели немало тем в области работы сетей в целом, и информационной безопасности в частности. И очень часто в своих материалах я упоминал такие слова как шифрование, алгоритмы шифрования, хэши, ну и всякие словечки наподобие. И вроде бы в контексте эти слова были уместны и понятны, но, я тут подумал, что, на самом деле мало кто понимает, что именно означают эти термины, а уж раскрыть концепцию и принципы работы всего этого – вообще смогут единицы. И для начинающего, либо для любителя это вполне нормально, а вот когда люди считающие себя серьёзными хацкерами, либо анонимусами с пеной у рта доказывают, что какой-то алгоритм уязвим и пользоваться им нельзя, но, при этом не могут даже приблизительно сформулировать что такое алгоритм шифрование, в чём суть уязвимости, а главное уязвимости к чему, это вызывает снисходительную улыбку. Но ты ведь не хочешь таким быть, правда? Поэтому я решил посветить эту статью криптографии в целом, и шифрованию в частности, но я постараюсь не углубляться в теоретические глубины, а сосредоточусь на практической части вопроса, больше внимания посвящая именно алгоритмам шифрования.
Начнём, как и положено с начала. А в начале всего стоит криптография – это такая наука, причём очень древняя и очень сложная. Исторически сложилось, что основной целью криптографии можно выделить обеспечение конфиденциальности т.е. защиты информации от посторонних личностей. И эта цель не менее актуальна и сейчас, но с развитием информационных технологий, а соответственно с развитием криптографии, начали появляться новые, но не менее важные цели этой науки, например к наиболее популярным можно отнести: аутентификацию т.е. проверку неизменности ключевых свойств объект (например авторство, дата создания, история изменений и т.д.) и целостность данных т.е. невозможность незаметного или не санкционированного изменения информации. С развитием криптографии, развивались и методы, применяемые этой наукой, для достижения результата. Если когда-то, давным-давно, достаточно было использовать алфавитный, а чуть позже цифровой шифр, и чем он был замудрённей тем и надёжней, потому что разгадывать его приходилось в ручную, то с появлением компьютеров, а соответственно серьёзных вычислительных мощностей, эти самые шифры канули в лету, ввиду их абсолютной уязвимости к анализу и перебору для выявления закономерностей, а соответственно разгадыванию секретного ключа т.е. самого шифра (этот процесс, кстати, принято называть криптоанализом) . Но кому-то очень умному пришло в голову использовать вычислительные мощности не только для разгадывания ключа, но и для самого шифрования. Именно так начали появляться алгоритмы шифрования в том понимании, в котором их знают сейчас.
Алгоритмы шифрования
И тут, человеки, как им свойственно, проявили немалую изобретательности и понавыдумывали столько, что если захочешь во всём этом разобраться, то пару институтов придется закончить. Но мы не в институте, да и нам не зачем в эти глубины вникать, а потому разберем основное.
В криптографии существует довольно много видов классификаций алгоритмов шифрования, но, что бы не забивать себе голову, наиболее приемлемо выделить три основных вида:
- симметричное
- асимметричное
- хеширование
Симметричное шифрование
Теперь вернемся к тому из-за чего собрались, а именно к самим алгоритмам. Симметричное шифрование – это такой способ шифрования когда для шифрования и расшифровывания используется один и тот же ключ, соответственно у кого есть ключ тот и может расшифровывать сообщение.
В свою очередь, само симметричное шифрование можно разделить на два подвида – это блочные и поточные шифры.
Блочный шифр – информация шифруется блоками данных фиксированного размера, как правило это степени 2 (64, 128 и т.д.), применяя к каждому блоку ключ в несколько раундов подстановки и перемешивания, достигая таким образом увеличения несоответствия битов между блоками начальных и зашифрованных данных. Именно так работают большинство современных алгоритмов шифрования, используя, для перемешивания и подстановки сеть Фейстеля или SP-сеть.
Поточный шифр – принцип работы тот же самый, что и у блочного, только на шифруемый текст предварительно накладывается последовательность случайных чисел и информация шифруется не блоками, а побитово, этот процесс, кстати, называется гаммированием, так вот если блочный шифр запустить в режиме гаммирования – получится потоковый. Правда если перегнуть с этой последовательностью случайных чисел – получишь абсолютно стойкий шифр – круто, но бесполезно.
Примеры наиболее распространённых симметричных шифров:
- DES — довольно старый алгоритм, разработанный IBM. Сейчас не используется в ввиду наличия неустраняемых уязвимостей.
- 3DES — более поздняя версия DES. Применяет алгоритм DES три раза, что делает его более безопасным, чем сам DES.
- AES — Advanced Encryption Standard. Это стандарт шифрования, принятый в США. В настоящее время он считается одним из наиболее сильных, использует 128-, 196- или 256-битный ключ и алгоритм Rijndael с 2001 года. Используется в WPA2, SSL/TLS и многих других протоколах, где важны конфиденциальность и скорость.
- RC4 — это пример шифра потоковой передачи, который разработан Рональдом Ривестом. Используется в VoIP и WEP.
- Blowfish — первый алгоритм шифрования Брюса Шнайера. Он использует переменную длину ключа и считается одним из самых безопасных.
- Twofish — более сильная версия Blowfish с 128-битным или 256-битным ключом, основной конкурент AES. Используется в Cryptcat, OpenPGP.
- Кузнечик – разработан ФСБ РФ и в 2015 году принят в качестве стандарта в ГОСТ Р 34.12-2015. В том же году была доказана его неустойчивость к методу обратного проектирования, а чуть позже оказалось, что его алгоритм генерации S-блока перерисован с Белорусского шифра BelT разработанного в 2007 году. Ещё чуть позже его же взломали атакой “встреча посередине”.
Асимметричное шифрование
Асимметричное шифрование или шифрование с открытым ключом – в подобных системах используется два ключа – открытый и закрытый, математически связанные между собой, при этом открытый ключ не от кого не прячется, может передаваться не защищенными каналами связи и используется для шифрования данных и проверки электронной цифровой подписи. А вот для генерации цифровой подписи и расшифровки данных используется закрытый т.е. секретный ключ. Простыми словами это работает так: если мы хотим получить от кого-то некую секретную информацию, мы передаём ему открытый ключ, с использованием которого эта информация будет зашифрована. При этом мы не боимся что злодеи перехватят наш ключ, ведь с ним можно только зашифровать данные, но не расшифровать. После того как наш собеседник получает ключ, он шифрует сообщение и отправляет нам, а получив мы расшифровываем его с использованием секретного ключа, который мы тщательно хранили, никому не передавали и не показывали, и, как бонус, мы ещё и проверяем не изменил ли кто данные в процессе пересылки и пришли ли они от нужного нам адресата. Сам понимаешь, такая схема многократно надежней чем с симметричным шифрованием.
Наиболее распространённые асимметричные алгоритмы шифрования:
- RSA (Rivest, Shamir и Adleman) – первая и наиболее распространённая криптосистема которая стала пригодной и для шифрования, и для цифровой подписи, использует факторизацию очень больших простых чисел в качестве отношения между двумя ключами.
- Схема Эль-Гамаля (Elgamal) -криптосистема основанная на вычислительной сложности проблемы дискретного логарифмирования. Долгое время была стандартом в США и России.
- Алгоритм Диффи — Хеллмана – криптографический протокол, позволяющий двум и более сторонам получить общий секретный ключ, используя незащищенный от прослушивания канал связи.
- DSA (Digital Signature Algorithm) — криптографический алгоритм с использованием открытого ключа для создания электронной подписи, но не для шифрования. Подпись создается секретно, но может быть публично проверена. Это означает, что только один субъект может создать подпись сообщения, но любой может проверить её корректность. Алгоритм основан на вычислительной сложности взятия логарифмов в конечных полях. Является частью стандарта цифровой подписи США.
Хеширование
И третий, интересующий нас вид шифрования, это хеширование его ещё называют хеш-функция или функция свёртки – это одностороннее шифрование, при котором, с использованием алгоритма хеширования, начальные данные, независимо от их длины, превращаются в битовую строку фиксированной длины. Именно эта битовая строка и называется хешем. Идеальным считается такой алгоритм хеширования, который делает невозможным обратное преобразование хеша в данные. Т.е. имея на руках хеш – невозможно узнать начальные данные. При этом, для применения на практике, как раз начальные данные знать и не нужно, нужно знать, что с использованием определенного алгоритма генерация хэша от какого-то текста создает тот же хэш. Соответственно, мы можем хранить, например пароль, в виде хеша и даже если его украдут – узнать пароль не смогут, а когда пользователь вводит пароль то хеш введенного пароля сверяется с сохраненным хешем, и если они совпали – значит пароль правильный. По такому же принципу может проверяться целостность файлов.
Самая главная проблема хеш-функций называется коллизией, суть её в том что хеши не всегда уникальны и иногда, правда очень редко, случаются ситуации, что два разных входных блока дают одинаковый хеш. Именно поэтому основной уязвимостью алгоритмов хеширования считается построение коллизий т.е. их искусственное создание. Для примера именно подобную уязвимость эксплуатировал червь Stuxnet в Windows, получая от системы абсолютно белый сертификат и таким способом становясь неуязвимым для антивирусов.
Примеры алгоритмов хеширования: MD4, MD5, SHA1, SHA2.
Ну, а на этом нашу ознакомительную экскурсию в мир криптографии можно считать оконченной. Не забывай возвращаться, нам нужно узнать ещё очень много.