Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Некоторые приложения теории кодирования. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
1 Мб
Скачать

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

Пусть e1 = (x + e1) ◦s −x ◦s. Тогда (x + e1) ◦s = x ◦s + e1. Следовательно, положив e = e1 + 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]