Приложения кодов, исправляющих ошибки. Рандомизированный протокол в коммуникационной сложности. Криптосхема МакЭлиса. Однородные (псевдослучайные) множества на основе кодов, их приложения к дерандомизации задачи выполнимости и к задаче разделения секрета.
Коды Адамара. Каскадные коды Форни.Alex DainiakМатрицы Адамара. Конструкции Сильвестра и Пэли. Коды на основе матриц Адамара.
Каскадные коды. Коды Форни: конструкция и простой алгоритм декодирования.
Границы Плоткина и Элайеса—БассалыгоAlex DainiakГраница Плоткина.
Вложение метрических пространств. Лемма о числе векторов в евклидовом пространстве. Граница Элайеса—Бассалыго.
Линейные кодыAlex DainiakЛинейные коды. Определения. Порождающая и проверочная матрицы. Связь кодового расстояния с проверочной матрицей. Граница Варшамова—Гилберта. Систематическое кодирование. Декодирование по синдрому. Коды Хемминга.
Остаточный код. Граница Грайсмера—Соломона—Штиффлера.
Коды, исправляющие ошибки. Простейшие границы. Коды Варшамова—Тененгольца.Alex DainiakЗадача исправления и обнаружения ошибок. Геометрическая интерпретация. Типы ошибок. Метрики Хемминга и Левенштейна. Кодовое расстояние. Основные задачи теории кодов, исправляющих ошибки.
Коды Варшамова—Тененгольца, алгоритмы исправления одиночных ошибок выпадения и вставки символов.
Простейшие границы для параметров кодов, исправляющих ошибки замещения: границы сферической упаковки, Синглтона.
Коды на основе многочленов и алгоритмы их декодированияAlex DainiakКоды Рида—Соломона. Алгоритм декодирования Берлекэмпа—Велча.
Коды Рида—Маллера: кодовое расстояние, алгоритм мажоритарного декодирования.
Варианты обобщений конструкции Рида—Маллера. Лемма Липтона—ДеМилло—Шварца—Зиппеля. Понятие об алгеброгеометрических кодах.
Основы теории графов 07: сепараторы в планарных графахAlex DainiakДоказываем теорему Липтона—Тарджена о существовании хороших разделяющих множеств (сепараторов) в планарных графах.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Графовая модель канала связи. Шенноновская ёмкостьAlex DainiakГрафовая модель канала. Шенноновское произведение графов, шенноновская ёмкость. Теорема о верхней оценке шенноновской ёмкости.
Основы теории графов 01: напоминание определений, теорема Форда—ФалкерсонаAlex DainiakВспоминаем определения изоморфизма, связности, соседства и т.п. Доказываем (напоминаем) теорему Форда—Фалкерсона, из которой на следующей лекции выведем теорему Менгера.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Циклические коды БЧХ, Хемминга. Восстановление синхронизацииAlex DainiakКоды БЧХ.
Задача восстановления синхронизации. Восстановление синхронизации для смежных классов циклических кодов.
Циклическое представление кодов Хемминга. Совершенные коды. Коды Голея. Теорема Васильева.
Основы теории графов 04: метрики на деревьяхAlex DainiakДоказываем теорему Зарецкого о существовании дерева с заданными расстояниями между вершинами.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Основы теории графов 10: экстремальная теория графовAlex DainiakДоказываем теорему Турана, а затем теорему Эрдёша—Стоуна—Симоновица(Шимоновича) о связи хроматического числа подграфа с максимальным числом рёбер в графе, его не содержащего.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—ШпильманаAlex DainiakСложность задачи декодирования линейных кодов: задача NCP (задачи о ближайшем кодовом слове).
Графы-расширители. Вероятностное доказательство существования расширителей. Коды на основе двудольных графов. Кодовое расстояние кодов на основе расширителей. Алгоритм декодирования Сипсера—Шпильмана.
Циклические коды. Граница БЧХAlex DainiakЦиклические коды. Проверочный и порождающий многочлены, критерий существования кода с заданным порождающим многочленом. Вид порождающей и проверочной матриц. Систематическое кодирование.
Граница Боуза—Чоудхури—Хоквингема.
Основы теории графов 05: критерии планарности графовAlex DainiakВводим определение укладки, планарных графов, доказываем критерии планарности Вагнера и Понтрягина—Куратовского.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Основы теории графов 03: связностьAlex DainiakОбсуждаем два определения k-связности. Доказываем теорему Менгера об их эквавалентности (через теорему Форда—Фалкерсона). Доказываем теоремы о построении 2-связных и 3-связных графов. Вводим деревья блоков и точек сочленения. Доказываем теорему Мадера о существовании k-связного подграфа.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Основы теории графов 11: гамильтоновы циклыAlex DainiakДоказываем достаточные условия существования в графе гамильтоновых циклов: условия Эрдёша—Хватала, Асратяна—Хачатряна, Хватала. Доказываем необходимые условия существования гамильтонова цикла в планарном графе (теорема Гринберга).
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Основы теории графов 02: факторизация графов (разложение на простые подграфы)Alex DainiakДоказываем теоремы о разложении полных графов на полные двудольные: Грэхема—Поллака и Анселя. Доказываем теорему Татта о критерии существования совершенного паросочетания в произвольном графе.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Основы теории графов 08: раскраски и списочные раскраскиAlex DainiakВводим понятие списочной раскраски. Демонстрируем различие между обчным и списочным хроматическим числом. Доказываем теоремы Брукса и Визинга. Доказываем теорему Алона об оценки списочного хроматического числа через минимальную степень вершин. Доказываем верхнюю оценку на списочное хроматическое число через обычное.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Основы теории графов 09: раскраски планарных графов, совершенные графыAlex DainiakРассматриваем раскраски планарных графов и другие темы, связанные с раскрасками. Доказываем теорему Томассена о том, что списочное хроматическое число любого планарного графа не превышает пяти. Доказываем теорему Эрдёша о том, что существуют графы с большим хроматическим числом и одновременно большим обхватом.
Рассматриваем совершенные графы и доказываем слабую гипотезу Бержа.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Основы теории графов 06: триангуляции и трёхсвязные планарные графыAlex DainiakВводим понятие триангуляций. Доказываем, что триангуляции трёхсвязны. Доказываем критерий Татта о том, когда множество образует границу грани в трёхсвязном планарном графе. Доказываем теорему Вагнера—Фари о том, что у любого планарного графа существует укладка, в которой рёбра — отрезки прямых линий.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
ОПК № 3 – Машинное представление целых чисел, символов, строкVladimir Parfinenko1. Двоичная система счисления, перевод чисел, битовое представление.
2. Шестнадцатеричная система счисления.
3. Хранение знака: знак в старшем бите (наивный способ).
4. Арифметика по модулю и двоичный дополнительный код.
5. Переполнение.
6. Двоично-десятичный код, Packed BCD.
7. Символы и кодировки: от ASCII к Unicode.
8. Строки, базовые способы их представления.
9. Операции со строками.
10. «Веревки» — альтернативный способ представления строк.
11. Сериализация и десериализация. Пример: сериализация массива чисел переменной длины.
12. Двойственность порядка байт: little-endian и big-endian.
Основы теории графов 07: сепараторы в планарных графахAlex DainiakДоказываем теорему Липтона—Тарджена о существовании хороших разделяющих множеств (сепараторов) в планарных графах.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Графовая модель канала связи. Шенноновская ёмкостьAlex DainiakГрафовая модель канала. Шенноновское произведение графов, шенноновская ёмкость. Теорема о верхней оценке шенноновской ёмкости.
Основы теории графов 01: напоминание определений, теорема Форда—ФалкерсонаAlex DainiakВспоминаем определения изоморфизма, связности, соседства и т.п. Доказываем (напоминаем) теорему Форда—Фалкерсона, из которой на следующей лекции выведем теорему Менгера.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Циклические коды БЧХ, Хемминга. Восстановление синхронизацииAlex DainiakКоды БЧХ.
Задача восстановления синхронизации. Восстановление синхронизации для смежных классов циклических кодов.
Циклическое представление кодов Хемминга. Совершенные коды. Коды Голея. Теорема Васильева.
Основы теории графов 04: метрики на деревьяхAlex DainiakДоказываем теорему Зарецкого о существовании дерева с заданными расстояниями между вершинами.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Основы теории графов 10: экстремальная теория графовAlex DainiakДоказываем теорему Турана, а затем теорему Эрдёша—Стоуна—Симоновица(Шимоновича) о связи хроматического числа подграфа с максимальным числом рёбер в графе, его не содержащего.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—ШпильманаAlex DainiakСложность задачи декодирования линейных кодов: задача NCP (задачи о ближайшем кодовом слове).
Графы-расширители. Вероятностное доказательство существования расширителей. Коды на основе двудольных графов. Кодовое расстояние кодов на основе расширителей. Алгоритм декодирования Сипсера—Шпильмана.
Циклические коды. Граница БЧХAlex DainiakЦиклические коды. Проверочный и порождающий многочлены, критерий существования кода с заданным порождающим многочленом. Вид порождающей и проверочной матриц. Систематическое кодирование.
Граница Боуза—Чоудхури—Хоквингема.
Основы теории графов 05: критерии планарности графовAlex DainiakВводим определение укладки, планарных графов, доказываем критерии планарности Вагнера и Понтрягина—Куратовского.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Основы теории графов 03: связностьAlex DainiakОбсуждаем два определения k-связности. Доказываем теорему Менгера об их эквавалентности (через теорему Форда—Фалкерсона). Доказываем теоремы о построении 2-связных и 3-связных графов. Вводим деревья блоков и точек сочленения. Доказываем теорему Мадера о существовании k-связного подграфа.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Основы теории графов 11: гамильтоновы циклыAlex DainiakДоказываем достаточные условия существования в графе гамильтоновых циклов: условия Эрдёша—Хватала, Асратяна—Хачатряна, Хватала. Доказываем необходимые условия существования гамильтонова цикла в планарном графе (теорема Гринберга).
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Основы теории графов 02: факторизация графов (разложение на простые подграфы)Alex DainiakДоказываем теоремы о разложении полных графов на полные двудольные: Грэхема—Поллака и Анселя. Доказываем теорему Татта о критерии существования совершенного паросочетания в произвольном графе.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Основы теории графов 08: раскраски и списочные раскраскиAlex DainiakВводим понятие списочной раскраски. Демонстрируем различие между обчным и списочным хроматическим числом. Доказываем теоремы Брукса и Визинга. Доказываем теорему Алона об оценки списочного хроматического числа через минимальную степень вершин. Доказываем верхнюю оценку на списочное хроматическое число через обычное.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Основы теории графов 09: раскраски планарных графов, совершенные графыAlex DainiakРассматриваем раскраски планарных графов и другие темы, связанные с раскрасками. Доказываем теорему Томассена о том, что списочное хроматическое число любого планарного графа не превышает пяти. Доказываем теорему Эрдёша о том, что существуют графы с большим хроматическим числом и одновременно большим обхватом.
Рассматриваем совершенные графы и доказываем слабую гипотезу Бержа.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
Основы теории графов 06: триангуляции и трёхсвязные планарные графыAlex DainiakВводим понятие триангуляций. Доказываем, что триангуляции трёхсвязны. Доказываем критерий Татта о том, когда множество образует границу грани в трёхсвязном планарном графе. Доказываем теорему Вагнера—Фари о том, что у любого планарного графа существует укладка, в которой рёбра — отрезки прямых линий.
[Слайды курса, прочитанного в МФТИ в 2013 году.]
ОПК № 3 – Машинное представление целых чисел, символов, строкVladimir Parfinenko1. Двоичная система счисления, перевод чисел, битовое представление.
2. Шестнадцатеричная система счисления.
3. Хранение знака: знак в старшем бите (наивный способ).
4. Арифметика по модулю и двоичный дополнительный код.
5. Переполнение.
6. Двоично-десятичный код, Packed BCD.
7. Символы и кодировки: от ASCII к Unicode.
8. Строки, базовые способы их представления.
9. Операции со строками.
10. «Веревки» — альтернативный способ представления строк.
11. Сериализация и десериализация. Пример: сериализация массива чисел переменной длины.
12. Двойственность порядка байт: little-endian и big-endian.
представление целых чисел в формате с фиксированной запятойtanamukinaинформатика, 10 класс, Представление целых чисел в формате с фиксированной запятой, системы счисления, примеры решения задач, задачи для самоконтроля, решения
Введение в Clojure (Никита Прокопов)mainstreamlesshttp://bit.ly/2mainstream
Никита Прокопов из AboutEcho.com рассказывает о Clojure, 6 марта 2013
Эта лекция — часть курса «Немейнстримовые технологии разработки», читаемого в Новосибирском Государственном Университете
Конспект лекций по теории кодированияAlex DainiakСобранные в один файл конспекты лекций по теории кодов, исправляющих ошибки. Лекции читаются на факультете ФИВТ МФТИ.
Последняя версия этого файла всегда доступна на www.dainiak.com
2. Коммуникационная сложность
• У Аси есть слово 𝑋, а у Бори слово 𝑌, где 𝑋, 𝑌 ∈ 0,1 𝑘
.
(Ася не знает 𝑌, а Боря не знает 𝑋.)
• Задана функция 𝑓, определённая на 0,1 𝑘 × 0,1 𝑘.
• Ася и Боря хотят вычислить значение 𝑓 𝑋, 𝑌 , переслав для этого
друг другу минимум данных.
• 𝐿comm 𝑓 ≔ число битов, которые в сумме Ася и Боря перешлют
друг другу в худшем случае при использовании фиксированного
алгоритма вычисления 𝑓.
• Пример: 𝐿comm 𝟙 𝑋=𝑌 = 𝑘 + 1. (Доказательство: пр-п Дирихле.)
3. Коды в качестве усилителей различия
Построим рандомизированный алгоритм вычисления 𝟙 𝑋=𝑌, при котором Ася и
Боря пересылаю друг другу всего 𝑂 log 𝑘 битов.
Идея: используем код, исправляющий ошибки, в качестве «усилителя
различия» слов.
Ася и Боря кодируют 𝑋 и 𝑌 в одном и том же 𝑛, 𝑘, 𝑑 𝑞-коде (кодируя биты 0 и 1
различными элементами из 𝔽 𝑞), получая слова 𝑋′
, 𝑌′
∈ 𝔽 𝑞
𝑛
.
Ася выбирает случайную позицию в 𝑋′ и пересылает её номер (в двоичной
записи объёмом log2 𝑛 ) и её значение (объёмом log2 𝑞 ).
Боря проверяет, совпадает ли принятое от Аси значение с соответствующим
значением в 𝑌′, и затем результат сравнения он одним битом пересылает Асе.
Вероятность ошибки не превосходит 𝑛 − 𝑑 𝑛.
4. Коды в качестве усилителей различия
Пусть 𝜀 ∈ 0,1 .
Ася и Боря используют 1
𝜀
⋅ 𝑘, 𝑘, 1−𝜀
𝜀
⋅ 𝑘 + 1
𝑞
-код Рида—Соломона,
где 𝑞 ∈ 𝑘
𝜀
, 2𝑘
𝜀
.
Тогда вероятность ошибки будет не больше 𝜀, а количество бит,
которые Ася и Боря перешлют друг другу, равно 𝑂 log 𝑘
𝜀
.
5. О криптографии с открытым ключом
на одном слайде
• Ася вывешивает в интернете алгоритм c открытыми исходниками,
который преобразует сообщения 𝑋 в 𝜙 𝑋 .
• У Аси есть алгоритм, который знает только она, позволяющий
по коду вида 𝜙 𝑋 эффективно восстановить сам 𝑋.
• Никто, кроме Аси (т.е. у кого нет секретного алгоритма
декодирования) не должен уметь эффективно восстанавливать 𝑋
по 𝜙 𝑋 . Так что собеседник Аси Боря может выкладывать
в открытый доступ сообщения, к которым сможет обращаться кто
угодно, но расшифровать (за приемлемое время) Борины
послания сможет только Ася.
6. Криптосхема МакЭлиса (R. McEliece ’1978)
Ася выбирает (не раскрывая никому)
• произвольный 𝑛, 𝑘, 𝑑 -код 𝐶, где 𝑑 ≥ 2𝑡 + 1; этот код должен
обладать эффективными алгоритмами построения порождающей
матрицы 𝐺 ∈ 𝔽2
𝑘×𝑛
и декодирования с исправлением не более 𝑡
ошибок.
• случайную невырожденную матрицу 𝑆 из 𝔽2
𝑘×𝑘
,
• случайную перестановочную матрицу 𝑃 из 𝔽2
𝑛×𝑛
.
Затем Ася вычисляет матрицу 𝐺 ≔ 𝑆𝐺𝑃 ∈ 𝔽2
𝑘×𝑛
и выкладывает в
открытый доступ алгоритм, который
• по сообщению 𝑋 ∈ 𝔽2
𝑘
вычисляет вектор 𝑋 𝐺 ∈ 𝔽2
𝑛
и искажает его в
𝑡 случайных битах.
7. Криптосхема МакЭлиса (R. McEliece ’1978)
• 𝑛, 𝑘, 𝑑 -код 𝐶, с порождающей матрицей 𝐺 ∈ 𝔽2
𝑘×𝑛
• случайная невырожденная матрица 𝑆 ∈ 𝔽2
𝑘×𝑘
(секрет Аси!),
• случайная перестановочная матрица 𝑃 ∈ 𝔽2
𝑛×𝑛
(секрет Аси!),
• 𝐺 ≔ 𝑆𝐺𝑃 ∈ 𝔽2
𝑘×𝑛
— известная всем матрица,
• По сообщению 𝑋 ∈ 𝔽2
𝑘
вычисляется вектор 𝑋 𝐺 ∈ 𝔽2
𝑛
и искажается
в 𝑡 случайных битах. Получается вектор 𝑋.
Ася может восстановить 𝑋, декодировав с исправлением ошибок
вектор 𝑋𝑃−1
(ведь это искажённое слово кода 𝐶), и домножив
результат на 𝑆−1
.
8. Криптосхема МакЭлиса (R. McEliece ’1978)
• 𝐺 ∈ 𝔽2
𝑘×𝑛
— порождающая матрица «хорошего» 𝑛, 𝑘, 𝑑 -кода
• случайная невырожденная матрица 𝑆 ∈ 𝔽2
𝑘×𝑘
(секрет Аси!),
• случайная перестановочная матрица 𝑃 ∈ 𝔽2
𝑛×𝑛
(секрет Аси!),
• 𝑋 → 𝑋𝑆𝐺𝑃 → 𝑋
Почему именно так:
• Предполагается, что задача NCP даже при известной порождающей матрице
кода трудна для «почти всех» кодов.
Значит, даже зная хороший алгоритм декодирования кода с матрицей 𝐺,
трудно декодировать код с матрицей 𝐺𝑃.
• Домножение 𝑋 на 𝑆 перед кодированием призвано разрушить внутреннюю
структуру 𝑋, чтобы трудно было «угадать» 𝑋.
9. 𝑙-однородные множества
Множество наборов 𝑈 ⊆ 0,1 𝑛 называется 𝑙-однородным, если
для любых 𝑖1, … , 𝑖𝑙 ∈ 1, … , 𝑛 и любых 𝑡1, … , 𝑡𝑙 ∈ 0,1 выполнено
𝑎1, … , 𝑎 𝑛 ∈ 𝑈 ∣ 𝑎𝑖1
= 𝑡1, 𝑎𝑖2
= 𝑡2, … , 𝑎𝑖 𝑙
= 𝑡𝑙
𝑈
= 2−𝑙
То есть при случайном равномерном выборе набора 𝒂 ∈ 𝑈 любые 𝑙
бит в 𝒂 будут равны фиксированным значениям с той же
вероятностью, что и при случайном выборе из «полного»
множества 0,1 𝑛.
13. 𝑙-однородность и кодовое расстояние
Лемма.
Пусть 𝐶 ⊆ 𝔽2
𝑛
— линейный 𝑛, 𝑘, … -код. Множество 𝐶 является
𝑙-однородным т. и т.т., когда любые 𝑙 столбцов порождающей матрицы
кода линейно независимы.
Теорема.
Двоичный линейный код 𝐶 является 𝑙-однородным множеством т. и т.т.,
когда 𝑑 𝐶⟂ > 𝑙.
Доказательство: применяем лемму, заметив, что порождающая
матрица 𝐶 является проверочной для 𝐶⟂, и используем утверждение о
связи кодового расстояния с проверочной матрицей линейного кода.
14. 𝑞-ичные 𝑙-однородные множества
Теорема.
Двоичный линейный код 𝐶 образует 𝑙-однородное множество
т. и т.т., когда 𝑑 𝐶⟂ > 𝑙.
Замечание.
Аналогично можно вести понятие 𝑞-ичного 𝑙-однородного
множества и доказать похожую теорему: линейный код 𝐶 ⊆ 𝔽 𝑞
𝑛
образует 𝑙-однородное множество т. и т.т., когда 𝑑 𝐶⟂ > 𝑙.
15. 𝑙-однородные множества на основе РМ-кодов
Интересны 𝑙-однородные множества малой (полиномиальной по 𝑛) мощности.
Для того, чтобы получить такое множество, нужно взять линейный код 𝐶 у которого
• 𝑑 𝐶 > 𝑙
• dim 𝐶 велико
и затем рассмотреть 𝐶⟂.
Возьмём в качестве 𝐶 код Рида—Маллера с параметрами
𝑚 ≔ log2 𝑛 , 𝑟 ≔ 𝑚 − 2
Для такого 𝐶 имеем 𝑑 𝐶 = 2 𝑚−𝑟
= 4.
Код 𝐶⟂ тоже является РМ-кодом, с параметром 𝑟′ = 𝑚 − 𝑟 − 1 = 1.
При этом 𝐶⟂ = 21+𝑚
≤ 4𝑛.
16. 𝑙-однородные множества на основе РМ-кодов
Доказанное утверждение:
Код Рида—Маллера с параметрами 𝑚 = log2 𝑛 и 𝑟 = 1 образует
3-однородное множество наборов длины 𝑛, мощность которого
линейна по 𝑛.
17. Задача 3≥𝛾-SAT
Задача 3≥𝛾-SAT: для заданной 3-КНФ найти набор, на котором
не менее чем 𝛾-я доля всех скобок обращается в единицу.
Обычная задача 3-SAT — это 3≥1-SAT.
Теорема.
Задача 3≥7/8-SAT полиномиально разрешима.
18. Полиномиальность 3≥7/8-SAT
Теорема.
Задача 3≥7/8-SAT полиномиально разрешима.
Доказательство:
Пусть 3-КНФ содержит 𝑛 переменных и 𝑚 скобок.
При случайном выборе набора из 0,1 𝑛 имеем
Pr фиксированная скобка равна нулю = 1
8
Отсюда
𝔼 #скобок, равных нулю = 𝑚
8
Заметим, что Pr фикс. ск. = 0 = 1
8
и в том случае, когда берётся
случайный набор из произвольного 3-однородного множества.
19. Полиномиальность 3≥7/8-SAT
Получается, что в любом 3-однородном множестве найдётся
набор, на котором ≤ 𝑚
8
скобок равны нулю.
Получается простой алгоритм:
• Перебираем всевозможные наборы РМ-кода (с нужными
параметрами) и подставляем их в 3-КНФ.
Хотя бы один из наборов должен сгодиться.
20. Задача о разделении секрета
Задача:
Есть несколько человек и секрет.
Нужно сообщить людям некоторую информацию, так, чтобы
• все вместе они могли бы восстановить секрет
• никакая компания из меньшего числа человек не могла бы
восстановить секрет
21. Задача о разделении секрета
Пусть нужно разделить секрет между 𝑚 людьми.
• Сопоставляем секрету элемент 𝑠 ∈ 𝔽 𝑞.
• Берём 𝑞-ичный код 𝐶, такой, что 𝑑 𝐶⟂ = 𝑚 + 1.
• В порождающей матрице 𝐺 кода 𝐶 найдутся 𝑚 + 1 линейно
зависимых столбцов, пусть это первые 𝑚 + 1 столбцов.
Тогда найдутся такие 𝛼1, … , 𝛼 𝑚+1 ∈ 𝔽 𝑞 ∖ 0 , что в любом
кодовом слове 𝒄 первые 𝑚 + 1 разрядов удовлетворяют
соотношению 𝛼1 𝑐1 + ⋯ + 𝛼 𝑚+1 𝑐 𝑚+1 = 0.
Т.е. 𝑐 𝑚+1 всегда можно однозначно определить по 𝑐1, … , 𝑐 𝑚.
22. Задача о разделении секрета
Секрет 𝑠 ∈ 𝔽 𝑞 разделяем между 𝑚 людьми.
• Берём 𝑞-ичный код 𝐶, такой, что 𝑑 𝐶⟂ = 𝑚 + 1.
Пусть в порождающей матрице 𝐺 кода 𝐶 первые 𝑚 + 1
столбцов линейно зависимы.
• Выбираем случайные элементы 𝑡1, … , 𝑡 𝑚−1.
• Элемент 𝑡 𝑚 однозначно выбираем так, чтобы в коде 𝐶 нашлось
слово вида
𝑡1, … 𝑡 𝑚−1, 𝑡 𝑚, 𝑠, …
Поскольку 𝐶 является 𝑞-ичным 𝑚-однородным множеством,
зная любые 𝑚 − 1 из чисел 𝑡1, … , 𝑡 𝑚, об 𝑠 ничего нельзя сказать.
23. Как кодируются данные на CD
Параметры CD-ROM:
• Длина дорожки ≈ 5 км
• Ширина дорожки ≈ 6 мкм
• Высота углублений ≈ 1.2 мкм
Задача: обеспечить сохранность данных при наличии
царапин/пыли/грязи.
24. Как кодируются данные на CD
Одна царапина может затрагивать много последовательных битов:
В этом случае говорят о наличии пакетов ошибок.
… 001010111010101010101 …
… 101001010010101110100 …
… 101001111101010000100 …
25. Как кодируются данные на CD
Одна царапина может затрагивать много последовательных битов.
Выход: кодировать данные с перемежением (interleaving), так,
чтобы последовательные биты на дорожке не отвечали одному и
тому же кодовому слову.
Добавляем помехоустойчивое кодирование Рида—Соломона и
получаем технологию:
CIRC = Cross-interleaved Reed—Solomon Codes
26. Кодирование CIRC
• Каждый отсчёт одного канала звукозаписи занимает 16 бит
• Разбиваем 16 бит на две восьмёрки, и считаем каждую из них
элементом 𝔽256. Пару элементов 𝔽256 будем обозначать одной
буквой.
• Запись на CD двухканальная (стерео), так что данные выглядят
так:
𝐿1 𝑅1 𝐿2 𝑅2 𝐿3 𝑅3 …
— где 𝐿𝑖, 𝑅𝑖 ∈ 𝔽256
2
.
27. Кодирование CIRC
Последовательность данных
𝐿1 𝑅1 𝐿2 𝑅2 𝐿3 𝑅3 …
разбивается на кадры (фреймы):
𝐿1 𝑅1 … 𝐿6 𝑅6 ∣ 𝐿7 𝑅7 … 𝐿12 𝑅12 ∣ 𝐿13 𝑅13 …
Затем в каждой паре последовательных фреймов перемежаем
данные так (на примере первой пары фреймов):
𝐿1 𝐿3 𝐿5 𝑅1 𝑅3 𝑅5 𝐿8 𝐿10 𝐿12 𝑅8 𝑅10 𝑅12 𝐿7 𝐿9 𝐿11 𝑅7 𝑅9 𝑅11 𝐿2 𝐿4 𝐿6 𝑅2 𝑅4 𝑅6
28. Кодирование CIRC
После перемежения фреймов получается последовательность:
𝐿1 𝐿3 𝐿5 𝑅1 𝑅3 𝑅5 𝐿8 𝐿10 𝐿12 𝑅8 𝑅10 𝑅12 𝐿7 𝐿9 𝐿11 𝑅7 𝑅9 𝑅11 𝐿2 𝐿4 𝐿6 𝑅2 𝑅4 𝑅6 …
Далее к каждым 24 последовательным байтам применяется
систематический 28,24,5 256-код Рида—Соломона.
Так, например, к последовательности
𝐿1 𝐿3 𝐿5 𝑅1 𝑅3 𝑅5 𝐿8 𝐿10 𝐿12 𝑅8 𝑅10 𝑅12
добавятся 4 проверочных байта, которые вставляются в середину:
𝐿1 𝐿3 𝐿5 𝑅1 𝑅3 𝑅5 𝑷 𝟏 𝑷 𝟐 𝐿8 𝐿10 𝐿12 𝑅8 𝑅10 𝑅12
29. Кодирование CIRC
Получается последовательность 28-байтных слов.
Каждый блок из 28 таких слов записывается в виде матрицы 28 × 136:
𝑐1,1 𝑐2,1 𝑐3,1 𝑐4,1 𝑐5,1 𝑐6,1 𝑐7,1 𝑐8,1 𝑐9,1 𝑐10,1 …
0 0 0 0 𝑐1,2 𝑐2,2 𝑐3,2 𝑐4,2 𝑐5,2 𝑐6,2 …
0 0 0 0 0 0 0 0 𝑐1,3 𝑐2,3 …
⋮
Здесь 𝑐𝑖,𝑗 — это 𝑗-й байт 𝑖-го слова.
Затем каждый столбец этой матрицы кодируется с помощью
32,28,5 256-кода Рида—Соломона.
Получается последовательность 32-байтных слов,
она и записывается на CD.