
125 Кібербезпека / 4 Курс / 4.2_Управління інформаційною безпекою / Лiтература / V_P_Babak_A_A_Kliuchnykov-Teoreticheskye_osnovy_zashchity_informat
...pdf
ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ
Исправление до трех ошибок в принятом искаженном слове r с помощью LUT-декодера можно записать как
v r LUT(get_syndrome(r)),
где v - исправленное кодовое слово.
Полиномное помехоустойчивое кодирование. Двоичные коды Рида -
Маллера (РМ) образовывают семью кодов, которые исправляют ошибки, с простым декодированием, которое обосновывается на мажоритарной логике.
Известное определение двоичных кодов РМ обосновывается на двоичных полиномах (или булева функция). Согласно этому определению коды РМ становятся близкими к кодам, которые входят в класс полиномных кодов.
Булевые полиномные коды РМ. Обозначим f (x1, x2 ,..., xm ) булевую функцию от т двоичных сменных x1, x2 ,..., xm . Известно, что такие функции легко дать с помощью таблицы истинности. Таблица истинности содержит список значений функции f для всех 2m комбинаций значений ее аргумен-
тов. Все обычные булевые операции (такие как «и», «или») можно дать как булевые функции.
Пример 7.17. Рассмотрим функцию, заданную такой таблицей истинно-
сти:
х2 |
0 |
0 |
1 |
1 |
х1 |
0 |
1 |
0 |
1 |
f (х1 х2) |
0 |
1 |
1 |
0 |
Тогда имеем: f (x1, x2 ) (x1 & NOT (x2 )) (NOT (x1) & x2 ).
Ассоциируем с каждой булевой функцией f двоичный вектор f длины 2m , составленный из значений этой функции для всех возможных комбинаций значений т ее аргументов. В примере 7.17 сделано предположение о лексикографическом (арифметическом) упорядочении значений аргументов функции, т.е. x1 представляет собой младший разряд, а xm - старший разряд.
Заметим, что булевую функцию можно записать прямо по таблице истинности, воспользовавшись дизъюнктивной нормальной формой (ДНФ). В терминах ДНФ любую булевую функцию можно записать как сумму 2m эле-
ментарных функций 1, x1, x2 ,..., xm , x1x2 ,..., xm x1, x2 ,..., xm : |
|
f 1 α1x1 α2 x2 ... αm xm α12 x1x2 ... α12...m x1x2...xm , |
(7.42) |
где вектор 1 включен для того, чтобы вычислить составляющую (нулевой степени).
В примере 7.17. f x1 x2 . Двоичный (2m , k, 2m 2 ) код РМ, обозначенный PMr , m , определяется как множество векторов, которые ассоциируются со всеми булевыми функциями степени к r включительно от т сменных. Код
540

