Некоторые приложения теории кодирования. Учебное пособие
.pdf
7.4. Устойчивость к дефектам
[n, n − k]q-код с порождающей матрицей G0 в систематическом виде: G0 = [In−k|P ]. Пусть также τ = {i1, ..., iγ} — множество дефективных ячеек в блоке из n ячеек, в который требуется сохранить данные m Fkq , а si1 , ..., siγ Fq — значения дефективных ячеек в этом блоке. Таким образом, необходимо закодировать m в вектор c Fnq так, чтобы c|τ = (si1 , ..., siγ ). Если удается найти такой кодовый вектор, будем говорить, что дефекты «замаскированы».
Рассмотрим матрицу G вида (6.3), которая использовалась в методе кодового зашумления. Здесь правило кодирования Encode имеет вид:
c = Encode(r, m) = (r, m)G = (r, rP + m). |
(7.3) |
Важное отличие от (6.4) состоит в том, здесь параметр r подбирается так, чтобы значения координат вектора c вида (7.3) с номерами из τ совпали с соответствующими значениями sij дефективных ячеек, то есть
r = g |
◦ |
s |
− |
|
(7.4) |
arg wt(Encode(g, m) |
|
|
Encode(g, m)) = 0 . |
|
Извлечение информационного вектора из c, как и в методе кодового зашумления, заключается в умножении c на проверочную матрицу H0 = [−P T |Ik] кода C0 в систематическом виде:
Decode(c) = cH0T = m. |
(7.5) |
7.4. Устойчивость к дефектам
Правило кодирования (7.3) перепишем в виде c = rG0 + (0n−k, m). Так
как c|τ = (si1 , ..., siγ ) = (rG0 + (0n−k, m))|τ , то нахождение r состоит в решении уравнения
rG0|τ = (si1 , ..., siγ ) − (0n−k, m)|τ
относительно неизвестного r. Это уравнение всегда имеет решение, если rank(G0|τ ) = γ.
Определение 6. Говорят, что метод защиты с правилами кодирования и декодирования (7.3) и (7.5) соответственно устойчив к любым γ и менее дефективным ячейкам в блоке из n ячеек, если rank(G0|τ ) = γ
71
Глава 7. Схема защиты в канале с дефектами
для любого τ [n], |τ| = γ.
Из этого определения и теоремы 1 вытекает следующая теорема.
Теорема 10. Пусть C0 — [n, n−k]q-код, C0 — его дуальный [n, k, d ]q- код. Метод защиты с правилами кодирования и декодирования (7.3) и (7.5) соответственно устойчив к любым γ и менее дефективным ячейкам в блоке из n ячеек, если γ < d .
7.5. Пример
Пусть n = 4, а [5, 2]4-код C0 F54 задан порождающей матрицей вида
G0 |
= |
0 |
0 |
1 |
α |
α + 1 |
= |
0 |
0 |
1 |
α |
α + 1 . |
|
|
|
0 |
1 |
1 |
1 |
1 |
|
0 |
1 |
1 |
1 |
1 |
|
|
|
1 |
0 |
1 |
α2 |
(α + 1)2 |
|
1 |
0 |
1 |
α + 1 |
α |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Проверочная матрица H0 этого кода имеет вид:
"#
H0 |
= 0 |
1 |
1 |
1 |
1 . |
|
1 |
0 |
1 |
α |
α + 1 |
Так любые два столбца матрицы H0 линейно независимы, причем первые три столбца линейно зависимы, то кодовое расстояние d кода C равно 3. Отметим, что так как в (1.6) выполняется равенство, то C — МДР-код. Из теоремы 3 вытекает, что C0 – также МДР-код с кодовым расстоянием d = 4. По теореме 10 получаем, что метод защиты с правилами кодирования и декодирования (7.3) и (7.5) соответственно устойчив к любым γ 3 дефектам в блоке из 5 ячеек.
7.6. Способ кодирования для канала с дефектами и ошибками
Рассмотрим более общий случай, когда в (7.2) вектор ошибок e имеет ненулевой вес. Защита может строиться на основе метода, описанного в разделе 6.5. Именно, пусть C0 Fnq и C1 Fnq — линейные блоковые коды размерности l и k соответственно, G0 и G1 — их соответствующие порож-
дающие матрицы, — матрица вида (6.8), ˜ — такая × -матрица,
G G1 (k n)
72
7.7. Устойчивость к дефектам и ошибкам
˜T |
˜T |
= O. |
что G1G1 |
= Ik и G0G1 |
Способ кодирования Encode вектора m Fk в вектор c C имеет вид:
˜ |
+ mG1, |
(7.6) |
c = Encode(r, m) = (r, m)G = rG0 |
причем r подбирается так, чтобы минимизировать wt(c ◦ s − c), то есть
r = |
g |
◦ |
s |
− |
|
(7.7) |
|
argmin wt(Encode(g, m) |
|
|
Encode(g, m)) , |
|
где s — вектор состояний n ячеек (см. (7.2)). Стоит отметить, что в отличии от (7.4), в (7.7) уже не требуется, чтобы c совпадал с вектором s в местах дефективных ячеек, а требуется только минимизация числа несовпадений. Это связано с тем, что C — это уже не все пространство, как в случае борьбы только с дефектами, а подпространство — то есть линейный блоковый код, кодовое расстояние которого может позволить исправить ошибки, возникающие, в том числе, по причине наличия незамаскированных дефектов.
Алгоритм декодирования Decode состоит из двух этапов: 1) принятый из ЦКПД (считанный из памяти с дефектами) вектор
y = c ◦ s + e |
(7.8) |
декодируется с помощью подходящего декодера dec для кода C в кодовый вектор c˜; 2) далее выполняется извлечение информационного вектора из
кодового: ˜ ˜ ˜T . Таким образом, на первом этапе выполняется попыт- m = cG1
ка исправить ошибки, с одной стороны, внесенные за счет невозможности путем выбора r «замаскировать» все дефекты, описываемые вектором s, а с другой стороны, за счет ошибок e. Алгоритм Decode запишем в виде
˜T |
, |
(7.9) |
Decode(y) = dec(y)G1 |
В качестве декодера dec может быть, например, декодер ISDDecoder, приведенный в алгоритме 3.
7.7. Устойчивость к дефектам и ошибкам
В [13] доказана следующая теорема.
Теорема 11. Пусть Encode и Decode — правила кодирования и деко-
73
Глава 7. Схема защиты в канале с дефектами
дирования для канала с дефектами и ошибками вида (7.6) и (7.9) соответственно. Пусть d — кодовое расстояние кода C, d0 — кодовое расстояние кода C0 . Метод защиты с правилами Encode и Decode обеспечивает защиту от ν дефектов и t ошибок, если
(ν < d0, t (d − 1)/2 ) или (ν d0, 2(ν − d0 + 1 + t) < d).
Доказательство. Пусть τ — множество номеров дефективных ячеек, описываемых состоянием s, ν = |τ|. Из теоремы 1 вытекает, что в матрице G0 любые d0 − 1 и менее столбцов линейно независимы. Следовательно это гарантирует, что при |τ| d0 − 1 система rG0|τ = s|τ − mG1|τ всегда имеет решение относительно неизвестного r. Таким образом, любые ν < d0 дефектов могут быть «замаскированы» за счет выбора r. Число исправляемых ошибок t вытекает из теоремы 7 при p = 0.
Если дефектов ν больше d0 − 1, то гарантированно «замаскировать» можно только d0 − 1 из них. Следовательно остальные ν − d0 + 1 дефектов в общем случае вносят ошибки в кодовый вектор. Чтобы эти ошибки и t ошибок (вектор e в (7.8)), добавляемых при считывании, были гарантированно исправлены, необходимо, чтобы ν − d0 + 1 + t (d − 1)/2 . 
7.8. Пример
Рассмотрим множество булевых функций от m переменных F2[x1, ..., xm], где каждая функция f(x1, ..., xm) представлена многочленом Жегалкина
α=(a1 |
,Mm F2 |
...xmam, gαf F2. |
|
f(x1, ..., xm) = |
gaf x1a1 |
(7.10) |
...,a ) m
Множество всех мономов от m переменных
M(m) = {1, x1, ..., xm, x1x2, ..., xm−1xm, ..., x1...xm}
является базисом в F2[x1, ..., xm]. Длиной монома обычно называется число переменных в нем, а степенью deg(f) функции f = f(x1, ..., xm) называется максимальная длина ненулевого монома в представлении (7.10). Определим оператор eval : F2[x1, ..., xm] → F22m, действующий по правилу:
eval(f) = (f(α1), f(α2), ..., f(α2m)),
74
7.9. Вопросы для самоконтроля
где {α1, ..., α2m} – множество Fm2 с зафиксированным порядком на его элементах, например, лексикографическим порядком.
Для r m множество
RM(r, m) = {eval(f) : f Fm2 , deg(f) r}
= L{eval(g) : g M(m), 0 deg(g) r},
называется кодом Рида-Маллера порядка r; является [n, k, d]2-кодом, где
r
n = 2m, k = X mi , d = 2m−r.
i=0
Из определения вытекает, что RM(r, m) RM(r + 1, m) при r < m. Также известно, что RM(r, m) = RM(m−r−1, m).
Для борьбы с дефектами и ошибками положим C0 = RM(l, m), C = RM(r, m), l < r. Отметим, что
C1 = L{eval(g) : g M(m), l < deg(g) r}, C0 = RM(m − l − 1, m).
Из теоремы 11 вытекает, что в этом случае могут быть «замаскированы» ν дефектов и исправлены t ошибок, если
ν < 2l+1, t (2m−r − 1)/2 = 2m−r−1 − 1,
или
ν 2l+1, ν + t < 2m−r−1 + 2l+1 − 1.
7.9. Вопросы для самоконтроля
1.Математическая модель канала с дефектами.
2.Способ кодирования для канала с дефектами.
3.Устойчивость к дефектам.
4.Способ кодирования для канала с дефектами и ошибками.
5.Устойчивость к дефектам и ошибкам.
75
Глава 8
Схема разделения секрета
8.1. Постановка задачи
Рассмотрим следующую задачу. Алисе и Бобу (сестра и брат) родители подарили по килограмму конфет: арахис в шоколаде. У Алисы и у Боба комнаты не запираются, поэтому каждый из них может сжульничать: в отсутствии Алисы Боб может взять конфеты из ее подарка, Алиса может проделать то же самое с подарком Боба. Так как конфеты мелкие, то контролировать путем пересчета утомительно. Чтобы Алиса и Боб не ссорились, родители купили сейф с цифровым кодовым замком, и придумали такую схему доступа к пакетам с конфетами (пакеты находятся в сейфе). Каждый день родители устанавливают новый пароль, записывают его на клочке бумаги, разрезают этот клочок пополам, одну половину отдают Алисе, другую – Бобу. (Считается, что свои части пароля Алиса и Боб хранят надежно, например, запоминают, а клочки сжигают в камине.) Когда Алиса и Боб захотят взять конфеты, им нужно вместе подойти к сейфу и набрать свои части пароля. Сейф откроется, и каждый из своего пакета может взять столько конфет, сколько требуется. При этом каждый может контролировать действия другого, поэтому из чужого пакета взять конфеты незаметно не получится. После закрытия сейфа, он блокируется до установки нового пароля (это делается для того, чтобы Алиса и Боб не могли сжульничать, так как после первого раза, когда вводится пароль, он становится известным обоим). Алиса и Боб могут по отдельности пытаться подобрать значения частей друг друга. Чтобы исключить эту ситуацию, сейф настроен на блокировку при неправильном вводе пароля. Разблоки-
76
8.1. Постановка задачи
ровать сейф могут только родители.
Подобные схемы могут применяться и в других прикладных задачах. Например, пусть для шифрования сообщений, которые из центра управления разведывательной сетью (ЦУРС) передаются агентам (разведчикам), используется поточный шифр с длиной ключа 128 битов. В целях безопасности в центре было принято решение: один сотрудник ЦУРС не может отдавать команды агенту, а могут только два сотрудника: Сотрудник 1 и Сотрудник 2. Для этого ключ разбивается на две части по 64 бита, и, только собравшись вместе, оба сотрудника могут отправить шифрованную команду агенту.
В этих примерах секреты разбиваются: каждый из участников знает часть секрета. Например, если доступ к сейфу ограничен цифровым паролем длины 4, то Алиса, когда получит от родителей свою часть, узнает 2 символа этого пароля: её шанс угадать весь пароль — один из 102, а не один из 104, как в случае, когда родители установили новый пароль, но еще не раздали части детям. Аналогично и в случае с сотрудниками ЦУРС: каждый из них знает 64 бита ключа, а остальную часть можно попытаться перебрать, например, так. Когда первый раз отправляется команда, оба участника незаметно друг от друга вводят свою часть ключа. После отправки этой команды недобросовестный сотрудник (нарушитель) перехватывает шифрованное сообщение, а затем у себя дома, или в офисе организации, которая его подкупила, выполняется перебор неизвестной части ключа, на каждом варианте выполняется расшифрование, и результат сравнивается с командой, которая бала отправлена (эта команда известна сотрудникам). Такая атака называется атакой на основе известного открытого текста. Перебрать нужно не более 264 вариантов. Для домашнего компьютера эта сложная задача, но для не очень дорогого кластера — посильная.
Возникает вопрос, а можно ли так разделить секрет на части, чтобы по своей части каждый из участников ничего нового не узнал о секрете, но при этом, собравшись вместе, все участники, смогли однозначно найти секрет. Применительно к рассмотренным примерам этот вопрос можно сформулировать так: существует ли такая схема распределения секрета, что у Алисы, которой известна ее часть, шанс угадать пароль будет один из 104, а у недобросовестного сотрудника разведывательного центра шанс подобрать
77
Глава 8. Схема разделения секрета
ключ — один из 2128. Такие схемы называются схемами разделения секрета (СРС).
8.2. Схемы разделения секрета
Вобщем случае СРС представляет собой набор
Ω= (P, D, X, Y, Share, Recon, Γ(Ω), A(ω)),
где
•P — множество участников, среди которых распределяются части секрета, называемые долями; в примере с конфетами P = {Алиса, Боб},
впримере с агентами P = {Сотрудник 1, Сотрудник 2}; обычно множество P отождествляют с [n]; любое подмножество участников из P называется коалицией;
•D — дилер — это участник, который не из P; он владеет секретом, строит по нему доли для каждого участника и передает им; в примере с конфетами D — родители, в примере с агентами D — это, например, руководитель центра;
•X — множество значений секретов; в примере с конфетами X = {0, ..., 9}4,
впримере с агентами X = {0, 1}128;
•Y — множество значений долей секретов;
•Share : X → Yn — протокол разделения секрета, который по значению секрета формирует n долей;
•Recon : Yt → X — протокол восстановления секрета, который по значению t долей формирует значение из X;
•Γ(Ω) 2P — структура доступа — множество всех таких коалиций, которые могут однозначно восстановить исходный секрет; одним из требований является принадлежность P структуре доступа: чтобы все участники вместе могли восстановить секрет;
•A(Ω) 2P — структура противника — множество всех таких коалиций, которые по своим долям в совокупности не получают новой ин-
78
8.3. Линейная СРС
формации о секрете (как в случае, когда этим участникам не сообщают их доли вовсе).
Очевидно, что
Γ(Ω) ∩ A(Ω) =
и Γ(Ω) A(Ω) 2P. Случай Γ(Ω) A(Ω) ̸= 2P означает, что существуют такие коалиции, которые по совокупности долей однозначно не могут восстановить секрет, но при этом получают новую информацию о секрете. Получение новой информации о секрете может означать, что множество вариантов для перебора сокращается. Если в A(Ω) входят все коалиции мощности k − 1 и их подмножества, а в Γ(Ω)) входят все коалиции мощности k и их надмножества, то такая СРС называется пороговой (n, k)-схемой.
Если A Γ(Ω), то из A B вытекает, что B Γ(Ω). Определим множество ∆(Γ(Ω)), называемое минимальной структурой доступа:
∆(Γ(Ω)) = {A Γ(Ω) : A0 ̸ Γ(Ω) A0 A}. |
(8.1) |
8.3. Линейная СРС
Пусть n, d n, e N. Рассмотрим (r × e)-матрицу M = (mi)ri=1 над полем Fq, mi Feq, такую, что e = (1, 0, ..., 0) L(M). Пусть также
ψ: {1, ..., r} → {1, ..., n}
—некоторое сюрьективное отображение, назначением которого является «присвоение» меток строкам матрицы M. Именно, множество строк матрицы M распадается на n классов, каждый из которых соответствует одному из участников множества. Через M(A) здесь будем обозначать множество строк матрицы M с номерами i, где ψ(i) A. Говорят, что четверка
M = (Fq, M, e, ψ) задает монотонную порождающую программу (МПП).
Например, при n = 3 и r = 8 отображение
ψ(i) = 1 + ((i − 1) mod 3) |
(8.2) |
разбивает множество [8] на три класса: {1, 4, 7}, {2, 5, 8}, {3, 6}. Для этого
79
Глава 8. Схема разделения секрета
ψ и, например, матрицы M вида
T |
|
1 1 |
0 |
1 0 |
1 |
1 |
1 |
|
|
||
|
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
|
|
M |
= |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
, |
(8.3) |
|
|
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
четверка задает МПП (F2, M, (1, 0, 0, 0), ψ). Если матрица M′ получена из M удалением последней строки, то (F2, M′, (1, 0, 0, 0), ψ′) не задает МПП ни для одного ψ′, так как (1, 0, 0, 0) ̸ (LM′).
Определение 7. Линейной схемой разделения секрета (ЛСРС) называется картеж
Ω = (P, D, Share, Recon, Fq, Γ(Ω), A(Ω)), |
(8.4) |
где протоколы Share и Recon основаны на использовании общедоступной МПП M = (Fq, M, e, ψ), где M = (mi)ri=1.
В протоколе Share дилером D для секрета s Fq случайно и равновероятно выбирается вектор p Feq−1 и формируется вектор из Feq вида:
b = (s, p). |
(8.5) |
Долей секрета j-ого участника, где j P, является набор |
|
x(j) = (xa = ma, b : a ψ−1(j)). |
(8.6) |
В протоколе Recon для восстановления коалицией A P секрета сначала находится матрица M(A) = M|TA, где TA = {i1, ..., il}( [r]) — множество номеров строк матрицы M, соответствующее коалиции A:
[
TA = ψ−1(j).
j A
Далее коалицией находится решение y = (yi1 , ..., yil) уравнения: |
|
yM|TA = (1, 0, ..., 0) Fqe. |
(8.7) |
80
