Поиск в Google Ключевые слова

Вид материалаДокументы

Содержание


Шифрование почты
Основные проблемы и способы их решения
Классификация криптографических алгоритмов
Асимметричная криптография в Perl
Алгоритм RSA
Основные методы работы с RSA
Подобный материал:
Кафедра физиологии человека и животных

Пигалёва Мария, группа 173Б

Поиск в Google

Ключевые слова:

ШИФРОВАНИЕ ПИСЕМ ЭЛЕКТРОННОЙ ПОЧТЫ

ссылка скрыта

Электро́нная по́чта (англ. email, e-mail, от англ. electronic mail) — технология и предоставляемые ею услуги по пересылке и получению электронных сообщений (называемых «письма» или «электронные письма») по распределённой (в том числе глобальной) компьютерной сети.

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

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

ссылка скрыта

Шифрование почты


Для шифрования почты в настоящий момент широко применяются два стандарта: ссылка скрыта (использующий инфраструктуру открытых ключей) и ссылка скрыта (использующий сертификаты со схемой доверия, группирующегося вокруг пользователя).

Ранее также существовали стандарты ссылка скрыта и ссылка скрыта, но, из-за несовместимости друг с другом и неудобства использования, они не прижились.

Стандарты S/MIME и Open PGP позволяют обеспечить три вида защиты: защиту от изменения, неотзывную подпись и конфиденциальность (шифрование). Дополнительно, S/MIME третьей версии позволяет использовать защищённое квитирование (при котором квитанция о получении письма может быть сгенерирована успешно только в том случае, когда письмо дошло до получателя в неизменном виде).

Оба стандарта используют симметричные криптоалгоритмы для шифрования тела письма, а симметричный ключ шифруют с использованием открытого ключа получателя. Если письмо адресуется группе лиц, то симметричный ключ шифруется по-очереди каждым из открытых ключей получателей (и иногда, для удобства, открытым ключом отправителя, чтобы он имел возможность прочитать отправленное им письмо).

Криптографические методы защиты в языках программирования

Виктор Рудометов

Основные проблемы и способы их решения


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

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

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

Математическая криптография возникла как наука о шифровании — наука о криптосистемах. В классической модели системы секретной связи имеются два участника, которым необходимо передать секретную (конфиденциальную) информацию, не предназначенную для третьих лиц. Данная задача об обеспечении конфиденциальности, защиты секретной информации от внешнего противника, является одной из первых задач криптографии.

Существует несколько подходов к решению поставленной задачи.

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

Вторым подходом является использование общедоступных каналов связи и скрытие самого факта передачи какой-либо информации. Данным направлением занимается наука стенография. К сожалению, методы стенографии не могут гарантировать высокий уровень конфиденциальности информации.

Третий способ — это использовать общедоступный канал связи, но передавать данные в преобразованном виде, так чтобы восстановить их мог лишь адресат. Разработкой методов преобразования информации, обеспечивающей ее шифрование, и занимается криптография.

Со временем область применения криптографии расширилась и ушла далеко вперед от своей начальной цели. В качестве иллюстрации этого положения можно рассмотреть следующий пример. Допустим, клиент банка намерен переслать деньги со своего счета на счет какой-либо организации. Здесь следует отметить, что не вся передаваемая информация является конфиденциальной. Действительно, необходимо переслать лишь банковские реквизиты, которые общеизвестны и общедоступны. Однако банку важно убедиться, что деньги хочет перевести именно их обладатель, а не злоумышленник. Клиент же заинтересован в том, чтобы сумма не была изменена, и никто не смог бы переслать деньги от его имени или поменять информацию о получателе денег.

Стоит отметить, что криптосистема работает по определенной методологии (процедуре).

Эта методология предусматривает использование:

        одного или более алгоритмов шифрования, которые можно выразить в виде математических формул;

        ключей, используемых данными алгоритмами шифрования,

        системы управления ключами,

        незашифрованного текста,

        зашифрованного текста (шифртекста).

Пример схемы методологии шифрования с использованием ключей представлен на рис. 1.



