Статья Почти идеальное шифрование

Admin

Администратор

Почти идеальное шифрование​

Если почитать книгу Шнаейра по криптографии, то можно наткнуться на абзац о том, что невзламываемое шифрование существует.
Этот алгоритм называется "Одноразовый блокнот".
Берется случайная последовательность байтов, которая будет называться ключом, по длине равная шифруемому сообщению и,
допустим, проводится операция XOR с байтами сообщения.
В итоге получаем зашифрованное сообщение которое невозможно взломать даже через тысячи лет,
даже "квантовыми компьютерами", которые на самом деле ничего не делают кроме выдачи случайных битов.
Не могу их не упомянуть потому что программы раздувают кодом с "защитой от постквантового апокалипсиса", которого не будет,
как и не существует термоядерных реакторов, реализацю которых откладывают каждые 20 лет на еще 20 лет.
Просто существуют области, в которых можно вечно зарабатывать деньги на обещаниях.

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

Зашифрованное одноразовым блокнотом сообщение невозможно взломать именно потому что байты ключа случайные.
Но если очень хочется, то можно написать любой текст такой же длины, провести операцию XOR с зашифрованным сообщением,
якобы получить "тот самый ключ шифрования", и утверждать что это именно он и сообщение именно такое.
Что интересно что часть людей купится на такие утверждения.
Почему-то люди плохо понимают слово "профанация" и вместо обсуждения самой профанации обсуждают ее последствия.
Это я намекаю на электронные голосования.
Даже, казалось бы профессионалы, употребляют "мы еще к ним не готовы" вместо "да вас обвели вокруг пальца".

Основной недостаток "Одноразового блокнота" в том что такой ключ трудно передать получателю сообщения - он слишком большой.

Но, как говорят, наш мир не идеальный, все в нем коряво и все не так.
Дак почему же и нам не сделать шаг назад и не попробовать "почти идеальное шифрование".
Вместо абсолютно случайной последовательности байтов ключа использовать псевдослучайную, но с длинным периодом повторения.
В интернете я нашел простой генератор псевдослучайной последовательности байтов - https://zxpress.ru/article.php?id=8675
Реализуется он десятком строк кода и написано что повторяемость его 4.6*10^18.


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

Программу нужно запускать так:

* Для шифрования файла:

Код:
cat in_file.txt | ./enc2_io e generated.key > out_file.enc

Т.е. отправляем файл в стандартный вход enc2_io указав опцию "e" для шифрования и файл в который будет помещен созданный ключ.

* Для расшифровки файла:

Код:
cat out_file.enc | ./enc2_io d generated.key > out_file.txt

Ниже приводится сама программа. Как вы увидите размер ее очень маленький.
И у меня вопрос только к генератору псевдослучайной последовательности.
Статью я пишу в надежде что кто-то сможет оценить качество генератора.
А если нет, то можно хотя бы похоливарить о том, что нам подсовывают заранее взламываемые алгоритмы,
а вот можно в 140 строк зашифроваться как минимум до следующего тысячелетия.
Поэтому я и отклонялся от темы - в шифровании тоже достаточно много профанации.
В книжке Шнайера это и описано, что раньше применяли достаточно плохие алгоритмы.
И остается вопрос: а изменилось ли что-то принципиально?
Жизнь не так уж и сложна, многое из того что нам нужно валяется под носом,
но мы не можем этого увидеть и ведемся на маркетинговые уловки, покупая хлам который того не стоит.

Давайте, закидывайте меня камнями, будем думать...

C:
/*
Compile in Linux:

tcc -o enc2_io enc2_io.c

Download for Windows:

http://download.savannah.gnu.org/releases/tinycc/

Compile in Windows:

C:\enc2_io>\tcc\tcc.exe -o enc2_io.exe enc2_io.c
*/

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <time.h>

#define BUF_SIZE 1048576

