Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / Лекция 11 - Криптосистема Мак-Элис.pptx
Скачиваний:
0
Добавлен:
04.06.2026
Размер:
1.71 Mб
Скачать

Пример линейного кода

 

 

1000

111

 

 

 

 

 

 

 

 

Код Хемминга (7,4)

G

0100 011 I ,P

 

 

 

 

 

 

 

 

 

 

 

k

 

 

 

001 0 101

 

 

 

 

0001

110

 

 

y xG (x,c ),

где c xP

 

 

 

 

111

 

x 1100

 

 

011

y 1100100

c xP 1100

101 100

 

 

 

 

 

 

 

 

 

 

 

 

 

11 0

 

yHT (x,c )H T 000 s

S - синдром

 

1011 100

 

 

 

H 1101 010

 

PT ,I

 

 

 

 

 

 

n k

 

1110 001

 

 

 

 

 

 

 

 

 

Если в кодовом слове y возникает ошибка e (при его передаче по каналу связи или при хранении), т. е. y y e (где e имеет единицы в позициях с ошибками и нули в остальных позициях, а означает поэлементное суммирование по mod 2), то, используя свойства кода, некоторые ошибки можно

исправить (восстановить информационную последовательность

~

x по искаженному кодовому слову y ).

Исправляющие свойства кода задаются его так называемым

минимальным кодовым расстоянием dmin , которое опреде- ляется как минимальное число позиций, в которых отличаются любые несовпадающие между собой кодовые комбинации.

y

e y

x

 

 

 

 

 

 

 

 

 

y 1100100

T

(x,c )H

T

101 s

e 0010000

y H

 

y 1110100

 

 

 

 

x 1100

 

 

 

 

Если код имеет минимальное кодовое расстояние dmin , то он

гарантированно (т. е.

полностью) исправляет все ошибки

d

min

 

 

кратности не более t

 

 

, где [x] означает целую часть числа

 

2

 

 

 

x, а кратность ошибки – число искаженных позиций, т. е. число

единиц в образце ошибки

 

e .

В теории кодирования [4] разработаны методы построения ЛК (т. е. фактически их порождающих матриц), которые

обеспечивают максимально

возможные величины dmin при

заданных параметрах (n, k).

 

Как видно из соотношения (3.14), процедура кодирования для ЛК оказывается достаточно простой. Более того, для некоторых классов ЛК (например, для так называемых циклических кодов) она может быть еще более упрощена [4].

Декодирование линейных кодов

1.По максимуму правдоподобия – подобрать кодовое слово, имеющее мин. хемминговское расстояние от принятого слова.

2.Синдромное декодирование

 

 

T

 

T

T

T

T

 

eHT

-синдром

 

y H ( y e )H yH eH 0 eH .

 

 

 

 

 

 

 

-найти синдром

eHT

 

 

 

e

 

 

 

 

 

 

 

-

по синдрому найти вектор ошибок (по таблице)

 

;

 

 

111

 

 

-

сложить принятое слово и вектор ошибок y y e

;

 

 

-

выделить информационную часть кодового слова.

 

 

 

 

 

 

 

 

 

 

 

 

 

011

 

 

 

 

 

 

 

 

 

 

 

 

 

101

 

 

 

 

 

 

 

 

 

eH

T

(0010000)

 

 

 

(101)

 

 

 

 

 

 

 

 

110

 

 

 

 

 

 

 

 

 

 

 

 

 

100

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

010

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

001

 

3. Конструктивные (подоптимальные) способы декодирования

Однако процедура декодирования (т. е. исправления ошибок) остается весьма сложной для произвольных линейных кодов. Действительно, если известно, что данный код имеет заданное

dmin и произошла ошибка кратности

t [dmin / 2]

, то для

декодирования достаточно вычислить

расстояния

Хэмминга

(т. е. число различных позиций) между принятым искаженным

словом

~

и всеми возможными кодовыми словами y V и

y

принять решение о передаче того кодового слова, для которого это расстояние минимально. Однако число кодовых слов в коде с параметрами (n, k) равно 2k и при больших значениях k это число оказывается непереборно большим, т. е. такая процедура является практически нереализуемой.

y2

y j

y'

yi

y1

 

y2k

Более того, в теории вычислительной сложности [9] доказывается утверждение, что если бы для любых ЛК был найден полиномиально сложный алгоритм исправления ошибок по минимуму расстояния Хэмминга, то его можно было бы использовать и для решения множества других трудных задач, которые до сих пор не имеют полиномиально сложных решений. Поэтому задача нахождения простого алгоритма декодирования для произвольных ЛК является весьма сложной.

Для того чтобы упростить процедуру исправления ошибок в задачах связи, используют подоптимальные алгоритмы декодирования для подклассов ЛК (например, для так

называемых кодов Гоппы, для которых сложность декодирования задается соотношением O n2 [3]).

Особенность ЛК, выражающаяся в простоте кодирования и сложности декодирования, где последняя может быть преодолена при переходе к некоторым подклассам ЛК и используется для построения КС Мак-Элис.

Валерий

Денисович

Гоппа

Первым (1981) осознал связь между алгебраической геометрией и теорией кодирования.

Криптосистемы на основе алгебраического кодирования

Роберт

Геральд

Мак-Элис,

Ниддерайтер

1978 год

1986 год

2. Криптосистема Мас-Элис

Если пользователь A хочет сгенерировать свою пару открытый/закрытый ключ, то эта процедура реализуется следующими шагами:

1) генерируется случайная порождающая матрица GA для специального подкласса двоичных (n, k)-кодов (скажем, для кода Гоппы), которые гарантированно исправляют tA ошибок и имеют полиноминально сложный алгоритм декодирования;

Gk nA

2) генерируется случайная двоичная несингулярная (т. е. имеющая ненулевой определитель) матрица SA размером k k ;

Sk kA

3) генерируется случайная перестановочная n n матрица PA (перестановочной называется такая матрица PA , произведение которой на любой вектор дает лишь перестановку его позиций. Такая матрица содержит в каждой строке и в каждом столбце по

одной единице, а остальные ее элементы – нули.); Pn n

A

 

 

 

 

 

 

 

 

 

GA PA

 

(ее размерность

 

 

4) вычисляется матрица GA SA

 

 

будет k n

);

 

 

 

 

 

 

 

 

 

 

 

Задается параметр безопасности tA

- число ошибок в код. слове

 

 

5) публикуется открытый ключ

 

 

, и сохраняется в

 

 

GA , tA

 

тайне секретный ключ

S A, GA , PA .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

n

 

k

 

 

 

 

n

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k

 

 

= k

SA

 

 

k

 

GA

 

PA

 

 

GA