Рис. 1. Пример схемы шифрования.

Классификация криптографических алгоритмов


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

В симметричной (symmetric) методологии с секретным ключом используется один ключ, с помощью которого производится как шифрование, так и расшифровка одним и тем же алгоритмом симметричного шифрования. Этот ключ передается двум участникам взаимодействия безопасным образом до передачи зашифрованных данных. Проблемой является тот факт, что безопасно распространять секретные ключи довольно трудно. К достоинствам данной системы можно отнести сравнительно большое быстродействие при шифровании и расшифровке передаваемых сообщений.

Примером постоянного использования симметричной методологии является сеть банкоматов ATM. Эти системы являются оригинальными разработками владеющих ими банков и не продаются.

В асимметричной (asymmetric) методологии с открытым ключом используются два взаимосвязанных ключа. Один из ключей хранится в секрете, а другой публикуется в открытых источниках. Данные, зашифрованные одним ключом, могут быть расшифрованы только другим ключом. Один из важнейших недостатков — это необходимость использования очень больших по размеру ключей для обеспечения безопасности, что, несомненно, отражается на скорости работы алгоритмов шифрования.

Часто обе методологии комбинируются. Например, генерируется симметричный (секретный) ключ, который передается с помощью алгоритмов асимметричной методологии.

К распространенным алгоритмам симметричной методологии можно отнести DES (Data Encryption Standard), 3-DES, RC2, RC4 и RC5. Примером же асимметричной являются RSA и ECC. И отдельную позицию занимает один из наиболее популярных алгоритмов цифровой подписи DSA (Digital Signature Algorithm).

Актуальность проблемы сохранения целостности или конфиденциальности информации была очевидна во все времена. Но особенно остро она проявилась с развитием информационных технологий, в частности, глобальной сети Интернет. Эта сеть обеспечивает удобный, оперативный способ связи. Использование же специальных средств обеспечивает необходимые уровни конфиденциальности. При этом в современной жизни пользователю компьютера нередко приходится встречаться с такими сложнейшими алгоритмами, как RSA или DSA. В результате уже почти ни у кого не вызывает удивления возможность использования цифровой подписи или даже шифрование писем электронной почты E-mail (рис. 2).

Асимметричная криптография в Perl


Довольно популярный Интернет-направленный язык Perl также имеет встроенные средства обеспечения защиты.

Для примера рассмотрим использование криптографического алгоритма шифрования RSA.

Алгоритм RSA


Задача, которую решает RSA, это передача секретной информации таким образом, чтобы прочитать ее смог лишь адресат.

Суть метода заключается в следующем.

Потенциальным получателем шифрованного сообщения выполняются следующие действия:

        генерируются два больших простых числа (например, 1024 бит, 308 знаков) — p и q;

        подсчитывается их произведение n = pq;

        выбирается случайное число e, которое взаимно просто с числом (p 1)(q 1), а также не превосходит его;

        подсчитывается величина d такая, что ed = 1 mod (p 1)(q 1).

        пара (n, e) становится открытым ключом (public key), а d — закрытым ключом (private key).

Открытый ключ публикуется в открытых источниках, например, пересылается через электронную почту.

Отправителю шифрованного сообщения для работы необходимо выполнить следующие действия:

        получить открытый ключ;

        создать сообщение в числовом виде m, не превосходящем n;

        подсчитать величину c = (me) mod n;

        с и есть зашифрованное сообщение, которое отправляется создателю открытого ключа.

Получатель закодированного сообщения вычисляет m = (cd) mod n и получает сообщение в расшифрованном виде.

Стойкость алгоритма RSA обеспечивается благодаря тому, что злоумышленнику необходимо получить число d, которое можно вычислить, факторизовав число n. Однако на данный момент не существует быстрых алгоритмов, решающих задачу факторизации больших чисел.

Основные методы работы с RSA


В языке Perl вся криптография поставляется через модули CPAN. Реализация RSA находится в пакете Crypt::RSA.

Генерация 2048-битовых ключей:

$rsa = new Crypt::RSA;

$public, $private) = $rsa->keygen( Size => 2048 )

Открытый ключ публикуется.

Шифрование данных (строка $message) с использованием открытого ключа:

my $c = $rsa->encrypt( Message => $message, Key => $public );

В результате получается шифрованное сообщение $c, которое отправляется обратно адресату. Получатель использует для расшифровки ранее сгенерированный закрытый ключ $private,:

$message = $rsa->decrypt( Ciphertext => $c, Key => $private );

Кроме представленных строк исходного текста на языке Perl, стоит отметить и некоторые дополнительные особенности пакета.

Для отправки защищенных сообщений информация должна быть представлена в виде одного или нескольких чисел, значения которых не превосходят n. При этом каждому сообщению соответствует определенное число и наоборот. Средства языка Perl позволяют дробить сообщение на последовательность таких чисел, а также в дальнейшем соединять их обратно в текст.

К сожалению, в системе RSA есть одна важная особенность, снижающая степень защищенности. Если злоумышленник может заставить отправителя закодировать уже известное ему сообщение, то величины p и q могут быть подсчитаны без факторизации n. Однако с этим можно успешно бороться, перегружая исходное сообщение “мусором” (padding). Со временем для этой операции был разработан стандарт PKCS #1. Crypt::RSA реализует не только PKCS #1, но и более современный OAEP, который использует padding по умолчанию. При использовании PKCS #1 необходимо передать соответствующий параметр конструктору.