int main (int argc, char* argv[]) {

unsigned char  enc[256];                         // random array
unsigned char  *buf;                             // buffer for encode
unsigned int   i,j,n;                            // counters for loop
FILE *fd_key;
char           s[16] = "0123456789abcdef";
unsigned char  e[512];

// allocate memory buffer

buf = malloc (BUF_SIZE);
if ( buf == NULL ) {

fprintf (stderr, "can't allocate memory for buffer\n");
return -1;

}



if ( argc < 3 ) {

fprintf (stderr, "please, say me direction and key file name\n");
return -2;

} else if ( argc == 3 ) {

// try read key from file

fd_key = fopen (argv[2], "rb");
if ( fd_key == NULL ) {

// fill random array

srand (time(NULL));
for (i = 0; i < 256; i++)
{
enc[i] = rand();
e[i*2+0] = s[ (enc[i] & 0xf0) >> 4 ];
e[i*2+1] = s[ (enc[i] & 0x0f) >> 0 ];
//printf("%02hhx", enc[i]);
}
//printf("\n");

// create key file name

fd_key = fopen (argv[2], "wb+");
if ( fd_key == NULL ) {
fprintf (stderr, "can't open for write '%s'\n", argv[2]);
return -3;
}

// store key to file

fwrite (e, 1, 512, fd_key);
fclose (fd_key);

} else {

fread (e, 1, 512, fd_key);
fclose (fd_key);

// convert ascii key to binary data

for (i = 0; i < 256; i++) {
j = e[i*2+0] - 0x30;
if (j>9) { j = (j & 0xdf) - 7; }
n = e[i*2+1] - 0x30;
if (n>9) { n = (n & 0xdf) - 7; }
enc[i] = ((j << 4) | n);
//printf("%02hhx", enc[i]);
}
//printf("\n");

}

} else {

fprintf (stderr, "too many arguments\n");
return -4;

}



// encode or decode

j = 0;
#ifdef _WIN32
/* win32 and win64 fix */
setmode(fileno(stdin), O_BINARY);
setmode(fileno(stdout), O_BINARY);
#endif
if ( strcmp (argv[1], "e") ) {
while (n = fread (buf, 1, BUF_SIZE, stdin)) {
for (i = 0; i < n; i++) {
buf[i] = (buf[i] + enc[j & 0xff]) & 0xff;
enc[(j+55) & 0xff] = (enc[(j+1) & 0xff] + enc[(j+32) & 0xff]) & 0xff;
j++;
}
fwrite (buf, 1, n, stdout);
}
} else {
while (n = fread (buf, 1, BUF_SIZE, stdin)) {
for (i = 0; i < n; i++) {
buf[i] = (buf[i] - enc[j & 0xff]) & 0xff;
enc[(j+55) & 0xff] = (enc[(j+1) & 0xff] + enc[(j+32) & 0xff]) & 0xff;
j++;
}
fwrite (buf, 1, n, stdout);
}
}

free (buf);
//fprintf (stderr, "%d bytes\n", j);

return 0;

}
 
