Некоторые приложения теории кодирования. Учебное пособие
.pdf
6.5. Защита от утечки и искажений. Обобщенное кодовое зашумление
ве кода C0 с правилами кодирования и извлечения соответственно (6.4) и (6.5) обеспечивает совершенную секретность, если в кодовом слове стерто µ > 7 − d = 3 координат. При использовании этого кода возможна организация распределенного хранения конфиденциальной информации на 7 узлах, когда на узле i [7] хранится координата кодового слова с номером i. Если нарушитель получает доступ к трем или менее узлам, то нарушение конфиденциальности не происходит.
6.5. Защита от утечки и искажений. Обобщенное кодовое зашумление
Рассмотрим модель передачи данных, когда Ch1 — канал, в котором стираются любые ν [n] координат, Ch2 — канал, в котором стираются любые µ [n] координат, ν < µ. Таким образом, наблюдателю известны значения n − µ координат передаваемого сообщения, а легитимному получателю известны значения n −ν координат. В этом случае, кроме обеспечения конфиденциальности передаваемой информации, требуется обеспечить возможность исправления ν стираний на стороне получателя. Такая постановка задачи может соответствовать ситуации, когда конфиденциальные данные хранятся в распределенном сетевом хранилище, построенном на базе n узлов, из которых не более ν могут выйти из строя, и не более n − µ доступны нарушителю.
Метод защиты в этом случае может основываться на обобщенном кодовом зашумлении. Опишем этот способ. Пусть C0 Fnq и C1 Fnq — подпространства размерности l и k соответственно, причем C0 ∩ C1 = 0n. Эти подпространства можно рассматривать как линейные блоковые коды соответствующей размерности. Пусть G0 и G1 — порождающие матрицы кодов C0 и C1 соответственно. Матрица
G = |
"G1# |
(6.8) |
|
G0 |
|
является порождающей матрицей [n, l + k]q-кода
C = C0 + C1 = {c0 + c1 : c0 C0, c1 C1}.
61
Глава 6. Схема защиты в канале с утечкой
Проверочная матрица H кода C имеет размеры r×n, причем r = n−(k+l). Из теоремы 5, в частности, вытекает, что строки H — это векторы любого базиса пространства L(H0) ∩ L(H1), где H0 и H1 — проверочные матрицы кодов C0 и C1 соответственно.
Множество кодируемых сообщений – это Fkq , а множество кодовых — C.
˜ |
˜T |
˜ |
Пусть G1 — такая (k |
× n)-матрица, что G1G1 |
= Ik (G1 — псевдообратная |
˜T |
˜ |
|
к G1) и G0G1 = O. Матрица G1 будет использоваться для извлечения |
||
|
|
˜ |
информационного вектора из кодового. Покажем, что такая матрица G1 |
||
существует, и она может быть эффективно построена. |
||
˜ |
на основе проверочной матрицы H0 кода C0, которая |
|
Будем строить G1 |
||
имеет размер (n − l) × n. Так как l n − k, то n − l k. Из вида (6.8) получаем:
" #
GHT = O
0 G1H0T
Покажем, что rank(G1H0T ) = k. Предположим, что это не так, тогда существует такая k × k-матрица U = (ui)ki=1 ранга k (матрица линейных преобразований), состоящая из строк ui, i = 1, ..., k, что
|
|
|
u1G1H0T |
|
T |
= |
u2G1H0T |
||
UG1H0 |
|
. |
. |
|
|
|
|
T |
|
|
|
ukG1H0 = 0n−l |
|
|
|
|
|
|
|
Это означает, что ненулевой вектор ukG1 принадлежит C0. Но это противоречит тому, что C0 ∩ C1 = 0n. Следовательно, rank(G1H0T ) = k. Поэтому существует такая (n − l) × k-матрица M, что G1H0T M = Ik. В качестве
матрицы ˜ можно выбрать матрицу
G1
˜ |
T |
H0. |
G1 |
= M |
Правило кодирования сообщения m Fkq для защиты от искажений и утечки имеет вид:
c = Encode(r, m) = (r, m)G = rG0 + mG1, r ← Flq.
Пусть z = Ch1(c) — вектор, принятый легитимным получателем, в котором
62
6.6. Стойкость обобщенного кодового зашумления
не более ν стираний. Правило декодирования имеет вид: |
|
˜ |
(6.9) |
Decode(z) = dec(z)G1, |
где dec — алгоритм исправления стираний, например, декодер ErasureDecoder (см. алгоритм 2).
6.6. Стойкость обобщенного кодового зашумления
Пусть v = Ch2(c) — вектор, принятый наблюдателем (нарушителем), в котором µ стираний. Обозначим через τ множество номеров стертых координат канале Ch2, а через τ = [n] \ τ — множеств номеров нестертых координат, |τ| = µ, τ = n − µ. Отметим, что v|τ = c|τ . Правило извлечения (6.9) перепишем в виде:
|
|
|
|
˜ |
|
T |
|
|
|
|
˜ |
|
|
|
T |
|
|
|
|
|
|
|
c|τ (G1 |
|τ ) |
|
+ c| |
τ |
(G1| |
τ |
) |
|
= m. |
|
||||
Так как c C, то также должно выполняться следующее условие: |
||||||||||||||||||
|
|
|
|
c|τ (H|τ )T + c| |
|
(H| |
|
)T = 0r. |
(6.10) |
|||||||||
τ |
τ |
|||||||||||||||||
Обозначим |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
R = rank(H|τ ), |
|
(6.11) |
|||||||||||
b = −c| |
|
(H| |
|
)T , и пусть C(a) = {y Fqµ |
: y(H|τ )T |
= a} для a Fqr. |
||||||||||||
τ |
τ |
|||||||||||||||||
Заметим, что при R = r для каждого a Frq множество C(a) непусто; в случае R < r найдется такое a, что система yH|Tτ = a не будет иметь решения относительно неизвестного y. Если же система имеет решение, то
|C(a)| = qµ−R,
так как в этой системе µ неизвестных и R линейно независимых уравнений. Таким образом, для построения множества претендентов M(τ, z), необходимо перебирать не все множество Fµq , как в случае, когда ошибок в ка-
нале Ch1 нет, а множество C(b). Поэтому
˜ |
T |
: p C(b)}|. |
|M(τ, z)| = |{p(G1|τ ) |
|
Найдем величину |M(τ, z)|, которая и будет характеризовать стойкость
63
Глава 6. Схема защиты в канале с утечкой
обобщенного кодового зашумления: чем больше эта величина, тем меньше вероятность угадать исходное сообщение, когда все сообщения из M(τ, z) равновероятны (когда у наблюдателя нет оснований отдать предпочтение какому-то одному претенденту или подмножеству претендентов). Отметим,
что разные векторы из C(b) при умножении на матрицу |
˜ |
T |
могут |
(G1|τ ) |
|
||
давать один и тот же вектор, поэтому |M(τ, z)| |C(b)|. |
|
|
|
Для описания подмножеств векторов из C(b), которые при умножении
˜ |
|τ ) |
T |
дают одинаковые, соответствующие этим подмножествам векто- |
|
на (G1 |
|
|||
ры из Fqk, рассмотрим подпространство D Fqµ вида: |
|
|||
|
|
|
D = C(0r) \{g Fqµ : g(G˜1|τ )T = 0k}. |
(6.12) |
Заметим, что D — подпространство пространства C(0r), поэтому существует такое подпространство W C(0r), что D ∩W = {0µ} и D + W = C(0r). Пространство C(0) можно представить в виде объединения непересекающихся классов:
[
C(0r) = (h + D).
h W
Множество таких классов называется еще фактор-множеством и обозначается C(0)/D. Так как все классы равномощны, то |C(0)/D| = qµ−R/qdim(D) = qµ−R−dim(D). Заметим, что если g, v (h + D), то
˜ T |
˜ T |
˜ T |
gG1|τ |
= vG1|τ |
= hG1|τ . |
Так как C(b) = p + C(0r), то
[
C(b) = (p + h + D),
h W
откуда получаем, что |M(τ, z)| = qµ−R−dim(D).
Теорема 9. Пусть Encode и Decode — правила кодирования и декодирования для канала с утечкой, ν – число стираний в канале Ch1, τ —
множество номеров стертых координат в канале Ch2, |τ| = µ, R определено в (6.11), D имеет вид (6.12), d — кодовое расстояние кода с по-
рождающей матрицей (6.8). Обобщенное кодовое зашумление обеспечивает совершенную защиту от наблюдателя и защиту от стираний, если k = µ − R − dim(D) для любого τ мощности µ и ν d − 1.
64
6.7. Пример
6.7. Пример
Пусть l = 3, k = 1, а коды C0 F72 и C1 F72 заданы порождающими
матрицами соответственно |
|
1 1 |
|
|
||||||
G0 |
= |
0 1 0 |
1 0 |
, G1 = |
1 1 1 1 1 1 1 . |
|||||
|
|
1 |
0 |
0 |
0 |
1 |
1 |
1 |
h |
i |
|
|
0 |
0 |
1 |
1 |
1 |
0 |
1 |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Из систематического вида порождающих матриц получаем вид провероч-
ных матриц кодов C0 и C1: |
|
|
|
1 0 1 0 0 0 0 |
||||||||||
|
|
|
0 1 1 1 0 0 0 |
|
|
|
||||||||
|
|
= 1 0 1 0 1 0 0 , H |
|
|
|
1 |
1 |
0 |
0 |
0 |
0 |
0 |
||
H |
|
|
= |
1 0 0 1 0 0 0 . |
||||||||||
|
0 |
|
1 1 0 0 0 1 0 |
|
1 |
|
|
|
|
|
0 1 |
0 |
|
|
|
|
|
|
|
|
1 0 0 |
0 |
|||||||
|
|
|
|
|
|
1 0 0 |
0 0 |
1 |
|
|||||
|
|
1 1 1 0 0 0 1 |
|
|
|
0 |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
0 |
0 |
0 |
0 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Порождающая и проверочная матрица кода C = C0 + C1 имеют соответственно вид:
|
0 1 0 |
1 0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
|||
|
1 |
0 |
0 |
0 |
1 |
1 |
1 |
, H = 1 0 1 |
|
|
|
0 . |
||
G = |
0 0 1 |
1 1 |
0 |
1 |
1 |
0 |
1 |
|||||||
|
1 |
1 |
1 |
0 |
0 |
0 |
1 |
|||||||
|
1 1 1 |
1 1 |
1 |
1 |
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Для извлечения информационного вектора из кодового, можно взять матрицу
hi
˜
G1 = 1 1 1 1 1 1 1 .
Нетрудно видеть, что кодовое расстояние кода C равно трем, поэтому этот код позволяет обеспечить защиту от двух и менее стираний в канале Ch1.
Сначала рассмотрим случай, когда τ = {1, 3, 4, 6} (множество номеров
65
Глава 6. Схема защиты в канале с утечкой
ненаблюдаемых координат). Найдем C(03), то есть все решения уравнения
T |
0 |
1 |
1 |
|
|
1 |
1 |
1 |
|
y(H|τ ) = y |
1 1 0 |
= 03. |
||
|
0 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
Так как R = rank(H|τ ) = 4, то C(03) = {(0, 0, 0, 0), (1, 1, 1, 1)}. Из (6.12) получаем, что множество
{g[1 1 1 1]T = 01 : g F42}
состоит только из векторов длины 4 четного веса. Поэтому D = C(03), dim(D) = 1. По теореме 9, имеем: |M(τ, z)| = 24−3−1 = 1. Следовательно, если наблюдатель получает доступ к битам с номерами из множества τ = {2, 5, 7}, то множество претендентов состоит только из одного возможного вектора. Действительно, при кодировании сообщения m = (0) F12, значения битов кодовых слов на координатах {2, 5, 7} могут образовывать одно из четырех значений множества
A0 = {(0, 0, 0), (0, 1, 1), (1, 0, 1), (1, 1, 0)},
а при кодировании m = (1) F12 — одно из четырех значений множества
A1 = 13 + A0 = {(1, 1, 1), (1, 0, 0), (0, 1, 0), (0, 0, 1)}.
Так как A0 ∩A1 = , то по наблюдаемым значениям координат с номерами из {2, 5, 7} однозначно определяется кодируемое сообщение.
Пусть теперь τ = {1, 3, 4, 5, 6}. Множество C(03), как множество решений системы уравнений
|
|
0 |
1 |
1 |
|
|
|
1 |
1 |
1 |
|
y(H |
τ )T = y |
1 1 0 |
= 03, |
||
| |
|
|
1 |
|
|
|
|
0 |
0 |
|
|
|
|
|
|
|
|
|
|
1 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
имеет вид: C(03) = {(0, 0, 0, 0, 0), (1, 1, 1, 1, 0), (0, 0, 1, 1, 1), (1, 1, 0, 0, 1)}, а
66
6.8. Вопросы для самоконтроля
множество {g[1 1 1 1 1]T |
= 01 : g F25} состоит только из векторов длины |
|||||
5 четного веса. Поэтому D = {(0, 0, |
0, 0, 0), (1, 1, 1, 1, 0)}, dim(D) = 1. Так |
|||||
как |
R = 3 |
, то |M |
(τ, z) |
| |
= 25−3−1 = 2 |
. |
|
|
|
|
|||
6.8. Вопросы для самоконтроля
1.Защита от утечки. Кодовое зашумление.
2.Стойкость кодового зашумления.
3.Защита от утечки и искажений. Обобщенное кодовое зашумление.
4.Стойкость обобщенного кодового зашумления.
67
Глава 7
Схема защиты в канале с дефектами
7.1. Постановка задачи
Рассмотрим q-ичный ЦКПД во времени, или иначе — систему хранения информации, где каждая ячейка памяти позволяет хранить значение из поля Fq. В таких системах кроме ошибок (например, изменился уровень намагниченности, приводящий к считыванию неправильного значений) и стираний (например, ячейка памяти сгорела и данные из нее не считываются), возникающих при считывании данных, могут появляться дефективные ячейки (дефекты). Дефективной ячейкой считается такая, значение s Fq которой зафиксировано и не может быть изменено при перезаписи. Еще такие ячейки называют «застрявшими». В общих случаях рассматриваются также частично «застрявшие» ячейки, когда значение такой ячейки при перезаписи может быть изменено на большее, а изменение в меньшую сторону невозможно (при условии, когда на элементах поля Fq задан порядок). В пособии рассматривается только случай «застрявших» ячеек.
Для ЦКПД с дефективными ячейками задачей является разработка способа кодирования, позволяющего записывать и считывать данные при условии, что на каждые n ячеек приходится не более γ дефективных.
7.2. Математическая модель канала с дефектами
При описании модели канала будем подразумевать, что это канал во
времени, то есть система хранения. Определим символ и ˜ { }.
λ Fq = Fq λ
Элементы множества ˜ предназначены для описания одной
Fq состояния
68
7.2. Математическая модель канала с дефектами
ячейки памяти: состояние s = λ означает, что в эту ячейку может быть записано любое значение из Fq, а состояние s Fq означает, что ячейка «застряла» в значении s и это значение не может быть изменено при записи. Для удобства можно определить оператор «◦» вида:
◦ × ˜ →
: Fq Fq Fq,
действующий по правилу
(
x, s = λ,
x ◦ s =
s, s ̸= λ.
Таким образом, если в ячейку памяти требуется записать значение x, то после операции записи ячейка будет хранить x, если состояние s этой ячейки до записи не является дефективным (s = λ), или будет хранить значение s Fq, если ячейка является «застрявшей» в значении s.
В случае записи вектора x Fnq в память, состоящую из n ячеек, результат записи может быть представлен в виде:
|
y = x ◦ s, |
˜n |
описывает состояние n ячеек. |
где вектор s = (s1, ..., sn) Fq |
Более общей моделью является случай дополнительного наличия ошибок двух видов: 1) ошибок, возникающих в самом векторе x перед записью в память; 2) ошибок, возникающих при считывании вектора из памяти. Ошибки первого вида, могут возникать, например, в случае, когда x формируется в вычислительном устройстве (ВУ), а затем по шине данных передается в устройство хранения (УХ). Неисправность шины или помехи могут приводить к тому, что переданные из ВУ данные отличаются от принятых на стороне УХ. Ошибки второго вида — это ошибки, возникающие как при передаче по шине данных из УХ к ВУ, так в результате искажения сигналов (например, ослабления сигналов), хранимых в ячейках памяти.
Поэтому результат считывания данных из канала с дефектами и ошиб-
ками можно представить в виде: |
|
y = (x + e1) ◦ s + e2, |
(7.1) |
где e1 = (e1,1, ..., e1,n) Fqn — ошибка первого вида, e2 |
= (e2,1, ..., e2,n) |
69
Глава 7. Схема защиты в канале с дефектами
Fnq — ошибка второго вида. Отметим, что в такой модели ошибки могут возникать и в «застрявших» ячейках за счет вектора ошибок e2.
Пусть τ = {i [n] : si ̸= λ} — множество номеров дефективных ячеек. Векторы (x + e1) ◦ s и x ◦ s в координатах с номерами из τ совпадают:
(x ◦ s)|τ = ((x + e1) ◦ s)|τ = s|τ .
Пусть e′1 = (x + e1) ◦s −x ◦s. Тогда (x + e1) ◦s = x ◦s + e′1. Следовательно, положив e = e′1 + e2, равенство (7.1) всегда можно переписать в виде
y = x ◦ s + e. |
(7.2) |
Рассмотрим пример. Пусть F4 = {0, 1, α, α + 1}. В этом поле операции сложения
и умножения
задаются таблицами
|
|
|
|
0 |
1 |
α |
α + 1 |
|
|
|
|
||||
|
|
|
|
|
|
||
0 |
|
0 |
1 |
α |
α + 1 |
||
|
|
|
|
|
|
||
1 |
|
1 |
0 |
α + 1 |
α |
||
|
|
|
|
|
|
||
|
α |
α |
α + 1 |
0 |
1 |
||
|
|
|
|
|
|||
α + 1 |
α + 1 |
α |
1 |
0 |
|||
|
|
|
|
|
|
|
|
|
0 |
1 |
α |
α + 1 |
|
|
|
|
|
0 |
0 |
0 |
0 |
0 |
|
|
|
|
|
1 |
0 |
1 |
α |
α + 1 |
|
|
|
|
|
α |
0 |
α |
α + 1 |
1 |
|
|
|
|
|
α + 1 |
0 |
α + 1 |
1 |
α |
|
|
|
|
|
Рассмотрим векторное пространство F54. Пусть x = 15 — записываемый в память вектор, s = (α + 1, λ, 0, λ, λ) — вектор состояния ячеек памяти,
e1 = (0, 0, α + 1, 0, 1) и e2 = (α, 0, 0, 1, 0) — векторы ошибок первого и второго вида. Тогда из (7.1) получаем:
y= (15 + (0, 0, α + 1, 0, 1)) ◦ (α + 1, λ, 0, λ, λ) + (α, 0, 0, 1, 0)
=(1, 1, α, 1, 0) ◦ (α + 1, λ, 0, λ, λ) + (α, 0, 0, 1, 0)
=(α + 1, 1, 0, 1, 0) + (α, 0, 0, 1, 0) = (1, 1, 0, 0, 0).
Из (7.2) вытекает, что вектор y может быть представлен в виде:
y = 15 ◦ (α + 1, λ, 0, λ, λ) + (α, 1, 0, 1, 1) = (1, 1, 0, 0, 0).
7.3. Способ кодирования для канала с дефектами
Рассмотрим случай, когда в канале с дефектами нет ошибок, то есть в (7.2) вектор ошибок имеет нулевой вес. Пусть C0 — систематический
70
