Болезнь велосипеда в криптосредствах 5 comments
Насколько мне известно, у нас в стране официально признан только криптопровайдер КриптоПро, и это всерьёз касается серьёзных банков и т.п. организаций. Недостаток его в том, что он сделан в виде COM-объекта, но решение как к нему подключиться, если потребуется, можно найти. А для всех остальных случаев, есть надёжный и удобный GPG/PGP с интерфейсами под кучи языков программирования, отлаженными библиотеками, и поддержкой всех платформ. Но вот как понять очередных «гениев», создающих свои библиотеки шифрования с какими-то бредовыми наворотами? Уже в третий раз за короткий срок сталкиваюсь с необходимостью прикрутить поделку неизвестных творцов и на этот раз это вообще шедевр — используются RSA ключи и нормальная PGP подпись, только в начало добавлены хэши и идентификатор ключа, да чуть изменены строковые разделители. Почему нельзя было обойтись обычной armor-записью и вытаскивать данные прямо из подписи? И ведь не поленились, написали версии под разные платформы и к тому же под C, C++, Delphi и Java.
Болезнь придумывания своего, походу, поражает только российские умы. Работали с британскими аутсорсерами одних наших партнеров — сразу предложили GPG. А наши всё пытаются или какую-то .NET DLL пропихнуть, или ещё какое-нибудь чудо, которому из настроек можно только адрес сервера дать и гадай какие у неё таймауты на соединение и логика запроса. А могли бы упростить работу по поддержке и себе. Но, пока им удобнее сотворить некое Windows DLL, а вы там уж сами разбирайтесь.
5 Responses to 'Болезнь велосипеда в криптосредствах'
Subscribe to comments with RSS or TrackBack to 'Болезнь велосипеда в криптосредствах'.
-
Идём далее:
- Webmoney – RSA, но ключи хранит как-то по-умному в in-house формате kwm.
- ПСКБ – Аналогично -
Про Киберплат и писал как про третий случай.
Побайтный разбор XML это уже заявка на шедевр! Жаль нельзя их на govnokod.ru отправить.
-
Насчет криптопровайдера КриптоПро – сильно сужаете сферу применения сертифицированный криптосредств. Криптопровайдер – это винда. У КриптоПро есть сертифицированные сборки и для других ОС.
Кроме КриптоПро еще есть сертифицированная реализация ГОСТов от Р-Альфа (библиотека Агава) и от КриптоКом (у них модифицированный openssl). Самый тормозной вариант у КриптоПро… сливает Агаве по скорости на несколько порядков. У Р-Альфа есть сертифицированная сборка даже под ARM.Насчет придумывания своего и русских умов – Вы не правы. PGP переделывали америкосы, а ранний PGP не устраивал тем, что он оперирует исключительно файлами (FILE*). Сами понимаете – очень не удобно.
А XML у МТС абсолютно нормальный, правда по поводу вменяемости того, кто придумывал название тегам я не уверен (f_01, f_02). Скорее всего это удобно ложится на существующею модель.
И сигнатуры там нормально вычисляются, не то, что SOAP со своим XML Security как у некоторых других провов. -
Наличие альтернативных ГОСТ-овских реализаций не означает, что их так широко используют. К сожалению, Крипто-ПРО встречается гораздо чаще, но здесь есть вполне цивилизованные пути решения вопроса.
А про велосипеды скажите, что проще: взять и сделать обвязку вокруг PGP, чтобы шифровать через файл, или писать свой чудо-метод, добавляя несовместимости?
Далеко ходить не надо – Киберплат использует велосипед на основе PGP. При этом они добавили свои поля и внутрь пакета PGP и снаружи, в виде пакета-обвязки. Данные внутри и снаружи дублируют друг-друга. В старых исходниках у них большая часть кода была из PGP, но позже, когда мы переходили на 64-бита прислали новые. В новых тот же функционал, но уже все переписано на C++ и никаких упоминаний о PGP.
Вообще у нас вся платежная область – сплошной велотрек. У каждого свой протокол (и возможно со «своим» шифрованием) и при рассмотрении непонятно – смеяться, или плакать. Из последних шедевров – новый протокол МТС. Вроде в пакете нужно передавать XML и все бы хорошо. Но оказалось, что «XML» похоже обрабатывается побайтно, т.е. он должен один в один соответствовать примеру, при этом отступы должны быть табуляциям и переводы строк в виде CR/LF. А ты говоришь – шифрование.