29
Теория кодирования МФТИ , осень 2013 Александр Дайняк www.dainiak.com

Приложения теории кодирования

Embed Size (px)

DESCRIPTION

Приложения кодов, исправляющих ошибки. Рандомизированный протокол в коммуникационной сложности. Криптосхема МакЭлиса. Однородные (псевдослучайные) множества на основе кодов, их приложения к дерандомизации задачи выполнимости и к задаче разделения секрета.

Citation preview

Page 1: Приложения теории кодирования

Теория кодированияМФТИ, осень 2013

Александр Дайняк

www.dainiak.com

Page 2: Приложения теории кодирования

Коммуникационная сложность

• У Аси есть слово 𝑋, а у Бори слово 𝑌, где 𝑋, 𝑌 ∈ 0,1 𝑘.

(Ася не знает 𝑌, а Боря не знает 𝑋.)

• Задана функция 𝑓, определённая на 0,1 𝑘 × 0,1 𝑘.

• Ася и Боря хотят вычислить значение 𝑓 𝑋, 𝑌 , переслав для этого

друг другу минимум данных.

• 𝐿comm 𝑓 ≔ число битов, которые в сумме Ася и Боря перешлют

друг другу в худшем случае при использовании фиксированного

алгоритма вычисления 𝑓.

• Пример: 𝐿comm 𝟙𝑋=𝑌 = 𝑘 + 1. (Доказательство: пр-п Дирихле.)

Page 3: Приложения теории кодирования

Коды в качестве усилителей различия

Построим рандомизированный алгоритм вычисления 𝟙𝑋=𝑌, при котором Ася и Боря пересылаю друг другу всего 𝑂 log 𝑘 битов.

Идея: используем код, исправляющий ошибки, в качестве «усилителя различия» слов.

Ася и Боря кодируют 𝑋 и 𝑌 в одном и том же 𝑛, 𝑘, 𝑑 𝑞-коде (кодируя биты 0 и 1

различными элементами из 𝔽𝑞), получая слова 𝑋′, 𝑌′ ∈ 𝔽𝑞𝑛.

Ася выбирает случайную позицию в 𝑋′ и пересылает её номер (в двоичной записи объёмом log2 𝑛 ) и её значение (объёмом log2 𝑞 ).

Боря проверяет, совпадает ли принятое от Аси значение с соответствующим значением в 𝑌′, и затем результат сравнения он одним битом пересылает Асе.

Вероятность ошибки не превосходит 𝑛 − 𝑑 𝑛.

Page 4: Приложения теории кодирования

Коды в качестве усилителей различия

Пусть 𝜀 ∈ 0,1 .

Ася и Боря используют 1

𝜀⋅ 𝑘, 𝑘, 1−𝜀

𝜀⋅ 𝑘 + 1

𝑞-код Рида—Соломона,

где 𝑞 ∈ 𝑘

𝜀, 2𝑘

𝜀.

Тогда вероятность ошибки будет не больше 𝜀, а количество бит,

которые Ася и Боря перешлют друг другу, равно 𝑂 log 𝑘

𝜀.

Page 5: Приложения теории кодирования

О криптографии с открытым ключом на одном слайде• Ася вывешивает в интернете алгоритм c открытыми исходниками,

который преобразует сообщения 𝑋 в 𝜙 𝑋 .

• У Аси есть алгоритм, который знает только она, позволяющий по коду вида 𝜙 𝑋 эффективно восстановить сам 𝑋.

• Никто, кроме Аси (т.е. у кого нет секретного алгоритма декодирования) не должен уметь эффективно восстанавливать 𝑋по 𝜙 𝑋 . Так что собеседник Аси Боря может выкладывать в открытый доступ сообщения, к которым сможет обращаться кто угодно, но расшифровать (за приемлемое время) Борины послания сможет только Ася.

Page 6: Приложения теории кодирования

Криптосхема МакЭлиса (R. McEliece ’1978)

Ася выбирает (не раскрывая никому)

• произвольный 𝑛, 𝑘, 𝑑 -код 𝐶, где 𝑑 ≥ 2𝑡 + 1; этот код должен обладать эффективными алгоритмами построения порождающей матрицы 𝐺 ∈ 𝔽2

𝑘×𝑛 и декодирования с исправлением не более 𝑡ошибок.

• случайную невырожденную матрицу 𝑆 из 𝔽2𝑘×𝑘,

• случайную перестановочную матрицу 𝑃 из 𝔽2𝑛×𝑛.

Затем Ася вычисляет матрицу 𝐺 ≔ 𝑆𝐺𝑃 ∈ 𝔽2𝑘×𝑛 и выкладывает в

открытый доступ алгоритм, который

• по сообщению 𝑋 ∈ 𝔽2𝑘 вычисляет вектор 𝑋 𝐺 ∈ 𝔽2