Глава 7. Кодирование информации
PM PM
r , m
r , m
называют также кодом РМ кода
k
r-го |
порядка длины 2m. |
Размерность |
|
r |
m |
(7.43) |
|
|
|
. |
|
i 0 |
i |
|
|
Это число равно количеству способов, которыми можно построить полиномы степени, не выше r, от т сменных.
С учетом уравнения (7.43) строками порождающей матрицы PMr , m кода
являются векторы, ассоциированные с k булевыми функциями, которые можно записать как полиномы степени, не высшего за r, от т сменных.
Пример 7.18. Код РМ PM1,3 первого порядка длины 8 является двоичным (8, 4, 4) кодом, который можно построить из булевых функций первой степени от трех сменных: 1, x1, x2 , x3 . Таким образом, имеем
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
x1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
x2 0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
|
x3 0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
Порождающая матрица PM1,3 |
кода |
|
|
|
|
|
|
||||
1 |
|
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
G x1 |
|
|
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 . |
(7.44) |
x |
|
|
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
|
2 |
|
|
|
|
|
|
|
|
|
|
|
x3 |
|
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
|
|
Заметим, что код PM1,3 |
можно построить также и из кода Хэмминга (7, |
4, 3) сложением общей проверки на парность. Расширенный код Хэмминга и PM1,3 код могут отличаться только порядком позиций (столбцов).
Дуальные коды кодов РМ. Можно показать, что PMm r 1,m дуальный код PMr ,m . Другими словами, порождающая матрица PMm r 1,m кода, может использоваться как проверочная матрица PMr ,m кода.
Определение кодов РМ можно дать и в терминах конечной геометрии. Геометрия Евклида EG(m, 2) размерности т над GF(2) содержит 2m точек,
которые представляют собой все двоичные векторы длины т. Заметим, что столбцы матрицы, образованной последними тремя строками порождающей матрицы PM1,3 кода, представляют собой 8 точек EG(3,2). Изъятием нуле-
вой точки это множество точек превращается в проективную геометрию
541

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ
PG(m 1, 2). Коды конечной геометрии являются, в сущности, обобщением
кодов PM .
Связь между кодами и конечной геометрией можно объяснить. Возьмем EG(m,2). Столбцы матрицы (x1T x2T ...xmT ) (где T - операция транспонирования матрицы) рассматриваются как координаты точек геометрии EG(m,2). Тогда существует взаимно однозначное соответствие между компонентами двоичного вектора длины 2m и точками EG(m,2). В частности, подмножество EG(m,2) можно ассоциировать с двоичным вектором w (w1, w2 ,..., wn ) длины n 2m , если интерпретировать значение его координат wi 1 как выбор
точки. Другими словами, w является вектором инцидентности (совпадений).
Кодовыми словами PMr , m кода РМ являются векторы инцидентности
всех подпространств (линейных комбинаций точек) размерности m r в EG(m,2). Из этого определения следует, что количества кодовых слов ми-
нимального веса PMr ,m кода
A m r |
m r 1 2m i 1 |
|
|
|||||
2r |
|
|
|
|
. |
(7.45) |
||
|
|
|
||||||
2 |
|
|
i 0 |
|
2m r i 1 |
|
||
Код, который образовывается после изъятия координат, которые отве- |
||||||||
чают условию x1 x2 ... xm 0, |
из всех кодовых слов PMr , m |
кода и явля- |
||||||
ются двоичным циклическим PM * |
r , m |
кодом. Количество слов минимального |
||||||
|
|
|
|
|
|
|
|
|
веса циклического кода РМ |
|
|
|
|
|
|
|
|
A |
|
m r 1 |
|
2m i 1 |
|
|
|
|
m r 1 |
|
|
|
. |
|
(7.46) |
||
|
|
|
||||||
2 |
|
|
i 0 |
2m r i 1 |
|
|
Декодирование РМ кодов можно выполнить на основе мажоритарной логики (МЛ). Идея мажоритарного декодирования состоит вот в чем. Как
известно, проверочная матрица порождает 2n k проверочных уравнений. Построение МЛ декодера сводится к выбору такого подмножества проверочных уравнений, чтобы решение о значении кодового символа на определенной позиции формировалось по большинству «голосов», причем каждый «голос» связан с одним из проверочных уравнений.
Коды Рида - Соломона. При построении кодов Рида - Соломона (РСкоды), исправляющих пакетные ошибки с разрядностью b, пакет разрядов
слова рассматривается как b-значный разряд, приобретающий одно из s 2b
значений (от 0 до s 1). В отличие от двоичных циклических кодов в этом случае в Н-матрице символами являются не 1 и 0, а подматрицы 0, І, hβ, где hβ определяется выражением
h |
f b 1 |
f b 2 ... |
f b b |
, |
(7.47) |
542

