Pull to refresh
21
0
Владимир Кириенко @love_energy

Программист

Send message

USB на регистрах: interrupt endpoint на примере HID

Reading time10 min
Views9.1K


Еще более низкий уровень (avr-vusb)
USB на регистрах: STM32L1 / STM32F1
USB на регистрах: bulk endpoint на примере Mass Storage
USB на регистрах: isochronous endpoint на примере Audio device

Продолжаем разбираться с USB на контроллерах STM32L151. Как и в предыдущей части, ничего платформо-зависимого здесь не будет, зато будет USB-зависимое. Если точнее, будем рассматривать третий тип конечной точки — interrupt. И делать мы это будем на примере составного устройства «клавиатура + планшет» (ссылка на исходники).
На всякий случай предупреждаю: данная статья (как и все остальные) — скорее конспект того, что я понял, разбираясь в этой теме. Многие вещи так и остались «магией» и я буду благодарен если найдется специалист, способный объяснить их.
Читать дальше →
Total votes 27: ↑25 and ↓2+23
Comments4

Введение в CMake

Reading time7 min
Views528K
imageCMake — кроcсплатформенная утилита для автоматической сборки программы из исходного кода. При этом сама CMake непосредственно сборкой не занимается, а представляет из себя front-end. В качестве back-end`a могут выступать различные версии make и Ninja. Так же CMake позволяет создавать проекты для CodeBlocks, Eclipse, KDevelop3, MS VC++ и Xcode. Стоит отметить, что большинство проектов создаются не нативных, а всё с теми же back-end`ами.
Читать дальше →
Total votes 62: ↑56 and ↓6+50
Comments23

Ретроспективный взгляд на развитие микропроцессоров CISC, RISC, MIPS, ARM

Level of difficultyEasy
Reading time21 min
Views8.7K

С момента разработки первой в мире интегральной схемы в 1959 году прошло несколько десятков лет. Все эти годы аппаратные реализации вычислительных устройств, словно древние организмы «Мезозойской эры», претерпевали многочисленные изменения.

Они эволюционировали под «давлением» разума своих создателей — ученых и инженеров, перебирающих десятки вариантов технических решений и стремящихся найти наиболее эффективную реализацию, унифицировать и оптимизировать вычисления.

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

Потребовалась структура — простая, понятная и эффективная.

Читать далее
Total votes 23: ↑22 and ↓1+21
Comments19

Состояние потока. Как провалиться в бессознательное состояние и что этому способствует?

Reading time5 min
Views20K

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

Читать далее
Total votes 29: ↑10 and ↓19-9
Comments23

Разбираемся в сортах USB

Level of difficultyEasy
Reading time3 min
Views15K

USB имеет богатую историю. Она началась с 1994 года когда был опубликован стандарт версии 0.7 а сегодня окружает нас везде. Его невозможно игнорировать, поэтому предлагаю немного разобраться, не углубляясь в распиновку.

Если прийти на радио рынок и попросить USB кабель — вам продавец задаст вопрос type‑c или micro? Как будто вариантов всего два. А на практике дело сложнее.

Читать далее
Total votes 11: ↑10 and ↓1+9
Comments37

USB на регистрах: bulk endpoint на примере Mass Storage

Reading time13 min
Views9.2K


Еще более низкий уровень (avr-vusb)
USB на регистрах: STM32L1 / STM32F1
USB на регистрах: interrupt endpoint на примере HID
USB на регистрах: isochronous endpoint на примере Audio device

В прошлый раз мы познакомились с общими принципами организации USB и собрали простое устройство, иллюстрирующее работу конечной точки типа Control. Пришло время изучать следующий тип — Bulk. Конечные точки такого типа предназначены для обмена большими объемами информации, причем чувствительной к надежности, но не скорости обмена.

Классические примеры — запоминающие устройства и переходники вроде USB-COM. Но переходники требуют еще наличия конечной точки типа Interrupt, которую мы пока «не проходили», так что остановимся на эмуляции флешки. Точнее, двух флешек одновременно.
Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments37

STM32. Подготавливаем среду разработки в Linux

