to post messages and comments.

← All posts tagged криптография

Нашёл вменяемого УЦП. Это такой, который, проведя проверки, и ЭЦП по ГОСТу может продать, и SSL для сайтов, а если не может SSL для сайтов выпустить сам, ТАК ХОТЯ БЫ НЕ БУДЕТ ТУПИТЬ и предложит перепродать от другого УЦ, который может. И одновременно это не простой спекулянт иностранным SSL, который всё никак не догадается российскими ЭЦП заняться из того же окна. Вот на токенах и смарт-картах ГОСТ и RSA уже давно вместе, а почему тогда записывать их в разных местах.

Итак, встречайте: АНК.

Издание сертификата ЭП
SSL-сертификаты для HTTPS и TLS
Я уж и не верил, что когда-нибудь такое увижу. Для продажи SSL сотрудничает с польским Certum. Ну хотя бы так.

Если таких УЦ будет побольше, глядишь, кто-нибудь догадается ещё какие-нибудь совмещённые варианты делать. В КриптоПро есть ГОСТ для Authenticode, но действует только внутри предприятия, где доверие внутреннему УЦ. Кто-нибудь из УЦ мог бы это решение догадаться наружу выставить. Если от ГУЦ Минкомсвязи цепочка идти будет, это бы сразу решило многие проблемы.

Ещё плюсы УЦ:
У них можно купить смарт-карты еСМАРТ ГОСТ с отечественным криптопроцессором от Микрона (Зеленоград). еСМАРТ редко, где можно встретить, а у них вот есть. еСМАРТ ГОСТ, Рутокен ЭЦП 2.0 и еТокен от Алладин — это на данный момент все варианты с ГОСТами 2012го года (Стрибог). Кузнечика (2015й год) нет нигде, но хотя бы так. У Рутокена обновились только токены, а на смарт-картах до сих пор прошлое тысячелетие. Алладин — не вполне российский и сертификацию проходил довольно интересным способом, сертифицируется не всё изделие, а только модуль в нём. Так и остаётся еСМАРТ как лучший (кмк) вариант.
Держат сервис трансграничного электронного документооборота.

Минусы:
Похоже, удалённо ЭЦП записать не получится. Один-то раз, может, и получишь по почте новую СК, а через год что, выкинуть? Или новую получать, на которой не будет ещё не истёкших других сертификатов со старой, если они неизвлекаемые. Вот это не очень здорово.

Никак не могу воспроизвести TTH на папку. Да, я знаю, это позор, который должен быть спрятан глубоко, и лучше, чтоб про него даже не знали, но вот приспичило. Надо. Есть хеш папки, который посчитал удалённый клиент, есть сохранённый список файлов с него. По идее, это расширение было когда-то здесь, но этот старый сайт давно не пашет, а в Машине Времени не сохранилось. В документацию как официальное расширение не вошло, поэтому следы ведут на мёртвую вики. Сейчас у разработчиков на замену старому сайту есть новый dcbase.org, и там, по идее, текст был скопирован сюда. Из-за того, что вебмастер не мог придумать ничего лучше, чем поставить на сайт принудительный HTTPS, сайт этот сейчас стал недоступен от слова совсем. Ну или я, по крайней мере, не знаю прямого IP. Приходится читать через кеш Гугла. Но у меня такое чувство, что это это не копия вики, а копия форума, на котором когда-то обсудили, потом реализовали, и окончательную версию записали в вики, а вики сдохла. И теперь осталась только реализация в исходниках. Искал-искал, так и не нашёл, где это вычисляется.

Надо с отладочной печатью воспроизвести, как из хешей внутренних файлов получился хеш папки. Уж я и сортировку делал не делал, endianness вертел не вертел, вертел до / после сортировки, хеш вычислял и TTH, и чистый TIGER. Не сходится, и всё тут.

Как была криптография болью, так и остаётся. Ничего не меняется.

До чего же пространно указываются схемы подписи запросов на биржах. Во-первых, у каждого свои, во-вторых, постоянно непонятно, как что (де)кодировать, и нужно ли. В Poloniex секрет — очевидно шестнадцатеричная строка, но декодировать её не нужно, а в Cryptopia — очевидно Base64 строка, но декодировать её оказалось нужно. Или sha256 напишут, а потом сиди гадай, это SHA-256 в шестнадцатеричном виде в нижнем регистре или двоично, хотя всё остальное рядом — текст. В Kraken выясняется, что двоично, хотя всё остальное рядом — текст. URL в Kraken — это не то, что вы подумали, а только путь URL, как можно понять, перебрав всякие варианты кодирования/декодирования/некодирования/недекодирования остальных вызывавших сомнения элементов схемы и подсмотрев, наконец, в чужих реализациях.

