Вход

Просмотр полной версии : Изучаем алгоритм Comp128-2


prcoder
15.04.2005, 01:00
Предлагаю собрать воедино все известные факты касательно этого алгоритма и разложить их по полочкам и, наконец, восстановить его.

Вот общий вид алгоритма (см рисунок).
Главные отличия от Comp128-1 это новые секции "Подготовка ключа" и "Подготовка RAND". Все это конечно пока предположительно. Обе функции очень схожи структурно, видимо выполняется один и тот же алгоритм. Время выполнения этих секции составляет примерно половину от времени шифрования, что говорит о том что использован не совсем тривиальный алгоритм. Предположительно алгоритм обеспечивает очень хорошую дисперсию входных данных, что подтверждено экспериментально на RAND. Похоже что изменение одного бита входа ведет к изменению примерно половины битов выхода, причем распределено оно довольно равномерно (но это еще требует проверки).
Обработка ключа происходит в 32 стадии, обработка RAND - в 48. Несколько странно, учитывая что Ki и RAND одинаковой длины.

prcoder
15.04.2005, 01:28
Так выглядят несколько операций цикла подготовки RAND при всех байтах RAND установленых в ноль. Изменение битов RAND восновном отражается на низкочастотных компонентах сигнала. Высокочастотная "гребёнка" остается почти без изменений.

fox
22.04.2005, 14:50
А нельзя ли. посмотреть кусочек шифрования но на участке по шире?

PIC-ador
22.04.2005, 15:04
Похоже что изменение одного бита входа ведет к изменению примерно половины битов выхода, причем распределено оно довольно равномерно (но это еще требует проверки).
Ну. здесь ничего нового. Любая приличная хеш-функция должна этому удовлетворять.

prcoder
28.04.2005, 19:41
fox: А нельзя ли. посмотреть кусочек шифрования но на участке по шире?
Отчего же нет, можно, конечно.

2 Баньщик: Спасибо что разлочил ветку :-)

prcoder
28.04.2005, 19:43
PIC-ador: Ну. здесь ничего нового. Любая приличная хеш-функция должна этому удовлетворять.

Ну я в том смысле чта приличная хеш-функция находится еще ДО раундов шифрования. Тоесть перед входом в итерации основного алгоритма.

prcoder
28.04.2005, 19:49
А это как влияет изменение RAND на выполнение перемешивания.
Первая картинка в RAND все байты нули. Вторая - первый байт FF, остальные нули.

prcoder
29.04.2005, 15:46
Сейчас кардинально перестраиваю схему, АЦП будет работать на частоте карты и синхронизироваться от её генератора. Уже по первым опытам детализация получается горадо более глубокая и картинки на порядок интереснее.

Константин
29.04.2005, 15:48
Как ты смотришь на заявление Мегасим? Тут копошисси, понимашь, а они опа - уже ВСЕ карты всем желающим.. Каково твоё мнение?

usafa
30.04.2005, 20:29
Как ты смотришь на заявление Мегасим? Тут копошисси, понимашь, а они опа - уже ВСЕ карты всем желающим.. Каково твоё мнение? П.....ь Не мешки ворочать.....золотые слова !

