75
фективность (приложение может запросить меньше битов, если их достаточно) и
гибкость (отсутствует верхняя граница числа запрашиваемых битов).
Формально мы рассматриваем поточный шифр² как пару детерминирован-
ных алгоритмов (Init, GetBits), где:
• Init использует в качестве входных данных начальное число s и необязатель-
ный
вектор инициализации IV и выводит исходное состояние st0.
• GetBits использует в качестве входных данных информацию о состоянии sti и вы-
водит бит y и обновленное состояние sti+1. (Фактически, y - это блок из нескольких
битов; здесь для простоты и обобщенности мы рассматриваем y как отдельный бит.)
Получив поточный шифр и любой желаемый коэффициент расширения A,
мы можем определить алгоритм ttA как преобразующий входные данные дли-
ной n в выходные данные длиной A(n). Алгоритм просто запускает Init, а затем
повторно запускает GetBits в общей сложности A раз.
АЛГОРИТМ 3.16
Конструирование ttÆ из (Init, GetBits)
Вход: Начальное число s и необязательный
вектор инициализации IV
Выход: y1, . . . , yÆ
st0 := Init(s, IV )
для i = 1 до A:
(yi, sti) := GetBits(sti−1)
Поточный шифр является
криптографически надежным в общем смысле,
если он не использует IV и для любого полиномиального A при A(n) > n скон-
струированная выше функция ttA является псевдослучайным генератором с
коэффициентом расширения A. Мы коротко обсудим одно возможно понятие
криптостойкости
поточного шифра, использующего IV в разделе 3.6.1.
Достарыңызбен бөлісу: