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

не равномерно

Вполне может быть

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

Доказательства! Расшифруй! Хотя бы предложи способ же! А если я на порядки увеличу размеры «лже_ключа»? Ну вот как можно без терморектального анализа это забороть? Два часа и только крики — да халява мол, да это младшая сестренка осилит, а я по-прежнему не вижу даже гипотетического способа это забороть!

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

Я надеюсь ты проживаешь не в РФ

В ней, родимой :)

Если да, то никогда и никому не выкладывай в паблик код

Уже выложил в ОП-посте. Там коду сорок строчек, в чем и прикол.

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

Ха-ха... А все же? Как такое сломать? Вот в упор не вижу! Ну же, научите дурака! Я понимаю что то, что я предлагаю, не может быть правдой, но почему — не понимаю. Серьезно. Хочу умную речь!

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

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

Я это осознаю. Но разве сложно тупому школьнику указать в двух словах где он не прав, акромя советов подучить матчасть? Я для чего написал что я — нуб и дилетант? Сабж — не моя профессия, я просто эксперементирую и философствую (толкс на дворе), имхо, неправильно отправлять человека учиться профессиональному футболу, если он под пивко решил пофилософствовать про сборную, заранее оговорив что он — профан.

Вышку по IT получи

Не помогает. :) Если под «вышкой» ты не подразумеваешь высшую меру :)

Если уже никак, то штудируй Шнайера, он лют и честен.

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

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

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

ЯННП

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

unt1tled ★★★★
()
Ответ на: Всё одно от Camel

Где сообщения о разных уязвимостях?

Ай! Я не говорю что они есть. Я говорю что у меня сложилось такое впечатление. Очень может быть (и я надеюсь) что ложное. И че это меняет? Тред не об этом.

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

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

Это! Я попрошу! Ты подменяешь понятия! Давай я тебе секретный ключ передам (секретным образом) и тогда поговорим? Мой алгоритм предполагает наличие секретных ключей о тех кто обменивается инфой и их отсутствие у тех, кому не положено вникать.

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

И от них не спасет ни твое 128битие, ни что еще.

Положим, у меня и того кому я хочу отправить шифрованое сообщение компы вообще не подключены к сети (ZX Spectrum'ы они, например) а сообщения я передаю в распечатанном виде факсом. Кулхацкеры не страшны. Бредовый тезис

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

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

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

Вникаешь?

нет

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

Ты затруднил расшифровку одного маленького файла

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

и почему только маленького? ты забываешь про 2-кратное шифрование

и не группы маленьких.

не ставил такую задачу

... и, эта, архив?

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

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

Как ты себе это представляешь? Ну вот есть у злоумышленника такая же делфи как у меня и такая же (пусть даже моя) реализация алгоритма генерации ключа (хотя в случае с моим кустарным шифрованием, разумнее вообще не распространяться как я там генерирую ключ) и че? как злоумышленник будет подбирать ключ? напишет програмку как мою, но чтоб прерывалась в псевдослучайное всемя после старта? Окей, там будет не 64кб случайного, но сколько? Сказать сколько i3 в секунду успевает раз поменять местями два байта в оперативке? Как бы не больше чем 64 * 2^10 раз!

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

Это делают для фана детки.

Будто что-то плохое

Серьезные мужи, которым по работе такое надо - склеротики и пофигисты. Им уже давно не интересно ничего в программировании. Юзают то, что продает им микросовт.

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

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

Какая лютая хрень.

Мне третий час такое говорят и никто ниче уменее так и не сказал. Все ограничиваются фразами что элементарщина и никто так не далает. Однако как это забороть так никто и не предложил

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

Спокойно. На лоре не было никогда криптоаналитиков, пиши на pgpru.com, там тебе объяснят, что и как.

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

Я тебе сказал, что у тебя около 128 бит энтропии и идея — туфта. Дашь код шифровальщика на C, который соберется на моем дебиане и зашифрованное число <n штук нулей>9 (и само n) — постараюсь подобрать от него «ключ».

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

Сказать сколько i3 в секунду успевает раз поменять местями два байта в оперативке?

Случайных? Именно в RAM? Гораздо меньше, чем ты думаешь: RAM — тормоз.

Окей, там будет не 64кб случайного, но сколько?

Ровно столько, сколько энтропии содержится во времени твоего нажатия на кнопку.

Время нажатия на кнопку ПРЕДСКАЗУЕМО. Допустим, мы берём промежуток в 2 минуты (реалистично?) с точностью до наносекунды. Получаем 1,2*10¹¹ разных значений, что соответствует 37 битам энтропии. Это — длина твоего ключа если ты шифруешь белый шум. Но у тебя ещё более серьёзная проблема: разница между разными значениями — одна (!!!) перестановка. Если известно хоть что-то о том, что было в исходном файле, то время атаки (и без того смешное) сокращается ещё в несколько раз. Если ты всерьёз считаешь, что твой «ключ» будет достаточно случайным после этого — ты серьёзно ошибаешься.

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

Про частотный анализ тебе уже всё сказали, но он будет тебя волновать только если считать твой «ключ» достаточно случайным. А в твоём случае в нём 37 бит вместо 64 килобайт информации.

Увеличение временного промежутка в 2 раза добавляет 1 бит энтропии. Можешь посчитать, сколько тебе до хотя бы 60 бит.

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

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

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

Я тебе сказал, что у тебя около 128 бит энтропии и идея — туфта

Эту мысль я понял :)

