Итак, если рассматривать блокчейн Ethereum (сам блокчейн это L1 уровень), то существует два вида L2-решений — ZK-роллапы и Optimistic-роллапы.
🗣️ Для чего нужны роллапы
Роллапы (L2-решения) объединяют данные о транзакциях и выносят их за пределы основной сети. Вне сети транзакции упаковываются, проверяются и валидируются, а после уже готовые возвращаются на основной блокчейн (на L1-уровень).
Благодаря роллапам снижается нагрузка на основной блокчейн, что способствует росту скорости обработки транзакций и снижения комиссий → буст масштабируемости.
🔴 Optimistic-роллапы
В OP-протоколах все данные о транзакциях из L1 переносятся в L2, однако по умолчанию все транзакции считаются действительными (не мошенническими). Так роллап экономит время и ресурс, избегая проверки каждой транзакции.
Однако, в таких протоколах существует период оспаривания транзакции: одна из сторон сделки может подать апелляцию на предмет законности транзакции. В таком случае, законность транзакции может рассматриваться до двух недель, что с момента отправки средств очень большой период.
↔️ Роллапы с Zero-knowlegde proof (доказательство с нулевым разглашением)
ZK-роллапы отличается от OP-роллапов методом подтверждения законности транзакций. В отличии от OP, ZKP проверяет все транзакции на предмет мошенничества. Происходит это так:
Доказывающая сторона предоставляет верификатору математическое доказательство, которое может быть доступно только ему.
После получения доказательства верификатор подтверждает законность транзакции.
Вся прелесть ZKP в том, что во время проверки транзакции верификатор не может узнать, кто является отправляющей стороной и сколько у нее средств на счету. Это способствует сохранению конфиденциальности. Транзакции на базе ZK-роллапов обычно подтверждаются до трех часов.
К OP-роллапам относятся такие сети, как Arbitrum, Base и Optimism. На базе ZK-роллапов построены проекты Starknet, Linea и zkSync.
Больше интересного и полезного контента о криптовалютах и арбитраже в ТГ канале - КриптоМарс
В криптографических приложениях и криптовалютных кошельках есть критически важные компоненты, такие как генерация ключей, шифрование/дешифрование, подпись транзакций и.т.д. Эти компоненты должны быть основными целями для Фаззинг-тестирования. Использование Фаззинг-тестирования в криптографических приложениях и криптовалютных кошельках помогает выявлять и устранять уязвимости, повышая безопасность и надежность программного обеспечения.
Фаззинг-тестирование(или просто Фаззинг) — это метод тестирования программного обеспечения, который используется для выявления уязвимостей и ошибок путем подачи на вход программы случайных или специально сгенерированных данных. В контексте криптоанализа Фаззинг-тестирование применяется для проверки криптографических алгоритмов и систем на наличие слабых мест, которые могут быть использованы злоумышленниками.
Основная идея Фаззинга заключается в том, чтобы автоматически генерировать большое количество случайных или некорректных входных данных и подавать их на вход тестируемой системе. Затем анализируются результаты работы системы с этими данными, чтобы выявить неожиданные поведения, сбои или уязвимости.
Фаззинг-тестирование в криптоанализе может помочь обнаружить такие проблемы, как:
Буферные переполнения: Ошибки, возникающие при записи данных за пределы выделенной памяти.
Ошибки обработки исключений: Неправильная обработка неожиданных или некорректных данных.
Уязвимости в алгоритмах: Недостатки в реализации криптографических алгоритмов, которые могут быть использованы для взлома.
Этот метод является мощным инструментом для обеспечения безопасности криптографических систем и помогает разработчикам создавать более надежное и защищенное программное обеспечение.
Применение Фаззинг-тестирования к криптовалютным кошелькам имеет несколько преимуществ:
Обнаружение уязвимостей: Фаззинг помогает выявить уязвимости, которые могут быть использованы злоумышленниками для кражи средств или компрометации безопасности кошелька.
Повышение надежности: Тестирование с использованием случайных данных помогает выявить ошибки, которые могут привести к сбоям или некорректной работе кошелька, что в свою очередь повышает его надежность.
Автоматизация процесса тестирования: Фаззинг-тестирование можно автоматизировать, что позволяет проводить тесты более часто и эффективно, чем ручное тестирование.
Разнообразие тестовых сценариев: Фаззинг генерирует большое количество разнообразных тестовых сценариев, что помогает выявить ошибки, которые могли бы остаться незамеченными при использовании традиционных методов тестирования.
Улучшение безопасности: Регулярное Фаззинг-тестирование помогает разработчикам своевременно обнаруживать и устранять уязвимости, что повышает общий уровень безопасности криптовалютного кошелька.
Экономия времени и ресурсов: Автоматизированное Фаззинг-тестирование может сэкономить время и ресурсы, которые в противном случае были бы потрачены на ручное тестирование и отладку.
Фаззинг может помочь обнаружить следующие типы уязвимостей:
Ошибки обработки ввода: Кошельки могут некорректно обрабатывать входные данные, такие как адреса, суммы транзакций или ключи. Фаззинг может выявить случаи, когда некорректные данные приводят к сбоям или неправильной работе кошелька.
Переполнение буфера: Если Биткоин кошелек не проверяет длину входных данных, это может привести к переполнению буфера, что в свою очередь может быть использовано злоумышленниками для выполнения произвольного кода.
Уязвимости в парсерах: Кошельки часто используют парсеры для обработки данных транзакций и других входных данных. Фаззинг может выявить ошибки в этих парсерах, которые могут привести к сбоям или уязвимостям безопасности.
Ошибки в криптографических операциях: Некорректная обработка данных в криптографических операциях может привести к утечке приватных ключей или другим критическим уязвимостям. Фаззинг может помочь выявить такие ошибки.
Уязвимости в API: Если Биткоин кошелек предоставляет API для взаимодействия с другими приложениями, Фаззинг может выявить уязвимости в этих интерфейсах, которые могут быть использованы для несанкционированного доступа или выполнения нежелательных операций.
Ошибки в обработке транзакций: Фаззинг может выявить ошибки в логике обработки транзакций, которые могут привести к неправильному выполнению транзакций или даже к потере средств.
BitcoinChatGPT и выбор инструмента для Фаззинга:
Существует множество инструментов для Фаззинг-тестирования, таких как AFL (American Fuzzy Lop), libFuzzer, Honggfuzz и другие. Фаззинг-тестирование должно быть частью непрерывного процесса разработки и тестирования. Регулярное проведение Фаззинг-тестов поможет своевременно выявлять новые уязвимости и поддерживать высокий уровень безопасности криптовалютного кошелька. В начале 2024 года широкую популярность получили современные технологии которые развивают предварительно обученную модель Bitcoin ChatGPT и находят эффективные способы решение сложных криптографических задач, лежащих в основе метода Фаззинг-тестирования. Рассмотрим пример построение структуры уязвимой Raw транзакции в котором используется модуль BitcoinChatGPT
BitcoinChatGPT №3 Fuzzing Vulnerability Algorithm
Эти инструменты могут помочь выявить уязвимости и улучшить безопасность криптовалютных кошельков.
AFL (American Fuzzy Lop)
Это один из самых популярных инструментов для Фаззинг-тестирования. Он может быть настроен для тестирования различных типов программного обеспечения, включая криптовалютные кошельки. American Fuzzy Lop (AFL) — это мощный инструмент для Фаззинг-тестирования, который обычно используется для нахождения уязвимостей в программном обеспечении. Хотя AFL в основном используется через командную строку, вы можете написать Python-скрипт для автоматизации его запуска. Для начала, убедитесь, что у вас установлен AFL. Если нет, вы можете установить его, следуя инструкциям на официальном сайте AFL.
На YouTube можно найти множество полезных видеороликов, которые помогут вам лучше понять и использовать AFL. Вот несколько рекомендаций:
“American Fuzzy Lop (AFL) Tutorial” — В этом видео обычно объясняются основы использования AFL, как его установить и начать работу с ним.
“Fuzzing with AFL: A Practical Guide” — Это видео может предложить практическое руководство по Фаззинг-тестированию с использованием AFL, включая примеры и демонстрации.
“Advanced Fuzzing Techniques with AFL” — В этом видео могут быть рассмотрены более продвинутые техники и стратегии для эффективного использования AFL.
“AFL Fuzzing: Finding Bugs in Real-World Applications” — Это видео может показать, как использовать AFL для нахождения уязвимостей в реальных приложениях, с примерами и анализом.
“Setting Up AFL for Fuzz Testing” — В этом видео может быть пошагово показано, как настроить AFL для Фаззинг-тестирования на вашей системе.
Эти видеоролики помогут вам лучше понять, как использовать AFL для тестирования безопасности вашего программного обеспечения.
libFuzzer
Это библиотека для Фаззинг-тестирования, которая интегрируется с LLVM. Она может быть использована для тестирования программ на C и C++. LibFuzzer — это инструмент для fuzz-тестирования, который обычно используется с C/C++ программами. Однако, вы можете использовать Python для автоматизации запуска LibFuzzer.
“Introduction to Fuzzing with libFuzzer” – Этот видеоролик предоставляет базовое введение в использование libFuzzer для начинающих.
“Fuzzing with libFuzzer and AddressSanitizer” – В этом видео объясняется, как использовать libFuzzer вместе с AddressSanitizer для обнаружения уязвимостей в коде.
“Advanced Fuzzing Techniques with libFuzzer” – Этот ролик подходит для тех, кто уже знаком с основами и хочет углубить свои знания.
“Google Testing Blog: libFuzzer Tutorial” – Видеоурок от команды Google, который охватывает различные аспекты использования libFuzzer.
“Fuzzing C/C++ Programs with libFuzzer” – В этом видео рассматриваются конкретные примеры и демонстрируется процесс Фаззинга C/C++ программ.
Эти видеоролики помогут вам лучше понять, как использовать libFuzzer для тестирования и улучшения безопасности вашего кода.
Honggfuzz
Это еще один мощный инструмент для Фаззинг-тестирования, который поддерживает различные типы программного обеспечения и может быть использован для тестирования криптовалютных кошельков. Honggfuzz — это мощный инструмент для fuzz-тестирования, который можно запускать из Python с помощью модуля subprocess.
“Fuzzing with Honggfuzz” – Этот видеоролик может предоставить вам общее представление о том, как начать работу с Honggfuzz, включая установку и базовые команды.
“Advanced Fuzzing Techniques with Honggfuzz” – В этом видео могут быть рассмотрены более продвинутые техники и настройки для использования Honggfuzz, что может быть полезно для более опытных пользователей.
“Honggfuzz Tutorial for Beginners” – Если вы только начинаете, этот видеоролик может быть отличным стартом, так как он, вероятно, охватывает основные концепции и шаги по настройке.
“Integrating Honggfuzz with CI/CD Pipelines” – Это видео может показать, как интегрировать Honggfuzz в ваши процессы непрерывной интеграции и доставки, что может быть полезно для автоматизации тестирования.
OSS-Fuzz
Это сервис от Google, который предоставляет инфраструктуру для непрерывного Фаззинг-тестирования с открытым исходным кодом. Он поддерживает множество проектов и может быть настроен для тестирования криптовалютных кошельков. OSS-Fuzz помогает находить ошибки в программном обеспечении с открытым исходным кодом с помощью fuzz-тестирования. Однако, OSS-Fuzz не запускается напрямую через Python-код. Вместо этого, вы должны настроить проект для использования OSS-Fuzz, а затем запустить его через командную строку.
Рассмотрим ример того, как можно настроить и запустить fuzz-тестирование для вашего проекта с использованием OSS-Fuzz.
“OSS-Fuzz: Continuous Fuzzing for Open Source Software” – Этот видеоролик от Google Open Source рассказывает о том, как работает OSS-Fuzz и как он помогает улучшать безопасность и стабильность открытого программного обеспечения.
“Fuzzing with OSS-Fuzz” – В этом видео подробно объясняется, как начать использовать OSS-Fuzz для вашего проекта, включая настройку и интеграцию.
“Google OSS-Fuzz: Continuous Fuzzing for Open Source Software” – Презентация от Google, которая охватывает основные концепции и преимущества использования OSS-Fuzz.
“Fuzzing 101: Getting Started with OSS-Fuzz” – Учебное пособие для начинающих, которое шаг за шагом объясняет, как начать работу с OSS-Fuzz.
“Integrating Your Project with OSS-Fuzz” – В этом видео рассматриваются практические аспекты интеграции вашего проекта с OSS-Fuzz, включая примеры кода и советы по устранению неполадок.
Radamsa
Это генератор случайных данных, который может быть использован для Фаззинг-тестирования. Он прост в использовании и может быть интегрирован в различные тестовые сценарии. Radamsa — это инструмент для генерации случайных данных (fuzzing), который может быть полезен для тестирования программного обеспечения.
“Fuzzing with Radamsa” – В этом видео объясняется, как использовать Radamsa для Фаззинга (тестирования программного обеспечения на наличие уязвимостей).
“Introduction to Fuzz Testing with Radamsa” – Введение в Фазз-тестирование с использованием Radamsa, включая основные принципы и примеры.
“Radamsa: A Fuzzing Tool for Security Testing” – Обзор возможностей Radamsa и его применения в области безопасности.
“How to Use Radamsa for Fuzz Testing” – Пошаговое руководство по использованию Radamsa для Фазз-тестирования.
Echidna
Это инструмент для Фаззинг-тестирования смарт-контрактов на языке Solidity, который может быть полезен для тестирования кошельков, взаимодействующих с Ethereum.
“Echidna: Fuzzing for Ethereum Smart Contracts” – Этот видеоролик объясняет основы использования Echidna для тестирования смарт-контрактов на Ethereum.
“Fuzzing Smart Contracts with Echidna” – В этом видео подробно рассматривается процесс настройки и запуска Echidna для Фаззинга смарт-контрактов.
“Echidna: A Fuzzer for Ethereum Smart Contracts” – В этом видео обсуждаются различные аспекты и возможности Echidna, а также примеры использования.
“Smart Contract Security: Fuzzing with Echidna” – Видеоролик, который фокусируется на безопасности смарт-контрактов и использовании Echidna для нахождения уязвимостей.
Peach Fuzzer
Коммерческий инструмент для Фаззинг-тестирования, который поддерживает множество протоколов и форматов данных. Он может быть использован для тестирования безопасности криптовалютных кошельков. Peach Fuzzer — это популярная платформа Фаззинга, используемая для проверки безопасности и надежности программного обеспечения путем предоставления неожиданных или случайных входных данных.
“Peach Fuzzer Tutorial” – В этом видео обычно объясняются основы использования Peach Fuzzer, включая установку и настройку.
“Fuzzing with Peach: A Beginner’s Guide” – Это видео может быть полезно для тех, кто только начинает работать с Peach Fuzzer и хочет понять основные концепции и методы.
“Advanced Peach Fuzzer Techniques” – В этом видео рассматриваются более сложные аспекты использования Peach Fuzzer, такие как создание собственных тестов и анализ результатов.
“Peach Fuzzer in Action: Real-World Examples” – Здесь можно увидеть, как Peach Fuzzer используется для нахождения уязвимостей в реальных приложениях.
“Setting Up a Fuzzing Environment with Peach” – Это видео поможет вам настроить рабочую среду для эффективного использования Peach Fuzzer.
Peach Fuzzer не написан на Python, и для его запуска обычно требуются файлы конфигурации и определенные шаги настройки.
Чтобы запустить Peach Fuzzer, вам обычно необходимо создать XML-файл Peach Pit, который определяет структуру данных, которые вы хотите Фаззить, и целевое приложение. Затем вы используете инструмент командной строки Peach для выполнения процесса Фаззинга.
Заключение:
Фаззинг представляет собой мощный метод тестирования безопасности, который может значительно повысить устойчивость криптовалютных систем, таких как Bitcoin. В ходе исследования были выявлены потенциальные уязвимости и слабые места в программном обеспечении Bitcoin, что подчеркивает необходимость постоянного мониторинга и улучшения безопасности. Применение фаззинга позволяет не только обнаруживать ошибки на ранних стадиях разработки, но и предотвращать возможные атаки, что особенно важно в условиях растущей популярности и значимости криптовалют. В будущем, интеграция фаззинга в стандартные процедуры тестирования может стать ключевым шагом к обеспечению надежности и безопасности децентрализованных финансовых систем.
8. “Fuzzing Ethereum Smart Contracts” Roberto Ponte and Miguel Correia INESC-ID, Instituto Superior Tecnico, Universidade de Lisboa / Iberia Medeiros LaSIGE, Faculdade de Ciencias, Universidade de Lisboa.
Данный материал создан для портала CRYPTO DEEP TECH для обеспечения финансовой безопасности данных и криптографии на эллиптических кривых secp256k1 против слабых подписей ECDSA в криптовалюте BITCOIN. Создатели программного обеспечения не несут ответственность за использование материалов.
В 1808 г. Бонапарт объявил конкурс: требовалось изобрести некое средство, позволявшее читать донесения и реляции в полной темноте. Наполеон посчитал, что это позволит оперативно менять боевые задачи под самым носом противника и в самое неожиданное время. Систему кодирования, получившую название "ночная азбука", разработал французский артиллерийский капитан и криптограф Николя Шарль Мари Барбье. Она представляла собой систему фонетической записи языка при помощи "квадрата Полибия", в которой каждый звук изображался двузначным кодом, в соответствии с его местом в таблице.
Кодировка одного знака состояла из двух столбцов точек: первый столбец - место знака в воображаемом квадрате Полибия по вертикали, второй столбец по горизонтали. Точки формировались на бумаге при помощи специального штампа, чтобы полученный рельеф легко читался пальцами. Для новой формы письма Барбье изобрел особые инструменты: планшет для получения отпечатков, шило и ручную направляющую, чтобы точки совпадали по вертикальной прямой линии.
Однако, "ночную азбуку" Барбье военные не оценили. Она оказалась слишком сложна для восприятия личного состава. Зато система заинтересовала ученика специального учебного заведения для слепых в Париже. Звали мальчика Луи Брайль. Да, тот самый - изобретатель шрифта для слепых
Если погрузиться в этимологию слова "крипта", то в конечном итоге мы попадаем в лихие 90-е года, когда набирало популярность движение шифропанков.
Шифропанки топили за анонимность и конфиденциальность. Они придумывали способы шифровки сообщений, и даже общались таким образом.
Помимо шифропанков были еще и криптоанархисты. Да, даже такие были. Но это тема для следующей статьи. К чему я клоню: есть такая наука, называется криптография.
Наука посвящена шифровке и кодировании сообщений, для предотвращения перехвата и манипуляции украденной информации.
Отсюда и берёт свое начало история с криптовалютами. Люди хотели создать систему, в которой можно пользоваться электронными деньгами безопасно и анонимно.
📕 Что мы имеем сейчас
В настоящее время большинство из нас покупает крипту на биржах. Возьмём к примеру Binance, это CEX-биржа, то есть присутствует центральная власть, которая регулирует всю работу. В DEX-биржах единого управляющего звена нет, вместо него регулятором выступают смарт-контракты.
Чтобы торговать на Binance нужно пройти KYC-верификацию. Это означает что вы должны предоставить бирже свои документы удостоверяющие личность. На этапе верификации начинается деанон криптана.
🗿 На бирже знают кто я такой. Но как они узнают какой кошелек принадлежит мне?
Здесь уже сама концепция блокчейна позволяет это узнать. Из-за того что вся история транзакций находится в открытом доступе, не составляет труда посмотреть, куда вы со своего биржевого аккаунта отправляете купленные активы.
Посмотрели в обозревателе адрес кошелька-получателя — узнали его баланс и установили личность владельца. Понятно, что посторонний человек так сделать не сможет, так как ваша персональная информация хранится у биржи.
Но если вами заинтересуются правоохранительные органы, то биржа с большой вероятностью будет сотрудничать с ними и предоставит всю необходимую информацию. А может даже заморозить счета на вашем биржевом кошельке. +1 фобия 😱
Также стоит отметить, что от утечек данных с биржи и взломов никто не застрахован (яркий тому пример — FTX). +1 фобия 😱
😒 Я хочу оставаться анонимным. Как быть?
Некоторых людей реально беспокоит тот факт, что их смогут деанонимизировать, так как это создаёт риски потери их крипты. Если злоумышленник знает, сколько у вас есть крипты, то он может попытаться присвоить ее себе посредством фишинга, социальной инженерии, брутфорса и так далее.
Если хотите сохранять анонимность, то вот некоторые советы:
пользуйтесь VPN/Proxy.
используйте DEX-биржи, так как там в большинстве случаев не нужна верификация.
если хотите пообсуждать крипту и блокчейн в соцсетях, то используйте сторонний аккаунт, который никак не связан с вами в настоящей жизни.
не нужно лишний раз светить публичным адресом своего кошелька. Про сид-фразу я думаю и так понятно — ее показывать вообще никому нельзя.
Больше интересного и полезного контента о криптовалютах и арбитраже в ТГ канале - КриптоМарс
Вы слышали о кладе Томаса Бейла? Двести лет назад золотоискатель Бейл спрятал где-то в Америке клад из серебра, золота и драгоценных камней – и оставил об этом три зашифрованных документа. Второй документ удалось расшифровать, а вот первый и третий пока никому не дались. Многие до сих пор мечтают найти этот клад (между прочим, его стоимость примерно 30 миллионов долларов).
Кстати, не хотите попытать счастья? Местоположение клада – вот оно, надо только суметь прочитать...
А знаете ли вы, чем прославил своё имя математик Христиан Гольдбах?
Тем, что в в 1742 году сформулировал гипотезу, истинность которой общепризнана, хотя за два с половиной столетия никому не удалось её доказать. Гипотеза очень простая:
(Может быть, вы докажете? )
Простое число – это натуральное число, которое делится только на само себя и на единицу. (Результатом деления его на любое другое число будет дробь.) Почему гипотезу Гольдбаха не удаётся доказать? Ведь очевидно, что 7 является суммой простых чисел 3, 2 и 2 – и так далее?
Вот именно – «и так далее». Можно заниматься подобными вычислениями годами, даже десятилетиями и убеждаться, что каждое новое нечётное положительное целое число, найденное вами, будет соответствовать гипотезе. Но!.. никто ещё не предложил убедительных доказательств того, что не существует нечётного положительного целого числа, которое не является суммой трёх простых чисел. Почему? Потому что нечётных чисел бесконечное множество и доказать верность гипотезы для каждого из них невозможно...
А знаете ли вы, что Гольдбах жил и работал в России... кем?
Ну-ка угадайте!.. (Напишите, кто уже догадался.)
Гольдбах служил при коллегии иностранных дел, то есть, говоря языком современным – в МИДе. Он был статским советником – это генеральский чин! А в 1760 году Гольдбах был пожалован в тайные советники с огромным по тем временам жалованием в 4500 рублей. За что такие деньги и почести? Математику? Да ещё в министерстве иностранных дел?
...За то, что Гольдбах блестяще владел искусством дешифровки. Секретные письма прусских, австрийских, французских послов и министров для него были «семечками». Русская дипломатическая служба читала тайную переписку, была в курсе самых мелких подробностей при заграничных королевских дворах, и Россия извлекала из этого огромную пользу – и во время войны, и во время мира.
Дешифровкой дипломатической переписки также занимались и другие известные математики – Даниил и Николай Бернулли, Леонард Эйлер, Павел Шиллинг (попутно он изобрёл ещё и электрический телеграф собственной конструкции). Вот вам и математики на разведывательной службе!
А знаете ли вы, для чего был сконструирован первый в мире цифровой компьютер – «прадедушка» всех современных ноутбуков, десктопов и планшетов? Случилось это в 1943 году, и был этот компьютер предназначен для «взлома» американцами шифров – прежде всего немецкого и японского, но также и советского, и даже британского. Знать тайны союзников иногда не менее важно, чем тайны врагов, знаете ли... А американский математик Клод Шеннон после войны написал целую книгу, которая так и называется – «Теория связи в секретных системах», и книга эта не про плащи и кинжалы, не про яды и револьверы, а математика, математика, снова математика!
Шведский математик Арне Берлинг в середине 30-х годов прошлого века, перед самой войной, сумел «взломать» советскую систему секретной связи. Эту информацию во время Зимней Войны шведы передавали финнам – и те этой информацией пользовались чрезвычайно умело! Финское командование знало о том, что советские бомбардировщики взлетают с аэродромов ещё до взлёта – и советская авиация сбрасывала бомбы по совершенно пустым целям. С помощью этой информации финны смогли нанести нашей армии тяжёлое поражение под Суомусалми и захватить большое количество военной техники и имущества. Вот что может сделать всего лишь один-единственный математик! И пока наша разведка не догадалась, что финны нас «тотально прослушивают», нашим войскам было очень нелегко...
Вообще, «секретные сообщения» изучают две разные науки. В чём-то схожие, в чём-то совсем непохожие друг на друга. Одна изучает именно шифры – буквенные и цифровые системы секретной передачи данных. Она называется «криптография». Вторая изучает не только буквы и цифры, но и вообще технику секретной передачи данных, создание скрытых сообщений. Она называется «стеганография».
Понимаете разницу? Зашифровать тайное донесение – задача криптографии. А вот искусно зашить это донесение в сапог или разрезать на части и спрятать в горсти пустых внутри грецких орехов в продуктовом мешке – это уже стеганография.
Криптография и стеганография возникли параллельно, примерно в одно и то же время. Сложно сказать, кто был изобретателем первых «секретных систем передачи данных» – древние военные, жрецы, ремесленники, астрологи, врачи? Скажем, древний мастер знает рецепт изготовления особенной краски – яркой и стойкой. Но рецепт этой краски необходимо держать в тайне, иначе её начнут делать все подряд! И вот мастер придумывает особые значки и записывает рецепт «тарабарской азбукой». Или изобретает невидимые чернила. Или прячет буквы рецепта между другими буквами!
Вы, наверное, видели когда-нибудь, как пишут арабскими буквами? Для непосвящённого искусная арабская «вязь», особенно древняя (куфическая) – это бессмысленный набор линий, точек и палочек. Но в этом узоре может быть спрятан самый настоящий текст! В Азербайджане, в столице государства, в Баку, находится замечательный памятник архитектуры – дворец Ширван-шахов. Мавзолей, находящийся внутри дворца, украшает торжественная арабская надпись:
Величайший султан, великий ширваншах, тёзка пророка Аллаха, защита веры Халиль-Улла, да увековечит Аллах его царство и власть, приказал выстроить светлую гробницу для своей матери и своего сына, да помилует их Аллах. Восемьсот тридцать девятый год [1435 по нашему исчислению].
Но султан, сами понимаете, сам ничего не строил. Долгое время считалось, что имя строителя мавзолея утрачено – но в 1954 году архитекторы приставили к одному из декоративных медальонов по бокам от главного входа зеркало – и прочли другую, скрытую надпись!
Аллах, Мухаммад Али, архитектор
Узнай султан о том, что мастер посмел оставить свой «автограф» на стене мавзолея, рядом с именем султана, бедняге Мухаммаду Али немедленно отрубили бы голову. Но архитектор был хитёр и искусно «врисовал» свою монограмму в орнамент, так что почти пятьсот лет никто такого не подозревал!
Усыпальница Ширваншахов в Баку. В орнаменте на фасаде вписано имя архитектора
Вот такие вот «спрятанные», «хитрые» надписи изучает стеганография. Ну, а если вы знакомы со сборником рассказов о Ленине писателя Михаила Зощенко, то должны помнить оттуда забавный рассказ «Иногда можно кушать чернильницы». Ленин не шифровал текст (криптография), он писал его молоком – то есть невидимыми, «симпатическими» чернилами (стеганография).
Кстати, проверяли? Работает?
Ещё с IV века до нашей эры известны «доска Энея» и «книга Энея». Эней был знаменитым древнегреческим полководцем – однако это почти всё, что мы о нём знаем. Он придумал, как шифровать текст с помощью узелков на длинной нити! Нить обматывалась на специальной линейке, которая и была ключом к шифру. Гонец вместо пергамента или папируса нёс просто невинную нить или шнурок с узелками – сами понимаете, такую вещь можно легко спрятать в складках одежды или даже в волосах. Получивший нить доставал в точности такую же линейку, и читал секретное донесение!
Эней придумал и другой вид тайнописи – вместо донесения посылалась книга, обычного содержания, скажем, какие-нибудь стихи. Только нужные буквы были аккуратно надколоты иглами! Знающий об этом мог тайное послание прочесть, а никто другой – нет.
Однако хватит истории. Давайте поиграем!
Самый элементарный шифр, который только можно придумать, это «простая подстановка». Его так и называют часто – «детский» шифр или «пионерский». Потому что его обожают использовать дети, играющие в военные игры. Расставим все буквы по алфавиту и каждой букве припишем номер: буква А – 1, буква Б – 2, буква В – 3 и так далее.
Тогда, скажем, название нашего журнала ЛУЧИК превратится в 13 21 25 10 12.
Почему этот шифр «детский»? Потому что он очень прост. Для того, чтобы его взломать, достаточно догадаться, на каком языке текст написан. То есть буквы какого алфавита мы использовали. Обратите внимание, это важно: если мы знаем, что надпись сделана по-русски, то моментально расшифруем.
А если латинскими буквами? Пронумеруем латинский алфавит и подставим буквы на место цифр:
13 21 25 10 12 – M U Y J K
Кхм... вместо «лучика» какой-то «мужик» получился, уж извините.
Тем не менее, для того, чтобы «угадать» язык послания, есть много способов. Скажем, простой счёт разных букв! Если их 26 (как в английском алфавите), мы имеем дело с латиницей. Если 28 – как в арабском – то «подозрение» падает на арабский язык. Если 33 – то на русский... А вот в рассказе «Золотой жук» у Эдгара По главный герой сразу же знает, что к нему в руки попал зашифрованный текст на английском языке. Откуда? Под текстом стояла подпись, рисунок козлёнка (по-английски «кид»). Игра слов «кид» и «Кидд» (имя пиратского капитана) возможна только в английском языке – и дальше легко, просто рассуждая логически, Легран «взламывает» шифр и находит клад. Хотя внешне документ выглядит жутковато:
Как герой рассказа разгадал эту загадку? С помощью математического метода, который называется «частотным анализом». Несмотря на современное название, сам метод очень древний – впервые его описал в своей книге арабский математик, музыкант и астроном Абу Юсуф аль-Кинди, ещё в IX веке нашей эры! В чём смысл этого метода? Опять-таки, в умении считать, а также хорошем знании языка оригинала! Скажем, в арабском языке самое распространённое слово – это определённый артикль «аль-». В английском – артикль «the». Кому было адресовано секретное донесение? Кто его составил? Все письма обычно начинаются со слов типа «здравствуйте» и заканчиваются словами типа «до свидания»... Нельзя ли здесь отыскать ключ к разгадке?
Вот и Легран – зная, что в английском слово «the» встречается очень часто, определяет: знак ; в шифровке означает букву t, знак 4 – букву h, а знак 8 – букву e. Так постепенно, букву за буквой, он «распутывает» эту, казалось бы очень сложную, головоломку.
А вот в рассказе про Шерлока Холмса и пляшущих человечков (а это тоже шифр с простой заменой) «ключом» послужило женское имя «Илси». Сыщик знал, что записки часто начинаются с имени того, кому они адресованы – и угадал верно!
С романом «Жангада» у Жюля Верна, кстати, случилась прелюбопытнейшая ситуация. Этот роман печатался в юношеском журнале «Обучение и развлечение» по главам. Писатель вставил в текст самое настоящее шифрованное сообщение – но... вышла промашка! Шифр, который он использовал, был слишком простым – и многие юные читатели смогли этот шифр «взломать», прочитать и тем самым узнать «что же будет дальше». В итоге Жюль Верн был вынужден использовать в книге более сложный шифр – так называемый шифр Виженера. Этот шифр – более крепкий орешек, математики не умели его взламывать целых триста лет! Однако в конце концов научились.
Напоследок давайте научимся составлять секретные сообщения «методом шахматной доски», он же «метод Кардано». Кстати, Джероламо Кардано – это ещё один математик (а ещё заодно астролог, изобретатель и врач) в нашем рассказе. Возможно, вы знаете про карданов вал в автомобиле. А может быть, слышали про формулу Кардано (мы про неё, кстати, скоро напишем). А вот сегодня расскажем, как сделать «решётку Кардано».
Возьмите лист плотной бумаги или картона и аккуратно начертите на нём квадратную «шахматную доску» из 64 клеток (8 клеток на 8). Клетки внимательно пронумеруйте так, как показано на рисунке.
Цифры в каждой четверти «решётки» (мы для наглядности раскрасили четверти в разные цвета) идут от 1 до 16, причём сначала слева направо, затем сверху вниз и справа налево, затем снизу вверх и слева направо, и наконец справа налево и снизу вверх. Запутаться можно, но вы постарайтесь, и у вас всё получится. Вы можете использовать цветные фломастеры или карандаши для того, чтобы раскрасить доску или цифры, то есть правильно расставить цифры по квадратам доски.
Затем внутри маленьких «угловых квадратов» 4 на 4 клетки нужно вырезать по одной или нескольку клеток в каждой строке. А можно вообще не вырезать. Но действовать по строгому правилу: если квадратик с таким номером уже был вырезан в другом «углу», то вырезать его уже нельзя! У нас получится решётка, «сетка».
Отверстия в решетке Кардано прорезаются так чтобы цифры не повторялись
Готовая решётка Кардано
Наложите ее на бумагу и в получившихся окошечках начните писать свой текст.
Затем поверните сетку на девяносто градусов и продолжайте писать сообщение – в «окошечках», если всё было сделано правильно, будет только чистая бумага! Заполните их и поверните решётку ещё раз. И снова пишите.
И ещё.
И ещё.
В результате, когда вы снимете решётку, у вас получится «секретное сообщение» – бессмысленная чехарда из рассыпанных в беспорядке букв.
Но стоит наложить сетку Кардано на бумагу и повернуть 4 раза – и ваше секретное сообщение станет видимым, читаемым! Такое секретное послание станет отличным подарком для друга. Или пригодится для игры в шпионов, уж как сами решите!
А применялись ли такие решётки в действительности, настоящими секретными агентами? – спросите вы. О, ещё как! Например, большим любителем шифровать свои письма с помощью хитро вырезанных решёток Кардано был знаменитый кардинал де Ришелье из романа «Три мушкетёра». Очень долгое время такие решётки были настоящими «королями дипломатической секретной переписки». Почему? Потому что они просты в изготовлении, удобны, а главное – позволяют передавать сообщение «прямым текстом», не шифруя. Упрощённый вариант «решётки» – метод, когда в тексте нужно читать (по предварительной договорённости) строго определённые слова. Тут мы снова можем вспомнить детективные рассказы о Шерлоке Холмсе. Сыщик читает записку, на первый взгляд совершенно бессмысленную:
С дичью дело, мы полагаем, закончено. Глава предприятия Хадсон, по сведениям, рассказал о мухобойках все. Фазаньих курочек берегитесь.
Но потом он догадывается, что читать нужно только каждое третье слово! И записка становится совершенно ясной:
Дело закончено. Хадсон рассказал всё. Берегитесь.
А вот как выглядела настоящая решётка Кардано для дипломатической переписки.
Письмо написано элегантным каллиграфическим почерком по моде XVI или XVII века. Выглядит оно совершенно невинно, как простое очень вежливое купеческое письмо, скажем, от одного торговца или банкира к другому. Однако при наложении решётки «выплывает» сообщение совершенно иного характера: «Испания в мае отправляет корабли на войну». А знание того, когда и какими силами враг собирается напасть на тебя – знание бесценное, что в XVI веке, что в XXI...
Познакомиться с журналом "Лучик" можно по этой ссылке. Будем рады, если он вам понравится!
А это наш телеграм-канал: https://t.me/luchik_magazine Он не дублирует этот канал, там мы публикуем другие статьи! Присоединяйтесь!