[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.00,0:00:04.01,Default,,0000,0000,0000,,В этой лекции я хочу показать несколько примеров потоковых шифров, которые используются на практике. Dialogue: 0,0:00:04.01,0:00:07.07,Default,,0000,0000,0000,,Я хочу начать с двух старых примеров, которые фактически не Dialogue: 0,0:00:07.07,0:00:11.02,Default,,0000,0000,0000,,должны использоваться в новых системах.\NНо тем не менее, они все еще довольно Dialogue: 0,0:00:11.02,0:00:14.16,Default,,0000,0000,0000,,широко распространены и поэтому я просто хочу упомянуть их названия, чтобы вы познакомились с Dialogue: 0,0:00:14.16,0:00:19.09,Default,,0000,0000,0000,,этими концепциями. Первый потоковый шифр, о котором я хочу поговорить называется RC4, придуманный Dialogue: 0,0:00:19.09,0:00:23.43,Default,,0000,0000,0000,,в 1987 году. Я просто дам вам его общее описание, затем Dialogue: 0,0:00:23.43,0:00:27.82,Default,,0000,0000,0000,,мы поговорим о некоторых недостатках RC4 и на этом закончим. Итак RC4 занимает Dialogue: 0,0:00:27.82,0:00:32.70,Default,,0000,0000,0000,,переменный размер источника, для примера я взял 128 Dialogue: 0,0:00:32.70,0:00:36.98,Default,,0000,0000,0000,,бит как размер источника, который будет затем использоваться в качестве ключа для шифрования потока. Dialogue: 0,0:00:36.98,0:00:41.74,Default,,0000,0000,0000,,Первое, что она делает это расширяет 128-битный секретный ключ в 2048 бит, который Dialogue: 0,0:00:41.74,0:00:46.38,Default,,0000,0000,0000,,будет использоваться как внутреннее состояние для генератора. И затем, после завершения Dialogue: 0,0:00:46.38,0:00:51.20,Default,,0000,0000,0000,,этого расширения, он в основном выполняет очень простой цикл, где на каждой итерации Dialogue: 0,0:00:51.20,0:00:55.90,Default,,0000,0000,0000,,этот цикл выводит один байт вывода. Так по сути, можно запускать генератор Dialogue: 0,0:00:55.90,0:01:00.65,Default,,0000,0000,0000,,очень долго и генерировать один байт все время. Сейчас RC4 , как я уже сказал, довольно Dialogue: 0,0:01:00.65,0:01:05.20,Default,,0000,0000,0000,,популярен. Он часто используется в протоколе HTTPS . Dialogue: 0,0:01:05.20,0:01:11.89,Default,,0000,0000,0000,,Сейчас, например, RC4 использует Google в своем HTTPS. А также он используется в WEP который мы Dialogue: 0,0:01:11.89,0:01:15.69,Default,,0000,0000,0000,,обсуждали на прошлой лекции, конечно, в WEP, он используется неправильно и Dialogue: 0,0:01:15.69,0:01:18.86,Default,,0000,0000,0000,,Это совершенно небезопасный путь использования его внутри WEP. Так с годами Dialogue: 0,0:01:18.86,0:01:23.89,Default,,0000,0000,0000,,некоторые недостатки были обнаружены в RC4, и в результате, реккомендуется, чтобы новые проекты Dialogue: 0,0:01:23.89,0:01:28.79,Default,,0000,0000,0000,,не использовали RC4, а использовали более современные псевдослучайные генараторы, о которых мы будем Dialogue: 0,0:01:28.79,0:01:34.06,Default,,0000,0000,0000,,говорить ближе к концу лекции. Итак, позвольте мне упомянуть два недостатка. Dialogue: 0,0:01:34.06,0:01:39.56,Default,,0000,0000,0000,,Первый из них, покажется довольно странным, если вы посмотрите на второй байт Dialogue: 0,0:01:39.56,0:01:44.63,Default,,0000,0000,0000,,вывода RC4. Оказывается, второй байт немного ассиметричный(??). Если RC4 был Dialogue: 0,0:01:44.63,0:01:49.78,Default,,0000,0000,0000,,случайным то вероятность того, что второй байт будет нулем Dialogue: 0,0:01:49.78,0:01:54.74,Default,,0000,0000,0000,,одна к 256. Есть 256 возможных байтов, вероятность Dialogue: 0,0:01:54.74,0:01:59.65,Default,,0000,0000,0000,,нуля одна к 256. Случилось так, что для RC4 вероятность Dialogue: 0,0:01:59.65,0:02:04.49,Default,,0000,0000,0000,,два к 256, это означает, что если вы используете RC4 вывод для шифрования Dialogue: 0,0:02:04.49,0:02:09.57,Default,,0000,0000,0000,,сообщения второй байт, скорее всего, не будут зашифрован. Другими словами Dialogue: 0,0:02:09.57,0:02:14.58,Default,,0000,0000,0000,,этот ноль будет проXORен дважды Dialogue: 0,0:02:14.58,0:02:19.44,Default,,0000,0000,0000,,Поэтому два к 256, а не 1 к 256.\NИ кстати, я должен сказать, что нет Dialogue: 0,0:02:19.44,0:02:22.85,Default,,0000,0000,0000,,ничего особенного во втором байте. Оказывается, первый и третий байт Dialogue: 0,0:02:22.85,0:02:27.82,Default,,0000,0000,0000,,также ассиметричны. В настоящее время рекомендуется, если вы собираетесь использовать RC4, Dialogue: 0,0:02:27.82,0:02:32.80,Default,,0000,0000,0000,,игнорировать в основном первые 256 байт вывода и просто Dialogue: 0,0:02:32.80,0:02:37.25,Default,,0000,0000,0000,,начинать использовать выходные данные генератора, начиная с байта 257. Первая пара Dialogue: 0,0:02:37.25,0:02:41.24,Default,,0000,0000,0000,,байт оказалась ассиметричной, так что вы просто игнорируете ее. При второй аттаке Dialogue: 0,0:02:41.24,0:02:48.48,Default,,0000,0000,0000,,было обнаружено, что на самом деле, если вы посмотрите на очень длинный вывод из RC4, получается Dialogue: 0,0:02:48.48,0:02:53.86,Default,,0000,0000,0000,,что у вас больше шансов получить последовательность 00. Другими словами вы Dialogue: 0,0:02:53.86,0:02:58.97,Default,,0000,0000,0000,,скорее всего, получите шестнадцать битов по два байта ноль, ноль. Опять же если RC4 Dialogue: 0,0:02:58.97,0:03:03.95,Default,,0000,0000,0000,,была совершенно случайная, вероятность получения ноль, ноль будет ровно 1/256 Dialogue: 0,0:03:03.95,0:03:08.56,Default,,0000,0000,0000,,в квадрате. Оказывается, RC4 является немного ассиметричной и ассиметрия эта 1/256 в кубе. Этот Dialogue: 0,0:03:08.56,0:03:13.72,Default,,0000,0000,0000,,уклон фактически начинается после нескольких гигабайт данных и производятся Dialogue: 0,0:03:13.72,0:03:18.63,Default,,0000,0000,0000,,RC4. Но тем не менее, это как раз то, что может использоваться для прогнозирования генератора Dialogue: 0,0:03:18.63,0:03:23.12,Default,,0000,0000,0000,,и определенно может использоваться для различения вывода генератора Dialogue: 0,0:03:23.12,0:03:28.10,Default,,0000,0000,0000,,из действительно случайных последовательностей. В принципе тот факт, что ноль, ноль появляется чаще Dialogue: 0,0:03:28.10,0:03:32.41,Default,,0000,0000,0000,,чем он должен это и есть отличительный признак. И затем в последней лекции мы говорили о Dialogue: 0,0:03:32.41,0:03:36.31,Default,,0000,0000,0000,,связанных с ключом атаках, которые были использованы для атаки WEP, и которые в основном говорят, что Dialogue: 0,0:03:36.31,0:03:41.08,Default,,0000,0000,0000,,Если один использует ключи, которые тесно связаны друг с другом, то это на самом деле дает возможность Dialogue: 0,0:03:41.08,0:03:45.73,Default,,0000,0000,0000,,восстановления ключа корня. Вот такие недостатки присутствуют в RC4 и, как Dialogue: 0,0:03:45.73,0:03:50.22,Default,,0000,0000,0000,,результат, рекомендуется, не использовать RC4 в новых системах, а вместо нее использовать Dialogue: 0,0:03:50.22,0:03:54.42,Default,,0000,0000,0000,,современный псевдослучайный генератор. Ладно, второй пример, который я хочу вам показать это Dialogue: 0,0:03:54.42,0:03:59.13,Default,,0000,0000,0000,,взломанный потоковый шифр. Он используется для шифрования DVD фильмов. Когда вы покупаете DVD Dialogue: 0,0:03:59.13,0:04:03.50,Default,,0000,0000,0000,,в магазине, фактически фильм шифруется с использованием шифров под названием Dialogue: 0,0:04:03.50,0:04:07.93,Default,,0000,0000,0000,,content scrambling system, CSS. CSS оказывается взломанным потоковым шифром, Dialogue: 0,0:04:07.93,0:04:12.52,Default,,0000,0000,0000,,и мы очень легко можем взломать его, и я хочу показать вам, как работает алгоритм атаки. Dialogue: 0,0:04:12.52,0:04:16.89,Default,,0000,0000,0000,,Вы можете увидеть пример алгоритма нападения на слайде, но по Dialogue: 0,0:04:16.89,0:04:21.44,Default,,0000,0000,0000,,факту, существует множество других систем, которые в основном используют это нападение для расшифровки Dialogue: 0,0:04:21.44,0:04:25.75,Default,,0000,0000,0000,,зашифрованных DVD. Таким образом, CSS потоковый шифр основанный на том, что любят разработчики Dialogue: 0,0:04:25.75,0:04:30.29,Default,,0000,0000,0000,,аппаратной части. Он соответствует аппаратному потоковому шифру, который должен Dialogue: 0,0:04:30.29,0:04:34.49,Default,,0000,0000,0000,,быть легко осуществлен в аппаратной части и основывается на механизме с названием линейные Dialogue: 0,0:04:34.49,0:04:38.75,Default,,0000,0000,0000,,регистры сдвига с обратной связью . Таким образом линейные регистры сдвига с обратной связью - это в основном регистры Dialogue: 0,0:04:38.75,0:04:43.80,Default,,0000,0000,0000,,которые состоят из ячеек, где каждая ячейка содержит один бит. Что затем Dialogue: 0,0:04:43.80,0:04:49.05,Default,,0000,0000,0000,,происходит? В определенных ячейках есть отводы, не во всех, а на определенных Dialogue: 0,0:04:49.05,0:04:54.13,Default,,0000,0000,0000,,позициях. Затем эти отводы XORят и на Dialogue: 0,0:04:54.13,0:04:59.05,Default,,0000,0000,0000,,каждом тактовом цикле, сдвиг происходит влево. Последний бит уходит Dialogue: 0,0:04:59.05,0:05:04.34,Default,,0000,0000,0000,,и затем первый бит становится результатом этого XOR. Так что вы можете видеть, что Dialogue: 0,0:05:04.34,0:05:08.70,Default,,0000,0000,0000,,этот механизм очень простой для реализации и в оборудовании занимает немного Dialogue: 0,0:05:08.70,0:05:13.62,Default,,0000,0000,0000,,транзисторов. Простой сдвиг вправо, последний бит уходит и первый бит просто Dialogue: 0,0:05:13.62,0:05:18.54,Default,,0000,0000,0000,,становится XORом предыдущих битов. Так что источник для этого LFSR Dialogue: 0,0:05:18.54,0:05:23.46,Default,,0000,0000,0000,,в основном является начальным состоянием LFSR. Dialogue: 0,0:05:23.65,0:05:28.54,Default,,0000,0000,0000,,И это является основой целого ряда потоковых шифров. Так вот несколько примеров. Как Dialogue: 0,0:05:28.54,0:05:33.36,Default,,0000,0000,0000,,я сказал, DVD шифрования использует два LFSRs.\NЯ покажу вам как это работает через Dialogue: 0,0:05:33.36,0:05:38.06,Default,,0000,0000,0000,,минуту. Шифрование GSM, а именно алгоритмы с названием A51 и A52. Они Dialogue: 0,0:05:38.06,0:05:43.46,Default,,0000,0000,0000,,используют три LFSRs. Bluetooth Шифрование — алгоритм шифрования с названием E ноль. Это все Dialogue: 0,0:05:43.46,0:05:48.53,Default,,0000,0000,0000,,потоковые шифры, которые используют четыре LFSRs. получается, все это - взломанные шифры, Dialogue: 0,0:05:48.53,0:05:53.24,Default,,0000,0000,0000,,и действительно, не следует доверять для шифрованию трафика, так как они все Dialogue: 0,0:05:53.24,0:05:56.70,Default,,0000,0000,0000,,реализованы аппаратно, поэтому довольно сложно сейчас изменить то, что заложено в оборудование. Dialogue: 0,0:05:56.70,0:06:01.05,Default,,0000,0000,0000,,Но самый простой из них, CSS, очень мило взламывается, поэтому позвольте Dialogue: 0,0:06:01.05,0:06:05.46,Default,,0000,0000,0000,,мне показать вам, как работает эта атака. Итак рассмотрим как фактически CSS работает. Dialogue: 0,0:06:05.46,0:06:11.07,Default,,0000,0000,0000,,Ключ для CSS состоит их пяти байтов, а именно 40 бит, пять раз по восемь это 40 бит. Dialogue: 0,0:06:11.07,0:06:15.59,Default,,0000,0000,0000,,Причина, по которой стоит ограничение 40 бит состоит в том, что DVD шифрование было Dialogue: 0,0:06:15.59,0:06:19.94,Default,,0000,0000,0000,,разработано тогда, когда экспорт США был разрешен только для Dialogue: 0,0:06:19.94,0:06:25.09,Default,,0000,0000,0000,,крипто алгоритмы с ключем в 40 бит. Поэтому разработчики CSS Dialogue: 0,0:06:25.09,0:06:30.21,Default,,0000,0000,0000,,были ограничены очень очень короткими ключами.\NКлюч всего из 40 бит. Таким образом их проект был Dialogue: 0,0:06:30.21,0:06:35.40,Default,,0000,0000,0000,,следующим. В основном CSS использует два LFSR. Один является 17-битным LFSR. Другими словами, Dialogue: 0,0:06:35.40,0:06:40.81,Default,,0000,0000,0000,,Регистр содержит 17 бит. И второй — 25-битный LFSR, Dialogue: 0,0:06:40.81,0:06:46.65,Default,,0000,0000,0000,,Он немного больше - 25-бит. Исследованием LFSRs Dialogue: 0,0:06:46.65,0:06:51.87,Default,,0000,0000,0000,,является следующим. Ключ для шифрования, в основном выглядит таким следующим образом. Dialogue: 0,0:06:51.87,0:06:57.67,Default,,0000,0000,0000,,Вы начинаете с одного и объединяете первые два байта Dialogue: 0,0:06:57.67,0:07:02.95,Default,,0000,0000,0000,,ключа. Это и есть начальное состояние LFSR. Dialogue: 0,0:07:02.95,0:07:08.26,Default,,0000,0000,0000,,И тогда второй LFSR инициализируется таким же образом. Dialogue: 0,0:07:08.26,0:07:14.01,Default,,0000,0000,0000,,Один соединен с последним тремя байтами ключа. Это Dialogue: 0,0:07:14.01,0:07:19.89,Default,,0000,0000,0000,,загружается в начальное состояние LFSR.\NВы можете увидеть что первые два байта Dialogue: 0,0:07:19.89,0:07:25.41,Default,,0000,0000,0000,,состоят из шестнадцати битов, плюс один главный, что составляет семнадцать бит в целом, тогда как второй Dialogue: 0,0:07:25.41,0:07:31.22,Default,,0000,0000,0000,,LFSR — 24 бита, плюс один, в итоге 25 бит.\NЗаметьте, что мы использовали все пять бит Dialogue: 0,0:07:31.22,0:07:36.88,Default,,0000,0000,0000,,ключа. Дажее эти LFSRs в основном запускаются для восьми циклов, так что они генерируют Dialogue: 0,0:07:36.88,0:07:42.33,Default,,0000,0000,0000,,восемь бит вывода. И затем они идут через сумматор, который в основном производит Dialogue: 0,0:07:42.33,0:07:48.20,Default,,0000,0000,0000,,сложение по модулю 256.Да, это блок сложения по модулю 256. Существует еще одна Dialogue: 0,0:07:48.20,0:07:54.32,Default,,0000,0000,0000,,техническая вещь. В самом деле давайте добавим это к информации из Dialogue: 0,0:07:54.32,0:07:59.72,Default,,0000,0000,0000,,предыдущего блока. Но это не так важно. Это деталь не столь Dialogue: 0,0:07:59.72,0:08:04.76,Default,,0000,0000,0000,,так уместна. Хорошо, итак в каждом блоке, заметьте что мы делаем сложение по модулю 256 и Dialogue: 0,0:08:04.76,0:08:09.98,Default,,0000,0000,0000,,игнорируем транспортировку, но она в основном добавляет ноль или единицу Dialogue: 0,0:08:09.98,0:08:15.15,Default,,0000,0000,0000,,в следующий блок. Понятно? И затем выводим один байт за раунд. Dialogue: 0,0:08:15.15,0:08:20.41,Default,,0000,0000,0000,,Затем этот байт тогда конечно используется, проXORенный с соответствующим Dialogue: 0,0:08:20.41,0:08:25.17,Default,,0000,0000,0000,,байтом из фильма, который был зашифрован.\NИтак, это очень простой потоковый Dialogue: 0,0:08:25.17,0:08:29.99,Default,,0000,0000,0000,,шифр, который занимает очень мало аппаратных средств для реализации. Он будет работать быстро, даже на очень Dialogue: 0,0:08:29.99,0:08:35.83,Default,,0000,0000,0000,,дешевом оборудовании, шифруя фильмы.\NПоэтому его легко взломать Dialogue: 0,0:08:35.83,0:08:41.22,Default,,0000,0000,0000,,в промежутке времени от 2 до 17 переборов. Теперь позвольте мне показать вам это. Dialogue: 0,0:08:41.22,0:08:45.73,Default,,0000,0000,0000,,Предположим, что вы перехватили фильм, поэтому десь мы имеем Dialogue: 0,0:08:45.73,0:08:50.65,Default,,0000,0000,0000,,зашифрованный фильм, который вы хотите расшифровать.\NДавайте скажем, что вы не имеете понятия о том Dialogue: 0,0:08:50.65,0:08:55.28,Default,,0000,0000,0000,,что находится здесь внутри. Такое случается потому что Dialogue: 0,0:08:55.28,0:08:59.97,Default,,0000,0000,0000,,DVD шифрование использует MPEG файлы, так случилось, что вы знаете префикс Dialogue: 0,0:08:59.97,0:09:04.25,Default,,0000,0000,0000,,открытого текста, давайте просто скажем что он равен 20 байт. Мы знаем, что если вы Dialogue: 0,0:09:04.25,0:09:08.59,Default,,0000,0000,0000,,проXORите эти две вещи вместе, другими словами, вы делаете здесь XOR Dialogue: 0,0:09:08.59,0:09:13.52,Default,,0000,0000,0000,,в итоге получаете первоначальный сегмент PRG. Таким образом, вы получите Dialogue: 0,0:09:13.52,0:09:18.47,Default,,0000,0000,0000,,первые 20 байт вывода CSS, используя вывод PRG. Ладно, теперь Dialogue: 0,0:09:18.47,0:09:23.99,Default,,0000,0000,0000,,вот что мы собираемся делать. У нас первые 20 байт выходных данных. Теперь Dialogue: 0,0:09:23.99,0:09:31.40,Default,,0000,0000,0000,,мы делаем следующее. Мы пробуем все от двух до семнадцати возможных значений первого Dialogue: 0,0:09:31.40,0:09:37.09,Default,,0000,0000,0000,,LFSR. Хорошо? От двух до семнадцати возможных значений. Таким образом, для каждого значения, и для каждого из Dialogue: 0,0:09:37.09,0:09:42.62,Default,,0000,0000,0000,,этих двух до семнадцати начальных значений LFSR, мы запускаем Dialogue: 0,0:09:42.62,0:09:47.95,Default,,0000,0000,0000,,LFSR для 20 байт, понятно? Поэтому мы будем генерировать 20 байт выходов из Dialogue: 0,0:09:47.95,0:09:53.28,Default,,0000,0000,0000,,Первого LFSR, предполагая — для каждого от двух семнадцати возможных параметров. Dialogue: 0,0:09:53.28,0:09:58.62,Default,,0000,0000,0000,,Теперь вспомните, что у нас есть полный вывод CSS системы. Все что мы можем сделать это Dialogue: 0,0:09:58.62,0:10:03.81,Default,,0000,0000,0000,,взять этот вывод и вычесть его из двадцати байтов, которые у нас есть Dialogue: 0,0:10:03.81,0:10:08.93,Default,,0000,0000,0000,,из первого LFSR и, если на самом деле наша догадка для начального состояния первого Dialogue: 0,0:10:08.93,0:10:14.04,Default,,0000,0000,0000,,LFSR является верной, все что мы должны получить - это первый двадцатибайтовый вывод Dialogue: 0,0:10:14.04,0:10:19.22,Default,,0000,0000,0000,,второго LFSR. Правильно? Потому что это по определению вывод CSS Dialogue: 0,0:10:19.22,0:10:24.50,Default,,0000,0000,0000,,системы. Теперь получается, что глядя на 20-байтную последовательность, очень легко Dialogue: 0,0:10:24.50,0:10:29.76,Default,,0000,0000,0000,,сказать является ли эта 20-байтная последовательность 25-разрядным LFSR или нет. Если нет Dialogue: 0,0:10:29.76,0:10:33.56,Default,,0000,0000,0000,,тогда мы знаем, что наша догадка для 17-разрядного LFSR Dialogue: 0,0:10:33.56,0:10:37.42,Default,,0000,0000,0000,,неправильна и затем мы перейдем к следующему предположению для 17-разрядного LFSR и Dialogue: 0,0:10:37.42,0:10:41.90,Default,,0000,0000,0000,,затем следующей догадке и так далее и так далее.\NДо тех пор, пока в конце концов мы не попадем в верное первоначальное Dialogue: 0,0:10:41.90,0:10:46.94,Default,,0000,0000,0000,,состояние для 17-битных LFSR и тогда мы увидим, что Dialogue: 0,0:10:46.94,0:10:51.97,Default,,0000,0000,0000,,20 байт, которые мы получаем на выходе для 25-разрядного LFSR Dialogue: 0,0:10:51.97,0:10:56.94,Default,,0000,0000,0000,,в самом деле возможны на выходе для 25-разрядного LFSR. И тогда, мы не только Dialogue: 0,0:10:56.94,0:11:02.16,Default,,0000,0000,0000,,научимся правильно определять начальное состояние для 17-битных LFSR, мы также Dialogue: 0,0:11:02.16,0:11:07.52,Default,,0000,0000,0000,,узнаем верное начальное состояние 25-разрядного LFSR. И затем мы сможем предсказать Dialogue: 0,0:11:07.52,0:11:12.80,Default,,0000,0000,0000,,оставшиеся выводы CSS и, используя это, мы сможем расшифровать остальную часть Dialogue: 0,0:11:12.80,0:11:17.56,Default,,0000,0000,0000,,фильма. На самом деле мы можем восстановить оставшуюся часть открытым текстом. Отлично. Это Dialogue: 0,0:11:17.56,0:11:22.34,Default,,0000,0000,0000,,вещи, о который мы уже говорили. Я рассказал это довольно быстро, но надеюсь, Dialogue: 0,0:11:22.34,0:11:27.33,Default,,0000,0000,0000,,было ясно. Также на этот тип потового шифра есть домашнее задание Dialogue: 0,0:11:27.33,0:11:31.44,Default,,0000,0000,0000,,и вы получите своего рода понятие о том, как эти атакующие алгоритмы Dialogue: 0,0:11:31.44,0:11:36.02,Default,,0000,0000,0000,,работают. И я должен отметить, что сейчас существует множество открытых систем, которые Dialogue: 0,0:11:36.02,0:11:41.45,Default,,0000,0000,0000,,Используют этот метод для расшифровки данных, зашифрованных с помощью CSS. Хорошо. Итак мы уже рассмотрели два Dialogue: 0,0:11:41.45,0:11:45.89,Default,,0000,0000,0000,,простенький примера, давайте перейдем на более серьезные примеры, в частности лучшие Dialogue: 0,0:11:45.89,0:11:49.37,Default,,0000,0000,0000,,псевдослучайные генераторы приходят из так называемого eStream проекта. Этот Dialogue: 0,0:11:49.37,0:11:55.56,Default,,0000,0000,0000,,проект был основан в 2008 году, и они квалифицируются в основном на пяти различных потоковых Dialogue: 0,0:11:55.56,0:12:00.21,Default,,0000,0000,0000,,шифрах, но здесь я хочу представить только один. Так первый из всех параметров для Dialogue: 0,0:12:00.21,0:12:04.03,Default,,0000,0000,0000,,этих потоковых шифров, немного отличается, от тех которые мы использовали. Эти Dialogue: 0,0:12:04.03,0:12:08.34,Default,,0000,0000,0000,,потоковые шифры как и все имеют источник.\NКроме того они имеют, так называемый Dialogue: 0,0:12:08.34,0:12:12.82,Default,,0000,0000,0000,,случайный код и мы увидим, для чего используется данный случай через минуту. Dialogue: 0,0:12:12.82,0:12:17.49,Default,,0000,0000,0000,,Итак они принимают на входе два параметра: источник и случайный код. Мы увидим, для чего используется случайный код Dialogue: 0,0:12:17.49,0:12:21.27,Default,,0000,0000,0000,,через секунду. И конечно они производят очень большой выход, так что n здесь Dialogue: 0,0:12:21.27,0:12:26.60,Default,,0000,0000,0000,,гораздо, гораздо, гораздо больше, чем s. Теперь, когда я говорю случайный код, я имею в виду это значение, которые Dialogue: 0,0:12:26.60,0:12:31.22,Default,,0000,0000,0000,,никогда не будут повторяться до тех пор, пока ключ будет фиксированным. Я объясню более Dialogue: 0,0:12:31.22,0:12:35.40,Default,,0000,0000,0000,,подробно через секунду. Но теперь, просто думайте о нем, как об уникальном значении, которое не будет Dialogue: 0,0:12:35.40,0:12:40.53,Default,,0000,0000,0000,,повторятся до тех пор пока длится ключ.\NИ поэтому, конечно, как только вы получите PRG, Dialogue: 0,0:12:40.53,0:12:45.36,Default,,0000,0000,0000,,и зашифруете, то получите потоковый шифр как и прежде, за исключением теперь того, что Dialogue: 0,0:12:45.36,0:12:49.96,Default,,0000,0000,0000,,PRG принимает как входные данные ключ и одноразовый код. И свойство случайного кода это Dialogue: 0,0:12:49.96,0:12:56.35,Default,,0000,0000,0000,,пара: k запятая r, поэтому ключ запятая случайный код, никогда не — никогда не повторяются. Он Dialogue: 0,0:12:56.35,0:13:03.10,Default,,0000,0000,0000,,никогда не используется более одного раза. Таким образом в нижней строке описана возможность повторно использовать ключ, повторно использовать Dialogue: 0,0:13:03.10,0:13:09.71,Default,,0000,0000,0000,,ключ, потому что случайный код делает пару уникальной, потому что k и r Dialogue: 0,0:13:09.71,0:13:16.14,Default,,0000,0000,0000,,используются только один раз. Я скажу, что они уникальны. Ладно, этот случайный код это своего рода трюк, который, Dialogue: 0,0:13:16.14,0:13:21.54,Default,,0000,0000,0000,,спасает нас от проблемы перехода на новый ключ каждый раз. Ладно, итак Dialogue: 0,0:13:21.54,0:13:26.00,Default,,0000,0000,0000,,пример из eStream, который я хочу показать вам называют Сальса двадцать. Это Dialogue: 0,0:13:26.00,0:13:30.29,Default,,0000,0000,0000,,потоковый шифр, который предназначен для реализации программного и аппаратного обеспечения Dialogue: 0,0:13:30.29,0:13:33.38,Default,,0000,0000,0000,,Это достаточно интересно.\NВы должны понимать, что некоторые потоковые шифры Dialogue: 0,0:13:33.38,0:13:38.76,Default,,0000,0000,0000,,предназначены для программного обеспечения, как RC4.\NВсе что разработано для Dialogue: 0,0:13:38.76,0:13:42.69,Default,,0000,0000,0000,,программной реализации работает быстро, тогда как другие потоковые шифры разработанные для Dialogue: 0,0:13:42.69,0:13:48.14,Default,,0000,0000,0000,,аппартаного обеспечения, как CSS, с помощью LFSR, частично разработано для того, чтобы сделать Dialogue: 0,0:13:48.14,0:13:50.96,Default,,0000,0000,0000,,реализацию дешевле. Еще одна хорошая вещь в том Dialogue: 0,0:13:50.96,0:13:55.01,Default,,0000,0000,0000,,что это легко осуществить его в аппаратном обеспечении и его программная Dialogue: 0,0:13:55.01,0:13:59.75,Default,,0000,0000,0000,,разработка является также очень быстрой. Поэтому позвольте мне объяснить, как работает Сальса. Ну, сальса Dialogue: 0,0:13:59.75,0:14:05.13,Default,,0000,0000,0000,,содержит 128 или 256-разрядный ключи. Только я объясню 128-разрядную версию сальсы. Dialogue: 0,0:14:05.13,0:14:11.24,Default,,0000,0000,0000,,Это источник. И затем он также принимает случайный код, просто как и прежде Dialogue: 0,0:14:11.24,0:14:15.42,Default,,0000,0000,0000,,случалось с 64 битами. И тогда он будет генерировать большой вывод. Теперь как это Dialogue: 0,0:14:15.42,0:14:21.06,Default,,0000,0000,0000,,на самом деле работает? Ну сама функция определяется следующим образом. В основном учитывая Dialogue: 0,0:14:21.06,0:14:26.38,Default,,0000,0000,0000,,ключ и случайный код, он будет генерировать очень длинную, ну, длинную псевдослучайную Dialogue: 0,0:14:26.38,0:14:31.22,Default,,0000,0000,0000,,последовательность, так долго, как необходимо. И он делает это с помощью этой функции, которую я обозначу Dialogue: 0,0:14:31.22,0:14:35.65,Default,,0000,0000,0000,,H. Эта функция H принимает три входа.\NВ основном ключ. Источник k, Dialogue: 0,0:14:35.65,0:14:40.50,Default,,0000,0000,0000,,случайный код r, а затем счетчик, который увеличивается от шага к шагу. Так он идет Dialogue: 0,0:14:40.50,0:14:45.26,Default,,0000,0000,0000,,от нуля до одного, двух, трех, четырех до тех пор пока нужно. Ладно? Поэтому в основном, Dialogue: 0,0:14:45.26,0:14:49.96,Default,,0000,0000,0000,,по оценке этой H на этом k r, но используя этот счетчик приращения, мы можем получить Dialogue: 0,0:14:49.96,0:14:54.88,Default,,0000,0000,0000,,последовательность такую, как нам нужно. Поэтому все что нужно сделать, это описать как эта функция Dialogue: 0,0:14:54.88,0:14:59.46,Default,,0000,0000,0000,,H работает. Теперь позвольте мне сделать это здесь для вас.\NОна работает следующим образом. Ну мы Dialogue: 0,0:14:59.46,0:15:04.69,Default,,0000,0000,0000,,начинаем путем расширения состояния в нечто довольно большое, длиной 64 байт Dialogue: 0,0:15:04.69,0:15:10.16,Default,,0000,0000,0000,,и мы делаем это следующим образом. В основном мы придерживаемся констант в начале, так Dialogue: 0,0:15:10.16,0:15:15.55,Default,,0000,0000,0000,,есть tao ноль, эти четыре байта, это константа 4 байта, поэтому спецификации Dialogue: 0,0:15:15.55,0:15:20.61,Default,,0000,0000,0000,,Сальсы в основном дает вам значение для tao ноль. Затем мы ставим k в котором Dialogue: 0,0:15:20.61,0:15:25.47,Default,,0000,0000,0000,,шестнадцать байт. Затем мы ставим другую константу. Опять же это четыре байта. И Dialogue: 0,0:15:25.47,0:15:30.80,Default,,0000,0000,0000,,как я сказал, спецификация в основном определяет фиксированную константу. Затем мы ставим Dialogue: 0,0:15:30.80,0:15:37.44,Default,,0000,0000,0000,,случайный код, из восемь байтов. Затем индекс. Этот Счетчик ноль, Dialogue: 0,0:15:37.44,0:15:43.06,Default,,0000,0000,0000,,один, два, три, четыре, который содержит еще восемь байт. Затем мы ставим другую константу Dialogue: 0,0:15:43.06,0:15:49.06,Default,,0000,0000,0000,,Тау два, которая является еще четырьмя байтами.\NЗатем мы ставим ключ снова, это еще Dialogue: 0,0:15:49.06,0:15:54.71,Default,,0000,0000,0000,,шестнадцать байт. И затем, наконец, мы ставим третью константу, Тау три, которая содержит Dialogue: 0,0:15:54.71,0:15:59.95,Default,,0000,0000,0000,,еще четыре байта. Ладно, так, как я сказал, если вы, просуммируете все это, то получите 64 Dialogue: 0,0:15:59.95,0:16:05.25,Default,,0000,0000,0000,,байта. Поэтому мы расширили ключ, случайны код и счетчик в 64 Dialogue: 0,0:16:05.25,0:16:10.89,Default,,0000,0000,0000,,байт. В основном ключ повторяется дважды. И то, что мы делаем это применяем Dialogue: 0,0:16:10.89,0:16:16.32,Default,,0000,0000,0000,,функцию, я буду называть эту функцию маленькой h. хорошо, поэтому мы применяем эту функцию, маленькую h. Dialogue: 0,0:16:16.32,0:16:21.66,Default,,0000,0000,0000,,И это функция, которая является один к одному, поэтому он сопоставляется 64 байта 64 байт. Это Dialogue: 0,0:16:21.66,0:16:26.00,Default,,0000,0000,0000,,полностью обратимой функция, ладно? Так что эта функция h, как я говорю, это Dialogue: 0,0:16:26.00,0:16:30.26,Default,,0000,0000,0000,,invertable функция. Учитывая входные данные вы можете получить результат и учитывая Dialogue: 0,0:16:30.26,0:16:34.91,Default,,0000,0000,0000,,выход, вы можете вернуться к входу. И он предназначен специально, поэтому он имеет - легко Dialogue: 0,0:16:34.91,0:16:39.55,Default,,0000,0000,0000,,для реализации в аппаратных средств и b-на x 86, это очень легко осуществить, поскольку Dialogue: 0,0:16:39.55,0:16:44.20,Default,,0000,0000,0000,,x 86 имеет этой SSE2 инструкции набор, который поддерживает все операции, вам нужно сделать Dialogue: 0,0:16:44.20,0:16:48.62,Default,,0000,0000,0000,,для этой функции. Это очень, очень быстро.\NВ результате сальса имеет очень быстрый поток Dialogue: 0,0:16:48.62,0:16:52.76,Default,,0000,0000,0000,,шифр. А затем она делает это в основном снова и снова. Поэтому он применяется это Dialogue: 0,0:16:52.76,0:16:57.74,Default,,0000,0000,0000,,Функция h снова и он получает еще 64 байта. И так далее и так далее, в основном Dialogue: 0,0:16:57.74,0:17:05.32,Default,,0000,0000,0000,,Он делает это в десять раз. Итак все это здесь, говорят повторяется в десять раз, так что Dialogue: 0,0:17:05.32,0:17:17.96,Default,,0000,0000,0000,,в основном применяют h в десять раз. И затем сам по себе, это на самом деле не совсем случайно. Dialogue: 0,0:17:17.96,0:17:22.14,Default,,0000,0000,0000,,Он является не собираешься смотреть случайные потому, что как мы сказали, H является полностью invertable. Так что Dialogue: 0,0:17:22.14,0:17:25.52,Default,,0000,0000,0000,,Этот конечный результат, это очень легко просто инвертировать h и затем вернуться к оригиналу Dialogue: 0,0:17:25.52,0:17:31.83,Default,,0000,0000,0000,,входы и затем тест, что ввод имеет право структуру. Так вы сделать еще один Dialogue: 0,0:17:31.83,0:17:36.98,Default,,0000,0000,0000,,вещь, которая является в основном XOR входов и конечных мероприятий. На самом деле, Dialogue: 0,0:17:36.98,0:17:42.40,Default,,0000,0000,0000,,Извините. Это не XOR. Это на самом деле дополнением. Таким образом вы сделать дополнение слово Dialogue: 0,0:17:42.40,0:17:47.76,Default,,0000,0000,0000,,слово. Так что если есть 64 байта, вы сделать добавить слово в слово четырех байтов Dialogue: 0,0:17:47.76,0:17:52.98,Default,,0000,0000,0000,,время и, наконец, вы получите 64-байтовый вывода, и вот оно. Это весь Dialogue: 0,0:17:52.98,0:17:57.18,Default,,0000,0000,0000,,генератор псевдослучайных. Так что, что вся функция, мало h. И, как я Dialogue: 0,0:17:57.18,0:18:01.76,Default,,0000,0000,0000,,объяснил, эта вся конструкция является функция большой H. И тогда вы оценить Dialogue: 0,0:18:01.76,0:18:06.01,Default,,0000,0000,0000,,большой H путем увеличения счетчика I, ноль, один, два, три года. И что Dialogue: 0,0:18:06.01,0:18:10.41,Default,,0000,0000,0000,,даст вам псевдослучайной последовательности, которая является столько, сколько вам нужно оно быть. И Dialogue: 0,0:18:10.41,0:18:15.32,Default,,0000,0000,0000,,в принципе существует не signifigant нападения на это. Это имеет безопасности это Dialogue: 0,0:18:15.32,0:18:20.37,Default,,0000,0000,0000,,непосредственной близости от двух до 128. Мы увидим, что это означает, что более точно позже на. Dialogue: 0,0:18:20.37,0:18:25.42,Default,,0000,0000,0000,,Это очень быстрый потоковый шифр, аппаратного и программного обеспечения. И, насколько Dialogue: 0,0:18:25.42,0:18:30.43,Default,,0000,0000,0000,,Мы можем сказать, это, как представляется, быть непредсказуемым, необходимые для потоковый шифр. Так что я Dialogue: 0,0:18:30.43,0:18:34.80,Default,,0000,0000,0000,,следует сказать, что eStream проекта на самом деле имеет пять потоковые шифры как Dialogue: 0,0:18:34.80,0:18:39.40,Default,,0000,0000,0000,,это. Я только выбрал сальса, потому что я думаю, что это самый элегантный. Но я могу дать вам Dialogue: 0,0:18:39.40,0:18:44.05,Default,,0000,0000,0000,,Некоторые номера производительность здесь. Таким образом вы можете видеть, это показателей деятельности на Dialogue: 0,0:18:44.05,0:18:48.77,Default,,0000,0000,0000,,2,2 Гигагерца, вы знаете, x 86 типа машины.\NИ вы можете видеть, что на самом деле является RC4 Dialogue: 0,0:18:48.77,0:18:53.02,Default,,0000,0000,0000,,медленный. Потому что по существу, ну он не принимает действительно преимущество Dialogue: 0,0:18:53.02,0:18:57.48,Default,,0000,0000,0000,,аппаратное обеспечение. Она только не байтовые операции.\NИ так много впустую циклов, Dialogue: 0,0:18:57.48,0:19:01.18,Default,,0000,0000,0000,,не используются. Но E-поток кандидатов, сальса и другие Dialogue: 0,0:19:01.18,0:19:05.20,Default,,0000,0000,0000,,кандидат, называется Sosemanuk. Я должен сказать, что эти eStream финалистов. Эти Dialogue: 0,0:19:05.20,0:19:09.59,Default,,0000,0000,0000,,на самом деле потоковых шифров, которые утверждаются eStream проекта. Вы можете видеть, что Dialogue: 0,0:19:09.59,0:19:13.71,Default,,0000,0000,0000,,они достигли значительную скорость.\NЭто 643 МБ в секунду на этот Dialogue: 0,0:19:13.71,0:19:18.15,Default,,0000,0000,0000,,Архитектура, более чем достаточно для кино и они на самом деле впечатляет Dialogue: 0,0:19:18.15,0:19:22.43,Default,,0000,0000,0000,,Тарифы. И поэтому теперь вы видели примеры двух старых потоковые шифры, которые не должны быть Dialogue: 0,0:19:22.43,0:19:26.66,Default,,0000,0000,0000,,используется, включая нападения на эти потоковые шифры.\NВы видели, современные поток шифры Dialogue: 0,0:19:26.66,0:19:30.48,Default,,0000,0000,0000,,как выглядеть с этой nonce. И вы увидите число показателей для этих Dialogue: 0,0:19:30.48,0:19:34.55,Default,,0000,0000,0000,,современные поток шифры, так что если вы будете нуждаться в потоковый шифр можно использовать один из Dialogue: 0,0:19:34.55,0:19:37.99,Default,,0000,0000,0000,,eStream финалистов. В частности вы могли бы использовать что-то вроде сальсы.