5_Kriptosistema_Mak-Elis
.pdf
Если код имеет минимальное кодовое расстояние dmin , то он
гарантированно (т. е. полностью) исправляет все
кратности не более t x, а кратность ошибки
d |
min |
|
|
|
|
|
2 |
|
|
|
– число искаженных позиций, т.
ошибки
е. число
единиц в образце ошибки
e
.
В теории кодирования [4] разработаны методы построения
ЛК (т. е. фактически их обеспечивают максимально
заданных параметрах |
(n, k). |
порождающих матриц), которые
возможные величины |
d |
min |
при |
|
|
|
Как видно из соотношения (3.14), процедура кодирования для ЛК оказывается достаточно простой. Более того, для некоторых классов ЛК (например, для так называемых циклических кодов)
она может быть еще более упрощена [4].
Декодирование линейных кодов
1.По максимуму правдоподобия – подобрать кодовое слово, имеющее мин. хемминговское расстояние от принятого слова.
2.Синдромное декодирование
|
T |
( y e )H |
T |
yH |
T |
eH |
T |
0 eH |
T |
. |
y H |
|
|
|
|
|
eH |
T |
|
-синдром
-найти синдром |
eH |
T |
|
-по синдрому найти вектор ошибок (по таблице)
-сложить принятое слово и вектор ошибок y y
-выделить информационную часть кодового слова.
e
e
eH T
; |
|
|
|
|
|
||
; |
111 |
|
|
|
|
|
|
|
|
||
|
011 |
|
|
|
101 |
|
|
(0010000) |
|
|
(101) |
110 |
|
||
|
100 |
|
|
|
|
|
|
|
010 |
|
|
|
|
|
|
|
001 |
|
|
3. Конструктивные (подоптимальные) способы декодирования
Однако процедура декодирования (т. е. исправления ошибок) остается весьма сложной для произвольных линейных кодов. Действительно, если известно, что данный код имеет заданное
d |
min |
и произошла ошибка |
кратности |
t [d |
min |
/ 2] |
, то для |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
декодирования достаточно |
вычислить |
расстояния |
Хэмминга |
||||
(т. е. число различных позиций) между принятым искаженным |
|||||
|
~ |
|
|
|
|
словом |
и всеми возможными кодовыми словами y V и |
||||
y |
|||||
принять решение о передаче того кодового слова, для которого это расстояние минимально. Однако число кодовых слов в коде с
параметрами
(n, k)
равно
2 |
k |
|
и при больших значениях k
это число оказывается непереборно большим, т. е. такая процедура является практически нереализуемой.
y2
y1
|
y |
|
|
j |
|
y ' |
y |
i |
|
||
|
|
y2k
Более того, в теории вычислительной сложности [9] доказывается утверждение, что если бы для любых ЛК был найден полиномиально сложный алгоритм исправления ошибок по минимуму расстояния Хэмминга, то его можно было бы использовать и для решения множества других трудных задач, которые до сих пор не имеют полиномиально сложных решений. Поэтому задача нахождения простого алгоритма декодирования для произвольных ЛК является весьма сложной.
Для того чтобы упростить процедуру исправления ошибок в
задачах связи, используют подоптимальные декодирования для подклассов ЛК (например, называемых кодов Гоппы, для которых
декодирования задается соотношением O n |
2 |
|
[3]). |
|
алгоритмы
для так сложность
Особенность ЛК, выражающаяся в простоте кодирования и сложности декодирования, где последняя может быть преодолена при переходе к некоторым подклассам ЛК и
используется для построения КС Мак-Элис.
Валерий
Денисович
Гоппа
Первым (1981) осознал связь между алгебраической геометрией и теорией кодирования.
Криптосистемы на основе алгебраического кодирования
Роберт |
Геральд |
Мак-Элис, |
Ниддерайтер |
1978 год |
1986 год |
2. |
Мас-Элис |
|
КриптосистемаОписан КС Мак-Элис |
Если пользователь A хочет сгенерировать свою пару открытый/закрытый ключ, то эта процедура реализуется следующими шагами:
1) генерируется случайная порождающая матрица GA для специального подкласса двоичных (n, k)-кодов (скажем, для кода
Гоппы), которые гарантированно исправляют |
t |
A |
ошибок |
и |
|
|
|
|
имеют полиноминально сложный алгоритм декодирования;
Gk nA
2) генерируется случайная двоичная несингулярная (т. имеющая ненулевой определитель) матрица S A размером k
k
е.
;
S k kA
3) генерируется случайная |
перестановочная |
n n матрица |
P |
|
|
|
|
|
A |
(перестановочной называется |
такая матрица |
P |
произведение |
|
A , |
|
|||
которой на любой вектор дает лишь перестановку его позиций. |
|
|||
Такая одной
матрица содержит в каждой строке и в каждом столбце по |
|||
P |
n n |
|
|
единице, а остальные ее элементы – нули.); |
|
|
|
|
A |
||
4) будет
вычисляется матрица |
|
k n |
); |
G |
A |
S |
A |
G |
A |
P |
|
|
|
A |
(ее размерность
Задается параметр безопасности
tA
- число ошибок в код. слове
5) тайне
публикуется открытый ключ |
||||||
секретный ключ |
S |
A |
, G |
A |
, P |
|
|
|
|
A |
|
||
.
G |
, t |
A |
A |
|
, |
и сохраняется в |
n
|
n |
|
k |
|
|
|
|
|
|
|
|
|
|
k |
k |
G A |
= k |
SA |
|
|
|
|
|
|
n
GA
n
PA
Шифрование КС Мак-Элис
Если пользователь В хочет зашифровать сообщение M для пользователя А, то он должен выполнить следующие шаги:
1)получить от А открытый ключ ( GA , tA ) ;
2)преобразовать сообщение M в последовательность
двоичных блоков M |
i |
длины k. |
Далее |
|
для |
каждого из |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
полученных блоков проделать следующие шаги 3–5; |
|
|
||||||||||||
3) сгенерировать случайный двоичный вектор |
Zi |
|
длины n и |
|||||||||||
веса (т. е. числа единиц в нем) не более |
t |
A |
; |
|
|
|
|
|
||||||
|
|
|
|
|
|
|||||||||
4) вычислить двоичный вектор |
C M |
G |
A |
Z |
i |
; |
||||||||
|
|
|
|
|
i |
|
|
i |
|
|
|
|
||
5) послать вектор |
|
C |
i |
к пользователю А как криптограмму для |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
сообщения M i .
Дешифрование КС Мак-Элис
Для того чтобы восстановить сообщение |
M |
i |
по |
||
|
|||||
криптограмме |
C |
, пользователь А должен выполнить |
|||
шаги: |
i |
|
|
|
|
|
|
|
|
|
|
следующие
1) вычислить
P |
; |
A |
|
Ci
C |
P |
1 |
|
|
, где |
||
i |
A |
|
|
P 1 A
– это матрица, обратная
2) используя известный алгоритм декодирования для кода с
порождающей матрицей |
G |
A , исправить не более |
|
C |
i |
, что даст некоторый двоичный вектор |
M |
i |
|||||
|
|||||||||
|
|
M |
|
M |
|
1 |
|
||
|
|
|
|
|
|
||||
|
3) восстановить |
|
|
|
|
||||
|
i |
i |
S. |
|
|
||||
|
|
|
|
|
A |
|
|
||
t |
ошибок в |
A |
длины k;
Для доказательства |
того, что описанная |
выше |
процедура |
|||
действительно восстанавливает зашифрованное сообщение |
M |
i |
, |
|||
|
||||||
преобразуем сначала представление для C : |
|
|
|
|
||
|
|
|
|
|
||
|
i |
|
|
|
|
|
Ci Ci PA 1 |
MiGA Zi PA 1 |
|
(3.15) |
|||
Mi SAGA PA Zi PA 1 Mi SA GA Zi PA 1.