Похожие темы
Admin Интересно Доверяй, но проверяй каждый коммит. GitHub стал (почти) даркнетом. Новости в сети 0
Admin Интересно От Zen 1 до Zen 5. Уязвимость StackWarp затронула почти все современные процессоры AMD. Новости в сети 0
Admin Интересно Китайские хакеры впервые провели почти полностью автоматизированную атаку с помощью Claude. Новости в сети 0
Support81 Риск обхода Secure Boot угрожает почти 200 000 ноутбуков с Linux Framework Новости в сети 0
Support81 43% роста, 965 Гбит/с и почти 100 часов давления: что происходит с L3-L4 атаками в 2025 Новости в сети 0
Support81 50 хакеров на одного агента ФБР: США почти признались в беспомощности перед китайской киберармией Новости в сети 0
Support81 20 лет, миллионы на крипте и почти 60 за решёткой — кто такой King Bob из Scattered Spider? Новости в сети 0
turbion0 Школьница из Москвы перевела мошеннице почти 4 миллиона рублей за снятие порчи. Новости в сети 0
turbion0 У трех жителей Ида-Вирумаа за пару дней мошенники выманили почти 80 000 евро Новости в сети 0
Support81 PUMAKIT: новый убийца безопасности Linux, который почти невозможно обнаружить Новости в сети 0
turbion0 В Барнауле мошенница продала поддельную красную икру почти на 1,5 млн рублей Новости в сети 0
Support81 Участник REvil получил почти 14 лет тюрьмы в США Новости в сети 0
Support81 Вирус OfflRouter уже почти 10 лет остаётся незамеченным в правительственных сетях Украины Новости в сети 0
turbion0 Мошенник под видом начальника обманул петрозаводчанку почти на миллион рублей Новости в сети 0
Support81 Жертвы TheMoon: почти 7000 роутеров ASUS скрывают вредоносную деятельность хакеров Новости в сети 0
turbion0 Роскомнадзор подтвердил утечку данных в сентябре почти 1 млн клиентов МТС-Банка Новости в сети 0
uslugi.market Интересно Райфайзенбанк, 650 руб, дебетовая карта, почти без холда Предоставляю работу. Ищу специалиста. 15
Denik Интересно Почти треть продаваемых б/у смартфонов не поддерживаются поставщиком Новости в сети 0
АнАлЬнАя ЧуПаКаБрА Интересно Пишем брут на любой(почти) банк [OFX] Программирование 1
L Простой способ получения пары баксов в день [почти пассив] Способы заработка 4
АнАлЬнАя ЧуПаКаБрА INLINE Инвестиционный сервис [Почти инстант] Готовый софт 0
АнАлЬнАя ЧуПаКаБрА INLINE Инстант вывод /Без валида/ Почти все ЭПС Готовый софт 0
A Заработок на пассиве, почти без вложений Способы заработка 6
1 Слив почти всех курсов Geekbrains Программирование 2
F 350р на изичах (почти) Способы заработка 3
V Получение дедика на срок - 48 дней! почти халява! Раздачи и сливы 3
S ДЕДИКИ БЕСПЛАТНО БЕЗ РЕГИСТРАЦИИ(ПОЧТИ) И СМС Раздачи и сливы 1
BuriTTo Поднимаем 100$ .Почти изи мани. 100% разовый профит Способы заработка 7
V Слив мощного интенсива по заработку на Юле от 100 000р в месяц почти на пассиве Способы заработка 1
E Взлом почти любого RDP Вирусология 1
S Одна из крупнейших криптовалютных бирж BTC-E недоступна почти сутки Новости в сети 1
S Хакер похитил почти $8 млн в криптовалюте с помощью простого трюка Новости в сети 0
M Как заказать еду почти на халяву. Программирование 6
G Заработк 1000р в день (почти пассив) Способы заработка 70
4 mail.ru почти сотня метров Раздачи и сливы 14
Admin Скрытая сборка RMS почти 2017 с отправкой ID на почту(Слито) Вирусология 33
Admin Угон/взлом почти любого укр аккаунта ВК Полезные статьи 2
NickelBlack ПОЧТИ 800 000 FTP-СЕРВЕРОВ ДОСТУПНЫ ЛЮБОМУ ЖЕЛАЮЩЕМУ И НЕ ТРЕБУЮТ АУТЕНТИФИКАЦИИ Новости в сети 3
Support81 Идеальное оружие для киберпреступников: нейросети заставляют вас самих кликать на фишинговые ловушки Новости в сети 0
Admin Интересно Прощай, RSA? США официально признали, что старое шифрование скоро «превратится в тыкву». Новости в сети 0
Admin Статья Шифрование трафика MSF для предотвращения обнаружения Уязвимости и взлом 0
Admin Интересно Сквозное шифрование WhatsApp оказалось фикцией? Мессенджер сливал хакерам данные о наших телефонах годами. Новости в сети 0
Admin Статья Шифрование для ленивых Полезные статьи 0
Admin Статья Шифрование Полезные статьи 0
Support81 $244000000 за шифрование. VPN-инфраструктура теперь — бесплатный банкомат для хакеров Новости в сети 0
Support81 Шифрование — прошлый век: киберпреступники переходят на новую модель вымогательства Новости в сети 0
Support81 Дуров: «Лучше уйдём из Франции, чем сдадим шифрование» Новости в сети 0
Support81 Трёхслойное шифрование и туннелирование: BRICKSTORM сносит любую защиту на своём пути Новости в сети 0
Support81 Шифрование не спасет: как хакеры читают "защищенные" сообщения без взлома Новости в сети 0
Support81 HardBit 4.0: шифрование по паролю и сложные методы обхода анализа Новости в сети 0

Название темы