Загрузка...

Методы и средства защиты информации — лабораторные работы


Предмет: «Методы и средства защиты информации». Лабораторные работы.

Тема: «Шифрование текста».

Тема: Защита баз данных на примере MS ACCESS.

Применение программных продуктов в шифровании.


Лабораторные работа. Тема: Шифрованная файловая система EFS.

Хеш-функции. Технологии цифровых подписей. Защита конфиденциальной информации в ОС LINUX – часть2
Цель работы: Ознакомиться файловой системой EFS, получить навыки работы с шифрованием данных в ОС Windows XP.
Основные понятия
Шифрованная файловая система EFS позволяет пользователям хранить данные на диске в зашифрованном формате.

Шифрованная файловая система EFS предоставляет следующие возможности.
• Пользователи могут зашифровывать свои файлы при сохранении их на диск.
• Доступ к зашифрованным файлам можно получить просто и быстро. При доступе пользователей к своим файлам с диска данные отображаются в виде обычного текста.
• Шифрование данных выполняется автоматически и является полностью прозрачным для пользователя.
• Администраторы могут восстанавливать данные, зашифрованные другим пользователем. Это позволяет получить доступ к данным, если пользователь, зашифровавший данные, в настоящее время не доступен или соответствующий закрытый ключ утерян.

При работе с зашифрованными файлами и папками следует учитывать следующие сведения и рекомендации.
• Могут быть зашифрованы только файлы и папки, находящиеся на томах NTFS.
• Сжатые файлы и папки не могут быть зашифрованы. Если шифрование выполняется для сжатого файла или папки, файл или папка преобразуются к состоянию без сжатия.
• Зашифрованные файлы могут стать расшифрованными, если файл копируется или перемещается на том, не являющийся томом NTFS.
• При перемещении незашифрованных файлов в зашифрованную папку они автоматически шифруются в новой папке. Однако обратная операция не приведет к автоматической расшифровке файлов. Файлы необходимо явно расшифровать.
• Не могут быть зашифрованы файлы с атрибутом «Системный» и файлы в папке С:\WINDOWS.
• Шифрование папки или файла не защищает их от удаления. Любой пользователь, имеющий права на удаление, может удалить зашифрованные папки или файлы. По этой причине рекомендуется использование EFS в комбинации с разрешениями системы NTFS.

Общий доступ к файлам в системе EFS
Операционная система Microsoft Windows XP позволяет предоставлять общий доступ к зашифрованным файлам EFS. Права доступа к зашифрованным файлам можно назначать для отдельных пользователей. Возможность назначать права доступа пользователям предоставлена только для отдельных файлов. Назначение прав доступа отдельных пользователей к папкам не поддерживается ни в операционной системе Microsoft Windows 2000, ни в Windows XP. Кроме того, в EFS не поддерживается использование групп. После того как файл зашифрован, появляется новая кнопка интерфейса, с помощью которой можно разрешить общий доступ к файлу. Перед тем как появится возможность добавлять новых пользователей, файл необходимо зашифровать и сохранить. Пользователей можно добавлять из локального компьютера если пользователь имеет действующий сертификат для EFS. Возможность назначать права доступа пользователям предоставлена только для файлов. Для зашифрованных папок EFS возможности назначать права доступа отдельным пользователям не предоставлено. Добавлять права доступа можно только для пользователей, использование групп при работе с зашифрованными файлами EFS не поддерживается.

Ход работы:
Чтобы зашифровать файлы для нескольких пользователей, выполните следующие действия:
1. Откройте проводник Windows и выберите файл, который требуется зашифровать.
2. Щелкните правой кнопкой мыши нужный файл и выберите в контекстном меню команду «Свойства».
3. Нажмите кнопку «Дополнительно», чтобы включить систему EFS.
4. Зашифруйте файл, установив флажок «Шифровать содержимое для защиты данных», как показано на рис. 1. Нажмите кнопку ОК.

рис 1. Шифрование файлов для защиты данных