Level of difficultyEasy
Reading time21 min
Views17K
В недавнем времени получилось так, что у меня появилась пара интересных проектов, где одна из составных частей — микроконтроллер STM32. И каждый раз при смене ноутбука или ОС на домашнем компе приходится настраивать окружение для разработки как в первый раз. Плюсом, последние проекты, которые я делал для STM32 — выполнял в Windows, в демо-версии Keil uVision. Но поскольку я давно переехал в Linux — возникла необходимость основательно разобраться и изложить процесс настройки окружения для будущих применений.

Всем, кому интересно — добро пожаловать под кат.

Читать дальше →
Total votes 63: ↑62 and ↓1+61
Comments31

Защита секретов с помощью технологии SRAM PUF

Reading time14 min
Views4K

Команда Racoon Security постоянно находится в поиске новых технологий для применения в исследованиях и контрактном производстве. В очередной раз просматривая список докладов прошедших выставок Embedded World 2019 и Embedded World 2020, мы наткнулись на документ от NXP Semiconductors - Extend MCU Security Capabilities Beyond Trusted Execution with Hardware Crypto Acceleration and Asset Protection. Так мы узнали про технологию SRAM PUF, в основе которой лежит так называемая Физически неклонируемая функция (Physically unclonable function) на основе состояния памяти. Мы решили разобраться, как работает эта технология, есть ли у нее недостатки и как ее можно применить в наших разработках.

Читать далее
Total votes 18: ↑18 and ↓0+18
Comments8

Загрузка ОС на ARM

Reading time11 min
Views69K
Недавно попросили в двух словах рассказать серьезным людям о загрузке операционной системы на ARM и дать оценку угроз безопасности этого процесса. Вообще ARM-процессоров и вообще ОС. Вы понимаете, все ведь слышали про эти ARM, и что такое ОС тоже все знают. Желательно, на уровне квадратиков со стрелками.

Загрузка ARM в четырех прямоугольниках — под катом.
Читать дальше →
Total votes 42: ↑38 and ↓4+34
Comments52

TrustZone: аппаратная реализация в ARMv7A

Reading time13 min
Views14K
Сегодня начинаем исследовать внутреннее устройство TrustZone (это торговая марка компании ARM).

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

Поэтому я начну с того, что TrustZone — это никакое не «место» в процессоре. Ее нельзя найти на чипе, как кеш или АЛУ. И доверенные программы, на самом деле, не исполняются в какой-то физически выделенной зоне процессора.

Даже если мы посмотрели бы в исходные коды ядра ARM, то не смогли бы четко выделить TrustZone. Скорее, по аналогии с программами, TrustZone — это несколько модулей и набор патчей для почти всех остальных частей процессора.

В этой статье мы рассмотрим, как TrustZone реализуется на аппаратном уровне процессоров ARM Cortex-A (ARMv7A).
Читать дальше →
Total votes 24: ↑24 and ↓0+24
Comments2

TrustZone: доверенная ОС и ее приложения

Reading time10 min
Views6.5K
В прошлых статьях мы рассматривали аппаратное устройство TrustZone и работу механизма Secure Monitor. Сегодня речь пойдет о доверенной ОС (TEE) и ее приложениях. И если прошлый раз были довольно низкоуровневые вещи, сейчас все будет на вполне высоком уровне — на уровне операционной системы.
Читать дальше →
Total votes 9: ↑8 and ↓1+7
Comments6

Программирование под ARM TrustZone. Secure Monitor

Reading time12 min
Views12K
Продолжаем наш цикл статей, посвященный столетию Великой Октябрьской… ARM TrustZone.

Сегодня мы разберемся, что такое Secure World, Normal World, как на программном уровне взаимодействуют две ОС – доверенная (TEE) и гостевая. Узнаем, для чего нужен и как работает Secure Monitor, как обрабатываются прерывания от устройств.

Если готовы – добро пожаловать под кат.
Читать дальше →
Total votes 20: ↑20 and ↓0+20
Comments9

Защита ядра Linux из ARM Trustzone: как усилить Linux Kernel Runtime Guard и предотвращать последствия zero-day

Reading time10 min
Views6.3K


Всем привет! В ОС Аврора мы уделяем большое внимание обеспечению безопасности. Сегодня немного расскажем о перспективном подходе — синергии технологии ARM TrustZone и open-source проекта Linux Kernel Runtime Guard (LKRG) для повышения защищённости девайсов (в том числе от zero-day уязвимостей). Поговорим о том, что такое вообще ARM TrustZone, продукт Аврора ТЕЕ, пройдёмся по внутреннему миру LKRG и его ограничениям. Затем о том, как с использованием доверенной среды исполнения можно преодолеть эти ограничения, для того чтобы LKRG можно было рассматривать для применения в продакшене ОС.

Cтатья была подготовлена по материалам доклада нашего коллеги Антона Рыбакова на конференции OS-DAY 2020 https://youtu.be/jjYJKZK_bas

Итак, для начала краткое содержание:


• О технологии ARM TrustZone и Аврора ТЕЕ
• О проекте Linux Kernel Runtime Guard
• Ограничения Linux Kernel Runtime Guard
• Устранение недостатков с помощью ARM TrustZone

Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments24

Немного о ARM Security Extensions (aka ARM TrustZone)

Reading time7 min
Views23K

О чем эта статья


На Хабре уже несколько раз упоминали о SMM — режиме процессора x86/64 который имеет больше привилегий чем даже режим гипервизора. Нечто подобное есть и в процессорах архитектуры ARMv7 и ARMv8. Вычислительные ядра этих архитектур могут иметь опциональное расширение под названием ARM Security Extensions, которое позволит разделить исполняемый код, память и периферию на два домена — доверенный и недоверенный. Официальное маркетинговое название этой технологии — ARM TrustZone. Но технари чаще предпочитают говорить о security extensions.


Это будет обзорная статья, поэтому я не буду вдаваться в глухие технические дебри. Тем не менее технические детали будут присутствовать. Первая часть статьи будет посвящена вопросу зачем это всё вообще нужно, а вторая — как это работает в общих чертах. Если общество заинтересуется — следующая статья будет содержать больше технических деталей. Кому интересно — добро пожаловать под кат.

Читать дальше →
Total votes 28: ↑27 and ↓1+26
Comments21

Аппаратные технологии безопасности Intel: новое слово в защите биометрических приложений. Часть первая

Reading time14 min
Views9.6K
Биометрические технологии позволяют компьютерам узнавать людей по уникальным для каждого признакам. Прогресс в данной области впечатляет. То, о чём раньше знали лишь в узких научных кругах, сегодня доступно каждому. Сканером отпечатков пальцев в смартфоне или на рабочем месте, например, уже никого не удивить. На первый взгляд, биометрическая аутентификация – это надёжная преграда перед посторонними. Действительно, нет в мире двух человек, похожих абсолютно во всём. Но биометрические приложения, способные надёжно защищать системы от вторжений, тоже нуждаются в защите.


Сегодня мы поговорим об аппаратных технологиях Intel, которые способны вывести защиту биометрических приложений на новый уровень.
Читать дальше →
Total votes 15: ↑13 and ↓2+11
Comments15

Использование Java смарт-карт для защиты ПО. Глава 2. Java смарт-карта с точки зрения разработчика апплетов

Reading time6 min
Views6.5K
image

В данном цикле статей пойдет речь об использовании Java смарт-карт (более дешевых аналогов электронных ключей) для защиты программного обеспечения. Цикл разбит на несколько глав.