PIC-ador
03.05.2005, 12:41
Главные отличия от Comp128-1 это новые секции "Подготовка ключа" и "Подготовка RAND". Все это конечно пока предположительно.
Меня давно беспокоит один Гондурас:
Чтоб ликвидировать брешь в COMP128v1, вовсе не обязательно переделывать весь алгоритм, можно просто добавить в RAND контрольную сумму. Для старых карт это “фиолетово”, ну а “новые” ее должны проверить, если все O’K, то запускается алгоритм, иначе возвращается этот же (подправленный) RAND или что-то подобное.
Причем даже если известно, как считается контрольная сумма, не поможет. :(
Уже не сформировать RAND’ы дающие коллизию.
p.s. в таком разрезе Опсосу даже не нужно иметь базу по алгоритмам, всего-то только подправить генерацию рандов.

Prosto
03.05.2005, 14:49
Меня давно беспокоит один Гондурас:
Чтоб ликвидировать брешь в COMP128v1, вовсе не обязательно переделывать весь алгоритм, можно просто добавить в RAND контрольную сумму. Для старых карт это “фиолетово”, ну а “новые” ее должны проверить, если все O’K, то запускается алгоритм, иначе возвращается этот же (подправленный) RAND или что-то подобное.
Причем даже если известно, как считается контрольная сумма, не поможет. :(
Уже не сформировать RAND’ы дающие коллизию.
p.s. в таком разрезе Опсосу даже не нужно иметь базу по алгоритмам, всего-то только подправить генерацию рандов.

Очень и очень дельно!

prcoder
03.05.2005, 22:44
Дык вот похоже что один гондурас представляет собой перемешивание битов входа (возможно с подмешиванием ключа) и перемешивание ключа. Дальше идет всем известный алгоритм (только вот таблицы надо еще проверить теже ли они). Там конечно могли всунуть подобную проверку, но думаю что действовали более кардинально.

PIC-ador
04.05.2005, 00:12
Дык вот похоже что один гондурас представляет собой перемешивание битов входа (возможно с подмешиванием ключа) и перемешивание ключа.
Простое перемешивание ничего не даст, только на время пока не раскусили.
На перемешивание с ключом не очень похоже потому, как
весь алгоритм итак эти занимается, а такой вариант выглядит какой-то “заплаткой”, куда уж лучше мешать, например с IMSI. …Хотя в принципе так тоже можно.

prcoder
04.05.2005, 19:41
Ну там явно функция которая работает аж половину времени шифрования. Тоесть алгоритм удлинился в 1,5 раза по времени ! Причем там никакой раундности не видно, проводится какая-то равномерная операция с RAND. Причем даже видно на каком этапе какой байт ранд используется. И аналогичная фигня происходит при ресете, только покороче чуть. Структура та же. Так как кроме Ki и RAND больше вроде масивов данных подобной длины нет, то видимо это переработка Ki. Проверить не могу, так как Ki менять не могу. Вообще очень похоже на перемешивание RAND в зависимости от ключа. Кстати этого будет вполне достаточно чтобы ликвидировать bottle-neck алгоритма - малую скорость диффузии и как следистве коллизии на втором раунде.

prcoder
04.05.2005, 19:47
2Angelex: Т.е. схема будет работоспособна на любых картах без подгонки\подстройки параметров элемнтов схемы?

Я себе такой цели не ставил. Цель понять что изменили в алгоритме и получить код на C :-) А чтобы выковыривать ключ такая сложная схема не понадобится, да и частота будет пониже, думаю и карты звуковой хватит. Причём уже сейчас видно что можно находить коллизии на любом раунде (даже если они не будут проходить наружу). Осталось понять как именно они обрабатывают входы и не поменялись ли таблицы. Таблицы выколупывать это геморой, хотя если удасться получить достаточное разрешение, то впринципе тоже не проблема.

prcoder
04.05.2005, 19:49
PIC-ador: Простое перемешивание ничего не даст...

Возможно оно не простое, а алгоритм зависит от ключа. Вот тогда даст.

messenger
10.05.2005, 00:52
To prcoder
Нельзя ли создать программу которая будет анализировать график энергопотребления карты(сравнивать с предыдущим при выполнении а3а8 ) и сопрячь ее с программой-сканером типа Ворон-скан?

prcoder
10.05.2005, 01:28
Да это какраз я думаю не проблема. Да и ключ извлечь из всех карт что я видел можно за гораздо меньшее количество запросов. Универсальное устройство тоже можно сделать, но понадобится прилично времени чтобы собрать данные по диапазону изменения характерисик карт и вообще по характеру реализации алгоритма. Только у меня цель другая, такчто я просто меняю схему под конкретную кару.

unixoid
24.05.2005, 14:54
Prcoder, а какой ты свой АЦП юзаешь? Можно схему? А то что-то у меня карты не хотят запускаться ниже 1.5кгц...сам генератор пашет...
А для анализа саундблястером это конечно не идет

prcoder
24.05.2005, 15:25
Практически все карты (за очень редким исключением) можно запустить на частоте 600-700 кГц. Такчто смотри форму сигнала на выходе генератора.

unixoid
25.05.2005, 10:28
А ХЗ какая там форма... Осцилографа не имею... Проверял двумя диодами+стрелочник..Генерация есть.. Генератор по схеме от дежановского ридера...

prcoder
31.05.2005, 00:05
Да ты не парься, на высокую частоту возьми генератор готовый кварцевый, а если надо пониже, то и на PIC-е собрать можно. А уж на каком-нить Ubicom SX можно наверное и на высокую, правда сам еще не пробовал, пока в руки не попали.

unixoid
31.05.2005, 09:36
Da na vysokuyu i 2x invertorov s kvarcem hvataet :) vse pashet..A vot na nizkuyu pridetsya sobirat` na PICe...

PS. Nedavno spalil svoj device:) pridetsya novyj delat` uzhe po chelovecheski ;)

