Физически неклонируемые функции

Материал из Циклопедии
Перейти к навигации Перейти к поиску

Физически неклонируемая функция (англ. Physical Unclonable Function, PUF) — это определённая функция, вычисляемая неким устройством, которое сложно воспроизвести, то есть два устройства, произведённые одним и тем же способом, на одинаковые запросы будут выдавать разные ответы. Сложность воспроизведения в данном случае достигается наличием неконтролируемых погрешностей при производстве. PUF, вне всякого сомнения, используются для решения задач, связанных с цифровой безопасностью.

Преимущества[править]

Так как современные мобильные устройства работают с личными данными пользователя, такими как пароли и номера карт, важно не допустить утечки этих данных. В решении данной проблемы PUF имеет ряд преимуществ по сравнению с другими методами, такими как использование электрически стираемой перепрограммируемой энергонезависимой памяти (EEPROM) и статической памяти с произвольным доступом (SRAM), цифровых подписей и шифрования. Данные методы сложны в плане реализации и имеют высокое энергопотребление. Кроме того, для защиты памяти от атак необходимо использовать дополнительные устройства, которые всё время находятся во включённом состоянии и, следовательно, потребляют энергию. Использование PUF вместо выше упомянутых методов имеет следующие преимущества:

  • Для изготовления PUF используются простые цифровые схемы, которые просты в производстве, потребляют меньше энергии и занимают меньше места, чем схемы памяти EEPROM и SRAM и дополнительные устройства для их защиты. Также использование PUF не требует дорогостоящих схем для реализации алгоритмов SHA или шифрования с использование открытого и закрытого ключей.
  • Для извлечения информации из PUF схемы, её необходимо включить. Следовательно, атаки, направленные на нелегальное получение информации из PUF, могут быть проведены только в промежуток времени, когда PUF включён.

Классификация[править]

Каждый PUF имеет какой-либо набор запросов и соответствующие этим запросам ответы, образуя пары запрос-ответ. По количеству данных пар PUF'ы делятся на 2 класса - это "слабые" PUF и "сильные" PUF.

Слабые PUF[править]

Слабые PUF имеют малое количество пар запрос-ответ, иногда даже только одну, и используются для создания генераторов криптографических ключей. Количество пар запрос-ответ может быть увеличено путём совмещения нескольких PUF'ов и использования их как одного составного PUF'a. Однако такой PUF также считается слабым, так как количество пар запрос-ответ линейно растёт с количеством компонент составного PUF'a. К слабым PUF'ам предъявляются следующие требования:

  • Малое количество пар запрос-ответ (линейно зависящие от количества компонент в случае составного PUF'а)
  • Ответы стабильны по отношению к изменениям внешних факторов и многократному чтению. Это означает, что один и тот же запрос всегда порождает одинаковый ответ.
  • Ответы зависят только от врождённых свойств, полученных вследствие неконтролируемых погрешностей во время производства, и не могут быть извлечены без выполнения запроса.
  • Не должно быть двух устройств с одинаковыми ответами.

Так как слабый PUF имеет малое количество пар запрос-ответ, то они должны держаться в секрете. Если PUF имеет только одну пару запрос-ответ, и она будет раскрыта, то не составит труда смоделировать работу данного конкретного PUF'а. Также слабые PUF'ы могут использоваться для аутентификации в паре с устройствами, поддерживающими HMAC или другой алгоритм для аутентификации.

Сильные PUF[править]

Сильные PUF имеют достаточно большое количество пар запрос-ответ и используются для создания систем аутентификации, которые могут проходить проверку непосредственно, то есть без использования дополнительных криптографических алгоритмов. Требования, предъявляемые к сильным PUF:

  • Достаточно большое количество пар запрос-ответ
  • Ответы стабильны по отношению к изменениям внешних факторов и многократному чтению. То есть один и тот же запрос всегда порождает одинаковый ответ.
  • Имея ответы на некоторые запросы невозможно вычислить ответы на другие запросы.
  • Не должно быть двух устройств с одинаковыми ответами.
  • Операция чтения даёт информацию только об ответе, полученном в результате запроса, и не раскрывает особенности внутреннего строения PUF'a.

Ответы на запросы для сильных PUF'ов не обязательно должны держаться в секрете.

Примеры сильных PUF'ов[править]

Оптический PUF[править]

Оптический PUF имеет следующие основные компоненты:

  1. Лазер, направленный вдоль оси Z, который может быть переведён в плоскость XY и поляризация которого может быть изменена.
  2. Стационарная рассеивающая среда, находящаяся на пути лазерного луча.
  3. Считывающее устройство, регистрирующее интерференционную картину, полученную после прохождения лазерного луча через рассеивающую среду.

В данном PUF входным запросом является положение лазера в плоскости XY и его поляризация, а ответом - интерференционная картина, зарегистрированная считывающим устройством. Так как всевозможных комбинаций поляризации и положения лазерного луча в плоскости XY достаточно много, данный тип PUF'a причисляется к сильным. Рассеивающая среда может состоять из прозрачного материала с большим количество маленьких пузырьков, которые будут служить линзами.

Арбитровый PUF[править]

Арбитровый PUF относиться к кремниевым PUF'ам, которые используют случайные вариации задержек распространения сигнала в электронной схеме. Арбитровый PUF состоит из множества мультиплексоров. Входной запрос X[0]-X[127] определяет, по какому пути будут следовать электрические сигналы вдоль схемы. Из-за случайной вариации задержек распространения сигналов, время, затрачиваемое на преодоление этих путей, будет различным. В зависимости от того, какой сигнал придёт первым, на выходе тригера сформируется логический "0" или "1". Комбинируя несколько таких PUF'ов и подавая на них одинаковый входной запрос, можно получить арбитровый PUF с необходимым числом бит на выходе.

Примеры слабых PUF'ов[править]

PUF на кольцевых генераторах[править]

Данный PUF состоит из N одинаково сконструированных кольцевых генераторов. Из-за неконтролируемых погрешностей при производстве, частоты генераторов будут немного различаться. Сравнивая частоты двух генераторов, можно получить 1 бит в зависимости от того, у какого генератора частота выше. Всего существует N(N-1)/2 различных пар генераторов, однако из-за взаимных корреляций (если генератор A быстрее генератора B, а B быстрее чем C, то A быстрее чем C) количество бит, которые можно получить из PUF'а, будет меньше этого числа. Всего существует N! различных перестановок генераторов, и только в одной из них генераторы идут по убыванию частот. Пронумеровав все перестановки определённым образом и выбрав номер той, где генераторы идут по убыванию частоты, получаем информацию, хранящуюся в данном PUF'е. Таким образом, количество бит, которое можно получить из PUF'а на кольцевых генераторах, точно равно log(N!).

PUF на памяти SRAM[править]

PUF'ы на памяти SRAM используют следующее свойство: при включении памяти каждая ячейка переходит в состояние "0" или "1" из-за асимметрии внутреннего устройства ячеек, получаемой при изготовлении. Состояние памяти после включения - это и есть информация, хранящаяся в данном PUF'е.

Литература[править]