Руководство пользователя Allwinner H616


  Описание    Система    Графика    Память    Ethernet    Видео    Аудио    Интерфейсы      Безопасность    

10. Система безопасности (Security System)

  10.1. Криптосистема  

10.2. Идентификатор безопасности



Глава 10. Система безопасности - Security System
Раздел 10.1. Криптосистема - Crypto Engine

Система безопасности


10.1.1. Обзор

Модуль Crypto Engine (CE) является одним из ускорителей алгоритмов шифрования / дешифрования. Он поддерживает типы симметричных, асимметричных алгоритмов, алгоритмов хеширования и ГСЧ. Есть два программных интерфейса для безопасного и незащищенного мира. Программный интерфейс прост в настройке, настраивается только управление прерываниями, адрес описания задачи и тег загрузки. Информация управления алгоритмом записывается в память дескриптором задачи, затем CE автоматически считывает ее при выполнении запроса. Он поддерживает параллельные запросы от 4 каналов и имеет внутренний контроллер DMA для передачи данных между CE и памятью. CE имеет следующие особенности:
  • Симметричный алгоритм: AES, DES, 3DES, XTS
    - 128-, 192-, 256-битный размер ключа для AES
    - Режимы ECB, CBC, CTR, CTS, OFB, CFB, CBC-MAC для AES
    - Поддержка режима AES-CFB CFB1, CFB8, CFB64, CFB128
    - AES-CTR поддерживает CTR16, CTR32, CTR64, CTR128
    - Режимы ECB, CBC, CTR, CBC-MAC для DES / 3DES
    - Режим DES-CTR поддерживает CTR16, CTR32, CTR64
    - 256-битный, 512-битный ключ для XTS
  • Алгоритм хеширования: MD5, SHA1, SHA224, SHA256, SHA384, SHA512, HMAC-SHA1, HMAC-SHA256
    - MD5, SHA, HMAC дополняются с использованием оборудования, если не последний пакет, ввод должен быть выровнен с блоком вычислений, а именно 512 бит или 1024 бит
  • Асимметричный алгоритм: RSA512 / 1024/2048/4096 бит, ECC160 / 224/256/384/521 бит
  • 160-битный аппаратный ГПСЧ со 175-битным начальным числом. Вывод соответствует 5 словам
  • 256-битный аппаратный TRNG. Вывод соответствует 8 словам
  • Поддерживает безопасный и небезопасный интерфейсы соответственно, каждый мир выдает запрос задачи через свой собственный интерфейс, не знает о существовании друг друга
  • Поддерживает режим цепочки задач для каждого запроса. Задача или цепочка задач выполняются по запросу.
  • Симметричная, асимметричная логика управления HASH - отдельные, могут обрабатывать задачи одновременно. Симметричная логика может выбрать экземпляр 2 костюмов во время реализации
  • 8 групп разброса (sg) поддерживаются как для входных, так и для выходных данных. Размер sg выражается в словах. DMA читает и записывает данные с выравниванием по словам
  • DMA имеет несколько каналов, каждый канал соответствует одному алгоритму


    10.1.2. Блок-схема

    На следующем рисунке показана блок-схема Crypto Engine.

    Рисунок 10-1. Блок-схема CE


    10.1.3. Операции и функциональные описания


    10.1.3.1

    Дескриптор задачи

    Программное обеспечение делает запрос через дескриптор задачи, предоставляя тип алгоритма, режим, адрес ключа, адрес источника / назначения и размер и т.д. Дескриптор задачи выглядит следующим образом.

    Идентификатор цепочки задач поддерживает 0 ~ 3.
  • Поле ключевого адреса - это адрес для ключа каждого алгоритма и для адреса общей длины HASH при последнем пакете, а также для адреса микрокодов функции расширения. Должен быть адрес слова.
  • Поле iv addr - это адрес для IV или модуля, или адрес значения настройки для XTS. Должен быть адрес слова.
  • ctr addr - это адрес IV следующего блока и адрес K1 HMAC. Должен быть адрес слова.
  • Поле src / dst sgX adr указывает 32-битный адрес для данных источника и назначения. Должен быть адрес слова.
  • В поле src / dst sgX size указывается размер для каждого sg соответственно.
  • В поле следующей задачи должно быть установлено значение 0, если следующей задачи нет, иначе - дескриптор следующей задачи. Должен быть адрес слова.
  • Зарезервировано используется для адреса CSA CW. Должен быть адрес слова.


    10.1.3.2

    Общее управление очередью дескриптора задачи

    Описание регистра


    10.1.3.3

    Симметричное управление очередью дескриптора задачи

    Описание регистра


    10.1.3.4

    Асимметричное управление очередью дескриптора задачи

    Описание регистра


    10.1.3.5

    Запрос задачи

    По сути, есть 4 шага для обработки одной задачи из программного обеспечения.

    Рисунок 10-3. Процесс запроса задачи

  • Шаг 1. Программное обеспечение должно настроить дескриптор задачи в памяти, включая все поля дескриптора. Идентификатор канала соответствует одному каналу в CE. В соответствии с типом алгоритма программное обеспечение должно установить поля для общего управления, симметричного управления, асимметричного управления, а затем предоставить адрес ключа / iv / ctr и длину данных этой задачи. Адрес и размер sg источника и получателя устанавливаются на основе верхнего приложения. Если после этой задачи происходит конкатенация другой задачи, установите ее адрес дескриптора в следующем поле дескриптора.
  • Шаг 2: Программное обеспечение должно установить регистры, включая адрес дескриптора задачи, управление прерываниями.
  • Шаг 3: Программное обеспечение считывает регистр загрузки, чтобы убедиться, что бит 0 равен нулю, затем запускает запрос, подтягивая бит 0 регистра загрузки.
  • Шаг 4: Дождитесь завершения задачи.


    10.1.3.6

    Настройка длины данных

  • Поле длины данных в дескрипторе задачи имеет разное значение для разных алгоритмов.
  • Для алгоритма HASH поле длины данных указывает действительный номер бита исходных данных, для других - номер байта исходных данных. Длина данных HASH должна быть выровнена в 512/1024 бит, если текущий запрос не является последним блоком данных из-за аппаратного заполнения.
  • Для ГПСЧ длина данных должна быть выровнена из 5 слов.
  • Для TRNG длина данных должна быть выровнена по 8 слов.
  • Размер данных в sg источника и назначения равен словам, значение которых должно соответствовать полю длины данных, иначе CE сообщит об ошибке и остановит выполнение.


    10.1.3.7

    Охранная операция

    Когда ЦП отправляет запрос модулю CE, модуль CE сохраняет безопасный режим ЦП. При выполнении этого запроса этот бит состояния работает как тег доступа для внутреннего и системного ресурса. Для HUK / RSSK / SSK из SID доступ может осуществляться только в безопасном режиме, иначе эти ключи будут использоваться как 0. Для доступа к SID и модулю keyram через шину AHB только безопасный режим может быть успешным, иначе будет считываться 0 или не может написать. При выдаче запросов на чтение и запись MBUS CE будет использовать отправку этого бита безопасного режима на шину, так что безопасный запрос может получить доступ к безопасному и незащищенному пространству, но незащищенный запрос может получить доступ только к незащищенному пространству.


    10.1.3.8

    Параллельная задача

    Алгоритмы делятся на 3 типа: симметричные, HASH / RNG, асимметричные. У каждого типа есть очередь задач с 8 элементами для запросов. Задачи в каждой очереди обрабатываются последовательно. Среди этих 3 типов запрос задачи и время завершения не являются точными. Если один тип использует результат другого типа, программное обеспечение должно обеспечивать запуск одного типа после завершения другого типа. CE поддерживает 4 канала в каждом мире и 3 типа алгоритма, которые могут работать параллельно. Когда программное обеспечение выдает запрос, оно сначала проверяет, является ли бит загрузки низким, что означает, что программное обеспечение может запрашивать. Если бит загрузки высокий, что означает, что последний запрос не зарегистрирован CE, программное обеспечение должно дождаться, пока бит загрузки не станет низким. Если программное обеспечение делает несколько запросов одного типа, эти задачи будут выполняться в последовательности запросов. Если программное обеспечение делает несколько запросов разных типов, эти задачи будут выполняться параллельно. Поскольку параллельные задачи будут завершаться не по порядку, программное обеспечение должно делать запрос другого типа с другим идентификатором канала, что приводит к генерации другого бита состояния прерывания.


    10.1.3.9

    Микрокод PKC

    Модуль PKC поддерживает асимметричные алгоритмы RSA, ECC в виде микрокода. Он реализует базовые модульные функции сложения, минуса, умножения, добавления точек, двойных точек, логических вычислений и т.д. Полное шифрование RSA / ECC, дешифрование, знак, проверка реализованы с помощью этого микрокода. Асимметричные алгоритмы RSA / ECC реализованы в виде микрокода в модуле PKC. Операции асимметричного шифрования, дешифрования, подписи и проверки выполняются с использованием определенного фиксированного микрокода с оборудованием.


    10.1.3.10

    Конфигурация PKC

  • Перед запуском PKC необходимо настроить описание задачи. Параметры PKC назначаются исходному sg, результат помещается в целевой sg.
  • Для RSA параметры должны быть в следующем порядке: ключ, модуль, открытый текст.
  • Для точки ECC добавьте P2 = P0 + P1, параметры должны быть порядка p, P0x, P0y, P1x, P1y. Выходные данные имеют порядок P2x, P2y.
  • Для точки ECC double P2 = 2 * P0 параметры должны быть порядка p, a, P0x, P0y. Выходные данные имеют порядок P2x, P2y. Для умножения точек ECC P2 = k * P0 параметры должны быть порядка p, k, a, P0x, P0y. Выходные данные имеют порядок P2x, P2y.
  • Для проверки точки ECC параметры должны иметь порядок p, a, P0x, P0y, b. Выход 1 или 0.
  • Для шифрования ECC параметры должны иметь порядок случайных k, p, a, Gx, Gy, Qx, Qy, m. Выходные данные имеют порядок Rx, Ry, c. Д?ля расшифровки ECC параметры должны иметь порядок случайных k, p, a, Rx, Ry, c. Выход м.
  • Для подписи ECC параметры должны быть в порядке случайного k, p, a, Gx, Gy, n, d, e. Выходной сигнал порядка r, s.
  • Для проверки подписи ECC параметры должны иметь порядок n, s, e, r, p, a, Gx, Gy, Qx, Qy, n, r. Выход 1 или 0.


    10.1.3.11

    Проверка ошибок

    Модуль CE включает обнаружение ошибок для конфигурации задачи, ошибки вычисления данных и недействительной аутентификации. Когда тип алгоритма в описании задачи считывается в модуль, CE проверит, поддерживается ли этот тип, путем проверки поля типа алгоритма в общем элементе управления. Если значение типа выходит за рамки, CE выдаст сигнал прерывания и установит состояние ошибки. Каждый тип имеет определенный размер входных и выходных данных. После получения дескриптора задачи размер ввода и конфигурация размера вывода будут проверены, чтобы избежать ошибки размера. Если конфигурация размера неверна, CE выдаст сигнал прерывания и установит состояние ошибки. Чтобы защитить ключи от раскрытия, они должны быть помещены в keyram, если запрос с использованием RSSK предназначен для дешифрования AES, а адрес назначения не находится в пространстве keyram, CE не выполнит эту задачу. Он выдаст сигнал прерывания и установит состояние ошибки.


    10.1.3.12

    Синхронизация

    Синхросигнал Описание Значения

  • ahb_clk Частота шины AHB 24 МГц ~ 200 МГц
  • m_clk MBUS clk 24 МГц ~ 400 МГц
  • ce_clk CE рабочая частота 24 МГц ~ 300 МГц




  •    10.1.4. Список регистров