Для прочтения и осознания информации из статей вам понадобятся следующие навыки:
  • Основы разработки ПО для Windows (достаточно умения программировать в любой визуальной среде, такой как Delphi или Visual Basic)
  • Базовые знания из области криптографии (что такое шифр, симметричный, ассиметричный алгоритм, вектор инициализации, CBC и т.д. Рекомендую к обязательному прочтению Прикладную Криптографию Брюса Шнайера).
  • Базовые навыки программирования на любом языке, хотя бы отдаленно напоминающем Java по синтаксису (Java, C++, C#, PHP и т.д.)

Цель цикла — познакомить читателя с Ява-картами (литературы на русском языке по их использованию крайне мало). Цикл не претендует на статус «Руководства по разработке защиты ПО на основе Ява-карт» или на звание «Справочника по Ява-картам».

Состав цикла:



Читать дальше →
Total votes 24: ↑14 and ↓10+4
Comments0

Протоколы защищенного обмена сообщениями и новинка от GlobalPlatform

Reading time7 min
Views1.6K

Известная международная организация GlobalPlatform, занимающаяся стандартизацией в области смарт-карт, в июле 2022 года опубликовала документ со статусом Public Review, где предложила новый вариант протокола защищенного обмена сообщениями (ЗОС): SCP04.

Защищенный обмен сообщениями в смарт-картах — механизм обеспечения безопасного обмена данными с помощью криптографических средств. Как правило, протокол обеспечивает аутентичность данных, конфиденциальность и целостность, но в значительной мере степень защиты зависит от реализации самого протокола.

Статья посвящена анализу главных особенностей протоколов ЗОС из документов GlobalPlatform, включая новый SCP04.

Читать далее
Total votes 3: ↑3 and ↓0+3
Comments0

Использование Java смарт-карт для защиты ПО. Глава 1. Общие сведения

Reading time7 min
Views16K
image

1. Введение


В данном цикле статей пойдет речь об использовании Java смарт-карт (более дешевых аналогов электронных ключей) для защиты программного обеспечения. Цикл разбит на несколько глав.

Для прочтения и осознания информации из статей вам понадобятся следующие навыки:
  • Основы разработки ПО для Windows (достаточно умения программировать в любой визуальной среде, такой как Delphi или Visual Basic)
  • Базовые знания из области криптографии (что такое шифр, симметричный, ассиметричный алгоритм, вектор инициализации, CBC и т.д. Рекомендую к обязательному прочтению Прикладную Криптографию Брюса Шнайера).
  • Базовые навыки программирования на любом языке, хотя бы отдаленно напоминающем Java по синтаксису (Java, C++, C#, PHP и т.д.)

Цель цикла — познакомить читателя с Ява-картами (литературы на русском языке по их использованию крайне мало). Цикл не претендует на статус «Руководства по разработке защиты ПО на основе Ява-карт» или на звание «Справочника по Ява-картам».

Состав цикла:



Читать дальше →
Total votes 29: ↑16 and ↓13+3
Comments10

Кратко о форматах TLV, BER, CER, DER, PER

Reading time8 min
Views15K

Я хотел бы кратко рассказать о таких форматах данных, распространенных в ИТ-индустрии, в том числе в области инфраструктур открытых ключей (ИОК), смарт-картах, включая документы нового поколения на базе смарт-карт, в мобильной связи. Хотя рассматриваемые форматы и связаны с ASN.1, но некоторые из них ушли далеко за пределы этой области. О некоторых из них многие знают, но не все знают настолько, чтобы, допустим, уметь отличать BER от DER, а некоторые варианты типа PER вообще являются экзотикой.

Глубоко в тему погружаться не буду. Просто познакомлю с главными особенностями, чтобы понимать, что это такое и с чем это едят. Досконально и в полном объеме всё это описано в соответствующих стандартах ITU-T X.690 и ISO 7816.

Одна из моих мотивирующих задач — это уложить тему в своей голове по полочкам.

Правила абстрактной нотации (ASN.1) используются, когда надо специфицировать формат некой структуры данных. Сами правила описаны в стандартах ITU-T X.680–X.683. Пожалуй, что наиболее распространенный вариант применения — это форматы сертификатов X.509 и всего, что имеет к ним отношение. Пример текстовой нотации может выглядеть как-то так:

Читать далее
Total votes 29: ↑29 and ↓0+29
Comments3

Смарт-карты для самых маленьких

Reading time6 min
Views53K
Поскольку статья вводная и обзорная, то рассматриваться будет простейшая разновидность смарт-карт — SIM-карты, полагаю, что таких карт на планете сейчас больше всего.
По сегодняшним меркам стандарт SIM выглядит архаично, но зато он идеален для первого знакомства с миром смарт-карт, усвоение принципов, которые заложены в основу этого стандарта, облегчит дальнейшее погружение в тему.
Если Вы «карточник», то вряд ли узнаете для себя что-то новое, разве что какие-нибудь не очень понятные моменты разложатся по полочкам, а может быть Вы разложете по полочкам то, что недопонял автор (но, напоминаю, держимся в рамках SIM!).

Читать дальше →
Total votes 51: ↑45 and ↓6+39
Comments19
1
23 ...

Information

Rating
Does not participate
Location
Россия
Registered
Activity