Рассылка статей | Выпуск 32. Защита данных алгоритмом RSA
Leadersoft.ru

Рассылка статей

Программирование и готовые решения

В этом разделе сайта дается информация от https://leadersoft.ru о статьях по программированию, ответах на вопросы и др. Статьи рассылаются подписчикам и публикуются на разных сервисах. Возможно некоторая информация устарела и ссылки не работают, но эти сведения могут быть полезны, если Вы серьезно занимаетесь разработкой баз данных

Выпуск 32. Защита данных алгоритмом RSA

 Услуги по разработке. Если база Вам нужна, в LeaderSoft зайди сперва.
      Мы разрабатываем по заказам клиентов различные программы, используя Microsoft Access. Базы данных разрабатываются "с нуля" или, используя готовые решения, что позволяет достаточно гибко решать финансовые вопросы по оплате услуг за разработку.       Имеется следующий опыт внедрения программ:
 • Бухгалтерских , смотрите описание программ Склад и Реализация, Касса предприятия, Банк предприятия, Книги продаж и покупок
• Табличных , т.е. программ перевода финансового или складского учета из Excel или FoxPro в Access
 • Совместных , т.е. когда будет сделана только часть программы, например, меню, форма, отчет или модуль VBA, а остальная доработка будет выполнена вами.
 • Конвертеров , т.е. программ загрузки текстовых файлов *.ini, *.txt или табличных баз данных *.dbf, *.db в Access без использования внешних драйверов.
 • Реанимационных , т.е. доработка некачественно созданных или неустойчиво работающих в сети баз данных.
      Форма сотрудничества - любая, т.е. возможно заключение договора на разработку как с организацией, так и с одним или группой программистов. 
      Срок разработки: от 2 дней до 2 месяцев

 Программа "Склад и Реализация" в открытом формате
Программа "Склад и Реализация" поставляется теперь в полностью открытом формате. Разработка имеет удобный интерфейс, много отличных решений, отлаживалась несколько лет. Программа поставляется в виде:
• бесплатной ознакомительной инструкции- брошюры.
• рабочей версии с программой инсталляции
• версии с открытым программным кодом файл, включая все mdb файлы (Цена: договорная)

 Новости сайта
23.10.2001. На этой странице указаны специальные программы, которые Вы можете получить путем обмена на отчет, форму или оригинальный пример базы данных. Если у Вас нет возможности найти программу для обмена, то Вы можете купить ее. Условия продажи смотрите по верхней ссылке.
 Код  Файл    Примеры Описание
0001 profi_prot1.zip   Подбор ключей для шифрования RSA   11 пример файла profi_prot.zip. Подбор ключей для шифрования данных открытым ключем RSA, т.е. когда для шифрования данных используется открытый ключ, а для расшифровки закрытый. Применение - защита полей базы данных.
      Управление реестром Windows   12 пример файла profi_prot.zip. Пример показывает как можно из базы данных управлять реестром  Windows. Рассматриваются функции удаления и сохранения ключей реестра. Применение - защита базы данных, сохранение в реестре настроек базы и т.п.
0002 profi_perl.zip Управление Access из Perl   1 пример. Файлы архива: readme.htm, test.mdb, msaccess.pl, httpd.conf, host, dbi-odbs.txt. Данный пример будет полезен прежде всего тем, кто работает с Microsoft Access в Интернете, иcпользуя скрипты Perl в операционных системах NT, Unix под управлением сервера Apache.
0003 profi_valuta.zip  Курсы валют   Курсы валют Центрального банка России, начиная с 01 июля 1992 года. Все данные проверены и соответствуют базе данных ЦБ.


 22.10.2001. Добавились 3 новых примера по работе с файловой системой. Смотрите la_files.mdb.
  • 1 пример показывает как найти все файлы в папке с использованием подкаталогов и маски для поиска (Application.FileSearch);