ашь код шифровальщика на C, который соберется на моем дебиане и зашифрованное число <n штук нулей>9 (и само n) — постараюсь подобрать от него «ключ».

На фри паскале пойдет?

тебе нужно будет только

apt-get install fpc

и

fpc encrypter.pas

сделать. код будет тебе понятен: на таких мелочах что си, сто паскаль только скобочками отличаются. Идет?

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

весь учебник?

юмор. одобряю :)

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

Что в ней лютого-то? Обыкновенный интеллектуальный понос.

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

Сказать сколько i3 в секунду успевает раз поменять местями два байта в оперативке?

Случайных? Именно в RAM? Гораздо меньше, чем ты думаешь: RAM — тормоз.

вот тебе код на фри паскале, который 64 * 10 ^ 2 раз меняет два байта в оперативке местами

program exp1;

const ARRAY_SIZE = 256 * 256;

var ar: array[0..ARRAY_SIZE-1] of byte;
    i: longint;
    x,y: word;
    buf: byte;
begin
  for i:=0 to 64*1024-1 do
  begin
    x:=trunc(random*256*256);
    y:=trunc(random*256*256);
    buf := ar[y];
    ar[y] := ar[x];
    ar[x] := buf;
  end;
end.

вот как он выполняется на i5-ом

$ time ./exp1 

real    0m0.012s
user    0m0.008s
sys     0m0.000s

Ровно столько, сколько энтропии содержится во времени твоего нажатия на кнопку.

Окей, хоть его ты случайным признаешь?

Время нажатия на кнопку ПРЕДСКАЗУЕМО. Допустим, мы берём промежуток в 2 минуты (реалистично?) с точностью до наносекунды. Получаем 1,2*10¹¹ разных значений, что соответствует 37 битам энтропии. Это — длина твоего ключа если ты шифруешь белый шум. Но у тебя ещё более серьёзная проблема: разница между разными значениями — одна (!!!) перестановка. Если известно хоть что-то о том, что было в исходном файле, то время атаки (и без того смешное) сокращается ещё в несколько раз. Если ты всерьёз считаешь, что твой «ключ» будет достаточно случайным после этого — ты серьёзно ошибаешься.

Первый дельный монолог за тред. А если я руками наэнтропию ключ?

Увеличение временного промежутка в 2 раза добавляет 1 бит энтропии. Можешь посчитать, сколько тебе до хотя бы 60 бит.

Дело. Ну а если я буду мышкой по экрану водить? Или голосом петь?

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

Да. Дело говоришь. С генерацией ключа беда. Но подлечить легко. А как сам алгоритм шифрования?

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

Странный ты. А еще в криптографию лезешь.

Почему вдруг серьезные мужики — склеротики.

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

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

64 * 10 ^ 2 раз меняет два байта в оперативке местами

то есть в среднем каждый элемент твоей последовательности перемещён 2 раза? Не впечатляет.

Хотя большая часть твоего времени — инициализация.

Ну а если я буду мышкой по экрану водить?

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

В конце концов, прекрати строить велосипеды и возьми /dev/random.

А как сам алгоритм шифрования

Тебе уже сказали про него: при больших объёмах подвержен частотному анализу, при маленьких не лучше XOR'а. Ну и сейчас обычно думают об асимметричном шифровании, поскольку в симметричном до сих пор есть XOR с одноразовым блокнотом и подобные вещи.

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

