Степень аппаратной защищенности ключа

Добрый день.

Сразу хочу предупредить, что не хочу и не собираюсь критиковать Вашу продукцию. Хочу лишь уяснить реальную степень аппаратной защищенности ключей Guardant. От этого зависит и выбор самого ключа и построение схемы защиты. Если какие-то из вопросов требуют приватности, то можем перейти к формату переписки по электронной почте. Но возможно данная информация заинтересует и других пользователей.

Сам аппаратный ключ является одним из звеньев цепи защиты, которое может подвергнуться атаке. И от его стойкости зависит стойкость всей защиты. Насколько я понял, все типы памяти ключа находятся внутри микроконтроллера. Таким образом защищенность ключа сводится к защищенности микроконтроллера. Если хакер сможет получить содержимое памяти микроконтроллера, то он сможет сделать дубликат ключа.
Я неоднократно встречал утверждения про черный ящик и про то, что память контроллера считать нельзя. Поясните, пожалуйста, на чем основаны данные утверждения. Давайте оставим в стороне вопросы по программной части (пароли, шифрование, утилиты для программирования). Интересует исключительно аппаратная часть.
На данный момент я нашел только информацию о том, что на заводе уничтожается возможность слить данные по jtag. Но документации очень много и я еще не изучил ее полностью. Если ответы на мои вопросы есть в документации, то подскажите конкретнее, где искать.

- Какая именно модель(модели) микроконтроллеров используется в ключах Sign и Code?
- С помощью каких технологий контроллер защищен от чтения?
- Есть ли какая-либо память вне контроллера? Если есть, то как она защищена?

Re: Степень аппаратной защищенности ключа

Здравствуйте еще раз.
Уважаемые разработчики и служба техподдержки, неужели Вам нечего сказать или Вы считаете, что данная тема не заслуживает внимания?

Re: Степень аппаратной защищенности ключа

soft пишет:

Здравствуйте еще раз.
Уважаемые разработчики и служба техподдержки, неужели Вам нечего сказать или Вы считаете, что данная тема не заслуживает внимания?

Приносим извинения за задержку с ответом. Скорее все наоборот, тема заслуживает гораздо более пристального внимания и выходит за рамки стандарного вопроса.

Исчерпывающий ответ появится в данной ветке в течение 48 часов :).

Re: Степень аппаратной защищенности ключа

Утверждение, что защищенность ключа сводится к защищенности микроконтроллера не до конца верное. Во-первых, имеет смысл говорить о защищенности всей цепочки – и здесь все сводится к моменту привязки защищаемого софта и ключа. Как правило это звено ломать проще всего.

Тем не менее, как вы и просили в своем вопросе – мы оставим в стороне остальные звенья цепочки и сконцентрируемся на защищенности микроконтроллера (хотя хочу сделать упор – его будут ломать в последнюю очередь).

По разным причинам я не готов выдавать все тонкости аппаратной части защиты, а про очевидный jtag вы уже написали. Вообще любая нестандартная информация на данную тему – потенциальное облегчение взлома, и мы традиционно какие-то детали сохраняем в секрете.

Памяти вне контроллера в настоящее время нет, ранее использовались микросхемы EEPROM – но необходимость в этом отпала. Теперь все внутри микроконтроллера.

В целом атаки на аппаратную часть бывают инвазивные, неинвазивные, полуинвазивные и в них самих тоже есть свои типы. Но и стоимость атак очень разная! По нашим сведениям - конкретно наши чипы можно (как и все другие, включая кстати любые смарткарточные) взломать, но овчинка совсем не стоит выделки.

Если говорить о цифрах: сколько конкретно стоит взломать наш микроконтроллер инвазивно достоверно неизвестно - нет ни одной известной производителю удачной попытки :) Сторонние источники говорят о сотнях тысяч USD: современный АРМ-овский чип весьма насыщенный, очень мелкая топология и весьма сложная архитектура чипа. Это совсем не то, что простые 8-ми разрядные чипы ломать, тут оборудование нужно куда более тонкое и соответственно дороже!

Мы сотрудничаем с NXP, у нас, даже, был совместный релиз на эту тему. Но конкретный тип микроконтроллера мы не указываем, хотя его можно увидеть на готовом устройстве - мы можем его менять, сохранив совместимость, конечно. Менять NXP на что-то еще пока не планируем.

В целом, не раскрывая никакой критичной информации, могу лишь заверить что мы серьезно подходим к этому вопросу. Приведу пример: при разработке ключа Time (с батарейкой и независимым RTC) мы проанализировали аппаратно все продукты конкурентов (и продолжаем это делать) – нам удалось во всех случаях «с помощью паяльника» замедлить ход времени в ключе (буквально манипуляциями с частотой кварцевого генератора). При разработке своего продукта мы все найденные уязвимости учли, и хотя финальный вариант схемы вышел чуть дороже по себестоимости, мы предпочитаем надежную защиту возможности сэкономить пару долларов на производстве ключа.

