Сергей Деревяго

DersCrypt 2.0: двадцать лет спустя



1. Введение

Я бы сам не поверил, но прошло уже двадцать лет! Аккурат с первой версии: Криптографический алгоритм DersCrypt. Не пора ли уже обновить?

Гмм, криптография -- не портянки! Каждый месяц не надо менять. Все ж работает, нет?

Да, прекрасно работает, но куда же девать Идеи?? Когда всякого тут накопилось... Эх, обновлю!!

Чтобы что?

Чтобы стало удобнее. Ведь теперь в новой версии:

  1. Уже встроены генерация ключа и проверка зашифрованного файла.
  2. Алгоритм чуть-чуть труднее обнаружить.
  3. И гораздо сложнее взломать!
Ну и, как водится, конец статьи вас изумит до глубины души.

С уважением, Сергей Деревяго.


2. Нововведения

Итак, что нового?

На этот раз не будет Математики и нудных алгоритмов. Ведь наша цель -- решение проблем трудящихся! Что делать и как запускать.

Э... может "кто виноват"?

Как показало Время, не виноват никто! Из-за DersCrypt еще никто не пострадал. Но были благодарности! Даже пара забавных случаев (потом напомните рассказать).

А теперь коня за рога:

> derscrypt
DersCrypt v2.0 (2025-02-15), symmetric-key cipher, freeware
Copyright (c) Sergey P. Derevyago

Usage:
derscrypt e key_file plain_file encrypted_file
derscrypt d key_file encrypted_file decrypted_file
derscrypt t key_file encrypted_file
derscrypt c key_file

Именно эту картину вы будете видеть при запуске. Пройдемся по пунктам использования:

Все удобно, как грабли!

3. Создание ключа

Хороший ключ -- залог Успеха!

И как уже говорилось, в качестве ключа можно использовать любой файл размером 32-64 байта, удовлетворяющий простым условиям:

  1. Первый байт файла (most significant byte) не является нулевым.
  2. А младший бит последнего байта (least significant bit) равен единице.
Гмм, да где ж его взять? Они повсюду!

3.1. Быстро

Если вы сильно торопитесь и готовы пожертвовать криптостойкостью, то файл ключа можно просто набить руками в примитивном редакторе. Например, вот такие случайные 32 буквы и цифры.

key.txt
S9f3g7zD5jtT0t4c7ks62d4mgWIpy5Mv

Чушь? То, что надо!

А теперь применяем красавца:

> derscrypt e key.txt plain.txt plain.dc2

ders::Exception [main.cpp:109], message: Can't encrypt plain_file
ders::Exception [key.cpp:104], message: Invalid key: The least significant bit is zero

Так, ошибка! Что за ошибка? Младший бит у нас равен нулю, а хотелось бы единичку.

Не вопрос. Еще раз откроем редактор и исправим последнюю букву v на предыдущую по значению (u) или следующую (w):

key.txt
S9f3g7zD5jtT0t4c7ks62d4mgWIpy5Mw

Сохраняем и запускаем:

> derscrypt e key.txt plain.txt plain.dc2

515 K/s

Песня! Наш ключ работает и появился plain.dc2.

А что там по криптостойкости? Мы же сходили на жертвы??

Ну, смотрите. 32 случайных байта -- это честные 256 случайных бит! Но если использовать только буквы (большие и маленькие) и цифры, то получится всего 62 (=26+26+10) варианта.

А 62 значения -- это только 5.95 бита вместо 8. Т.е. 32 случайных буквоцифры нам обеспечат лишь 190.4 случайных бит... Сойдет для сельской местности!


3.2. Правильно

Желаю, чтобы все!

Ну, все так все. Но для этого нужен отличный источник случайности! Например, монета (2 варианта), а лучше игральная кость (сразу 6).

Я знаю, вы помните. Лет двадцать назад мы запустили бы KeyGen в жабамашине. Но теперь та же самая функция уже встроена в сам derscrypt.

Итак, для создания ключа key33 длиной 264 бита с помощью игральной кости (6 вариантов) мы будем использовать команду:

> derscrypt c key33
Enter key size in bits [256,512]: 264
Enter number of dice sides [2,999]: 6
1/102: enter value [1,6]: 2
2/102: enter value [1,6]: 5
3/102: enter value [1,6]: 1
...
102/102: enter value [1,6]: 3

Еще сто два броска, синьор, -- и ключик у нас в кармане!

Много? Это вы не метали копейку! Безопасность требует жертв.

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


4. Шифрование

А сейчас и реальный пример.

Мы попробуем зашифровать мои логин (фактически, номер паспорта) и пароль для доступа к Интернет-Банку:

bank1.txt
login: 2609152A052PB3
passw: Wv4Rv4G1ji7hrTf8ModR77HssLhrP

Так полагаю, вы уже сгенерировали свой собственный ключ? Если нет, то у нас уже есть key33:

> derscrypt e key33 bank1.txt bank1.dc2
ders::Exception [main.cpp:109], message: Can't encrypt plain_file
ders::Exception [derscrypt.cpp:105], message: File too small: At least 1947 bytes required

Ошибка! Для использования 264-битного ключа требуется как минимум 1947 байт данных, а наш bank1.txt всего 61 байт размером. Что делать?

Ну, вариантов довольно много. Лично я, например, ищу редкостный бред и вставляю в него свои данные:

bank2.txt
Программы поведения срабатывают в ответ на особый сигнальный стимул, признаки которого заложены в программу. Задача распознания в окружающем мире врожденного сигнального стимула для мозга сложна, поэтому инстинктивные программы часто ошибаются, запускаются по сигналам, случайно несущим признаки стимула. Набор программ действий и образов врожденных стимулов образуют систему передаваемых по наследству знаний об окружающем мире и правил поведения в нем. Животное родится на свет не "tabula rasa", и человек в этом не исключение. Без программ мозг не способен работать. Если нет соответствующей программы - нет и сколько-нибудь сложного и эффективного поведения.