Глава 7. Кодирование информации
в котором f b i - столбец, который отвечает остатку от деления x b 1 на многочлен G(x) степени b; и - номер столбца в подматрице hβ; b - показатель степени матрицы, причем 1 2b 1.
Как образующий полином используется первоначальный полином степени b, обеспечивающий максимальное количество разных матриц hβ и рав-
ный 2b 1. Значение полиномов для типичных пакетов искажения приведены в табл. 7.14.
|
|
Таблица 7.14 |
|
|
|
Разрядность пакета искажений |
Образующий многочлен матриц hβ |
|
2 |
x2 |
x 1 |
4 |
x4 |
x 1 |
8 |
x8 x7 x6 x 1 |
Полученные матрицы вместе с нулевой (все ее элементы равняются нулю) образовывают поле матриц и так же, как и столбцы Н-матриц двоичных кодов, могут складываться и делиться. При сложении указанных матриц результат суммирования соответствующих символов вычисляется по модулю два. При сложении показатели степени матриц подытоживаются, а при об-
ратной процедуре - отнимаются по модулю 2b 1.
Например, Н-матрица РС-кода, который исправляет одиночные и находит двойные пакеты искажений, имеет такой вид:
I I ... |
I ... |
I I |
0 0 |
|
|
|||||
I h1 ... |
h j ... |
h2b 0 |
I 0 |
. |
(7.48) |
|||||
I h |
2 |
... |
h |
2 j |
... |
h |
2 2b |
0 0 I |
|
|
|
|
|
|
|
В этой матрице вторая строка (кроме трех последних подматриц) содержит подматрицы b b вида (7.48) всех степеней от трех до (2b 2).
Символы третьей строки (кроме трех последних) равняются квадратам соответствующих символов второй строки.
Длина РС-кодов - это количество двоичных информационных и контрольных символов, которая определяет количество символов в каждой строке Н-матрицы и определяется выражением
n b(2b 2).
При этом количество информационных разрядов K b(2b 1), а количество контрольных разрядов k 3b в двоичных символах или N (2b 2),
или K 2b 1, или K 3 в обобщенных b-разрядных символах. Причем, как и раньше, величина n(N ) определяет количество столбцов, а k(K ) — количество строк соответствующей Н-матрицы.
543

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ
Например, при b 4 имеем n 72, k 12, K 60. При b 2 имеем N 12, k 6. В последнем случае Н-матрица имеет вид (в обобщенных символах)
I |
I |
I |
I |
0 |
0 |
|
I |
I |
I |
I |
0 |
0 |
|
|
I |
h1 |
h2 |
0 |
I |
0 |
|
I |
h1 |
h2 |
0 |
I |
0 |
, |
(7.49) |
I |
h2 |
h4 |
0 |
0 |
I |
|
I |
h2 |
h1 |
0 |
0 |
I |
|
|
поскольку первая (нижняя) строка представляет собой квадрат второго, а максимальная степень подматриц вида (7.48) не должна превышать 2b 1,
откуда 4mod(2b 1) 4mod3 1.
Полученная H-матрица размером в 12 столбцов и 6 строк (в двоичных символах) или в 6 столбцов и 3 строки в подматрице содержит
0 |
0 |
0 |
, I |
1 |
0 |
, h1 |
|
1 |
1 |
, h1 |
|
0 |
1 |
, h4 |
h1 |
1 |
1 |
. |
|
0 |
0 |
|
0 |
1 |
|
|
0 |
1 |
|
|
1 |
1 |
|
|
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Для построения матрицы hi использовано соотношение (7.47), т.е.
|
|
|
hi |
f 1 2 1 |
f 1 2 1 |
|
f 2 f 1 |
, |
|
|
|||||||||||||
где |
|
f1 |
- остаток от деления xi на многочлен x2 , что порождает (x 1) : |
||||||||||||||||||||
|
|
|
|
|
|
x |
2 |
|
|
|
x |
2 |
x 1, |
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x2 x 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
x 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
т.е. |
остаток от деления x2 |
равен (x 1), |
|
а остаток от деления x1 |
равен x, |
||||||||||||||||||
откуда |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
1 |
|
|
|
1 |
1 |
|
|
|
|||||||
|
|
|
f |
2 |
1 |
, f 1 |
|
, a h1 |
. |
|
(7.50) |
||||||||||||
|
|
|
|
|
|
1 |
|
|
0 |
|
|
|
|
|
1 |
0 |
|
|
|
||||
|
|
Аналогично: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
f 2 2 1 |
|
|
|
|
|
||||||||||||||
|
|
|
h2 |
f 2 2 1 |
|
f 3 |
f 2 |
. |
|
||||||||||||||
|
|
Столбец f 2 вычислен раньше, а столбец f 3 , |
|
как нетрудно показать, ра- |
|||||||||||||||||||
вен |
|
|
, поскольку при делении x3 |
на x2 x 1 получим остаток, |
равный 1, |
||||||||||||||||||
|
0 |
||||||||||||||||||||||
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
или полином вида (0 x 1).
При кодировании начальной числовой последовательности контрольные разряды, как и для двоичных кодов, вычисляются суммированием по модулю 2 информационных разрядов, которые соответствуют единице в соответ-
544