В нашем бизнесе – главное это репутация продукта, и на надежность аппаратной части направляются огромные усилия. Современные модели ключей разошлись уже миллионными тиражами, и по аппаратной части мы пока уязвимостей, проблем и фактов взлома не имеем.

Актуальная тема – это защита связки «ключ-защищенный софт» с помощью виртуализации кода и подобных технологий.

Re: Степень аппаратной защищенности ключа

Спасибо за ответ.
Хотя, честно говоря, это не то, чего я ожидал. Слишком много "воды" и мало конкретики.

Я согласен, что важна защищенность всей цепочки, но в этой цепочке единственное, на что я (как программист) не могу повлиять, это сам аппаратный ключ. Я могу взять взять ключ CODE и поместить часть кода в него. Могу сосредоточиться на привязке защищаемого софта и ключа, затратить сколь угодно много человеко-часов на разработку очень сложной схемы защиты, на взлом которой хакеру потребуется много времени и соответственно денег.
И пусть за это возьмутся в последнюю очередь (что не факт), но если хакер может взломать сам аппаратный ключ (пусть и за 100000$, хотя сумма неизвестна, возможно и меньше), то какой смысл тратить чрезмерные усилия на разработку алгоритма защиты?
Вот основная мысль, из-за которой я задал вопрос.
Второй причиной вопроса был ключ CODE. Можно ли со 100% уверенностью полагаться на него?

Как я понял, специальной абсолютно надежной защиты микроконтроллера нет. Есть некоторые "секреты", разглашение которых упрощает взлом, и сложность архитектуры контроллера, которая затрудняет взлом. В таком случае действительно нет смысла разворачивать "супер-защиту". Достаточно довести ее до некоторого адекватного уровня, когда взлом будет довольно трудоемким. Ну и ценность ключа CODE с данной точки зрения падает. Достаточно будет и модели SIGN.

Re: Степень аппаратной защищенности ключа

Черезмерные - не нужно. Просто цитата из одной лекции

Создание 100% надежной системы защиты информации невозможно в принципе, в любых случаях остается ненулевая возможность реализации какой-либо угрозы либо уязвимости. Любая система защиты информации может быть взломана, это вопрос только времени и потраченных злоумышленником средств. Поэтому бесконечно вкладывать деньги в обеспечение ИБ бессмысленно, необходимо когда-то остановиться (вопрос только в выборе этого порога). Согласно принципу разумной достаточности, стойкость СЗИ считается достаточной, если время взлома злоумышленником СЗИ превосходит время старения информации (либо некоторый разумный предел), либо стоимость взлома системы защиты информации превосходит стоимость полученной злоумышленником выгоды от взлома. В последнем случае, если злоумышленник является нормальным экономическим субъектом (не фанат, с психикой все в порядке), то он конечно не будет работать себе в убыток.

Re: Степень аппаратной защищенности ключа

romik пишет:

необходимо когда-то остановиться (вопрос только в выборе этого порога)

Вот именно об определении данного порога и идет речь. Хотелось бы, чтобы злоумышленнику взлом обошелся подороже.

Re: Степень аппаратной защищенности ключа

На нашей стороне есть статистика:
1. В настоящее время общие огрузки ключей Guardant измеряются в миллионах штук.
2. Мы отслеживаем взлом приложений наших клиентов, в 90% случаев это легкомысленное отношение к защите (вызов только GrdCheck и все).
3. Даже оставшийся 10% случаев взлома не связан с аппаратной частью - просто злоумышленники прилагают больше усилий, создают табличные эмуляторы на USB-шине (для Stealth II) или реверсят/патчат приложение (для Sign и выше). В аппаратную часть никто не лезет, не лез и не полезет - это в любом случае дороже в разы. Сейчас даже 100 000 долларов это серьезные деньги :).

Ломают в том месте, где ломать дешевле. Уверяю вас, нет такой пуленепробиваемой защиты испугавшись которой злоумышленник полезет снимать послойно кремний и анализировать мелкую топологию чипа. Даже если исключить инвазивные методы, в софт лезть не так страшно - как минимум не требуется оборудования.

Re: Степень аппаратной защищенности ключа

AndreyStepin пишет:

Уверяю вас, нет такой пуленепробиваемой защиты испугавшись которой злоумышленник полезет снимать послойно кремний и анализировать мелкую топологию чипа. Даже если исключить инвазивные методы, в софт лезть не так страшно - как минимум не требуется оборудования.

Я исхожу из того, что злоумышленник сам не будет заниматься взломом, а обратится к профессионалам, у которых есть соответствующее оборудование и опыт.

