МЕНЮ

Криптография и шифрование на Python. Основы для начинающихОкружающий нас мир стремительно меняется с каждой секундой. Информации вокруг становится всё больше и больше, и вот уже даже люди бесконечно далёкие от IT технологий начинают задумываться о конфиденциальности и защите своей информации. Но, как **ять можно её защитить, когда вокруг одни сплошные утечки? Как известно, краеугольным камнем защиты, является пресловутая криптография. Она же наука о способах и методах шифрования данных посредством использования хитро**ных алгоритмов. Zip File, мамкины хаЦкеры. Вы на канале самого душного IT-спеца всея интернета, меня зовут Денчик, и я тот самый сын подруги вашей мамули, который шарит за эти компуктеры. Мы с вами уже не первую неделю душим Питона и, кажется, настала пора наконец затронуть очень важный вопрос работы со строками и криптографическими примитивами.

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

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

В рамках обучения, авторы, в числе которых матёрые преподаватели-практики, из таких крупных международных компаний, как Alibaba Cloud, Tinkoff, QIWI и других, не менее популярных конгломератов, научат вас искать уязвимости, предотвращать угрозы и обеспечивать комплексную безопасность IT-систем.

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

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

Речь идёт о материалах по популярному языку запросов SQL, системе контроля версий Git, и конечно же, английском с упором на IT-специалистов различного уровня. 

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

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

Кстати, весь пройдённый материал, навсегда останется у вас в кабинете. А сразу после защиты итогового проекта, консультант из карьерного центра Skillbox подберёт для вас наиболее подходящие варианты вакансий на рынке труда.

Организует собеседования в топовые компании и в конечном итоге поможет устроиться на работу. Напомню, что согласно статистике, зарплата начинающего специалиста по ИБ начинается от 80 000 рублей, а при должной сноровке уже через год будете получать не менее 150.

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

Ссылка на практический курс по кибербезопасности от SkillBox будет в описании. А по промокоду «Курец» (эт я), вы, как преданные камрады движения сможете получить 50% скидку. Достаточно лишь назвать его менеджеру SkillBox, и дело в шляпе.

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

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

На а мы возвращаемся к основному сюжету про криптографию на Питоне. Если вы так или иначе взаимодействуете с данными, вне зависимости от выбора языка программирования вам предстоит работать со строками. Но изначально это не те строки, что воспринимаются Python’ом, как таковые.

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

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

Несмотря на то, что строки не являются математическими объектами, над ними также разрешен ряд операций. В частности - сложение (конкатенация) и умножение на число (репликация). Т.е. можно умножить строчку с текстом на 2 и получить два набора символов. Это очень удобно.

Бывает, что возникает ситуация, когда в тексте требуется использовать несколько типов кавычек, либо «непечатные» символы. В этом случае используют экранирование (escape character) с помощью символа \. 

Для того, чтобы обратится сразу к части строки или списка, можно использовать срезы (slice). Для этого внутри оператора необходимо указать нужный диапазон. Причём эта история работает даже в обратном порядке.

Если указана только одна граница диапазона, то вторая будет неявно дополнена максимальным или минимальными индексом. Общем то ничего сложного. Математика 5 класс.

Шифры

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

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

В самом начале мы вычисляем длину нашей строки. Затем, в цикле перебираем в обратном порядке строку plain_text и добавляем символы в начало ciphertext. Но почему же всё-таки данный пример по факту не является шифром?

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

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

Т.е. если мы подразумеваем, что всё в сообщении смещается на 1 символ, то буква на месте буквы С будет буква Т. Буква Ф съедет на букву Х и т.д. Каким образом хаЦкер перехвативший шифрограмму, защищённую подобным способом, может её ломануть?

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

В данном случае ключом дешифровки является информация о том, что мы сдвигаем всё равно на 10 символов. Т.е. в коде мы в самом начале мы задаем ключ и алфавит.

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

Конечно, самый простой способ дешифровки этой истории – это брутфорс. Если злоумышленник догадается, что используется только алфавит. А он, как мы знаем конечен, то он просто переберёт все возможные сдвиги по символам до тех пор, пока не получит у себя на экране заветную фразу.

Более подробно про метод брутфорса, я рассказываю в своём обучающем материале «Библия вардрайвинга». Там вы найдёте наиболее эффективный словарь для этого дела и программу, которая позволит вам по полной погрузиться в движуху грубого взлома.

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

Хэширование

Ну и напоследок поговорим о применении на практике уже готовых криптографических примитивов: хэшей и шифровании AES типа. Вообще процесс хэширования, является основой современной криптографии.

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

В мире Python вы можете захэшировать любые неизменяемые типы данных. Т.е. передать внутрь функции ваш объект и посчитать от него какую-то строчку. Для использования в языке Python нужно выполнить: import hashlib. 

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

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

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

На самом деле это всё очень круто для понимания базы, но увы данный метод в 2022 году считается устаревшим и его запрещено применять в практической деятельности в виду его низкой криптоустойчивости.

В данном видео я не буду вдаваться в причины этой истории. Если интересно – загуглите понятие «Радужные таблицы» и почитайте, если есть свободное время. В двух словах – это очень хитро**нный способ для перебора. 

Но что спрашивается тогда юзать, если MD5 не канает? Для решения производственных задач сейчас повсеместно рекомендуется использовать различные вариации SHA (ЭсЭйчЭй).

Особенность данного способа заключается в том, чтобы не тупо брать исходный текст и отдавать его в ХЭШ функцию, а ещё «досаливать» сверху. Досаливать означает добавлять сверху ещё один постоянный кусок.

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

AES шифрование 

Окей. Напоследок затронем стандарт AES. Эта история представляет собой симметричный алгоритм блочного шифрования. Симметричный означает, что шифрование и дешифрование происходит одним и тем же ключом.

Ну а блочный говорит нам о том, что шифрование информации происходит определёнными блоками. Для данного алгоритма в языке Python используются библиотеки pyCrypto и pyCryptodome. 

Как показывает практика, с использованием этих модулей могут возникнуть проблемы. Если система выдаёт сообщение об ошибке аля: “No module named 'Crypto'”, нужно полностью удалить модули Crypto, pycrypto, cryptodome и повторить установку.

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

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

Ну и т.к. AES требует пароль длины 16 или 32, то сверху необходимо применить хэш. В итоге у нас получится следующий вариант скрипта для шифрования текста. И вот такой для его дешифровки.

Окей, друзья. Нынче мы рассмотрели использование языка Python для работы с простыми шифрами и познакомились с базовыми элементами прикладной криптографии.

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

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

Последний релиз «GIT – это просто!» представляет собой материал, написанный в соавторстве со специалистом по данной теме, и отлично подойдёт, как опытным прогерам, так и начинающим скриптописцам на любом языке.

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

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

Берегите себя и свою инфу. Шифруйте её максимально продвинутыми и устойчивыми к брутфорсу способами, никогда не оставляйте свои личные данные на левых ресурсах. И будет вам счастье. До новых встреч, мои кайфные друже. Всем пока.

Не можешь понять, куда делись видео по взломам и хакингу? Они переехали в наш уютный паблик в телеге

telegram chanel

Хочешь больше контента? Подписывайся на YouTube-канал!

Курс «Диплом за неделю»

Пособие «Библия вардрайвинга»

Курс Cisco «CCNA: Introduction to Networks»

© 2022. IT-спец. Денис Курец.