Компромисс времени и памяти
Компромисс времени и памяти (англ. space–time trade-off, «выбор оптимального соотношения „место — время“», или, иначе, англ. time–memory trade-off, «выбор оптимального соотношения „время — память“») — компромиссный подход к решению ряда задач в информатике, при котором используется обратное соотношение требуемого объёма памяти и скорости выполнения программы: время вычислений может быть увеличено за счёт уменьшения используемой памяти или, наоборот, снижено за счёт увеличения объёма используемой памяти.
Благодаря уменьшению относительных расходов на объём
Примеры применения
Таблицы поиска
Многие задачи поиска, такие как
Применению данного подхода в криптографии посвящён отдельный раздел данной статьи.
Сжатие данных
Выбор оптимального соотношения «место — время» может быть применён и к проблеме хранения данных. Хранение данных в несжатом виде потребует большего объёма памяти, но на их извлечение понадобится меньше времени, чем на извлечение данных, хранящихся в сжатом виде. В зависимости от конкретной задачи может быть предпочтителен тот или иной вариант.
Классическим примером компактного представления данных может служить, к примеру, формат представления формул
Раскрутка цикла
Криптография
В данном разделе рассмотрен классический пример использования подхода Space-Time Trade-Off в криптографии — применение таблиц поиска в решении криптографической проблемы обращения криптографической хеш-функции.
Криптоаналитический перебор требует значительных вычислительных затрат. В случае, если требуется многократно осуществлять взлом криптосистемы, логично было бы заранее выполнить исчерпывающий перебор и хранить вычисленные значения в памяти. Сделав это однократно, можно далее осуществлять перебор практически мгновенно[2]. Впрочем, в реальности этот метод неприменим из-за огромных затрат памяти.
Метод, предложенный Хеллманом
В 1980 году
Идея заключается в следующем.
Пусть в алгоритме шифрования используется односторонняя функция . По свойствам односторонней функции получение использованного ключа по известной паре — трудная задача, в то время как вычисление функции от данного открытого текста — простая задача.
Криптоаналитик применяет атаку на основе подобранного открытого текста и получает единственный шифртекст , соответствующий открытому тексту :
Задача — найти ключ , которым осуществлялось шифрование. Для этого следует найти способ вычисления возможных ключей. Введём т. н. функцию редукции , ставящую шифртексту в соответствие некий ключ (длина ключа, как правило, меньше длины шифртекста, отсюда и термин):
Вычисление функции редукции — простая операция.
Функция
ставит в соответствие ключу другой ключ . Теперь мы можем получить сколь угодно длинную цепочку ключей:
Для того, чтобы построить таблицу поиска, криптоаналитик задаётся случайными элементами пространства ключей. Из каждого ключа описанным выше методом получаем цепочку ключей длины . В память записываем только начальный и конечный ключи каждой цепочки (пары ключей сортируем по конечному ключу). Таким образом, готовая таблица занимает ячеек памяти. Генерация таблицы требует операций.
Имея построенную таблицу, криптоаналитик может проводить перебор следующим образом. Исходим из того, что использованный при шифровании ключ встретился при генерации таблицы. В таком случае, из него не более, чем за t операций применения функции , можно получить один из конечных ключей, сохранённых в памяти.
После каждого применения операции редукции криптоаналитик ищет очередной полученный ключ в таблице (найти его или убедиться в его отсутствии можно за операций, используя
Нахождение ключа, таким образом, занимает [3]; пренебрегая логарифмическим множителем, имеем . При этом затраты памяти на хранение таблицы составляют .
Анализ алгоритма, однако, должен учитывать, что вероятность удачного дешифрования на самом деле меньше единицы, а время дешифрования может получится большим объявленного, по указанным ниже причинам.
- Возможны слияния цепочек, когда для некоторой пары индексов совпадают -й ключ одной и -й ключ другой цепочки.
- Возможны т. н. «ложные тревоги» (англ. false alarms), когда криптоаналитик находит в таблице более одного конечного ключа. В таком случае ему приходится проверять все соответствующие цепочки.
Может быть получены[1] нижняя граница для вероятности успешного дешифрования:
Приведённое выражение соответствует приближению, что функция — случайная величина с равномерным распределением на множестве ключей. Впрочем, устойчивая криптосистема должна быть хорошим
Оценка данного выражения приводит к следующему результату: произведение не имеет смысл брать большим, чем : в противном случае, быстро падает нижняя граница вероятности успеха.
При мы получим
Криптоаналитик может теперь может сгенерировать не одну, а таблиц, в каждой таблице использовав свою функцию редукции (что позволит избежать слияний цепочек из разных таблиц). При этом нижняя граница вероятности успешного дешифрования составит:
Выбрав , криптоаналитик получает затраты по памяти и по времени (в каждой таблице использована своя функция редукции, поэтому при дешифровании надо получать свою цепочку для каждой таблицы) при вероятности успеха, близкой к единице[сноска, объясняющая почему будет мало и число ложных тревог и ссылка на Хеллмана]. Взяв , получим требуемые затраты по времени и памяти.
Другие примеры
Другие алгоритмы, которые также используют «выбор оптимального соотношения „место — время“»:
- Алгоритм Шенкса, применяемый для расчёта дискретных логарифмов.
- Динамическое программирование, при котором временная сложность задачи, эффективно разбивающейся на подзадачи, может быть значительно снижена путём мемоизации — сохранения уже вычисленных решений подзадач.
- Радужные таблицы в криптографии — усовершенствованный вариант таблиц поиска для обращения криптографических хеш-функций.
См. также
- Эффективность алгоритма
- Computational resource[англ.]
- Blum's speedup theorem[англ.]
- Теорема Сэвича
- Размотка цикла
Примечания
- ↑ 1 2 3 4 Martin E. Hellman. A Cryptanalytic Time-Memory Trade-Off. // Transactions on Information Theory. — July 1980. — № 4.
- ↑ Philippe Oechslin. Making a Faster Cryptanalytic Time-Memory Trade-Off. // ISBN 3-540-40674-3.
- ↑ Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. — 2-е. — М.: Вильямс, 2005. — 1296 с. — ISBN 5-8459-0857-4.