Лабораторная работа
Системы шифрования с открытым ключом
Вводная информация
Алгоритмы шифрования с открытым
ключом используют несимметричные, или односторонние, функции. Это такие
функции, значения которых вычислить легко, а значения их аргументов по известному
значению функции – практически невозможно.
Y
= f(X) - вычисляется
легко
X
= f-1(Y) -
практически невозможно
Принципы шифрования с открытым ключом
- Криптографическая система
генерирует пару взаимосвязанных ключей: открытый ключ для шифрования и
секретный – для дешифрации.
- Как правило, любой из этих
связанных ключей может служить для шифрования, и тогда другой применяется
для дешифрации.
- По открытому ключу невозможно
восстановить второй секретный ключ.
Процесс обмена сообщениями
в системах с открытым ключом выглядит так:
- Каждый пользователь в сети
генерирует пару ключей: один для шифрования, другой для дешифрации.
- Каждый пользователь публикует
свой открытый ключ, помещая его в общедоступном файле. Это открытый ключ.
Второй ключ остается в личном пользовании и является секретным.
- Если пользователь А хочет
послать сообщение пользователю В, он шифрует сообщение, используя открытый
ключ пользователя В.
- Когда пользователь В получает
сообщение, он дешифрует его с помощью своего секретного ключа. Никто
другой не сможет расшифровать сообщение, не имея второго секретного ключа.
Система PGP
Пример системы, использующей
шифрование с открытым ключом – система PGP. PGP (Pretty Good Privacy
– вполне надежная секретность) - это система аутентификации и конфиденциальности,
которая широко используется для защиты электронной почты и хранения файлов.
Практически она является результатом работы одного человека – Фила
Циммермана (Zimmermann). Эта система - свободно
распространяемая, она доступна через Интернет. Однако существует и недорогая
коммерческая версия, обеспечивающая техническую поддержку.
Достоинства системы PGP:
- Система доступна практически на
всех существующих аппаратных платформах (DOS/Windows, UNIX, Macintosh).
Имеется коммерческая версия, обеспечивающая техническую поддержку.
- Система основана на алгоритмах,
которые считаются лучшими криптографическими алгоритмами и исключительно
надежны.
- Система разработана частным
лицом, и поэтому неподконтрольна никакой правительственной организации
Функции PGP
Сервис PGP
включает в себя 5 функций:
- Аутентификация.
Обеспечивается с помощью создаваемой цифровой подписи, которая шифруется с
помощью личного ключа отправителя и включается в сообщение. Получатель
использует открытый ключ отправителя для расшифровки подписи. Затем он
генерирует новую подпись сообщения и сравнивает с той, которая
дешифрована. Если подписи совпадают, сообщение считается подлинным.
- Конфиденциальность.
Обеспечивается шифрованием сообщения с помощью одноразового сеансового
ключа, сгенерированного отправителем. Сеансовый ключ – это случайное
128-битовое число. Сеансовый ключ шифруется с помощью открытого ключа
получателя и включается в сообщение.
- Сжатие. Сообщение можно
сжать с помощью алгоритма ZIP. Шифрование
происходит после сжатия, чтобы усилить криптографическую защиту.
- Совместимость на уровне
электронной почты. Чтобы обеспечить возможность использования системы
всеми приложениями электронной почты, шифрованное сообщение можно
преобразовать в поток символов ASCII. При этом
используется схема конвертирования radix-64, в
которой каждая группа из трех байтов двоичных данных преобразуется в 4
символа ASCII. Это увеличивает длину сообщения на
33%, но это можно компенсировать с помощью сжатия текста.
- Сегментация. Чтобы
удовлетворить ограничениям максимального размера сообщений, PGP выполняет сегментацию и обратную сборку сообщения.
Сегментация выполняется после всех других операций.
Функции хэширования
Функция хэширования, или хэш-код,
это один из вариантов кода аутентичности сообщения. Функция хэширования
получает на вход сообщение М произвольной длины, а на выход выдает хэш-код Н(М)
фиксированного размера. Хэш-код является функцией всех битов сообщения,
и обеспечивает возможность контроля ошибок: изменение любого числа битов в
сообщении приводит к изменению хэш-кода.
На применении функций
хэширования основаны цифровые подписи.
Задание к лабораторной работе
- Создание ключей. Запустить
программу PGPtools (Start/All Programs/PGPtools). Сгенерировать новую пару ключей (открытый
и закрытый) с помощью Мастера генерации ключей (кнопка PGPkeys, в окне PGPkeys
кнопка Generate new keypair).
Для этого необходимо ввести имя пользователя и адрес e-mail (не обязательно реальные). Затем выбирается длина
ключа и используемый алгоритм (DSS или RSA). Далее можно задать дату, до которой ключ остается
действительным или указать, что ключ будет действительным всегда. Затем
этого необходимо задать и подтвердить (повторно ввести) пароль. После
всего этого будет сгенерирована пара ключей (приватный и публичный, или
закрытый и открытый), которые будут добавлены в соответствующие файлы
ключей (public keyring и secret keyring).
- Экспорт открытого ключа.
Нужно сделать экспорт открытого ключа двумя способами – с помощью обычного
текстового файла, и с помощью специального файла. Чтобы сохранить открытый
ключ из созданной пары ключей в текстовом файле, нужно отметить мышью
созданный ключ и скопировать его в буфер (меню Edit/
Copy). Затем перейти в текстовый файл и
вставить содержимое буфера. Файл нужно переслать другой бригаде студентов,
чтобы вам могли зашифровать сообщение вашим открытым ключом.
Чтобы сделать экспорт созданного открытого ключа с помощью специального
файла, нужно воспользоваться командой Export в
меню окна со списком ключей (Keys/Export). Полученный файл с расширением asc переслать другой бригаде
студентов.
- Добавление чужого открытого
ключа в свою базу ключей. Нужно внести открытый ключ, созданный любой
другой бригадой, в свою базу открытых ключей. Для этого можно воспользоваться
либо текстовым файлом с открытым ключом, либо специальным файлом ключей с
расширением asc. Импорт открытого ключа из
текстового файла, созданного другой бригадой, выполняется с помощью
буфера. Для этого нужно открыть текстовый файл, выделить весь блок текста,
относящийся к ключу, и скопировать его в буфер клавиатуры. Затем перейти в
список ключей и произвести вставку из буфера. Импорт открытого ключа из
специального файла выполняется с помощью команды Import
в меню окна PGPkeys.
- Шифрование сообщения. Создать
текстовый файл с любым открытым текстом. Зашифровать его с помощью PGP, используя внесенный в базу открытый ключ другой
бригады. Для этого нужно щелкнуть правой кнопкой мыши на названии файла, и
в пункте PGP выбрать Encrypt.
Полученный файл с расширением pgp переслать
владельцам ключа через сервер.
- Расшифровка сообщения.
Нужно расшифровать текстовый файл, посланный вам другой бригадой и
зашифрованный с помощью вашего открытого ключа, используя свой секретный
ключ. Для этого нужно щелкнуть правой кнопкой мыши на названии файла, и в
пункте PGP выбрать Decrypt (или на панели PGPtools
воспользоваться кнопкой Decrypt). После
этого необходимо ввести пароль, который был указан при генерации ключа.
- Создание цифровой подписи и
ее проверка. Нужно создать цифровую подпись в открытом текстовом файле
и переслать этот файл другой бригаде. С помощью открытого ключа другой
бригады нужно проверить подпись в присланном вам файле. Подписывание файла
осуществляется секретным ключом пользователя, а проверка подписи –
публичным.
- Показать преподавателю
результаты работы: созданные файлы с открытыми ключами (два) для
экспорта, свою пару ключей в базе данных и открытые ключи, импортированные
от других бригад (как минимум один), зашифрованное и расшифрованное
сообщение, сообщение с цифровой подписью и процедуру проверки цифровой
подписи другой бригады.