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

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

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

8 thoughts on “Болезнь велосипеда в криптосредствах”

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

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

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

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

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

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

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

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

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

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

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

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

Leave a Reply