Глава 7. Кодирование информации
ствующей строке двоичной Н-матрицы или (для обобщенных символов) определяются выражением
k
kT j C j hij iT (mod 2), j 1,..., K,
i 1
где j - номер обобщенного контрольного символа; αi - значение обобщенного информационного символа, записанное в виде матрицы-столбца; hij - символ
подматрицы проверочной Н-матрицы, которая содержится в і-м столбце и j-й (если считать сверху вниз) строке.
Пример 7.19. Вычислим контрольный признак для шестиразрядного (n 6) начального числа, считая, что код должен находить и исправлять
двухразрядные |
|
|
|
(b 2) |
|
пакеты |
|
|
|
|
|
|
искажений, |
|
|
|
а |
начальное |
число |
||||||||||||||||||||||||||||||||||||||||||
A α1α2α3 11 0110. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
Параметры такого кода, как доказано раньше, |
|
|
|
|
N 6, |
M 3, |
k 3, а |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
проверочная матрица имеет вид формулы (7.48). Тогда |
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
αTk j C j |
hij iT (mod 2), |
j 1, 2, 3, |
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
i 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
а именно: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
αT C |
|
h11 |
αT |
h21 |
αT |
|
|
h31 |
αT (mod 2) I αT I αT |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
4 |
|
1 |
|
1 |
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
2 |
|
|
|
|
||||||||||
I αT (mod 2) = αT αT |
αT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
1 |
|
|
0 |
|
|
||||||||||||||||||||||||||||||
(mod 2) |
1 |
|
|
|
|
(mod 2) |
; |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
3 |
|
|
|
|
1 |
2 |
|
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
1 |
|
|
|
0 |
|
|
|
|
0 |
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
αT C |
2 |
|
h12 |
αT |
h22 |
αT |
|
|
h32 |
αT |
(mod 2) I αT |
h1 |
αT |
|
|
||||||||||||||||||||||||||||||||||||||||||||||
5 |
|
|
|
1 |
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
2 |
|
|
|
|
||||||||
|
|
|
|
|
|
0 |
|
|
|
|
1 |
|
|
|
|
|
|
|
1 |
1 |
|
|
|
0 |
|
|
|
|
0 |
1 |
|
|
|
1 |
|
|
|
|
|||||||||||||||||||||||
h2 |
αT (mod 2) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(mod 2) |
|
|
|
||||||||||||||||||||||||||||||||||||||||
|
|
|
|
3 |
|
|
0 |
|
|
1 |
|
|
|
|
|
1 |
|
|
|
|
|
|
|
1 |
0 |
|
|
|
|
1 |
|
|
|
|
|
|
|
1 |
1 |
|
|
|
|
0 |
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
0 |
|
(mod 2) |
|
0 |
|
; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
1 |
|
|
|
|
0 |
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
αT C |
|
h123 αT |
h23 |
αT |
|
|
h33 |
αT |
(mod 2) I αT h2 |
αT |
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||
6 |
3 |
|
|
1 |
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
2 |
|
|
|
||||||||||
|
|
|
|
|
|
0 |
|
|
|
1 |
|
|
|
|
|
|
|
0 |
1 |
|
|
|
0 |
|
|
|
1 |
1 |
|
|
|
1 |
|
|
|
|
|||||||||||||||||||||||||
h1 |
αT3 (mod 2) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(mod 2) |
|
|
|
|||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
0 |
|
|
1 |
|
|
|
|
1 |
|
|
|
|
|
|
|
1 |
1 |
|
|
|
1 |
|
|
|
|
|
|
1 |
0 |
|
|
|
0 |
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
1 |
|
|
|
|
1 |
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||
|
|
|
|
|
|
|
1 |
|
|
|
|
|
(mod 2) |
|
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
1 |
|
|
|
|
1 |
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Итак, передаче подлежит код
A α1α2α3α4α5α6 11 0110 00 00 11.
Декодирование РС-кода выполняется в два этапа. На первом этапе рассчитывается так называемый синдром ошибки, т.е. вспомогательная величи-
545

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ
на, которая дает возможность устанавливать в дальнейшем факт наличия ошибки, ее место и значение:
SRT H AT.
Пример 7.20. Рассчитать синдром ошибки для закодированного прежде слова, считая, что искажение возникло во втором обобщенном символе и вместо символа α2 01 получен символ = 10. Тогда
|
|
|
|
|
|
|
|
|
|
T |
|
|
S3 |
|
I |
I |
I |
I |
0 |
0 |
|
1 |
|
|
|
|
T |
|
|||||||
SRT |
|
|
|
|
|
|
|
|
|
|
|
S2 |
I |
h1 |
h2 |
0 |
I |
0 |
2 |
. |
|||
|
S |
|
I |
h2 |
h1 |
0 |
0 |
I |
|
|
|
|
1 |
|
|
|
|
|
|
|
|
T |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
|
Выполнив все необходимые операции, получим: S |
3 |
|
1 |
, S |
2 |
|
0 |
, S |
|
1 |
. |
|
|
1 |
|
|
1 |
1 |
|
0 |
|
||
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
На втором этапе декодирования РС-кода вычисляется индикатор ошибки - система равенств, которая дает возможность определить место возникновения ошибки.
Если отказ (искажение) возник в разрядах j-го обобщенного символа, то искажение можно подать в виде 0...0Е0...0, где Е - обобщенный b-значный символ, который равняется нулю при отсутствии ошибки и приобретает значения от 0 до (s 1) при ее наличии. Поскольку третья (верхняя) строка Н-
матрицы (7.48) содержит единичные подматрицы, то пакет разрядов синдро-
ма будет S3 |
содержать единицы в разрядах, которые отвечают искаженным |
||||||||||
разрядам пакета ошибки. |
|
|
|
|
|
|
|
|
|
||
В самом деле: |
|
|
|
|
|
|
|
|
|
|
|
k 1 |
j 1 |
k 1 |
αT (αT |
|
|
|
k |
|
ET (mod 2). |
||
S αT |
αT |
ET ) (mod 2) αT αT |
|||||||||
3 |
i |
i |
i |
i |
|
|
|
|
i |
k 1 |
|
i 1 |
i 1 |
i 1 |
|
|
|
|
|
|
i 1 |
|
|
|
k |
|
|
|
|
|
|
|
|
|
|
Поскольку iT kT 1 , это |
|
|
|
|
|
|
|
||||
|
i 1 |
|
|
|
|
|
|
|
|
|
|
|
|
k |
|
|
|
|
|
|
0 и S ET. |
|
|
|
|
T |
T |
(mod 2) |
|
(7.51) |
|||||
|
|
i 1 |
i |
k 1 |
|
|
|
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Итак, анализируя выражение (7.51), приходим к выводу о наличии (при |
|||||||||||
S3 0) и значении ошибки. Известно, что место искажения (номер искажен- |
|||||||||||
ного символа) можно найти из системы уравнений |
|
|
|||||||||
|
|
|
S hi1S |
3 |
0, S |
2 |
hi2 S 0, |
|
(7.52) |
||
|
|
|
1 |
|
|
3 |
|
|
которое называется индикатором искажений. Эта система совместная только
втом случае, когда в і-м обобщенном символе есть искажения.
Кпреимуществам РС-кода следует отнести сопоставимую простоту реализации матричных и модульных операций (поскольку модуль равняется 2)
546