Если шифрование файла или папки выполняется впервые, появится диалоговое окно с вопросом о том, собирается ли пользователь шифровать только этот файл или всю папку.
5. Выберите нужный вариант и нажмите кнопку OK. После этого произойдет возврат в исходное диалоговое окно.
Чтобы добавить дополнительных пользователей, снова откройте страницу свойств файла, нажав кнопку «Дополнительные свойства», а затем кнопку «Подробности». В открывшемся диалоговом окне «Подробности» имеется возможность добавления пользователя.
Чтобы добавить пользователей, выполните следующие действия:
Шаг 1
Нажмите кнопку «Добавить», как показано на рис. 2.

рис 2 Добавление пользователей
Появится новое диалоговое окно, в котором представлены имеющиеся пользователи и сертификаты, содержащиеся в кеше хранилища сертификатов «Другие пользователи» локального компьютера. Добавляемый пользователь должен иметь действительный сертификат EFS. Сертификат EFS выдается пользователю только в том случае, если он хоть раз зашифровывал файл или папку.
Шаг 2
Чтобы зарегистрировать изменение и продолжить работу, нажмите кнопку OK.

рис 3 Успешное добавление нового пользователя

Любой пользователь, который может расшифровать файл, может также удалить других пользователей, если он имеет разрешение на запись.
В файловой системе EFS действует ограничение в 256 K на размер заголовка файла для метаданных EFS. Это ограничивает число добавляемых отдельных записей, обеспечивающих общий доступ к файлу. В среднем к зашифрованному файлу можно добавить не более 800 пользователей.
Шифровать и расшифровывать папки и файлы можно с помощью командной строки, использую команду cipher.
Использованная без параметров команда cipher отображает состояние шифрования текущей папки и всех файлов, находящихся в ней.
Синтаксис команды
cipher [{/e|/d}] [/s:каталог] [/a] [/i] [/f] [/q] [/h] [/k] [/u[/n]] [путь […]]
Параметры
/e — Шифрует указанные папки. Папки помечаются таким образом, чтобы файлы, которые будут добавляться в папку позже, также шифровались.
/d — Расшифровывает указанные папки. Папки помечаются таким образом, чтобы файлы, которые будут добавляться в папку позже, не будут зашифрованы..
/s: каталог — Выполняет выбранную операцию над указанной папкой и всеми подпапками в ней.
/a — Выполняет операцию над файлами и каталогами.
/i — Продолжение выполнения указанной операции даже после возникновения ошибок. По умолчанию выполнение cipher прекращается после возникновения ошибки.
/f — Принудительно шифрует все выбранные объекты, даже если они уже зашифрованы. По умолчанию уже зашифрованные файлы пропускаются командой cipher.
/h — Отображение файлов с атрибутами «Скрытый» и «Системный». По умолчанию эти файлы не шифруются и не расшифровываются.
Примеры
Чтобы зашифровать подпапку May в папке MonthlyReports с помощью команды cipher, введите следующую команду:
cipher /e monthlyreports\may
Чтобы зашифровать папку MonthlyReports, подпапки с January по December и подпапки Manufacturing в подпапках месяцев, введите:
cipher /e /s:monthlyreports
Чтобы зашифровать только файл Marketing.xls в подпапке May, введите:
cipher /e /a monthlyreports\may\marketing.xls
Чтобы зашифровать файл Marketing.xls, файл Maintenance.doc и подпапку Manufacturing (расположенные в папке May), введите:
cipher /e /a monthlyreports\may\ma*
Чтобы определить, зашифрована ли папка May, введите:
cipher monthlyreports\may
Чтобы определить, какие файлы зашифрованы в папке May, введите:
cipher monthlyreports\may\*
Порядок выполнения работы:
Для выполнения работы вам понадобятся две учетные записи:
student (вход без пароля) и mszistud (пароль: mszistud). Папка, в которой вы можете шифровать свои файлы — С:\security
1. Загрузитесь под учетной записью student
2. Создайте текстовый файл student.txt и зашифруйте его.
3. Загрузитесь под учетной записью mszistud
4. Проверьте, может ли пользователь mszistud прочитать файл student.txt
5. Создайте текстовый файл mszi.txt и зашифруйте его.
6. Загрузитесь под учетной записью student
7. Проверьте, может ли пользователь student прочитать файл mszi.txt
8. Добавьте к зашифрованному файлу student.txt пользователя mszistud
9. Загрузитесь под учетной записью mszistud
10. Проверьте, может ли теперь пользователь mszistud прочитать файл student.txt. Если вы все правильно сделали, то файл student.txt будет доступен как student так и mszistud.
11. Создайте и зашифруйте папку mszifolder. Перенесите в нее любой незашифрованный файл. Просмотрите результат.
12. Попробуйте обратиться к этой папке под учетной записью student.
13. Загрузитесь под учетной записью student
14. Перенесите любой зашифрованный файл на диск с файловой системой FAT. Просмотрите результат.