Увидев в документации Cryptopia такое:
URI: the request uri. e.g. https://www.cryptopia.co.nz/Api/SubmitTradeОбрадовался, подумал, ну хоть что-то написали понятно. Вот, у кого Кракену бы поучиться. И думал я так, пока не запарился пытаться пробиться и не посмотрел опять, как делают другие:
strtolower( urlencode( $uri ) )
Как же вы мне все дороги.

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

Надо будет независимыми утилитами перепроверить все расчёты. Не врёт ли мне клиент по другую сторону. В ГрейЛинке хеш для папок — устаревшая фича в пользу dcls, я в контекстном меню скачанного списка файлов вижу опции «получить магнитную ссылку» неактивным цветом. Только в поиске по TTH вижу файл и папку вместе.

Пытался переписать на Delphi crypt(), которым шифрует пароли ISPConfig у заказчика. Сначала по ссылкам с форума ISPConfig меня кинуло сюда. Взял, переписал на Delphi, только на последнем этапе лень было ещё и модифицированный Base64 делать. Сконвертил в обычный Base64, знак равенства отрезал, а остальные символы заменил по таблице соответствия.

Не сошлось.

Начал вникать глубже в тему. Оказывается, их способ кодирования пароля корнями уходит в /etc/shadow в Linux. Всплыл оригинальный исходник crypt_md5.c. Переписал всё с него. Заодно нашёл ошибку. Я в строках, соответствующих 149 и 150 из первой ссылки, вычислял MD5, а надо только в 150. Строки выглядит похоже, но в 149 MD5 не вычисляется, а там ещё дальше по тексту идёт продолжение. И, присмотревшись, ещё увидел, что модифицированный Base64 берётся от октетов, идущих не подряд, а вперемешку, так что либо нужно тем же образом перемешать, либо переписать на Delphi рабочий код. Переписал.

Не сошлось.

В коде я манипулировал и UTF8String, и TIdBytes, которые суть array of Byte, и постоянно байты перегонял туда и обратно. Думал, ну можь тут накосячил. Сделал отдельную функцию, которая и на вход, и на выход работает со строками. Код стал проще выглядеть, заодно там изолированные экземпляры TIdHashMessageDigest5 теперь используются, а то вдруг я общий экземпляр как–то неправильно использовал.

Не сошлось.

Как на Byte действует shl в Delphi, я уже не уверен, но очень может быть, что значение на выходе так и остаётся Byte, и после shl 16 получается 0, надо бы каждый байт привести к Integer перед тем, как делать shl.

Не сошлось.

Вообще, вряд ли, но вдруг у байтов после расширения размера одновременно с приведением к знаковому численному типу появляется шлейф из единиц в старших разрядах и как–то где–то что–то потом портит. Тем более, в коде по первой ссылке использовался "and $ff". Не зря же, наверное? Надо тоже добавить.

Не сошлось.

Смотрел–смотрел, так и не увидел ошибку. Решил ещё посмотреть разных реализаций. Нашёл независимую для PHP. И бросилось в глаза, что на 103й строке $ctx .= pack("C", 0); Я такой уже один раз видел по первой ссылке, но по второй, откуда я потом переписывал, был j–й байт final, причём, j инициализируется в начале for нулём, а потом не меняется, то есть, это 0, который будет указывать на первый байт в final или password. Я вообще к первой ссылке с недоверием относился после того, как ошибку увидел и переписал по второй ссылке, так что как во второй ссылке, так и у меня был первый байт от final. Это сейчас я разглядел, что строки 149 и 150 отличаются, а тогда ещё нет, и коду по второй ссылке я доверял больше, чем по первой. Но странно, что по третьей так же, как и по первой. Пытаясь понять, почему 0, увидел, что для безопасности по второй ссылке периодически что–нибудь затиралось, но так как мне эта безопасность была не нужна, это я в свой код не переписывал, а там как раз final нулями перезаписывается перед этим циклом, отсюда и 0.

Сошлось. Где–то 5 часов ушло на отладку.

New York Times Removes Passage on China From Story on Apple/FBI Encryption Fight
I’ve long wondered why China allows companies like Apple to sell devices without back doors for their government. A big part of why they tolerate it seems to be the fact that no government gets this.
Если Китай прогнёт установку зондов, это будет очень весело. Представляю, как подгорит у постиндустриалистских фундаменталистов.