Насколько надежно XOR-шифрование: данные.dat XOR маска.gif ?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Wolfie
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 213
Зарегистрирован: 06.03.2006 (Пн) 18:52
Откуда: Россия, Москва, СЗАО

Насколько надежно XOR-шифрование: данные.dat XOR маска.gif ?

Сообщение Wolfie » 20.03.2008 (Чт) 4:02

Приветствую!
Недавно оказался перед необходимостью простенько прошифровать(обратимо) кое-какие данные, о существовании которых по-идее никто не знает (шифруюсь от случайного пользователя, но и на случай несанкционирвоанного доступа к ПК из сети например), потому я не стал долго думать над криптографией, и мне пришла мысль File.dat XOR File.GIF (да по сути любой формат, RAR и PNG неплохо тоже) - пролистал кучу статей - то ругают то хвалят - так и не понял насколько надежен такой метод от взлома каким-нибудь способом (каким именно?) ? Вот прошу знающего человека(людей) объяснить мне простыми словами надежность data XOR mask (длинна маски приводится к длинне исходного файла через сцепление mask=mask & mask... нужное число раз).

Но чтобы мне спать совсем спокойно, я добавил еще вторую маску, простую: data XOR mask XOR String$(X,Len(data)), где Х это число от 1 до 255. Стоило это добалять? Прибавило ли это стойкости? Буду всем благодарен за разъяснения
Последний раз редактировалось Wolfie 22.03.2008 (Сб) 4:03, всего редактировалось 1 раз.
··•··•••··•··••·•·•·•···••·•••···•···•••·•··•·•··
C:\> per asper ad astra
'ASTRA' answer: Path 'ASPER' Not Found
684 Errare humanum est!
C:\> _

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 20.03.2008 (Чт) 7:11

Wolfie, про XOR много слышал. ИМХО - это самый банальный способ. Есть куча алгоритмов двустороннего шифрования, типо AES, twofish, Serpent, BlowFish и т.д. (исходники последнего у меня есть на Вб), которые сейчас считаются самыми надежными.
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

Quertoo
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 20.03.2008 (Чт) 11:29
Откуда: Смоленск

Сообщение Quertoo » 20.03.2008 (Чт) 12:08

прошифровать(обратимо)

Посмотрел бы я на человека, который шифрует данные необратимо ))))

Я так понял человеку надо шифрование от дурака, XORa вполне хватит. ИМХО
Я не ламер, просто перехожу с VB6 на VB 2008, поэтому могу говорить глупости.

Wolfie
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 213
Зарегистрирован: 06.03.2006 (Пн) 18:52
Откуда: Россия, Москва, СЗАО

Сообщение Wolfie » 20.03.2008 (Чт) 22:53

Matew Спасибо за совет, расскажи что именно слышал, если не сложно... Я натыкался на разные статьи про всяческие способы шифровки, упоминающие эти алгоритмы - мне не требуется всеже такой уж уровень и боюсь что ковыряться придется долго, ну да и хотелось бы именно с XOR разобраться, потому что статьи по ХОRу меня вообще запутали скорее...

Quertoo необратимо - вирусы например, но это всеже не мой случай, и я хотел это уточнить ;)
а не от дурака зашифрует?)) степень дурости разная бывает, так собственно, чем плох ХОR против "недураков"?
··•··•••··•··••·•·•·•···••·•••···•···•••·•··•·•··
C:\> per asper ad astra
'ASTRA' answer: Path 'ASPER' Not Found
684 Errare humanum est!
C:\> _

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 21.03.2008 (Пт) 1:05

XOR может использоваться только "от дурака" и в случае, если никто и так не догадается, что там что-то есть...

XOR - оооочень нестойкий алгоритм к любым атакам. Если инфа текстовая - то маска вскрывается "на раз" )
label:
cli
jmp label

Wolfie
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 213
Зарегистрирован: 06.03.2006 (Пн) 18:52
Откуда: Россия, Москва, СЗАО

Сообщение Wolfie » 21.03.2008 (Пт) 6:08

Да я вот это вот уже видел и слышал, прошу продемонстрировать например на прикрепленном файле - очень хочу увидеть принципы вскрытия, но можно и просто их описать кратко...
Вложения
encode_me.zip
32 байта зашифрованных XORом - лично я не пойму как их расшифровать... Объясните кому не трудно
(32 байт) Скачиваний: 225
··•··•••··•··••·•·•·•···••·•••···•···•••·•··•·•··
C:\> per asper ad astra
'ASTRA' answer: Path 'ASPER' Not Found
684 Errare humanum est!
C:\> _

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 21.03.2008 (Пт) 9:35

Я же говорю, если это текстовая инфа + 32 байта маловато.
Есть граничные условия, при которых любое шифрование перестает быть стойким. Например, длина ключа в 1 символ. =)

В данном случае надо где-то килобайт зашифрованного текста, чтобы раскодировать xor...
Либо примерно представлять, ЧТО там за информация.
label:
cli
jmp label

Wolfie
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 213
Зарегистрирован: 06.03.2006 (Пн) 18:52
Откуда: Россия, Москва, СЗАО

Сообщение Wolfie » 22.03.2008 (Сб) 3:46

Да текстовая, точнее там могут быть списки паролей и e-mail И разные комменты вроде имен для поля To: - по идее, я буду хранить части информации в разных файлах, каждый файл - столбец в таблице, и каждый файл имеет свою маску, длина ключа - длина файла маски - это может быть даже более длины шифруемого файла, (если я правильно понимаю что такое длина ключа), вдобавок, в качестве маски будут RARы и GIFы, т.е. сжато-зашифрованные файлы с весьма богатым набором символов) . Вот файл размером около 1 Кб, но меня даже скорее волнует как "это" делается с XOR, какими способами ломать, чем сам результат...
Вложения
encode_me.zip
Около килобайта зашифрованного текста, для жилающих разгадывать головоломки иили показать мне как же безрассудно хранить при помощи XOR список паролей или что либо еще... В этом файле русский текст - я облегчил задачу.
(1.03 Кб) Скачиваний: 167
··•··•••··•··••·•·•·•···••·•••···•···•••·•··•·•··
C:\> per asper ad astra
'ASTRA' answer: Path 'ASPER' Not Found
684 Errare humanum est!
C:\> _

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 23.03.2008 (Вс) 12:15

Если длина маски(ключа) больше длины текста, в общем случае xor-шифрование не вскрыть.
label:
cli
jmp label

Wolfie
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 213
Зарегистрирован: 06.03.2006 (Пн) 18:52
Откуда: Россия, Москва, СЗАО

Сообщение Wolfie » 24.03.2008 (Пн) 4:24

iGrok спасибо за участие.

маска будет от 1 до 3 Кб, небольшая картинка, иногда она может быть чуть меньше текста, может чуть больше - как вкрывать-то всеравно? каким методом, не брутфорсом же ведь XOR вскрывают, а чем?

А кроме трех добрых человек на этом форуме вообще есть кто-нибудь еще понимающий о чем я говорю и желающий высказать мнение???, просто не верится что нет, тут вроде мудрые программеры год назад были...
··•··•••··•··••·•·•·•···••·•••···•···•••·•··•·•··
C:\> per asper ad astra
'ASTRA' answer: Path 'ASPER' Not Found
684 Errare humanum est!
C:\> _

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 24.03.2008 (Пн) 10:15

Wolfie
1) Какова длина ключа при шифровании encode_me.zip?
2) Использовать в качестве ключа RAR или GIF-файлы - глупо. У них есть монолитные элементы структуры, которые будут только способствовать дешифровки?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 24.03.2008 (Пн) 13:45

Общий принцип - берется заведомо известный участок текста или маски (как в случае с GIF / JPEG).
Если известно его местоположение - еще лучше.
Накладывается на шифрованный текст. Получаем часть расшифрованного текста, а дальше - анализ по словарю. Если маска короткая - анализ по словарю позволяет вскрыть процентов 70-80 текста, а в некоторых случаях с достаточно короткой маской, и весь.