Как Вы сами утверждаете, с помощью ключа CODE можно создать такую защиту, когда без ключа работа программы просто невозможна, т.к. часть функционала находится в ключе. В этом случае злоумышленнику ничего другого не остается, как взломать сам ключ. Да, это сложно, дорого, но возможно. Поэтому я больше склоняюсь к выбору ключа SIGN. Ведь ключ CODE дороже и создание защиты с его помощью сложнее (соответственно, тоже дороже). А раз ломается и то и другое, то зачем платить больше. Ведь на ключе SIGN также можно организовать достойную защиту.

Re: Степень аппаратной защищенности ключа

Достойную защиту можно организовать даже на Guardant Stealth 2, а вообще это же простая математика.
К примеру взлом стоит 100 тысяч долларов, стало быть заработать на нем мы должны никак не менее этой суммы.
Эмулятор ключа как правило продается за треть от стоимости ПО.
К примеру ПО стоит 10 тысяч, стало быть нужно найти не менее тысячи клиентов, готовых раскошелится, причем это только чтобы отбить вложения. А надо ведь еще и заработать.
Тысяча внедрений - это сама по себе достаточно солидная цифирь, но ведь и разработчик будет отслеживать этот эмулятор (не получится продать тысячу копий скрытно) и стало быть просто поменяет алгоритм защиты, перехифрует данные а ключи всех клиентов перепрошьет посредством TRU.
И что тогда? Опять платить 100 тысяч?

Re: Степень аппаратной защищенности ключа

Ах да - к чему я все это вел. Такой подход оправдан только в случае если вы пишите какой нибудь билинговый софт с актрономическими ценами (несколько миллионов за установку). И то в данном случае на такие вещи вообще не вешают защиту - ибо гораздо проще наказать нечистоплотного клиента юридическими методами.
А если же ваш софт находится в диапазоне 10-30 тысяч за копию, то берите смело Guardant Code и откиньте сомнения. Благодаря TRU вы можете хоть ежедневно менять всю концепцию защиты прозрачно от пользователя.

Re: Степень аппаратной защищенности ключа

Проблема в том, что на TRU рассчитывать не приходится. Защищаемое ПО самодостаточное, т.е. может работать безо всяких проблем без необходимости обновления обеспечивая пользователю некоторый функционал.
При выходе новой версии ПО с расширенным функционалом мы не можем заставить клиентов выполнить обновление. Если их устраивает текущий функционал, то они продолжают работать с предыдущей версией. И это их право.
Поэтому, если будет взломана какая-то версия ПО, то она может без проблем распространиться взломщиками.

Re: Степень аппаратной защищенности ключа

soft пишет:

При выходе новой версии ПО с расширенным функционалом мы не можем заставить клиентов выполнить обновление. Если их устраивает текущий функционал, то они продолжают работать с предыдущей версией. И это их право.

Конечно можете, достаточно поставлять новую прошивку ключа вместе с новой версией ПО. Я в свое время подходил вообще банальным образом, прошивка полученная через GrdTRU_EncryptAnswer была размещена в сетапере, а в ключе была предусмотренна функция, которая возвращала версию моей микропрограммы. Если версия была более старая, то в ключ заливалась новая микропрограмма посредством GrdTRU_ApplyAnswer.
Естественно ключ был заранее подготовлен к такому подходу, с него был заранее снят вопрос и по сути он находился в режиме перепрограммирования, что впрочем не мешало ему полноценно работать.

Re: Степень аппаратной защищенности ключа

Причем весь этот подход можно даже более расширить, прошивку поставлять в виде довеска к файлу лицензии на программу (если вы такими пользуетесь) тогда не нужно будет билдить сетап на лету для каждого конкретного пользователя.
Правда придется немного помучатся с предпродажной подготовкой, вот тут я раскрывал все это более подробно: http://alexander-bagel.blogspot.ru/2012 … -post.html

Re: Степень аппаратной защищенности ключа

Нет, не можем.
Как я уже сказал, ПО самодостаточное и достаточно состоявшееся. Если потребителя устраивает текущий функционал, то он просто не обновляет ПО.

Re: Степень аппаратной защищенности ключа

В случае если функционал устраивает - тут конечно да, принудительно заставить вы не можете, но тогда вопрос: а вы вообще выпускаете новые версии вашего ПО? Как-то не верится что легальный пользователь будет отказываться обновляться и игнорировать новый функционал.
Если это не так - то стратегия простая, отказ от поддержки более страрых версий и все, а более новые (если вы обнаружили факт взлома) будут идти уже с новой концепцией защиты.

Re: Степень аппаратной защищенности ключа

Видимо придется как-то так и делать. Спасибо за совет.
Новые версии выходят, хоть и не часто.