Некоторые приложения теории кодирования. Учебное пособие
.pdf
4.6. Пример
4.6. Пример
Рассмотрим игрушечный пример работы алгоритмов схемы шифрования типа Мак-Элиса на [7, 4, 3]2-коде Хэмминга C с порождающей матрицей G и проверочной матрицей H вида соответственно:
|
0 1 0 |
0 1 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
|||
|
1 |
0 |
0 |
0 |
0 |
1 |
1 |
, H = 0 1 1 |
|
|
|
1 . |
||
G = |
0 0 1 |
0 1 |
1 |
0 |
0 |
0 |
1 |
|||||||
|
1 |
0 |
1 |
0 |
1 |
0 |
1 |
|||||||
|
0 0 0 |
1 1 |
1 |
1 |
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Пусть алгоритм GenMcE(C), при обращении к нему, вернул пару (pk, sk), где
|
|
|
|
|
˜ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sk = (S, P ), pk = (G = SGP, t = 1): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
0 |
0 0 |
1 |
|
0 1 0 0 0 0 0 |
|
|
1 |
0 |
1 |
1 |
0 |
1 |
0 |
|
||||||
|
|
|
|
|
|
0 |
0 |
0 |
0 |
0 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
1 |
0 1 |
1 |
|
0 0 0 0 1 0 0 |
˜ |
|
1 |
0 |
1 |
0 |
1 |
0 |
1 |
|
||||||
S = |
|
|
|
, P = |
0 0 1 0 0 0 0 |
|
|
|
|
|
|
|
. |
|||||||||
|
|
|
|
, G = |
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 0 |
1 |
|
0 0 0 |
1 0 |
0 0 |
|
1 |
1 |
1 |
0 |
0 |
0 |
0 |
|
||||||
|
1 |
1 0 |
0 |
|
|
|
|
|
|
|
|
|
1 |
1 |
0 |
1 |
0 |
0 |
1 |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 0 0 |
0 0 |
0 0 |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
0 |
0 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Предположим, что отправителю информации требуется зашифровать сообщение m = (1, 1, 1, 0). Для этого ему необходимо случайно выбрать e веса t = 1 и применить Enc (см. рис. 5). Пусть e = (0, 0, 0, 1, 0, 0, 0), тогда
|
1 |
0 |
1 |
0 |
1 |
0 |
1 |
|
|
1 |
0 |
1 |
1 |
0 |
1 |
0 |
|
c = (1, 1, 1, 0) · |
1 1 1 |
0 |
0 |
0 |
0 |
+ (0, 0, 0, 1, 0, 0, 0) = (1, 1, 1, 0, 1, 1, 1). |
||
|
1 |
1 |
0 |
1 |
0 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
В алгоритме расшифрования Dec сначала вычисляется вектор
cP −1 = (1, 1, 1, 1, 0, 1, 1).
Заметим, что cP −1 — испорченное кодовое слово кода Хэмминга C. Прове-
51
Глава 4. Схема асимметричного шифрования
рочная матрица этого кода имеет специальный вид: i-ый столбец представляет собой двоичную запись числа i, i = 1, ..., 7. Поэтому, в случае наличия одной ошибки в кодовом векторе, синдром s = cP −1HT представляет собой номер ошибочной координаты в векторе cP −1. В нашем случае имеем:
|
|
0 |
1 |
0 |
|
|
|
0 |
0 |
1 |
|
cP −1HT = (1, 1, 1, 1, 0, 1, 1) |
|
0 |
1 |
1 |
= (1, 0, 1). |
|
1 1 0 |
||||
|
|
|
|
|
|
|
· |
|
1 |
|
|
|
|
1 |
1 |
|
|
|
|
|
|
|
|
|
|
1 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
1 |
|
|
|
|
|
|
|
Следовательно, в cP −1 испорчена пятая координата. То есть
mSG = (1, 1, 1, 1, 1, 1, 1).
Так как G записана в систематическом виде, то первые четыре координаты кодового вектора представляют собой mS = (1, 1, 1, 1). Откуда
1 |
1 |
0 |
1 |
0 |
|
|
1 |
0 |
1 |
1 |
|
mS · S− = (1, 1, 1, 1) · |
0 1 1 |
1 |
= (1, 1, 1, 0) = m. |
||
|
1 |
0 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
4.7. Вопросы для самоконтроля
1.Определение схемы асимметричного шифрования.
2.Определение механизма инкапсуляции сеансового ключа.
3.Схема типа Мак-Элиса.
4.Схема типа Нидеррайтера.
5.Механизмы инкапсуляции на основе схем типа Мак-Элиса и типа Нидеррайтера.
52
Глава 5
Схема цифровой подписи
5.1. Постановка задачи
Пусть два участника (отправитель и получатель) намерены организовать защищённый ЦКПД, при этом целью защиты является обеспечение целостности данных. То есть получатель должен иметь механизм проверки того, что принятые из канала данные совпадают с теми данными, которые передал в канал отправитель. Естественно, не существует криптографических способов, препятствующих изменению данных, передаваемых по ЦКПД, но имеется способ, позволяющий выявить факт изменения данных. Обычно такая защита строится на основе схем цифровой подписи: отправитель перед отправкой данных в канал с помощью ключа добавляет к данным метку (подпись), а получатель, получив из канала данные, проверяет правильность этой метки также с помощью ключа. Часто рассматривают две модели доверия: модель с доверием участников друг к другу и модель без доверия. Под доверием понимается то, что участники не пытаются подделать документ от имени другого.
В случае модели с доверием задача обеспечения целостности может быть решена, например, с помощью ключевой криптографической хешфункции или с использованием блочного симметричного шифра и бесключевой криптографической хеш-функции. В этом случае ключ формирования подписи и ключ проверки подписи совпадают. Если же участники не доверят друг другу, то схема подписи на основе симметричного шифрования не подходит. Например, когда организация-клиент отправляет в банк платежное поручение на зачисление заработной платы на карточные счета
53
Глава 5. Схема цифровой подписи
сотрудников, использование одинаковых ключей для формирования подписи и проверки подписи неприемлемо: работник банка, имеющий доступ к ключу проверки подписи, может изменить платежное поручение (например, увеличить сумму начисления кому-либо) и переподписать его. В этом случае у организации-клиента нет возможности доказать, что документ был изменен на стороне банка.
Поэтому для модели без доверия необходим свой механизм обеспечения целостности. Такой механизм строится на основе асимметричной криптографии, когда для формирования подписи и проверки подписи используются разные ключи, причем по ключу проверки подписи вычислительно сложно найти ключ формирования подписи.
5.2. Определение схемы подписи для модели без доверия
Схема цифровой подписи S = (Gen, Sign, Verify) для модели без доверия
—это тройка алгоритмов:
1.Gen — полиномиальный вероятностный алгоритм генерации пары клю-
чей (sk, pk) K = Ks × Kv (ключевое множество K для разных асимметричных схем подписи имеет разную структуру); ключ sk называется
ключом подписи, pk — ключом проверки;
2.Sign : Ks ×{0, 1} → {0, 1}n — полиномиальный алгоритм подписи данных D из множества {0, 1} на ключе подписи sk из множества Ks; результатом выполнения алгоритма является вектор σ {0, 1}n (подпись), значение которого зависит от подписываемых данных и ключа подписи;
3.Verify : Kv × {0, 1} × {0, 1}n → {0, 1} — полиномиальный алгоритм проверки подписи σ для данных D на ключе проверки подписи pk; результатом проверки является значение 1, если считается, что подпись верна (документ не изменен или изменен так, что алгоритм Verify не способен выявить такое изменение), в противном случае, результатом проверки будет значение 0,
для которой 1) выполняется свойство корректности:
(sk, pk) ← Gen(·), D {0, 1} : Verify(pk, D, Sign(sk, D)) = 1;
54
5.3. Схема CFS
2) по ключу pk вычислительно сложно найти ключ sk и 3) обеспечивается устойчивость к подделке подписи. Последнее означает, что не существует эффективного алгоритма, который без знания sk по парам
(D1, σ1), (D2, σ2), ..., (Dl, σl), σi = Sign(sk, Di), i = 1, ..., l,
может найти такую новую пару (D′, σ′), что Verify(pk, D′, σ′) = 1.
5.3. Схема CFS
Одной из первых кодовых схем подписи считается система CFS [11]. Пусть C — [n, k, d = 2t + 1]q-код, для которого известен эффективный алгоритм декодирования Decoder : Fq → C, h : {0, 1} → Fnq −k — криптографическая хеш-функция. Алгоритм Gen заключается в случайном выборе проверочной матрицы H кода C и матрицы P из множества матриц перестановок Pn; возвращаемая алгоритмом пара имеет вид:
˜
(sk, pk) = ((H, P ), (H = HP, t)).
В алгоритме Sign для подписи сообщения m {0, 1} случайно подбирается такая строка битов i {0, 1} , что уравнение
eHT = h(m, i) |
(5.1) |
имеет решение e веса не более t. Для нахождения такого решения используется Decoder. Именно, по синдрому h(m, i) находится произвольное решение y системы (5.1). А так как множество решений Γ этой системы имеет вид
Γ = {e + c : c C},
то для нахождения e может быть применен декодер к любому вектору из Γ. Таким образом, если Decoder(y) ̸= , то далее вычисляется e = y − Decoder(y), вес которого сравнивается с t. Процесс подбора i продолжается до тех пор, пока не будет найдено решение веса не более t. Подписью сообщения m будет σ = (i, e˜ = eP ).
Для проверки подписи σ = (i, e˜) сообщения m применяется следующий
55
Глава 5. Схема цифровой подписи
алгоритм Verify: 1) вычисляется синдром
e˜H˜ T = eP P T HT = eP P −1HT = s,
2) если h(m, i) = s, то подпись считается верной.
Стойкость этой системы основана на том предположении, что только владелец секретного ключа может найти вектор веса не более t для заданного значения его синдрома. Недостаток состоит в том, что время подписи может быть неприемлемым из-за необходимости подбора вектора i.
5.4. Вопросы для самоконтроля
1.Модель с доверием и модель без доверия.
2.Определение схемы подписи для модели без доверия.
3.Схема CFS.
56
Глава 6
Схема защиты в канале с утечкой
6.1. Постановка задачи
Рассмотрим задачу конфиденциальной передачи данных от отправителя получателю в условиях присутствия пассивного наблюдателя. Пусть m Fnq — сообщение, передаваемое отправителем, m′ Fnq — принимаемое получателем сообщение, m′′ Fnq — принимаемое наблюдателем сообщение. Такую модель передачи данных можно описать как передачу сообщения m по каналам Ch1 и Ch2, когда получателю сообщение передается по каналу Ch1, а наблюдателю — по каналу Ch2:
m′ = Ch1 |
(m), |
(6.1) |
m′′ = Ch2 |
(m). |
(6.2) |
В случае, когда каналы Ch1 и Ch2 не вносят искажений, имеем: m = m′ = m′′ для всех m Fnq в любой момент передачи. Единственный способ обеспечить конфиденциальность данных в этом случае — это симметричное или асимметричное шифрование (главы 3 и 4 соответственно). Однако в ряде случаев, когда каналы Ch1 и Ch2 отличаются, конфиденциальность передаваемых данных можно обеспечить без шифрования. В частности, к таким относится случай, когда передачу любого m Fnq в любой момент передачи по каналу Ch2 можно представить как передачу по ухудшенной версии канала Ch1:
m′′ = Ch2(m) = Ch (Ch1(m)),
где Ch — канал с искажениями. Иногда такую модель называют моделью
57
Глава 6. Схема защиты в канале с утечкой
с утечкой данных, подразумевая, что при утечке наблюдатель принимает искаженную версию данных, доступных получателю.
6.2. Защита от утечки. Кодовое зашумление
Рассмотрим модель передачи данных, когда Ch1 — канал без искажений, Ch2 — канал, в котором стираются любые µ [n] координат. Таким образом, наблюдателю известны значения n − µ координат передаваемого сообщения. Требуется обеспечить конфиденциальность передаваемой информации. Такая постановка задачи может соответствовать ситуации, когда конфиденциальные данные хранятся в распределенном сетевом хранилище (SAN), построенном на базе n узлов. При этом актуальной моделью нарушителя является нарушитель, контролирующий не более n − µ узлов. Передача данных по n независимым линиям связи, когда нарушитель контролирует не более n − µ линий, также описывается этой моделью.
Для защиты конфиденциальности в такой модели передачи данных может использоваться кодовое зашумление. Пусть G0 — порождающая матрица систематического [n, n−k]q-кода C0, при этом G0 имеет систематический вид: G0 = [In−k|P ]. Достроим G0 до (n×n)-матрицы G полного ранга вида:
"#
G = In−k |
P . |
(6.3) |
O |
Ik |
|
Правило кодирования Encode сообщения m Fqk определим так: |
|
c = Encode(r, m) = (r, m)G = (r, rP + m), r ← Fqn−k. |
(6.4) |
Таким образом, сообщение m кодируется вектором, случайно и равновероятно выбранным из смежного класса (0n−k, m) + C0. Пусть H0 = [−P T |Ik]
— проверочная матрица кода C0. Правило извлечения Decode информационного вектора из c имеет вид:
Decode(c) = cH0T = (r, m)GH0T |
# |
" Ik |
(6.5) |
|
" |
[O Ik]H0T |
# |
||
= (r, m) |
[In−k|P ]H0T |
|
= (r, m) OT |
= m. |
|
| |
|
|
|
58
6.3. Стойкость кодового зашумления
Метод защиты с описанными правилами кодирования и извлечения информации называется кодовым зашумлением [12].
6.3. Стойкость кодового зашумления
Правило Decode может применить получатель, так как канал Ch1 не вносит искажений. Наблюдатель это правило применить не может, так как µ координат в наблюдаемом векторе z = Ch2(c) стерто. Обозначим через τ множество номеров стертых координат, а через τ = [n] \ τ — множество номеров нестертых. Правило извлечения (6.5) перепишем в виде:
c|τ (H0|τ )T + c|τ (H0|τ )T = m.
Так как наблюдателю известен вектор z|τ = c|τ , то он может вычислить z|τ (H0|τ )T = a. Тогда предыдущее равенство можно переписать в виде:
y(H0|τ )T + a = m. |
(6.6) |
Перебирая все возможные значения y Fµq , наблюдатель может построить множество M(τ, z) возможных претендентов на информационное сообщение. Из (6.6) вытекает, что
|M(τ, z)| = |{y(H0|τ )T : y Fµq }| = qrank(H0|τ ).
Отметим, что мощность множества претендентов зависит только от множества нестертых координат, но не от их значений. Если при кодировании все возможные сообщения m Fkq равновероятны, то, с точки зрения наблюдателя, любой из претендентов множества M(τ, z) может быть исходным сообщением. Чем больше |M(τ, z)|, тем меньше вероятность угадать исходное сообщение, имея M(τ, z).
В случае, когда rank(H0|τ ) = k говорят о совершенной стойкости метода кодового зашумления для заданного τ, так как M(τ, z) = Fkq — множество претендентов совпадает со всем множеством сообщений.
Определение 5. Метод кодового зашумления с правилами кодирования и извлечения соответственно (6.4) и (6.5) обладает совершенной
59
Глава 6. Схема защиты в канале с утечкой
стойкостью для заданного уровня стираний µ в канале Ch2, если
rank(H0|τ ) = k
для всех τ [n], |τ| = µ.
Из этого определения вытекает, что для обеспечения совершенной стойкости при фиксированном параметре µ необходимо и достаточно, чтобы любой набор из µ столбцов проверочной (k × n)-матрицы H0 кода C0 образовывал матрицу ранга k. Необходимым условием для этого, очевидно, является следующее: k µ. Но это условие не является достаточным для произвольного кода [n, n − k]q-кода, так как в проверочной матрице ранга k могут быть наборы из k линейно зависимых столбцов.
Равенство rank(H0|τ ) = k для (k×n)-матрицы H0 означает, что не существует линейной комбинации строк матрицы H0, которая бы давала вектор с нулевыми значениями координат с номерами из τ. Это равносильно тому, что в коде C0 = L(H0) не существует вектора веса n − µ. Следовательно, справедлива следующая теорема.
Теорема 8. Пусть C0 — линейный [n, n − k]q-код, C0 — [n, k, d ]q — код, дуальный коду C0. Метод кодового зашумления с правилами кодирования и извлечения соответственно (6.4) и (6.5) обладает совершенной стойкостью для заданного уровня стираний µ в канале Ch2, если
µ > n − d .
6.4. Пример
Пусть C0 — [7, 4]2-код, заданный проверочной матрицей
H = |
1 |
1 |
1 |
0 |
0 |
1 |
0 . |
(6.7) |
|
1 |
0 |
1 |
1 |
1 |
0 |
0 |
|
|
1 |
1 |
0 |
1 |
0 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
Такой код называется кодом Хэмминга. По теореме 1 получаем, что кодовое расстояние этого кода равно 3, так как все столбцы разные, но при этом первые три столбца линейно зависимые. Кодовое расстояние d кода C0 равно 4. По теореме 8 получаем, что метод кодового зашумления на осно-
60
