Копирование неэкспортируемого ключа с JaCarta LT

Программирование, Хакинг, Безопасность, Софт, Железо, а также всё связанное с компьютерами
Аватара пользователя
Андрей Карпишин
Архитектор
Сообщения: 9195
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов, МО
Благодарил (а): 1214 раз
Поблагодарили: 556 раз

Re: Копирование неэкспортируемого ключа с JaCarta LT

Сообщение Андрей Карпишин »

YuRiuS1 писал(а):
13 дек 2023, 23:12
Он у меня 018_in(7)00_A4_00_00 - то есть по алгоритму ВСЕ "in"-содержащие файлы ведь удаляются, не?
Да, я так и думал. Значит всё правильно, что его удалили.
Аватара пользователя
Андрей Карпишин
Архитектор
Сообщения: 9195
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов, МО
Благодарил (а): 1214 раз
Поблагодарили: 556 раз

Re: Копирование неэкспортируемого ключа с JaCarta LT

Сообщение Андрей Карпишин »

YuRiuS1 писал(а):
13 дек 2023, 23:12
Вот чего не понимаю - того не понимаю. Как вы поняли, что алгоритм "до-большие файлы-после" не подходит к моему ключу?
В формуле 256 - константа?
Просто столько информации перечитал - никак не понял, откуда 256 берётся...
Потому что у вас после маркера header не идут большие файлы, как у других.

256 константа. Это первая степень числа 256. Для младшего байта берётся нулевая степень этого же числа, которая равна 1. Так что, младший байт можно не умножать на 1, т.к. получится он же самый.
возьмем, к примеру, 32 битное число. очевидно, что оно состоит из четырех 8 битных байтов.
то есть число = B0*256⁰ + B1*256¹ + B2*256² + B3*256³
B0 и есть младший байт, а B3 - старший. такое понятие (старший и младший) применимо в лоб для 16 битных чисел - там всего 2 байта
для 16 битного числа формула упрощается до B0 + B1*256 (но в памяти порядок байтов перевёрнут)
YuRiuS1
Сообщения: 8
Зарегистрирован: 08 дек 2023, 23:49
Благодарил (а): 5 раз

Re: Копирование неэкспортируемого ключа с JaCarta LT

Сообщение YuRiuS1 »

Андрей писал(а):
13 дек 2023, 23:59
Да, я так и думал. Значит всё правильно, что его удалили.
Сделал ручной header, masks, primary, добавил name, но ничего не получилось... к сожалению, то же выдаёт.
Соединил подряд, начиная с 017, дошёл до ближайшего к 2335 байт, укоротил до этого значения (там были не 00 в HEX-редакторе), но ошибка ровно та же, что и до этого.
Может быть, проблема в name.key? а то у меня 2 EToken, обе никак не получается скопировать...
Аватара пользователя
Андрей Карпишин
Архитектор
Сообщения: 9195
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов, МО
Благодарил (а): 1214 раз
Поблагодарили: 556 раз

Re: Копирование неэкспортируемого ключа с JaCarta LT

Сообщение Андрей Карпишин »

YuRiuS1 писал(а):
14 дек 2023, 17:16
Андрей писал(а):
13 дек 2023, 23:59
Да, я так и думал. Значит всё правильно, что его удалили.
Сделал ручной header, masks, primary, добавил name, но ничего не получилось... к сожалению, то же выдаёт.
Соединил подряд, начиная с 017, дошёл до ближайшего к 2335 байт, укоротил до этого значения (там были не 00 в HEX-редакторе), но ошибка ровно та же, что и до этого.
Может быть, проблема в name.key? а то у меня 2 EToken, обе никак не получается скопировать...
Вряд ли. Скорее всего сниффер работает как-то неправильно для этого вида токена. Но ещё хуже бывают случаи, когда вообще нет заголовка header.
Тоже какая-то аномалия. Чтобы это понять, нужно быть создателем сниффера Сергеем Солдатовым.
Аватара пользователя
Андрей Карпишин
Архитектор
Сообщения: 9195
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов, МО
Благодарил (а): 1214 раз
Поблагодарили: 556 раз