𝑛 и искажает его в 𝑡 случайных битах.

Page 7: Приложения теории кодирования

Криптосхема МакЭлиса (R. McEliece ’1978)

• 𝑛, 𝑘, 𝑑 -код 𝐶, с порождающей матрицей 𝐺 ∈ 𝔽2𝑘×𝑛

• случайная невырожденная матрица 𝑆 ∈ 𝔽2𝑘×𝑘 (секрет Аси!),

• случайная перестановочная матрица 𝑃 ∈ 𝔽2𝑛×𝑛 (секрет Аси!),

• 𝐺 ≔ 𝑆𝐺𝑃 ∈ 𝔽2𝑘×𝑛 — известная всем матрица,

• По сообщению 𝑋 ∈ 𝔽2𝑘 вычисляется вектор 𝑋 𝐺 ∈ 𝔽2

𝑛 и искажается в 𝑡 случайных битах. Получается вектор 𝑋.

Ася может восстановить 𝑋, декодировав с исправлением ошибок вектор 𝑋𝑃−1 (ведь это искажённое слово кода 𝐶), и домноживрезультат на 𝑆−1.

Page 8: Приложения теории кодирования

Криптосхема МакЭлиса (R. McEliece ’1978)

• 𝐺 ∈ 𝔽2𝑘×𝑛 — порождающая матрица «хорошего» 𝑛, 𝑘, 𝑑 -кода

• случайная невырожденная матрица 𝑆 ∈ 𝔽2𝑘×𝑘 (секрет Аси!),

• случайная перестановочная матрица 𝑃 ∈ 𝔽2𝑛×𝑛 (секрет Аси!),

• 𝑋 → 𝑋𝑆𝐺𝑃 → 𝑋

Почему именно так:

• Предполагается, что задача NCP даже при известной порождающей матрице кода трудна для «почти всех» кодов.Значит, даже зная хороший алгоритм декодирования кода с матрицей 𝐺,трудно декодировать код с матрицей 𝐺𝑃.

• Домножение 𝑋 на 𝑆 перед кодированием призвано разрушить внутреннюю структуру 𝑋, чтобы трудно было «угадать» 𝑋.

Page 9: Приложения теории кодирования

𝑙-однородные множества

Множество наборов 𝑈 ⊆ 0,1 𝑛 называется 𝑙-однородным, еслидля любых 𝑖1, … , 𝑖𝑙 ∈ 1,… , 𝑛 и любых 𝑡1, … , 𝑡𝑙 ∈ 0,1 выполнено

𝑎1, … , 𝑎𝑛 ∈ 𝑈 ∣ 𝑎𝑖1 = 𝑡1, 𝑎𝑖2 = 𝑡2, … , 𝑎𝑖𝑙 = 𝑡𝑙

𝑈= 2−𝑙

То есть при случайном равномерном выборе набора 𝒂 ∈ 𝑈 любые 𝑙бит в 𝒂 будут равны фиксированным значениям с той же вероятностью, что и при случайном выборе из «полного» множества 0,1 𝑛.

Page 10: Приложения теории кодирования

𝑙-однородность и порождающая матрица

Лемма.

Пусть 𝐶 ⊆ 𝔽2𝑛— линейный 𝑛, 𝑘, … -код. Множество 𝐶 является

𝑙-однородным т. и т.т., когда любые 𝑙 столбцов порождающей матрицы кода линейно независимы.

Доказательство:

Пусть 𝐺1, … , 𝐺𝑛 ∈ 𝔽2𝑘 — столбцы порождающей матрицы 𝐺 кода 𝐶.

Пусть, например, 𝐺1 + 𝐺2 + ⋯+ 𝐺𝑠 = 𝟎, где 𝑠 ≤ 𝑙. Рассмотрим тогда любые 𝑡1, … , 𝑡𝑙, такие, что 𝑡1 + ⋯+ 𝑡𝑠 = 1. Имеем

𝑎1, … , 𝑎𝑛 ∈ 𝐶 ∣ 𝑎1 = 𝑡1, … , 𝑎𝑙 = 𝑡𝑙𝐶

= 0 ≠ 2−𝑙

Page 11: Приложения теории кодирования

𝑙-однородность и порождающая матрица

𝐺1, … , 𝐺𝑛 ∈ 𝔽2𝑘 — столбцы порождающей матрицы 𝐺 кода 𝐶.

Пусть теперь 𝐺1, … , 𝐺𝑙 линейно независимы. Тогда ранг матрицы 𝐺1 𝐺2 … |𝐺𝑙 равен 𝑙, и значит в 𝐺 найдутся строки, — пусть это строки

𝒈1, … , 𝒈𝑙 ∈ 𝔽2𝑛, — такие, что их начальные куски длины 𝑙 линейно

независимы.