login: 2609152A052PB3
passw: Wv4Rv4G1ji7hrTf8ModR77HssLhrP

Сила этологов - в знании поведения огромного числа разных видов животных. Человек для этологов - один из видов: многие особенности его поведения, кажущиеся другим уникальными или загадочными, не выглядят такими, если знаешь целый букет сходных и родственных образцов поведения других видов. Причем оказывается, что врожденную мотивацию своего поведения человек, как правило, не чувствует (ему кажется, что он сам так решил, так хочет, так надо), а объясняет обычно путанно и неверно. Со своими объектами этолог не может поговорить об их поведении, поэтому все методы этологии ориентированы на внешние проявления поведения. Приложения этого метода к человеку (меня не интересует, что ты думаешь, меня интересует только, что ты сделал и в ответ на какой стимул) по-своему плодотворно, особенно тем, что удачно дополняет достижения гуманитариев, анализирующих в первую очередь мысли и чувства. В нашей стране с этологией боролись, как могли. Один из результатов - не только полная неосведомленность, но и воинствующее неприятие самого этологического подхода к поведению человека. Эта реакция выработана и у людей, в остальных отношениях непредвзятых, любознательных и доброжелательных.

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

А теперь повторим процедуру, но уже с файлом bank2.txt:

> derscrypt e key33 bank2.txt bank2.dc2

335 K/s

Это победа!


5. Дешифрование

А нужно ли расшифровывать?

Во ржака, да. Спросил тоже.

А ведь не ржака! Вы шифруете информацию, которая может вам повредить!

Например, чек ресторана, где вы ЧРЕЗМЕРНО потратились... На кой он вам?! Лучше сразу же удалите! Ну право слово: потенциальная возможность пролить над ним умильную слезу лет через надцать никак не стоит той БЕДЫ, если увидят домочадцы!

Что я советую?

Я советую ОЧЕНЬ СЕРЬЕЗНО ЗАДУМАТЬСЯ и все-таки удалить тое-сёе! А мы пока что-нибудь расшифруем:

> derscrypt d key33 bank2.dc2 bank2.dc2.txt

326 K/s

Вот они -- слезы счастья! Мы только что обрели bank2.dc2.txt, и он полностью совпадает с bank2.txt.


6. Проверка

Тестировать шифрование?

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

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

Вам же дороги ваши данные? Ну так проверьте:

> derscrypt t key33 bank2.dc2

326 K/s

И никаких следов!


7. Самое интересное

А сейчас самое интересное!

Но для начала я приведу широко известную в узких кругах цитату:

    | если автор доступен для терморектального криптоанализа
вот! это ГЛАВНОЕ.
и не важно на все остальное, если можно давить гражданина.
    | реализуйте безопасность всерьёз и с серьёзными затратами или не реализуйте её вовсе,
    | потому что полумеры практически дают результат хуже чем если бы не реализовывали ничего
смиялсо.

а вот вам цитата Серьезного Безопасника из 90х годов: ЛЮБОЕ минимальное шифрование ВСЕГДА лучше ограничения прав доступа! ваш текст не должен СРАЗУ читаться. точка.

но сначала поговорим про ГОСТы ;)
ГОСТ -- это аббревиатура от словосочетания "государственный стандарт". он есть в любом государстве. и в любом государстве вас ЗАСТАВЯТ его использовать!

почему?

ну, прежде всего нужно четко себе представлять, что весь Мир сейчас жестоко разделен на дружественные и вражественные юрисдикции:

  1. вражеские государства вас заставят использовать ГОСТ, потому что всегда смогут вскрыть все шифровки. они это используют для продвижения терроризма, наркомании и детской порнографии!
  2. дружеские государства вас заставят использовать ГОСТ, потому что всегда смогут вскрыть все шифровки. они это используют для защиты от терроризма, наркомании и детской порнографии!
не перепутайте!

и что же крестьянину делать?

    2. обязательно использовать ГОСТ страны пребывания. это Закон!
    1. но перед этим шифровать свои данные любым доступным способом.
да, есть подвох.
сразу после вашего наивного шифрования (но перед ГОСТом) его нужно чуточку исказить:
  • переставить немножко байтики
  • что-то заксорить во имя тёщи
  • в общем, любое дилетантское искажение, делающее невозможным АВТОМАТИЧЕСКОЕ декодирование "всем известного" наивного шифрования...
вы тем самым поможете Злым человекам стать немножко Добрее.

Уже догадались? Правильно! Пусть расцветают сто цветов.

"Никогда не пишите свою собственную криптографию" -- говорили они. Но сейчас любой школьник с удовольствием перетасует байты зашифрованного файла -- и вот вам "новый алгоритм"!

Сколько честных криптостойких алгоритмов могли использовать простые люди? Пять? Десять?? А сейчас их появятся ТЫСЯЧИ!

Несколько тысяч трудящихся со своими программами -- и никто ничего не поделает! Даже если потом обнаружится, что DersCrypt-у присущи изъяны (ну-ну).

8. Заключение

Да, мала букав. В кои-то веки!

Что дальше? Прежде всего, обратите внимание на исходный код:

  1. Вы можете собрать себе derscrypt под Linux.
  2. Вы можете доработать исходники, чтобы сразу же искажались зашифрованные файлы. Смелее!
  3. Вы можете их изучить и найти для себя кое-что Интересное.
Но самое главное -- не забывайте систематически шифровать Информацию!

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


Copyright © С. Деревяго, 2025

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