Кодирование и шифрование
Base64, шестнадцатеричный формат и шифры
«Кодирование и шифрование» — бесплатный урок Ethical Hacking Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ethical Hacking Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ethical Hacking Academy содержит 4 уроков всего.
Две разные цели
Кодирование и шифрование похожи, поскольку оба процесса преобразуют данные в нечто, на первый взгляд нечитаемое, но их цели совершенно различны.
- Кодирование изменяет формат данных, чтобы их можно было безопасно хранить или передавать.
- Шифрование защищает конфиденциальность данных, чтобы их мог прочитать только обладатель ключа.
Путаница между этими понятиями — одна из самых распространенных ошибок начинающих специалистов по безопасности.
Кодирование обратимо для любого человека
При кодировании используется общедоступная, хорошо известная схема. Секрет отсутствует. Любой, кто знает схему, может мгновенно декодировать данные.
К распространенным способам кодирования относятся Base64, hex, URL encoding и ASCII. Они нужны, чтобы двоичные данные можно было передавать по каналам, поддерживающим только текст, например по электронной почте или в заголовках HTTP.
Base64 на практике
Base64 представляет двоичные данные с помощью 64 печатных символов (A-Z, a-z, 0-9, + и /). Объем данных увеличивается примерно на 33 процента. Конечный символ = служит дополнением.
Декодировать данные можно на любом компьютере под управлением Linux, причем ключ вообще не нужен:
echo 'aGVsbG8gd29ybGQ=' | base64 -d
# Output: hello worldКак распознать Base64
Как хакер, Вы будете повсюду встречать Base64: в токенах JWT, файлах cookie, конфигурационных файлах и похищенных данных. Вот признаки того, что строка представляет собой Base64:
- Содержит только
A-Za-z0-9+/и, возможно, символы дополнения=. - Длина кратна 4.
- После декодирования получается читаемый текст или узнаваемые заголовки файлов.
Всегда сначала пробуйте декодировать подозрительные строки, прежде чем предполагать, что они зашифрованы.
Шестнадцатеричное кодирование
Шестнадцатеричное кодирование представляет каждый байт двумя символами (0-9, a-f). Его широко используют в сетевых захватах, дампах памяти и результатах вычисления хешей.
Значения байтов 0x68 0x69 образуют текст ASCII «hi».
echo -n 'hi' | xxd -p
# Output: 6869
echo '6869' | xxd -r -p
# Output: hiЧто добавляет шифрование: ключ
При шифровании применяются шифр и секретный ключ. Без ключа вычислительно невозможно обратить преобразование результата (шифротекста).
- Открытый текст = исходные читаемые данные.
- Шифротекст = зашифрованный результат.
- Ключ = секрет, управляющий шифрованием и расшифрованием.
При изменении ключа шифротекст полностью меняется.
Классические шифры: Цезарь
Шифр Цезаря сдвигает каждую букву на фиксированное число позиций. При сдвиге на 3 буква A превращается в D. Это лишь учебный пример: существует всего 25 возможных ключей, поэтому шифр легко взламывается перебором.
ROT13 — это шифр Цезаря со сдвигом на 13. Формально это шифр, но реальной безопасности он не обеспечивает.
echo 'hello' | tr 'a-z' 'd-za-c'
# Output: khoor (shift of 3)Современные шифры
В настоящем шифровании используются такие алгоритмы, как AES (симметричный) и RSA (асимметричный). Они опираются на большие ключи и сложные математические задачи, а не на секретность алгоритма.
Принцип Керкгоффса: криптосистема должна оставаться безопасной, даже если все сведения о ней, кроме ключа, общедоступны. Безопасность обеспечивается ключом, а не сокрытием алгоритма.
Шифрование выглядит случайным
Можно заметить важное различие: качественный шифротекст выглядит как случайный шум с высокой энтропией. Кодированные данные так не выглядят.
- Base64 для строки «hello» всегда дает
aGVsbG8=у любого пользователя. - Результат AES для «hello» меняется в зависимости от ключа и вектора инициализации, поэтому при каждом запуске получается другой результат.
Если декодирование строки дает читаемый текст без какого-либо ключа, данные были закодированы, а не зашифрованы.
Почему это важно для хакеров
Во время проверки Вы постоянно сталкиваетесь со скрытыми данными. Вопрос «это кодирование или шифрование?» помогает выбрать следующий шаг:
- Закодировано? Немедленно декодируйте — ключ не нужен. Учетные данные, скрытые в Base64, позволяют сразу добиться результата.
- Зашифровано? Найдите ключ, атакуйте управление ключами или ищите ошибки реализации.
Рассматривать кодирование как средство защиты — уязвимость, о которой Вам постоянно придется сообщать.
Обфускация — это третья категория
Помните о третьей категории: обфускации. Это намеренное усложнение чтения данных (минифицированный JS, упакованные двоичные файлы, XOR с фиксированным байтом) без настоящего шифра или управления ключами.
Как и кодирование, обфускация не обеспечивает настоящей конфиденциальности. Она лишь замедляет поверхностный анализ. Опытные специалисты регулярно выполняют обратное преобразование.
Быстрая проверка
Проверьте, насколько хорошо Вы поняли ключевое различие.
Итоги
Вы изучили важнейшее различие между кодированием и шифрованием:
- Кодирование (Base64, hex) обратимо для любого человека и изменяет только формат.
- Шифрование (AES, RSA) требует секретного ключа и защищает конфиденциальность.
- Обфускация скрывает данные, но не защищает их.
- Всегда сначала декодируйте подозрительные строки: шифротекст похож на случайный шум, а кодированные данные без ключа преобразуются в читаемый текст.
Далее Вы подробно изучите хеширование — одностороннее преобразование, отличное и от кодирования, и от шифрования.
Часто задаваемые вопросы
Урок «Кодирование и шифрование» бесплатный?
Да — полный текст урока «Кодирование и шифрование» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ethical Hacking Academy, подпишись на CoddyKit PRO. Курс Ethical Hacking Academy содержит 4 уроков всего.
Чему я научусь в уроке «Кодирование и шифрование»?
Base64, шестнадцатеричный формат и шифры Ты практикуешь Ethical Hacking Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Ethical Hacking Academy?
Предыдущий опыт не требуется. Ethical Hacking Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Кодирование и шифрование»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Ethical Hacking Academy?
Да. Каждый урок Ethical Hacking Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Кодирование и шифрование
- Хеширование
- Симметричное и асимметричное шифрование
- Взлом хешей