Но мой первый опыт в коммерческой криптографии в виде контактов с «Анкорт» я сейчас не могу назвать иначе, как варварский. Огромный объем проделанной работы, удачный контракт с Центральным Банком, в результате – не просто ноль, а глубокий минус без пенсии офицера.
Это все философия жизни, пора перейти к прозе. К криптографическим раздумьям в сентябре 1992 года о том, как приспособить калькулятор для выработки КПД. Сначала – о том, что же вообще мог делать этот калькулятор.
Он изначально разрабатывался для Советской Армии, для засекречивания переговоров ни самом низовом уровне: отделение, взвод, рота. Два режима работы: буквенно-цифровой и чисто цифровой. В первом случае с клавиатуры вводилось нормальное сообщение на русском языке, которое затем засекречивалось и высвечивалось на экране в виде пятизначных цифровых групп. Этот режим считался основным, в перспективе предполагалось, что существовавшие долгое время в армии кодовые переговорные таблицы будут отменены, все сообщения будут вводиться открытым текстом с клавиатуры, засекречиваться, а затем полученные пятизначные группы будут продиктованы в канал связи. Но такое могло произойти очень нескоро, отмена переговорных кодовых таблиц – дело будущего, а пока предполагалось, что калькулятор может быть использован для их перешифровки, чтобы избежать опасных повторов кодовых обозначений, как об этом очень популярно поведали Штирлиц и Мюллер. В этом режиме с клавиатуры вводились только цифры, которые затем перешифровывались и на экран опять же выдавались цифровые пятизначные группы.
Ничего этого Центральному Банку не требовалось. Им не требовалось шифровать платежное поручение, лишний раз усложнять и без того непростую работу операционисток из РКЦ. Количество авизовок, обрабатываемых каждой из них, доходило до нескольких сотен за день, это не экзотические шифровки Юстас – Алексу, отсылаемые раз в месяц. Требовалось добавить к авизовкам какой-то короткий КПД, который бы зависел как от содержания платежного поручения (от кого, кому, какая сумма, дата и т.п.), так и от ключа, известного только в РКЦ. Нет ключа – вычислить КПД нельзя. И более того, нет ключа – нельзя в уже готовом платежном поручении изменить хоть какие-то данные (например, сумму перевода), ибо тогда КПД должен быть совсем другим, никак не связанным с первоначальным.
Самое печальное заключалось в том, что естественные методы защиты, например, зашифровать в цифровом режиме сумму перевода, были абсолютно неприемлемы. Во-первых, при шифровании в шифрованный текст автоматически добавлялся десятизначный маркант, а одним из требований ЦБ было то, что длина КПД не должна превосходить 10 цифр. Этот маркант являлся простым набором случайных чисел и гарантировал отсутствие повторов гаммы наложения, которое могло бы привести к повторениям в шифровках а-ля 17 мгновений весны. Но с точки зрения выработки КПД для ЦБ он был абсолютно бесполезным, не нес в себе никакой информации о платежном поручении и съедал отпущенный лимит по длине КПД. Во-вторых, и это самое главное, шифрование не давало гарантированной защиты от подделки. Шифрование – это простое гаммирование, сложение цифр открытого текста со знаками зависящей от ключа гаммы наложения. И если вычислить КПД было нельзя, то изменить в готовом платежном поручении сумму перевода можно было очень просто: сумма известна, зашифрованная сумма тоже известна из КПД, вычитаем одно из другого, получаем гамму наложения, складываем ее с измененной суммой, получается новый КПД, который будет принят получателем как истинный. В криптографии это было давно известно, еще со времен войны во Вьетнаме, когда зашифрованные шифром гаммирования команды управления советскими ракетами изменялись американскими системами перехвата. Советские ракеты стали летать не в те вьетнамские джунгли, а криптографы схватились за голову. В 70-е годы появилась теория шифрующих автоматов, одним из разделов которой стала имитостойкость, т.е. способность шифра противостоять целенаправленному навязыванию ложной информации. И первым постулатом, первой аксиомой стало: шифры гаммирования не являются имитостойкими. Калькулятор «Электроника МК – 85 С» был простейшим устройством шифрования именно по принципу гаммирования, никакие имитоприставки в нем не предполагались, ресурсов было по минимуму, да и для низовых звеньев Советской Армии они не требовались. Ведь там в цифровом режиме перешифровывались кодовые переговорные таблицы, их содержание потенциальному противнику предполагалось неизвестным, требовалось всего лишь гарантировать отсутствие повторений.
Попечалившись над этими проблемами пару дней, я стал искать нетривиальное решение. И оно в конце концов нашлось, простое и понятное, которое, с одной стороны, полностью устроило Центральный Банк, поскольку КПД получился коротким, не более 10 цифр, как того и требовал заказчик, а с другой – полностью исключило всякие возможности подделок. Только «покупай» ключи, как нас и учили в Высшей Школе КГБ, рассказывая о дисковых шифраторах.
Суть в следующем: шифровать ничего не будем. Займемся маркантом. Если поглядеть на снимок калькулятора, то среди его черных кнопок в верхнем ряду вторая справа – генератор случайного марканта. Он необходим в шифрах гаммирования для обеспечения уникальности вырабатываемой при каждом шифровании гаммы. С помощью марканта обеспечивается отсутствие повторений в шифртексте, даже если какие-то повторения встречались в открытом тексте. В «Электронике МК – 85 С» маркант многократно шифровался с помощью долговременного секретного ключа, но уже в режиме блочного шифра, и полученный таким образом результат становился разовым криптографическим ключом шифратора «Ангстрем-3», действительным только для данного сообщения. Своеобразный аналог session key в современных компьютерных системах, использующих протокол SSL. И вот тут то уже вовсю использовался «лавинный эффект» размножения различий, которым обладали блочные шифры. Измени хоть один символ в марканте – разовый ключ будет уже абсолютно другим, и каким конкретно – невозможно вычислить без знания долговременного ключа.
Но на приемном конце для расшифрования сообщения должны были ввести сначала маркант и затем вычислить с его помощью разовый ключ данного сообщения. Так и было, первые 10 знаков в любой шифровке, полученной с помощью калькулятора, всегда были маркантом. Пользователи этого практически не замечали, они вводили все подряд: маркант и шифртекст, а калькулятор сам отбирал первые 10 знаков, вычислял по ним разовый ключ и с его помощью расшифровывал остальной текст. Но эта была та зацепка, то нетривиальное решение, которое в конечном итоге и позволило спасти Центральный Банк от фальшивых авизо. Ничего не шифруем, а в цифровом режиме расшифрования в качестве марканта (первые 10 знаков) вводим банковскую информацию, которую необходимо защитить от подделок. Из этой информации калькулятор автоматически вычисляет разовый ключ для расшифрования непонятно чего, но нам расшифровывать ничего и не надо: вводим, например, в качестве шифртекста одни нули, тогда получаем чистую гамму наложения, кусочек нужной длины используем в качестве КПД. Хоть 5, хоть 7, хоть 10 знаков, это безразлично, всю имитозащиту выполнил маркант, точнее – алгоритм его преобразования в разовый ключ.
Эта неожиданная идея сразу перевернула все пессимистические взгляды на возможность использования калькулятора в ЦБ. КПД вырабатывать на калькуляторе можно, и способ выработки удовлетворяет всем банковским требованиям. Банк реально получал надежнейшую криптографическую защиту, для реализации которой не требовалось разрабатывать заново какие-то шифровальные средства, все уже готово и серийно выпускается в Зеленограде. Следовательно, в кратчайшие сроки можно решить проблему защиты от фальшивых авизо.
Решение есть, запатентовать бы. И выставить бы «эксперту, боровшемуся с фальшивыми авизо», как это и принято во всем цивилизованном мире, условия: решение – есть, хочешь – покупай. И потребовать оформить юридически Договор на передачу интеллектуальной собственности с указанием в нем своих роялти. Печально сейчас, 15 лет спустя, вспоминать об этом. Нет, не было тогда никаких реальных возможностей запатентовать это решение. Я был в то время действующим офицером ФАПСИ, т.е. юридически совершенно бесправным лицом, для любого патентования нужно было разрешение руководства. Один патент у меня к тому времени уже был – на алгоритм шифрования типа «Ангстрем-3», в нем – все по честному, только реальные разработчики из НИИ Автоматики и Спецуправления. Оформляли этот патент около двух лет. Проку с него, как показала практика, – ноль, все вопросы передачи прав на продажу «Электроники МК – 85 С» решались начальниками-генералами, про этот патент никто и не вспомнил. Криптографический ГУЛАГ оставался неизменным со сталинских времен.