Re: Копирование неэкспортируемого ключа с JaCarta LT

Сообщение Андрей Карпишин »

Впрочем, он пишет сам:

Проблема с которой ко мне обратились - утилита dumpContfromAPDU.pl не дампит контейнер из правильно созданного с помощью Smartcard Sniffer -а лога команд и ответов APDU.
Причин такой неработы dumpContfromAPDU.pl могут быть две:
1. используется отличная от имеющейся у меня на момент исследования модель токена - разные модели токенов имеют несколько разный набор команд APDU, поэтому скрипт не находит нужные регексы;
2. дамп не содержит пересылки контейнера.
Вообще, скрипт писался на скорую руку в качестве PoC исключительно для целей разовой демонстрации и делать из него полноценный инструмент "на все (ну, или, по крайней мере, на многие) случаи жизни" не планирую по нескольким причинам:
а) наверно, это своего рода "хак" (реализация неавторизованного доступа), а распространять инструменты для неавторизованного доступа - неправильно;
б) лень.
Подробнее: https://www.securitylab.ru/blog/persona ... 155893.php
kelment
Сообщения: 3
Зарегистрирован: 15 дек 2023, 11:56

Re: Копирование неэкспортируемого ключа с JaCarta LT

Сообщение kelment »

По инструкции всё сделал, всё получилось.
Но возник вопрос, а что это за программа CertFix? С остальными скриптами из инструкции всё понятно, исходники есть на GitHub.
Непонятно, как она в итоге экспортирует сертификат и почему она не делает этот экспорт прямиком из Jacarta, а нужны все вышеописанные манипуляции
Аватара пользователя
Андрей Карпишин
Архитектор
Сообщения: 9195
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов, МО
Благодарил (а): 1214 раз
Поблагодарили: 556 раз

Re: Копирование неэкспортируемого ключа с JaCarta LT

Сообщение Андрей Карпишин »

Потому что это более примитивная программа. Она умеет экспортировать только экспортируемые ключи.
А для неэкспортируемых была найдена лазейка, дыра в безопасности, которую эксплуатирует сниффер.
Впрочем и у сниффера есть предел применения, т.к. есть ключи, в которых криптографические операции происходят внутри него.
Это PKCS#11 токены с аппаратной криптографией. https://cryptostore.ru/article/obzory/p ... tografiey/
Они не копируются ничем.
kelment
Сообщения: 3
Зарегистрирован: 15 дек 2023, 11:56

Re: Копирование неэкспортируемого ключа с JaCarta LT

Сообщение kelment »

Андрей писал(а):
15 дек 2023, 17:26
Она умеет экспортировать только экспортируемые ключи
Существует ли открытый код этой программы? Интересно посмотреть как она это делает.
Аватара пользователя
Андрей Карпишин
Архитектор
Сообщения: 9195
Зарегистрирован: 06 май 2015, 14:10
Откуда: Чехов, МО
Благодарил (а): 1214 раз
Поблагодарили: 556 раз

Re: Копирование неэкспортируемого ключа с JaCarta LT

Сообщение Андрей Карпишин »

kelment писал(а):
15 дек 2023, 19:54
Андрей писал(а):
15 дек 2023, 17:26
Она умеет экспортировать только экспортируемые ключи
Существует ли открытый код этой программы? Интересно посмотреть как она это делает.
Тривиальные функции мне не интересны. Любой код можно декомпилировать (реверсинг).
Да и вопросы эти как-то не особо уместны в контексте данной темы.
Ищите автора и спросите у него про принцип.
kelment
Сообщения: 3
Зарегистрирован: 15 дек 2023, 11:56

Re: Копирование неэкспортируемого ключа с JaCarta LT

Сообщение kelment »

Андрей писал(а):
16 дек 2023, 01:00
Да и вопросы эти как-то не особо уместны в контексте данной темы
Ответ я понял, но не соглашусь. Работа ведь идёт с ЭЦП и вопросы безопасности нельзя игнорировать. Если неизвестно как работает программа, то где гарантии, что ключ не будет скомпрометирован? Поэтому хочется доверять инструментам