Иди читай учебники. Правда. Это достаточно развернутый и технически обоснованный ответ: «иди читай учебники». На курсере есть достаточно хороший курс Cpyptography I, он покрывает твои вопросы как конь овцу.

Shaman007 ★★★★★
()

На выходе мы заимели массив, в котором гарантированно по 256 раз встречается каждое целое число из диапазона 0..255.
псевдослучайно выбираем двухбайтовый индекс и, если в ключ[индекс] == наш_байт — то записываем в выходной файл этот самый индекс и выходим из цикла

Да это же полиподстановка в чистом виде. Боянище страшный.

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

border-radius
()
Ответ на: комментарий от border-radius

Тащемта, всё предельно просто.

Имеется ключ K, некая хэш-функция (далее Hash), функция расширения ключа (далее KEF, в принципе, может быть KEF(K)=K или KEF(K)=Hash(k), не столь важно). Псевдослучайную гамму генерим по следующим правилам:

γ[0]=Hash(KEF(K));
for(i=1;i<blockcount;i++) γ[i]=Hash(K^Hash(K^γ[i-1]));
А дальше просто ксорим её с текстом, как во всех ПСШ. Для усиления скрытности можно ксорить не сначала, а несколько итераций псевдослучайного генератора прогнать вхолостую, можно даже поставить их количество в зависимость от ключа. Короче, с такой схемой полёт фантазии безграничен.

P.S. Что касается генерации самих случайных ключей - намекну на rdtsc.

border-radius
()

Кулхацкеры не взломают ни один стандарт считающийся надежным. Об остальном позаботиться неуловимый джо.

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

скажите, тс изобрел one-time pad?

Нет, он изобрёл кривой вариант полиподстановки.

border-radius
()

(тред не читал)

Ты путаешь бреши в алгоритме и ошибки реализации. Ошибки в хороших алгоритмах находят не часто, на это уходят годы. Ошибки реализации это часто либо переполение буфера (привет, С++) либо ошибки в логике приложения/протокола (кривые руки и незнание матчасти).

Совет номер 1 велосипедостроителям: никогда, никогда не придумывайте свой алгоритм шифрования.

И да, марш читать «Прикладную криптографию» Шнайера.

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

Это! Я попрошу! Ты подменяешь понятия! Давай я тебе секретный ключ передам (секретным образом) и тогда поговорим? Мой алгоритм предполагает наличие секретных ключей о тех кто обменивается инфой и их отсутствие у тех, кому не положено вникать.

Значит, это подмножество шифров Вернама, с соответствующими проблемами (т.е. они неприменимы в массовой практике).

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

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

Прости, твою портянку, думаю, мало кто осилил прочесть так, чтоб все было понятно.

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

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

Ну, как тебе сказать... Ты выдал поток невнятной массы, даже не используя никаких базовых терминов. Т.е. сообщение, ключ, криптограмма — этих терминов не используется, хотя на их освоение ты бы потратил гораздо меньше времени, чем писал свою софтину и этот топик. Лично для меня это выглядит как: «я придумал радио, пока не работает, но скоро с пальчиковой батарейки буду вещать на весь мир». При этом надо понимать, что я совсем не профи в криптографии (пара лабораторок не в счет).

Igron ★★★★★
()

когда пользователю надоедает пырить в экран, он жмет кнопку «стоп»

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

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

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

не актуально. одно из основных требований к алгоритму шифрования — быстрая работа и отсутствие в пределах погрешности роста затрат памяти. /*скорость работы вашего алгоритма, к тому же, весьма низкая*/. алсо, криптостойкость он не увеличит — любой современный массовый алгоритм симметричного шифрования с 256+ битным ключом даст бОльшую стойкость.

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

А еще в криптографию лезешь.

Никуда я не лезу. Я так, играюсь

А сеньоры юзают вижалстудию на семерочке и дотнет фреймворк

А кто тогда линуксы и GnuPG эти ваши пишет?

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

64 * 10 ^ 2 раз меняет два байта в оперативке местами

то есть в среднем каждый элемент твоей последовательности перемещён 2 раза? Не впечатляет.

Пффф... этот код я показал чтоб показать скорость. В прикладном велосипеде они мутузятся пока не нажмешь кнопку.

Хотя большая часть твоего времени — инициализация.

Я в курсе. Это пример скорости перемешивания

Ну а если я буду мышкой по экрану водить?

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

Навскидку приходят еще идеи использовать микрофон и веб камеру.