XOR String$(X,Len(data)) не дает ничего, кроме траты дешифровщиком минут 10-15 на перебор 255 символов )
Повторюсь - это, если известен хотя бы кусок структуры.
Если нет, но известно, что там текст - то перебор по словарю.
label:
cli
jmp label

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Сообщение burik » 24.03.2008 (Пн) 14:12

Matew, прочитал что у тебя есть исходники BlowFish на VB, не можешь поделиться? Буду очень благодарен..

Quertoo, пароли очень удобно шифровать необратимо - их потом расшифровывать, как правило, не надо..
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 25.03.2008 (Вт) 11:30

Задаешь Key и encrypt/decrypt нужный тип данных..
Вложения
BlowFish.zip
Класс
(11.77 Кб) Скачиваний: 346

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 25.03.2008 (Вт) 11:47

Wolfie писал(а):iGrok спасибо за участие.
маска будет от 1 до 3 Кб, небольшая картинка, иногда она может быть чуть меньше текста, может чуть больше - как вкрывать-то всеравно? каким методом, не брутфорсом же ведь XOR вскрывают, а чем?


XOR вскрывают частотным анализом, причем в автоматическом режиме, с помощью специального, криптоаналитического софта.
Время взлома подобного шифра, на среднем ПК всего 5-10 секунд.

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Сообщение burik » 25.03.2008 (Вт) 12:34

Matew, вылетает ошибка в функции "F". Там используется некоторая функция "UnsignedAdd", которую VB, видимо, не знает(и я тоже).. Ты уже использовал это?
Но все равно спасибо.
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 25.03.2008 (Вт) 13:07

jangle писал(а):XOR вскрывают частотным анализом, причем в автоматическом режиме, с помощью специального, криптоаналитического софта.
Время взлома подобного шифра, на среднем ПК всего 5-10 секунд.
Частотный анализ по коду с переменным ключем, где один и тот же символ может обозначать разные буквы в зависимости от положения в строке? Может, я и ничего не понимаю в криптографии, но как-то это мне кажется не особо реальным...

Шифрование "одним символом" - да. Частотным анализом вскрывается моментально.
label:
cli
jmp label

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 25.03.2008 (Вт) 13:44

iGrok писал(а):Частотный анализ по коду с переменным ключем, где один и тот же символ может обозначать разные буквы в зависимости от положения в строке? Может, я и ничего не понимаю в криптографии, но как-то это мне кажется не особо реальным...

Шифрование "одним символом" - да. Частотным анализом вскрывается моментально.


Тут все зависит от качества ключа, если ключ плохой (например картинка где много однотонных областей) имеет типичную структуру, куски кода с повторением символов и т.д. То при XOR такого "когерентного" ключа с текстом, будет образовываться своебразная интерферировання область шифротекста называемая - крибом. Это характерный "криптографический узор" среди случайной мешанины чисел. Некоторые криптоаналитики, могут "видеть" крибы, просто рассматривая шифротекст. В крибе, можно применять частотный анализ. А значит, можно восстановить часть текста, или даже весь, а также отыскать ключ, и расшифровать весь шифротекст

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 25.03.2008 (Вт) 16:00

Угу. В случае с таким ключем - да. В случае с полностью неоднородным - уже не прокатит. Но полностью неоднородный ключ такого объема надо еще сгенерить...
label:
cli
jmp label

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 26.03.2008 (Ср) 2:47

burik, ой!
Вложения
AddedFeatures.rar
модуль
(957 байт) Скачиваний: 279
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Сообщение burik » 26.03.2008 (Ср) 12:31

Matew, ага вот так работает.. Спасибо.
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

Wolfie
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 213
Зарегистрирован: 06.03.2006 (Пн) 18:52
Откуда: Россия, Москва, СЗАО

Сообщение Wolfie » 27.03.2008 (Чт) 0:23

Хакер
1. 928 байт длина ключа для второго encode_zip
2. Мне так не показалось при беглом осмотре файла "гиф" или "рар" в НЕХ-эдиторе (а вот в jpg я увидел такие блоки, как и в doc и вообще в файлах с хэдэром PK), и ктому же, я предполагаю всеже выбирать сам маску (например фотографии ужатые в гиф, и притом оптимизированные Agif), но спасибо, буду иметь ввиду, тогда проще - сгенерирую на 5 Кб рандомный файл...

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

jangle
благодарю, подробно описали, но я не совсем понял :roll: Как это увидеть последовательность там, где ее просто нет, ну например я взял и вручную набил килобайт ключа, просто из головы, откуда там такой криб? Однако, не порекомендуете программы-дешифровщики XOR и крипто-аналитический софт, я бы сам потестировал...

Вообщем, не укладывается у меня (я уж совсем не криптолог) -
Как это перебором по словарю найти текст там, где может быть любое из слов словаря? - откуда узнаете что
В??? это ВОЛК а не ВЛОМ или ВАКХ ? Ну и даже узнаете допустим кусок ключа и кусок шифра - байт 30 например, что это даст при ключе в 3 Кб для файла 3 Кб?

Проще спрошу - если не известно что за файл использован в качестве маски, т.е. даже не ясно что это картинка или архив, и использована GIF-фотография (с палитрой на все 256 цветов) не меньше исходного файла, то я смогу спать спокойно храня список своих адресов-паролей где-нибудь в одной из 1000 папок на моем компьютере под неприметным именем? Или лучше сделать ключ из рандом-набора и тогда уж спать совсем спокойно?
··•··•••··•··••·•·•·•···••·•••···•···•••·•··•·•··
C:\> per asper ad astra
'ASTRA' answer: Path 'ASPER' Not Found
684 Errare humanum est!
C:\> _

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 27.03.2008 (Чт) 10:39

Wolfie писал(а):jangle
благодарю, подробно описали, но я не совсем понял :roll: Как это увидеть последовательность там, где ее просто нет, ну например я взял и вручную набил килобайт ключа, просто из головы, откуда там такой криб?


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

Однако, не порекомендуете программы-дешифровщики XOR и крипто-аналитический софт, я бы сам потестировал...


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

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


Лучше не заниматься ерундой, и использовать готовую реализацию DES или RC1. Эти алгоритмы протестированы криптоаналитиками на стойкость, и поэтому безопасны для использования (DES могут сломать за несколько суток, брутфорсом на мощном майнфрейме).

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

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 27.03.2008 (Чт) 10:46

Вообщем, не укладывается у меня (я уж совсем не криптолог) -
Как это перебором по словарю найти текст там, где может быть любое из слов словаря? - откуда узнаете что
В??? это ВОЛК а не ВЛОМ или ВАКХ ? Ну и даже узнаете допустим кусок ключа и кусок шифра - байт 30 например, что это даст при ключе в 3 Кб для файла 3 Кб?
Абсолютно правильно не укладывается. Есть невскрываемый способ шифрования, когда ключ и текст имеют одинаковый размер и набор символов, называется "одноразовый блокнот". Невскрываемый по той простой причине, что можно подобрать такие ключи, что при расшифровке может получиться как отрывок из Войны и мира, так и исходники кернела Висты :) Единственный нюанс - ключ должен быть одноразовым.
Лучший способ понять что-то самому — объяснить это другому.

Wolfie
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 213
Зарегистрирован: 06.03.2006 (Пн) 18:52
Откуда: Россия, Москва, СЗАО

Всем спасибо!

Сообщение Wolfie » 01.04.2008 (Вт) 0:18

Господа, всем спасибо за советы и подробные разъяснения: я сделал некоторые полезные для себя выводы о длине и качестве XOR-маски (ключа), а также получил наводки на иные криптостойкие алгоритмы :wink:
··•··•••··•··••·•·•·•···••·•••···•···•••·•··•·•··
C:\> per asper ad astra
'ASTRA' answer: Path 'ASPER' Not Found
684 Errare humanum est!
C:\> _


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 35

    TopList