Глава 7. Кодирование информации
при вычислении как синдрома (7.51), так и индикатора (7.52) искажений. Но учитывая большое количество этих операций суммарные аппаратурные затраты могут быть значительными.
Двоичные циклические коды. Циклические коды образовывают класс кодов, которые исправляют ошибки кодирования и декодирования, алгоритм которых основывается на полиномном представлении. Простая реализация этих кодов использует регистры сдвига и логические схемы.
Порождающие и проверочные полиномы. Обозначим С как линейный блочный (n, k) код. Пусть и - сообщение и v - соответствующее ему кодовое
слово кода C . Циклические коды имеют такие свойства, благодаря которым они становятся удобными для аппаратурной реализации. Поставим в соответствие каждому кодовому слову v полином v(x) :
v (v0 , v1,...,vn 1 ) v(x) v0 v1x ...vn 1xn 1.
Переменная x является индикатором относительного положения элемента vi в кодовом слове в виде произведения (монома) vi xi полинома v(x).
Линейный блочный код C является циклическим тогда и только то-
гда, когда любой циклический сдвиг любого кодового слова представляет собой другое (или то же) кодовое слово, т.е.
v(v0 , v1,...,vn 1 ) v(x) v0 v1x ...vn 1xn 1.
Вполиномном представлении циклический сдвиг на одну позицию, обозначенный v(1) (x), соответствует умножению на x по модулю
v(x) C v (x) xv(x)mod(xn 1) C.
Операция циклического сдвига реализуется на регистре сдвига (рис.
7.28).
v0 |
v1 |
….. |
vn 1 |
Рис. 7.28. Циклический регистр сдвига
Пример 7.21. Рассмотрим случай n 7. Циклический сдвиг на одну позицию вектора равен v(1) (1010101). В полиномном представлении и двоичной арифметике получаем
v(x)x x3 x5 x6 ,
v(1) (x) xv(x) x2 x4 x6 x7 mod(x7 1)x2 x4 x6 x7 (x7 1) 1 x2 x4 x6 .
547

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ
Порождающий многочлен. Важным свойством циклических кодов является то, что все кодовые слова-полиномы кратные одному фиксированному полиному, который называется порождающим полиномом кода. Этот полином (многочлен), как и любой другой, задается своими корнями, которые по обыкновению называют нулями кода. Легко показать, что порождающий
полином g(x) является делителем бинома (xn 1). (По аналогии с целыми числами «a(x) делит b(x)» (иначе a(x) b(x)), если b(x) a(x)q(x) ). Итак, чтобы найти некоторый порождающий многочлен, нужно знать разложение
бинома (xn 1) |
на множители |
j |
(x), j 1,2,..., l. |
|
||
|
|
|
|
|
|
|
|
(xn 1) (x) |
(x).... (x). |
(7.53) |
|||
|
|
|
1 |
2 |
l |
|
Заметим, что в двоичной арифметике операции a b и a b (по модулю 2) дают одинаковый результат. Поскольку рассматриваем только двоичные коды или коды над конечными полями характеристики два, т.е. такие, которые используют двоичную арифметику, то в дальнейшем не будем различать
соответствующие операции (знаки «+» и «-»). |
|
||
В результате получаем |
|
|
|
g(x) |
|
j (x). |
(7.54) |
|
j J 1,2,...l |
|
|
Пример 7.22. На множестве двоичных многочленов, т.е. полиномов с |
|||
коэффициентами из множества Z |
{0,1}, |
бином x7 |
1 имеет такое расписа- |
2
ние:
x7 1 (x 1)(x3 x 1)(x3 x2 1).
Приведем примеры циклических кодов длины 7.
Двоичный циклический код Хэмминга с порождающим полиномом g(x) x3 x 1.
Двоичный циклический код с проверкой на парность порождается поли-
номом g(x) (x 1).
Дуальный код Хэмминга (код максимальной длины) имеет порождающий многочлен g(x) (x 1)(x3 x 1).
Кодирование и декодирование двоичных циклических кодов. Размерность двоичного циклического (n, k) кода
k n deg[g(x)],
где deg[.] - степень аргумента. Поскольку циклический код является
линейным кодом, то любое множество k линейно независимых векторов (кодовых слов) можно взять как порождающую матрицу кода. В частности, дво-
ичные |
векторы, |
которые |
ассоциируются |
с |
многочленами |
g(x), xg(x), ..., xk 1g(x), |
линейно независимы. Эти векторы можно использо- |
вать как строки порождающей матрицы кода С. В этом случае реализуется
548

