LINUX.ORG.RU
ФорумTalks

криптоманьяков тред (идеи, рассуждения)

 , , ,


2

1

Треба совет знающих и просто желающих пообщаться. Кастуйте всех, кто в теме.

Часть I. Истоки

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

Часть II. Попытка

Как только я сел за работу, так через полчаса обнаружил что все — готово. (идея и работающий прототип: програмка на делфи с тремя кнопками — создать ключ, зашифровать файл, расшифровать файл) Сам был в шоке, но оно работало, и, как мне тогда казалось, с бесконечной криптостойкостью. Потом появился ряд мыслей, но оно уже — шлифовка, а не идея.

II 1 Генерация ключа

В делфи (как и везде в подлунном мире) бывает только генератор ПСЕВДОслучайных чисел, и, совершенно очевидно (даже мне), что оно для генерации ключа не годится. Мною было принято управленческое решение как реализовать случайность ключа:

- создаем массив в 64Кб (чтоб адресовался двухбайтовой переменной)

- заполняем его числами 0, 1, 2, .. , 255, 0, 1, ... то есть 256 раз последовательностью 0..255

- теперь перемешиваем: генерируем два псевдослучайных двухбайтовых целых числа и меняем в массиве, который только что заполняли, местами числа (восьмибитные) местами по этим адресам

- когда пользователю надоедает пырить в экран, он жмет кнопку «стоп» и в этом мой главный козырь, ибо момент, в который он нажмет на конопку, СЛУЧАЕН, а не псевдослучаен. На выходе мы заимели массив, в котором гарантированно по 256 раз встречается каждое целое число из диапазона 0..255. Сохраняем в файл.

II 2 шифрование файла

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

- побайтно считываем исходный файл и для каждого байта выполняем «бесконечный» цикл:

- псевдослучайно выбираем двухбайтовый индекс и, если в ключ[индекс] == наш_байт — то записываем в выходной файл этот самый индекс и выходим из цикла

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

II 3 расшифровка

она очевидна: читаем по два байта шифрованного файла, используем их как адрес в ключе — получаем нешифрованный байт

III замечания и предложения

пока ехал домой с работы, возникла пара идей: криптоаналитик, предполагая содержимое криптограммы, может предполагать первые (и не только) несколько байт, которые часто одинаковые. И даже несмотря на то, что один и тот же байт раз от разу кодируется разной двухбайтовой последовательностью, он все равно получит нехилую подсказку для эвристического анализа, ибо лобовой полный перебор в случае с такой длиной ключа — бесполезен. От сией напасти спасет повторное кодирование (можно неоднократоное, если мьсе — параноик)

второе - можно генерировать несколько ключей, каждый по 64КБ и подировать каждую часть файла своим ключем (очень положительно скажется на скорости шифрования)

Естественно, приведенные мною цифры — не закон: ими можно лавировать. Я хочу обсудить лишь саму идею: каждый, кто осилил программирование за 10 кл, способен запилить свою криптосистему и, через это, на 100% обезопасить себя от кулхацкеров, при условии что неуловимый Джо будет присматривать.

ЗЫ в криптонауке я не просто нубас — я, сука, эталон нубаса

★★★★★

я запилю свой собственный софт для шифрования

криптоманьяки дальше читать не будут.

t184256 ★★★★★
()

11 - держи случайное число. Честно сгенерировал двумя игральными кубиками только что.

GblGbl ★★★★★
()

я не просто нубас — я, сука, эталон нубаса

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

Manhunt ★★★★★
()
Ответ на: комментарий от StReLoK

Зачем собирать из говна и палок велосипед, если есть мотоцикл?

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

А вообще — фана для. GnuPG я осилил

pihter ★★★★★
() автор топика
Ответ на: комментарий от pihter

Потому что ты предлагаешь туфту какую-то.

Я тоже далеко не криптоманьяк, но я правильно понимаю, что чтобы вскрыть твой шифр, достаточно перебрать все варианты этой твоей «человекослучайной» подсказки (что проще полного перебора с длиной ключа), так?

А если так, то просто бери за ключ «человекослучайную» затравку, генери с ее помощью псевдослучайным генератором блок данных размером n байт и отксорь.

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

t184256 ★★★★★
()

4.2?

В последнее время всплывают, одно за другим, сообщения о том, что то тут, то там, в общеиспользуемых криптоалгоритмах (реализациях) находят уязвимости (закладки)

Я только heartbleed могу вспомнить. TrueCrypt самоустранился, но брешей не показал. Где же множественные сообщения о закладках?

Camel ★★★★★
()
Ответ на: комментарий от GblGbl

11 - держи случайное число. Честно сгенерировал двумя игральными кубиками только что.

Не будь я Карлос Санчос, включу это число в каждый ключ для моей говнопроги!

Но к чему коммент я не уловил, хотя сарказм(ирония?) чувствуется

pihter ★★★★★
() автор топика

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

1. Зачем?
2. Люди, которым доверяют такие вещи, обычно даже не помнят как зовут их внуков и юзают встроенное в сишарпик.

unt1tled ★★★★
()
Ответ на: комментарий от pihter

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

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

t184256 ★★★★★
()

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

А ещё ключ симметричный (надо его секурно передать получателю) и достаточно большой (64 килобайта).

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

kim-roader ★★
()
Ответ на: комментарий от Harald

выкинь всё, что ты наговнокодил, и начни читать матчасть

Это я и без тебя понимал еще до говнокоденья! В чем я не прав-то? Консрукривную критику в студию, иначе — в дев нулл, ты ж знаешь

опять же... основная идея не в велосипедостроении, а в велосипедостроении, спасающем от кулхацкеров

pihter ★★★★★
() автор топика
Ответ на: комментарий от Igron

Шнайера не читал, значит?

Разумеется, нет. Я раньше не знал что криптопаранойа мне интересна.

Марш в школу.

Жду конструктивной критики от адекватного камрада

pihter ★★★★★
() автор топика
Ответ на: комментарий от Manhunt

я не просто нубас — я, сука, эталон нубаса

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

Эта! Я полчаса на велосипедостроение потратил, час на раздумье и час на написание простыни! Нравится читать треды в стиле «У меня крузис под вайном не запускается, памагите!» — дак кто о вкусах спорит?

pihter ★★★★★
() автор топика
Ответ на: комментарий от pihter

Это вообще универсальный коммент для постов про новые велосипеды для генерации случайных чисел, в оригинале есть такой комикс в xkcd

GblGbl ★★★★★
()
Ответ на: комментарий от pihter

велосипедостроении, спасающем от кулхацкеров

Я не силен в терминологии, но мне казалось, что это те ребята, которые готовым скриптом поимеют какой-нибудь сервис твоей системы через свежий эксплойт и угонят у тебя и ключ, и исходник твоей софтины, и сами оригинальные данные, а твой хост оставят разводить ботов?

t184256 ★★★★★
()

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

abraziv_whiskey ★★★★★
()
Последнее исправление: abraziv_whiskey (всего исправлений: 1)
Ответ на: комментарий от t184256

Потому что ты предлагаешь туфту какую-то.

Очень может быть, я ж предупредил что нубас и с тем и запостил чтоб мордой натыкали в фейлы

достаточно перебрать все варианты этой твоей «человекослучайной» подсказки (что проще полного перебора с длиной ключа), так?

ЯННП. Какой еще подсказки? У меня просто ключ 64Кб в котором равномерно и случайно (я почти уверен что случайно) раскиданы восьмибитные числа.

pihter ★★★★★
() автор топика
Ответ на: комментарий от pihter

Нет, твой ключ — не 64КБ, т. к. он целиком зависит от затравки псевдослучайного генератора и количества перестановок, которые успеют выполниться. Байт 128 у тебя ключ.

t184256 ★★★★★
()
Ответ на: 4.2? от Camel

Где же множественные сообщения о закладках?

Да, блджад, но ЛОРе!

Было про OpenSSL, про LibreSSL про Сноудена про всякое... Хотя, возможно, я параноизирую, но я не про то.. Я про обсуждение говновелосипеда против всемипризнанных непотопляемых RSA и прочих GnuPG

pihter ★★★★★
() автор топика
Ответ на: комментарий от mrec

ибо момент, в который он нажмет на конопку, СЛУЧАЕН, а не псевдослучаен

Нет.

ну подробности жа!

pihter ★★★★★
() автор топика
Ответ на: комментарий от unt1tled

1. Зачем?

Фана для. И большого брата чтоб костыль колеса ставить :)

Люди, которым доверяют такие вещи, обычно даже не помнят как зовут их внуков и юзают встроенное в сишарпик.

ЯННП

pihter ★★★★★
() автор топика
Ответ на: комментарий от t184256

Это не безопасность, это бред.

А кто утверждает обратное? Я лишь прошу указать на ошибки образования для.

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

Шифрую файл (не важно какой).

кому сделаешь доступным

Очевидно, тому, кому захочу передать инфу по открытому каналу.

и сокроешь ли алгоритм

нет. это давно не актуально. предложи способ вскрыть при открытом алгоритме и ты сделаешь одного человека чуть опытнее :) (а себе ЧСВ повысишь, а че ? :)

может тогда я пойму полет твоей воспаленной фантазии.

нарвится мне побеседовать за такое — вот и фантазирую. Это толкс или где?

pihter ★★★★★
() автор топика
Ответ на: комментарий от pihter

У меня просто ключ 64Кб в котором равномерно

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

t184256 ★★★★★
()

Я надеюсь ты проживаешь не в РФ. Если да, то никогда и никому не выкладывай в паблик код, ибо если ты гений и алгоритм реально криптостойкий, а ты не купил лицуху, то за тобой выедут...

Хотелось бы посмотреть на твое изделие.

gh0stwizard ★★★★★
()
Ответ на: комментарий от kim-roader

ты нарисовал вариацию шифра цезаря

Это который по книге?

Ломается тупым статистическим анализом

Ожиданно. А если я зашифрую 2 раза? А если N раз?

А ещё ключ симметричный

Это специально. Простоты для. Тя надо с военными познакомить :)