Обозначим 𝐶𝑡1,…,𝑡𝑙 ≔ 𝒄 ∈ 𝐶 ∣ 𝑐1 = 𝑡1, … , 𝑐𝑙 = 𝑡𝑙 .

Для любых 𝑡1′ , … , 𝑡𝑙

′, 𝑡1′′, … , 𝑡𝑙

′′ найдётся кодовое слово 𝒂 (линейная комбинация строк 𝒈1, … , 𝒈𝑙), для которого

𝑎1 = 𝑡1′ + 𝑡1

′′, … , 𝑎𝑙 = 𝑡𝑙′ + 𝑡𝑙

′′.

Тогда 𝐶𝑡1′ ,…,𝑡𝑙

′ = 𝐶𝑡1′′,…,𝑡𝑙

′′ + 𝒂, отсюда 𝐶𝑡1′ ,…,𝑡𝑙

′ = 𝐶𝑡1′′,…,𝑡𝑙

′′ .

Page 12: Приложения теории кодирования

𝑙-однородность и порождающая матрица

𝐺1, … , 𝐺𝑛 ∈ 𝔽2𝑘 — столбцы порождающей матрицы 𝐺 кода 𝐶.

𝐶𝑡1,…,𝑡𝑙 ≔ 𝒄 ∈ 𝐶 ∣ 𝑐1 = 𝑡1, … , 𝑐𝑙 = 𝑡𝑙 .

Если 𝐺1, … , 𝐺𝑙 линейно независимы, то для любых 𝑡1′ , … , 𝑡𝑙

′, 𝑡1′′, … , 𝑡𝑙

′′

имеем 𝐶𝑡1′ ,…,𝑡𝑙

′ = 𝐶𝑡1′′,…,𝑡𝑙

′′ .

Отсюда 𝐶𝑡1,…,𝑡𝑙 = 𝐶

2𝑙 для любых 𝑡1, … , 𝑡𝑙.

Лемма доказана.

Page 13: Приложения теории кодирования

𝑙-однородность и кодовое расстояние

Лемма.Пусть 𝐶 ⊆ 𝔽2

𝑛— линейный 𝑛, 𝑘, … -код. Множество 𝐶 является 𝑙-однородным т. и т.т., когда любые 𝑙 столбцов порождающей матрицы кода линейно независимы.

Теорема.Двоичный линейный код 𝐶 является 𝑙-однородным множеством т. и т.т.,

когда 𝑑 𝐶⟂ > 𝑙.

Доказательство: применяем лемму, заметив, что порождающая

матрица 𝐶 является проверочной для 𝐶⟂, и используем утверждение о связи кодового расстояния с проверочной матрицей линейного кода.

Page 14: Приложения теории кодирования

𝑞-ичные 𝑙-однородные множества

Теорема.Двоичный линейный код 𝐶 образует 𝑙-однородное множество

т. и т.т., когда 𝑑 𝐶⟂ > 𝑙.

Замечание.Аналогично можно вести понятие 𝑞-ичного 𝑙-однородногомножества и доказать похожую теорему: линейный код 𝐶 ⊆ 𝔽𝑞

𝑛

образует 𝑙-однородное множество т. и т.т., когда 𝑑 𝐶⟂ > 𝑙.

Page 15: Приложения теории кодирования

𝑙-однородные множества на основе РМ-кодов

Интересны 𝑙-однородные множества малой (полиномиальной по 𝑛) мощности.

Для того, чтобы получить такое множество, нужно взять линейный код 𝐶 у которого

• 𝑑 𝐶 > 𝑙

• dim𝐶 велико

и затем рассмотреть 𝐶⟂.

Возьмём в качестве 𝐶 код Рида—Маллера с параметрами 𝑚 ≔ log2 𝑛 , 𝑟 ≔ 𝑚 − 2

Для такого 𝐶 имеем 𝑑 𝐶 = 2𝑚−𝑟 = 4.

Код 𝐶⟂ тоже является РМ-кодом, с параметром 𝑟′ = 𝑚 − 𝑟 − 1 = 1.

При этом 𝐶⟂ = 21+𝑚 ≤ 4𝑛.

Page 16: Приложения теории кодирования

𝑙-однородные множества на основе РМ-кодов

Доказанное утверждение:Код Рида—Маллера с параметрами 𝑚 = log2 𝑛 и 𝑟 = 1 образует3-однородное множество наборов длины 𝑛, мощность которого линейна по 𝑛.

Page 17: Приложения теории кодирования

Задача 3≥𝛾-SAT

Задача 3≥𝛾-SAT: для заданной 3-КНФ найти набор, на котором не менее чем 𝛾-я доля всех скобок обращается в единицу.

Обычная задача 3-SAT — это 3≥1-SAT.

Теорема.Задача 3≥7/8-SAT полиномиально разрешима.

