Асимметричный криптографический алгоритм на базе Конечно-Автоматной Модели

       

Защита Базы Данных (БД).


Примем, что в памяти компьютера В  расположена База Данных (БД), которая обслуживает абонентов А,С,… .

Рис. 1

В рассматриваемом случае

  • Абоненты А,С,… могут находиться на любом удалении от компьютера В и взаимодействовать с ним через незащищенный канал связи,
  • В отличие от архива, База Данных может участвовать в информационном процессе абонентов в реальном масштабе времени. Для обеспечения правильного функционирования необходимо, чтобы
  • o       информационные каналы  и БД были защищены криптографическим алгоритмом, и

    o       криптографический алгоритм обладал быстродействием, достаточным для обеспечения информационного  процесса.

    В настоящее время эти условия могут быть удовлетворены только при использовании симметричного криптографического алгоритма – ни один из существующих  асимметричных алгоритмов не обладает достаточным быстродействием.

    При применении симметричного алгоритма

    • информация БД закодирована с применением ключа Администратора Системы,
    • каждый абонент имеет свой ключ,
    • все ключи хранятся в Базе Данных.
    • Понятно, что такую систему можно взломать просто, проникнув в компьютер БД.

      Защита расположенной на компьютере В базы данных, как правило,  связана с решением двух проблем:

      • Защита паролем компьютера В от проникновения злоумышленника([16])  в компьютер.
      • Защита от перехвата пароля, который открывает доступ  к БД.
      • Проблема защиты заключается в том, что для сравнения предъявленного пароля с существующим, пароль должен быть расположен в памяти компьютера, и, как бы его ни маскировали, он может быть обнаружен.

        Создание защитных экранов (firewall), создает больше сложностей легитимным  пользователям, чем хакерам.



        Каким будет протокол при применении асимметричного алгоритма?

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

        Примем, что

        • Абонент А имеет:
        •                                             i.      Имя  «А».


                                                    ii.      Открытый ключ EA

                                                   iii.      Секретный  ключ DA.

          • Сервер В имеет:


          •                                             i.       Открытый  ключ EB  и

                                                      ii.      секретный  ключ DB.

                                                     iii.      На сервере, кроме Базы Данных, расположен список абонентов, в котором записано имя  каждого абонента и его открытый ключ.

                                                    iv.      Все элементы БД закодированы секретным ключем DB. Это позволяет, с одной стороны, прочитать содержимое любого элемента БД с помощью известного всем EB, с другой стороны,  защитить БД от несанкционированного внесения изменений.



            Для   доступа абонента А к БД выполняется следующая последовательность  действий абонента и сервера (протокол):

            1.      допустим, абоненту  А необходимо получить информацию о к-ом элементе bdk   базы данных. БД. Для этого он посылает серверу по незащищенному каналу запрос - свое имя А.

            2.       Сервер генерирует случайное число R

            и посылает его по незащищенному каналу абоненту А.

            3.      Абонент А, получив R’, выполняет операцию: DA ([R’+bdk]) (где [R’+bdk]  - конкатенация  R’ и bdk) и посылает этот код серверу В.

            4.      Сервер В выполняет операцию  EA (DA ([R’+bdk]))> R’+bdk, сравнивает R’  со сгенерированным случайным числом R. Если они совпадают, то это значит, что, обратившийся действительно абонент А.

            5.      Сервер В выполняет запрос: считывает содержимое к-го элемента базы данных, присоединяет в конец bdk  число R, кодирует: EA (DB ([bdk+R]))

            и результат посылает абоненту А.

            6.        Абонент А

            выполняет последовательность операций:

            Форм. 2     DA(EA(DB([bd’k+R’]))) > DB([bd’k+R’]) >

            EB(DB([bd’k+R’])) > bd’k+R’

            сравнивает R` с R и если они совпадают, то это значит, что bd’k соответствует bdk, то есть, абонент А получил запрошенный к-ый элемент БД.

            Обратите  внимание на операции пунктов 3 и 5.

                   a.      В первом случае мы используем конкатенацию  [R’+bdk].  Она предназначена для сервера В, которому известен размер числа R. Факт  совпадения R` и R в пункте 4 указывает на то, что запрашивается именно  bdk, то есть не было искажений при передаче запроса.

                  b.      Во втором случае используется конкатенация [bdk+R],  которая, при совпадении  R` и R позволяет в пункте 6 сделать вывод об истинности принятого от сервера bd’k.  


            Содержание раздела