В конце концов, прекрати строить велосипеды и возьми /dev/random.

так бы и поступил, если бы был нужен рандом. Но я хотел пофилософствовать

Тебе уже сказали про него: при больших объёмах подвержен частотному анализу

Вот тут по подробнее, в двух словах. Если бы я хотел разобраться в теме и стать специалистом, то начал бы с книг, а не с лора. Я попросил натыкать мордой в ошибки, коль все такие образованные, а мне все хором — «иди ботать книги!», эдак я и без вас умею...

при маленьких не лучше XOR'а

Да. Осознал. Спасибо. По скорости проиграет ксору

Ну и сейчас обычно думают об асимметричном шифровании

да, это заметно

поскольку в симметричном до сих пор есть XOR с одноразовым блокнотом и подобные вещи

Да, оно попроще будет и побыстрее того, что я навелосипедил

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

Иди читай учебники. Правда. Это достаточно развернутый и технически обоснованный ответ: «иди читай учебники». На курсере есть достаточно хороший курс Cpyptography I, он покрывает твои вопросы как конь овцу.

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

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

Да это же полиподстановка в чистом виде. Боянище страшный.

Так точно!

pihter ★★★★★
() автор топика
Ответ на: Тащемта, всё предельно просто. от border-radius

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

да он с любой схемой безграничен

Что касается генерации самих случайных ключей - намекну на rdtsc.

Там случайности всего 64 бита и то с оговорками. Но оно, в делфях, так и работает, насколько я понимаю, просто в качестве зерна для псевдослучайного генератора затравливает это число. В конечном счете случайность все равно определяется случайностью времени доступа.

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

Кулхацкеры не взломают ни один стандарт считающийся надежным

Бред. Все когда-то считались надежными. Вон вайфай тоже. А теперь любой школоло умеет WPA «ломануть».

Вот, например, завтра какой-нибудь очередной Перельман решит задачу разложения на множители и RSA перестанет быть стойким в одночасье. Математически ни для одной «сложной задачи» не доказано отсутствие простого решения.

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

Ты путаешь бреши в алгоритме и ошибки реализации

Не путаю а ставлю в один ряд. Тем не менее это возможно, а стало быть — неизбежно.

Ошибки реализации это часто либо переполение буфера (привет, С++) либо ошибки в логике приложения/протокола (кривые руки и незнание матчасти).

Согласен.

Совет номер 1 велосипедостроителям: никогда, никогда не придумывайте свой алгоритм шифрования.

Так жить скучно :)

И да, марш читать «Прикладную криптографию» Шнайера.

Это я и без вас умею, спасибо.

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

Значит, это подмножество шифров Вернама, с соответствующими проблемами (т.е. они неприменимы в массовой практике).

Блджад. Че ж ты сам ставишь тезис и сам его героически опровергаешь? Где я говорил про применимость в массовой практике?

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

Прости, твою портянку, думаю, мало кто осилил прочесть так, чтоб все было понятно.

Да много кто, судя по треду

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

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

А теперь внимательно смотрим в ОП-пост и ищем там слова «сообщение», «ключ», «криптограмма» еще раз.

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

Да для меня тоже! Но ваши ответы выглядят как: «эй пацан, иди изучай радиоэлектронику и физику, стань доктором наук и сам все поймешь и плевать что ты просто поиграться захотел, а не жизнь свою менять! мы все тут такие умные но никто так и не смог объяснить тебе что в батарейке мощности не хватит для вещания на весь мир элементарно»

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

В делфи...

и сразу фейл. кстати, дельфи есть только на масдае. где крики «я за бан»?

:) на удивление, криков таких не было. В свое оправдание скажу что делфи крутил в виртуалбоксе на дебиане :)

// и ты же в курсе про лазарус?

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

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

Логично.

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

Согласен, я это осознавал.

не актуально. одно из основных требований к алгоритму шифрования — быстрая работа и отсутствие в пределах погрешности роста затрат памяти. /*скорость работы вашего алгоритма, к тому же, весьма низкая*/. алсо, криптостойкость он не увеличит — любой современный массовый алгоритм симметричного шифрования с 256+ битным ключом даст бОльшую стойкость.

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

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

Тоже не эксперт в шифровании. Но мне кажется, здесь есть косяк. Он состоит в том, что сложность шифрования мало зависит от длины ключа.

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

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

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

hibou ★★★★★
()
Последнее исправление: hibou (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.