и достаточно большой (64 килобайта).

цифры не строгие, говорил же. Коль скоро все так просто, слабо вскрыть зашифрованный мной .doc-документ (прости Оспади) единожды зашифрованный таким 64кб ключем, или ты не умнее моей младшей сестренки? :) мне просто любопытно, я без пижонства

и достаточно большой (64 килобайта).

Я тя умоляю... по телеграфу беольше в день передаю...

Хочешь безопасности — возьми описание того же RSA и реализуй его

Читал я про RSA — не вижу чем он лучше. Укажешь — буду благодарен.

pihter ★★★★★
() автор топика
Ответ на: комментарий от GblGbl

то вообще универсальный коммент для постов про новые велосипеды для генерации случайных чисел

Молод, исправлюсь :)

pihter ★★★★★
() автор топика
Ответ на: комментарий от pihter

Разумеется, нет. Я раньше не знал что криптопаранойа мне интересна.

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

Жду конструктивной критики от адекватного камрада

Вышку по IT получи, там все нужные курсы есть. Если уже никак, то штудируй Шнайера, он лют и честен.

Igron ★★★★★
()
Ответ на: комментарий от t184256

Я не силен в терминологии, но мне казалось, что это те ребята, которые готовым скриптом поимеют какой-нибудь сервис твоей системы через свежий эксплойт и угонят у тебя и ключ, и исходник твоей софтины, и сами оригинальные данные, а твой хост оставят разводить ботов?

Истину светишь стержнем! И че?

pihter ★★★★★
() автор топика
Ответ на: комментарий от abraziv_whiskey

Это простой подстановочный код

Да я в курсе

С тем же успехом можешь подменять букву в тексте на соответствующую ей «случайную» букву из более длинного алфавита

Так точно! И до сих пор никто не предложил алгоритма как это сломать! Хотя это за полчаса навелосипедил(говнокодил) условный десятикласник! Где ошибка, где дырка, как расшифровать? Я все еще не понимаю!

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

а я уже невольно обдумал это :)

Это будет гуд для общего образования.

Гуд для ОБЩЕГО образования программисту историю читать и биологию. А вот для профессионального...

pihter ★★★★★
() автор топика
Ответ на: комментарий от Lighting

Чем твой лучше?

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

Всем лучше.

pihter ★★★★★
() автор топика
Ответ на: комментарий от t184256

твой ключ — не 64КБ, т. к. он целиком зависит от затравки псевдослучайного генератора и количества перестановок, которые успеют выполниться

Авторитетно заявляю, что делфи, на i3-м, в виртуалбоксе успевает за секунды выполнить такое количество перестановок, что ты не узнаешь не то что 64Кб исходного файла, а гораздо и гораздо больше! Могу поэксперементировать для тебя (можешь и ты)

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

Байт 128 у тебя ключ.

Ну хошь я пример выкачу, а ты попробуй проанализируй?

// я грубовато, но пока твоя критика конструктивнее, чем у остальных, так что и на том спасибо.

// помним — фана для

pihter ★★★★★
() автор топика
Ответ на: комментарий от pihter

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

Ладно, разобью твои мечты. Твоя задача: в этом треде при помощи комментариев передать мне инфу так, чтоб ее увидел только я. Условия победы: я смог прочесть ее, остальные нет. Условия поражения: я не смог прочесть ее, или не только я смог ее прочесть. Используй свой алгоритм, а мы посмотрим.

Igron ★★★★★
()
Ответ на: комментарий от goingUp

Как уже говорили, легко ломается

Блджад! КАК?

Как его сломать, кгода некоторые числа совсем не повторяются в шифрованном файле? Как сломать, если каждый раз байт 234 кодируется разным числом? А если я возьму ключ не 64 кб, а 64 Мб? Повторов, вероятнее всего вообще не будет! Как такое расшифровать, даже зная мой простой (в этом и соль) как «в носу поковырять» алгоритм шифрования?

pihter ★★★★★
() автор топика
Ответ на: комментарий от pihter

Как сломать, если каждый раз байт 234 кодируется разным числом?

Если ты уничтожил свой одноразовый блокнот, то сломать никак. Но и передать никак. Вникаешь?

Igron ★★★★★
()
Ответ на: комментарий от mrec

Воу воу воу! полегче! это генератор псевдослучайных чисел тусует мои элементы в массиве. НО ЛИЧНО Я определяю когда этот процесс остановить! Учитывая скорость современных ПК повторить дважды (даже при желании) один и тот же результат вряд ли удастся, ибо ни один алгоритм не в состоянии предсказать когда я нажму кнопку (али не?)

pihter ★★★★★
() автор топика
Ответ на: комментарий от t184256

Опечатался. 128 бит, не байт. И то если повезет.

Ну... 128 бит можно за обозримое время и на мобилке перебрать. Попробуешь?

pihter ★★★★★
() автор топика
Ответ на: комментарий от pihter

Учитывая скорость современных ПК повторить дважды (даже при желании) один и тот же результат вряд ли удастся

но ты сильно переоцениваешь число бит энтропии в этом процессе. А другой энтропии у тебя и нет.

x3al ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.