June 16, 2020

Шифрование N1.

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

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

Но для того чтобы прочитать зашифрованные данные, необходимо их дешифровать, по этому давайте разберем это определение тоже.
Дешифрование - это метод преобразования зашифрованного текста обратно в читабельный человеку текст. Если вы осуществите простой поиск в Google, то увидите здесь надпись HTTPS и наличие зеленой иконки замка, это означает, что все содержимое веб-страниц недоступно для чтения людям, которые отслеживают передачу данных по сети.
То есть к примеру ваш провайдер пишет весь ваш трафик (следит за вами в интернете) о том что вы делаете, так как вы используете шифрование TLS то есть другими словами HTTPS то провайдер не может узнать что именно вы просматриваете на сайте, он может только узнать на каком сайте вы находитесь, то есть с каким сайтом происходит обмен данных.

А о чем конкретно – нет, так как данные передаются в зашифрованном не читаемом виде.
Вот если вкратце о том, как работает шифрование и дешифрование, давайте пойдем дальше.

Какие имеются методы шифрования?

Вообще существует только два метода шифрования, это:

- Симметричное шифрование – использует один и тот же ключ и для зашифровывания, и для расшифровывания.

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

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

Основные цели шифрования

Основная цель шифрования применяется для хранения важной информации в зашифрованном виде.

Вообще шифрование используется для хранение важной информации в ненадежных источниках и передачи ее по незащищенным каналам связи. Такая передача данных представляет из себя 2-а взаимно обратных процесса:

Перед отправлением данных по линии связи или перед помещением на хранение они подвергаются зашифровыванию.

Для восстановления исходных данных из зашифрованных к ним применяется процедура расшифровывания.

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

Симметрический метод шифрования

Давайте взглянем на инфографику выше

Отправитель отправляет зашифрованное сообщение: Привет, Marfa

Злоумышленники перехватывают данное сообщение, но так как у них нет ключа для дешифровки они лишь видят набор символов: %#&$!

Получатель, имея ключ дешифровки, с легкостью может прочитать сообщение которое отправил отправитель в зашифрованном виде, и он уже видит текст отправителя в первозданном виде: Привет, Marfa

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

Вообще если говорить простыми словами, есть два основных компонента шифрования

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

Секретный ключ – можете представить, что секретный ключ – это пароль и он должен держаться в тайне.

скрин взят с WWH CLUB

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

Получается алгоритм можно представить, как замок, а секретный ключ – это ключ к этому замку.

В симметричных криптосистемах для шифрования и расшифровывания используется один и тот же ключ.

Исходя из инфографики выше давайте рассмотрим пример, я хочу отправить Марфе какой-то файл, но я не хочу, чтоб какие-то 3-и лица могли его просмотреть. Для наглядности и простоты использования я решил зашифровать данный файл программой 7-Zip.

По такому же типу шифрования (1-му ключу) шифруются сектора/диски в VeraCrypt, TrueCrypt и так же возьмем их для примера.

Скрин взят с WWH CLUB

Давайте разберем скриншот выше

1. Алгоритм шифрования – это математический процесс преобразования информации в строку данных, которые выглядят как случайный набор символов и букв.

2. Хэш-функция – это преобразования входных данных, в нашем случае wwh-club в выходную битовую строку. Задача функции обеспечивать целостность и позволять обнаружить непреднамеренные модификации.

3. AES-256 – указывает какой алгоритм используется (AES) и какой размер блока (256), как мы видим в 7-Zip нет возможности детальной настройки, нежели как в VeraCrypt.

. При помощи введенного пароля будет сгенерирован ваш ключ для выбранного алгоритма шифрования (в нашем случае AES-256), для дешифровки вам надо будет указать алгоритм дешифровки если имеется и ввести пароль в нашем случае опять wwh-club

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

Вы могли заметить, что для зашифровки был использован симметричный алгоритм блочного шифрования – AdvancedEncryptionStandard (AES).

> В данном алгоритме используется только 1-н ключ, ключ создается при помощи нашего пароля (см. 4 пункт для наглядности преобразования)

Так же Вы можете выбрать какой размер блока будет использован 128 / 256 / 512 / 1024 бит, в нашем случае были лишь варианты 256 бит и 512 бит.ё

КСТАТИ: Представьте себе дверь и множество замков на ней. У вас займет много времени, чтобы открыть или закрыть эту дверь. Также и с алгоритмами, чем выше битрейт, тем сильнее алгоритм, но тем медленнее он шифрует и дешифрует, можете считать это стойкостью алгоритма.

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

КСТАТИ: Для взлома симметричного шифра требуется перебрать 2^N комбинаций, где N длина ключа.

Для взлома симметричного шифрования с длиной ключа 256 бит можно создать следующее количество комбинаций, то есть возможных ключей: 2^256

= 1,157920892?10?? или если разложить 1.157920892 ? 10^77 при расчете получается следующее число возможных вариаций (это 78-разрядное число).

Вот это число:

2^256 = 115792089237316195423570985008687907853269984665640564039457584007913129639936

Если что можете проверить сами это число на любом инженерном калькуляторе, вот для примера (https://web2.0calc.com/).

> Таким образом, для всех, кто сомневается в безопасности шансов столкновения 2 ^ 256, есть число: есть вероятность того, что столкновение будет иметь 1-н из более чем 1.1579209e*10^7= 78-разрядному числу (то число которое выше)

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

КСТАТИ: Про пароль поговорим отдельно, какой использовать и т.д. Вместе с программами и почему. Чтобы не засорять вам мозг не нужной информацией на данном этапе, так что ввнезабивайте голову, сейчас обо всем поговорим..

Люди и правительства постоянно пытаются взломать алгоритмы шифрования. В этой статье я дам вам список алгоритмов, которые хороши, а которые нет, какие из них поддаются взлому, а какие на сегодняшний день невозможно взломать.

Алгоритмы симметричного шифрования

Их достаточно большое количество, если вы хотите с ними ознакомиться, посетите эту страницу (https://www.veracrypt.fr/en/Encryption%20Algorithms.html).

Если вам не хочется разбираться и вы хотите просто спросить меня о том, что я бы рекомендовал:

AdvancedEncryptionStandard (AES) – симметричный алгоритм блочного шифрования (размер блока 128 бит, ключ 128/192/256 бит), принятый в качестве стандарта шифрования правительством США по результатам конкурса AES. Этот алгоритм хорошо проанализирован и сейчас широко используется, как это было с его предшественником DES.

AdvancedEncryptionStandard (AES) – это общепринятый стандарт симметричного шифрования.

Для максимальной защиты используйте AES-256 или больше в любом месте где это возможно, сам алгоритм шифрования AES быстрый и на сегодняшний день его невозможно взломать.

Асимметричный метод шифрования

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

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

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

Давайте сразу же закрепим данный материал:

- Симметричный метод шифрования – 1-н ключ, использует один и тот же ключ и для зашифровывания, и для расшифровывания.

- Асимметричный метод шифрования – 2-а ключа открытый (публичный от англ. Public) и закрытый (приватный от англ. Private)

Я бы рекомендовал вам посмотреть, короткий ролик о том как работает Асимметричный метод шифрования

https://www.youtube.com/watch?v=sGFbM-X6W_4&feature=youtu.be

> Когда я ранее рассказывал о симметричном шифровании, мы зашифровали файл для Марфы, но так как это симметричное шифрования, чтобы открыть этот файл необходим ключ которым я шифровал файл.

Возникает вопрос, а как передать ключ (пароль) безопасным способом, чтобы Марфа могла дешифровать файл?

В современном мире, самый лучший способ что либо передать и быть уверенным в доставке информации указанному адресату – это лично в руки.

Но это не очень хорошая затея, так как мы можем попросту не знать где находится адресат, либо он может находится на столько далеко, что доставить что-либо "лично в руки" становится проблематичным, а быть может нам попросту нужна анонимность.

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

И тут у многих возникает вопрос, зачем нужны все эти заморочки, если я могу например связаться с марфой используя какое-то шифрование в любом другом мессенджера?

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

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

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

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

юбой веб-сайт, использующий HTTPS, имеет открытый и закрытый ключи, которые используются для обмена симметричным сеансовым ключом, чтобы отправлять вам зашифрованные данные. Это немного похоже на Zip-файл, который мы видели. Они используют эти открытые/закрытые ключи и затем им нужно отправить другой ключ, типа ключа, который мы используем для Zip-файла, с целью осуществить шифрование (end-to-end разберем позже)

ЗАПОМНИТЕ, ЗАПОМНИТЕ и еще раз ЗАПОМНИТЕ:

- Если Вы шифруете при помощи закрытого ключа, Вам нужен открытый ключ для дешифровки;

Если Вы шифруете при помощи открытого ключа, Вам нужен закрытый ключ для дешифровки;

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

Если вы шифруете при помощи открытого ключа, то для дешифровки вам нужен закрытый ключ. Невозможно зашифровать и дешифровать одним и тем же ключом, и это крайне важно. Для шифрования или дешифрования вам всегда нужны взаимосвязанные ключи

Но зачем шифровать при помощи открытого или закрытого ключа? Какая разница? Какой смысл в их использовании? Почему бы не использовать только один из них?

Скрин взят с wwh-club

В этой инфографике рассматриваются 2-а метода шифрования, сначала мы разберем с зелеными стрелочками, а потом с красными.

1 способ (зеленые стрелочки) на инфографике

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

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

Так как мы знаем, что данные ключи взаимосвязаны, одним шифруем другим дешифруем и ни как иначе.

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

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

2 способ (красные стрелочки) на инфографике

Все выше сказанное выливается во 2-ой способ использования открытый (публичных) и закрытых (приватных) ключей.

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

ПРИМЕР: Вы создатель какого-то программного обеспечения, но правительство негодует и всячески препятствует вашей деятельности.

Смоделируем такую ситуацию:

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

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

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

Об этом поговорим позже..

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

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

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

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

1. Конфиденциальность – необходимость предотвращения утечки (разглашения) какой-либо информации;

2. Аутентификация – процедура проверки подлинности, то есть мы знаем что Марфа это реально Марфа и ни кто другой;

3. Предотвращение отказа – что означает что если вы отправили шифрованное сообщение то позже вы не сможете начать отрицать этот факт;

4. Достоверность – подлинность того что сообщение не было модифицировано каким либо образом.

Примерами криптосистем являются любые вещи, которые используют технологию шифрования, это: PGP, BitLocker, TrueCrypt, VeraCrypt, TLS, даже BitTorrent, и даже 7-Zip который мы использовали для шифрования файла в симметричном способе шифрования.

НАПРИМЕР: Для того чтобы мы могли послать наш файл Марфе, мы можем использовать открытый ключ Марфы для шифрования файлов, или для передачи чего угодно в зашифрованном виде.

Но для начала, конечно, нам потребуется открытый ключ Марфы, нам достаточно получить его 1-н раз неким защищенным способом, это важно, и после этого мы сможем всегда посылать зашифрованные сообщения, доступные для чтения исключительно Марфе.

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

ОПРЕДЕЛЕНИЕ: PGP (PrettyGoodPrivacy) – компьютерная программа, также библиотека функций, позволяющая выполнять операции шифрования и цифровой подписи сообщений, файлов и другой информации, представленной в электронном виде, в том числе прозрачное шифрование данных на запоминающих устройствах, например, на жёстком диске.

Для этих целей мы можем использовать Jabber + PGP или OTR.

На первое время скажу так жабы с OTR вам заглаза

Если вы не владете поставщиками условно где нужно обязательно иметь защищенный контакт и всегда знать что чел тот за кого себя выдает

так что ОТР заебись

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

Асимметричное шифрование – открытые и закрытые ключи

1. Лучшее распределение ключей – так как Марфа может поместить свой открытый ключ прямо себе в подпись и любой человек будет иметь возможность посылать ей зашифрованные сообщения или данные, которые сможет прочитать только она.

2. Масштабируемость – если вы используете симметричные ключи и желаете отправить ваш файл Марфе и, скажем, еще 10-ти людям, вам придется передать свой пароль 10 раз. Это совершенно не масштабируемо. Асимметричные алгоритмы имеют более хорошую масштабируемость, нежели чем симметричные системы.

3. Аутентификация, предотвращение отказа – это означает, если вы отправили шифрованное сообщение, то позже вы не сможете начать отрицать этот факт. Так как оно было зашифровано личным приватным ключом, вашим приватным ключом

4. Медленные – если вы посмотрите на длину сообщения в битах (см. скриншот ниже) после работы асимметричных алгоритмов, то заметите, что она гораздо больше, чем у алгоритмов шифрования с симметричными ключами, и это свидетельство того, насколько они медленнее.

5. Математически-интенсивные – Чем больше длинна в битах, тем больше число математических операций, а, следовательно, большая нагрузка на систему

Симметричное шифрование – закрытый ключ

1. Быстрые – если вы посмотрите на длину сообщения в битах (см. скриншот ниже) после работы симметричных алгоритмов, то заметите, что она гораздо меньше, чем у алгоритмов шифрования с асимметричными ключами, и это свидетельство того, насколько они быстрее.

2. Надежные – Посмотрите на вышеописанное по поводу AES-256 где был с расчетом числа 2^256 и убедитесь сами, а ведь есть и 384 / 512 /1024 и более..

Для наглядной демонстрации посмотрите на эту инфографику ниже:

Скрин взят с wwh-club

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

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

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

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

Первая часть закончена.