Глава 7. Кодирование информации
несистематическое кодирование. Другими словами, сообщение не появляется в неизмененном виде на каких-нибудь позициях кодового слова.
Пример 7.23. Рассмотрим циклический код Хэмминга с порождающим полиномом g(x) x3 x 1 (1101). Порождающая матрица этого кода имеет вид
1 |
1 |
0 |
1 |
0 |
0 |
0 |
|
|
|
0 1 |
1 |
0 1 |
0 |
0 |
|
||
G |
. |
|||||||
|
0 |
0 |
1 |
1 |
0 |
1 |
0 |
|
|
0 |
0 |
0 |
1 |
1 |
0 |
1 |
|
|
|
В другом варианте проверочную часть порождающей матрицы циклического кода можно построить с помощью таких полиномов:
xn 1 mod g(x),
xn k 1 mod g(x) xn k mod g(x).
С их помощью реализуется систематическое кодирование, рассмотренное в приведенном дальше примере.
Пример 7.24. Пусть С - циклический код Хэмминга с порождающим многочленом g(x) x3 x 1. Тогда имеем:
x6 |
mod(x3 |
x 1) x2 |
1, |
x5 mod(x3 |
x 1) x2 |
x 1, |
|
x4 |
mod(x3 |
x 1) x2 |
x, |
x3 mod(x3 |
x 1) x 1. |
Итак, систематическая порождающая матрица кода С имеет вид
1 |
0 |
0 |
0 |
1 |
0 |
1 |
|
|
|
0 1 |
0 |
0 |
1 |
1 |
1 |
|
|
G |
. |
|||||||
|
0 |
0 |
1 |
0 |
1 |
1 |
0 |
|
|
0 |
0 |
0 |
1 |
0 |
1 |
1 |
|
|
|
Кодирование циклического кода может быть систематическим или несистематическим в зависимости от того, что именно происходит с сообщением.
Несистематическое кодирование
v(x) u(x)g(x). |
(7.55) |
Систематическое кодирование |
|
v(x) xn k u(x) [xn k u(x)mod g(x)]. |
(7.56) |
549