Хеш-функции. Технологии цифровых подписей. Защита конфиденциальной информации в ОС LINUX – часть2
Цель работы: Изучить свойства хеш-функции. Ознакомиться с некоторыми приемами работы с пакетом GnuPG для шифрования файлов и создания цифровой подписи.

Использование GnuPG шифрования и подписи файлов
GnuPG (GNU Privacy Guard, «Страж безопасности GNU», или просто GPG) – это открытый эквивалент PGP (Pretty Good Privacy), известной и широкоиспользуемой программы для Windows, DOS и других операционных систем. Он распространяется в открытых исходниках и имеет те же самые функции, что и PGP, основанные на стандарте OpenPGP. У GnuPG есть несколько применений – он может использоваться либо для шифрования писем и файлов, либо для их цифровой подписи. Первый вариант применения GnuPG – шифрование писем и файлов на вашем жестком диске – очевиден, и он обычно применяется для защиты секретных сообщений или документов. Цифровая подпись информации необходима для сохранения целостности сообщений и файлов, особенно при передаче их через незащищенный канал. Она гарантирует, что: 1) Письмо было отправлено именно этим человеком, и 2) Что информация по пути не была изменена.
Использовать GnuPG очень просто. Сама программа – консольная. GPG основан на принципе открытых ключей (Public Key Infrastructure) – то есть, существуют 2 ключа: закрытый ключ используется для подписи и шифрования, а открытый ключ – для расшифровки и проверки правильности подписи.

Генерация ключа
Чтобы начать работу с GPG, вам нужно создать пару ключей. Сделать это очень легко – просто наберите в командной строке:
[student@lhaos stud]$ gpg —gen-key
Если вы еще не работали с GPG, то эта команда сначала создаст директорию ~/.gnupg с файлом настроек ~/.gnupg/options а также создаст два набора ключей: ~/.gnupg/secring.gpg and ~/.gnupg/pubring.gpg. Затем вам будет задан вопрос: какой тип ключей вам нужен — «DSA and ElGamal», «DSA», или «ElGamal». Первый тип используется по умолчанию, и именно он позволяет использовать все возможности GPG. Ключ DSA используется только для цифровой подписи. ElGamal может быть использован для подписи и шифрования. Почти всегда следует выбирать «DSA and ElGamal».
После этого вам нужно выбрать размер ключа. Рекомендуемый размер ключа – 1024 бита. Этот размер довольно неплохо подходит для надежного шифрования, и он является самым распространенным. Вы можете выбрать и другой размер: 2048 – для улучшенной безопасности (практически невозможно сломать или подделать). При увеличении размера ключа все операции производятся медленнее, и ваш открытый ключ становится намного больше. Рекомендуемые варианты – 1024 или 2048; выбор полностью за вами.
Следующий шаг – выбрать срок действия ключа. Некоторые предпочитают сделать срок действия своего ключа бесконечным, и выбирают 0. Другие создают новый ключ каждый год, и для этого они выбирают значение «1y». Здесь все так же зависит от ваших персональных предпочтений.
После этого вам будет предложено ввести вашу личную информацию для нового ключа. Идентификатор пользователя составляется из трех полей: Имя, Комментарий и Email-адрес. После того, как вы введете информацию для каждого поля, идентификатор пользователя будет выглядеть так: «Имя (Комментарий) ». (Пример: Ivanov Ivan (My First GPG Key!) ). Желательно использовать свое реальное имя и свой главный Email-адрес. Комментарий может быть абсолютно любым.
После создания идентификатора пользователя вам нужно будет ввести пароль. Он будет использоваться каждый раз, когда вы захотите что-нибудь зашифровать или подписать. Так же вам нужно будет вводить пароль для расшифровки данных, зашифрованных с использованием вашего открытого ключа. Пароль – очень важная деталь для обеспечения вашей секретности, потому что его подбор часто бывает намного проще, чем подбор всего ключа. Поэтому он должна быть длинным, сложным и практически не подбираемым.( Для генерации сложного пароля проделайте следующее:
cat /dev/[u]random | uuencode -m — | head -n 2 | tail -c длина пароля.)
Когда вы введете пароль дважды, GPG начнет генерацию вашего ключа. Для этого требуется огромное количество случайных данных, поэтому вам нужно будет подвигать курсор, напечатать что-нибудь на клавиатуре, обратиться к жесткому диску, и т.д. Все эти действия позволяют обеспечить полную случайность и уникальность вашего ключа.
После того, как создание ключа закончится, вы можете использовать GPG для просмотра его характеристик. Это выглядит примерно так:
[student@lhaos stud]$ gpg —list-keys
/home/stud/.gnupg/pubring.gpg
——————————-
pub 1024D/9B1386E2 2007-01-29 Ivanov Ivan(My First GPG Key!)
sub 1024g/7F72A50F 2007-01-29
Эта команда дает вам как открытую, так и закрытую информацию о вашем ключе.

