TAF v2.1
Фреймворк для детектирования атак по времени в криптографических продуктах.
Повышение защищенности ваших программно-аппаратных решений.
Одна из наиболее серьезных угроз при разработке криптографических проектов возникает из-за возможной реализации атаки по времени.

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

На выходе фреймворк предоставляет ответ, удалось ли детектировать атаку, а также статистические данные, на основе которых можно узнать, например, насколько просто детектируется атака (а значит, злоумышленнику проще её эксплуатировать).

TAF реализован на C++ с учетом максимальной простоты использования
Пользователю необходимо определить 2 класса, описывающих, как запускать тестируемую функцию и что из себя представляет вход для функции.
Этапы работы TAF
1. Сбор входных данных
Для качественной работы фреймворка необходимы «хорошие» входные данные. TAF использует фаззер для получения таких входов. Дополнительный бонус этапа — тестирование программы на различные баги.
2. Сбор измерений и их обработка
Используя один из входов, TAF получает два набора измерений. В первый входят измерения времени выполнения на выбранном входе, для второго набора используется новый случайных вход на каждом измерении. Далее эти измерения обрабатываются для использования в следующем этапе.
3. Применение статистического теста
Статистический тест помогает определить, можно ли отличить эти наборы измерений между собой. Тест выдает вероятность, что эти наборы произошли из одной выборки, то есть их нельзя отличить.
4. Заключение об атаке
На основе результатов статистического теста определяется, можно ли дать заключение о наличии или отсутствии атаки, либо же необходимо собрать больше измерений.
5. Устранение уязвимости
В случае обнаружения атаки необходимо вручную анализировать код и исправлять уязвимость. Для более точного определения местоположения уязвимости можно тестировать подфункции программы.
Ключевые преимущества TAF
Фреймворк не направлен на автоматическое выявление атак по времени, вместо этого он пытается найти уязвимые места.

Так как работа фреймворка основана на непосредственном измерении времени работы программы на целевой платформе, то он учитывает все возможные причины утечек (ветвление программы, кэш, различное время работы инструкций).
Используется 2 вида статистических тестов
Welch's t-test — наиболее популярный статистический тест, во многих случаях показывает себя лучше других.
Kolmogorov-Smirnov test — более общий тест, использующий меньше предположений, в некоторых случаях позволяет быстрее детектировать атаку.
Удобное API
Возможность тестирования на более высокие порядки атак (такие атаки позволяют обойти используемые техники, называемые маскированием).
Уверенность в том, что используемый компилятор и платформа не привнесут уязвимость в безопасный код.
Использование фаззера для генерации входных данных.
Комплект поставки API TAF
Фаззер и инструкция по работе с ним для нужд фреймворка
TAF в виде бинарной библиотеки и набора заголовочных файлов
Документация по использованию
Алгоритмы, на которых можно проверить правильность работы
(Включают уязвимую и безопасную версию функции memcmp, а также уязвимую реализацию AES)

Сопутствующие услуги
Проведение тренинга для консультантов по работе с API TAF