Болезнь велосипеда в криптосредствах

Насколько мне известно, у нас в стране официально признан только криптопровайдер КриптоПро, и это всерьёз касается серьёзных банков и т.п. организаций. Недостаток его в том, что он сделан в виде COM-объекта, но решение как к нему подключиться, если потребуется, можно найти. А для всех остальных случаев, есть надёжный и удобный GPG/PGP с интерфейсами под кучи языков программирования, отлаженными библиотеками, и поддержкой всех платформ. Но вот как понять очередных «гениев», создающих свои библиотеки шифрования с какими-то бредовыми наворотами? Уже в третий раз за короткий срок сталкиваюсь с необходимостью прикрутить поделку неизвестных творцов и на этот раз это вообще шедевр — используются RSA ключи и нормальная PGP подпись, только в начало добавлены хэши и идентификатор ключа, да чуть изменены строковые разделители. Почему нельзя было обойтись обычной armor-записью и вытаскивать данные прямо из подписи? И ведь не поленились, написали версии под разные платформы и к тому же под C, C++, Delphi и Java.

Болезнь придумывания своего, походу, поражает только российские умы. Работали с британскими аутсорсерами одних наших партнеров — сразу предложили GPG. А наши всё пытаются или какую-то .NET DLL пропихнуть, или ещё какое-нибудь чудо, которому из настроек можно только адрес сервера дать и гадай какие у неё таймауты на соединение и логика запроса. А могли бы упростить работу по поддержке и себе. Но, пока им удобнее сотворить некое Windows DLL, а вы там уж сами разбирайтесь.

  • http://hlabs.spb.ru Dmitry Vasiliev

    Далеко ходить не надо — Киберплат использует велосипед на основе PGP. При этом они добавили свои поля и внутрь пакета PGP и снаружи, в виде пакета-обвязки. Данные внутри и снаружи дублируют друг-друга. В старых исходниках у них большая часть кода была из PGP, но позже, когда мы переходили на 64-бита прислали новые. В новых тот же функционал, но уже все переписано на C++ и никаких упоминаний о PGP. :-)

    Вообще у нас вся платежная область — сплошной велотрек. У каждого свой протокол (и возможно со «своим» шифрованием) и при рассмотрении непонятно — смеяться, или плакать. Из последних шедевров — новый протокол МТС. Вроде в пакете нужно передавать XML и все бы хорошо. Но оказалось, что «XML» похоже обрабатывается побайтно, т.е. он должен один в один соответствовать примеру, при этом отступы должны быть табуляциям и переводы строк в виде CR/LF. А ты говоришь — шифрование. :-)

    • http://goodguy.spb.ru goodguy

      Про Киберплат и писал как про третий случай. :)

      Побайтный разбор XML это уже заявка на шедевр! Жаль нельзя их на govnokod.ru отправить.

  • http://braintrace.ru Andrey Popp

    Идём далее:
    - Webmoney — RSA, но ключи хранит как-то по-умному в in-house формате kwm.
    - ПСКБ — Аналогично

  • Аноним

    Насчет криптопровайдера КриптоПро — сильно сужаете сферу применения сертифицированный криптосредств. Криптопровайдер — это винда. У КриптоПро есть сертифицированные сборки и для других ОС.
    Кроме КриптоПро еще есть сертифицированная реализация ГОСТов от Р-Альфа (библиотека Агава) и от КриптоКом (у них модифицированный openssl). Самый тормозной вариант у КриптоПро… сливает Агаве по скорости на несколько порядков. У Р-Альфа есть сертифицированная сборка даже под ARM.

    Насчет придумывания своего и русских умов — Вы не правы. PGP переделывали америкосы, а ранний PGP не устраивал тем, что он оперирует исключительно файлами (FILE*). Сами понимаете — очень не удобно.

    А XML у МТС абсолютно нормальный, правда по поводу вменяемости того, кто придумывал название тегам я не уверен (f_01, f_02). Скорее всего это удобно ложится на существующею модель.
    И сигнатуры там нормально вычисляются, не то, что SOAP со своим XML Security как у некоторых других провов.

    • http://dev.goodguy.spb.ru goodguy

      Наличие альтернативных ГОСТ-овских реализаций не означает, что их так широко используют. К сожалению, Крипто-ПРО встречается гораздо чаще, но здесь есть вполне цивилизованные пути решения вопроса.

      А про велосипеды скажите, что проще: взять и сделать обвязку вокруг PGP, чтобы шифровать через файл, или писать свой чудо-метод, добавляя несовместимости?

  • maks

    А кто может подсказать как именно сделаны ключи на киберплате? Я хочу написать на php упрощённый аналог их серверной части, а клиентскую взять себе с сайта. Ключи их изучаю уже неделю, рытьё по инету утомляет, потому как информация скудная. Не зная как и что в ключе (это файл secret.key — например, ) не могу понять нифига

    • http://dev.goodguy.spb.ru goodguy

      Знаю, что там обычные RSA ключи используются, а самый финт — это модификация подписанного сообщения, которое стало нестандартным.

  • maks

    в общем получилось задействовать их библитеку которую они рекламируют разработчикам через COM, php оказывается умеет подключать сторонние DLL