Использование GnuPG для подписи/шифрования
Теперь, когда у вас есть пара ключей, вы можете ставить цифровую подпись на ваших сообщениях и файлах, и зашифровывать данные. Рассмотрим, как происходит процесс шифрования и подписывания обычного текстового файла. Чтобы зашифровать текстовый файл, введите:
[student@lhaos stud]$ gpg -ea -r Ivanov test.file
Эта команда шифрует файл test.file с использованием открытого ключа Ivanov. Вообще, эта команда означает, что только Ivanov сможет расшифровать этот файл. А в нашем примере это значит, что этот файл сможете расшифровать только вы. Эта функция полезна для защиты важных документов. Опция «-e» (encrypt) означает, что файл нужно зашифровать, а опция «-a» – что будет использован режим ASCII. Этот режим позволяет вставлять зашифрованный файл в письма и просматривать его в текстовых редакторах. Без указания режима ASCII файл шифруется в бинарном виде, и некоторые текстовые редакторы не смогут с ним работать. Опция «-r» указывает получателя. Мы указали здесь просто «Ivanov», потому что Ivanov Ivan – единственный ключ в нашей связке. Вы можете указать любое имя или адрес для определения получателя. После шифрования будет создан новый файл, содержащий зашифрованные данные – test.file.asc.
Теперь, если вы хотите расшифровать эти данные, введите:
[student@lhaos stud]$ gpg -d test.file.asc >test.file
Опция «-d» указывает GPG на то, что данные из файла test.file.asc должны быть расшифрованы. По умолчанию GPG отправляет расшифрованные данные на stdout, поэтому мы перенаправляем поток данных в test.file. После этого вам нужно ввести пароль, и, когда вы успешно его введете, данные будут расшифрованы и детали ключа будут выведены на экран.

