Читая небольшую статью на известном новостном ресурсе, я увидел забавное вступление: « Новые планшеты Microsoft, похоже, созданы так, что вам не придется их покупать Сомнительное утверждение, на мой взгляд, все же подтверждается непростой судьбой первой версии Surface RT и удивительным сходством с ней нового Surface 2. Однако наша компания всегда в первую очередь шла на поводу у клиентов.
Суть этой статьи, которая читателям Хабра может показаться немного провокационной, такова: в конце 2013 года мы представляем новый продукт — микроключ Guardant Code для защиты приложений на Windows RT от пиратства.
Некоторые, возможно, уже крутят пальцами у виска, но мы действительно предлагаем разработчикам серьезных (!) приложений для Windows RT защищать свое ПО с помощью аппаратного ключа.
В статье вы узнаете: 1. Зачем нам понадобилась Windows RT 8.1 и почему первая Windows RT была плоха с точки зрения наших задач 2. Как работает вся эта структура? 3. Как архитектурные ограничения помешали нам обеспечить поддержку ключа в виде карты microSD 4. .
и какие костыли можно использовать, чтобы обойти это
Первый контакт
Еще до выхода Surface мы обсуждали возможность расширения списка наших целевых платформ до Windows RT. Все-таки определенная вера в Microsoft была, к тому же у них есть деньги.При деньгах и правильном подходе продвигать на рынке можно что угодно – хотя пока у них это не очень получается.
При этом Android тоже не в одночасье стал королём рынка смартфонов — так что время покажет, верна ли стратегия MS. В любом случае, первую версию Surface мы получили в руки год назад, внимательно изучили ее и решили ничего не делать.
Выходить со своей продукцией на несуществующий рынок опасно — нам следовало подождать результатов продаж Surface за пару кварталов и оценить интерес нашей категории клиентов.
Подождали, сделали выводы и положили Surface в дальний ящик стола.
В таком статусе проект продержался до середины лета 2013 года, когда Microsoft [видимо от отчаяния] решила дать фору своему продукту и начала почти бесплатно распространять его в сфере образования (утрирую, конечно), а также сделал снижение цен для всех остальных.
А в сфере образования на самом деле есть серьезные продукты и есть пиратство.
Итак, входные данные на июль 2013 года: есть «перспективная» платформа, есть заинтересованные клиенты, есть готовая база в виде проекта Guardant Mobile (ориентирована на Android с microSD и USB-ключами).
Давай приступим к работе.
Неудачная попытка
Мы начали с нашего самого молодого и очень нишевого продукта: Guardant SD. Состоит из карты microSD с микроконтроллером (с аппаратным ускорением криптографии) и 4 ГБ памяти общего назначения.
Эта штука позволяет загружать и выполнять Java-апплеты на борту, используя очень простой API. Архитектурно все очень похоже на наш ключ Guardant Code и предназначено для защиты приложений.
Дорогие бизнес-приложения, например «Мобильный официант» на планшетах Android. Суть в следующем: переносим важную часть Java-кода в апплет, встраиваем вызовы к нашему API вместо вырезанного кода - и все, часть кода теперь исполняется на карте, в приложении, в помимо набора байтов получает некопируемый аппаратный артефакт и решительное нет пиратству.
Он работает на Android, Windows, Linux, и мы постарались заставить его работать на Windows RT. Ничего не вышло.
Настройка исходила, скажем так, из частичных ограничений Windows RT. Все началось с того, что замечательная, удобная и ориентированная на пользователя Windows RT категорически отказывается видеть файлы с пометкой «скрытый».
По сути, зачем они нужны конкуренту iPad? Лирическое отступление: обмен ключом происходит через обычный файл на карте, который создается микроконтроллером как скрытый по умолчанию.
На самом деле заставить Surface увидеть этот файл оказалось практически невозможно.
Однако на самом деле это можно преодолеть.
Если вы проводите предпродажную подготовку карты на любой другой платформе, вы можете принудительно создать этот файл нескрытым, и микроконтроллер не будет трогать этот флажок.
Конечно, первое же форматирование карты или удаление файла сделает ключ неработоспособным, но вы всегда можете создать этот файл заново.
Настоящая проблема пришла из другого места, хотя по сути оно находится неподалеку.
Все происходило так: мы портировали основную часть кода (основа низкоуровневой библиотеки, реализующей протокол обмена с картой), пытались отправить APDU на карту — и дальше первого продвинуться не смогли.
команда.
Такое ощущение, что микроконтроллер просто не хочет давать нам ответы.
В общем, долго рыскать по Интернету и мучить производителя микроконтроллера нам не пришлось: в Windows RT была обнаружена неотключаемая буферизация чтения.
Те.
Отправить запрос на карту и заполнить запись можно, но прочитать ответ невозможно — он берет его из буфера.
Судя по всему, Windows RT не может предположить, что файл на карте можно изменить.
изнутри это, в нашем случае, с помощью микроконтроллера.
Сотни человеко-часов дорогостоящей разработки, хоть и были практически спущены в унитаз, позволили лучше изучить платформу Мы, естественно, перерыли всю документацию и Интернет, пообщались с представителями Microsoft, но получили на руки линейку и покинули этот проект — это невозможно, это невозможно.
Однако наши инженерные умы не были готовы так легко сдаваться.
Трудно было поверить, что не найдется пары костылей, которые позволят обойти это ограничение.
Они были найдены.
Вот двухэтапный рецепт: 1. Создайте на карте файл для обмена размером 400 МБ.
2. Заставляем микропрограмму записывать ответы микроконтроллера последовательно, а не все время в начало файла.
И вот оно, ненадежное и кривое - но рабочее решение.
При таком размере файла Windows RT не решается полностью его кэшировать для чтения, а поскольку ответ всегда записывается по новому адресу в файле обмена, он читается прекрасно.
Медленно - из-за размера файла - но читается.
Несмотря на найденное решение, оно не было запущено в производство из-за следующих опасений: • Значительное увеличение оперативной памяти в будущих устройствах Surface может позволить Windows RT по-прежнему кэшировать этот файл для чтения целиком (или, по крайней мере, значительных частей).
• Выедаем заметную часть 4Гб флеш памяти карты (а слот microSD единственный в планшете) • Когда 400МБ заканчиваются, ответы необходимо зациклить и записать в начало файла — а там уже может что-то кэшироваться • Все работает довольно медленно Мы, конечно, были довольны нашей изобретательностью, но решили попробовать адаптировать микро USB Guardant Code к планшету.
Благо USB-порт там гарантированно и микродонгл особо не мешает (см.
картинку в начале статьи).
Вторая неудачная попытка
Решив, что с USB-ключом мы не столкнемся с этими проблемами, мы бросились в бой.
Перевели ключ в режим HID, подключили к планшету - ключ определился, светодиод загорелся.
Обмен данными может начаться.
Мы снова были разочарованы.
В WinRT API не было ни одного способа отправить что-либо на пользовательское USB-устройство, даже несмотря на нашу честную поддержку HID. Microsoft, конечно, проектировала Windows RT как закрытую экосистему (операционная система, оборудование, безальтернативный магазин приложений) — но это уже беззастенчиво закрыто.
К концу июля ситуация была следующей: мы сдаемся, наши устройства невозможно адаптировать под Surface, пришло время сказать нашим клиентам решительное и обоснованное «нет».
И здесь мы обращаем внимание на анонсированную Windows RT 8.1 и уже доступную версию Preview.
Третья попытка, удачная
Windows RT (особенно Surface) реализует довольно принудительное обновление Windows. Таким образом, можно предположить, что большинству пользователей Surface (каким бы малым их число ни казалось) не придется долго ждать обновления до 8.1. При этом в новой версии нас ждал приятный сюрприз: поддержка работы с произвольными HID-устройствами.
Как упоминалось ранее, наши современные электронные ключи могут работать либо по фирменному протоколу, требующему наличия драйвера, либо в режиме HID. Работа без водителя несколько снижает скорость и безопасность обмена, но не создает какой-либо критической ситуации.
Поскольку мы поддерживаем Code только для мобильных платформ, безопасность по-прежнему зависит от кода, который клиент передает из приложения для его выполнения на борту ключа.
Процесс разработки Windows 8.1 оказался предсказуемо успешным.
Новые API от MS прекрасно работали даже в версии Preview, и мы не столкнулись с какими-либо существенными трудностями.
И вот, наконец, с третьей попытки у нас появился антипиратский продукт для Windows RT. Фактически разработанная библиотека позволяет разделить приложение на две части: 1. Приложение Магазина Windows 2. Ключевая интеллектуальная часть, размещенная в Кодовом ключе (до 50 000 строк кода на языке C).
Код вызывается единственной функцией CodeRun, имеющей входной и выходной буфер и селектор (чтобы сделать внутри переключатель и выбрать нужный фрагмент кода для выполнения).
Конечно, вы можете создавать сколь угодно сложную логику, используя буферы, чтобы максимально усложнить анализ.
По сути, мы получаем две вещи «по цене одной»: при удачном выборе загружаемого кода имеем защиту от анализа и модификации (важный код внутри ключа) и, конечно же, получаем не- копируемый объект в виде аппаратного ключа, который является неотъемлемой частью приложения.
И напоследок несколько важных вещей: • Вам необходимо вручную добавить в манифест приложения строки, разрешающие работу с ключом.
• Даже самый безобидный доступ к ключу требует подтверждения через диалог GUI, поэтому протестировать это с помощью библиотеки модульных тестов без GUI не получится — будет исключение • Вы не можете получить доступ к ключу из основного потока программы.
На этой ноте я заканчиваю свой рассказ о Windows RT и авторских правах.
Насколько нужны и целесообразны аппаратные ключи безопасности в конце 2013 года на платформе, которая еще не продвигалась, покажет время.
По крайней мере, в прошлом квартале MS смогла получить от продаж Surface 400 миллионов долларов, что является хорошим знаком, особенно после списания 900 миллионов долларов годом ранее.
Теги: #windows rt 8.1 #DRM #guardant #пиратство #Surface #информационная безопасность
-
Ноутбук Lenovo Ideapad Series Y450 4189-7Mu
19 Oct, 24 -
«Афиша» Сократила Тираж Офлайн-Путеводителей
19 Oct, 24 -
Хабрининформер От Яндекса
19 Oct, 24