Следующие примеры показывают как лучше
  • 2 пример показывает как создать, скопировать, переместить и удалить папку с использованием FileSystemObject. Рассматриваются свойства: fs.CreateFolder, fs.DeleteFolder, fs.MoveFolder, fs.CopyFolder
  • 3 пример показывает как получить свойства папки и ее объектов с использованием FileSystemObject свойства files, drive и т.п.


  Защита базы данных открытым ключом RSA
    В этой рассылке рассказывается об одном из наиболее популярных методов защиты базы данных открытым ключом RSA, названый так по начальным буквам фамилий ее изобретателей (Rivest, Shamir and Adleman). Возникает вопрос, а надо ли еще "городить" новый вариант защиты, когда уже есть встроенные системы защиты в Access, такие как, ограничение доступа к объектам базы данных на основе пароля или системного файла system.mdw.
   Ответ однозначный - необходимо, т.к. из-за высокой популярности использования Access файлов, все больше специалистов пытаются определить структуру mdb файла (см. AccessRecovery или la_prot.mdb). Cледовательно нет 100% уверенности, что не появится программа, которая прочитает ваши данные. Таким образом, попробуем разобраться в алгоритме RSA, чтобы потом применить его к защите полей вашей базы данных.
   В RSA используется для шифрования один ключ, а для расшифровки другой. Первый ключ не является секретным и может быть известен всем, кто работает с базой данных. 
 
Очевидные факторы алгоритма :
  • расшифровать данные с помощью известного ключа невозможно;
  • ключ расшифровки не может быть определен из ключа шифрования;
  • ключи должны иметь очень большую величину;
 
Определим термины, которые встречаются при описании алгоритма:
 • простое число - это такое, которое может делится только на 1 и на само себя;
 • взаимно простые числа - это числа не имеющие ни одного общего делителя кроме 1;
 • i mod j - деление по модулю;
 • i ^ j - возведение в степень j числа i;
 
Описание алгоритма RSA. В скобках дан пример вычислений в цифрах.
1. Возьмем два простых числа A и B. [3 и 11]
2. Определим c=A*B
[33]
3. Выберем число d
[3] взаимно простое с выражением (A-1)*(B-1) [20]
4. Найдем число e
[7], чтобы (e*d) mod ((A-1)*(B-1))=1
5. Итак,
 
e[7] и c[33] - открытый ключ
 
d[3] и c[33] - секретный ключ
Проверка алгоритма
6. Зашифруем число x
[2] по формуле: p=(x^e) mod c [((2^7) mod 33)=29]
7. Расшифруем число p[29] по формуле: x=(p^d) mod c [((29^3) mod 33)=2]
 
Выводы
  1. Перед шифрованием надо разбить текст на блоки, а затем каждому из них дать определенное число. В примере выше использован простой случай, т.е. текст разбивается на символы, где число x  имеет код 2.
  2. Сам процесс зашифровки/расшифровки требует эффектных решений, т.к. если использовать стандартные математические операции для расчета, то уже для простых чисел 23 и 17 может возникнуть переполнение при возведении в степень. Как этого избежать и подобрать простые числа указано в файле: profi_prot1.mdb
  3. Для проверки изложенного выше алгоритма используйте следующую программу (действует на малых числах):
 
Тестирование
   Private Sub funTestRSAencryption()
Dim A As Long, B As Long, c As Long
Dim d As Long, e As Long, x As Long, p As Long
'1. Возьмем два простых числа A и B.
A = 3
B = 11
Debug.Print "A=" & A, "B=" & B
'2. Определим c = A * B
c = A * B
Debug.Print "C=" & c
'3. Выберем число d взаимно простое с выражением (A-1)*(B-1)
d = 3
Debug.Print "Test1=" & (A - 1) * (B - 1)
'4. Найдем число e, чтобы (e*d) mod ((A-1)*(B-1))=1
e = 7
Debug.Print "Test2=" & (e * d) Mod ((A - 1) * (B - 1))
'5. Выбираем символ x для шифрования
x = 2
Debug.Print "X=" & x
'6. Зашифруем число x по формуле: p=(x^e) mod c
p = x ^ e Mod c
Debug.Print "P=" & p
'7. Расшифруем число p по формуле: x=(p^d) mod c
x = (p ^ d) Mod c
Debug.Print "X=" & x
   End Sub

   P.S. В качестве дополнительного материала, я бы посоветовал прочитать книгу "Защита информации в персональных ЭВМ", Спесивцев, Вегнер, Крутяков, Серегин, Сидоров. Москва "РАДИО и СВЯЗЬ" 1992 год, стр. 39-41. Вот умная выдержка из этой книги
   Криптостойкость алгоритма RSA основывается на предположении, что исключительно трудно определить секретный ключ по известному, поскольку для этого необходимо решить задачу о существование делителей целого числа. Данная задача является NP – полной и, как следствие этого факта, не допускает в настоящие время эффектного (полиномиального) решения. Более того, сам вопрос существования эффективных алгоритмов решения NP – полных задач является до настоящего времени открытым. В связи с этим для чисел, состоящих из 200 цифр (а именно такие числа рекомендуются использовать), традиционные методы требуют выполнения огромного числа операций (около 10^23).