Использование GnuPG для цифровой подписи файлов
Если вы хотите просто добавить цифровую подпись к файлу, то это можно сделать двумя путями. Вы можете вставить подпись в сам файл – это подходит для текстовых документов. Так же вы можете создать подпись в виде отдельного файла – это используется для бинарных файлов. Предположим, что у вас есть текстовый файл, содержащий текст «This is a text document». Если вы хотите подписать этот файл, вы можете использовать команду:
[user@mdk]$ gpg —clearsign -a test.file
Это создаст новый файл под названием test.file.asc, который будет выглядеть так:
——BEGIN PGP SIGNED MESSAGE——
Hash: SHA1
This is a text document
——BEGIN PGP SIGNATURE——
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org
iD8DBQE8r8scXKktnpsThuIRAksEAJ9nziWMquPWD2GH57Oyr9LaXIMJLgCcCi3J
uN8rDO8WOBK3GDp69lvi8Co=
=lz2x
——END PGP SIGNATURE——
Как вы видите, текст документа остался без изменений, только теперь он окружен информацией цифровой подписи. Если вы захотите изменить хотя бы небольшую часть этого текста, и затем попытаетесь удостовериться в правильности подписи этого файла, то GnuPG обнаружит, что подпись неверна. Чтобы удостовериться в правильности подписи, используйте команду:
[student@lhaos stud]$ gpg —verify test.file.asc
GPG обьявит вам, правильна ли эта подпись, и кто подписывал этот файл. Если файл был изменен, то GPG предупредит вас о том, что подпись неправильна.
Так же вы можете подписывать сообщения непрозрачной подписью. При этом создается еще один .asc файл, который с виду кажется зашифрованным. Но на самом деле он не зашифрован, и каждый может «расшифровать» его с помощью опции «-d», или использовать опцию «—verify» для проверки его достоверности. Чтобы подписать файл таким образом, используйте «-s» вместо «—clearsign».
Если вы хотите создать цифровую подпись для бинарного файла, используйте опцию «-b», которая создает отдельную подпись. Пусть у вас есть архив под названием arhive.tar, и вы хотите создать для него отдельную подпись, чтобы люди, скачивающие его, знали, что этот архив гарантированно останется таким, каким вы его запланировали (обычно это делается для защиты от троянов, и т.д). Пример:
[student@lhaos stud]$ gpg -ba arhive.tar
Подпись будет храниться в файле arhive.tar.asc. Теперь, если кто-нибудь скачал ваш файл вместе с его подписью, он должен просто запустить:
[user@mdk]$ gpg —verify arhive.tar.asc
GPG сравнит подпись с файлом и выведет результат. Если файл подписи или бинарный файл будут любым образом изменены, то подпись будет признана неправильной.

Импорт и работа с ключами GPG
Теперь, когда вы разобрались, как шифровать, дешифровать, подписывать и проверять подписи с помощью GPG, пришло время подключить открытые ключи других людей к вашему набору ключей. Обмен открытыми ключами совершенно безопасен. Вы можете отдать ваш открытый ключ кому угодно, в отличии от закрытого ключа, который вы должны хранить в полной секретности. Чтобы экспортировать ваш открытый ключ, запустите:
[student@lhaos stud]$ gpg —export -a Ivanov@mail.ru >Ivanov.asc
Эта операция производит экспорт открытого ключа, принадлежащего Ivanov@mail.ru (то есть – вам :), который записывается в файл Ivanov.asc. Вам нужно раздать всем именно этот файл с вашим открытым ключом.
Если кто-нибудь передал вам свой открытый ключ, то вы можете импортировать его к себе командой:
[student@lhaos stud]$ gpg —import user.asc
где user.asc – файл с открытым ключом. Эта команда добавляет ключ к вашему набору открытых ключей. Так же вы можете использовать идентификатор ключа вместо Email-адреса. Например, идентификатор ключа Ivanov Ivan – это 9B1386E2. Если вы посмотрите на вывод «—list-keys», то вы увидите строку с идентификатором вашего ключа. (Например, строка «pub 1024D/9B1386E2» расшифровывается так: открытый ключ, 1024 бита, DSA, идентификатор ключа – 9B1386E2).
Чтобы посмотреть все ключи из вашего набора открытых ключей, используйте «gpg —list-keys». Если вы хотите посмотреть открытый ключ конкретного пользователя, используйте команду «gpg —list-keys e-mail пользователя.
Далее производить обмен зашифрованными файлами можно только с теми пользователями, чьи открытые ключи находятся в вашем наборе. Например, пусть в вашем (вы — Ivanov) наборе ключей есть открытый ключ пользователя Petrov. Для того, чтобы Иванов зашифровал файл так, что только Петров сможет прочитать его, необходимо написать следующую команду:
gpg –r Petrov –ea file.txt
Когда Петров захочет расшифровать этот файл, он просто наберет команду:
gpg –d file.txt.asc
Если файл предназначен исключительно для Петрова и Иванов, к тому же, беспокоится, чтобы никто не подделал сообщение, он может во время шифрования подписать файл. Команда, объединяющая эти действия, шифрование и создание цифровой подписи, в текстовом формате имеет вид:
gpg –r Petrov –bea file.txt

Экспорт закрытого ключа
gpg —export-secret-keys Ivanov@mail.ru >ivan-secret
Этот ключ секретен. Примите все меры для того чтобы этот ключ не попал к посторонним. Не передавайте этот ключ никому. не оставляйте этот файл там где к нему могут получиить доступ другие люди.

