
- •Методы защиты информации в компьютерных технологиях Москва 2011
- •1. Основные направления криптологии.
- •2. Методы криптографических преобразований с открытым ключом.
- •2.1. Алгоритм нахождения числа по модулю.
- •2.2. Вычисление обратных величин в модулярной алгебре.
- •2.3. Алгоритм операции возведения числа в степень по модулю.
- •2.4. Определение односторонней функции.
- •3. Алгоритмы формирования и функционирования криптографических систем с открытым ключом.
- •3.1. Алгоритм криптографической системы rsa (Райвест-Шамир-Адлеман).
- •3.2. Алгоритм криптографической системы на основе вычисления дискретных логарифмов в конечном поле – алгоритм Эль Гамаля.
- •3.3. Алгоритм функционирования криптографической системы на основе дискретного логарифмирования в метрике эллиптических кривых.
- •3.3.1. Основные операции криптографических преобразований в метрике эллиптических кривых.
- •3.4. Преобразование Диффи-Хеллмана в системах криптографии с открытым ключом.
- •XcxпШифратор
- •3.5. Формирование криптограмм открытых сообщений и их дешифрование с использованием методов дискретного логарифмирования в метрике эллиптических кривых.
- •4.1. Вычисление множества точек удвоения заданной эллиптической кривой.
- •4.1.3. Вычисление координат точки [8]g, как результат удвоения точки [4]g:
- •4.1.4. Вычисление координат точки [16]g , как результат удвоения точки [8]g:
- •4.1.5. Вычисление координат точки [32]g , как результат удвоения точки [16]g:
- •4.1.6. Вычисление координат точки [64]g , как результат удвоения точки [32]g:
- •4.1.7. Вычисление координат точки [128]g , как результат удвоения точки [64]g:
- •4.2. Вычисление композиций точек удвоения [4]g; [8]g; [32]g; [64]g; [128]g заданной эллиптической кривой.
- •5. Алгоритм формирования открытого ключа абонента в.
- •5.1. Вычисление множеств точек удвоения заданной эллиптической кривой.
- •5.1.3. Вычисление точки [8]g, как результат удвоения точки [4]g:
- •5.1.4. Вычисление точки [16]g , как результат удвоения точки [8]g:
- •5.1.5. Вычисление точки [32]g , как результат удвоения точки [16]g:
- •5.1.6. Вычисление точки [64]g , как результат удвоения точки [32]g:
- •5.1.7. Вычисление точки [128]g , как результат удвоения точки [64]g:
- •5.2. Вычисление композиций различных точек удвоения заданной эллиптической кривой ( [2]g; [4]g; [16]g; [32]g; [128]g ).
- •6. Вычисление парного сеансового ключа шифрования-дешифрования для абонентов а и в на основе преобразований Диффи-Хеллмана.
- •6.1. Действие абонента в.
- •6.1.1. Вычисление точки [2]коа , как результат удвоения точки коа:
- •6.2. Вычисление композиций различных точек удвоения заданной эллиптической кривой: [2]коа; [4] коа; [16] коа; [32] коа; [128]коа).
- •7. Дешифрование абонентом а криптограммы, полученной от абонента в с использованием парного секретного симметричного ключа, сформированного по методу Диффи-Хеллмана в метрике эллиптических кривых.
- •7.1. Вычисление удвоений множества точек заданной эллиптической кривой на стороне абонента «а» по значению точки ков, характеризующей открытый ключ абонента «в».
- •7.1.1. Вычисление значения удвоения точки ков – [2]ков:
- •7.2. Вычисление композиций различных точек удвоения заданной эллиптической кривой: [4]ков; [8]ков; [32]ков; [64]коа; [128]ков).
- •7. 3. Дешифрование абонентом «а» криптограммы с, полученной от абонента «в».
- •4. Алгоритмы электронной цифровой подписи.
- •4.1. Алгоритм электронной цифровой подписи rsa (Райвест-Шамир-Адлеман).
- •4.2. Алгоритм электронной цифровой подписи Эль Гамаля (egsa). Egsa (el Gamal Signature Algorithm).
- •4. 3. Алгоритм электронной цифровой подписи dsa (Digital Signature Algorithm).
- •4.4. Алгоритм электронной цифровой подписи гост р34.10-94. (Отечественный стандарт электронной цифровой подписи).
- •4.5. Алгоритм электронной цифровой подписи гост р34.10-2001. (Отечественный стандарт электронной цифровой подписи).
- •3.1. Вычисление множества точек удвоения заданной эллиптической кривой.
- •3.1.3. Вычисление координат точки [8]g, как результат удвоения точки [4]g:
- •3.1.4. Вычисление координат точки [16]g , как результат удвоения точки [8]g:
- •3.1.5. Вычисление координат точки [32]g , как результат удвоения точки [16]g:
- •3.1.6. Вычисление точки [64]g , как результат удвоения точки [32]g:
- •3.1.7. Вычисление точки [128]g , как результат удвоения точки [64]g:
- •3.2. Вычисление композиций точек удвоения [4]g; [8]g; [32]g; [64]g; [128]g заданной эллиптической кривой.
- •4. Действие абонента-отправителя (абонента «а») по формированию электронной цифровой подписи электронного сообщения «м».
- •4.3.2. Вычисление композиций точек удвоения [256]g; [64]g; [16]g; [8]g; [2]g; g заданной эллиптической кривой.
- •4.3.2.3. Вычисление композиции точек [336]g и [8]g;
- •4.3.2.4. Вычисление композиции точек [344]g и [2]g;
- •4.3.2.5. Вычисление композиции точек [346]g и g;
- •4.5. Вычисление параметра электронной цифровой подписи Si .
- •5. Действия абонента «в» по приему и аутентификации подписанного электронного сообщения «м».
- •5.5.2. Вычисление композиции точек [32]g и [8]g;
- •5.5.3. Вычисление композиции точек [40]g и [4]g;
- •5.5.5. Вычисление композиций точек удвоения
- •5.5.5.1. Вычисление композиции точек [128]коа и [64]коа;
- •5.5.5.2. Вычисление композиции точек [192]коа и [32]коа;
- •5.5.5.3. Вычисление композиции точек [224]коа и [2]коа;
- •5.5.5.4. Вычисление композиции точек [u1]g и [u2]коа;
- •5.5.5.5. Сравниваются вычисленные значения параметра «r», принятого в составе эцп от абонента-отправителя и значения абсциссы точки «q» → «xq», вычисленное абонентом получателем.
- •6. Элементы симметричных криптографических преобразований.
- •6.2. Табличное шифрование методом перестановки по ключевому слову или фразе, задающими перестановку.
- •6.3. Табличное шифрование методом двойной перестановки.
- •6.5. Шифры сложной замены.
- •7. Корректирующие коды.
- •6. 1. Блочные коды.
- •6.1.1. Систематические коды.
- •6.1.2. Корректирующие коды с обнаружением искажений, применяемые в системах передачи и обработки информации.
- •7. Windows-кодирование.
- •7.1. Преобразование Windows-кодирования - коды Грея.
- •7.2. Преобразование Windows-кодирования в систематические коды.
- •7.3. Преобразование Windows-кодирования в коды Хэмминга.
- •7.5. Преобразование Windows-кодирования в коды Боуза-Чодхури-Хоквингема (бчх).
6.1.1. Систематические коды.
К систематическим кодам относят блочные разделимые n, k -коды, в которых проверочные элементы кодовых комбинаций представляют собой линейные комбинации информационных элементов. К систематическим кодам в частности относят коды Хэмминга, Циклические коды, которые нашли широкое практическое внедрение в цифровых системах кодирования и передачи информации.
Характерной особенностью непрерывных кодов является кодирование исходных сообщений таким образом, что проверочные элементы кодовых комбинаций размещаются среди информационных элементов и в этом случае происходит непрерывное кодирование и декодирование исходных сообщений.
Прежде чем приступить к рассмотрению методики формирования корректирующих кодовых комбинаций необходимо рассмотреть две основные характеристики корректирующих кодов - это избыточность корректирующего кода и кодовое расстояние. Характерной особенностью корректирующих кодов является их обязательная информационная избыточность за счет использования не всего множества состояний кодовых комбинаций, а только лишь выборочных комбинаций или так называемых разрешенных комбинаций. Очевидно, что количество разрешенных комбинаций меньше полного множества кодовых комбинаций Np N. Запрещенные комбинации Nз=N-Nр используются для обнаружения и исправления ошибок в разрешенных (информационных) кодовых комбинациях, которые могут возникнуть за счет возмущающего воздействия помех, действующих в линиях связи или преднамеренного созданного разрушающего воздействия.
В общем виде избыточность корректирующих кодов определится в соответствии со следующей формулой:
R
= 1 -
(11)
где: N - общее число комбинаций двоичного кода N= 2n;
Nр- число разрешенных кодовых комбинаций, предназначенных для кодирования передаваемых сообщений.
Из формулы (11) следует, что при отсутствии корректирующей способности кодовой комбинации, т.е. когда используется полное множество двоичных комбинаций для кодирования передаваемых сообщений, избыточность формируемой кодовой комбинации равна нулю, R=0.
Для того чтобы кодовые комбинации были распознаваемы, обладали способностью выявлять и исправлять возможные искажения, они по своему составу должны отличаться друг от друга на определенное кодовое расстояние. Под кодовым расстоянием между двумя кодовыми комбинациями понимают число равное количеству несовпадающих элементов этих комбинаций. Например, кодовое расстояние между кодами 01011011 и 10011110 равно 4. Наименьшее кодовое расстояние между двумя кодовыми комбинациями из всего рассматриваемого множества называют минимальным кодовым расстоянием и обозначают как dmin. Чем больше кодовое расстояние, тем большее количество искажений в кодовой комбинации можно обнаружить и исправить. Однако, при больших кодовых расстояниях резко уменьшается количество разрешенных кодовых комбинаций, т.е. увеличивается избыточность кодового множества.
6.1.2. Корректирующие коды с обнаружением искажений, применяемые в системах передачи и обработки информации.
Как было указано выше, корректирующие коды обладают способностью выявлять и исправлять ошибки, возникающие в их комбинациях. Воспринимающим и распознающим ошибки, возникающие в их комбинациях, устройством является синдром, который входит в состав приемника системы передачи данных.
Для обнаружения искажений кодовых комбинаций минимальное кодовое расстояние между отдельными кодовыми комбинациями определяется по следующей зависимости
dmin = t + 1 (12)
где: t - число обнаруживаемых искажений.
Согласно приведенной зависимости в случае искажения разрешенной кодовой комбинации эта модифицированная комбинация не будет совпадать ни с одной из комбинаций разрешенного множества. Следовательно, модифицированная комбинация будет принадлежать к запрещенному множеству и по ее структуре будет определяться характер и место искажения в разрешенной кодовой комбинации.
Например: для кодов 0000, 0011, 1010, 1101 минимальное кодовое расстояние dmin = 2. Если произошло искажение во второй комбинации 0011 0111, то условие минимального кодового расстояния dmin=2 для первой и второй кодовых комбинаций выполняться не будет d12=3; d32=3 и, следовательно, такая кодовая комбинация будет передана в синдром приемника для анализа и исправления.
Для исправления искажений, возникающих в принимаемых кодовых комбинациях, минимальное кодовое расстояние определяется из условия dmin=2S + 1 (13),
где S - число исправляемых искажений.
Как видно из зависимостей (12) и (13) для того, чтобы исправить кодовую комбинацию минимальное кодовое расстояние должно быть больше, чем в случае обнаружения искажения, а, следовательно, количество разрешенных кодовых комбинаций для кодирования сообщений уменьшится.
Процесс исправления искаженных кодовых комбинаций осуществляется следующим образом: принятая кодовая комбинация, подвергшаяся искажению, идентифицируется как запрещенная кодовая комбинация (по минимальному кодовому расстоянию для обнаружения искажений) сравнивается с частным множеством разрешенных кодовых комбинаций (неискаженных) и вычисляется та, которая отличается от принятой (искаженной) наименьшим кодовым расстоянием. Эта комбинация и считается достоверной. При работе синдрома только на обнаружение возможных искажений исправление принятых кодовых комбинаций не происходит и "он принимает решение о запрете" обработки такой кодовой комбинации.
При использовании корректирующих кодов для обнаружения и одновременного исправления возникших искажений необходимо выполнение следующего условия:
dmin = t + S +1 (14)
где: t - количество обнаруживаемых искажений;
S - количество исправляемых искажений;
t S , т.е. число обнаруживаемых искажений больше чем исправляемых.
Примером распространенного множества кодовых комбинаций, способных выявить возникающие искажения, является множество кодов на одно сочетание. В кодах на одно сочетание каждая кодовая комбинация имеет постоянное число элементов с характерным признаком k. Например таким характерным признаком может быть наличие в каждой кодовой комбинации разрешенного множества строго детерминированного количества единиц (k=2, k=3).
В таблице 4.6 приведено разрешенное множество таких комбинаций из полного множества кодовых комбинаций, состоящих из 5 элементов.
Таблица 4.6
Коды на одно сочетание
N п/п |
k = 2 |
k = 3 |
0 |
00011 |
00111 |
1 |
00101 |
01011 |
2 |
00110 |
01101 |
3 |
01001 |
01110 |
4 |
01010 |
10011 |
5 |
01100 |
10101 |
6 |
10001 |
10110 |
7 |
10010 |
11001 |
8 |
10100 |
11010 |
9 |
11000 |
11100 |
В таком множестве кодовых комбинаций, каждая из которых состоит из n элементов, количество элементов с характерным признаком k для всех кодовых комбинаций разрешенного множества одно и то же (количество единиц в кодовой комбинации). В этом случае объем разрешенного множества определяется сочетанием из n элементов по k.
Np
=
C
=
(15)
Максимальное
количество кодовых комбинаций разрешенное
множество Np
будет
иметь при следующих условиях, если n
четно, то k
необходимо принять k=
;
если
n
нечетно,
то k=
или
k=
.
Например , определить максимальное количество кодовых комбинаций разрешенного множества при числе элементов кодовых комбинаций равное 5, т.е. при n=5 определить k и Np.
k=
=
=2;
k=
=3;
Np=C
=
=10;
Np=C
=
=10.
Как видно, при вычислении k по первому и второму способу объем разрешенной выборки кодового множества не меняется.
Разрешенное множество кодовых комбинаций с обнаружением ошибок с применением кодов на одно сочетание строится следующим образом:
строится множество двоичных кодов на все сочетания N=2n, из всего множества выбираются только те кодовые комбинации, для которых характерный признак k один и тот же.
В рассмотренном выше примере таким характерным признаком является наличие постоянного числа единиц в разрешенных кодовых комбинациях (k=2; k=3). Это множество приведено в таблице 5. Анализ кодовых комбинаций на одно сочетание показал, что для них минимальное кодовое расстояние dmin=2. В этих кодах возможно обнаружение одной и более ошибок, т.к. искажения в кодовых комбинациях приводят к изменению характерного признака конкретного кодового множества. Так для случаев k=2 и k=3 появление в кодовых комбинациях соответствующих искажений (10, 01) приводит к изменению числа единиц в разрешенных кодовых комбинациях, что и будет говорить о наличии искажений.
Избыточность кодов на одно сочетание определится из соотношения
R
= 1 -
= 1 -
(16)
Из таблицы 4.6 следует:
R
= 1 -
0,35, d = 2, t = 1.
Другой
разновидностью корректирующих кодов
с обнаружением искажений являются коды
с
четным или нечетным числом единиц.
При формировании двоичных кодовых
множеств с четным
(нечетным) числом
единиц
из всего 2n
множества
выбирают соответствующие кодовые
комбинации, полученное разрешенное
множество будет содержать Np=
=2n-1
кодовых комбинаций, т.к. минимальное
кодовое расстояние равно d=2,
то такие коды способны обнаруживать
одиночные искажения т.к. t
= dmin
-
1 = 1.
Последнее равенство справедливо при
условии, если в неискаженных разрешенных
комбинациях число единиц четное
(нечетное), и изменение одного из элементов
кодовой комбинации приводит к нарушению
четности (нечетности), что и позволяет
судить о возникшем искажении.
Избыточность
таких кодов определится как R=1-
=1
-
=
=
при
n
= 4 избыточность
составляет
R = 0,25,
т.е. коды с четным или нечетным числом
единиц обладают меньшей избыточностью
по сравнению с кодами на одно сочетание,
а, следовательно, при одном и том же
числе кодовых элементов можно получить
большее количество кодовых комбинаций
для кодирования исходного сообщения.
Коды с повторением также являются разновидностью корректирующих кодов с обнаружением ошибок. Эти коды строятся из исходного кода путем его дополнения аналогичной кодовой комбинацией (т.е. происходит повторение передаваемой кодовой комбинации дважды).
Например: исходная комбинация 0101, передаваемая двоичная комбинация имеет вид 01010101. Кодовая комбинация, принимаемая приемным декодирующим устройством, считается достоверной, если в дополненной кодовой комбинации исходня часть совпадает с дополненной. Избыточность таких кодов равна:
R
= 1 -
=
1 -
= 0,5.
Коды с удвоением элементов. Эти коды также принадлежат ко множеству корректирующих кодов с обнаружением искажений, они образуются в результате удвоения каждого элемента исходной кодовой комбинации, причем нуль в исходной комбинации заменяется на два элемента 01, а единица на 10. Например, исходная кодовая комбинация имеет вид 0101, удвоенная (передаваемая по линии связи) 01100110. В передаваемых кодовых комбинациях парные соседние элементы имеют только два вида 01 или 10 и появление парных элементов в принимаемых кодовых комбинациях вида 00 или 11 будет говорить о возникших искажениях. Сформированные таким образом кодовые комбинации имеют в два раза больше элементов чем исходные, следовательно, они обладают большей избыточностью. Избыточность таких кодов определится как
R = 1 - = 1 - = 0,5.
Большой класс корректирующих кодов составляет множество систематических кодов, которые определены как блочные разделимые n, k - коды. В таких кодах, состоящих из n символьных элементов, k элементов являются информационными, а оставшиеся r=n-k элементов кодовых комбинаций проверочными. Проверочные элементы образуются с помощью линейных преобразований информационных кодовых комбинаций [6].
Как правило, систематические коды (n, k - коды) структурно составляются таким образом, что первое подмножество кодовой комбинации состоит из информационных элементов, а следующее за ним подмножество элементов кода состоит из проверочных элементов.
Построение кодовых комбинаций блочных разделимых кодов базируется на двух леммах:
1. Суммирование по модулю 2 любого множества разрешенных комбинаций также дает разрешенную комбинацию.
2. Минимальное кодовое расстояние систематического кода равно минимальному весу его ненулевых кодовых комбинаций (весом кодовой комбинации называется число единиц этой кодовой комбинации).
Кодовые
комбинации называются линейно
независимыми, если соблюдается следующее
условие c1f1
c2f2
...
сkfk
0 для
всех возможных значений ci
(ci=1
0). Исключение
составляет случай, когда с1
= с2
=
... = ск
= 0.
Для образования полного множества линейно независимых кодовых комбинаций, согласно первому постулату, путем сложения по модулю 2 k линейно независимых комбинаций f1, f2, ... , fk и придания значений 0 или 1 коэффициентам сi получают Np = 2k разрешенных кодовых комбинаций систематического кода. Определенные для построения множества комбинаций систематического кода линейно независимые комбинации f1, f2, ... , fk записываются друг под другом в виде матрицы Gn,k.
Такая матрица, состоящая из k строк и n столбцов, называется производящей матрицей n, k кода [7].
Gn,k = (17)
П
роизводящая
матрица представлена двумя подматрицами:
информационной (aik)
и проверочной (bir).
Информационная матрица состоит из k
столбцов, проверочная из r
столбцов.
В качестве информационной подматрицы
производящей матрицы можно взять
единичную матрицу Ek
1 0 ... 0
01 ... 0
E,k = ........… (18)
0 0 ... 1
С учетом (17) и (18) производящая матрица для построения систематического кода будет иметь следующий вид:
1
0 ... 0 b11
b12
... b1r
0 1 ... 0 b21 b22 ... b2r
Gn,k = .................................... (19)
0 0 ... 1 bk1 bk2 ... bkr
…………………….
a1a2... ak b1 b2 .... br
Проверочная подматрица строится на основе информационной подматрицы с учетом следующих положений. Так как каждая строка кодового множества информационной подматрицы (18) содержит только одну 1, то вес каждой строки проверочной подматрицы должен быть не менее p1 = dmin - 1, сумма двух любых строк по модулю 2 не менее p12 = dmin -2.
Алгоритм построения систематического кода определяется следующим образом:
Цель процесса алгоритмизации построить код исправляющий одиночные искажения (S=1) при числе разрешенных комбинаций (в качестве примера) Np = 25 = 32 и числе информационных элементов k = 5.
1. Определение минимального кодового расстояния
dmin = 2S + 1 = 21 + 1 = 3.
2. Определение общего количества элементов кодовых комбинаций систематического кода - n.
Np
=
=
где:
С
- количество вариантов состояний кодовых
комбинаций, когда искажение отсутствует
(C
= 1).
С
- количество вариантов кодовых комбинаций,
когда возникают одиночные искажения (
в рассматриваемом примере C
=
=n.
3. Из формулы для определения Np определяют общее количество элементов систематического кода
2k
=
;
25
=
;
32 =
при
определении n
выбирают минимальный верхний предел,
т.е. sup
n sup n = 9,
т.к. 32 должно быть меньше или равно
,
то выбирая наименьший верхний предел,
получают n=9,
т.е. n=9;
k=5.
4.
Определение числа проверочных элементов
систематического кода r
= n - k = 9 - 5 = 4.
Для случая r=4
строится множество кодовых комбинаций
Nr
= 0000,
0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, !001, 1010, 1011,
1100, 1101, 1110, 1111.Из
полученного множества для построения
проверочной подматрицы производящей
матрицы выбирают пять (к=5) комбинаций
(любых), вес каждой из которых p
dmin-1=3-1=2.
Такое подмножество определится как
N5=0011,
0101, 0110, 0111, 1001,
общее же количество комбинаций,
удовлетворяющих условию p
2
имеет
вид Np
2
=
0011,
0101, 0110,0111, 1001, 1010, 1011, 1100, 1101, 1110, 1111,
т.е.
Np
2=12.
5. Построение производящей матрицы систематического кода-G9,5
10000 |
0011 |
(20)
G9,5
= |
0101 |
00100 |
0110 |
00010 |
0111 |
00001 |
1001 |
Из общего количества разрешенных комбинаций систематического кода, содержащего 5 информационных символов Nр=25 =32, пять комбинаций уже определено , т.к. они входят в состав производящей матрицы G9,5, шестая комбинация нулевая (все элементы равны 0), осталось найти 26 производных комбинаций, которые определяются на основе суммирования по модулю 2 строк производящей матрицы, т.е. осуществляется кодирование систематического кода.
Для определения r поверочных элементов по известным информационным элементам необходимо построить проверочную матрицу, состоящую из r строк и n столбцов.
Проверочная матрица строится на основе единичной матрицы путем приписывания к ней слева подматрицы Dk,r, содержащей k столбцов и r строк. Каждая строка подматрицы Dk,r соответствует столбцу поверочной подматрицы производящей матрицы Gn,k
-
b11 b21 ... bk1
b12 b22 ... bk2
....................
b1r b2r ... bkr
Таким образом, проверочная матрица будет иметь вид
-
(22)
................................
b1r b2r ... bkr 00 ... 1
На основании проверочной матрицы Hn,r (22) формируется алгоритм кодирования и декодирования систематического кода.
В качестве примера построим на основании производящей матрицы (20) проверочную матрицу H9,4.
-
a1
a2
a3
a4
a5
b1
b2
b3
b4
(23)
0
0
0
0
1
1
0
0
0
H9,4
=
0
1
1
1
0
0
1
0
0
1
0
1
1
0
0
0
1
0
1
1
0
1
1
0
0
0
1
По полученной проверочной матрице H9,4 определяются проверочные элементы b1, b2, b3, b4 на основании следующих уравнений:
b1 = a5
b2 = a2 a3 a4
b
(24)
b4 = a1 a2 a4 a5
Следовательно, любая кодовая комбинация систематического кода определяется из Np=2k исходных комбинаций. Например, если на вход кодирующего устройства поступает исходная информационная кодовая комбинация 11001, то на его выходе образуется разрешенная кодовая комбинация систематического кода
a1=1; a2=1; a3=0; a4=0; a5=1.
b1=1; b2=1; b3=1; b4=1.
11001 11001 1111.
При исходной комбинации 10101 кодовая комбинация систематического кода определится как
a1=1; a2=0; a3=1; a4=0; a5=1.
b1=1; b2=1; b3=0; b4=0.
10101 10101 1100.
При декодировании принятых комбинаций, т.е. обработки систематического кода приемным устройством, алгоритм распознавания искаженной кодовой комбинации определяется в соответствии со следующими уравнениями:
b
=b1
a5
b
(25)
=b2
a2
a3
a4
b
=b3
a1
a3
a4
b
=b4
a1
a2
a4
a5
Например, при передаче разрешенной комбинации 110011111 произошло искажение в пятом разряде и принята комбинация 110001111 (искажение в 5 разряде, передана 1, а принят 0).
Если при проверке приемным устройством разрешенной комбинации систематического кода окажется, что хотя бы одно из уравнений (25) не будет равно 0, то в кодовой комбинации произошли ошибки. В приведенном примере принятая кодовая комбинация 110001111 по уравнениям (25) при a1=1, a2=1, a3=0, a4=0, a5=0, b1=1, b2=1, b3=1, b4=1 оценивается как:
b =1 0 =1
b
(26)
b =1 1 0 0=0
b =1 1 1 0 0=0
Равенство 1 первого и четвертого уравнений говорит о возникшем искажении кодовой комбинации и если стоит задача только оценки правильности приема кодовой комбинации, то по рассмотренному примеру формируется команда сигнализации об искажении принятой кодовой комбинации, принимается решение либо о перезапросе кодовой комбинации или об отказе ее обработке приемными устройствами.
Если же предусмотрена операция исправлений искажений, то необходимо провести дальнейший анализ уравнений (25).
Так например, наличие 1 в первом и четвертом уравнениях говорит о том, что искаженным может быть один из элементов разрешенной кодовой комбинации систематического кода b1, b4, a1, a2, a4, a5.
Наличие 0 во втором и третьем уравнениях означает, что элементы b2, b3, a1, a2, a3, a4 приняты без искажений. Исключая правильно принятые элементы из первого и четвертого уравнений определяют потенциально искаженные элементы. Таким искаженным элементом в рассматриваемом примере может быть один из b1, b4, a5, но элемент a5 входит и в первое и во второе уравнения, следовательно, искажен он.
Заменив в принятой кодовой комбинации в элементе 5 значение 0 на 1, восстанавливается искаженная кодовая комбинация. Результаты проверок правильности принятых кодовых комбинаций по уравнениям (25) называют синдромом (синдром-определитель), так же называется и программно-аппаратный модуль приемного устройства.
6.1.2.1. Код Хэмминга. Особенностью кода Хэмминга является то обстоятельство, что столбцы проверочной матрицы располагаются таким образом, что r-комбинация i-столбца соответствовала бы номеру i кодовой комбинации, записанному в двоичной форме. Такое расположение столбцов позволяет построить синдром таким образом, что его номер в двоичной форме будет указывать на номер искаженного элемента принятой кодовой комбинации. В качестве примера рассматривается проверочная матрица H9,4 (23). По уравнениям (25) определяются синдромы одиночных искажений, их для наглядности удобно представить в виде таблицы 4.7 (на примере 10 элементной кодовой комбинации).
Таблица 4.7
Синдром одиночных искажений
Комбинация искажения |
Номер искаженного элемента |
Синдром |
1000000000 |
1 |
0001 |
0100000000 |
2 |
0010 |
0010000000 |
3 |
0011 |
0001000000 |
4 |
0100 |
0000100000 |
5 |
0101 |
0000010000 |
6 |
0110 |
0000001000 |
7 |
0111 |
0000000100 |
8 |
1000 |
0000000010 |
9 |
1001 |
0000000001 |
10 |
1010 |
Как видно из приведенной таблицы кодовая комбинация синдрома указывает на искаженное место разрешенной кодовой комбинации. Например, если искажен пятый разряд разрешенной кодовой комбинации, то его синдром определится как 0101.
Преобразование исходных двоичных кодовых комбинаций во множество кодов Хэмминга целесообразно рассмотреть на конкретном примере.
Пример. Цель преобразования - составить Np=2n=60 разрешенных кодовых комбинаций Хэмминга, обнаруживающих и исправляющих одиночные искажения (t=1, S=1).
Методика решения.
1. Определение минимального кодового расстояния
dmin=t+S+1=1+1+1=3.
2. Определение общего числа элементов кодовых комбинаций Хэмминга - n.
Np ; 60
Из последнего неравенства определяется общее число элементов кодовых комбинаций Хэмминга n=10.
3. Определение числа информационных элементов k
2k = 60 k 6.
4. Определение числа проверочных элементов r
r = n - k = 10 - 6 = 4.
5. Построение производящей матрицы кода G10,6 (10 столбцов, 6 строк). Для чего из состава 2r = 24 =16 проверочных комбинаций для построения производящей матрицы выбирается k=6 любых комбинаций с весом p dmin- 1 = 3 - 1 = 2, например: 0011, 0101, 0110, 0111, 1001, 1010. Производящая матрица имеет вид:
1 |
0 |
0 |
0 |
0 |
0 |
|
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
|
0 |
1 |
0 |
1 |
G10,6
=
|
0 |
1 |
0 |
0 |
0 |
|
0 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
|
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
|
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
|
1 |
0 |
1 |
0 |
6. Построение проверочной матрицы на основании производящей матрицы G10,6. Для чего в первую строку проверочной матрицы H10,6 вписывается первый столбец кортежа проверочных элементов производящей матрицы G10,7 (000011) и к нему справа приписывается первая строка единичной матрицы (1000), во вторую строку проверочной матрицы вписывается кортеж второго столбца производящей матрицы (011100) и справа приписывается вторая строка единичной матрицы (0100) и т. д. Причем необходимо отметить, что число элементов в строках производящей и проверочной матриц (n) одно и тоже, а количество строк проверочной матрицы равно числу проверочных элементов производящей матрицы.
-
a1
a2
a3
a4
a5
а6
b1
b2
b3
b4
H10,6 =
00
0
0
1
1
1
0
0
0
0
1
1
1
0
0
0
1
0
0
1
0
1
1
0
1
0
0
1
0
1
1
0
1
1
0
0
0
0
1
После чего для построения кода Хэмминга необходимо преобразовать проверочную матрицу перераспределением ее столбцов таким образом, чтобы кодовая комбинация кортежа столбцов указывала на номер столбца в проверочной матрице H10,6.
-
e1
e2
e3
e4
u1
u2
u3
u4
u5
u6
u7
u8
u9
u10
H
0=
0
0
0
0
0
0
1
1
1
0
0
0
1
1
1
1
0
0
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
Таким образом, проверочная матрица H систематизирована в порядке возрастания номера столбца, причем столбцы u1, u2, u4, u8 являются столбцами единичной матрицы элементов исходной проверочной матрицы H10,6.
7. По построенной проверочной матрицы H10,6 составляются r=4 проверочных уравнений. Проверочные уравнения составляются в виде суммы по модулю 2 элементов строк матрицы H10,6, элементы единичной матрицы которых равны 1.
e1 = u3 u5 u7 u9
e
(27)
e3 = u5 u6 u7
e4 = u9 u10
Полученные уравнения (27) являются исходными (кодообразующими) уравнениями для построения множества кодовых комбинаций кода Хэмминга. В рассмотренном примере на вход формирующего устройства (кодирующего) устройства поступает Np=60 информационных комбинаций, а на его выходе образуется Np=60 разрешенных комбинаций кода Хэмминга. Например: на вход кодирующего устройства поступает информационная комбинация 011001. В соответствии с уравнениями (27) u3=0, u5=1, u6=1, u7=0, u9=0, u10=1, элементы u1, u2, u4, u8 являются проверочными элементами e1, e2, e3, e4, значения которых и необходимо определить по формулам (27).
e1=u1=u3 u5 u7 u9 = 0 1 0 0 = 1
e2=u2=u3 u6 u7 u10 = 0 1 0 1 = 0
e3=u4=u5 u6 u7 = 1 1 0 = 0
e4=u8=u9 u10 = 0 1 = 1
Таким образом, закодированная по коду Хэмминга разрешенная кодовая комбинация 011001, будет иметь вид:
-
e1
e2
e3
e4
u1
u2
u3
u4
u5
u6
u7
u8
u9
u10
1
0
0
0
1
1
0
1
0
1
Исходный код 011001 1000110101 Код Хэмминга
В таблице 4.8 приведен фрагмент кодирования исходных двоичных комбинаций по коду Хэмминга при Np=60, обнаруживающего и исправляющего одиночные искажения (t=1, S=1).
Таблица 4.8
Кодирование по коду Хэмминга
-
Nп/п
Исходные информационные комбинации
Закодированные комбинации по Хэммингу
u3 u5 u6 u7 u9 u10
e1 e2 e3 e4 u1 u2 u3 u4 u5 u6 u7 u8 u9 u10
1
0 0 0 0 0 1
0 1 0 0 0 0 0 1 0 1
2
0 0 0 0 1 0
1 0 0 0 0 0 0 1 1 0
3
0 0 0 0 1 1
1 1 0 0 0 0 0 0 1 1
4
0 0 0 1 0 0
1 1 0 1 0 0 1 0 0 0
5
0 0 0 1 0 1
1 0 0 1 0 0 1 1 0 1
6
0 0 0 1 1 0
0 1 0 1 0 0 1 1 1 0
7
0 0 0 1 1 1
0 0 0 1 0 0 1 0 1 1
8
0 0 1 0 0 0
0 1 0 1 0 1 0 0 0 0
9
0 0 1 0 0 1
0 0 0 1 0 1 0 1 0 1
.........
...................................
.............................................
58
1 1 1 0 1 0
1 0 1 0 1 1 0 1 1 0
59
1 1 1 0 1 1
1 1 1 0 1 1 0 0 1 1
60
1 1 1 1 0 0
1 1 1 1 1 1 1 0 0 0
Декодирование принятых комбинаций кода Хэмминга и исправление одиночных искажений производится в соответствии со следующими преобразованиями.
1. Определение элементов синдрома e , e , e , e
e = u1 u3 u5 u7 u9
e
(28)
e = u4 u5 u6 u7
e = u8 u9 u10
2. Восстановление искаженной принятой кодовой комбинации кода Хэмминга. Пример: передается разрешенная комбинация кода Хэмминга 1001001101 в исходной информационной двоичной комбинации произошло искажение в третьем (слева направо) разряде искажение и на приемник поступил код 1011001101. Каждый разряд слева направо обозначается буквами u1u2u3u4u5u6u7u8u9u10. Декодирование осуществляется по системе уравнений (28):
e = 1 1 0 1 0 =1
e = 0 1 0 1 1 =1
e = 1 0 0 1 =0
e = 1 0 1 =0
Синдром в этом случае равен 0011, что при переводе в десятичное число означает цифру 3, т.е. 0011 3, это указывает на искажение третьего элемента в принятой кодовой комбинации, который и подлежит исправлению с 1 на 0, что в свою очередь и приводит к восстановлению искаженной кодовой комбинации.
6.1.2.2. Циклические коды. Другой разновидностью систематических кодов являются циклические коды, которые отличаются высокой корректирующей способностью и сравнительной простотой технической реализации.
Название циклических кодов определилось с учетом того, что множество разрешенных комбинаций образуется в результате циклического сдвига. Отображение циклических кодов и выполнение отдельных операций над ними производят на основе степенных многочленов (полиномов) вида:
F(x) = an-1xn-1 + an-2xn-2 + ... + a1x + a0 (29)
где: x- основание системы счисления;
a0, a1, ..., an-1 - коэффициенты системы счисления в двоичной системе (0, 1).
Например, комбинация 100100110 отображается на многочлене (29) в виде:
100100110 1x8 + 0x7 + 0x6 + 1x5 + 0x4 + 0x3 + 1x2 + 1x +0 =
= x8 + x5 + x2 + x.
Преобразование кодовых комбинаций циклических кодов сводится к действиям сложения, умножения и деления над степенными многочленами.
1. Сложение (x5 + x4 + x2 + 1) + (x4 + x3 + x2 + x + 1)
x5 + x4 + 0 + x2 + 0 + 1
0 + x4 + x3 + x2 + x + 0
x5 + 0 + x3 + 0 + x + 1 = x5 + x3 + x + 1
2. Умножение (x4 + x2 + x + 1) (x2 + 1)
x4 + 0 + x2 + x + 1
x2+ 1
x4 + 0 + x2 + x + 1
x6+0+x4 + x3+ x2
x6+0+0 + x3 +0 + x + 1 = x6 + x3 + x + 1.
3. Деление (x5+x3+x2+1):(x+1)
x5+0+x3+x2+0+1 x+1
x5+x4 x4+x3+x+1
x4+x3+x2+0+1
x4+x3
x2+0+1
x2+x
x+1
x+1
0.
Прежде чем приступить к изложению материала по построению циклических кодов, необходимо привести их основные положения.
Циклическим кодом (n, k) называется систематический код, каждая комбинация которого делится без остатка на образующий многочлен P(x) степени r=n-k. Причем каждая кодовая комбинация циклического кода представляется в виде многочлена степени n-1.
В качестве образующих многочленов P(x) используются неприводимые многочлены. Неприводимый многочлен это такой многочлен, который делится без остатка только на самого себя или на единицу.
В общем виде алгоритм построения циклических кодов может быть представлен в следующем виде:
1. Выбирается число информационных элементов циклического кода F(x).
2. Выбирается образующий многочлен P(x).
3. Каждая кодовая комбинация простого двоичного множества умножается на xr (Q(x)xr).
4.
Полученное произведение делится на
образующий многочлен P(x)
,
,
находится частное
G(x)
и остаток R(x).
5. Определяется кодовый многочлен F(x) циклического кода
F(x) = Q(x)xr + R(x) (30).
Например: построить кодовую комбинацию циклического кода F(x) с числом информационных элементов k=6. В качестве образующего многочлена определен многочлен вида P(x)=x3+x+1. В этом случае число проверочных элементов r=3 (определяется по степени образующего многочлена).
1. Общее число элементов кодовой комбинации циклического кода равно n=k+r=6+3=9.
2. Образующий многочлен P(x)=x3+x+1.
3. Выбирается комбинация простого двоичного числа исходного множества (любая) Q(x)=010111x4+x2+x+1 и определяется произведение Q(x)xr=(x4+x2+x+1)x3=x7+x5+x4+x3.
4. Определение частного G(x) и остатка R(x)
G(x) + R(x) =
x7+x5+x4+x3 x3+x+1
x7+x5+x4 x4+1
0 + 0 +0 + x3
x3+x+1
x+1
Следовательно, G(x)=x4+1; R(x)=x+1.
В соответствии с формулой (30) определяется кодовый многочлен F(x) и кодовая комбинация циклического кода (9,6) в двоичной форме:
F(x)=Q(x)xr+R(x)=(x7+x5+x4+x3)+(x+1)
F(0,1)=010111 011
где: 010111 - информационные элементы циклического кода k;
011 - проверочные элементы циклического кода r.
В таблице 4.9 приведен пример множества кодовых комбинаций циклического кода F(x)9,6 при образующем многочлене P(x)=x3+x+1.
Образующий многочлен P(x)=x3+x+1; F(x)=Q(x)xr+R(x)
Таблица 4.9
Кодовые комбинации циклического кода
Простой двоичный код Q(x) |
Кодовый многочлен Q(x) |
Q(x)xr |
Остаток R(x)
|
Кодовая комбинация циклического кода |
|
двоичная форма F(1,0) |
Кодовый многочлен F(x) |
||||
000001 |
1 |
x3 |
x+1 |
000001011 |
x3+x+1 |
000010 |
X |
x4 |
x2+x |
000010110 |
x4+x2+x |
000011 |
x+1 |
x4+x3 |
x2+1 |
000011101 |
x4+x3+x2+1 |
000100 |
x2 |
x5 |
x2+x+1 |
000100111 |
x5+x2+x+1 |
000101 |
x2+1 |
x5+x3 |
x2 |
000101100 |
x5+x3+x2 |
000110 |
x2+x |
x5+x4 |
1 |
000110001 |
x5+x4+1 |
000111 |
x2+x+1 |
x5+x4+x3 |
x |
000111010 |
x5+x4+x3+x |
001000 |
x3 |
x6 |
x2+1 |
001000101 |
x6+x2+1 |
001001 |
x3+1 |
x6+x3 |
x2+x |
001001110 |
x6+x3+x2+x |
001010 |
x3+x |
x6+x4 |
x+1 |
001010011 |
x6+x4+x+1 |
001011 |
x3+x+1 |
x6+x4+x3 |
0 |
001011000 |
x6+x4+x3 |
001100 |
x3+x2 |
x6+x5 |
x |
001100010 |
x6+x5+x |
001101 |
x3+x2+1 |
x6+x5+x3 |
1 |
001101001 |
x6+x5+x3+1 |
001110 |
x3+x2+x |
x6+x5+x4 |
x2 |
001110100 |
x6+x5+x4+x2 |
001111 |
x3+x2+x+1 |
x6+x5+x4+x3 |
x2+1 |
001111101 |
x6+x5+x4+x3+x2+1 |
010000 |
x4 |
x7 |
1 |
010000001 |
x7+1 |
010001 |
x4+1 |
x7+x3 |
x |
010001010 |
x7+x3+x |
010010 |
x4+x |
x7+x4 |
x2+1 |
010010101 |
x7+x4+x2+1 |
010011 |
x4+x+1 |
x7+x4+x3 |
x2 |
010011100 |
x7+x4+x3+x2 |
010100 |
x4+x2 |
x7+x5 |
x2+x |
010100110 |
x7+x5+x2+x |
010101 |
x4+x2+1 |
x7+x5+x3 |
x2+1 |
010101101 |
x7+x5+x3+x2+1 |
Образующими многочленами при построении циклических кодов используются неприводимые многочлены, т.е. такие многочлены, которые делятся без остатка только на самого себя или единицу. Степень выбранного образующего многочлена должна равняться числу проверочных элементов r.
В таблице 4.10 приведены все неприводимые многочлены до шестой степени.
Таблица 4.10
Неприводимые многочлены
№ |
Вид неприводимого многочлена |
1 |
x+1 |
2 |
x2+x+1 |
3 |
x3+x+1 x3+x2+1 |
4 |
x4+x+1 x4+x3+1 x4+x3+x2+x+1 |
5 |
x5+x2+1 x5+x3+1 x5+x3+x2+x+1 x5+x4+x2+x+1 x5+x4+x3+x+1 x5+x4+x3+x2+1 |
6 |
x6+x+1 x6+x3+1 x6+x4+x2+x+1 x6+x4+x3+x+1 x6+x5+1 x6+x5+x2+x+1 x6+x5+x3+x2+1 x6+x5+x4+x+1 x6+x5+x4+x2+1 |
Обнаружение и исправление одиночных искажений в циклических кодах при кодовом расстоянии dmin=3 осуществляется следующим образом:
1. Принятая комбинация циклического кода F’(1,0) делится на образующий многочлен P(x), она считается достоверной, если остаток от деления равен нулю, в противном случае комбинация принята с искажением.
2. Определяется вес остатка p0. При p0 S принятая комбинация суммируется по модулю 2 с полученным остатком, образованная сумма определяет исправленную комбинацию (переданную комбинацию).
3. При p0S производят циклический сдвиг принятой кодовой комбинации на один разряд влево. Полученная комбинация снова делится на образующий многочлен. Если в результате второго деления вес полученного остатка меньше или равен числу исправляемых искажений p0 S, то делимое суммируется с остатком.
4. Производится циклический сдвиг полученной суммы на один разряд вправо. Образованная после сдвига кодовая комбинация м является восстановленной (исправленной) комбинацией.
5. Если в результате второго деления условие p0 S не выполняется, то указанная операция продолжает выполняться до тех пор, пока не будет реализовано неравенство p0 S.
6. Полученная кодовая комбинация в результате последнего циклического сдвига суммируется с остатком от деления этой комбинации на образующий многочлен.
7. Производится циклический сдвиг вправо на столько разрядов, на сколько была сдвинута суммируемая с последним остатком кодовая комбинация относительно принятой кодовой комбинации. В результате получают исправленную кодовую комбинацию.
Пример.
При передаче кодовой комбинации циклического кода, исправляющего одиночные ошибки, произошло искажение в пятом разряде. Передавалась кодовая комбинация 1100101, принятая кодовая комбинация имеет вид 1110101. В рассматриваемом примере число исправляемых искажений S=1, число информационных символов кодовой комбинации k=4, число проверочных символов r=3. Следовательно, образующий многочлен будет иметь вид P(x)=x3+x2+1.
Степень образующего многочлена определяется числом проверочных символов, а сам образующий многочлен выбирается из таблицы неприводимых многочленов, таблица 9. Причем многочлен может быть взят любым из подмножества многочленов третьей степени. Если степень образующего многочлена будет иной, то и подмножество многочленов выбирается из подкласса рассматриваемой степени.
1. Деление принятой кодовой комбинации на образующий многочлен P(x)=x3+x2+1 1101.
1110101 1101
1101
1110
1101
111 остаток p0=3.
2. При сравнении веса остатка (p0=3) с числом исправляемых искажений S=1, имеем p0 S. Условие p0 S не выполняется.
3. Производится циклический сдвиг принятой кодовой комбинации на один разряд влево и повторное деление на образующий многочлен P(x).
1101011 1101
1101
011 остаток (вес остатка p0=2). Условие p0S не выполняется.
4. Сдвиг поразрядно влево и деление на образующий многочлен осуществляется до тех пор пока не будет выполнено условие p0S.
1010111 1101
1101
1111
1101
1011
1101
110 остаток p0=2S
0101111 1101
1101
1101
1101
1 остаток p0=1=S. Условие p0S выполнено.
5.При суммировании по модулю 2 последнего делимого 0101111 с остатком, получают комбинацию
0101111
1
0101110
6. Производится циклический сдвиг вправо полученной комбинации на 3 разряда (т.к. трижды при делении на образующий многочлен влево сдвигалась принятая кодовая комбинация).
0101110 0010111 10011 1100101.
Последняя кодовая комбинация полностью совпадает с переданной неискаженной кодовой комбинацией, т.е. произошло исправление принятой с искажением кодовой комбинации.
6.1.2.3. Коды Боуза-Чоудхури-Хоквингема (БЧХ) – относятся к классу циклических кодов и по своей разрешающей способности позволяют обнаруживать и исправлять два и более искажений кодовых комбинаций, возникающих при их передаче по каналам связи. Для таких кодов кодовое расстояние определяется как dmin5. Образующий многочлен построения множества кодовых комбинаций кодов БЧХ формируется на основании заданного количества кодовых комбинаций n, которое в сою очередь определяется полным множеством кодовых комбинаций кодов БЧХ - N и по числу исправляемых искажений S. Число элементов кодовой комбинации БЧХ определяется как n=2m-1, где m - любое целое число (3, 4, 5, ...), число проверочных элементов кодовой комбинации выбирается из условия r mS = (log2(n+1))S, а число информационных элементов будет равно k=n-r.
Образующий многочлен P(x) кода БЧХ представляет собой произведение нечетных минимальных многочленов mi(x) и является их наименьшим общим кратным (НОК), т.е. наименьшим многочленом который без остатка делится на каждый минимальный многочлен mi(x), где i=(1, 3, 5, ..., (2S-1)). Порядок многочлена P(x) равняется наименьшему общему кратному P(x)=НОКm1(x) m3(x) ... m2S-1(x). Значения минимальных многочленов приведены в таблице 4.11.
Таблица 4.11
Коды минимальных многочленов
Ппорядок многочлена i |
Минимальные многочлены при величине степени m |
|||||||
|
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
1 |
1111 |
1011 |
10011 |
100101 |
1000011 |
10001001 |
100011101 |
100001001 |
3 |
|
1101 |
11111 |
111101 |
1010111 |
10001111 |
101110111 |
1001011001 |
5 |
|
|
111 |
110111 |
1100111 |
10011101 |
111110011 |
1100110001 |
7 |
|
|
11001 |
101111 |
1001001 |
11110111 |
101101001 |
1010011001 |
9 |
|
|
|
110111 |
1101 |
10111111 |
110111101 |
1100010011 |
11 |
|
|
|
111011 |
1101101 |
11010101 |
111100111 |
1000101101 |
13 |
|
|
|
|
|
10000011 |
100101011 |
1001110111 |
15 |
|
|
|
|
|
|
111010111 |
1101100001 |
17 |
|
|
|
|
|
|
010011 |
1011011001 |
19 |
|
|
|
|
|
11001011 |
101100101 |
1110000101 |
21 |
|
|
|
|
|
11100101 |
110001011 |
1000010111 |
23 |
|
|
|
|
|
|
101100011 |
1111101001 |
25 |
|
|
|
|
|
|
100011011 |
1111100011 |
27 |
|
|
|
|
|
|
100111111 |
1110001111 |
29 |
|
|
|
|
|
|
|
1101101011 |
Образующий многочлен с общим числом элементов n=2m-1 и с числом исправляющий искажений S строится следующим образом. Из таблицы 4.11 выписываются все значения минимальных многочленов, соответствующих выбранному m до порядка 2S-1. Если в таблице такого числа нет, то выбирается минимальный нижний предел.
Например: цель - построить код БЧХ с общим числом элементов кодовой комбинации n=15, и исправляющим двойные искажения S=2.
1. Из формулы n=2m-1 определяется m
2m = n+1 по определению логарифма m=log2(n+1)=log2(15+1)=4.
Следовательно, общий вид образующего многочлена имеет вид:
P(x)=m1(x) m3(x) ... m2S-1(x)=m1(x) m3(x).
2. Из таблицы 9 столбца m=4 выбирают многочлены для i=1 и i=3, т.е. m1=10011, m3=11111 откуда: m1=x4+x+1, m3=x4+x3+x2+x+1
3. Определяют вид образующего многочлена
P(x) = m1(x) m3(x) = 100111111 = 111010001 = x8+x7+x6+x4+1
4. Определяют число проверочных и информационных элементов кодовых комбинаций кодов БЧХ: число проверочных элементов rmS=42=8; число информационных элементов k=n-r=15-8=7.
5. Строят дополнительную матрицу G8,7 производящей матрицы G15,7. Дополнительная матрица G8,7 образуется делением единицы на кодовую комбинацию образующего многочлена P(x)=111010001
1
00000000
111010001
1
11010001
11010001 = R1(x)
110100010
111010001
01110011 = R2(x)
11100110 = R3 (x)
111001100
111010001
00011101 = R4(x)
00111010 = R5(x)
01110100 = R6(x)
11101000 = R7(x)
6.
Определяют производящую матрицу G15,7
0000001 11010001
0000010 01110011
0000100 11100110
G15,7 = 0001000 00011101
0010000 00111010
0100000 01110100
1000000 11101000
7. Строки производящей матрицы составляют подмножество множества кодовых комбинаций кодов БЧХ, остальные кодовые комбинации кодов БЧХ определяют по матрице G15,7 сложением по модулю 2 всех возможных строк производящей матрицы.
Общее число множества кодовых комбинаций кода БЧХ для рассмотренного случая определится как N=2k=27=128.
Например из 1-ой и 2-ой кодовых комбинаций производящей матрицы получают следующую кодовую комбинацию кодов БЧХ
0000001 11010001
0000010 01110011
N3= 0000011 10100010 и т.д.
Для примера целесообразно рассмотреть построение множества кодов БЧХ и для случая обнаружения и исправления тройных искажений в кодовых комбинациях. Ставится задача - построить множество кодовых комбинаций кодов БЧХ с общим числом элементов n=15 и количестве исправляемых искажений равных 3 (S=3).
1. Определяем степень минимальных многочленов m для построения образующего многочлена P(x)
m = log2(n+1) = log216 = 4.
Следовательно образующий многочлен будет иметь вид:
P(x) = m1(x) m3(x) ... m2S-1(x) = m1(x) m3(x) m5(x)
2. Из таблицы 9 (столбец m=4) выбирают три минимальных многочлена с i=1,3,5 m1(x)=10011=x4+x+1, m3(x)=11111=x4+x3+x2+x+1,
m5(x)=111=x2+x+1
3. Образующий многочлен для рассматриваемого примера определится как P(x)=m1(x) m3(x) m5(x)=10011 11111 111=10100110111 x10+x8+x5+x4+x2+x+1.
4. Число проверочных элементов кодовых комбинаций r определится следующим образом rm S=43=12, но так как степень образующего многочлена P(x) равна 10, то r выбирается равным 10, r=10.
5. Число информационных элементов кода БЧХ определится как k=n-r (k=15-10=5).
6. По образующему многочлену P(x) строится дополнительная матрица G10,5 производящей матрицы G15,5. Строки дополнительной матрицы G10,5 определяются в результате получения остатков от деления 1 с приписанными справа нулями на образующий многочлен P(X)=10100110111, таких остатков должно образоваться 5, т.к. число кодовых комбинаций остатка равно числу проверочных элементов r (r=10).
7. По дополнительной матрице G10,5 строится производящая матрица G15,5. Число строк такой матрицы также равно 5 (т.е. количеству информационных элементов k=5).
8. По образующей матрице путем суммирования ее строк определяются остальные кодовые комбинации множества кодов БЧХ, состоящих из 15 элементов и исправляющих тройные искажения.
Процесс построения дополнительной и производящей матриц, как и процесс формирования множества кодов БЧХ описан в предыдущем примере.
Для обнаружения и исправления искажений в кодовых комбинациях БЧХ алгоритм функционирования синдрома приемного устройства аналогичен алгоритму обнаружения и исправления искажений в простейших циклических кодах с минимальным кодовым расстоянием dmin2S+1.
Алгоритм обработки и исправления искажений кодовой комбинации кодов БЧХ целесообразно рассмотреть на конкретном примере.
Пример. Цель - произвести исправление двойного искажения (S=2) в принятой кодовой комбинации кода БЧХ с общим числом элементов n=15 и числом информационных элементов k=7.
Для примера построим кодовую комбинацию множества кодов БЧХ на основании производящей матрицы G15,7. рассмотренной несколько выше. Сложением по модулю 2 трех строк производящей матрицы G15,7 образуется следующая кодовая комбинация кода БЧХ
001000000111010
010000001110100
100000011101000
111000010100110
Предположим, что при передаче кодовой комбинации кодов БЧХ Ni(1,0) = 111000010100110 произошло двойное искажение в двух соседних элементах (3 и 4 элементы младших разрядов). Принятая кодовая комбинация будет иметь вид Ni(1,0)=111000010101010.
Для исправления искажений в принятой кодовой комбинации необходимо принятую комбинацию разделить на образующий многочлен P(x)=P(1,0)=111010001. Образующий многочлен взят из приведенного примера, где и описано его построение.
11100010101010 111010001
111010001
100111010
111010001
111010111
111010001
1100 остаток p = S = 2,
т.е. вес остатка равен числу исправляемых искажений. Напоминаем, что для нахождения искаженных элементов кодовых комбинаций кодов БЧХ и их исправлений необходимо выполнение условия, чтобы вес остатка (количество единиц в остатке) был меньше или равен числу исправляемых искажений, т.е. pS. После чего принятая комбинация суммируется с полученным остатком по модулю 2. Полученная сумма и даст исправленную кодовую комбинацию. Если pS, то производится циклический сдвиг принятой комбинации на один разряд влево, и вновь образованная кодовая комбинация делится на образующий многочлен. Эта операция повторяется до тех пор, пока не будет выполняться условие pS. Затем производится последовательно сдвиг последней кодовой комбинации вправо на столько разрядов, на сколько была сдвинута влево искаженная кодовая комбинация. В результате циклического сдвига образуется исправленная кодовая комбинация.
Итак, в рассмотренном примере вес остатка равен числу исправляемых искажений (p=S=2), что удовлетворяет условию pS. Производя суммирование по модулю 2 принятой искаженной кодовой комбинации с полученным остатком, производится исправление искажений
111000010101010
1100
111000010100110 исправленная комбинация.
Для получения полной картины исправления искажений необходимо рассмотреть несколько вариантов.
Допустим, что искажены не соседние разряды кодовой комбинации кодов БЧХ, а первый и шестой, т.е. принятая кодовая комбинация будет иметь вид 111000010000111.
111000010000111 111010001
111010001
100110001
111010001
111000001
111010001
100001 остаток p=2.
Условие p S выполняется, производится суммирование остатка с принятой кодовой комбинацией
111000010000111
100001
111000010100110 исправленная комбинация.
При искажении пятого и тринадцатого элементов принятой комбинации алгоритм исправления определится как принятая искаженная комбинация 110000010110110
110000010110110 111010001
111010001
101001111
111010001
100111100
111010001
111011011
111010001
101010 остаток p=3 S
Производится сдвиг принятой кодовой комбинации (искаженной) 110000010110110 на один разряд влево, получаем 100000101101101. Производим деление вновь образованной кодовой комбинации на образующий многочлен.
100000101101101 111010001
111010001
110101001
111010001
111100001
111010001
110000101
111010001
1010100 остаток p=3S.
Повторяем операцию сдвига еще раз 000001011011011
000001011011011 111010001
111010001
101111001
111010001
10101000 остаток p=3S.
Т.к. pS кодовая комбинация 000001011011011 сдвигается еще на один разряд влево, получают 000010110110110.
000010110110110 111010001
111010001
101111001
111010001
101010000
111010001
10000001 остаток p=2=S.
Условие pS выполняется, т.к. S=2.
Производится сложение по модулю 2 сдвинутой на 3 разряда влево принятой искаженной кодовой комбинации 000010110110110 с последним остатком 10000001.
000010110110110
10000001
000010100110111
Производим трехкратный сдвиг вправо результата суммирования 000010100110111. В результате такого сдвига получают исправленную кодовую комбинацию, переданную с передающего комплекта системы передачи данных, функционирующей в кодовом множестве БЧХ.
000010100110111 100001010011011 110000101001101 111000010100110 (исправленная кодовая комбинация)
Рассмотренные методы кодирования и декодирования информации являются типичными представителями средств и методов кодирования информации с обнаружением и исправлением ошибок в цифровых системах связи. При передаче информации по каналу с помехами (реальный случай) всегда существует вероятность того, что принятые данные будут содержать ошибки, вследствие чего устанавливается определенный уровень частоты появления ошибок, при превышении которого переданные данные считаются недостоверными и для дальнейшей обработки их использовать нельзя. Если частота ошибок в принимаемых данных превышает допустимый уровень, то в этом случае применяют системы кодирования с обнаружением и исправлением ошибок, которые повышают достоверность принимаемой информации.
Способность корректирующего кодирования была доказана еще в работах Шенона, он показал, что если пропускная способность канала больше скорости создания сообщений источником, то при использовании эффективных систем кодирования и декодирования можно вести передачу по каналам с шумами со сколь угодно малой вероятностью ошибок, т.е. в работах Шеннона показано, что мощность сигнала, помехи и полоса частот ограничивают лишь скорость передачи информации, а не ее точность.
Наряду с построением систем помехоустойчивого кодирования рассмотренные методы нашли свое применение и в системах защиты информации от несанкционированного доступа. Например, ключом кодовой защиты в циклических кодах является выбор образующего многочлена, с помощью которого происходит преобразование исходного двоичного кода систем первичного кодирования. В этом случае мощность множества ключей кодирования возрастает с увеличением степени образующего многочлена, т.е. с увеличением числа информационных и проверочных элементов, что и определяет степень устойчивости кодовых комбинаций к несанкционированному распознаванию.
Однако, прежде чем перейти к вопросам защиты информации от несанкционированного доступа, необходимо рассмотреть методы формирования исходных кодовых комбинаций, применяемых в современных вычислительных системах. Примером такого исходного кодирования является преобразование семантического алфавита в операционных оболочках Windows, определяемые как кодирование по стандарту CP-1251 или Windows-кодирование. Эта система кодирования не содержит символы псевдографики и получила в настоящее время наибольшее распространение как в локальных, так распределенных и глобальных системах типа Internet. При применении указанной системы кодирования семантического алфавита, каждый символ алфавита кодируется 8-битовой двоичной комбинацией. Однако, применение системы 8-битового кодирования имеет существенный недостаток, т.к. не обеспечивает кодирование символов алфавитов азиатских стран.
В настоящее время для обмена информацией на языках всех стран мира создается универсальная система кодирования UNICODE. В ее основе заложено 16-битовое кодирование. Т.е. каждый символ естественного алфавита, на каком бы языке стран мира он не отображался, представляет собой 16-разрядную кодовую комбинацию. В этом случае общее число кодовых комбинаций составит N=2n=216=65536. Такое количество кодовых комбинаций позволяет кодировать даже полные наборы иероглифов всех восточных и арабских языков, а также все математические и химические символы. Такие системы кодирования не требует включения в набор сервисных программ-программ перекодирования естественных символов с одного стандарта на другой.