Микросхемы семейства iButton компании Dallas Semiconductor традиционно применяются специалистами в области информационной безопасности в качестве электронных идентификаторов персонала. Успех iButton у разработчиков и потребителей обусловлен простотой сопряжения с компьютером, невысокой стоимостью самих приборов и средств подключения. Приборы iButton имеют защищенный корпус, легко крепятся на пластиковом брелке, могут одновременно служить ключом для нескольких приложений.
Обычно в комплексах защиты информации используется серийный номер прибора, уникальный в каждом изделии, а также энергонезависимая память, позволяющая сохранять ключевую информацию. Соответственно, из всей гаммы микросхем iButton наибольшее применение нашли устройства DS1990 без энергонезависимой памяти и DS1992 c перезаписываемой памятью 1 Кбит. В случае необходимости большего объема памяти специалисты могут использовать приборы DS1993 (4 Кбит), DS1995 (8Кбит), DS1996 (16Кбит).
Открытая память перечисленных выше приборов создает определенные неудобства для разработчиков, которые они, впрочем, научились успешно преодолевать. Этих неудобств два: теоретическая возможность эмуляции идентификационного кода приборов и возможность несанкционированного считывания или изменения хранящихся в их памяти данных. Для противодействия эмуляции номера традиционно пытаются проверить личность владельца электронного ключа, запрашивая у него пароль, который должен быть введен с клавиатуры. Для защиты памяти от изменения ее содержимое шифруют.
По непонятным причинам в поле зрения разработчиков до сих пор не попали такие приборы Dallas Semiconductor, как DS1961S и DS1963S. Эти приборы специально созданы для приложений, требующих повышенной защищенности и уже успешно применяются за рубежом.
Безопасность
Принципиальным отличием приборов iButton серии DS196xS является то, что они разработаны специально для противостояния попыткам изменения данных в памяти устройства или попыткам эмуляции поведения устройства. Безопасность устройств основана на SHA-1 (Secure Hash Algorithm) — аппаратно реализованном алгоритме цифровой подписи данных (вычисления хэш-кода).
Механизм безопасности основан на преобразовании входного потока данных при помощи хэш-алгоритма и с применением некоторых начальных установок. И хост (ведущий компьютер или контроллер), и прибор могут либо подписать поток передаваемых данных, либо проверить подпись другого устройства. Подписать данные означает вычислить хэш-функцию от этих данных и состояния соответствующих регистров устройства. Проверить подпись означает самостоятельно вычислить хэш-функцию для входящего потока данных и состояния соответствующих регистров и параметров, и сравнить ее со значением, полученным от передающего устройства. Существенно, что вычисление и проверка подписи хоста выполняются внутри приборов DS1961S, DS1963S на основании недоступных вовне приборов секретных кодов. Таким образом, гарантируется невозможность эмуляции приборов и подмены данных.
Для параметризации вычисления хэш-функции применяются несколько цифровых кодов. Один из них называется «секретным кодом». Секретный код заносится в память микросхемы ведущим устройством и не может быть прочитан ни этим, ни другим устройством, ни при каких условиях. Мастер может записать новый секретный код в память, или вычислить новый секретный код, зная старый. Секретный код в памяти мастера используется только для вычисления хэш-кода и не передаётся в микросхему при обмене данными. Для параметризации вычисления хэш-функции применяется также состояние идентификационного регистра микросхемы, известное и хосту, а также публичные коды, например, пин-код.
Для первого подписания данных в память прибора необходимо записать секретный код. То же значение секретного кода должно быть записано в базу данных хоста. Обязательным условием правильной работы алгоритма цифровой подписи является идентичность секретных кодов в памяти хоста и устройства. Для систем повышенной секретности может быть применен режим вычисления нового секретного кода на основе старого секретного кода, данных идентификационного регистра и дополнительной информации, указанной хостом. На основе этих данных новый секретный код будет вычислен и записан вместо старого. В этом режиме хост должен вычислить секретный код по тому же алгоритму и изменить его в своей базе данных.
Для исключения несанкционированного изменения памяти данных подлинность хоста проверяется при записи новых данных в память устройства. После записи данных устройство вычисляет хэш-код, используя данные страницы, куда предполагается запись, частично данные блокнота, секретного кода и данных идентификационного регистра. То же самое должен сделать мастер и передать результат в устройство. При совпадении обоих хэш-кодов, данные переписываются в требуемую страницу памяти. Если же хэш-коды не совпали, то новые данные игнорируются.
Чтобы быть уверенным в подлинности прибора, хост должен прочитать для начала его серийный номер. Если серийный номер числится в базе данных хоста, то прибор считается подлинным. После признания прибора подлинным хост должен проверить цифровую подпись хранимых данных для исключения подделки устройства путём его эмуляции или копирования.
Основную роль при определении подделанных данных играет секретный код. Он никогда не может быть считан из памяти устройства, а высокая разрядность (64 бита) практически исключает его подбор. Поэтому, даже при полной эмуляции микросхемы используя любые технические средства, ошибка подписи данных будет обнаружена. Точно так же, при возможном копировании данных в другое устройство кроме ошибки подписи будет обнаружено несоответствие серийного номера.
Прибор DS1961S для проведения электронных платежей
Кроме стандартного для всех приборов семейства iButton уникального 64-битного номера (код этого семейства — 33H), микросхемы серии DS1961S имеют энергонезависимую память (EEPROM) объёмом 1128 бит, разделенную на 4 страницы по 256 бит для записи данных пользователя. Дополнительно существует 64битная память секретного кода, доступная только для записи, при чтении из неё читается код FFh, а также восьмибайтная страница регистров управления, в которую пользователь может записать до пяти собственных байт. Запись данных в микросхему возможна только при условии знания секретного кода, возможности вычисления на его основе и передачи вычисленного 160 битного MAC (Message authentication code) кода для авторизации. Исключением является область секретного кода. Страницы секретного кода и страницы памяти данных могут быть защищены от последующей записи или переведены в режим эмуляции EPROM. Прибор имеет встроенное ядро SHA-1 для вычисления хэш-кода (или MAC кода в терминах DS1961S). Как и прочие устройства семейства iButton, DS1961S содержит буферную область памяти, называемую блокнотной, для промежуточной верификации данных. Информация сначала записывается в блокнотную память, откуда может быть считана для проверки. После проверки данные переписываются в прибор по определенному адресу, используя команду копирования блокнота, если был принят правильный 128 битный проверочный MAC код. Для вычисления MAC кода используется секретный код и дополнительные данные, записанные в память DS1961S, включая данные идентификационного регистра. Новый секретный код может быть перезаписан без вычисления MAC кода.
Обзор
Структурная схема DS1961S приведена на рис. 1. Микросхема включает 6 основных компонентов:
64 битное ПЗУ кода семейства, используемое для общей идентификации микросхемы,
64 битный блокнот,
четыре 32-байтных страницы EEPROM,
64-битная регистровая страница,
64-битная память секретного кода,
512 битное ядро SHA-1 (Secure Hash Algorithm).
При считывании и записи данных первым передается или принимается младший бит.
Как и в других устройствах семейства iButton, для чтения информации ведущее устройство должно сначала послать одну из команд функций ПЗУ:
Чтение ПЗУ,
Сравнение ПЗУ,
Поиск ПЗУ,
Пропуск ПЗУ,
Продолжение обмена,
Поиск ПЗУ в ускоренном режиме,
Сравнение ПЗУ в ускоренном режиме.
По окончании приёма команд ускоренного режима, посланных на стандартной скорости, DS1961S переходит в ускоренный режим, и обмен данными осуществляется на повышенной скорости. После исполнения одной из команд функций ПЗУ DS1961S ожидает одну из команд работы с памятью или команду блока SHA:
Запись блокнота,
Чтение блокнота,
Загрузка первого секретного кода,
Вычисление нового секретного кода,
Копирование блокнота,
Чтение аутентифицированной страницы,
Обновление блокнота,
Чтение памяти.
Как и все микросхемы iButton, каждый экземпляр DS1961S содержит уникальный запрограммированный лазером номер длинной 64 бита. Первые 8 бит являются кодом семейства (33H), следующие 48 бит являются уникальным серийным номером, и последние 8 бит являются контрольной суммой СRС-8 первых 56 бит.
Карта памяти
Как уже отмечалось, DS1961S имеет четыре области памяти — память данных, память секретного кода, блокнот и страница регистров с байтами пользователя и регистрами специальных функций. Блокнот используется как буфер при записи памяти и страницы регистров. Память данных и страница регистров размещены в линейном адресном пространстве (см. таблицу 1) и имеют неограниченный доступ для чтения, но запись данных в эти области памяти требует знания секретного кода и правильного вычисления кода авторизации ведущим устройством.
Секретный код может быть запрограммирован путём копирования данных из блокнота в соответствующую область памяти. Второй механизм состоит в вычислении нового секретного кода на базе данных блокнота и прежнего секретного кода. Секретный код, ни при каких обстоятельствах не может быть прочитан из памяти, доступ к нему для чтения имеет только блок SHA для вычисления кодов аутентификации сообщений.
Диапазон адресов 88h-8Fh, называемый страницей регистров, содержит регистры специальных функций, байты пользователя и байт производителя. Единожды запрограммировав эти байты кодом 55h или AAh, большинство этих байтов становятся доступными только для чтения и не могут быть изменены в дальнейшем. Любые другие коды не приводят к активизации защиты этих байтов от записи. Байт производителя может иметь значение 55H или AAh. Обычно он имеет значение 55h, указывая на то, что адреса 008Eh и 008Fh доступны пользователю для записи / чтения и не имеют никакой защиты. Значение AAh указывает на то, что эти два адреса защищены от записи и содержат запрограммированный производителем идентификатор. Этот идентификатор может использоваться программным обеспечением для упрощения опознавания микросхемы и быстрее выбирать подходящий секретный код. Идентификаторы назначаются и регистрируются изготовителем. Диапазон адресов 0090h-0097h — идентификационный регистр. Обычно он содержит копию регистрационного номера, записанную в ПЗУ, в том же формате. В заказных версиях в идентификационном регистре может находиться любая указанная пользователем последовательность.
Адресные регистры и состояние пересылки
DS1961S использует три адресных регистра — ТА1, ТА2 и E/S. Такие регистры имеются во многих других однопроводных устройствах, но работают они по иному. Регистры ТА1 и ТА2 загружаются соответственно младшим и старшим байтами адреса назначения и указывают, куда должны быть записаны или откуда считаны данные. Регистр E/S является регистром состояния пересылки и доступен только для чтения. Он используется для проверки целостности данных при выполнении команд записи. Так как блокнот DS1961S способен принимать данные только в виде блоков по 8 байт, младшие 3 бита регистра ТА1 всегда равны нулю, а три младших бита регистра E/S (конечное смещение) всегда считываются как единицы. Это означает, что все данные блокнота используются для последующего копирования в основную память секретного кода. Бит 5 регистра E/S, называемый PF или флагом неполного байта устанавливается в 1, если число бит данных, переданных мастером не кратно 8, или, если данные в блокноте недействительны из-за пропадания питания. Успешная запись данных в блокнот очищает бит PF. Старший бит регистра E/S называется АА или битом принятия авторизации. Он указывает на то, что данные, сохранённые в блокноте, уже были скопированы в память по адресу назначения. При записи данных в блокнот этот флаг автоматически очищается.
Прибор DS1963S c блоком SHA и встроенным ОЗУ
DS1963S отличается от DS1961S увеличенным до 4096 бит объёмом памяти, наличием на кристалле ОЗУ вместо EEPROM, счётчиками числа записи страниц, а также возможностью использования микросхемы как сопроцессора для вычисления MAC кодов. Счетчики числа записи страниц являются дополнительным механизмом безопасности. Они позволяют мгновенно выявить попытки несанкционированной записи в память, для чего необходимо вести программный счет количества циклов записи и сравнивать его с показаниями аппаратного счетчика циклов записи. Применение устройства в качестве сопроцессора безопасности хоста позволяет разгрузить процессор хоста и повысить уровень секретности системы за счёт хранения секретного кода в памяти DS1963S, откуда он не может быть считан ни при каких условиях.
Энергонезависимая память прибора объёмом 4096 бит, разделена на 16 страниц по 256 бит с возможностью записи-чтения. Восемь страниц памяти имеют индивидуальные 64-битные секретные коды и 32-битные «только для чтения» счётчики количества циклов записи без переполнения. Секретные коды имеют индивидуальные 32-битные счётчики количества циклов записи. Чтение содержимого секретных кодов невозможно. Так же, как и в других приборах семейства iButton, DS1963S содержит область блокнота, предназначенную для проверки записываемых данных до их окончательного занесения в память.
DS1963S имеет свой собственный уникальный 64-битный регистрационный номер, который записан в ПЗУ лазером в процессе изготовления, что обеспечивает гарантированную идентификацию и позволяет осуществлять абсолютный контроль.
Область применения микросхемы — системы оплаты и идентификации, требующие высокой степени секретности.
Обзор
Структурная схема устройства показана на рис. 2. DS1961S имеет 6 основных компонентов:
64 битное ПЗУ, запрограммированное лазером,
256 битный блокнот,
восемь 32 байтных страниц ОЗУ общего назначения,
восемь 32 байтовых страниц ОЗУ, защищённых счётчиками циклов записи,
Две 32 байтных страницы, хранящие восемь 64 битных секретных кодов с индивидуальными счётчиками количества циклов записи,
512 битное ядро SHA-1.
Для чтения информации мастер шины вначале должен послать одну из команд функций ПЗУ:
Чтение ПЗУ,
Сравнение ПЗУ,
Поиск ПЗУ,
Пропуск ПЗУ,
Продолжение обмена,
Поиск ПЗУ в ускоренном режиме,
Сравнение ПЗУ в ускоренном режиме.
По окончании команд ускоренного режима, посланных на стандартной скорости, устройство переходит в ускоренный режим, когда обмен данными осуществляется на повышенной скорости. После того, как команда ПЗУ успешно выполнена, становятся доступными функции памяти, и мастер может передавать одну из 8 команд функций памяти. При считывании и записи данных первым передается младший бит.
Как и все микросхемы iButton, каждый экземпляр DS1963S содержит уникальный запрограммированный лазером номер длинной 64 бита. Первые 8 бит являются кодом семейства (18H), следующие 48 бит являются уникальным серийным номером, и последние 8 бит являются контрольной суммой СRС-8 первых 56 бит.
Карта памяти
Как уже отмечалось выше, DS1963S имеет четыре области памяти — память данных, память секретных кодов, счётчики и блокнот. Каждая из этих областей организована в виде страниц по 32 байта, как показано в таблице 2. Блокнот используется как буфер при записи в память данных или в память секретных кодов. Страницы 0—15 имеют неограниченный доступ для записи/чтения. Страницы 16 и 17 содержат восемь 64-битных секретных кодов, и их содержимое не может быть считано. Шестнадцать 32-битных счётчиков подсчитывают количество циклов записи в страницы 8—16, а так же в область каждого из восьми секретных кодов. Счётчики расположены в страницах 19—20, и могут быть только считаны. Страница 21 содержит счётчик, который инкрементируется при каждом запуске блока SHA (счётчик PRNG). Его значение может быть использовано для генерации псевдослучайных чисел, а так же как измеритель ресурса встроенной батареи. Блокнот расположен в блоке №18.
Адресные регистры
DS1963S использует три адресных регистра — TA1, TA2 и E/S. Регистры TA1 и TA2 загружаются адресом назначения, указывающим, куда должны быть записаны или откуда считаны данные. Регистр E/S является счётчиком байт и регистром состояния пересылки. Он доступен только для чтения. Пять младших битов этого регистра содержат адрес последнего байта, скопированного в блокнот (конечное смещение) Бит 5 — флаг неполного байта. Он устанавливается, когда число принятых битов не кратно 8. Бит 6 не несёт никаких функций, и всегда читается как 0.
Старший бит регистра E/S является флагом принятия авторизации, если он установлен в 1, то это значит, что данные были успешно скопированы в память. Запись данных в блокнот очищает этот флаг.
Одно из отличий DS1963S от DS1961S заключается в том, что блокнот также может быть защищен от несанкционированного чтения. Защита блокнота автоматически включается после обнаружения сигнала «сброс», и снимается и устанавливается в дальнейшем блоком SHA или командой очистки блокнота. Это позволяет обеспечить защиту секретных данных, которые, возможно, остались в блокноте от предыдущего обмена от несанкционированного чтения.
Высокая защищенность описанных приборов позволяет применять их для хранения данных и аутентификации в системах, требующих повышенной безопасности. Такими приложениями являются платежные системы, в том числе и на АЗС, на транспорте, системы удаленного доступа к ресурсам, системы защиты ПЭВМ от несанкционированного доступа. Известны приложения, в которых устройства использованы в составе электронных счетчиков с предоплатой в качестве индивидуальных ключей, а также в качестве персональных электронных кошельков в глобальной платежной системе.
Авторы надеются, что полученная информация позволит специалистам в области создания платежных приложений, систем информационной и объектовой безопасности по-новому взглянуть на возможности хорошо известных им устройств семейства iButton.
|