Резервное копирование ключей
После всех вышеописанных действий мы получили 2 файла с ключами:
— файл с открытым ключом;
— файл с закрытым ключом.
Вам необходимо сохранить эти ключи. Для этого:
1. Откройте эти ключи в текстовом редакторе и отпечатйте их на бумаге.
2. Запишите файлы на 2 CD диска.
3. Бумажную версию и диски спрячте в недоступное посторонним место. Не забудте это место.
4. Удалите со своего винчестера файл с закрытым ключом. Он вам не понадобится и
итого у вас останется:
• Ваши публичные ключи хранятся в файле ~/.gnupg/pubring.gpg
• Ваши секретные ключи хранятся в файле ~/.gnupg/secring.gpg

Одними из наиболее важных свойств безопасности, используемых сегодня, являются пароли. Важно всем пользователям иметь безопасные, не очевидные пароли. Большинство из наиболее последних дистрибутивов Linux включают программу ‘passwd’, которая не позволит вам установить легко угадываемый пароль.
Для смены пароля выполните:
[student@lhaos stud]$passwd

Выполнение работы
1. Войдите в ОС LINUX под учетной записью mszi_student. Пароль входа совпадает с учетной записью.
2. Сгенерируйте свои ключи под именем user1.
3. Просмотрите характеристику ключей.
4. Зашифруйте обычный текстовый файл для защиты от злоумышленников.
5. Расшифруйте его.
6. Подпишите текстовый файл и просмотрите файл с цифровой подписью.
7. Измените содержимое текстового файла и проверьте подлинность цифровой подписи.
8. Создайте архив (tar –cvf имя_архива файлы…) и создайте для него цифровую подпись.
9. Проверьте подлинность цифровой подписи архива.
10. Создайте в каталоге /mnt/win_d/Linux подкаталог со своей фамилией.
12. Экспортируйте в созданный каталог свой открытый ключ.
13. Войдите в ОС LINUX под учетной записью mszi_profi. Пароль входа совпадает с учетной записью. Сгенерируйте там также свои ключи, но под именем user2.
14. Из каталога /mnt/win_d/Linux/ФИО_студента импортируйте открытый ключ user1
15. Убедитесь, что ключ добавился к вашему набору открытых ключей.
16. Зашифруйте file1 для пользователя user1 и сохраните его в директории/mnt/win_d/Linux/ФИО_студента.
17. Зашифруйте и подпишите file2 для пользователя user1.
18. Попробуйте расшифровать file1.asc и file2.asc при помощи ключа user2.
19. Перейдите в сеанс mszi_student и расшифруйте file1 и file2.
20. Удалите с каталогов /home/mszi_student и /home/mszi_profi подкаталог ./.gnupg.
21. Измените пароль пользователя при помощи команды passwd.
22. Восстановите прежнее значение пароля.
Результат проделанной работы оформить в виде скрипта!!!

Ход работы:
1. Изучить возможности файловой системы EFS и применить их на практике.
2. Выполнить задание к лабораторной работе.
3. Подготовить отчет в электронном виде, содержащий ответы на контрольные вопросы.
Контрольные вопросы:
1. Что такое шифрованная файловая система EFS.
2. Возможности файловой системы EFS.
3. Какие файлы и на каких томах нельзя шифровать?
4. Можно ли к зашифрованной папке добавить пользователей?
5. Что происходить с файлами при шифровании папки, в которой они находятся?
6. Что происходит с незашифрованными файлами при помещении их в зашифрованную папку?
7. Можно ли удалять и перемещать зашифрованные папки и файлы пользователями, не имеющими к ним доступ?
8. На какой файловой системе работает EFS?
9. Для чего нужна команда cipher?
10. Опции команды cipher.
11. Определение хеш-функции.
12. Свойства хеш-функции.
13. Понятие и применение цифровой подписи.
14. Классическая схема создания цифровой подписи.
15. Понятие и применение открытого и закрытого ключа.
16. Какая команда генерирует открытый и закрытый ключи в ОС Linux?
17. Как зашифровать файл для конкретного пользователя в ОС Linux?
18. Как подписать файл и проверить подпись?
19. Файл с каким расширением содержит зашифрованную информацию или цифровую подпись в ОС Linux?
20. Для чего нужен экспорт и импорт ключей?

Лабораторная работа МСЗИ. Тема: Хеш-функции. Формирование цифровой подписи.

Основные понятия хеш-функций
Хеш-функцией называется такое математическое или алгоритмическое преобразование заданного блока данных, которое обладает следующими свойствами:
1. Хэш-функция Н должна применяться к блоку данных любой длины.
2. Хэш-функция Н создает выход фиксированной длины.
3. Н (М) относительно легко (за полиномиальное время) вычисляется для любого значения М.
4. Для любого данного значения хэш-кода h вычислительно невозможно найти M такое, что Н (M) = h.
5. Для любого данного х вычислительно невозможно найти y x, что H (y) = H (x).
6. Вычислительно невозможно найти произвольную пару (х, y) такую, что H (y) = H (x).
Первые три свойства требуют, чтобы хэш-функция создавала хэш-код для любого сообщения.
Четвертое свойство определяет требование односторонности хэш-функции: легко создать хэш-код по данному сообщению, но невозможно восстановить сообщение по данному хэш-коду. Это свойство важно, если аутентификация с использованием хэш-функции включает секретное значение. Само секретное значение может не посылаться, тем не менее, если хэш-функция не является односторонней, противник может легко раскрыть секретное значение следующим образом. При перехвате передачи атакующий получает сообщение М и хэш-код С = Н (SAB || M). Если атакующий может инвертировать хэш-функцию, то, следовательно, он может получить SAB || M = H-1 (C). Так как атакующий теперь знает и М и SAB || M, получить SAB совсем просто.
Пятое свойство гарантирует, что невозможно найти другое сообщение, чье значение хэш-функции совпадало бы со значением хэш-функции данного сообщения. Это предотвращает подделку аутентификатора при использовании зашифрованного хэш-кода. В данном случае противник может читать сообщение и, следовательно, создать его хэш-код. Но так как противник не владеет секретным ключом, он не имеет возможности изменить сообщение так, чтобы получатель этого не обнаружил . Если данное свойство не выполняется, атакующий имеет возможность выполнить следующую последовательность действий: перехватить сообщение и его зашифрованный хэш-код, вычислить хэш-код сообщения, создать альтернативное сообщение с тем же самым хэш-кодом, заменить исходное сообщение на поддельное. Поскольку хэш-коды этих сообщений совпадают, получатель не обнаружит подмены.
Хэш-функция, которая удовлетворяет первым пяти свойствам, называется простой или слабой хэш-функцией. Если кроме того выполняется шестое свойство, то такая функция называется сильной хэш-функцией. Эти свойства позволяют подавать на вход хеш-функции пароли, то есть текстовые строки произвольной длины на любом национальном языке и, ограничив область значений функции диапазоном 0..2N-1, где N – длина ключа в битах, получать на выходе достаточно равномерно распределенные по области значения блоки информации – ключи.
Технология цифровых подписей
Цифровая подпись в цифровых документах играет ту же роль, что и подпись, поставленная от руки в документах на бумаге: это данные, присоединяемые к передаваемому сообщению, подтвержда-ющие, что владелец подписи составил или заверил это сообщение. Получатель сообщения с помощью цифровой подписи может проверить, что автором сообщения является именно владелец подписи и что в процессе передачи не была нарушена целостность полученных данных.
При разработке механизма цифровой подписи возникают следующие задачи:
• создать подпись таким образом, чтобы ее невозможно было подделать;
• иметь возможность проверки того, что подпись действительно принадлежит указанному владельцу;
• иметь возможность предотвратить отказ от подписи.

Классическая схема создания цифровой подписи

При создании цифровой подписи по классической схеме отправитель
1. применяет к исходному сообщению хеш-функцию;
2. вычисляет цифровую подпись по хеш-образу сообщения с использованием секретного ключа создания подписи;
3. формирует новое сообщение, состоящее из исходного сообщения и добавленной к нему цифровой подписи.

Получатель, получив подписанное сообщение,
1. отделяет цифровую подпись от основного сообщения;
2. применяет к основному сообщению хеш-функцию;
3. с использованием открытого ключа проверки подписи извлекает хеш-образ сообщения из цифровой подписи;
4. проверяет соответствие вычисленного хеш-образа сообщения и извлеченного из цифровой подписи. Если хеш-образы совпадают, то подпись признается подлинной.

Схема подписи RSA
Криптосистема с открытым ключом RSA может использоваться не только для шифрования, но и для построения схемы цифровой подписи.

Для создания подписи сообщения M отправитель
1. вычисляет хеш-образ r = h(M) сообщения M с помощью некоторой хеш-функции;
2. зашифровывает полученный хеш-образ r на своем секретном ключе (d,n) , т.е. вычисляет значение s = rd mod n , которое и является подписью.

Для проверки подписи получатель
1. расшифровывает подпись s на открытом ключе (e,n) отправителя, т.е. вычисляет r’ = se mod n и таким образом восстанавливает предполагаемый хеш-образ r’ сообщения M;
2. вычисляет хеш-образ h(M) = r сообщения M с помощью той же самой хеш-функции, которую использовал отправитель;
3. сравнивает полученные значения r и r’ . Если они совпадают, то подпись правильная, отправитель действительно является тем, за кого себя выдает, и сообщение не было изменено при передаче.

Пример. Создать хеш–образ слова «КОЗИНА», используя хеш–функцию , где n = pq, p=13, q=19.
Хешируемое сообщение «КОЗИНА». Возьмем два простых числа p=13, q=19 Определим n=pq=13*19=247. Вектор инициализации выберем равным 8 (выбираем случайным образом). Слово «КОЗИНА» можно представить последовательностью чисел (12, 16, 9, 10, 15, 1) по номерам букв в алфавите. Таким образом,
n=247, H0=8, M1=12, M2=16, M3=9, M4=10, M5=15, M6=1.
Используя формулу
,
получим хеш-образ сообщения «КОЗИНА»:
H1=(H0+M1)2 mod n = ( 8 + 12)2 mod 247 = 400 mod 247=153
H2=(H1+M2)2 mod n = (153 + 16)2 mod 247 = 28561 mod 247= 156
H3=(H2+M3)2 mod n = (156 + 9)2 mod 247 = 27225 mod 247= 55
H4=(H3+M4)2 mod n = ( 55 + 10)2 mod 247 = 4225 mod 247= 26
H5=(H4+M5)2 mod n = ( 26 + 15)2 mod 247 = 1681 mod 247= 199
H6=(H5+M6)2 mod n = (199 + 1)2 mod 247 = 40000 mod 247= 233
В итоге получаем хеш-образ сообщения «КОЗИНА», равный 233.

Электронная цифровая подпись. Используя хеш-образ вычислить электронную цифровую подпись по схеме RSA.
Пусть хеш-образ равен 233, а закрытый ключ алгоритма RSA равен (25, 247). Тогда электронная цифровая подпись сообщения, вычисляется по правилу
s = 233 25 mod 247 = 168.
Для проверки ЭЦП, используя открытый ключ (121, 247), найдем
H = 168 121 mod 247 = 233.
Поскольку хеш-образ сообщения совпадает с найденным значением H, то подпись признается подлинной.

Индивидуальные задания:
Написать программу, реализующую формирование цифровой подписи к сообщению.
Программа должна выполнять следующие действия:
1. Отправитель обрабатывает исходное сообщение хеш-функцией MD5 (вкладка Indy).
2. Полученную 32-символьную последовательность (128-бит) представить в десятичных кодах ASCII и в соответствии с вариантом задания, создать хеш-образ этой последовательности.
3. Применить к полученному хеш-образу алгоритм RSA с использованием закрытого ключа (3, 33) и открытого ключа (7, 33). Полученное значение и будет являться цифровой подписью.
4. Сформировать файл для получателя содержащий: исходное сообщение и цифровую подпись.
Получатель принимает сообщение, выделяет подпись и вычисляет хеш-функцию MD5 от исходного текста, затем составляет его хеш-образ в соответствии с вариантом задания и полученное значение обрабатывает по алгоритму RSA с использование открытого ключа.
Сделать выводы о подлинности сообщения.
Варианты:
1. , где Mi = два символа через два
2. , где Mi = четные символы
3. , где Mi = нечетные символы
4. , где Mi = каждый 5-й символ
Скачать:

/a

Загрузка...