Наконец, удалось идентифицировать автора статьи о сравнении электронных замков, которую я разместил у себя в блоге. Им оказался Виталий Лысенко, сотрудник ОКБ "САПР", одной из компаний, продукты которой подлежали сравнению. Сейчас обнаружил еще одну статью, датированную 2005 годом, этого автора... и снова один из сравниваемых продуктов принадлежит вышеупомянутой фирме. Поэтому прошу отнестись к статье критично.
ruToken
Начнем наш обзор с изделия, которое в последнее время весьма активно рекламируется на самых различных уровнях, а именно – USB-брелок руТокен (Актив, Анкад).
РуТокен состоит из двух основных узлов – 8-битного микроконтроллера CY7C63613 фирмы Cypress и микросхемы энергонезависимой памяти с интерфейсом SPI (таких микросхем может быть установлено до четырех).
Микроконтроллер CY7C63613 основан на 8-битном RISC ядре, имеется однократно программируемая память команд емкостью 8 Кбайт, 256 байт оперативной памяти и периферийные устройства, такие как контроллер USB-интерфейса, 12-битный таймер и порты ввода/вывода.
Можно отметить, что примененный контроллер USB-интерфейса поддерживает лишь стандарт low-speed (поддерживаются только запросы типа control и interrupt). Из этого следует, что предельное значение скорости обмена с таким контроллером составляет 8 Кбайт/с для однонаправленных функций (таких, как вычисление хэш-функции) или 4 Кбайт/с для двунаправленных (таких, как шифрование).
Ядро микроконтроллера имеет очень слабые вычислительные возможности. Тактовая частота ядра составляет 12 МГц, при этом одна команда выполняется от 4 до 14 тактов (среднее значение – 6 тактов). Таким образом, частота исполнения команд составляет примерно 2 МГц. Имеется всего два 8-битных регистра (аккумулятор и индексный регистр).
Микроконтроллер не имеет встроенного контроллера SPI, что вынуждает реализовывать временную диаграмму обмена с энергонезависимой памятью программно (при помощи команд управления портами ввода/вывода).
Вычислительных возможностей, предоставляемых данной архитектурой, вполне достаточно для организации пересылок небольших объемов данных по интерфейсу USB (реализации устройств типа мышь, джойстик и т.п.). Однако такая архитектура малопригодна для реализации алгоритмов шифрования, в частности шифрования по ГОСТ 28147-89. Данный алгоритм имеет ярко выраженный 32-битный характер. Выполнение же 32-битных операций на используемом микроконтроллере крайне неэффективно из-за наличия всего одного регистра с функцией аккумулятора. Кроме того, из-за наличия всего одного индексного регистра резко снижается эффективность работы с операндами, лежащими в оперативной памяти. По той же причине крайне неэффективна организация циклов. Реализация функции прохождения 32-битного операнда через узел замены также не может быть решена эффективно из-за чрезвычайно неудобного и медленного способа обращения к операндам, размещаемым в памяти программ.
Трудно представить себе более неудачный выбор вычислительной платформы для реализации алгоритма шифрования по ГОСТ 28147-89, чем примененный в ruToken.
Результат вполне закономерен – скорость шифрования не будет превышать 200-300 байт/с.
Если же говорить о реализации файловой системы по ISO 7816, то, без сомнения, имеется в виду реализация файловой системы на программном уровне при помощи ПО, исполняемого процессором компьютера. Реализация же функций файловой системы при помощи микроконтроллера просто невозможна из-за ограниченного объема памяти программ. По той же причине невозможны реализации алгоритмов вычисления хэш-функции по ГОСТ Р 34.11-94, а о реализациях алгоритмов ЭЦП и говорить не приходится.
Также нельзя рассматривать руТокен в качестве надежного генератора случайных чисел. РуТокен не имеет физического датчика случайных чисел. По-видимому, для генерации случайных чисел в руТокен используется некоторый алгоритм генерации псевдослучайной последовательности, задающий элемент которой генерируется от встроенного таймера.
eToken
Рассмотрим теперь USB-брелок eToken PRO фирмы Alladin, широко известный на российском рынке, однако являющийся импортным изделием.
Брелок eToken PRO основан на чипе для смарткарт SLE66CX160S фирмы Infineon. Данный чип базируется на 16-битном микропроцессорном ядре, которое является расширением популярного 8-битного ядра 8051, дополненного функциями 16-битной арифметики. Данный микроконтроллер имеет 32 Кбайт памяти для программ, 1280 байт оперативной памяти для данных, 16 Кбайт энергонезависимой памяти для хранения данных и программ (EEPROM). Кроме того, в состав микросхемы входит аппаратный криптографический ускоритель, предназначенный для эффективной реализации алгоритмов ЭЦП по стандартам RSA, DSA, EC-GDSA с размерностями данных до 1024 бит.
Такая архитектура имеет просто несравнимые с руТокен возможности. Архитектура ядра 8051 хоть и не идеальна для реализации криптографических алгоритмов, но все же имеет на порядок большие возможности. Наличие достаточно большой памяти для программ позволяет создавать резидентное ПО достаточно большого размера, в том числе и на языках высокого уровня. Огромным преимуществом является наличие встроенной в чип памяти EEPROM достаточно большого объема.
Таким образом, чип SLE66CX160S можно охарактеризовать как удачный пример законченной криптосистемы, имеющей приемлемые характеристики для реализации типичного набора функций, присущего смарткартам.
Единственным недостатком является отсутствие возможности реализации российских криптоалгоритмов, причем обусловленное не техническими, а, скорее всего, лицензионными ограничениями (техническая возможность создавать пользовательские программные расширения имеется).
ШИПКА
Рассмотрим теперь архитектуру USB-брелока «Шипка».
ШИПКА – это USB-устройство, в котором аппаратно реализованы:
- все стандартные российские криптографические алгоритмы:
- шифрование (ГОСТ 28147-89),
- вычисление хэш-функции (ГОСТ Р 34.11-94),
- вычисление и проверка ЭЦП (ГОСТ Р 34.10-94; ГОСТ Р 34.10-2001),
- вычисление ЗКА.
- ряд зарубежных алгоритмов:
- шифрование RC2, RC4 и RC5, DES, 3DES, RSA
- хэш-функции MD5 и SHA-1,
- ЭЦП (RSA, DSA).
- два изолированных энергонезависимых блока памяти:
- для хранения критичной ключевой информации – память объемом 4 Кбайт, размещенная непосредственно в вычислителе,
- для хранения разнообразной ключевой информации, паролей, сертификатов и т.п. – память объемом до 2 Мбайт, часть которой может быть выделена для организации защищенного диска небольшого объема.
- аппаратный генератор случайных чисел.
Криптопровайдер ОКБ САПР для устройства ШИПКА подписан цифровой подписью Microsoft.
Все это значит, что с помощью устройства ШИПКА можно решать самые разные задачи защиты информации как персонального, так и корпоративного уровня.
Это, например,
- шифрование и/или подпись файлов;
- защищенное хранилище паролей для различных web-сервисов;
- аппаратная идентификация пользователя в бездисковых решениях типа "тонкий клиент";
- аппаратная идентификация пользователя для ПАК "Аккорд-NT/2000", установленного на ноутбуках;
- аппаратная авторизация при загрузке ОС Windows на ПК;
- хранилище ключей и аппаратный датчик случайных чисел для криптографических приложений;
- "смарт-карта" в типовых решениях – таких, как, например, авторизация при входе в домен Windows, шифрование и/или подпись сообщений в почтовых программах, например, Outlook Express; для получения сертификатов Удостоверяющего Центра для пар "имя пользователя+открытый ключ", если необходимо, чтобы открытый ключ считался легальным в PKI,
- для защиты информационных технологий с помощью ЗКА.
Аппаратная реализация вычислений – без привлечения ресурсов компьютера – это важное отличие устройства ШИПКА от других известных решений на базе USB-ключей, которые фактически представляют собой только энергонезависимую память и адаптер USB-интерфейса, а весь критичный уровень вычислений реализован в них программно. В ШИПКА программно реализуются только не влияющие на безопасность транспортные процедуры и процедуры согласования форматов данных, все остальные функции выполняются аппаратно.
Это значит, что никто не сможет вмешаться в протекание процессов аутентификации, шифрования или ЭЦП и фальсифицировать их. Также это значит, что после отключения ШИПКА в памяти компьютера не остается никаких следов секретных ключей, и никто другой ими не воспользуется. При этом можно применять все эти возможности на любом компьютере, поскольку вся ключевая информация хранится в ШИПКА. Это совершенно естественно – ведь это секретные ключи человека, а не его компьютера.
Однако это не значит, что любой, кто завладеет ШИПКА автоматически завладеет и всей хранящейся в ней информацией – доступ к ней защищен PIN-кодом и в случае превышения допустимого числа неверных введений устройство блокируется и вся информация на нем уничтожается.
Возможность хранения в ШИПКА паролей позволит не выбирать между надежностью пароля и простотой его запоминания, и при этом избежать таких распространенных ошибок, как хранение паролей записанными в блокнот или на листочках, а также использование одного и того же пароля в разных случаях. ШИПКА не забудет и не перепутает пароли.
Кроме того, устройство ШИПКА является полностью программируемым. Это дает возможность легко расширять его функциональность.
В качестве вычислительного элемента применен микроконтроллер ATMEGA128 фирмы Atmel. К нему подключен по параллельному интерфейсу USB-контроллер PDIUSBD12 фирмы Philips, а также энергонезависимая память типа DataFlash фирмы Atmel объемом от 64 Кбайт до 2 Мбайт. Также имеется физический датчик случайных чисел на основе шумового диода, который обслуживается компаратором, входящим в состав микроконтроллера.
Микроконтроллер ATMEGA128 имеет значительно большие вычислительные возможности, чем вышеперечисленные устройства. Кроме того, его архитектура намного более пригодна для реализации криптографических алгоритмов, чем архитектуры как типа 8051, так и CY7C63613. Он функционирует на частоте 16 МГц, причем большинство команд выполняется за 1 такт. ATMEGA128 имеет 32 регистра общего назначения и до трех регистров указателей, причем может эффективно работать с данными, расположенными как в памяти данных, так и в памяти для программ.
Для иллюстрации этих возможностей приведем цифры - реализация шифрования по ГОСТ 28147-89 превышает скорость руТокен примерно в 200-500 раз при сравнимой стоимости.
Кроме того, микроконтроллер ATMEGA128 имеет быстрый аппаратный умножитель. Именно это делает возможным реализацию за приемлемое время таких алгоритмов, как модулярная экспонента.
Память программ имеет весьма значительный объем (128 Кбайт), что позволяет с успехом писать встроенное ПО на языках высокого уровня. Встроенное ПО может иметь весьма высокий уровень сложности, например – полноценная реализация функций файловой системы, интерпретатора пользовательского байт-кода, протокола USB mass storage и т.п. Возможность выделения части памяти программ для загрузчика позволяет легко организовать процесс обновления firmware без дополнительного оборудования непосредственно у пользователя.
Очень важно, что микроконтроллер ATMEGA128 имеет достаточно большой объем оперативной памяти – 4 Кбайт. Это дает возможность для реализации весьма критичных к количеству памяти криптоалгоритмов, например вычисления ЭЦП по ГОСТ 34.10-2001 (ЭЦП на эллиптических кривых).
Кроме того, микроконтроллер имеет 4 Кбайт встроенной защищенной энергонезависимой памяти типа EEPROM для хранения критичных ключевых данных.
Внешняя энергонезависимая память типа DataFlash имеет значительно большую скорость обмена, чем примененная в руТокен, кроме того – микроконтроллер ATMEGA128 имеет аппаратный контроллер интерфейса SPI, позволяющий иметь скорость чтения флэш-памяти до 500 КБайт/с без накладных расходов.
Примененный в устройстве USB-контроллер поддерживает режим работы full-speed, что позволяет получить скорости обмена, недостижимые как в ruToken, так и в eToken PRO. На практике удается получить скорости примерно 200 Кбайт/с для однонаправленных алгоритмов и 100 Кбайт/с для двунаправленных.
Наконец, может быть самое главное преимущество подхода, примененного при проектировании устройства Шипка – полная программируемость и верифицируемость.
Очевидно, что без особых проблем можно расширить функциональность устройства без снижения надежности, что весьма затруднительно при применении eToken PRO и принципиально невозможно для ruToken. Кроме того, встроенное ПО устройства Шипка всегда может быть проверено на наличие НДВ, что вряд ли возможно в случае применения eToken PRO (и других подобных устройств на базе чипов для смарткарт).
Сравнительные характеристики устройств ruToken, eToken и ШИПКА
Элемент
архитектуры
|
Etoken
PRO
|
руТокен
|
ШИПКА
|
ПРОЦЕССОР
|
Микросхема
для смарт-карт SLE66CX160S
|
Микроконтроллер
CY7C63613
|
Микроконтроллер
ATMEGA128
|
регистры
|
8
регистров общего назначения (каждый
может быть индексным) и 1 регистр с
функцией аккумулятора
|
1
индексный и 1 регистр с функцией
аккумулятора
|
32
регистра общего назначения (из них до
3 - индексные)
|
тактовая
частота
|
5
МГц
|
12
МГц
|
16
МГц
|
тактов
на команду
|
1-3
(большинство команд – 1)
|
4-14
(в среднем – 6)
|
1-2
(большинство – 1)
|
частота
исполнения команд
|
Средняя
3,8 МГц (не более 5 МГц)
|
В
среднем 2 МГц
|
14
МГц
|
Память
программ
|
32
Кбайта
|
8
КБайт
|
128
КБайт
|
Оперативная
память
|
1280
байт
|
256
байт
|
4
КБайта
|
Встроенная
защищенная энергонезависимая память
|
EEPROM
16 КБайт
|
-
|
EEPROM
4 КБайт
|
Контроллер
для обмена с внешней памятью
|
-
|
SPI
Программный.
Скорость
не может превышать 85 Кбайт/с, реально
– около 20 Кбайт/с
|
SPI
Аппаратный.
Предельная
скорость 1 Мбайт/с, реальная – 500 Кбайт/с
без накладных расходов
|
Средства
повышения производительности
криптографических преобразований
|
аппаратный
криптографический ускоритель
|
-
|
аппаратный
умножитель
|
Поддержка
файловой системы
|
По
стандарту
ISO/IEC
7816
ПО
микроконтроллера
|
По
стандарту
ISO/IEC
7816
скорее
всего, через драйвера ОС
|
По
стандарту
ISO/IEC
7816
ПО
микроконтроллера
|
Аппаратный
датчик случайных чисел
|
есть
|
нет
|
нет
|
Контроллер
USB-интерфейса
|
нет
|
Low-speed,
поддерживает только запросы типа
control и interrupt.
|
нет
|
Порты
ввода/вывода
|
нет
|
есть
|
есть
|
ВНЕШНЯЯ
ПАМЯТЬ
|
нет
|
SPI
до 128 КБайт
|
Типа
Data Flash до
2 МБайт
|
АППАРАТНЫЙ
ДАТЧИК СЛУЧАЙНЫХ ЧИСЕЛ
|
нет
|
нет
|
есть
|
Контроллер
USB-интерфейса
|
СY7C63001A
Low-speed
Скорость
обмена не более 8 Кбайт/с для
однонаправленных функций и 4 Кбайта/с
для двунаправленных
|
нет
|
PDIUSBD12
Full-speed
Скорость
обмена для однонаправленных функций
– 200 Кбайт/с, для двунаправленных –
100 Кбайт/с
|
Возможности устройств
ВОЗМОЖНОСТЬ |
устройство |
||
ЕТокен PRO
|
руТокен
|
ШИПКА
|
|
Аппаратная реализация российских
криптографических алгоритмов
|
нет
|
ГОСТ 28147-89
Скорость 200-300 байт/с
|
ГОСТ 28147-89
ГОСТ Р 34.11-94
ГОСТ Р 34.10-94
1/4.5 с – 512 бит, 3.9/16.9 – 1024 бит)
ГОСТ Р 34.10-2001
4.7/15 с
|
Аппаратная реализация зарубежных
криптографических алгоритмов
|
RSA,
DES, TripleDES,
SHA-1,
MAC, iMAC
(DSA и MD5
– по запросу)
|
-
(«дополнительные возможности»
- RSA,
DES (TripleDES), RC2, RC4, MD4, MD5, SHA-1)
|
RSA, DSA,
DES, TripleDES,
MD5, SHA-1,
RC2, RC4, RC5,
|
Обмен данными по USB-интерфейсу
с РС, скорость
|
не более 8 Кбайт/с для
однонаправленных функций и 4 Кбайта/с
для двунаправленных
|
не более 8 Кбайт/с для
однонаправленных функций и 4 Кбайта/с
для двунаправленных
|
200 Кбайт/с для однонаправленных
функций, 100 Кбайт/с для двунаправленных
|
Обмен данными с собственной
внешней памятью
|
Нет, поскольку нет внешней
памяти
|
Программно, с использованием
вычислительных ресурсов и памяти
программ
Скорость не может превышать
85 Кбайт/с, реально – около 20 Кбайт/с
|
С помощью аппаратного контроллера
SPI-интерфейса.
Предельная скорость 1 Мбайт/с,
реальная – 500 Кбайт/с без накладных
расходов
|
Хранение ключевой информации
внутри вычислителя
|
Есть встроенная память EEPROM
16 КБайт
|
нет
|
Есть встроенная память EEPROM
4 КБайта
|
Генерация случайных чисел
|
С помощью аппаратного ГСЧ
|
Нет физического датчика
случайных чисел. По-видимому, для
генерации случайных чисел в руТокен
используется какой-то алгоритм
генерации псевдослучайной
последовательности, задающий элемент
которой генерируется от встроенного
таймера.
|
С помощью аппаратного ГСЧ
|
Создание резидентного ПО
|
Возможно достаточно большого
размера даже на языках высокого уровня
|
невозможно
|
Возможно даже на языках высокого
уровня, при этом встроенное ПО может
иметь весьма высокий уровень сложности,
например – полноценная реализация
функций файловой системы, интерпретатора
пользовательского байт-кода, протокола
USB mass
storage и т.п.
|
Возможность обновления firmware
без дополнительного оборудования у
пользователя
|
нет
|
нет
|
есть
|
Комментариев нет:
Отправить комментарий