Page 18: Приложения теории кодирования

Полиномиальность 3≥7/8-SAT

Теорема.Задача 3≥7/8-SAT полиномиально разрешима.

Доказательство:

Пусть 3-КНФ содержит 𝑛 переменных и 𝑚 скобок.

При случайном выборе набора из 0,1 𝑛 имеемPr фиксированная скобка равна нулю = 1

8

Отсюда𝔼#скобок, равных нулю = 𝑚

8

Заметим, что Pr фикс. ск. = 0 = 1

8и в том случае, когда берётся

случайный набор из произвольного 3-однородного множества.

Page 19: Приложения теории кодирования

Полиномиальность 3≥7/8-SAT

Получается, что в любом 3-однородном множестве найдётся набор, на котором ≤ 𝑚

8скобок равны нулю.

Получается простой алгоритм:

• Перебираем всевозможные наборы РМ-кода (с нужными параметрами) и подставляем их в 3-КНФ. Хотя бы один из наборов должен сгодиться.

Page 20: Приложения теории кодирования

Задача о разделении секрета

Задача:

Есть несколько человек и секрет. Нужно сообщить людям некоторую информацию, так, чтобы

• все вместе они могли бы восстановить секрет

• никакая компания из меньшего числа человек не могла бы восстановить секрет

Page 21: Приложения теории кодирования

Задача о разделении секрета

Пусть нужно разделить секрет между 𝑚 людьми.

• Сопоставляем секрету элемент 𝑠 ∈ 𝔽𝑞.

• Берём 𝑞-ичный код 𝐶, такой, что 𝑑 𝐶⟂ = 𝑚 + 1.

• В порождающей матрице 𝐺 кода 𝐶 найдутся 𝑚 + 1 линейно зависимых столбцов, пусть это первые 𝑚 + 1 столбцов.Тогда найдутся такие 𝛼1, … , 𝛼𝑚+1 ∈ 𝔽𝑞 ∖ 0 , что в любом

кодовом слове 𝒄 первые 𝑚 + 1 разрядов удовлетворяют соотношению 𝛼1𝑐1 + ⋯+ 𝛼𝑚+1𝑐𝑚+1 = 0.Т.е. 𝑐𝑚+1 всегда можно однозначно определить по 𝑐1, … , 𝑐𝑚.

Page 22: Приложения теории кодирования

Задача о разделении секрета

Секрет 𝑠 ∈ 𝔽𝑞 разделяем между 𝑚 людьми.

• Берём 𝑞-ичный код 𝐶, такой, что 𝑑 𝐶⟂ = 𝑚 + 1.Пусть в порождающей матрице 𝐺 кода 𝐶 первые 𝑚 + 1столбцов линейно зависимы.

• Выбираем случайные элементы 𝑡1, … , 𝑡𝑚−1.

• Элемент 𝑡𝑚 однозначно выбираем так, чтобы в коде 𝐶 нашлось слово вида

𝑡1, … 𝑡𝑚−1, 𝑡𝑚, 𝑠, …

Поскольку 𝐶 является 𝑞-ичным 𝑚-однородным множеством, зная любые 𝑚 − 1 из чисел 𝑡1, … , 𝑡𝑚, об 𝑠 ничего нельзя сказать.

Page 23: Приложения теории кодирования

Как кодируются данные на CD

Параметры CD-ROM:

• Длина дорожки ≈ 5 км

• Ширина дорожки ≈ 6 мкм

• Высота углублений ≈ 1.2 мкм

Задача: обеспечить сохранность данных при наличии царапин/пыли/грязи.

Page 24: Приложения теории кодирования

Как кодируются данные на CD

Одна царапина может затрагивать много последовательных битов:

В этом случае говорят о наличии пакетов ошибок.

…001010111010101010101…

…101001010010101110100…

…101001111101010000100…

Page 25: Приложения теории кодирования

Как кодируются данные на CD

Одна царапина может затрагивать много последовательных битов.

Выход: кодировать данные с перемежением (interleaving), так, чтобы последовательные биты на дорожке не отвечали одному и тому же кодовому слову.

Добавляем помехоустойчивое кодирование Рида—Соломона и получаем технологию:

CIRC = Cross-interleaved Reed—Solomon Codes

Page 26: Приложения теории кодирования

Кодирование CIRC

• Каждый отсчёт одного канала звукозаписи занимает 16 бит

• Разбиваем 16 бит на две восьмёрки, и считаем каждую из них элементом 𝔽256. Пару элементов 𝔽256 будем обозначать одной буквой.

• Запись на CD двухканальная (стерео), так что данные выглядят так:

𝐿1𝑅1𝐿2𝑅2𝐿3𝑅3 …— где 𝐿𝑖 , 𝑅𝑖 ∈ 𝔽256

2 .

Page 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

Page 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

Page 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.