Ответы на вопросы


Вопрос. Можно ли использовать базу данных Microsoft Access на web сайте, где установлен Unix или Lunix?
Ответ.
Можно и нужно. Я думаю, что здесь есть несколько причин которые могут заинтересовать пользователей:
  • Unix более надежная операционная система, т.к. проблемы совместного доступа к файлам решены лучше, чем в Windows
  • Цена Unix хостинга примерно в два ниже, чем NT. Потратив всего 7-8 $ в месяц, Вы сможете не только открыть свой сайт, но и использовать на нем скрипты. Под ними понимается возможность создания динамических страниц, конференций, голосований с применением  баз данных на сайте.
  • ~70 web серверов работают под управлением операционной cистемы Unix, следовательно у Вас не будет больших проблем с поиском провайдера
  • В OS Unix (код открыт) используется  web сервер Apache (код открыт) и язык Perl с библиотеками (код открыт). Все это приводит к тому, что можно свободно вносить свои изменения в работу многих программ.
  • Использование Access в качестве базы данных лучше, чем mySQL, т.к. структура ее лучше.
 
С чего начать?
Начните установку программ у себя в Windows (см. ссылки синим цветом), а потом перенесите свой опыт на сервер провайдера. Выполнить надо всего 5 шагов.
 1. Установите у себя сервер Apache.
 2. Установите ActivePerl
 3. Установите модуль DBI
 4. Установите DBD::ODBC
 5. Протестируйте программу работы с базой данных.
 
Как установить сервер Apache?
Сервер Apache работает под управлением операционной системы Windows и Unix. Распространяется в открытых кодах, поддерживается независимыми разработчиками и поэтому полностью бесплатен. Инструкция по установке в Windows достаточно простая, но требует ручного вмешательства.
1. Скачайте сервер (ссылка вверху или купите книгу с CD-диском, например, Клинтон Пирс "Освой самостоятельно Perl").
2. Установку проведите в папку: с:\usr\local\apache
3. Отредактируйте файл: с:\usr\local\apache\conf\httpd.conf
  
Как установить ActivePerl?
Установку проведите в папку: с:\usr , чтобы использовать стандартный оператор #!usr/bin/perl в большинстве скриптов *.pl 
  
Что такое DBI?
 DBI - Database Interface. DBI представляет собой набор методов, переменных для обеспечения взаимодействия сценария Perl c базой данных. Самое оптимальное для поиска модуля использовать команду: ppm search. Она работает в том случае, если Вы подключены к Интернету. Установку проведите командой ppm install dbi
 
Что такое DBD::ODBC?
 DBD - Database Driver. DBD - программный драйвер для связи с конкретной базой данных. Например, для работы  с Access в Win 32 загрузите DBD-ODBC.zip. Для Linux/Unix Вам придется поискать их. Название файлов могут быть такими freeODBC, unixODBC or iODBC. Установку проведите командой ppm install dbd-odbc
 
Как протестировать базу данных?
1. Тестирование наличия модулей DBI и ODBC в Win32 можно проверить командой info в ppm. Например, PPM> info dbi и PPM> info dbd-odbc. Если модули установлены, то команда отобразит номер соответствующей версии.
 
2. Для тестирования базы данных в Internet браузере наберите в текстовом редакторе пример:
#!usr/bin/perl
use DBI;
$dbh = DBI->connect("dbi:ODBC:'driver=Microsoft Access Driver (*.mdb);dbq=test.mdb'",'','');
$dbh->disconnect;

3. Проверьте файл: error.log. Если, что-то сделано неправильно, то в файле Вы прочитаете сообщение об ошибке.
 
 Дополнение
Более подробно об этой информации изложено в архиве: profi_perl.zip. Он включает несколько файлов. Readme.htm - общая информация, test.mdb - пример базы данных, msaccess.pl - пример на языке perl c построением таблицы базы данных, httpd.conf - конфигурация сервера apache, host - файл настройки IP адреса, dbi-odbs.txt - список файлов DBI и ODBC, устанавливаемых на сервере.

Добавить комментарий

Loading