Как стать автором
Обновить

Комментарии 27

Шифр Вижинера ;) В Википедии более подробно ;)

В его шифре ключ везде один, что делает подбор делом времени

У вас ключ тоже один, и он общий для Алисы и Боба. И шифрование посимвольным сложением.

Если это ходит как утка и крякает как утка - значит это и есть утка шифр Вижинера.

А, прошу прощения. Я просто думал вы имели ввиду что ключ число, а не массив ключей.

Когда говорят, что ключ 2048 бит, это не значит, что с ним обращаются как с одним числом. Когда доходит до процесса (де-)шифрования, его тоже интерпретируют как массив байт длиной 256.

На подбор ключа из 1024 чисел, в диапазоне например до 100 миллиардов, будет крайне долгим занятием. Это примерно random(0,100000000000)^random(0,100000000000) и всё это повторяется 1024 раза.

Берем текст, получаем закодированный результат, отнимаем от каждого числа в массиве ord из оригинального текста, получаем код. При необходимости удлиняем текст, пока не выберем весь "шифроблокнот". Занимает не 100500 миллионов лет, а ~пару миллисекунд

Шифр неуловимого Джо.

Одноразовые (или сеансовые) ключи в помощь ;)

Да, но это при условии что нам известен оригинал.

Представьте, что этот шифр as is внедрила Германия во время ВМВ. Союзники записывают все сообщения, но расшифровать не могут. И тут славные разведчики похищают ровно 1 нешифрованное сообщение. С этого момента союзники могут расшифровать все сообщения, и старые, и новые. Конец.

Поэтому использовались шифроблокноты с одноразовыми ключами.
Например, такие
image

Но, если каждое зашифрованное послание начинать словами «Алекс Юстасу», то стойкость шифра проседает примерно до нуля.

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

Не совсем. Разницы как таковой нет. Ты не знаешь, какой символ спрятан за рандомным значением именно этого ключа. Например ключ на 100. При шифровке 101 символа 1 ключом мы X+random. Даже если ты попробуешь сверить его с первым числом, который был зашифрован с тем же 1 ключом, то это не даст ничего. И так далее к остальным ключам.

Ты не знаешь, какой символ спрятан за рандомным значением именно этого ключа

Допустим, шифруются файлы html. Спорим на булочку, я угадаю первые 6 букв с одного раза? :D

Возьмём http запрос на html файл: первые символы фиксированны, где-то в теле должно быть <!DOCTYPE html/>, <body> И пару других заранее известных строк. Если файл (точнее ответ с статусом, заголовками, кукакими и контентом) будет больше чем ключ в виде N случайных чисел - перебор до смешного прост.

Дальше, передать ключ из 2048 * 4 байт та ещё задача, ещё большей задачей является генерация этих чисел, все ГПСЧ обладают предсказуемостью и уже исходя из небольшого количества первых заранее известных строк уже вскрывается весь ключ. Даже если вы солите каждый раунд случайного числа, статистически все еще есть 0.001 вероятность выпадения числа А, когда у других - 0.0000001. Но, допустим, у вас совсем совсем крипкостойкий случайный алгоритм.

Определить длину ключа по известному файлу тоже не сложно. Благо, плюс, в отличие от степени, вычисляется очень быстро, перебирать на той же видеокарте просто. (Это к тому зачем степень нужна). Мы опираемся на факт что узнав одно число, мы вскрываем его сразу для всех букв по индексу [k*N], где N - длина ключа. А вот mod не позволяет узнать оригинальное число, ой… вот он зачем?

К слову, он не только затем чтобы было сложнее получить оригинальное число всего по одному совпадению, но ещё чтобы перекрыть вот такую странную вещь:

Вы написали

В диапазоне миллиарда

Мне не нужно проверять миллиард. Я знаю что английские буквы поместятся в 7 бит, так что мне достаточно проверить 128 чисел от s до s+128, где s - зашифрованное число. В итоге у нас уже нужно перебрать просто смешное количество вариантов, каждый из которых - сумма. Хуже того, это мгновенно открывает длину ключа, потому что я могу сделать s mod 128 и получить порядок чисел дальше просто посмотреть когда он начинает повторяться. Да мне даже http / html знать не нужно, да даже не только английский, а все языки на все, это все равно 16 бит на символ, это уже не миллиарды опций на перебор, в всего 64 тысячи.

Но да, если текст передан только один раз и он короче ключа - это сработает, но тогда проще сразу текст передать, чем сам ключ.

PS я абсолютно ничего не понимаю в криптографии, но уже способен сказать что ваш шифр ещё хуже чем шифр Виженера, представьте что профессионал сделает.

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

image

Вы опасно некомпетентным в криптографии.

Для тех самых "это изи": [1747047, 57779079, 51040523, 80896095, 94514260, 1747046, 57779073, 51040541, 80896117, 94514270]

Ключ на 5 чисел
Шифрование и дешифрование проходят с ord() и chr()

Ответ в личку.

Это ж вам придётся передать другому человеку в тайне 5 восьмизначных чисел (ключ). Какой смысл — можно изначальные 10 букв сообщения и передать в тайне.

Зашифруйте фразу хотя бы из 40 букв, тогда будет какой-то смысл.

А этот алгоритм только с юникодом работает или как? А то может оказаться, что когда вы доберётесь в своих изысканиях до байтов, то для обеспечения даже такой же паршивой криптостойкости понадобится массив ключа уже не из 6, а 24 элементов.

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

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

У меня, у дилетанта в области криптоанализа, уйдет пара часов на взлом этого супер шифра, но и они стоят дороже кофе с булочкой ;) А спортивного интереса нет совершенно, потому что это детская задача по сути. Старый алгоритм, которому неспроста пришли на смену уже великое множество более сложных.

Все еще пытаюсь найти в тексте намек на иронию...

Главное правило криптографии - никогда не изобретай собственных алгоритмов!

Но все алгоритмы кем то изобретены?

Верно, но правило остается правилом

За перекрытие шифра мой преподаватель по криптографии расстреливал на месте

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

Не учите питон, учите мат. часть.

Интерестна криптография, начинайте с азов, базовых алгоритмов и подходов и тогда не надо будет писать статьи на хабре и спрашивать: "Кто знает что это такое?"

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

Особенно строго этому правилу следует придерживаться в областях, имеющих отношение к криптографии.

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

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

Как вы себе представляете эту схему для вэба - с паспортом и внешним хдд идем в МФЦ и получаем сотню гигов ключей на месяц?

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории