NP-полные задачи в теории кодирования. Криптосистема Мак-Элиса. Схема идентификации Штерна - Подготовили студенты группы ИУ8-84

Страница создана Полина Ковалёва
 
ПРОДОЛЖИТЬ ЧТЕНИЕ
NP-полные задачи в теории кодирования. Криптосистема Мак-Элиса. Схема идентификации Штерна - Подготовили студенты группы ИУ8-84
NP-полные задачи в теории
      кодирования.
Криптосистема Мак-Элиса.
  Схема идентификации
        Штерна.
       Подготовили студенты группы ИУ8-84:
                            Вдовина А.Д.
                            Елфимов Д.О.
NP-полные задачи в теории кодирования. Криптосистема Мак-Элиса. Схема идентификации Штерна - Подготовили студенты группы ИУ8-84
Вопросы:
• Насколько сложной задачей является
  декодирование произвольного линейного
  кода?
• Насколько сложной задачей является
  определение параметров произвольного
  линейного кода?
NP-полные задачи в теории кодирования. Криптосистема Мак-Элиса. Схема идентификации Штерна - Подготовили студенты группы ИУ8-84
Краткое напоминание о классах
            P, NP, NP-C
Класс P – класс задач, которые решаются с
помощью детерминированных алгоритмов.

Т.е. с помощью алгоритмов, имеющих
полиномиальную сложность относительно
длины входных данных.
Краткое напоминание о классах
            P, NP, NP-C
Класс NP – класс задач, в котором
правильность    ответа   проверяется за
полиномиальное время.
Другое определение: NP – класс задач,
решаемых           недетерминированными
алгоритмами за полиномиальное время
относительно длины входных данных.
Краткое напоминание о классах
            P, NP, NP-C
Недетерминированный алгоритм – такой
алгоритм, который при возникновении
нескольких       альтернативных     путей
выполнения может создать несколько копий
самого себя и продолжить выполнение по
всем путям параллельно.
Задача считается решенной, если хотя бы
одна копия алгоритма получит ответ.
Краткое напоминание о классах
             P, NP, NP-C
Класс NP-complete – класс задач из класса NP,
к которым за полиномиальное время можно
свести любую другую задачу из класса NP.
Иначе говоря, NP-C – «самые сложные»
задачи из класса NP.
Если    будет    найден     полиномиальный
алгоритм для задач NP-C, этот алгоритм
можно будет модифицировать для любых
задач из класса NP.
Краткое напоминание о классах
          P, NP, NP-C

      P=NP?
NP-полные задачи в теории
            кодирования

1978г. – E.R. Berlekamp, R.J. McEliece, H.C.A.
van Tilborg: “On the Inherent Intractability of
Certain Coding Problems”.
NP-полные задачи в теории
           кодирования
Трехмерное сочетание:
Вход: Множество ⊆ × × , где –
конечное множество.
Задача: Существует ли подмножество  ⊆
такое, что   =     и ни одна из пар
элементов не совпадает ни в одной
координате.
NP-полные задачи в теории
            кодирования
Пример: Пусть   = {1, 2, 3, 4} и   =6

Пример 1:                 Пример 2:
1) (1,2,1)                1) (1,2,1)
2) (1,3,2)                2) (1,3,2)
3) (2,1,4)                3) (2,1,4)
4) (2,2,3)                4) (2,2,3)
5) (3,1,1)                5) (3,2,1)
6) (4,4,4)                6) (4,4,4)
NP-полные задачи в теории
            кодирования
Пример: Пусть   = {1, 2, 3, 4} и   =6

Пример 1:
1) (1,2,1)
2) (1,3,2)
3) (2,1,4)
4) (2,2,3)
5) (3,1,1)
6) (4,4,4)
NP-полные задачи в теории
           кодирования
Удобно представлять множество в виде
матрицы инциденции размером       ×3
Для примера 1 эта матрица имеет следующий
вид:
NP-полные задачи в теории
           кодирования

Переформулируем задачу о трехмерном
сочетании на языке матриц: Чтобы
выполнялась задача о трехмерном сочетании
необходимо в матрице инциденции найти
комбинацию из     строк такую, что их сумма
даст вектор (11…………1)
NP-полные задачи в теории
           кодирования

Утверждение (без доказательства): Задача о
трехмерном сочетании – NP-полная.
NP-полные задачи в теории
           кодирования
Задача 1 (Coset Weight):
Вход: Бинарная матрица , бинарный вектор
  и неотрицательное число .
Задача: Найдется ли вектор хэмминговского
веса       ≤ такой, что ∗ = .
Теорема 1: Задача 1 – NP-полная.
NP-полные задачи в теории
          кодирования
Теорема 1 (доказательство):
От противного: Пусть задача 1 имеет
полиномиальный алгоритм решения.
Подадим на вход следующие параметры:
Матрица – матрица инциденции из задачи
о трехмерном сочетании (размером
    × 3 ), = 11 … … … 1 , =
NP-полные задачи в теории
           кодирования
Теорема 1 (доказательство):
Тогда нетрудно заметить, что данный
алгоритм найдет нам решение задачи о
трехмерном сочетании за полиномиальное
время, т.е. любую NP-полную задачу можно
решить за полиномиальное время.
Противоречие. Задача 1 – NP-полная.
NP-полные задачи в теории
           кодирования
Следствие 1:
Задача синдромного декодирования для
произвольного линейного кода NP-полна,
поскольку NP-полна задача поиска вектора
ошибок.
NP-полные задачи в теории
           кодирования
Задача 2 (Subspace Weight):
Вход: Бинарная матрица и
неотрицательное число .
Задача: Найдется ли вектор хэмминговского
веса       = такой, что ∗ = 0.
Теорема 2: Задача 2 – NP-полная.
NP-полные задачи в теории
           кодирования
Теорема 2 (доказательство): Обозначим через
  матрицу B матрицу инциденции из задачи о
  трехмерном сочетании. И пусть она имеет
  размеры t x 3n. Тогда матрица А
  формируется из матрицы В так, как
  показано на рисунке:
NP-полные задачи в теории
           кодирования
Теорема 2 (доказательство):

                                - квадратная
                              единичная
                              матрица
                              размером ×
NP-полные задачи в теории
           кодирования
Теорема 2 (доказательство): Пусть задача 2
имеет полиномиальный алгоритм решения.
Подадим на вход матрицу А, описанную
выше, и примем = 3 + 4
Пусть −искомый вектор. Тогда ∗ = 0.
Пусть - первые t координат вектора , а -
его последние 3 ( + 1) координат.
Пусть = ∗
Тогда    =     +3 ∗      , где     − вес .
NP-полные задачи в теории
           кодирования
Теорема 2 (доказательство):
                              Замечание:
                              веса верхней и
                              нижней
                              подматриц
                              одинаковы, т.к.
                                ∗ =0
NP-полные задачи в теории
           кодирования
Теорема 2 (доказательство):
    =     +3 ∗
Прибавим к обеим частям уравнения       .
   =     + 3 +1 ∗
Учитывая, что 0 ≤    ≤ 3 , мы можем
однозначно определить       и  . Это остаток
и частное от деления    на (3 + 1).
Вспомнив, что     = 3 + 4 , получим:
    =3 ,      =
NP-полные задачи в теории
           кодирования
Теорема 2 (доказательство): Другими
словами, вектор – вектор из всех 1, что
означает, что на описанных входных данных
вектор существует тогда и только тогда,
когда задача о трехмерном сочетании имеет
решение. Если мы можем за
полиномиальное время решить задачу 2, мы
можем решить задачу о трехмерном
сочетании за полиномиальное время.
Противоречие. Задача 2 – NP-полная.
NP-полные задачи в теории
           кодирования
Следствие 2: Задача нахождения d в
произвольном линейном коде как кодового
слова наименьшего веса NP-полна.
NP-полные задачи в теории
           кодирования
Задача о максимальном разрезе графа.
Вход: граф = ( , )
Задача: Найти подмножество вершин ⊆
такое, что количество ребер между и ̅
максимально
NP-полные задачи в теории
           кодирования

Утверждение (без доказательства): Задача о
максимальном разрезе графа – NP-полная.
NP-полные задачи в теории
           кодирования
Задача 3 (Nearest Codeword problem):
Вход: Матрица G, вектор r.
Задача: Найти вектор
i такой, что   ∗ , − минимально.
    , - расстояние по Хэммингу между
   и .
Теорема 3: Задача 3 – NP-полная.
NP-полные задачи в теории
           кодирования
Теорема 3 (доказательство): Пусть G –
матрица инциденции некоторого графа, а
  = 11 … … . . 1 , тогда задача 3 эквивалентна
задаче о максимальном разрезе графа. Т.е.
если существует полиномиальный алгоритм
решения задачи 3, задача о максимальном
разрезе также решается за полиномиальное
время. Отсюда следует, что задача 3 – NP-
полная. Докажем эквивалентность этих задач.
NP-полные задачи в теории
           кодирования
Теорема 3 (доказательство):
Возьмем граф H=(V,E) из примера,
приведенного выше и построим его матрицу
инциденции.
NP-полные задачи в теории
           кодирования
Теорема 3 (доказательство):
Эта матрица является также порождающей
матрицей линейного кода. Выбирая единицы
в векторе , мы выбираем, какие вершины
нашего графа мы включаем в множество S.
Умножая вектор на G, мы будем получать
единицы только там, где одна вершина
входит в S, а другая не входит. А поскольку
мы ищем слово, ближайшее к 1, мы получим
максимальный разрез графа H.
NP-полные задачи в теории
           кодирования
Теорема 3 (доказательство):

 = 10110          =

                       ∗   = (101111)
NP-полные задачи в теории
           кодирования
Теорема 3 (доказательство):
Итак, задача 3 – NP-полная задача.
Следствие 3: Задача декодирования
произвольного линейного кода по минимуму
расстояний NP-полна. Также NP-полна задача
декодирования произвольного линейного
кода методом наибольшего правдоподобия,
т.к. при вероятности ошибки в канале p
Криптосистема Мак-Элиса

В 1978 году Роберт Мак-Элис разработал
 криптосистему с открытым ключом на основе
 алгебраического кодирования. Идея, лежащая
 в основе данной системы, состоит в выборе
 корректирующего кода, исправляющего      t
 ошибок,     для     которого    существует
 эффективный алгоритм декодирования.
Асимметричное шифрование
Криптографическая система с открытым ключом –
  система шифрования, при котором открытый ключ
  передается по открытому каналу и используется для
  шифрования сообщения, а для расшифровки используется
  секретный ключ.
          m                P(m)=c                  S(c)=m
  Алиса       Шифрование            Дешифрование            Боб

                    P                     S
               Источник              Секретный
                ключей                 ключ
Криптосистема Мак-Элиса

Параметры: n, t
Процедура генерации ключей: Для данных выбранных
  параметров сгенерировать матрицы:
• G – порождающая (k×n) –матрица двоичного (n,k) –
  линейного кода, исправляющего не более t ошибок, для
  которого известен эффективный алгоритм декодирования.
• S – случайная невырожденная двоичная (k×k) – матрица.
• P – случайная двоичная (n×n) – матрица перестановки.
• G˟=S∙G ∙P
Открытый ключ: G˟ и t
Секретный ключ: S, P, G.
Криптосистема Мак-Элиса
Шифрование: Для шифрования сообщения m  F2k необходимо
  выбрать случайный вектор e  F2k , вес которого равен t и
  далее вычислить: c  mG   e
Дешифрование: Для расшифрования необходимо вычислить:
  cP  1  mG * P  1  eP  1  mSGPP   1
                                               e '  ( mS ) G  e '
  e '  eP  1   - перестановка вектора e, а значит имеет вес не
  более t.
  С помощью алгоритма декодирования для выбранного кода
  декодируем cP  1 . Найдя ошибку e’, сможет восстановитьmS .
  Умножение этого выражения справа на матрицуS  1 дает
  первоначально пересылаемое сообщение m .
Криптосистема Мак-Элиса: Коды Гоппы
Мак-Элис предложил использовать двоичные
 неприводимые коды Гоппы, так как для их
 декодирования существует быстрый алгоритм
 и они обладают хорошими криптосвойствами.
Определение. G (z ) - неприводимый многочлен с
  коэффициентами из поля GF(2m). L ( 1 ,...,  n ) - множество
  различных элементов поля GF(2m) такое, что
  G ( i )  0 ,   i  L .
Двоичным неприводимым кодом Гоппы Г(L,G) длины n с
  символами из поля GF(2) называется код, состоящий из
  всех таких векторов a  ( a1 ,..., a n ) , что
                                             n
                                                    ai
                              Ra ( z )    
                                           i 1   z i
                                                         0 mod G ( z )
Криптосистема Мак-Элиса: Пример
Пример. Возьмем порождающую матрицу G
 кода Гоппы Г ( x  x  1, GF ( 2 )) .
                         2                   4

    1   1   1   1   0       0   0   0   0   0   0   0   0   0   0   1
                                                                       
    1   0   1   0   1       1   0   1   0   0   0   0   0   0   1   0
    1   0   0   1   1       1   1   1   0   0   0   0   0   1   0   0
                                                                       
    0   0   1   1   1       1   0   0   0   0   0   0   1   0   0   0
 G 
    0   1   1   1   1       0   1   0   0   0   0   1   0   0   0   0 
    0   1   1   0   0       0   1   1   0   0   1   0   0   0   0   0
                                                                       
    0   1   1   0   0       1   0   1   0   1   0   0   0   0   0   0
    1   0   1   0   0       1   1   0   1   0   0   0   0   0   0   0 
    
Криптосистема Мак-Элиса: Пример
Выберем матрицы S и P:
      1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
                                                                     
      0   0   1   0   0   0   0   0   0   0   0   0   0   0   0   0
      0   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0
                                                                     
      0   0   0   0   1   0   0   0   0   0   0   0   0   0   0   0
      0   0   0   0   0   1   0   0   0   0   0   0   0   0   0   0 
      
      0   0   0   1   0   0   0   0   0   0   0   0   0   0   0   0
                                                                     
      0   0   0   0   0   0   0   1   0   0   0   0   0   0   0   0
      0   0   0   0   0   0   0   0   1   0   0   0   0   0   0   0
   P                                                                
      0   0   0   0   0   0   0   0   0   1   0   0   0   0   0   0
      0   0   0   0   0   0   1   0   0   0   0   0   0   0   0   0
                                                                     
      0   0   0   0   0   0   0   0   0   0   0   1   0   0   0   0
      0   0   0   0   0   0   0   0   0   0   0   0   1   0   0   0
                                                                     
      0   0   0   0   0   0   0   0   0   0   0   0   0   1   0   0
                                                                     
      0   0   0   0   0   0   0   0   0   0   0   0   0   0   1   0
      0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   1
                                                                     
      0   0   0   0   0   0   0   0   0   0   1   0   0   0   0   0
Криптосистема Мак-Элиса: Пример
   1   1 1 1 1 1 1 1                0   1 0 1 1 0 1 0 0 1 1 1 1 1 1 1
                                                                       
   0   1 1 1 1 1 1 1                1   0 1 1 0 0 1 0 0 1 0 1 1 1 1 1
   0   0 1 1 1 1 1 1                0   1 1 0 0 1 1 0 1 1 0 1 1 1 1 0
                                                                       
   0   0 0 1 1 1 1 1                1   1 1 1 1 0 1 1 0 1 0 1 1 1 0 0
S                       G *  SGP  
   0   0 0 0 1 1 1 1               1   0 1 0 0 1 1 1 0 1 0 1 1 0 0 0 
   0   0 0 0 0 1 1 1                1   1 0 0 1 0 1 0 0 1 0 1 0 0 0 0
                                                                       
   0   0 0 0 0 0 1 1                1   0 1 0 1 0 1 1 1 1 0 0 0 0 0 0
   0   0 0 0 0 0 0 1               1   1 0 1 0 0 0 1 0 1 0 0 0 0 0 0 
                                     

Кодовое слово m  (11001001 ) , вектор ошибок:
 e  (0000100010 000000 .     )
Ошибки были сделаны в 5 и 9 разряде. Получим:
     с  mG *  e  (1001011010 111000 )
Криптосистема Мак-Элиса: Пример
Получатель вычисляет:
       1
  сP         (1000110101 110001 )
Затем этот вектор нужно декодировать с
  помощью алгоритма декодирования кода
  Гоппы. В результате декодирования
  получаем: m '  (10001110 ) . Правильность
  данного результата можно проверить,
                                   1
  умножив m' G и сравнив с      cP    . Разность
  этих векторов e’ имеет вес 2 и совпадает с
  eP 1. Чтобы получить m, вычислим :
             1
  m  m' S        (11001001 )
Криптосистема Мак-Элиса
В данном алгоритме был выбран двоичный линейный
  код, который исправляет большое число ошибок и
  для которого существует эффективный алгоритм
  декодирования. Если код выбирается из достаточно
  большого класса кодов, то угадать какой именно
  код был выбран, практически невозможно.
  Преобразуем порождающую матрицу до такой
  степени, чтобы получившаяся в результате матрица
  выглядела как случайная. Таким образом, мы
  заставляем противника решить общую задачу
  декодирования линейных кодов, т.е. задачу поиска
  ближайшего кодового слова для произвольного
  слова длины n, которая является NP-полной.
Схема идентификации Штерна

Данная схема основана на доказательствах с
 нулевым разглашением (знанием),
 опубликованных в работе Голдвассера,
 Микали и Ракоффа в 1985 году.
Доказательство с нулевым
              разглашением
Доказательство с нулевым разглашением – это интерактивный
  протокол, позволяющий одной из сторон (проверяющему,V)
  убедиться в достоверности какого-либо утверждения, не получив при
  этом никакой другой информации от второй стороны
  (доказывающего,P).
Пример. Задача о изоморфизме графов.
Доказывающему известен изоморфизм π:G1→G2 . Проверяющий хочет
  удостовериться, что доказывающий его действительно знает.
  Доказывающий создает граф Н, изоморфную копию G2, выбирая
  изоморфизм σ:G2→H . Доказывающий передает граф H
  проверяющему. Проверяющий выбирает случайный бит b={0,1}.
     - Если b=0, то проверяющий просит доказывающего доказать
  изоморфизм σ:G2→H .
     -Если b=1, то проверяющий просит доказывающего показать
  изоморфизм σ∙ π: G1→H .
Схема идентификации Штерна
Параметры:n, k , q , w – целые положительные числа.
Открытый ключ: Двоичная матрица H размера k×n.
                     s  He T
Закрытый ключ: Случайный двоичный вектор e
   длины n и веса w
P: Выбирает случайный вектор y длины n и случайную
   перестановку P .
P: Формирует сообщение c1  f ( P , Hy T ) .
P: Формирует сообщение c 2  f ( y.P ) .
P: Формирует сообщение c3  f (( y  e ).P ) .
P: Отправляет V все три сообщения.
Схема идентификации Штерна
V: Выбирает случайный бит b  {0,1, 2} и отправляет его P.
P: Если b  0 ,то отправляет y, P
    Если b  1 , то отправляет y  e, P
    Если b  2 , то отправляет e.P , y.P
V: Если b  0 , то проверяет, что правильно вычислены
   c1 , c2 .
   Если b  1 , то проверяет, что правильно вычислены
   c1 , c3 , а именно, что выполняется соотношение:
                Hy T  H ( y  e )T  s
  Если b  2 , то проверяет, что правильно вычислены
  c2 , c3 и что вес вектора e.P равен w .
Схема идентификации Штерна
Стойкость данного алгоритма основывается
  на сложности синдромного декодировании
  произвольного линейного кода, что
  является NP-полной задачей. Т.е. на вход
  подается вектор s , матрица H и
  натуральное число w. Необходимо найти
  такой вектор e , что He T  s
при этом    =
Вопросы?
Вы также можете почитать