$rsa = new Crypt::RSA ( ES => 'PKCS1v15 )




ссылка скрыта


Если вас волнует конфиденциальность вашей переписки, то следующая часть статьи специально для вас.

Для обеспечения безопасности передаваемых данных придумано множество алгоритмов шифрования. Каждый из них по-своему хорош. Обеспечить безопасность переписки можно двумя способами:
1. Использовать шифрованный канал связи с почтовым сервером.
2. Зашифровать само сообщение.

Установление шифрованного соединения выглядит простейшим решением — достаточно поставить соответствующую галочку в настройках клиента:
Инструменты — Параметры учетной записи...





Параметры сервера — Использовать защищенное соединение:





В таком случае дальнейшая судьба нашего письма будет в руках почтового сервера: может статься, что он не поддерживает защищенное соединение. Кроме того, есть еще сервер получателя. Поэтому лучше зашифровать само сообщение.

Для шифрования почты традиционно используют PGP-шифрование. PGP (Pretty Good Privacy) представляет собой прикладную криптосистему. Данная криптосистема разрабатывалась специально для защиты электронной почты от посторонних. Представляет собой асимметричный алгоритм шифрования. Суть действия такова: каждый пользователь имеет два ключа — открытый и секретный. Открытый ключ вы отдаете (посылаете почтой, размещаете на сайте) тому, с кем будете переписываться. Данный ключ не представляет секрета — он нужен для того, чтобы ваш собеседник мог зашифровать письмо, которое хочет отправить вам. После того, как письмо будет зашифровано, расшифровать его сможет только обладатель секретного ключа. То есть вы. Таким же образом вы получаете открытый ключ своего друга для того, чтобы шифровать письма, отправляемые ему.
Сама идея асимметричного шифрования не нова, но в контексте шифрования почты это было внедрено в 1991 году. В последствии, идея так понравилась общественности, что был разработан соответствующий открытый стандарт OpenPGP. Появление стандарта привело к тому, что множество реализаций PGP-шифрования полностью совместимы между собой, независимо от того, является ли данная конкретная реализация коммерческой или свободной и общедоступной.

Для того, чтобы использовать PGP в Thunderbird, нам потребуется программа, которая будет генерировать ключи, а также шифровать и расшифровывать письма. Для этого как нельзя лучше подходит программа GNU Privacy Guard (GnuPG или GPG). Скачать ее можно непосредственно с сайта проекта:

ссылка скрыта

И тут дорожки Windows и Linux расходятся. Рассматривая Linux, следует упомянуть, что GnuPG присутствует во многих дистрибутивах по умолчанию. Если же в вашем дистрибутиве GnuPG нет, то скачать инсталляционный пакет можно с фтп-сервера проекта:

ссылка скрыта

Кроме того, можно воспользоваться менеджером пакетов:



Для управления пакетами традиционно используется Synaptic Package Manager. В строке поиска вводим "gnupg", отмечаем пакет для установки и нажимаем "Apply".

В случае с Windows дистрибутив качаем с того же фтп сервера:

ссылка скрыта

Размер — около 2.1 МБ.

Инсталлятор самый обычный:



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



Процедура установки тривиальна — кликаем "Next", пока программа не установится. Эта же программа используется для обеспечения шифрования не только в Thunderbird, но и в других почтовых клиентах, например, в The Bat.

На этом разница между операционными системами заканчивается и можно снова наслаждаться истинной кроссплатформенностью.
Следующим шагом будет установка дополнения для работы с только что установленным GnuPG. Дополнение называется "Enigmail". Скачать его можно по адресу:

mozdev.org/download/index.php

Дополнение представляет собой .xpi файл. Размер около мегабайта. После этого выбираем строку "Дополнения" из меню "Инструменты":



А затем устанавливаем само дополнение, кликнув кнопку "Установить" и выбрав файл дополнения:




Если все сделано правильно, то в строке основного меню появится пункт "OpenPGP". Находим там "Настройки":




И указываем путь, по которому установлена GnuPG. Если вы соблюдали описанную выше последовательность действий, то система сама определит, расположение программы:




Вот и завершена предварительная подготовка. Можно переходить к созданию ключей. Идем в "OpenPGP" — "Управление ключами":




И начинаем таинство генерации своей первой пары ключей:



Настройки выбираем, как показано на скриншоте:



Тут пароль — это не тот пароль, который вы используете для доступа к почте, а просто фраза, которая будет использоваться при расшифровке. Указывать его не обязательно. Впрочем, если к вашему компьютеру имеет доступ еще кто-то, то можно и указать.
В меню "Дополнительно" выбираем длину ключа и алгоритм шифрования:




Кликаем "Создать ключ". Во время генерации можно и даже нужно не просто смотреть на индикатор прогресса, а еще и двигать мышкой и набирать что-то на клавиатуре. Для генерации ключа используются различные генераторы случайных чисел, а они зависят от того, что происходит в данный момент. Таким образом чем больше действий производится на компьютере в момент генерации, тем случайней будет наш ключ и тем сложнее его будет взломать. Это можно сравнить с тем, что подобрать пароль "11111111111111" проще, чем "eR4_a#y0", несмотря на то, что первый длиннее.

Генерация ключа заканчивается сообщением, что все прошло хорошо:



Сразу же можно создать сертификат отзыва ключа. Он пригодится, чтобы сообщить всем, что ваш секретный ключ утерян, потерял актуальность или похищен.

После этого в окне управления ключами появится ваш ключ:



Теперь нужно разослать его всем, с кем вы собрались секретно переписываться. Создаем новое письмо и присоединяем к нему открытый ключ:



В ответ нам присылают свой открытый ключ, который мы импортируем в базу:



После импорта ключа идем снова в управление ключами и устанавливаем уровень доверия ключу:







Вот и все. Можно смело передавать самую секретную информацию:

Если ваше письмо перехватят, то злоумышленнику придется потратить много (в случае с 204во что-то, что можно прочитать. Зато тот, кому вы пишите, не почувствует никаких затруднений:8 битным ключем — ОЧЕНЬ МНОГО) лет для того, чтобы превратить это:



Подводя итог, следует отметить, что вместе с экстремальной надежностью шифрование электронной почты накладывает и ряд ограничений. Раз уж вы озаботились безопасностью, следует уделить особое внимание сохранности секретного ключа. Кроме того, шифрование — процесс парный, а значит и те, с кем вы хотите безопасно переписываться должны потратить время на настройку своих почтовых клиентов. Зато если в будущем возникнет необходимость передавать электронной почтой коммерческие тайны, то вы будете знать, как это делается, и во всеоружии встретите угрозу перехвата важной информации конкурентами.