prcoder
02.06.2005, 17:11
А чегобы просто не поделить высокую, скажем на 16 ?

unixoid
02.06.2005, 20:57
a potom delitel`?

prcoder
07.06.2005, 12:46
2unixoid: Мы с тобой вроде поняли что алго в KS и Мос. Мегафоне очень похожий по рисунку. Давай картиночки тут характерные разместим чтобы народ тоже мог посмотреть.

Мне так видится что разница между v1 и v2 во-первых в том что в v2 после последнего раунда всёравно делается перестановка, а во-вторых, что самое главное, перед подачей на вход алгоритма comp RAND обрабатывается какой-то пермутацией, предположительно зависящей от ключа оператора. Я так подозреваю (по огромной скорости диффузии) что это какая-то БПФ-подобная функция.

unixoid
07.06.2005, 12:57
Давай..Сегодня вечером положу свои, а то они дома...
И мож седня днем еще карточек возьму поюзать ;)

prcoder
08.06.2005, 13:15
Общий вид алгоритма в картах KS от Unixoid-a. Тоже видно восемь раундов по пять сабраундов + пермутация. Однако той длительной байды после засылки RAND вроде бы нету. Из этого можно сделать предположение что алгоритм несколько отличный и в нём врядли есть хорошее перемешивание перед первым раундом. Но похоже что это тоже каким-то образом модифицированиый Comp128-1.

prcoder
08.06.2005, 13:24
Вид одного раунда алгоритма.

prcoder
08.06.2005, 13:28
Похоже что вычитание счётчика выполняется сразу после выполения команды еще до отсылки RAND. Это наверное тот сильный всплеск в начале, но там произошло некторое зарезания и большие искажения поэтому укрупнённо не привожу. Зато прилагается вавка.

unixoid
08.06.2005, 21:18
Чтото у меня не получилось ту зарезку убрать...Ставил резюк и на 10k - просто мало гейна, а посылки байтов не видно....Это только одна такая карта...
Седня,если еще удастся ее взять - попробую без AD623... Мож она такая иесть....

К стати да, я тож заметил,что той бороды нету...
Всего скорее так и есть - 8 раундов и в последнем тоже пермутация..
К стати, смотрел на конец алго(всех,что у меня есть, кроме лайфа) - концовки похожие..тоесть формирование выхода всего скорее осталось как у в1...та же компрессия...

unixoid
09.06.2005, 13:32
Блин,странные циклы какие-то в этом алго... в в1(да и не только) четко видно,что выполняется алгоритм,разные операции там итд...А тут вроде все время выполняется один и тот же набор операций...
не защита ли это?

Чтото у меня не получилось ту зарезку убрать...Ставил резюк и на 10k - просто мало гейна, а посылки байтов не видно....
А Может и ПДФку по АD623 не докурил :))

prcoder
09.06.2005, 17:25
Unixoid: А Может и ПДФку по АD623 не докурил Smile)
Наверняка второпях раскуривал ;-) У многих поначалу не так усиливает :-) Ну операций на такой частоте особо не видно, вообще похоже оно на v1, но есть некоторые аномальности. Больше всего меня напрягает эта сверхдлительная пермутация после раунда. Она длиной как весь алгоритм ! Это явно не нормально. В v1 она вчетверо короче и на моём несканящемся мегафоне тоже, но там своя борода есть :-)

unixoid
09.06.2005, 19:24
da,v toropjah :)
u menya tozhe po nachalu ne tak usilivalo:)
O permutacii v principe soglasen..i eshche tut tozhe netu /* Permutation but not on the last loop */

prcoder
09.06.2005, 23:47
Картинка алгоритма в М.Мегафоне полученая через АЦП.
Если сравнить с первой, очень заметно сколько информации теряется проходя через нелинейные элементы звуковой карты.
Усиление настроено так чтобы небыло зарезания.

prcoder
09.06.2005, 23:53
Начало GET RESPONSE вблизи. Так, для наглядности.

prcoder
10.06.2005, 00:04
А вот как выглядит вблизи декрементация счечика (три таких импульса). Правда иногда их бывает и пять. И чтобы понять какое теперь разрешение стало (вавка с дискретизацией 669600 Гц) вот маленький кусочек который выглядит как жирная полоска во фронте первого импульса.

prcoder
10.06.2005, 01:52
А вот сам алгоритм с бОльшим усилением. Хорошо видно соотношение энергопотреблений разных операций. Правда нижнюю часть пришлось подрезать.

prcoder
10.06.2005, 02:32
Вот еще большее усиление. Пришлось добавить еще один ИУ иначе усиления нехватает. На картинке восемь раундов алгоритма.

unixoid
10.06.2005, 11:51
Хммм...Получается алго в карте поделен на части...
А от куда умозаключение, что операция после 5го байта апду - подготовка ключа?
в некоторых в1 картах тоже что-то подобное есть после 5го байта апду...
По моему туда смотреть пока не надо...Вот я боюсь,что сами раунды переделаны...и таблицы...
Но по всей видимости выход у этого алго тоже 4х битный,тк формирование SRES+Kc для в1 карт и для несканящихся очень похожее...это даже видно на SB:)
Попробуй сравни у себя на АЦП...

prcoder
10.06.2005, 13:03
Ну возможно с "подготовкой ключа" я и поторопился. Вывод сделан на основе того что операция очень похожа на пермутацию RAND, но от RAND никак не зависит. Подготовку RAND я проверял, она равномерно коррелирована с битами RAND. Сегодня по-внимательнее посмотрю обе эти операции. На большом разрешении по частоте стало видно структуру операций в подготовке RAND. Внимательно сравню с подготовкой ключа, а там и решим она это или нет, да может и поймём что там делается.

PIC-ador
10.06.2005, 13:44
Ну возможно с "подготовкой ключа" я и поторопился.
APDU еще принять надо, проверить на корректность параметров и т.д.
Подай другую команду, например SELECT и сравни.

prcoder
10.06.2005, 14:55
Конечно смотрел. Эта фигня только после RUN GSM ALGORITHM получается. Все остальные команды обрабатываются быстрее. Обработка похожа, но у этой еще есть кусок довольно длительный. Такчто я сделал вывод что это предположительно пермутация Ki. На Ki повлиять не могу, поэтому проверить так это или нет довольно сложно.

unixoid
10.06.2005, 15:06
2PIC-ador: Проверка АПДУ осуществляется нескольими коммандами...и ессно их на саундбластере не увидишь...а тут идет како-то цикл, и не простой....хотя х3 :)

2prcoder:
В КСах вычитание счетчика идет после посылки РАНД. Проверял вчера..убивал недавно карту с таким же АТРом, и пробовал этой карту тупо APDU подавать и после этого(без посылки ранда) ресет...70 тыс прогнал - живет:)

Ну я несколько сомневаюсь с декрементом в средине алго...xотя все могли накодить :)
Но не видно ранее обращений к ЗУ...так что тоже хз...а счетчик в твоей карте точно есть? ;)

nuken
10.06.2005, 16:16
О 5-м байте АПДУ: когда он подается, то карта сразу переходит в режим ожидания данных, тогда начинается изменение в энергопотреблении, можно долго ждать и картинка без изменений все это время. Я это наблюдал вне зависиомсти от АПДУ.

unixoid
10.06.2005, 16:40
a, da...
eto ja tozhe kogda-to nablyudal na kartah Gemplus...takoj harakternyj shum stoit posle 5go byta APDU....

prcoder
12.06.2005, 16:12
А вот так выглядит алгоритм в SilverCard. Только снять его оказалось значительно сложнее так как потребление карты на порядок меньше стандартных симок.

prcoder
12.06.2005, 17:07
А так выглядит comp128-1 в старых картах MTS

Константин
13.06.2005, 13:31
А кто-то говорил о том, что сильверы жрут больше обычных симок. Здрасти.

unixoid
13.06.2005, 14:11
Konstantin,eto sovsem raznye veshchi...
Silver,te sami mikruhi zhrut mozhet i bol`she,no sam proc navadok na pitane daet men`she....Toest` razmah men`she u nego...

prcoder
14.06.2005, 12:39
nuken: О 5-м байте АПДУ: когда он подается, то карта сразу переходит в режим ожидания данных, тогда начинается изменение в энергопотреблении, можно долго ждать и картинка без изменений все это время. Я это наблюдал вне зависиомсти от АПДУ.

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

prcoder
16.06.2005, 23:54
PIC-ador, nuken, unixoid: Спасибо что обратили внимание. Похоже и правда те пилы не обрабока rand и ki, а просто цикл ожидания карты. Они действительно встречаются и во время ресета и при выполнении других команд, просто в этой команде она особо длинная. Возможно я плохо измерил корреляцию этой пилы со входом, разрешение было маловато. Вообще получается корреляции там быть недолжно. Разрешения хорошего и SNR я добился, остались некоторые мелочи. Как доделаю попробую промерить снова. Но факт что корреляция входа должна быть или с первым раундом или с чем-то до него. Кудато же эти данные деваются...

Сайт управляется системой uCoz