Сейчас на форуме: Rio, tyns777, zombi-vadim (+7 невидимых)

 eXeL@B —› Программирование —› возможно ли это обратить?
Посл.ответ Сообщение


Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 20 августа 2014 22:29
· Личное сообщение · #1

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

но всё-таки результаты не совпадают...

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

72da_20.08.2014_EXELAB.rU.tgz - decrypt.cpp



Ранг: 590.6 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 21 августа 2014 00:21
· Личное сообщение · #2

Похоже, что Transform => data1 * data2 mod key
Дальше разберешься?

-----
старый пень




Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 21 августа 2014 07:26
· Личное сообщение · #3

r_e пишет:
Похоже, что Transform => data1 * data2 mod key
Дальше разберешься?

uint decKey[] = {
0x5207F766,0x01802B20,0xD521BAA7,0x413DF910,
0x98A2CFB5,0x0BCE3D29,0x7822AC4A,0x43EDC1F8,
0x181313F1,0x0A3681CD,0x7CA1D69C,0xE1731780,
0x8B4894D9,0x08431C6E,0x731496AF,0xF3C86456,
0x14DB3E5F,0xF4A5E921,0x6B87751A,0xCF19E5A0,
0x61F748D1,0x3DD28192,0xD71154E3,0x609781CB,
0x5E94F797,0x1308C784,0x581D3FEF,0x71E457EF,
0x35A9BC10,0x32E719F4,0x7F14530F,0x1A137F29
};
RSA 1024? ?

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....


| Сообщение посчитали полезным: -=AkaBOSS=-


Ранг: 52.0 (постоянный), 146thx
Активность: 0.030.08
Статус: Участник

Создано: 21 августа 2014 08:58 · Поправил: UniSoft
· Личное сообщение · #4

-=AkaBOSS=-
-=AkaBOSS=- пишет:
ключ в состоянии после расшифровки и будет являться ключом шифрования,

Это RSA-1024 (асимметричное шифрование), т.е. ключи разные...
хотя выбрана странная экспонента 0xF04D71 (то, что вы обозвали decSeq),
а decKey является модулем, хотя он должно быть нечетным,
а судя по исходнику, что-то не клеится... (может просто неверно восстановили код).

| Сообщение посчитали полезным: -=AkaBOSS=-


Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 21 августа 2014 11:55 · Поправил: -=AkaBOSS=-
· Личное сообщение · #5

нда, за всей этой кучей операций так сути и не разглядел(

UniSoft пишет:
хотя выбрана странная экспонента

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

если это рса, тогда, насколько я понимаю, у меня на руках закрытый ключ, и чтобы зашифровать данные, мне недостаточно будет факторизировать 1024-битный N, но надо еще и вычислить открытую экспоненту E. я прав?

/ADD
факторизация не рулит - я столько не проживу.
видимо, придётся генерировать свои ключи и подменять




Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 21 августа 2014 12:12 · Поправил: DimitarSerg
· Личное сообщение · #6

-=AkaBOSS=- пишет:
если это рса, тогда, насколько я понимаю, у меня на руках закрытый ключ, и чтобы зашифровать данные, мне недостаточно будет факторизировать 1024-битный N, но надо еще и вычислить открытую экспоненту E. я прав?

У тебя на руках открытый ключ.
Е вычислять не надо, она уже должна быть вместе с N.
пара:
E,N - открытый
D,N - закрытый

Тоже ночью поглядывал с мыслями о рса1024, но как не крутил decKey - не похоже оно на N, как и decSeq на E, но раз они меняются, то видимо ты дал какие-то промежуточные значения.
Возможно, если бы были даны правильные значение, то можно было задетектить рса даже без анализа кода

-----
ds


| Сообщение посчитали полезным: -=AkaBOSS=-

Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 21 августа 2014 12:39
· Личное сообщение · #7

DimitarSerg пишет:
то можно было задетектить рса даже без анализа кода

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

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




Ранг: 590.6 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 21 августа 2014 13:12
· Личное сообщение · #8

Да тут реализация "в лоб". Детектируется легко. И экспонента не обязательно должна быть стандартная.

-----
старый пень





Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 21 августа 2014 13:15
· Личное сообщение · #9

DimitarSerg
из википедии
Code:
  1. Расшифрование:
  2. Принять зашифрованное сообщение c
  3. Взять свой закрытый ключ (d,n)
  4. Применить закрытый ключ для расшифрования сообщения


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

DimitarSerg пишет:

Возможно, если бы были даны правильные значение, то можно было задетектить рса даже без анализа кода

нет, экспонента не 0x10001 так бы я и сам догадался
но число простое.



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 21 августа 2014 13:20
· Личное сообщение · #10

-=AkaBOSS=- пишет:
у меня есть зашифрованное сообщение, а значит, для расшифровки используется всё-таки закрытый ключ.


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

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....





Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 21 августа 2014 13:24 · Поправил: DimitarSerg
· Личное сообщение · #11

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


Да-да, сам давно так делаю

-=AkaBOSS=-
Это всё относительно, неважно от того, что ты назовешь это расшифровкой или зашифровкой.

-=AkaBOSS=- пишет:
у меня есть зашифрованное сообщение, а значит, для расшифровки используется всё-таки закрытый ключ.

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

-=AkaBOSS=- пишет:
нет, экспонента не 0x10001 так бы я и сам догадался

Я не по E обычно вижу, если есть подозрение на рса, то большое число закидываешь напр. RsaTool, жмешь факториацию и за минуту тебе не выдает какого-то множителя - вероятность того, что это N - почти 100%

-----
ds





Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 21 августа 2014 13:45
· Личное сообщение · #12

VodoleY, DimitarSerg
да, я уже понял, что приватная экспонента по размеру была бы тоже явно не три байта.

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

большое спасибо всем, кто уделил внимание моему вопросу!

тему закрываю


 eXeL@B —› Программирование —› возможно ли это обратить?
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати