Как можно зашифровать текст: Как зашифровать текст в C?
Шифр — Cipher — qaz.wiki
Алгоритм шифрования и дешифрования информации
В криптографии , A шифр (или Cypher ) представляет собой алгоритм для выполнения шифрования или дешифрований -a серии четко определенных шагов , которые могут быть затем в качестве процедуры. Альтернативный, менее распространенный термин — шифрование . Шифрование или кодирование означает преобразование информации в шифр или код. В просторечии «шифр» является синонимом « кода », поскольку они оба представляют собой набор шагов, которые шифруют сообщение; однако в криптографии концепции различаются, особенно в классической криптографии .
Коды обычно заменяют на выходе строки символов разной длины, в то время как шифры обычно заменяют то же количество символов, что и вводятся. Есть исключения, и некоторые системы шифрования могут использовать немного больше или меньше символов при выводе по сравнению с числом, которое было введено.
Коды работают путем подстановки в соответствии с большой кодовой книгой, которая связывает случайную строку символов или чисел со словом или фразой. Например, «UQJHSE» может быть кодом для «Перейти к следующим координатам». При использовании шифра исходная информация называется открытым текстом , а зашифрованная форма — зашифрованным текстом . Сообщение с зашифрованным текстом содержит всю информацию открытого текста, но не в формате, доступном для чтения человеком или компьютером без надлежащего механизма для его расшифровки.
Работа шифра обычно зависит от части вспомогательной информации, называемой ключом (или, на традиционном языке АНБ , криптопеременной ). Процедура шифрования варьируется в зависимости от ключа, что меняет детализацию работы алгоритма. Перед использованием шифра для шифрования сообщения необходимо выбрать ключ. Без знания ключа будет чрезвычайно сложно, если не невозможно, расшифровать полученный зашифрованный текст в читаемый открытый текст.
Большинство современных шифров можно разделить на несколько категорий.
- По тому, работают ли они с блоками символов обычно фиксированного размера ( блочные шифры ) или с непрерывным потоком символов ( потоковые шифры ).
- В зависимости от того, используется ли один и тот же ключ для шифрования и дешифрования ( алгоритмы с симметричным ключом ) или для каждого из них используется другой ключ ( алгоритмы с асимметричным ключом ). Если алгоритм является симметричным, ключ должен быть известен получателю и отправителю и никому другому. Если алгоритм является асимметричным, ключ шифрования отличается от ключа дешифрования, но тесно связан с ним. Если один ключ не может быть выведен из другого, алгоритм асимметричного ключа имеет свойство открытого / закрытого ключа, и один из ключей может быть открыт без потери конфиденциальности.
Этимология
Слово «шифр» (написанное меньшинством «шифр») в прежние времена означало «ноль» и имело то же происхождение: среднефранцузский как cifre и средневековый латинский как cifra, от арабского صفر sifr = ноль (см. Zero — этимология ). Позже «шифр» использовался для обозначения любой десятичной цифры, даже любого числа. Существует множество теорий о том, как слово «шифр» могло означать «кодирование».
- В кодировке часто используются числа.
- Римская система счисления была очень громоздким , поскольку не было никакого понятия нуля (или пустое пространство). Концепция нуля (который также назывался «шифр») привела к сокрытию значения шифра понятных сообщений или шифрованию.
- Французы образовали слово « chiffre » и приняли итальянское слово « zero ».
- Англичане использовали «ноль» вместо «0» и «cipher» от слова «ciphering» как средство вычисления.
- Немцы использовали слова «Циффер» (цифра) и «Шифр».
- Голландцы до сих пор используют слово «cijfer» для обозначения числовой цифры.
- Словаки также иногда используют слово «cifra» («číslica» на словацком языке) для обозначения числовой цифры, они используют слово «číslo» для обозначения числа.
- Боснийцы, хорваты и сербы используют слово «cifra», которое относится к цифре или, в некоторых случаях, к любому числу. Помимо «cifra», они используют слово «broj» для числа.
- Итальянцы и испанцы также используют слово «cifra» для обозначения цифры.
- Шведы используют слово «сиффра», которое относится к цифре, и «чифер».
- Греки используют слово «τζίφρα» («цифра») для обозначения трудночитаемой подписи, особенно подписи, написанной одним росчерком пера.
Ибрагим Аль-Кади пришел к выводу, что арабское слово sifr , обозначающее цифру ноль, превратилось в европейский технический термин, обозначающий шифрование.
Поскольку десятичный ноль и его новая математика распространились из арабского мира в Европу в средние века , слова, производные от sifr и zephirum, стали относиться к вычислениям, а также к привилегированным знаниям и секретным кодам. По словам Ифры, «в Париже тринадцатого века« никчемный человек »назывался « … cifre en algorisme » , то есть« арифметическое ничто »». Cipher — это европейское произношение sifr, а cipher стало обозначать сообщение или коммуникацию, которую нелегко понять.
По сравнению с кодами
В нетехническом использовании «(секретный) код » обычно означает «шифр». Однако в рамках технических обсуждений слова «код» и «шифр» относятся к двум различным концепциям. Коды работают на уровне смысла, то есть слова или фразы преобразуются во что-то еще, и это разбиение на части обычно сокращает сообщение.
Примером этого является код коммерческого телеграфа, который использовался для сокращения длинных телеграфных сообщений, возникших в результате заключения коммерческих контрактов с использованием обмена телеграммами .
Другой пример — шифры целого слова, которые позволяют пользователю заменять целое слово символом или символом, во многом подобно тому, как японцы используют символы кандзи (японские) для дополнения своего языка. ex «Быстрая коричневая лиса перепрыгивает через ленивую собаку» превращается в «Быстрая коричневая прыгает 上 ленивая».
С другой стороны, шифры работают на более низком уровне: уровне отдельных букв, небольших групп букв или, в современных схемах, отдельных битов и блоков битов. В некоторых системах в одной системе использовались как коды, так и шифры, а для повышения безопасности применялось супер-шифрование . В некоторых случаях термины коды и шифры также используются как синонимы подстановки и транспозиции.
Исторически криптография была разделена на дихотомию кодов и шифров; а у кодирования была своя собственная терминология, аналогичная терминологии шифров: « кодирование , кодовый текст , декодирование » и так далее.
Однако коды имеют множество недостатков, в том числе уязвимость к криптоанализу и сложность управления громоздкой кодовой книгой . Из-за этого коды вышли из употребления в современной криптографии, а шифры являются доминирующей техникой.
Типы
Существует множество различных типов шифрования. Алгоритмы, использовавшиеся ранее в истории криптографии , существенно отличаются от современных методов, и современные шифры можно классифицировать в зависимости от того, как они работают, и от того, используют ли они один или два ключа.
Исторический
Исторические перьевые и бумажные шифры, использовавшиеся в прошлом, иногда называют классическими . Они включают простые шифры подстановки (такие как ROT13 ) и шифры транспонирования (такие как шифр Rail Fence ). Например, «GOOD DOG» может быть зашифрован как «PLLX XLP», где «L» заменяет «O», «P» заменяет «G», а «X» — «D» в сообщении. Перестановка букв «ХОРОШАЯ СОБАКА» может привести к «DGOGDOO». Эти простые шифры и примеры легко взломать даже без пар открытый текст-зашифрованный текст.
Простые шифры были заменены полиалфавитными шифрами подстановки (такими как шифры Виженера ), которые изменили алфавит подстановки для каждой буквы. Например, «GOOD DOG» может быть зашифрован как «PLSX TWF», где «L», «S» и «W» заменяют «O». Даже при небольшом количестве известного или предполагаемого открытого текста простые полиалфавитные шифры замещения и шифры перестановки букв, разработанные для шифрования с помощью ручки и бумаги, легко взломать. Тем не менее, можно создать надежную ручку и бумажный шифр на основе одноразового блокнота , но при этом сохраняются обычные недостатки одноразовых блокнотов .
В начале двадцатого века были изобретены электромеханические машины для шифрования и дешифрования с использованием транспозиции, полиалфавитной замены и своего рода «аддитивной» замены. В роторных машинах несколько дисков ротора обеспечивали полиалфавитную замену, а вставные платы обеспечивали другую замену. Ключи легко менялись, меняя диски ротора и провода коммутационной панели. Хотя эти методы шифрования были более сложными, чем предыдущие схемы, и требовали машин для шифрования и дешифрования, для взлома этих методов были изобретены другие машины, такие как British Bombe .
Современный
Современные методы шифрования можно разделить по двум критериям: по типу используемого ключа и по типу входных данных.
По типу используемого ключа шифры делятся на:
В алгоритме с симметричным ключом (например, DES и AES ) отправитель и получатель должны иметь общий ключ, установленный заранее и хранящийся в секрете от всех других сторон; отправитель использует этот ключ для шифрования, а получатель использует тот же ключ для дешифрования. В шифре Фейстеля используется комбинация методов подстановки и транспозиции. Большинство алгоритмов блочного шифрования основано на этой структуре. В алгоритме асимметричного ключа (например, RSA ) есть два отдельных ключа: открытый ключ публикуется и позволяет любому отправителю выполнять шифрование, в то время как закрытый ключ хранится получателем в секрете и позволяет только этому человеку выполнить правильное дешифрование.
Шифры можно разделить на два типа по типу входных данных:
Размер ключа и уязвимость
При чисто математической атаке (т. Е. При отсутствии какой-либо другой информации, помогающей взломать шифр) важны прежде всего два фактора:
- Доступная вычислительная мощность, т. Е. Вычислительная мощность, которая может быть использована для решения проблемы. Важно отметить, что средняя производительность / емкость одного компьютера — не единственный фактор, который следует учитывать. Злоумышленник может использовать несколько компьютеров одновременно, например, для значительного увеличения скорости исчерпывающего поиска ключа (т. Е. Атаки методом «грубой силы»).
- Размер ключа , т.е. размер ключа, используемого для шифрования сообщения. По мере увеличения размера ключа сложность исчерпывающего поиска увеличивается до такой степени, что становится непрактичным взламывать шифрование напрямую.
Поскольку желаемым эффектом является вычислительная сложность, теоретически можно выбрать алгоритм и желаемый уровень сложности, таким образом, соответственно определив длину ключа.
Пример этого процесса можно найти в Key Length, который использует несколько отчетов, чтобы предположить, что симметричный шифр с 128 битами , асимметричный шифр с 3072-битными ключами и шифр с эллиптической кривой с 512 битами в настоящее время имеют схожие трудности.
Клод Шеннон доказал, используя соображения теории информации, что любой теоретически неразрывный шифр должен иметь ключи, длина которых не меньше длины открытого текста, и которые используются только один раз: одноразовый блокнот .
Смотрите также
Ноты
Рекомендации
- Ричард Дж. Олдрич, GCHQ: История самого секретного разведывательного управления Великобритании без цензуры , HarperCollins, июль 2010 г.
- Хелен Фуше Гейнс, «Криптоанализ», 1939, Дувр. ISBN 0-486-20097-3
- Ибрагим А. Аль-Кади , «Истоки криптологии : вклад арабов», Cryptologia , 16 (2) (апрель 1992 г.), стр. 97–126.
- Дэвид Кан , Взломщики кодов — История секретного письма ( ISBN 0-684-83130-9 ) (1967)
- Дэвид А. Кинг , Шифры монахов — забытая числовая система средневековья , Штутгарт: Франц Штайнер, 2001 ( ISBN 3-515-07640-9 )
- Абрахам Синьков , Элементарный криптоанализ: математический подход , Математическая ассоциация Америки, 1966. ISBN 0-88385-622-0
- Уильям Столлингс , Криптография и сетевая безопасность, принципы и практика, 4-е издание
- Стинсон, Дуглас Р. (1995), Cryptogtaphy / Theory and Practice , CRC Press, ISBN 0-8493-8521-0
внешние ссылки
Найдите шифр в Викисловаре, бесплатном словаре. |
Введение к криптографию за 2 часа
Эта работа предназначена для людей, не имеющих представления о криптографии — разделе математики, изучающем обеспечение
конфиденциальности, целостности и проверку подлинности текстов. Я постарался объяснять материал простым языком, иногда
поверхностно, но по возможности оставлять ссылки на дополнительные материалы. В первой части текста будут описаны некоторые
криптографические примитивы, простые элементы, из которых впоследствии получаются более сложные конструкции, протоколы.
Они будут описаны во второй части.
Криптографические примитивы
Мы будем говорить о трех примитивах: симметричном шифровании, аутентификации сообщений и ассиметричном шифровании. Из них
вырастает очень много протоколов. Также мы обсудим, как вырабатываются ключи шифрования.
Одним из фундаменальных принципов криптографии является
принцип Керкгоффса, который гласит, что криптографическая система должна сохранять в секрете только криптографические ключи.
Система должна оставаться стойкой, даже если все детали её функционирования, кроме ключей, раскрыты.
Поэтому, лучшие современные коммерчески доступные системы шифрования построены из компонент,
устройство и принцип работы которых хорошо известны. Единственная секретная вещь в них — ключ шифрования. Более того, алгоритмы AES и SHA, которые
будут рассмотрены ниже, входят в список Suite B Агентства Национальной
Безопасности США и применимы для защиты секретной информации. В общем, секретность алгоритма редко является преимуществом с точки зрения его
безопасности. Не доверяйте системам, построенным на секретных алгоритмах.
Немного истории
Исторически, начиная, примерно с IV века до нашей эры, существовало два метода дизайна шифров: шифры подстановки и перестановки. Шифры
подстановки — алгоритм, где в те времена заменяли одну букву сообщения на другую по какому-то принципу. Простой шифр подстановки
— по таблице: берем таблицу, где написано, что «А» меняем на «Я», «Б» на «М» и
т. д. Дальше по этой таблице шифруем, по ней же дешифруем.
Попробуем оценить, насколько сложен этот алгоритм с точки зрения размера пространства ключей. Сколько вариантов ключей
существует? Чтобы ответить на этот вопрос, расмотрим, как мы строим таблицу замен. Допустим, есть таблица на 33 символа. Букву
«А» можем заменить на любой из них, букву «Б» — на любой из оставшихся 32, «В» — на любой из оставшихся. Получаем 33*32*31…
— то есть факториал от 33. Факториал размерности алфавита. Формально, log233!≈123, такой алгоритм имеет простраство
ключей около 123 бит. В настоящее время считаются приемлемыми размеры ключей больше 100 бит. Иначе говоря, по этому признаку
алгоритм мог бы считаться вполне надёжным. При этом, все, наверное, сталкивались с детстве с простой заменой и знают, что атака
на него тривиальна.
Почему этот шифр такой простой? Откуда возникает проблема, из–за которой мы можем легко, даже не зная ничего
про криптографию, расшифровать простую подстановку? Дело в частотном анализе. В текстах на русском языке, самые распространённые буквы — О, Е, А, И.
Эта статистика видна даже в небольших текстах. Кроме того, существуют часто встрчечающиеся пары букв. Существуют и негативные пары, никогда не
встречающиеся в естественных языках, — например «ЬЪ».
На графике ниже показано расределение букв в одной из версий этого текста.
Поскольку простая подстановка не изменит статистику распределения букв, можно легко увидеть, в какие буквы превратились самые распространённые буквы
открыторого текста. При ручной дешифровке достаточно правильно расшифровать десяток букв для того, чтобы текст стал читаемым.
Существует несколько вариантов шифра простой подстановки. Одним из них является шифр
Цезаря, где таблица формируется не случайной перестановкой символов, а сдвигом на три символа: «А» меняется на
«D», «B» на «Е» и т. д. Понятно, что шифр Цезаря вместе со всеми его вариантами перебрать
очень легко: в отличие от табличной подстановки, в ключе Цезаря всего 25 вариантов при 26 буквах в алфавите — не считая
тривиального шифрования самого в себя. И его как раз можно перебрать полным перебором.
Чтобы сделать невозможным частотный анализ, нужно исказить статистику распределения букв. Очевидный способ: давайте будем
шифровать самые часто встречающиеся буквы не в один символ, а в пять разных, например. Если буква встречается в среднем в пять
раз чаще, то давайте по очереди — сначала в первый символ будем зашифровывать, потом во второй, в третий и т. д. Далее у нас
получится маппинг букв не 1 к 1, а, условно, 26 к 50. Статистика, таким образом, нарушится. Такой шифр называется
полиалфавитным. Однако с ним есть довольно много проблем, а главное, очень неудобно работать с таблицей.
Но есть более простой способ: возьмем шифр Цезаря, но не станем фиксировать сдвиг. Пусть для разных позиций в тесте он будет
разным и определяется ключом. Ключом будет последовательность целых чисел от нуля до размерности алфавита минус один. Чтобы с
ключом было проще работать, числа можно обозначать буквами из того же алфавита. Тогда в русском алфавите буква «А»
будет означать отсутствие сдвига, буква «Б» будет означать сдвиг на 1 символ, «В» — на два, и
так далее. Буквы ключа применяются последовательно к буквам открытого текст. Если текст оказывается длиннее ключа, используем
буквы ключа повторно. Такой шифр называется шифром
Виженера.
Вот пример: зашифруем сообщение «МАМА МЫЛА РАМУ» ключом «ГУБКА». Для удобства, выпишем ключ над
сообщением:
ГУБКАГУБКАГУ
МАМАМЫЛАРАМУ
«Г» — четвёртая буква алфавита, означает сдвиг на три, значит первая «М» в сообщении
превращается в «П». «У» — двадцать первая
буква, означает сдвиг на двадцать, то есть «А» во второй позиции сообщения превратится в «У».
«Б» означает сдвиг на одну позицию, то есть «М» в третьей позции превратится в «Н».
Продолжая, получим шифртекст «ПУНКМЮЯБЫАПЖ».
Что удобно в получившемся шифре? Буква «М» в первой и третьих позициях открытого текста была зашифрована в разные
буквы. Тоже самое произошло с буквами «А» во второй и четвёртой позициях. Это размывает статистику замен и такой
шифр куда сложнее аттаковать за счёт частотного анализа.
На графие ниже показано распределение букв в одной из версий этого текста, зашифрованного шифром Виженера с ключом длиной 21
букву. Легко видеть, что распределение частот куда более равномерно, чем в открытом тексте или в шифре простой замены.
Шифр Виженера долгое считался надёжным, пока где-то в XIX веке, буквально недавно на фоне истории криптографии, не придумали,
как его ломать. Если посмотреть на сообщение из нескольких десятков слов, а ключ довольно короткий, то вся конструкция выглядит
как несколько шифров Цезаря. Атака осуществляется в два этапа. На первом этапе атакующий подбирает длину ключа: предположим, она
равна четырём. Тогда можно каждую кратную букву — например, первую, пятую, девятую — рассматривать как шифр Цезаря. Атакующий
пытается выявить такое распределение вероятностей, которое будет характерно для открытого текста или шифра простой замены. Если
необходимая картина не наблюдается, атакующий пробует следующее значение длины ключа. При достаточной длине шифртекста и
относительно небольшой длине ключа ему в конце концов удастся подобрать такое значение длины ключа, при котором распределение
вероятностей кратных букв будет соответствовать шифру Цезаря или естественному языку. На втором этапе атакующий взламывает
каждый шифр Цезаря в отдельности. В целом, это довольно простая атака, она была доступна и без компьютеров, просто за счет ручки
и листа бумаги.
Тем не менее, было замечено, что чем длиннее ключ, тем сложнее атака. Что произойдёт, если длина ключа окажется равной длине
открытого текста?
В 1949 году Клод Шеннон
опубликовал классическую работу по криптографии «Communication Theory of Secrecy
Systems», где он дал определения стойкости шифра и предложил способы её оценки. Кроме того, в этой работе он
сформулировал теорему, согласно которой шифр Виженера, в котором все буквы ключа выбираются случайно и равновероятны, а
длина ключа равна длине сообщения, является абсолютно стойким. Этот ключ также не должен использоваться повторно.
Важно, что можно создать невзламываемый шифр, но у него есть недостатки. Во-первых, ключ должен быть абсолютно случайным.
Во-вторых, он никогда не должен использоваться повторно. В-третьих, длина ключа должна быть равна длине сообщения. Тем не менее,
такой подход изредка используется. Один из примеров — «Горячая
линия Вашингтон — Москва». Эта линия связи используется Президентами США и России. Другой
пример — так называемые «номерные радиостанции».
Вот запись работы такой станции:
Это настоящий радиоперехват от 15 октября 2014 года. Считается, что номерные радиостанции используются для односторонней
связи с разведчиками–нелегалами. Для шифрования используются шифроблокноты, существующие в двух экземплярах. Каждый лист
такого блокнота пронумерован и содержит случайные числа. Одна копия используется для зашифровки, вторая, находящаяся у
разведчика — для расшифровки. После использования лист уничтожается и даже если сообщение было записано спецслужбами,
расшифровать его нельзя никак, совсем.
7 2 6, 7 2 6, 7 2 6. Это позывной. 4 8 3, 4 8 3, 4 8 3. Это номер листа в шифроблокноте. 5 0, 5 0, 5 0. Это количество групп. 8 4 4 7 9 8
4 4 7 9 2 0 5 1 4 2 0 5 1 4 и т. д. 50 таких числовых групп. Не знаю где, где-то не в России сидел какой-нибудь человек с ручкой
и бумагой у обычного радиоприемника и записывал эти цифры. Записав их, он достал похожую штуку, сложил их по модулю 10 и
получил свое сообщение.
Итак, случайная последовательность может быть использована для создания абсолютно стойкого шифра, однако на практике получить
и передать её заранее сложно или невозможно. Однако, если бы существовал алгоритм генерации псевдослучайных
последовательностей на основе относительно небольшого секрета, они бы могли использоваться аналогичным образом для шифрования
сообщений.
Именно так устроены поточные симметричные шифры. Заметным, но непринципиальным отличием современных алгоритмов от описанных
выше является использование алфавита, состоящиго лишь из ноля и единицы. Разумеется, сложение тоже производится по модулю 2.
Симметричные шифры
Базовый принцип работы симметричных шифрова относительно несложен. У нас есть какой-то алгоритм, на вход которого поступает
открытый текст и нечто, называемое ключом, какое-то значение. На выходе получается зашифрованное сообщение. Можно записать
C=E(k,T).
Когда мы хотим его дешифровать, важно, чтобы мы брали тот же самый ключ. И, применяя его в другом алгоритме, алгоритме расшифровки, мы
из шифротекста получаем наш открытый текст назад: T=D(k,C).
Если говорить про современные шифры, они делятся на две категории: поточные и блочные. Как я уже сказал, поточный шифр
фактически представляет собой генератор псевдослучайных чисел, выход которого мы складываем по модулю 2, «ксорим», с нашим
шифротекстом, как видно у меня на слайде.
Но тут есть довольно много проблем. Первая — как нагенерировать по-настоящему хорошие случайные числа. Мир вокруг нас
детерминирован, и если мы говорим про компьютеры, они детерминированы полностью.
Во-вторых, доставлять ключи такого размера… если мы говорим про передачу сообщений из 55 цифровых групп, то проделать подобное
не очень сложно, а вот передать несколько гигабайт текста — уже серьезная проблема. Следовательно, нужны какие-нибудь алгоритмы,
которые, по сути, генерируют псевдослучайные числа на основе какого-нибудь небольшого начального значения и которые могли бы
использоваться в качестве таких потоковых алгоритмов.
Шифр Salsa20
Одним из современных шифров, работающих по такому принципу, является алгоритм Salsa. Он разработан Дэном Берштайном, который также известен, как
автор qmail.
Блок-схема шифра Salsa сложная, но он обладает несколькими интересными и классными свойствами. Для
начала, он всегда выполняется за конечное время, каждый его раунд, что немаловажно для защиты от тайминг-атак. Это такие атаки,
где атакующий наблюдает поведение системы шифрования, скармливая ей разные шифротексты или разные ключи за этим черным ящиком. И,
понимая изменения во времени ответа или в энергопотреблении системы, он может делать выводы о том, какие именно процессы
произошли внутри. Если вы думаете, что атака сильно надуманная, это не так. Очень широко распространены атаки подобного рода на
смарт-карты — очень удобные, поскольку у атакующего есть полный доступ к коробке. Единственное, что он, как правило, не может в
ней сделать, — прочитать сам ключ. Это сложно, а делать все остальное он может — подавать туда разные сообщения и пытаться их
расшифровать.
Salsa20 устроен так, чтобы он всегда выполнялся за константное одинаковое время. Внутри он состоит всего из трех примитивов:
это сдвиг на константное время, а также сложение по модулю 2 и по модулю 32, 32-битных слов. Скорость Salsa20 выше, чем у
AES. Он пока что не получил такого широкого распространения в общепринятой криптографии — у нас нет cipher suite для TLS,
использующих Salsa20, — но все равно потихоньку становится мейнстримом. Указанный шифр стал одним из победителей конкурса eSTREAM
по выбору лучшего поточного шифра. Их там было четыре, и Salsa — один из них. Он потихоньку начинает появляться во всяких
опенсорс-продуктах. В частности, в RFC7539 описана AEAD конструкция на основе
ChaCha20, потомка шифра Salsa20 и аутентификатора Poly1305. В RFC7905 описано
использование этой конструкции в TLS.
На него имеется некоторое количество криптоанализа, есть даже атаки. Снаружи он выглядит как поточный, генерируя на основе
ключа последовательность почти произвольной длины, 264. Зато внутри он работает как блочный. В алгоритме есть место,
куда можно подставить номер блока, и он выдаст указанный блок.
Какая проблема с поточными шифрами? Если у вас есть поток данных, передаваемый по сети, поточный шифр для него удобен. К вам
влетел пакет, вы его зашифровали и передали. Влетел следующий — приложили эту гамму и передали. Первый байт, второй, третий по
сети идут. Удобно.
Если данные, например гигабайтный файл целиком, зашифрованы на диске поточным шифром, то чтобы прочитать последние 10 байт,
вам нужно будет сначала сгенерировать гаммы потока шифра на 1 гигабайт, и уже из него взять последние 10 байт. Очень
неудобно.
В Salsa указанная проблема решена, поскольку в нем на вход поступает в том числе и номер блока, который надо сгенерировать.
Дальше к номеру блока 20 раз применяется алгоритм. 20 раундов — и мы получаем 512 бит выходного потока.
Самая успешная атака — в 8 раундов. Сам он 256-битный, а сложность атаки в 8 раундов — 250 или 251 бит. Считается, что он
очень устойчивый, хороший. Публичный криптоанализ на него есть. Несмотря на всю одиозность личности Берштайна в этом аспекте, мне
кажется, что штука хорошая и у нее большее будущее.
Исторически поточных шифров было много. Они первые не только в коммерческом шифровании, но и в военном. Там использовалось то,
что называлось линейными регистрами сдвига.
Какие тут проблемы? Первая: в классических поточных шифрах, не в Salsa, чтобы расшифровать последнее значение гигабайтного
файла, последний байт, вам нужно сначала сгенерировать последовательность на гигабайт. От нее вы задействуете только последний
байт. Очень неудобно.
Поточные шифры плохо пригодны для систем с непоследовательным доступом, самый распространенный пример которых — жесткий
диск.
Есть и еще одна проблема, о ней мы поговорим дальше. Она очень ярко проявляется в поточных шифрах. Две проблемы в совокупности
привели к тому, что здорово было бы использовать какой-нибудь другой механизм.
Шифр DES
Другой механизм для симметричного шифрования называется блочным шифром. Он устроен чуть по-другому. Он не генерирует этот
ключевой поток, который надо ксорить с нашим шифротекстом, а работает похоже — как таблица подстановок. Берет блок текста
фиксированной длины, на выходе дает такой же длины блок текста, и всё.
Размер блока в современных шифрах — как правило, 128 бит. Бывают разные вариации, но как правило, речь идет про 128 или 256
бит, не больше и не меньше. Размер ключа — точно такой же, как для поточных алгоритмов: 128 или 256 бит в современных
реализациях, от и до.
Из всех широко распространенных блочных шифров сейчас можно назвать два — DES и AES. DES очень старый шифр, ровесник RC4. У
DES сейчас размер блока — 64 бита, а размер ключа — 56 бит. Создан он был в компании IBM под именем Люцифер. Когда в IBM его
дизайном занимался Хорст Фейстель, они предложили выбрать 128 бит в качестве размера блока. А размер ключа был изменяемый, от 124
до 192 бит.
Когда DES начал проходит стандартизацию, его подали на проверку в том числе и в АНБ. Оттуда он вернулся с уменьшенным до 64
бит размером блока и уменьшенным до 56 бит размером ключа.
Свойства DES
- Сеть Фейстеля
- Размер блока — 64 бита
- Размер ключа — 56 бит
- 16 раундов
20 лет назад вся эта история наделала много шума. Все говорили — наверняка они туда встроили закладку, ужасно, подобрали такой
размер блока, чтобы получить возможность атаковать. Однако большое достоинство DES в том, что это первый шифр, который был
стандартизован и стал тогда основой коммерческой криптографии.
Его очень много атаковали и очень много исследовали. Есть большое количество всевозможных атак. Но ни одной практически
реализуемой атаки до сих пор нет, несмотря на его довольно почтенный возраст. Единственное, размер ключа в 56 бит сейчас просто
неприемлемый и можно атаковать полным перебором.
Как устроен DES? Фейстель сделал классную штуку, которую называют сетью Фейстеля. Она оперирует блоками. Каждый блок,
попадающий на вход, делится на две части: левую и правую. Левая часть становится правой без изменений. Правая часть ксорится с
результатом вычисления некой функции, на вход которой подается левая часть и ключ. После данного преобразования правая часть
становится левой.
У нее есть несколько интересных достоинств. Первое важное достоинство: функция F может быть любой. Она не должна обладать
свойствами обратимости, она может и не быть линейной или нелинейной. Все равно шифр остается симметричным.
Второе очень удобное свойство: расшифровка устроена так же, как шифрование. Если нужно расшифровать данную сеть, вы в прежний
механизм вместо открытого текста засовываете шифротекст и на выходе вновь получаете открытый текст.
Почему это удобно? 30 лет назад удобство являлось следствием того, что шифраторы были аппаратными и заниматься дизайном
отдельного набора микросхем для шифрования и для расшифровки было трудоемко. А в такой конструкции все очень здорово, фактически
мы можем один блок использовать для разных задач.
В реальной ситуации такая конструкция — один раунд блочного шифра, то есть в реальном шифре она выполняется 16 раз с разными
ключами. На каждом 16 раунде генерируется отдельный ключ и 16 раундовых подключей, каждый из которых применяется на каждом раунде
для функции F.
Раунд тоже выглядит довольно несложно — он состоит всего из двух-трех операций. Первая операция: размер попавшегося полублока
становится равен 32 бита, полубок проходит функцию расширения, на вход попадает 32 бита. Дальше мы по специальной несекретной
таблице немного добавляем к 32 битам, превращая их в 48: некоторые биты дублируются и переставляются, такая гребеночка.
Потом мы его ксорим с раундовым ключом, размер которого — тоже 48 бит, и получаем 48-битное значение.
Затем оно попадает в набор функций, которые называются S-боксы и преобразуют каждый бит входа в четыре бита выхода.
Следовательно, на выходе мы из 48 бит снова получаем 32 бита.
И наконец, окончательная перестановка P. Она опять перемешивает 32 бита между собой. Все очень несложно, раундовая функция
максимально простая.
Самое интересное ее свойство заключается в указанных S-боксах: задумано очень сложное превращение 6 бит в 4. Если посмотреть
на всю конструкцию, видно, что она состоит из XOR и пары перестановок. Если бы S-боксы были простыми, весь DES фактически
представлял бы собой некоторый набор линейных преобразований. Его можно было бы представить как матрицу, на которую мы умножаем
наш открытый текст, получая шифротекст. И тогда атака на DES была бы тривиальной: требовалось бы просто подобрать матрицу.
Вся нелинейность сосредоточена в S-боксах, подобранных специальным образом. Существуют разные анекдоты о том, как именно они
подбирались. В частности, примерно через 10 лет после того, как DES был опубликован и стандартизован, криптографы нашли новый тип
атак — дифференциальный криптоанализ. Суть атаки очень простая: мы делаем мелкие изменения в открытом тексте — меняя, к примеру,
значение одного бита с 0 на 1 — и смотрим, что происходит с шифротекстом. Выяснилось, что в идеальном шифре изменение одного бита
с 0 на 1 должно приводить к изменению ровно половины бит шифротекста. Выяснилось, что DES, хоть он и был сделан перед тем, как
открыли дифференциальный криптоанализ, оказался устойчивым к этому типу атак. В итоге в свое время возникла очередная волна
паранойи: мол, АНБ еще за 10 лет до открытых криптографов знало про существование дифференциального криптоанализа, и вы
представляете себе, что оно может знать сейчас.
Анализу устройства S-боксов посвящена не одна сотня статей. Есть классные статьи, которые называются примерно так: особенности
статистического распределения выходных бит в четвертом S-боксе. Потому что шифру много лет, он досконально исследован в разных
местах и остается достаточно устойчивым даже по нынешним меркам.
56 бит сейчас уже можно просто перебрать на кластере машин общего назначения — может, даже на одном. И это плохо. Что можно
предпринять?
Просто сдвинуть размер ключа нельзя: вся конструкция завязана на его длину. Triple DES. Очевидный ответ был таким: давайте мы
будем шифровать наш блок несколько раз, устроим несколько последовательных шифрований. И здесь всё не слишком тривиально.
Допустим, мы берем и шифруем два раза. Для начала нужно доказать, что для шифрований k1 и k2 на двух разных ключах не
существует такого шифрования на ключе k3, что выполнение двух указанных функций окажется одинаковым. Здесь вступает в силу
свойство, что DES не является группой. Тому существует доказательство, пусть и не очень тривиальное.
Окей, 56 бит. Давайте возьмем два — k1 и k2. 56 + 56 = 112 бит. 112 бит даже по нынешним меркам — вполне приемлемая длина
ключа. Можно считать нормальным всё, что превышает 100 бит. Так почему нельзя использовать два шифрования, 112 бит?
Одно шифрование DES состоит из 16 раундов. Сеть применяется 16 раз. Изменения слева направо происходят 16 раз. И он — не
группа. Есть доказательство того, что не существует такого ключа k3, которым мы могли бы расшифровать текст, последовательно
зашифрованный выбранными нами ключами k1 и k2.
Есть атака. Давайте зашифруем все возможные тексты на каком-нибудь ключе, возьмем шифротекст и попытаемся его расшифровать на
всех произвольных ключах. И здесь, и здесь получим 256 вариантов. И где-то они сойдутся. То есть за два раза по
256 вариантов — плюс память для хранения всех расшифровок — мы найдем такую комбинацию k1 и k2, при которых атака
окажется осуществимой.
Эффективная стойкость алгоритма — не 112 бит, а 57, если у нас достаточно памяти. Нужно довольно много памяти, но тем не
менее. Поэтому решили — так работать нельзя, давайте будем шифровать три раза: k1, k2, k3. Конструкция называется Triple DES.
Технически она может быть устроена по-разному. Поскольку в DES шифрование и дешифрование — одно и то же, реальные алгоритмы
иногда выглядят так: зашифровать, расшифровать и снова расшифровать — чтобы выполнять операции в аппаратных реализациях было
проще.
Наша обратная реализация Triple DES превратится в аппаратную реализацию DES. Это может быть очень удобно в разных ситуациях
для задачи обратной совместимости.
Где применялся DES? Вообще везде. Его до сих пор иногда можно пронаблюдать для TLS, существуют cipher suite для TLS,
использующие Triple DES и DES. Но там он активно отмирает, поскольку речь идет про софт. Софт легко апдейтится.
А вот в банкоматах он отмирал очень долго, и я не уверен, что окончательно умер. Не знаю, нужна ли отдельная лекция о том, как
указанная конструкция устроена в банкоматах. Если коротко, клавиатура, где вы вводите PIN, — самодостаточная вещь в себе. В нее
загружены ключи, и наружу она выдает не PIN, а конструкцию PIN-блок. Конструкция зашифрована — например, через DES. Поскольку
банкоматов огромное количество, то среди них много старых и до сих пор можно встретить банкомат, где внутри коробки реализован
даже не Triple DES, а обычный DES.
Шифр AES
Однажды DES стал показывать свой возраст, с ним стало тяжело, и люди решили придумать нечто поновее. Американская контора по
стандартизации, которая называется NIST, сказала: давайте проведем конкурс и выберем новый классный шифр. Им стал AES.
DES расшифровывается как digital encrypted standard. AES — advanced encrypted standard. Размер блока в AES — 128 бит, а не 64.
Это важно с точки зрения криптографии. Размер ключа у AES — 128, 192 или 256 бит. В AES не используется сеть Фейстеля, но он тоже
многораундовый, в нем тоже несколько раз повторяются относительно примитивные операции. Для 128 бит используется 10 раундов, для
256 — 14.
Сейчас покажу, как устроен каждый раунд. Первый и последний раунды чуть отличаются от стандартной схемы — тому есть
причины.
Как и в DES, в каждом раунде AES есть свои раундовые ключи. Все они генерируются из ключа шифрования для алгоритма. В этом
месте AES работает так же, как DES. Берется 128-битный ключ, из него генерируется 10 подключей для 10 раундов. Каждый подключ,
как и в DES, применяется на каждом конкретном раунде.
Каждый раунд состоит из четырех довольно простых операций. Первый раунд — подстановка по специальной таблице.
В AES мы строим байтовую матрицу размером 4 на 4. Каждый элемент матрицы — байт. Всего получается 16 байт или 128 бит. Они и
составляют блок AES целиком.
Вторая операция — побайтовый сдвиг.
Устроен он несложно, примитивно. Мы берем матрицу 4 на 4. Первый ряд остается без изменений, второй ряд сдвигается на 1 байт
влево, третий — на 2 байта, четвертый — на 3, циклично.
Далее мы производим перемешивание внутри колонок. Это тоже очень несложная операция. Она фактически переставляет биты внутри
каждой колонки, больше ничего не происходит. Можно считать ее умножением на специальную функцию.
Четвертая, вновь очень простая операция — XOR каждого байта в каждой колонке с соответствующим байтом ключа. Получается
результат.
В первом раунде лишь складываются ключи, а три других операции не используются. В последнем раунде не происходит подобного
перемешивания столбцов:
Дело в том, что это не добавило бы никакой криптографической стойкости и мы всегда можем обратить последний раунд. Решили не
тормозить конструкцию лишней операцией.
Мы повторяем 4 описанных шага 10 раз, и на выходе из 128-битного блока снова получаем 128-битный блок.
Какие достоинства у AES? Он оперирует байтами, а не битами, как DES. AES намного быстрее в софтовых реализациях. Если сравнить
скорость выполнения AES и DES на современной машине, AES окажется в разы быстрее, даже если говорить о реализации исключительно в
программном коде.
Производители современных процессоров, Intel и AMD, уже разработали ассемблерные инструкции для реализации AES внутри чипа,
потому что стандарт довольно несложный. Как итог — AES еще быстрее. Если через DES на современной машинке мы можем зашифровать,
например, 1-2 гигабита, то 10-гигабитный AES-шифратор находится рядом и коммерчески доступен обычным компаниям.
Режимы шифрования
Блочный алгоритм шифрует блок в блок. Он берет блок на 128 или 64 бита и превращает его в блок на 128 или 64 бита.
А что мы будем делать, если потребуется больше, чем 16 байт?
Первое, что приходит в голову, — попытаться разбить исходное сообщение на блоки, а блок, который останется неполным, дополнить
стандартной, известной и фиксированной последовательностью данных.
Да, очевидно, побьем всё на блоки по 16 байт и зашифруем. Такое шифрование называется ECB — electronic code book, когда каждый
из блоков по 16 байт в случае AES или по 8 байт в случае DES шифруется независимо.
Шифруем каждый блок, получаем шифротекст, складываем шифротексты и получаем полный результат.
Примерно так выглядит картинка, зашифрованная в режиме ECB. Даже если мы представим себе, что шифр полностью надежен, кажется,
что результат менее чем удовлетворительный. В чем проблема? В том, что это биективное отображение. Для одинакового входа всегда
получится одинаковый выход, и наоборот — для одинакового шифротекста всегда получится одинаковый открытый текст.
Надо бы как-нибудь исхитриться и сделать так, чтобы результат на выходе все время получался разным, в зависимости от
местонахождения блока — несмотря на то, что на вход подаются одинаковые блоки шифротекста. Первым способом решения стал режим
CBC.
Мы не только берем ключ и открытый текст, но и генерируем случайное число, которое не является секретным. Оно размером с блок.
Называется оно инициализационным вектором.
При шифровании первого блока мы берем инициализационный вектор, складываем его по модулю 2 с открытым текстом и шифруем. На
выходе — шифротекст. Дальше складываем полученный шифротекст по модулю 2 со вторым блоком и шифруем. На выходе — второй блок
шифротекста. Складываем его по модулю 2 с третьим блоком открытого текста и шифруем. На выходе получаем третий блок шифротекста.
Здесь видно сцепление: мы каждый следующий блок сцепляем с предыдущим.
В результате получится картинка, где всё, начиная со второго блока, равномерно размазано, а первый блок каждый раз зависит от
инициализационного вектора. И она будет абсолютно перемешана. Здесь все неплохо.
Однако у CBC есть несколько проблем.
О размере блока. Представьте: мы начали шифровать и, допустим, у нас DES. Если бы DES был идеальным алгоритмом шифрования,
выход DES выглядел бы как равномерно распределенные случайные числа длиной 64 бита. Какова вероятность, что в выборке из
равномерно распределенных случайных чисел длиной 64 бита два числа совпадут для одной операции? 1/(264). А если мы
сравниваем три числа? Давайте пока прервемся.
Какое прикладное значение имеет указанный научный факт? Выход функции шифрования можно рассматривать как случайное число, и
идеальная функция шифрования неотличима от случайного числа. Значит, если мы рассматриваем блоки, зашифрованные, например,
алгоритмом DES или ГОСТ-28147, то взяв 232 таких блоков, мы с вероятностью ½ обнаружим, что два из них зашифрованы
одинаково.
Давайте кто-то посчитает: 232 блоков размером 64 бита или 8 байт — это сколько? 32 гигабайта? Похоже на правду.
Теперь поделим 32 гигабайта на 10 гигабит. Если у нас есть алгоритм шифрования с 64-битными блоками, то чуть позже, чем через 32
секунды, мы увидим коллизию. Мы увидим два блока, которые зашифровались одинаково. Как выяснили в СВС, указанные два блока
необязательно должны быть с одинаковым открытым текстом. Открытый текст может быть разным.
Что это будет значить? Если у нас есть какой-то блок Ci, то что было зашифровано в режиме СВС?
Допустим, мы пронаблюдали коллизию через 30 секунд. Две части равны. Шифрование является взаимно однозначным соответствием.
Таким образом, раз функции шифрования равны, то подшифрование тоже равное.
Cj-1 и Ci-1 — их мы видели, ведь они только что передавались в канале связи.
Другими словами, если у нас есть настолько маленький размер блока, то даже при абсолютно стойком шифровании мы спустя
некоторое время начнем получать разности между какими-то двумя случайными открытыми текстами. Это свойство необязательно
трансформируется в реальную атаку, но на практике оно не очень хорошее. Из-за него режим СВС является причиной многих бед.
Последняя из таких бед — атака (неразборчиво — прим. ред.), опубликованная буквально пару недель назад. Она крайняя, но,
думаю, не последняя в этом ряду. И всё из-за злосчастного свойства СВС, о котором я рассказал.
Однако СВС — по-прежнему широко распространенный режим шифрования. Его можно встретить где угодно.
— Если нужно взять последние 10 бит, нам придется считать последовательно…
— Да, конечно, у СВС есть проблема: чтобы расшифровать 1 гигабайт и прочитать в нем последние 10 байт, нужно сначала
нагенерировать это всё.
Несмотря на все сложности с СВС, он по-прежнему является самым распространенным режимом шифрования: в TLS точно, но думаю, что
и в IPsec — то есть в протоколах, используемых в реальной жизни.
Как с этим в реальной жизни борются? В первую очередь, Triple DES уже широко не используется. Далее, если посмотреть на AES с
размером блока 128 бит, то вероятность коллизии ½ наступает примерно после 264 блоков, а это очень много трафика.
Поэтому в реальной жизни вероятность, что мы наткнемся на коллизию, невысока. Так что не надо использовать Triple DES и
ГОСТ-28147, если вы не государственная организация и не вынуждены их использовать. СВС — не единственный режим шифрования. Есть
еще CFB. Он, если посмотреть внимательно, сильно от СВС не отличается. Мы берем инициализационный вектор, ксорим с ним открытый
текст и получаем шифротекст. Результат шифруем еще раз, ксорим с ним открытый текст, получаем второй блок текста и т. д.
Почему я вообще заговорил про CFB? Потому что, в отличие от СВС, вариант CFB стандартизован для ГОСТа. Если внимательно
посмотреть, он в этом смысле ничем не лучше СВС — в нем есть такая же проблема. В закрытых системах можно встретиться с указанной
реализацией, с ней в принципе возникают некоторые проблемы.
А какие еще проблемы бывают у этих алгоритмов? Чтобы расшифровать каждый следующий блок, нам нужен зашифрованный открытый
текст. Без доступного блока открытого текста мы не можем сгенерировать следующий блок шифрования. Чтобы от этой проблемы
избавиться, придумали режим OFB, который устроен так: дается инициализированный вектор, он шифруется ключом, результат шифруется
ключом еще раз, еще раз… Фактически мы берем и шифруем инициализационный вектор много раз — столько, сколько блоков нам
нужно.
Блоки мы складываем с открытым текстом. Почему это удобно? Если внимательно посмотреть, блочный режим шифрования превращается
в потоковый. Если сейчас трафика мало, а процессор свободен, мы можем загодя нагенерировать несколько блоков и затем
израсходовать их при возможном всплеске трафика. Очень удобно. И нам не нужно знание открытого текста, чтобы зашифровать
следующий блок. Можно набрать и держать несколько гигабайт в памяти — на случай, если понадобятся.
Все недостатки поточных шифров тут тоже присутствуют.
Немного другой способ шифрования — так называемый counter mode или CTR. Он устроен просто: берем некое случайное число,
помещаем его в начало блока, а в конец просто помещаем счетчик от нуля до скольки угодно. Например, до 64 бит. Берем и делим
пополам: левые 64 бит отдаем под случайное число, а правые 64 бит — под счетчик.
Шифруем каждое такое число и сводим результат с открытым текстом.
Чем удобен CTR? Он позволяет нам зашифровать 125-й блок, не шифруя предыдущие 124 блока, то есть решает проблему расшифровки
последних 16 байт из 10-гигабайтного файла. Он достаточно удобный и во всех остальных смыслах. Если говорить про всплеск трафика,
можно загодя нагенерировать блоки для шифрования.
Это в случае с сообщениями длиннее одного блока. А что делать, если они короче одного блока? Другими словами, мы хотим
зашифровать не 16, а 8 байт.
— Добить до 16.
— А как? Допустим, мы расшифровали некий блок, в конце у которого четыре нуля. Как мы узнаем, что эти четыре нуля добиты нами,
а не являются фрагментом наших блоков?
— Перед передачей зашифрованного сообщения сообщить длину в байтах.
— Удобный способ, но он неудобен тем, что вы перед передачей не всегда знаете размер. Если email — знаете, а если нет?
После передачи? Окей, наверное, можно. А где там искать отличия? Надо осуществлять хранение в каком-то отдельном месте. Вопрос
— в каком?
— Не в рамках шифрования.
— Если не в рамках шифрования передавать длину сообщения, вы ее будете раскрывать. Думаю, мы ее скрывали.
Добро пожаловать в мой персональный ад, а именно в систему с паддингом. Идея, что надо в конце сообщения написать, какой оно
длины, не очень плохая. Важно только придумать способ дополнения блока, который позволит однозначно установить, что этот кусок в
конце — дополнение, а не часть данных.
Существует несколько режимов паддинга, и к сожалению, самый распространенный из них обладает несколькими неприятными
свойствами.
Мы берем и в конце последнего блока дописываем каждый свободный байт числом свободных байт. Если в конце осталось 3 байта — мы
берем и записываем их: 3, 3, 3.
Если длина сообщения приходится ровно на границу, мы дополняем ее еще одним блоком, куда записываем, по-моему, четыре нуля. Не
принципиально. Такой способ кодирования всегда однозначный. Мы открываем, узнаём последний байт и, если он не нулевой, понимаем —
надо сколько-то байт отсчитать. Фактически, это хитро закодированная длина сообщения. Если же последний байт нулевой, мы можем
отбросить блок целиком. И мы знаем, что полный блок никогда не может закончиться нулем: тогда мы бы его дополнили еще одним
полностью нулевым блоком.
Если последний блок заканчивается единицей, то он полный и мы обязательно дополним его еще одним блоком.
Казалось бы, нормально. Перед нами рабочий механизм паддинга.
Допустим, мы проводим атаку. У нас есть система Oracle — ее так в криптографии называют. Это не тот Oracle, который делает
базы данных. Речь идет о коробке, устройство которой вам неизвестно, но в данном случае она представляет собой алгоритм
шифрования или расшифрования. Вы не знаете, какой внутри ключ, хотя он дает вам какой-то ответ. Однако он точно не даст вам ответ
о том, правильно или неправильно расшифровалась строчка, которую вы в него засунули.
Итак, у вас есть указанная коробка. При этом вы видели одно сообщение и точно знаете, что оно расшифровалось нормально. Как ни
странно, в реальных системах такое сообщение легко получить.
Дальше вы берете сообщение и засылаете его в коробку, поменяв в нем один последний байт. Коробка может вам вернуть два
состояния. Либо вы узнаете, что ваша конструкция как-то хорошо расшифровалась, либо — что она не расшифровалась из-за ошибки
паддинга.
Как все работает? Ваш программный код пытается что-то расшифровать, расшифровывает и дальше проверяет паддинг в конце. Если
паддинг не соответствует стандарту, вы видите «333» или что-то не в порядке, не весь последний блок нулевой, то она скажет вам:
«padding error». За счет такой схемы вы довольно простым образом можете перебрать последние байты последнего блока. Например,
если у вас используется злосчастный режим СВС, то, разобрав кусок plain-текста, вы сможете понять, что здесь находилось.
Казалось бы, все выглядит довольно безобидно. Но на практике проблема с атаками padding oracle приводила, например, к
удаленному выполнению зловредного кода в Windows 2003 где-то в 2008 году.
Почему так происходит? Мы пытаемся что-то расшифровать, не проверив, что поступившее сообщение действительно отправил тот, от
кого мы чего-то ждем.
Добро пожаловать в аутентификацию. Всё, о чём мы только что говорили, обеспечивало конфиденциальность сообщения. Используя
шифрование, мы отправляем сообщение и можем быть уверены, что никто кроме получателя его не прочитает. Но когда получатель
получает сообщение, как он может проверить, что сообщение действительно поступило от отправителя? Для такой проверки существует
отдельный набор протоколов аутентификации сообщений. По-английски это называется MAC — message authentication code.
Какие тут проблемы? Есть проблема в случае с потоковыми алгоритмами шифрования. Допустим, есть сообщение, о котором мы ничего
не знаем. Есть гамма, которая каким-то образом нагенерирована. Получается шифротекст. Допустим, шифр абсолютно стойкий и с ним
все хорошо. Но представим, что атакующий взял и изменил какой-то бит в сообщении, которое мы получаем. Обнаружим мы ошибку?
Очевидно, нет.
Если он поменял нулевой бит на единицу, он непредсказуемым образом изменил открытый текст. Если он в шифротексте поменял
единицу на ноль и в оригинальном сообщении в этом месте тоже был ноль, оно поменяется на единицу. Если мы «флипнули» бит в
шифротексте, он флипнется и в открытом тексте. И эту проблему нельзя обнаружить средствами одного алгоритма шифрования.
Понятно, что в блочном шифре будет больше проблем, что они накопятся и что вы наверняка столкнетесь с проблемой паддинга, но в
целом указанная проблема все еще есть. Само по себе шифрование не обеспечивает аутентификацию сообщения. Нужен отдельный
механизм.
Механизм называется МАС. Как он работает?
Берем сообщение и пропускаем через специальную функцию под названием МАС-алгоритм. На вход МАС-алгоритм получает не только
сообщение, но и ключ, отличающийся от ключа шифрования.
Когда мы хотим передать сообщение, мы прицепляем к нему результат выполнения алгоритма. Получатель берет сообщение, выполняет
такую же операцию и сравнивает МАС, который он вычислил, с МАС, который он получил. Если они совпали — значит, сообщение не было
изменено в процессе. А если два МАС не совпали, значит, по пути случилась проблема.
Что можно использовать в качестве МАС-функции? Можно использовать количество единиц, но, кажется, такая схема легко
форжится.
Хеш-функция — очевидный ответ. А еще?
Долгое время были распространены СВС МАС. Берем конструкцию, в которой нет инициализационного вектора, а все остальное то же
самое. Берем шифротекст — шифруем, «чейним», шифруем, «чейним»… Получается последний блок, где накоплена вся информация о нашем
тексте. Очень удобно.
Но также совершенно справедливо, что можно использовать какой-нибудь криптографический хеш как элемент МАС. Криптографических
хешей существует несколько, самые распространенные из них — MD5, семейство SHA, ГОСТ 34.11… ну и недавно сошелся конкурс на
SHA-3, в котором победил алгоритм Keccak.
Хеши устроены сложнее, чем алгоритмы шифрования, но по своему принципу идея построения хеш-функции похожа на алгоритм блочного
шифрования. Другими словами, мы берем какой-нибудь блок данных и последовательно, несколько раз применяем к нему набор достаточно
примитивных операций. Если посмотреть на MD5, то там есть только сложение по модулю 2 и циклические сдвиги. Применяем их много
раз — как правило, гораздо больше, чем в случае с алгоритмами блочного шифрования. Если по пути встречается текст, от которого
нам надо взять более длинную, чем один блок, функцию, то мы чейним их при помощи способа, немножко похожего на СВС. Мы добавляем
эти фрагменты к нашей вычисляемой функции.
Результатом вычисления хеша является числа. Длина числа всегда фиксированная. Типичные размеры выхода хеша для MD5 — 128 бит,
для SHA-1 — 168 бит, для SHA-256 — 256 бит, для SHA-384 — 384 бита, и для SHA-512 — 512 бит.
Что еще важного можно сказать про хеши? При малых изменениях на входе хеш обязан обеспечивать большие изменения на выходе.
Значит, если в открытом тексте на входе мы поменяли один бит, то в идеале хеш, результат вычисления хеш-функции, должен
измениться ровно наполовину.
Сейчас в реальной практике рекомендуется использовать SHA-2, а конкретно SHA-256 или SHA-384 — в зависимости от ваших
потребностей. MD4 поломан давно, MD5 — в принципе, тоже поломан: буквально вчера опубликована новая атака на MD5, где ребята
классным образом используют Sony PlayStation для генерации коллизий. Можно считать, что использовать MD5 больше не надо. В
реальной жизни всегда используйте SHA-2.
Где еще, помимо аутентификации, применяются хеш-функции? В протоколе выработки ключей, например в PBKDF2. Предположим, вам
нужно зашифровать какой-нибудь файл. Вы берете пользователя и, как правило, спрашиваете пароль, с помощью которого надо файл
зашифровать. В реальной ситуации пользователь введет в качестве пароля что-то вроде последовательности от 1 до 5, и его работа
будет закончена.
С одной стороны, вам хочется, чтобы ваш ключ шифрования был не таким предсказуемым, как «12345», и чтобы распределение бит
было более равномерным. С другой — если атакующий начинает перебирать все возможные варианты паролей, каждая атака перебором
должна занимать как можно больше времени. Указанный класс KDF-функций нацелен именно на это.
PBKDF2 — конкретная функция из класса функций генерации ключей. Устроена она очень просто. Она только и делает, что применяет
алгоритм хеширования несколько десятков тысяч раз. А попутно — на каждом этапе — подмешивает дополнительные данные так, чтобы
вычислить ее заранее было довольно тяжело.
Поскольку хеш-функция выполняется довольно долго, то выполнение хеш-функций несколько тысяч раз занимает еще больше времени.
Другими словами, мы удобным способом защищены от атакующего, который пытается перебрать несколько распространенных паролей.
В реальной жизни, когда применяется KDF-функция, рекомендуется выбирать количество итераций таким, чтобы оно было, с одной
стороны, приемлемым для нетерпеливого пользователя, а с другой — неприемлемым для атакующего, который хочет подобрать несколько
миллионов ключей. В реальной жизни подбирайте такое количество итераций в KDF, чтобы оно, например, выполнялось одну секунду. Для
атакующего одна секунда — совершенно непристойное время, а вот пользователь, нажимая кнопку и ожидая, пока пароль проверяется,
вполне способен одну секунду подождать.
Хранение паролей — то же применение хешей. Антон в
рассказе про UNIX обязательно расскажет и об этом.
Поскольку у нас есть атаки padding oracle и похожие, то, когда мы генерируем сообщение, есть два варианта действий.
Есть криптопримитив типа МАС, и есть криптопримитив для шифрования. Мы хотим отправить сообщение и аутентифицировать его. Есть
два способа. Мы можем сообщение зашифровать, потом взять МАС от этой штуки и прицепить его к сообщению. Целиком оно будет
выглядеть так: E(T) || MAC(E(T)).
Второй способ следующий: берем сообщение, шифруем его и берем МАС от открытого текста. Потому что зачем нам лишняя
операция?
По сути, одно называется MAC before encrypt, а второе — encrypt before MAC.
Вопрос — что лучше? Одинаково? Окей, еще версии?
Есть еще один прекрасный способ — мол, давайте зашифруем МАС, чтобы никакое знание про открытый текст точно не утекало.
Действительно, с этим способом есть проблема: если вы с помощью него зашифруете сообщение, то возникнет риск натолкнуться на
атаку padding oracle. Padding oracle не беспокоится о том, МАС у вас в конце или какие-то другие данные. У вас будет коробка,
которая сначала попытается расшифровать сообщение. Если из-за неправильного паддинга оно не расшифруется, коробка даже МАС не
станет проверять, а сразу ответит в сторону атакующего или еще кого-то, что «я не смогла расшифровать эту штуку». Достаточно
неприятно. Поэтому вот общая рекомендация к дизайну таких систем — если не знаете, что творите, лучше используйте такую вещь, а
если знаете — такую: E(T) || MAC(E(T)).
Буквально полгода назад мы с Антоном дискутировали про одно место, и я настаивал на использовании второй конструкции. Я думал,
что знаю, что творю. И мне до сих пор кажется, что я знал, что творил, ведь там не было padding oracle.
Умеем шифровать наше сообщение, умеем проверить, что полученное сообщение действительно пришла от отправителя. Эта конструкция
состоит в следующем: A и B заранее договорились о разделяемом секрете, который они потом смогут использовать для шифрования
сообщений и их верификации.
В реальной жизни, если есть секрет, разделяемый между двумя персонажами, то он, конечно, никогда не используется в качестве
ключа шифрования или ключа проверки подписи. Из него за счет какой-нибудь KDF-функции обязательно будут нагенерированы подключи:
ключ шифрования и ключ верификации, которые уже будут использоваться в реальных протоколах. Это не оригинальный разделяемый
секрет.
Ассиметричные шифры
Какая здесь проблема? Когда есть Алиса и Боб — есть один разделяемый ключ. Когда есть три персонажа — есть три разделяемых
ключа. Четыре — еще немного. Когда у нас 100 персонажей, то разделяемых ключей очень много. А когда мы Яндекс, у нас 100 млн
пользователей, и мы хотим с каждым надежно всё шифровать — проблема становится неподъемной.
Значит, необходим механизм, который позволял бы не хранить десятки миллионов ключей, одновременно обеспечивая надежность
шифрования между большим количеством абонентов в группе.
Возникшую проблему долго не удавалось решить — пока не появилась концепция асимметричных шифров.
Чем асимметричный шифр отличается от симметричного?
В асиметричном шифре существует два ключа — их называют «открытым» (public) и «закрытым» (private)
— связанные нетривиальным соотношением. Обозначим их kpub и kpriv. Если некое сообщение
зашифровано на ключе kpub, то расшифровано оно может быть на ключе kpriv. Иначе говоря, в ассиметричной
криптосистеме, C=E(kpub,T) и T=D(kpriv,C), при этом
kpub ≠ kpriv.
Важно: k1и k2 в реальной жизни таковы, что, зная один, нельзя вычислить второй. Между ними существует
соотношение, но оно нетривиальное.
Причиной, почему такая схема возможна, является существование однонаправленных функций. Речь идет о таких функциях, которые
легко вычислить в одну сторону, но без знания какого-то секрета сложно обратить.
Точно неизвестно, существуют ли такие функции в математическом смысле, но если бы они существовали, можно было бы доказать,
что P = NP. Сейчас не существует ни одной функции с доказанной обратимостью. Если говорить конкретно про RSA, люди просто верят,
что он такой. Эффективных атак тоже пока не существует.
Исторически первыми ребятами, придумавшими нечто похожее на однонаправленные функции, были Диффи и Хеллман. Изобретенный ими
алгоритм называется алгоритмом Диффи-Хеллмана (DH). По сути, речь идет о средстве выработки секрета между двумя участниками,
которые заранее не общались.
Есть Алиса и Боб. Пусть у них есть общее знание про числа P и G. Это основание поля и генератор.
Алиса генерирует большое случайное число а и вычисляет генератор в степени a по модулю Р. Результат А она пересылает
Бобу.
Боб берет какое-то случайное число В, вычисляет тот же самый генератор в степени B по модулю Р. Генератор и модуль G и P
представляют собой открытые данные. Если посмотреть на реальные криптографические протоколы, G и P являются свойствами конкретной
группы. Про них обычно так прямо и пишут.
Что происходит дальше? Боб вычисляет В и пересылает его Алисе. Алиса берет В и возводит в свою степень а, а Боб берет число,
полученное от Алисы, и возводит в степень b. Внизу равенство: Вa = Ab. Не очень сложно.
Таким образом, два участника соединения смогли получить, вычислить некий общий секрет, не передавая его по проводу. Получилось
очень удобно.
Кажется, здесь всё здорово в ситуации, если Алиса и Боб изначально знают, когда они разговаривают друг с другом, — что немного
сводит эту проблему к точке 0.
Еще лет пять спустя Ривест, Шамир и Адлеман придумали криптосхему, которую назвали в честь себя — RSA.
Берем два больших случайных числа. Тут написано — 1024 бита. В современных системах бит обычно 2048, 4096 или даже 8192: речь
идет про действительно большую, длинную запись.
Вычисляем их произведение — модуль.
Вычисляем значение функции Эйлера от числа (n-1)(p-1). Функция Эйлера — количество натуральных чисел, взаимно простых с
аргументом функции и меньше указанного аргумента.
Если посмотреть на функцию Эйлера, она выглядит примерно так: растет, растет и падает. На графике сколько-то лучей. Функция
Эйлера имеет излом в каждой точке.
Дальше вычисляем взаимно простое с функцией Эйлера число е и еще одно число — мультипликативно обратное числу е по модулю. Оно
такое, что на этом модуле функции Эйлера произведение двух полученных чисел равно единице.
Числе е мы называем публичной экспонентой, а d — секретной экспонентой. Последняя вычисляется при помощи алгоритма Евклида как
наименьшее общее. В школе, классе в третьем, мы все проходили вычисление наибольшего общего и наименьшего общего. Вот почему не
надо рассказывать про математику RSA.
Важно, что мы выбрали два таких числа, что по указанному модулю их произведение равно единице. Иначе говоря, одно число
представимо как единица плюс некое k, умноженное на функцию Эйлера, где k — целое число.
Дальше, когда мы хотим что-то зашифровать, мы представляем это что-то в виде числа, которое мы возводим в степень е по
вычисленному нами основанию n. Результат возведения в степень как раз и является шифротекстом. Такая операция гораздо сложнее,
чем любые операции в симметричных алгоритмах шифрования, но принципиально несложная.
Если мы хотим расшифровать наше что-то, мы возводим его в степень d.
А поскольку de = 1 по модулю функции Эйлера от n, то результат, Med mod n, означает, что это M1 по
модулю n. Таким образом и происходит расшифровка. M1 = M.
Если есть такой классный алгоритм шифрования как RSA, то почему бы не шифровать им всё подряд? Мы берем два ключа,
k1 и k2, один называем публичным, другой — секретным. В данном случае е — публичный ключ, d — секретный.
Всё, что мы зашифровали на публичном ключе, мы можем расшифровать на секретном, а всё, что мы зашифровали на секретном ключе,
можно расшифровать публично. Здесь наблюдается симметрия: можно Me сделать, а потом в степени d, или Md, а
потом в степени е.
Если есть такой классный алгоритм шифрования как RSA, то зачем мы вообще пользуемся симметричными алгоритмами?
Конечно, из-за скорости. Симметричные алгоритмы состоят из XOR и сдвигов, ну и еще из подстановок в таблицах. На процессорах
все указанные операции выполняются, как правило, одной ассемблерной командой. Вот почему симметричные алгоритмы шифрования очень
быстрые. Здесь же надо выполнить операцию возведения в степень — намного более дорогую, и ее производительность намного ниже, чем
производительность любого симметричного шифра.
Есть и вторая проблема. Мы поняли, как с помощью симметричных шифров шифровать куски длиной больше, чем блок произвольной
длины. А с RSA мы не можем шифровать куски произвольной длины, поскольку возведение в степень — дорогая операция. Нельзя
зашифровать что угодно. Поэтому в реальной жизни делается иначе: когда мы хотим отправить кому-то сообщение, мы можем как-нибудь
выработать сеансовый ключ с помощью ассиметричного шифрования, а потом с помощью полученного ключа начать выполнять шифрование
потока данных, используя симметричный алгоритм и классические МАС-функции.
RSA использует ключи длиной 1024, 2048, 4096 бит — довольно большие. Алгоритмы симметричного шифрования AES, DES и Salsa
используют следующие длины ключей: 256, 128 бит или даже 64 в случае с DES.
Вопрос, какой ключ более стойкий — RSA-2048 или AES-256? В RSA числа очень большие, но вы же понимаете, что в AES ключом может
служить полный набор из всех 2256 вариантов, а в RSA — далеко не каждое число. В первую очередь мы берем случайные
простые числа, которые даже среди больших чисел встречаются далеко не подряд. Вариантов ключей в пространстве 22048
намного меньше.
Нет математической теоремы, где говорилось бы, что такая-то длина ключа соответствует такой-то длине ключа из другого
алгоритма. Существует некий эмпирический набор представлений о том, что чему соответствует. Есть критерий Ленстры, основанный на
примерном времени, которое требуется для подбора ключа при атаке полным перебором. И считается, что это примерно характеризует
пространство ключей в некой области.
Критерий Ленстры где-то там закончился, но такие таблицы есть и для нынешних дат. Можно сказать, что 2014 году соответствует
AES с ключом длиной примерно 78-80 бит. Эквивалентный ему симметричный алгоритм шифрования, а конкретно RSA, работает при длине
1300-1400 бит. Можно зайти на keylength.com и посмотреть, сколько там сейчас. Разумная длина хеша сейчас — 160-170 бит. То есть
SHA1 в 2014 году уже не применим просто с точки зрения атаки полным перебором, поскольку длина его выхода — 168 бит.
Когда вы дизайните какую-нибудь криптосистему, необходимо соблюдать баланс между длинами ключей, симметричным и асимметричным
алгоритмом шифрования и длиной хеша.
Мы рассмотрели три примитива. Давайте посмотрим, как, используя их, полностью зашифровать сообщение и переслать его от одного
пользователя другому.
Давайте разберем два варианта. Первый вариант: два пользователя находятся онлайн и могут быстро обмениваться друг с другом
сообщениями. Второй: пользователи не находятся онлайн и обмениваются сообщениями с некоторой задержкой. Давайте посмотрим, как
можно эффективно реализовать обмен в обоих случаях.
Начнем со второго случая. Грубо говоря, это email. Что делать, если мы хотим отправить сообщение от Алисы Бобу?
Алиса генерирует симметричный ключ — допустим, длиной 128 бит. Что еще есть? Сразу скажем, что у Алисы есть публичный ключ
Боба. У нее есть свой публичный ключ и есть свой приватный ключ.
У Боба есть его публичный ключ, публичный ключ Алисы и свой приватный ключ.
Мы говорили, что Алиса не может зашифровать сообщение публичным ключом Боба, потому что оно может быть длиной в несколько
гигабайт, а возвести число в степень нескольких гигабайт мы не можем.
Симметричный ключ шифруется ключом Боба.
Мы шифруем сообщение симметричным алгоритмом на этом ключе. Вычисляем хеш. Берем сообщение, зашифрованное на ключе,
сгенерированном случайно при помощи какого-нибудь симметричного алгоритма. К указанному сообщению мы пристыковали хеш,
зашифрованный на приватном ключе Алисы.
Ключ шифруем на публичном ключе Боба.
Мы сгенерировали случайное 128-битное число, которое стало нашим сеансовым ключом. С помощью этого 128-битного ключа,
используя симметричный алгоритм, мы зашифровали сообщение. Мы взяли хеш от сообщения, зашифровали его на нашем приватном ключе.
еще мы взяли наш сессионный ключ и зашифровали его на публичном ключе Боба. Затем мы сконкатинировали все три конструкции и
отправили результат Бобу.
Каковы действия Боба? Сначала он расшифровывает сессионный ключ, используя свой приватный ключ. Поскольку он зашифрован на
публичном ключе Боба, то его можно расшифровать только с помощью приватного ключа Боба. Боб получил сессионный ключ, дальше
публичным ключом проверяет, что письмо пришло от Алисы… Или все-таки сначала расшифровывает сообщение?
Есть версия, что необходимо подписывать и брать хеш от зашифрованного сообщения. А здесь мы берем хеш от открытого текста. Так
как лучше делать?
С другой стороны, если мы считаем, что за нами наблюдает всевидящее око АНБ… Это ряд, о котором я уже рассказывал. Только я о
нем рассказывал применительно к padding oracle, что очень актуально для онлайновых атак, а здесь ситуация офлайновая, и он не
всегда очевиден.
Что делает Боб? Боб видит блок, который, предположительно, зашифрован на приватном ключе Алисы. Он может использовать
публичный ключ Алисы, чтобы расшифровать указанный фрагмент. Расшифровав его, Боб получит либо хеш от сообщения, либо хеш от
зашифрованного сообщения — в зависимости от того, что именно мы зашифровали.
Дальше Боб вычисляет на своей стороне хеш либо от зашифрованного сообщения, либо от сообщения, которое он зашифровал с помощью
сессионного ключа. Боб может сравнить вычисленный и полученный хеши: если они совпали, значит, сообщение дошло. Во-первых, оно не
изменилось в процессе — свойство хеша это гарантирует. Во-вторых, поскольку он смог расшифровать указанный фрагмент на публичном
ключе Алисы, то сообщение действительно пришло от нее.
Какой здесь тонкий момент? В области, где надо либо расшифровать и потом проверить, либо подписать и потом зашифровать.
Речь идет об офлайновой коммуникации. Примерно так, если не углубляться в детали, устроены S/MIME и PGP. Обо всех остальных
деталях, связанных с пониманием, что ключ действительно от Алисы, завтра расскажет Антон.
Снова есть Алиса, которая хочет отослать сообщение Бобу. Она знает публичный ключ Боба, свой публичный ключ и свой приватный
ключ. И есть Боб, который знает свой публичный ключ, публичный ключ Алисы и свой приватный ключ. Допустим, они оба онлайн. Что мы
можем здесь сделать? В чем разница?
Важное отличие: когда оба абонента находятся онлайн, мы имеем возможность сделать DH и, таким образом, выработать сеансовый
ключ. Дальше задача сводится к предыдущей.
Если они оба онлайн, и сначала мы можем произвести полноценный DH, то, произведя его, мы на обеих сторонах получим общий
ключ.
Проблема с DH состоит в атаке посередине (англ. man-in-the-middle или MITM — прим. ред.). Другими словами, отправляя и посылая
результат возведения в степень, мы на самом деле не знаем, кому мы его отправили и от кого получили. Если у нас есть человек,
находящийся посередине между Алисой и Бобом, он может получить от Алисы какое-нибудь число, нагенерировать свое число, послать
его Бобу от имени Алисы, получить от Боба новое число, сгенерировать еще какое-нибудь число и послать его Алисе от имени Боба.
Вместо одной DH-сессии будут две — со злоумышленником посередине. Но ни Алиса, ни Боб не смогут проверить, что они разговаривают
друг с другом напрямую.
Что делать? Подписывать ключами, которые есть.
— На одной стороне эти параметры шифруются приватным ключом, на другой — расшифровываются…
— Алиса вот так посылает? А какая польза?
— Только Боб сможет расшифровать…
— Почему? Кто угодно сможет расшифровать.
— Сообщение шифруется публичным ключом Боба, чтобы расшифровать его своим приватным ключом мог только Боб.
— Любой желающий в интернете сможет зашифровать сообщение публичным ключом Боба. Как Боб проверит, что сообщение пришло от
Алисы?
— …и подписать приватным ключом Алисы.
— А зачем шифровать? Я рассказывал, что у DH есть очень удобное свойство: наблюдающий, даже если он видит весь обмен, не может
восстановить сессионный ключ.
— Чтобы нельзя было наладить две DH-сессии и устроить MITM?
— Нет. Что атакующий получает, если видит DH-сессию? Я же сказал, что сессионный ключ в DH-сессии он установить не может. MITM
может, и для этого нужно шифрование? Не верю.
Какой механизм нужен, чтобы проверить аутентичность полученного сообщения? Подпись. Алиса генерирует А, берет хеш от A и
шифрует его на своем приватном ключе. Всё. Затем она посылает Бобу А и подписанный хеш.
Что делает Боб? У него есть публичный ключ Алисы и он знает, что это публичный ключ Алисы. Он расшифровывает хеш и сверяет
результат с тем, который он ранее вычислил от полученного А. Если результаты совпали — то, во-первых, А действительно пришло от
Алисы, поскольку расшифровалось на ее публичном ключе, а во-вторых, оно в процессе не поменялось, поскольку таково свойство
хеша.
Дальше Боб проделывает аналогичную операцию со своим ключом: генерирует В, делает хеш, шифрует его на своем приватном ключе,
берет зашифрованный блоб плюс В и отсылает результат Алисе. Алиса может проверить подпись. Вот у них и состоялся подписанный
DH.
Важно, что люди просто знали публичные ключи друг друга. Их можно опубликовать в газете, раздать на визитках или еще
как-нибудь. Зная публичные ключи и пользуясь своим нахождением в онлайне, Алиса и Боб смогли создать подписанный сеансовый ключ,
в достоверности которого они оба уверены.
Если возник сеансовый секрет, дальше можно повести себя точно так же. Но здесь есть один недостаток. Мы всё проверили в рамках
какой-то DH-сессии, а как потом узнать, что это всё ещё Алиса?
Не имеет смысла передавать сессионный ключ? Действительно, сессионный ключ выработан. Но есть еще одно замечание. Что в этой
истории дорогое? Шифрование приватным ключом. Давайте как-нибудь от него избавимся? Шифровать мы будем сессионным ключом, но мы
можем не использовать электронную подпись за счет алгоритма симметричного шифрования. Мы можем использовать МАС.
Допустим, у нас есть сообщение и мы конкатинируем его с каким-нибудь секретом. От полученной конструкции берем хеш. Итоговая
конструкция работает плохо. Она уязвима к разным атакам: если сообщение слева, то к атакам предвычисления, если справа, позади
ключа, — то к атакам расширения. Не очень удобно. Если говорить про хеши, основанные на итерационных подходах, как в MD5 и SHA,
они для этого неприменимы. Там надо либо длину указывать, либо по-всякому заморачиваться. Поэтому придумана специальная
конструкция HMAC. Речь идет про МАС, сгенерированный на основе хеша.
В НМАС на вход подается сообщение, которое нужно идентифицировать, и ключ. Внутри он работает очень просто, там есть два
вычисления хеша, которые поксорены с разными константами. Есть константа C1. С помощью нее вычисляется хеш, результат
ксорится с константой C2, и еще раз вычисляется хеш, если я правильно помню.
Конструкция НМАС позволяет избавиться от атак расширения и атак предвычисления ключа. И поскольку мы здесь общаемся онлайн,
можно сделать следующее. Мы обменялись DH, выработали за счет DH некий секрет. Такие предвычисленные секреты не надо использовать
напрямую, поэтому мы каким-то образом применяем к секрету KDF-функцию, а на выходе получаем два ключа: для шифрования и для
верификации. Не буду погружаться в детали, как именно мы их получаем. Самый простой способ сгенерировать из одного секрета два
ключа — конкатинировать: в одном случае с единицей, во втором случае с двойкой. И — применяем KDF-функцию.
Теперь, чтобы послать сообщение, мы шифруем его на ключе шифрования, добавляем к нему НМАС на ключе верификации, и в таком
виде отправляем.
Получилось удобно, поскольку вычисление хеша в НМАС дешевле, чем прежнее возведение в степень. Это очень важно в ситуациях,
когда работа идет в онлайне. Когда мы общаемся по почте, никого не волнует задержка в полсекунды при открытии письма. А вот когда
мы общаемся по HTTPS с сайтом, нам совсем не хочется, чтобы каждый пакет передавался с полусекундной задержкой.
Нам нужно нечто более эффективное и одновременно достаточно защищенное. Такое сообщение самодостаточно. Мы обменялись
секретами, из секретов нагенерировали ключи. С помощью ключей мы сначала можем произвести верификацию. Получили сообщение,
проверифицировали его на ключе верификации. Если зашифрованное сообщение правильно верифицировано, мы сможем его расшифровать.
Расшифровали сообщение — получили открытый текст.
Ну что, уложился я за два часа?
Рекомендованная литература
Поскольку это введение, оно не может быть полным. Если вы хотите узнать больше про криптографию, как науку, вот список для чтения.
- Aumasson, J.-P. (2017) Serious Cryptography. ISBN-13:
978-1-59327-826-7. - Ristić, I. (2014) Bulletproof SSL and TLS. ISBN:
978-1-90711-704-6. - Katz, J.N., and Lindell, Y. (2014) Introduction to Modern
Cryptography, 2nd edition. ISBN: 978-1-46657-026-9.
Если вы хотите узнать больше об истории и развитии криптографии, почитайте эти книги.
- Kahn, D. (1996) The Codebreakers. ISBN:
0-684-83130-9 - Singh, S. (1999) The Code Book. ISBN:
978-1-85702-879-9.
Информатика — Кодирование
1. Основные понятия
Закодировать текст – значит сопоставить ему другой текст. Кодирование применяется при передаче данных – для того, чтобы зашифровать текст от посторонних, чтобы сделать передачу данных более надежной, потому что канал передачи данных может передавать только ограниченный набор символов (например, — только два символа, 0 и 1) и по другим причинам.
При кодировании заранее определяют алфавит, в котором записаны исходные тексты (исходный алфавит) и алфавит, в котором записаны закодированные тексты (коды), этот алфавит называется кодовым алфавитом. В качестве кодового алфавита часто используют двоичный алфавит, состоящий из двух символов (битов) 0 и 1. Слова в двоичном алфавите иногда называют битовыми последовательностями.
2. Побуквенное кодирование
Наиболее простой способ кодирования – побуквенный. При побуквенном кодировании каждому символу из исходного алфавита сопоставляется кодовое слово – слово в кодовом алфавите. Иногда вместо «кодовое слово буквы» говорят просто «код буквы». При побуквенном кодировании текста коды всех символов записываются подряд, без разделителей.
Пример 1. Исходный алфавит – алфавит русских букв, строчные и прописные буквы не различаются. Размер алфавита – 33 символа.
Кодовый алфавит – алфавит десятичных цифр. Размер алфавита — 10 символов.
Применяется побуквенное кодирование по следующему правилу: буква кодируется ее номером в алфавите: код буквы А – 1; буквы Я – 33 и т.д.
Тогда код слова АББА – это 1221.
Внимание: Последовательность 1221 может означать не только АББА, но и КУ (К – 12-я буква в алфавите, а У – 21-я буква). Про такой код говорят, что он НЕ допускает однозначного декодирования
Пример 2. Исходный и кодовый алфавиты – те же, что в примере 1. Каждая буква также кодируется своим номером в алфавите, НО номер всегда записывается двумя цифрами: к записи однозначных чисел слева добавляется 0. Например, код А – 01, код Б – 02 и т.д.
В этом случае кодом текста АББА будет 01020201. И расшифровать этот код можно только одним способом. Для расшифровки достаточно разбить кодовый текст 01020201 на двойки: 01 02 02 01 и для каждой двойки определить соответствующую ей букву.
Такой способ кодирования называется равномерным. Равномерное кодирование всегда допускает однозначное декодирование.
Далее рассматривается только побуквенное кодирование
3. Неравномерное кодирование
Равномерное кодирование удобно для декодирования. Однако часто применяют и неравномерные коды, т.е. коды с различной длиной кодовых слов. Это полезно, когда в исходном тексте разные буквы встречаются с разной частотой. Тогда часто встречающиеся символы стоит кодировать более короткими словами, а редкие – более длинными. Из примера 1 видно, что (в отличие от равномерных кодов!) не все неравномерные коды допускают однозначное декодирование.
Есть простое условие, при выполнении которого неравномерный код допускает однозначное декодирование.
Код называется префиксным, если в нем нет ни одного кодового слова, которое было бы началом (по-научному, — префиксом) другого кодового слова.
Код из примера 1 – НЕ префиксный, так как, например, код буквы А (т.е. кодовое слово 1) – префикс кода буквы К (т.е. кодового слова 12, префикс выделен жирным шрифтом).
Код из примера 2 (и любой другой равномерный код) – префиксный: никакое слово не может быть началом слова той же длины.
Пример 3. Пусть исходный алфавит включает 9 символов: А, Л, М, О, П, Р, У, Ы, -. Кодовый алфавит – двоичный. Кодовые слова:
А: 00 М: 01 -: 100 Л: 101 У: 1100 Ы: 1101 Р: 1110 О: 11110 П: 11111Кодовые слова выписаны в алфавитном порядке. Видно, что ни одно из них не является началом другого. Это можно проиллюстрировать рисунком
На рисунке изображено бинарное дерево. Его корень расположен слева. Из каждого внутреннего узла выходит два ребра. Верхнее ребро имеет пометку 0, нижнее – пометку 1. Таким образом, каждому узлу соответствует слово в двоичном алфавите. Если слово X является началом (префиксом) слова Y, то узел, соответствующий слову X, находится на пути из корня в узел, соответствующий слову Y. Наши кодовые слова находятся в листьях дерева. Поэтому ни одно из них не является началом другого.
Теорема (условие Фано). Любой префиксный код (а не только равномерный) допускает однозначное декодирование.
Разбор примера (вместо доказательства). Рассмотрим закодированный текст, полученный с помощью кода из примера 3:
0100010010001110110100100111000011100
Будем его декодировать таким способом. Двигаемся слева направо, пока не обнаружим код какой-то буквы. 0 – не кодовое слово, а 01 – код буквы М.
0100010010001110110100100111000011100
Значит, исходный текст начинается с буквы М: код никакой другой буквы не начинается с 01! «Отложим» начальные 01 в сторону и продолжим.
01 00010010001110110100100111000011100 МДалее таким же образом находим следующее кодовое слово 00 – код буквы А.
01 00010010001110110100100111000011100 М АДоведите расшифровку текста до конца самостоятельно. Убедитесь, что он расшифровывается (декодируется) однозначно.
Замечание. В расшифрованном тексте 14 букв. Т.к. в алфавите 9 букв, то при равномерном двоичном кодировании пришлось бы использовать кодовые слова длины 4. Таким образом, при равномерном кодировании закодированный текст имел бы длину 56 символов – в полтора раза больше, чем в нашем примере (у нас 37 символов).
4. Как все это повторять. Задачи на понимание
Знание приведенного выше материала достаточно для решения задачи 5 из демо-варианта и близких к ней (см. здесь). Повторять (учить) этот материал стоит в том порядке, в котором он изложен. При этом нужно решать простые задачи – до тех пор, пока не будет достигнуто полное понимание. Ниже приведены возможные типы таких задач. Опытные учителя легко придумают (или подберут) конкретные задачи таких типов. Если будут вопросы – пишите.
1) Понятие побуквенного кодирования.
Дан алфавит Ф и кодовые слова для всех слов в алфавите Ф. Закодировать заданный текст в алфавите Ф. Коды могут быть с использованием разных кодовых алфавитов, равномерные и неравномерные.
2) Префиксные неравномерные коды.
2.1) Дан алфавит Ф и двоичный префиксный код для этого алфавита. Построить дерево кода (см. рис.1) и убедиться, что код – префиксный.
2.2) Дан алфавит Ф и двоичный префиксный код для этого алфавита. Декодировать (анализом слева направо) данный текст в кодовом алфавите.
2.3) Дан алфавит Ф и кодовые слова для всех слов в алфавите Ф. Определить, является ли данный код префиксным, или нет. В качестве примеров полезно приводить:
— Равномерный код. — Неравномерный префиксный код (полезно нарисовать депево этого кода как на рис.1). — Различные пополнения данного неравномерного префиксного кода с помощью кода еще одной буквы так, чтобы полученный код либо оставался префиксным, либо переставал им быть. При анализе дополнительной буквы полезно использовать дерево исходного кода. Полезно рассмотреть различные варианты «потери префиксности»: (а) новый код – начало одного из старых; (б) один из старых кодов – начало нового.2.4) Решать задачи для самостоятельного решения, например, отсюда
службы шифрования | Microsoft Docs
-
- Чтение занимает 15 мин
В этой статье
Общедоступные сети, такие как Интернет, не предоставляют средств обеспечения защищенного взаимодействия между объектами.Public networks such as the Internet do not provide a means of secure communication between entities. При взаимодействии через такие сети может происходить чтение или даже изменение передаваемой информации неправомочными третьими лицами.Communication over such networks is susceptible to being read or even modified by unauthorized third parties. Использование криптографии обеспечивает защиту данных от просмотра, обнаружение изменения данных и безопасный обмен данными на основе незащищенных каналов.Cryptography helps protect data from being viewed, provides ways to detect whether data has been modified, and helps provide a secure means of communication over otherwise nonsecure channels. Например, данные могут быть зашифрованы с помощью некоторого криптографического алгоритма, переданы в зашифрованном виде, а затем расшифрованы лицом, которому они предназначались.For example, data can be encrypted by using a cryptographic algorithm, transmitted in an encrypted state, and later decrypted by the intended party. Если зашифрованные данные будут перехвачены третьим лицом, расшифровать их будет трудно.If a third party intercepts the encrypted data, it will be difficult to decipher.
В .NET классы в System.Security.Cryptography пространстве имен управляют множеством сведений о криптографии.In .NET, the classes in the System.Security.Cryptography namespace manage many details of cryptography for you. Некоторые из них являются оболочками для реализации операционных систем, а другие — исключительно управляемыми реализациями.Some are wrappers for operating system implementations, while others are purely managed implementations. При использовании этих классов вам вовсе не обязательно быть экспертом в криптографии.You do not need to be an expert in cryptography to use these classes. При создании экземпляра одного из классов, реализующих алгоритмы шифрования, ключи создаются автоматически с целью удобства использования, а принятые по умолчанию значения свойств призваны обеспечить максимальную защищенность.When you create a new instance of one of the encryption algorithm classes, keys are autogenerated for ease of use, and default properties are as safe and secure as possible.
В этом обзоре представлены краткие сведения о методах и методиках шифрования, поддерживаемых .NET, включая манифесты ClickOnce.This overview provides a synopsis of the encryption methods and practices supported by .NET, including the ClickOnce manifests.
Криптографические примитивыCryptographic Primitives
В типичной ситуации, когда используется криптография, две стороны (Анна и Виктор) осуществляют связь по незащищенному каналу.In a typical situation where cryptography is used, two parties (Alice and Bob) communicate over a nonsecure channel. Анна и Виктор хотят быть уверены в том, что передаваемые ими данные не могут быть прочитаны даже в случае возможного перехвата.Alice and Bob want to ensure that their communication remains incomprehensible by anyone who might be listening. Более того, так как Анна и Виктор находятся в удаленных друг от друга местах, Анна должна быть уверена, что информация, которую она получает от Виктора, не подвергается изменению во время передачи.Furthermore, because Alice and Bob are in remote locations, Alice must make sure that the information she receives from Bob has not been modified by anyone during transmission. Также она должна быть уверена в том, что получаемые ею данные действительно исходят от Виктора, а не от кого-то, выдающего себя за него.In addition, she must make sure that the information really does originate from Bob and not from someone who is impersonating Bob.
Криптография используется для достижения следующих целей:Cryptography is used to achieve the following goals:
конфиденциальность: защита данных или личной информации пользователя от несанкционированного просмотра;Confidentiality: To help protect a user’s identity or data from being read.
целостность данных: защита данных от несанкционированного изменения;Data integrity: To help protect data from being changed.
аутентификация: проверка того, что данные исходят действительно от определенного лица;Authentication: To ensure that data originates from a particular party.
неотрекаемость: ни одна сторона не должна иметь возможность отрицать факт отправки сообщения.Non-repudiation: To prevent a particular party from denying that they sent a message.
Для достижения этих целей можно использовать алгоритмы и правила, известные как криптографические примитивы, для создания криптографической схемы.To achieve these goals, you can use a combination of algorithms and practices known as cryptographic primitives to create a cryptographic scheme. В таблице ниже приведены криптографические примитивы и описано их использование.The following table lists the cryptographic primitives and their uses.
Криптографический примитивCryptographic primitive | НазначениеUse |
---|---|
Шифрование с закрытым ключом (симметричное шифрование)Secret-key encryption (symmetric cryptography) | Осуществляет преобразование данных с целью предотвращения их просмотра третьей стороной.Performs a transformation on data to keep it from being read by third parties. При таком способе шифрования для шифрования и расшифровки данных используется один общий закрытый ключ.This type of encryption uses a single shared, secret key to encrypt and decrypt data. |
Шифрование с открытым ключом (асимметричное шифрование)Public-key encryption (asymmetric cryptography) | Осуществляет преобразование данных с целью предотвращения их просмотра третьей стороной.Performs a transformation on data to keep it from being read by third parties. При таком способе шифрования для шифрования и расшифровки данных используется набор, состоящий из открытого и закрытого ключей.This type of encryption uses a public/private key pair to encrypt and decrypt data. |
Создание криптографической подписиCryptographic signing | Позволяет проверить, действительно ли данные исходят от конкретного лица, с помощью уникальной цифровой подписи этого лица.Helps verify that data originates from a specific party by creating a digital signature that is unique to that party. Этот процесс также использует хэш-функции.This process also uses hash functions. |
Криптографическое хэшированиеCryptographic hashes | Отображает данные любого размера в байтовую последовательность фиксированной длины.Maps data from any length to a fixed-length byte sequence. Результаты хэширования статистически уникальны; отличающаяся хотя бы одним байтом последовательность не будет преобразована в то же самое значение.Hashes are statistically unique; a different two-byte sequence will not hash to the same value. |
Шифрование с закрытым ключомSecret-Key Encryption
При шифровании с закрытым ключом для шифрования и расшифровки данных используется один закрытый ключ.Secret-key encryption algorithms use a single secret key to encrypt and decrypt data. Необходимо обезопасить этот ключ от несанкционированного доступа, потому что любое обладающее им лицо может использовать его для расшифровки данных или шифрования собственных данных с подменой источника.You must secure the key from access by unauthorized agents, because any party that has the key can use it to decrypt your data or encrypt their own data, claiming it originated from you.
Шифрование с закрытым ключом называют также симметричным шифрованием, так как для шифрования и расшифровки используется один и тот же ключ.Secret-key encryption is also referred to as symmetric encryption because the same key is used for encryption and decryption. Алгоритмы шифрования с закрытым ключом являются очень быстрыми (по сравнению с алгоритмами шифрования с открытым ключом) и хорошо подходят для осуществления криптографических преобразований больших массивов данных.Secret-key encryption algorithms are very fast (compared with public-key algorithms) and are well suited for performing cryptographic transformations on large streams of data. Асимметричные алгоритмы шифрования, такие как RSA, имеют математические ограничения на объем шифруемых данных.Asymmetric encryption algorithms such as RSA are limited mathematically in how much data they can encrypt. Для симметричных алгоритмов шифрования подобные проблемы обычно не возникают.Symmetric encryption algorithms do not generally have those problems.
Разновидность алгоритмов шифрования с закрытым ключом, называемая блочным шифром, используется для шифрования целого блока данных за один раз.A type of secret-key algorithm called a block cipher is used to encrypt one block of data at a time. Блочные шифры (такие как DES, TrippleDES и AES) преобразуют входной блок данных длиной в n байтов в выходной блок зашифрованных данных.Block ciphers such as Data Encryption Standard (DES), TripleDES, and Advanced Encryption Standard (AES) cryptographically transform an input block of n bytes into an output block of encrypted bytes. Если необходимо зашифровать или расшифровать последовательность байтов, следует делать это блок за блоком.If you want to encrypt or decrypt a sequence of bytes, you have to do it block by block. Так как значение n достаточно мало (8 байт для DES и TripleDES; 16 байт (по умолчанию), 24 или 32 байта для AES), данные большей длины, чем n , должны шифроваться блоками, по одному за раз.Because n is small (8 bytes for DES and TripleDES; 16 bytes [the default], 24 bytes, or 32 bytes for AES), data values that are larger than n have to be encrypted one block at a time. Блоки данных размером менее n байт должны быть увеличены до n байт перед обработкой.Data values that are smaller than n have to be expanded to n in order to be processed.
Одна из простейших форм блочного шифра называется режимом электронной кодовой книги (ECB).One simple form of block cipher is called the electronic codebook (ECB) mode. Режим ECB не считается безопасным, так как в нем не используется вектор инициализации для инициализации первого текстового блока.ECB mode is not considered secure, because it does not use an initialization vector to initialize the first plaintext block. Для заданного закрытого ключа k простой блочный шифр, не использующий вектор инициализации, зашифрует одинаковые входные блоки текста в одинаковые выходные блоки зашифрованного текста.For a given secret key k, a simple block cipher that does not use an initialization vector will encrypt the same input block of plaintext into the same output block of ciphertext. Поэтому, если во входном текстовом потоке есть одинаковые блоки, в зашифрованном потоке также будут одинаковые блоки.Therefore, if you have duplicate blocks in your input plaintext stream, you will have duplicate blocks in your output ciphertext stream. Такие повторяющиеся выходные блоки сообщают неправомочным пользователям о ненадежных алгоритмах шифрования, которыми можно воспользоваться, и о возможных типах атак.These duplicate output blocks alert unauthorized users to the weak encryption used the algorithms that might have been employed, and the possible modes of attack. Шифр ECB поэтому очень уязвим для анализа и, в конечном итоге, для взлома ключа.The ECB cipher mode is therefore quite vulnerable to analysis, and ultimately, key discovery.
Классы блочных шифров, предоставляемые библиотекой базовых классов, используют режим сцепления, называемый сцеплением шифровальных блоков (CBC), хотя эту настройку по умолчанию можно изменить.The block cipher classes that are provided in the base class library use a default chaining mode called cipher-block chaining (CBC), although you can change this default if you want.
Шифры CBC решают проблемы, связанные с использованием шифров ECB, благодаря использованию вектора инициализации (IV) для шифрования первого текстового блока.CBC ciphers overcome the problems associated with ECB ciphers by using an initialization vector (IV) to encrypt the first block of plaintext. Перед шифрованием каждого блока открытого текста он объединяется с зашифрованным текстом предыдущего блока с помощью поразрядной исключающей операции OR (XOR
).Each subsequent block of plaintext undergoes a bitwise exclusive OR (XOR
) operation with the previous ciphertext block before it is encrypted. Поэтому каждый блок зашифрованного текста зависит от всех предыдущих блоков.Each ciphertext block is therefore dependent on all previous blocks. При использовании этой системы шифрования стандартные заголовки сообщений, которые могут быть известны неправомочному пользователю, не могут быть использованы им для восстановления закрытого ключа.When this system is used, common message headers that might be known to an unauthorized user cannot be used to reverse-engineer a key.
Одним из способов раскрытия данных, зашифрованных с помощью шифра CBC, является подбор ключа методом полного перебора возможных ключей.One way to compromise data that is encrypted with a CBC cipher is to perform an exhaustive search of every possible key. В зависимости от длины использованного для шифрования ключа такой подбор занимает очень много времени даже на самых быстрых компьютерах, поэтому он является практически неосуществимым.Depending on the size of the key that is used to perform encryption, this kind of search is very time-consuming using even the fastest computers and is therefore infeasible. Шифры с большей длиной ключа труднее взломать.Larger key sizes are more difficult to decipher. Несмотря на то что использование шифрования не гарантирует теоретическую невозможность раскрытия зашифрованных данных неправомочным лицом, стоимость такого взлома становится чрезвычайно высокой.Although encryption does not make it theoretically impossible for an adversary to retrieve the encrypted data, it does raise the cost of doing this. Если процесс подбора ключа и раскрытия зашифрованных данных занимает три месяца, в то время как сами данные актуальны в течение всего нескольких дней, подбор ключа методом полного перебора не представляет практической ценности.If it takes three months to perform an exhaustive search to retrieve data that is meaningful only for a few days, the exhaustive search method is impractical.
Недостатком шифрования с закрытым ключом является необходимость того, чтобы две стороны согласовали ключ и вектор инициализации, для чего может потребоваться их передача через систему связи.The disadvantage of secret-key encryption is that it presumes two parties have agreed on a key and IV, and communicated their values. Вектор инициализации не считается секретным и может передаваться вместе с сообщением в текстовом формате.The IV is not considered a secret and can be transmitted in plaintext with the message. Однако ключ не должен стать известен неправомочным пользователям.However, the key must be kept secret from unauthorized users. Из-за этих проблем шифрование с закрытым ключом часто используется в сочетании с шифрованием с открытым ключом для безопасной передачи ключа и вектора инициализации.Because of these problems, secret-key encryption is often used together with public-key encryption to privately communicate the values of the key and IV.
Предположим, что Анна и Виктор являются двумя сторонами, которые хотят осуществлять связь по незащищенному каналу. Они могли бы воспользоваться шифрованием с закрытым ключом следующим образом. Анна и Виктор соглашаются использовать некоторый определенный алгоритм (например, AES) с определенным ключом и вектором инициализации.Assuming that Alice and Bob are two parties who want to communicate over a nonsecure channel, they might use secret-key encryption as follows: Alice and Bob agree to use one particular algorithm (AES, for example) with a particular key and IV. Алиса формирует сообщение и создает сетевой поток (например, именованный канал или сетевую почту), на который отправляется сообщение.Alice composes a message and creates a network stream (perhaps a named pipe or network email) on which to send the message. Затем она шифрует текст с помощью ключа и вектора инициализации и по интрасети пересылает зашифрованное сообщение и вектор инициализации Виктору.Next, she encrypts the text using the key and IV, and sends the encrypted message and IV to Bob over the intranet. Виктор принимает зашифрованный текст и осуществляет расшифровку, используя ранее согласованные ключ и вектор инициализации.Bob receives the encrypted text and decrypts it by using the IV and previously agreed upon key. Если передача перехватывается, перехватчик не сможет восстановить исходное сообщение, так как он не знает ключ.If the transmission is intercepted, the interceptor cannot recover the original message, because they do not know the key. В этой ситуации в секрете должен сохраняться только ключ.In this scenario, only the key must remain secret. В более реалистичном случае либо Анна, либо Виктор создает закрытый ключ и использует шифрование с открытым ключом (асимметричное) для передачи другой стороне закрытого (симметричного) ключа.In a real world scenario, either Alice or Bob generates a secret key and uses public-key (asymmetric) encryption to transfer the secret (symmetric) key to the other party. Подробнее о шифровании с открытым ключом читайте в следующем разделе.For more information about public-key encryption, see the next section.
.NET предоставляет следующие классы, реализующие алгоритмы шифрования с закрытым ключом:.NET provides the following classes that implement secret-key encryption algorithms:
Aes
HMACSHA256, HMACSHA384 и HMACSHA512.HMACSHA256, HMACSHA384 and HMACSHA512. (Это технически алгоритмы с закрытым ключом, так как они представляют коды проверки подлинности сообщений, вычисляемые с помощью криптографической хэш-функции в сочетании с секретным ключом.(These are technically secret-key algorithms because they represent message authentication codes that are calculated by using a cryptographic hash function combined with a secret key. См. раздел хэш-значениядалее в этой статье.)See Hash Values, later in this article.)
Шифрование с открытым ключомPublic-Key Encryption
При шифровании с открытым ключом используются закрытый ключ, который должен храниться в секрете от неправомочных пользователей, а также открытый ключ, который может предоставляться кому угодно.Public-key encryption uses a private key that must be kept secret from unauthorized users and a public key that can be made public to anyone. Открытый и закрытый ключи математически взаимосвязаны. Данные, зашифрованные с помощью открытого ключа, можно расшифровать исключительно с помощью соответствующего закрытого ключа, а цифровая подпись данных, подписанных с помощью закрытого ключа, может быть проверена только с помощью соответствующего открытого ключа.The public key and the private key are mathematically linked; data that is encrypted with the public key can be decrypted only with the private key, and data that is signed with the private key can be verified only with the public key. Открытый ключ можно предоставить любому лицу; он используется для шифрования данных, которые должны быть отправлены хранителю закрытого ключа.The public key can be made available to anyone; it is used for encrypting data to be sent to the keeper of the private key. Алгоритмы шифрования с открытым ключом также известны как асимметричные алгоритмы, потому что для шифрования данных требуется один ключ, а для расшифровки — другой.Public-key cryptographic algorithms are also known as asymmetric algorithms because one key is required to encrypt data, and another key is required to decrypt data. Основное правило шифрования запрещает повторное использование ключа; оба ключа в каждом сеансе шифрования должны быть уникальными.A basic cryptographic rule prohibits key reuse, and both keys should be unique for each communication session. Однако на практике асимметричные ключи обычно используются подолгу.However, in practice, asymmetric keys are generally long-lived.
Две стороны (Анна и Виктор) могут использовать шифрование с открытым ключом следующим образом. Сначала Анна создает набор, состоящий из открытого и закрытого ключей.Two parties (Alice and Bob) might use public-key encryption as follows: First, Alice generates a public/private key pair. Если Виктор хочет послать Анне зашифрованное сообщение, он запрашивает у нее ее открытый ключ.If Bob wants to send Alice an encrypted message, he asks her for her public key. Анна высылает Виктору свой открытый ключ через незащищенную сеть, и Виктор использует полученный ключ для шифрования своего сообщения.Alice sends Bob her public key over a nonsecure network, and Bob uses this key to encrypt a message. Виктор пересылает зашифрованное сообщение Анне, а она расшифровывает его с помощью своего закрытого ключа.Bob sends the encrypted message to Alice, and she decrypts it by using her private key. Если Виктор получил ключ Анны по незащищенному каналу, например через открытую сеть, он оказывается уязвимым для атак типа «злоумышленник в середине».If Bob received Alice’s key over a nonsecure channel, such as a public network, Bob is open to a man-in-the-middle attack. Поэтому Виктору необходимо убедиться в том, что Анна имеет правильную копию открытого ключа.Therefore, Bob must verify with Alice that he has a correct copy of her public key.
Во время передачи Виктору открытого ключа Анны может произойти несанкционированный перехват ключа третьим лицом.During the transmission of Alice’s public key, an unauthorized agent might intercept the key. Более того, возможна ситуация, что то же самое лицо перехватит зашифрованное сообщение Виктора.Furthermore, the same agent might intercept the encrypted message from Bob. Тем не менее неправомочная сторона не может расшифровать сообщение с помощью открытого ключа.However, the agent cannot decrypt the message with the public key. Сообщение можно расшифровать только с помощью закрытого ключа Анны, который не передавался через какие-либо системы связи.The message can be decrypted only with Alice’s private key, which has not been transmitted. Анна не использует свой закрытый ключ для шифрования ответного сообщения Виктору, потому что любое лицо может расшифровать это сообщение с помощью открытого ключа.Alice does not use her private key to encrypt a reply message to Bob, because anyone with the public key could decrypt the message. Если Анна желает послать Виктору ответное сообщение, она запрашивает у Виктора его открытый ключ и шифрует свое сообщение, используя его.If Alice wants to send a message back to Bob, she asks Bob for his public key and encrypts her message using that public key. Затем Виктор расшифровывает сообщение с помощью своего соответствующего закрытого ключа.Bob then decrypts the message using his associated private key.
В этом случае Анна и Виктор используют шифрование с открытым ключом (асимметричное) для передачи закрытого (симметричного) ключа, а затем пользуются шифрованием с этим закрытым ключом в течение сеанса связи.In this scenario, Alice and Bob use public-key (asymmetric) encryption to transfer a secret (symmetric) key and use secret-key encryption for the remainder of their session.
В списке ниже сравниваются алгоритмы шифрования с открытым и закрытым ключом.The following list offers comparisons between public-key and secret-key cryptographic algorithms:
Алгоритмы шифрования с открытым ключом используют буфер фиксированного размера, в то время как алгоритмы шифрования с закрытым ключом могут использовать буфер переменного размера.Public-key cryptographic algorithms use a fixed buffer size, whereas secret-key cryptographic algorithms use a variable-length buffer.
Алгоритмы шифрования с открытым ключом нельзя использовать для сцепления блоков данных в потоки тем же образом, как в алгоритмах шифрования с закрытым ключом, потому что можно шифровать только маленькие порции данных.Public-key algorithms cannot be used to chain data together into streams the way secret-key algorithms can, because only small amounts of data can be encrypted. Поэтому асимметричные операции не используют такую же потоковую модель, как симметричные операции.Therefore, asymmetric operations do not use the same streaming model as symmetric operations.
Шифрование с открытым ключом имеет намного большее пространство ключей (диапазон возможных значений ключа), чем шифрование с закрытым ключом.Public-key encryption has a much larger keyspace (range of possible values for the key) than secret-key encryption. Поэтому такое шифрование менее уязвимо к атакам полного перебора, когда проверяются все возможные значения ключа.Therefore, public-key encryption is less susceptible to exhaustive attacks that try every possible key.
Открытые ключи можно легко распространять, так как они не требуют особой защиты при условии, что существует некий способ установления подлинности источника.Public keys are easy to distribute because they do not have to be secured, provided that some way exists to verify the identity of the sender.
Некоторые алгоритмы шифрования с открытым ключом (такие как RSA и DSA, но не Диффи-Хелмана) можно использовать для создания цифровых подписей, служащих для подтверждения подлинности лица, от которого исходят данные.Some public-key algorithms (such as RSA and DSA, but not Diffie-Hellman) can be used to create digital signatures to verify the identity of the sender of data.
Алгоритмы шифрования с открытым ключом являются весьма медленными по сравнению с алгоритмами шифрования с закрытым ключом и не предназначены для шифрования больших объемов данных.Public-key algorithms are very slow compared with secret-key algorithms, and are not designed to encrypt large amounts of data. Использование шифрования с открытым ключом имеет смысл только при передаче очень малых массивов данных.Public-key algorithms are useful only for transferring very small amounts of data. Обычно шифрование с открытым ключом применяется для того, чтобы зашифровать ключ и вектор инициализации, которые будут использоваться при шифровании с закрытым ключом.Typically, public-key encryption is used to encrypt a key and IV to be used by a secret-key algorithm. После передачи ключа и вектора инициализации используется уже шифрование с закрытым ключом.After the key and IV are transferred, secret-key encryption is used for the remainder of the session.
.NET предоставляет следующие классы, реализующие алгоритмы с открытым ключом:.NET provides the following classes that implement public-key algorithms:
RSA допускает шифрование и подписывание, но DSA можно использовать только для подписывания.RSA allows both encryption and signing, but DSA can be used only for signing. DSA не так безопасен, как RSA, и мы рекомендуем RSA.DSA is not as secure as RSA, and we recommend RSA. Diffie-Hellman можно использовать только для создания ключей.Diffie-Hellman can be used only for key generation. В целом, алгоритмы с открытым ключом имеют более ограниченную сферу применения, чем алгоритмы с закрытым ключом.In general, public-key algorithms are more limited in their uses than private-key algorithms.
цифровые подписи.Digital Signatures
Алгоритмы шифрования с открытым ключом также можно использовать для создания цифровых подписей.Public-key algorithms can also be used to form digital signatures. Цифровые подписи удостоверяют подлинность источника данных (если вы доверяете открытому ключу источника) и защищают целостность данных.Digital signatures authenticate the identity of a sender (if you trust the sender’s public key) and help protect the integrity of data. С помощью открытого ключа, созданного Анной, получатель отправленных ею данных может проверить, что их источником действительно является Анна, сравнив цифровую подпись полученных данных с открытым ключом Анны.Using a public key generated by Alice, the recipient of Alice’s data can verify that Alice sent it by comparing the digital signature to Alice’s data and Alice’s public key.
Чтобы использовать шифрование с открытым ключом для создания цифровой подписи сообщения, Анна сначала применяет к этому сообщению хэш-алгоритм, который создает хэш сообщения.To use public-key cryptography to digitally sign a message, Alice first applies a hash algorithm to the message to create a message digest. Хэш сообщения является компактным и уникальным представлением данных.The message digest is a compact and unique representation of data. Для создания своей личной цифровой подписи Анна шифрует хэш сообщения с помощью своего закрытого ключа.Alice then encrypts the message digest with her private key to create her personal signature. При получении сообщения и цифровой подписи Виктор расшифровывает подпись с помощью открытого ключа Анны, восстанавливая хэш сообщения, а затем хэширует сообщение с помощью того же алгоритма, который использовала Анна.Upon receiving the message and signature, Bob decrypts the signature using Alice’s public key to recover the message digest and hashes the message using the same hash algorithm that Alice used. Если вычисленный Виктором хэш в точности совпадает с хэшем, полученным от Анны, Виктор может быть уверен в том, что сообщение пришло действительно от владельца закрытого ключа и что данные в нем не были изменены.If the message digest that Bob computes exactly matches the message digest received from Alice, Bob is assured that the message came from the possessor of the private key and that the data has not been modified. Если Виктор уверен, что именно Анна владеет закрытым ключом, он удостоверяется в том, что сообщение пришло от нее.If Bob trusts that Alice is the possessor of the private key, he knows that the message came from Alice.
Примечание
Цифровая подпись может быть проверена любым лицом, потому что открытый ключ отправителя является общедоступным и обычно включается в формат цифровой подписи.A signature can be verified by anyone because the sender’s public key is common knowledge and is typically included in the digital signature format. Рассматриваемый метод не обеспечивает секретности сообщения; для обеспечения секретности его следует еще и зашифровать.This method does not retain the secrecy of the message; for the message to be secret, it must also be encrypted.
.NET предоставляет следующие классы, реализующие алгоритмы цифровых подписей:.NET provides the following classes that implement digital signature algorithms:
Хэш-значенияHash Values
Хэш-алгоритмы преобразуют двоичные последовательности произвольной длины в двоичные последовательности фиксированного меньшего размера, известные как хэш-значения.Hash algorithms map binary values of an arbitrary length to smaller binary values of a fixed length, known as hash values. Хэш-значение является числовым представлением порции данных.A hash value is a numerical representation of a piece of data. Если в хэшированном абзаце текста изменяется хотя бы одна буква, результат хэширования также меняется.If you hash a paragraph of plaintext and change even one letter of the paragraph, a subsequent hash will produce a different value. Если хэш является криптостойким, его значение значительно изменится.If the hash is cryptographically strong, its value will change significantly. Например, если изменяется один бит сообщения, результат выполнения криптостойкой хэш-функции может отличаться на 50 %.For example, if a single bit of a message is changed, a strong hash function may produce an output that differs by 50 percent. Несколько входных значений могут преобразовываться в один хэш-код.Many input values may hash to the same output value. Однако в вычислительном плане немыслимо найти два разных входных набора данных, результаты хэширования которых полностью совпадают.However, it is computationally infeasible to find two distinct inputs that hash to the same value.
Две стороны (Анна и Виктор) могут использовать хэш-функцию для проверки целостности сообщений.Two parties (Alice and Bob) could use a hash function to ensure message integrity. Им нужно выбрать хэш-алгоритм для подписывания сообщений.They would select a hash algorithm to sign their messages. Анна будет писать сообщение, а затем создавать его хэш с помощью выбранного алгоритма.Alice would write a message, and then create a hash of that message by using the selected algorithm. Затем стороны могут применять один из указанных ниже вариантов дальнейших действий.They would then follow one of the following methods:
Анна отправляет Виктору сообщение с открытым текстом и хэш сообщения (цифровую подпись).Alice sends the plaintext message and the hashed message (digital signature) to Bob. Виктор получает сообщение, применяет к нему хэш-алгоритм и сравнивает свое значение хэша со значением, полученным от Анны.Bob receives and hashes the message and compares his hash value to the hash value that he received from Alice. Если хэш-значения совпадают, значит, данные не изменялись.If the hash values are identical, the message was not altered. Если хэш-значения не совпадают, значит, данные изменялись после создания.If the values are not identical, the message was altered after Alice wrote it.
К сожалению, этот способ не позволяет установить подлинность отправителя.Unfortunately, this method does not establish the authenticity of the sender. Любой человек может выдавать себя за Анну и отправлять сообщения Виктору.Anyone can impersonate Alice and send a message to Bob. Для этого достаточно подписывать сообщения с помощью такого же хэш-алгоритма, и Виктор сможет лишь проверить, соответствует ли сообщение подписи.They can use the same hash algorithm to sign their message, and all Bob can determine is that the message matches its signature. Это одна из форм атаки «злоумышленник в середине».This is one form of a man-in-the-middle attack. Дополнительные сведения см. в статье Пример защищенного обмена данными для криптографии следующего поколения (CNG).For more information, see Cryptography Next Generation (CNG) Secure Communication Example.
Анна отправляет Виктору сообщение с открытым текстом по незащищенному открытому каналу.Alice sends the plaintext message to Bob over a nonsecure public channel. По защищенному закрытому каналу она оправляет Виктору хэш сообщения.She sends the hashed message to Bob over a secure private channel. Виктор получает сообщение с открытым текстом, хэширует его и сравнивает хэш со значением, полученным по закрытому каналу.Bob receives the plaintext message, hashes it, and compares the hash to the privately exchanged hash. Если хэши совпадают, Виктор может сделать два вывода:If the hashes match, Bob knows two things:
сообщение не было изменено;The message was not altered.
отправитель сообщения подлинный (Анна).The sender of the message (Alice) is authentic.
Для того чтобы такая система работала, Анна должна скрывать оригинальное хэш-значение от всех, кроме Виктора.For this system to work, Alice must hide her original hash value from all parties except Bob.
Анна по незащищенному открытому каналу отправляет Виктору сообщение в виде открытого текста, а хэш сообщения помещает на свой общедоступный веб-сайт.Alice sends the plaintext message to Bob over a nonsecure public channel and places the hashed message on her publicly viewable Web site.
Такой подход позволяет защититься от изменения хэша третьей стороной.This method prevents message tampering by preventing anyone from modifying the hash value. Хотя сообщение и его хэш могут видеть все, изменить хэш может только Анна.Although the message and its hash can be read by anyone, the hash value can be changed only by Alice. Злоумышленнику, который хочет выдать себя за Анну, потребуется доступ к её веб-сайту.An attacker who wants to impersonate Alice would require access to Alice’s Web site.
Ни один из описанных выше способов не защищает Анну от чтения ее сообщений третьими лицами, так как сообщения передаются в виде открытого текста.None of the previous methods will prevent someone from reading Alice’s messages, because they are transmitted in plaintext. Для обеспечения полной защиты обычно требуется использовать цифровые подписи и шифрование.Full security typically requires digital signatures (message signing) and encryption.
.NET предоставляет следующие классы, реализующие алгоритмы хэширования:.NET provides the following classes that implement hashing algorithms:
.NET также предоставляет MD5 и SHA1 ..NET also provides MD5 and SHA1. Но алгоритмы MD5 и SHA-1 были бы небезопасными, и вместо этого рекомендуется использовать SHA-2.But the MD5 and SHA-1 algorithms have been found to be insecure, and SHA-2 is now recommended instead. SHA-2 включает SHA256, SHA384 и SHA512.SHA-2 includes SHA256, SHA384, and SHA512.
генерация случайных чиселRandom Number Generation
Генерация случайных чисел является неотъемлемой частью многих криптографических операций.Random number generation is integral to many cryptographic operations. Например, криптографические ключи должны выбираться настолько случайно, насколько это возможно, чтобы было фактически невозможно воспроизвести их значения.For example, cryptographic keys need to be as random as possible so that it is infeasible to reproduce them. Криптографические генераторы случайных чисел должны генерировать результат, который нельзя предсказать вычислительными методами с вероятностью хотя бы 50 %.Cryptographic random number generators must generate output that is computationally infeasible to predict with a probability that is better than one half. Поэтому все методы предсказания очередного случайного бита не должны быть точнее, чем простое угадывание.Therefore, any method of predicting the next output bit must not perform better than random guessing. Классы в .NET используют генераторы случайных чисел для создания криптографических ключей.The classes in .NET use random number generators to generate cryptographic keys.
Класс RandomNumberGenerator является реализацией алгоритма генерации случайных чисел.The RandomNumberGenerator class is an implementation of a random number generator algorithm.
Манифесты ClickOnceClickOnce Manifests
Следующие криптографические классы позволяют получать и проверять сведения о подписанных манифестах для приложений, развернутых с помощью технологии ClickOnce:The following cryptography classes let you obtain and verify information about manifest signatures for applications that are deployed using ClickOnce technology:
Кроме того, перечисленные ниже классы предоставляют сведения о конкретных подписях.In addition, the following classes provide specific signature information:
Классы криптографии следующего поколения (CNG)Cryptography Next Generation (CNG) Classes
Классы криптографии следующего поколения (CNG) предоставляют управляемую оболочку для собственных функций CNG.The Cryptography Next Generation (CNG) classes provide a managed wrapper around the native CNG functions. (CNG является заменой CryptoAPI.) Эти классы имеют «CNG» как часть своих имен.(CNG is the replacement for CryptoAPI.) These classes have «Cng» as part of their names. Центральным в группе классов оболочек CNG является класс контейнера ключей CngKey , который абстрагирует хранение и использование ключей CNG.Central to the CNG wrapper classes is the CngKey key container class, which abstracts the storage and use of CNG keys. Этот класс позволяет безопасно хранить пару ключей или открытый ключ и ссылаться на него, используя простое строковое имя.This class lets you store a key pair or a public key securely and refer to it by using a simple string name. Класс цифровых подписей ECDsaCng и класс шифрования ECDiffieHellmanCng на основе эллиптических кривых используют объекты CngKey .The elliptic curve-based ECDsaCng signature class and the ECDiffieHellmanCng encryption class can use CngKey objects.
Класс CngKey используется для множества дополнительных операций, включая открытие, создание, удаление и экспорт ключей.The CngKey class is used for a variety of additional operations, including opening, creating, deleting, and exporting keys. Он также предоставляет доступ к базовому дескриптору ключа, используемому при непосредственном вызове собственных функций.It also provides access to the underlying key handle to use when calling native functions directly.
.NET также включает множество вспомогательных классов CNG, таких как следующие:.NET also includes a variety of supporting CNG classes, such as the following:
CngProvider поддерживает поставщика хранилища ключей.CngProvider maintains a key storage provider.
CngAlgorithm поддерживает алгоритм CNG.CngAlgorithm maintains a CNG algorithm.
CngProperty поддерживает часто используемые свойства ключей.CngProperty maintains frequently used key properties.
См. также статьюSee also
Простейшие методы шифрования текста
Методы: объяснительно-иллюстративный,
частично-поисковый.
Цели.
- Создать условия для повышения познавательного
интереса к предмету. - Способствовать развитию
аналитико-синтезирующего мышления. - Способствовать формированию умений и навыков,
носящих общенаучный и обще интеллектуальный
характер.
Задачи:
образовательные:
- обобщить и систематизировать знания основных
понятий: код, кодирование, криптография; - познакомится с простейшими способами
шифрования и их создателями; - отрабатывать умения читать шифровки и
шифровать информацию;
развивающие:
- развивать познавательную деятельность и
творческие способности учащихся; - формировать логическое и абстрактное мышление;
- развивать умение применять полученные знания в
нестандартных ситуациях; - развивать воображение и внимательность;
воспитательные:
- воспитывать коммуникативную культуру;
- развивать познавательный интерес.
Предлагаемая разработка может быть
использована для учащихся 7–9 классов.
Презентация помогает сделать материал наглядным
и доступным.
Общество, в котором живёт человек, на
протяжении своего развития имеет дело с
информацией. Она накапливается,
перерабатывается, хранится, передаётся. (Слайд 2. Презентация)
А все ли и всегда должны знать всё?
Конечно, нет.
Люди всегда стремились скрыть свои секреты.
Сегодня вы познакомитесь с историей развития
тайнописи, узнаете простейшие способы
шифрования. У вас появится возможность
расшифровать послания.
Простые приемы шифрования применялись и
получили некоторое распространение уже в эпоху
древних царств и в античности.
Тайнопись – криптография — является ровесницей
письменности. История криптографии насчитывает
не одно тысячелетие. Идея создания текстов с
тайным смыслом и зашифрованными сообщениями
почти так же стара, как и само искусство письма.
Этому есть много свидетельств. Глиняная табличка
из Угарита (Сирия) – упражнения обучающие
искусству расшифровки (1200 год до н.э.).
“Вавилонская теодицея” из Ирака – пример
акростиха (середина II тысячелетия до н.э.).
Один из первых систематических шифров был
разработан древними евреями; этот метод
называется темура — “обмен”.
Самый простой из них “Атбаш”, алфавит
разделялся посередине так, чтобы первые две
буквы, А и Б, совпадали с двумя последними, Т и Ш.
Использование шифра темура можно обнаружить
в Библии. Это пророчество Иеремии,
сделанное в начале VI века до нашей эры,
содержит проклятие, всем правителям мира,
заканчивая “царем Сесаха” который при
дешифровки с шифра “Атбаш” оказывается царём
Вавилона.
(Слайд 3) Более хитроумный способ шифрования был
изобретён в древней Спарте во времена Ликурга
(V век до н.э.) Для зашифровывания текста
использовалась Сциталла — жезл цилиндрической
формы, на который наматывалась лента из
пергамента. Вдоль оси цилиндра построчно
записывался текст, лента сматывалась с жезла и
передавалась адресату, имеющему Сциталлу такого
же диаметра. Этот способ осуществлял
перестановку букв сообщения. Ключом шифра служил
диаметр Сциталлы. АРИСТОТЕЛЬ придумал метод
вскрытия такого шифра. Он изобрёл дешифровальное
устройство “Антисциталла”.
(Слайд 4) Задание “Проверь себя”
(Слайд 5) Греческий писатель ПОЛИБИЙ
использовал систему сигнализации, которая
применялась как метод шифрования. С его помощью
можно было передавать абсолютно любую
информацию. Он записывал буквы алфавита в
квадратную таблицу и заменял их координатами.
Устойчивость этого шифра была велика. Основной
причиной этого являлась возможность постоянно
менять последовательность букв в квадрате.
(Слайд 6) Задание “Проверь себя”
(Слайд 7) Особую роль в сохранении тайны сыграл
способ шифрования, предложенный ЮЛИЕМ ЦЕЗАРЕМ и
описанный им в “Записках о галльской войне.
(Слайд 8) Задание “Проверь себя”
(Слайд 9) Существует несколько модификаций
шифра Цезаря. Один из них алгоритм шифра
Гронсфельда (созданный в 1734 году бельгийцем Хосе
де Бронкхором, графом де Гронсфельд, военным и
дипломатом). Шифрование заключается в том, что
величина сдвига не является постоянной, а
задается ключом (гаммой).
(Слайд 10) Для того, кто передаёт шифровку, важна
её устойчивость к дешифрованию. Эта
характеристика шифра называется
криптостойкостью. Повысить криптостойкость
позволяют шифры много алфавитной или
многозначной замены. В таких шифрах каждому
символу открытого алфавита ставятся в
соответствие не один, а несколько символов
шифровки.
(Слайд 11) Научные методы в криптографии впервые
появились в арабских странах. Арабского
происхождения и само слово шифр (от арабского
«цифра»). Арабы первыми стали заменять буквы
цифрами с целью защиты исходного текста. О
тайнописи и её значении говорится даже в сказках
“Тысячи и одной ночи”. Первая книга, специально
посвящённая описанию некоторых шифров,
появилась в 855 г., она называлась “Книга о большом
стремлении человека разгадать загадки древней
письменности”.
(Слайд 12) Итальянский математик и философ
ДЖЕРОЛАМО КАРДАНО написал книгу «О
тонкостях», в которой имеется часть,
посвященная криптографии.
Его вклад в науку криптография содержит два
предложения:
Первое — использовать открытый текст в
качестве ключа.
Второе — он предложил шифр, называемый ныне
«Решетка Кардано».
Кроме данных предложений Кардано дает
«доказательство» стойкости шифров,
основанное на подсчете числа ключей.
Решётка Кардано представляет собой лист из
твердого материала, в котором через неправильные
интервалы сделаны прямоугольные вырезы высотой
для одной строчки и различной длины. Накладывая
эту решетку на лист писчей бумаги, можно было
записывать в вырезы секретное сообщение.
Оставшиеся места заполнялись произвольным
текстом, маскирующим секретное сообщение. Этим
методом маскировки пользовались многие
известные исторические лица, кардинал Ришелье во
Франции и русский дипломат А. Грибоедов. На
основе такой решетки Кардано построил шифр
перестановки.
(Слайд 13) Задание “Проверь себя”
(Слайд 14) Увлекались тайнописью и в России.
Используемые шифры — такие же, как в западных
странах — значковые, замены, перестановки.
Датой появления криптографической службы в
России следует считать 1549 год (царствование
Ивана IV), с момента образования «посольского
приказа», в котором имелось «цифирное
отделение».
Петр I полностью реорганизовал
криптографическую службу, создав «Посольскую
канцелярию». В это время применяются для
шифрования коды, как приложения к «цифирным
азбукам». В знаменитом «деле царевича
Алексея» в обвинительных материалах
фигурировали и «цифирные азбуки».
(Слайд 15) Задание “Проверь себя”
(Слайд 16) Много новых идей в криптографии принес
XIX век. ТОМАС ДЖЕФФЕРСОН создал шифровальную
систему, занимающую особое место в истории
криптографии — «дисковый шифр». Этот шифр
реализовывался с помощью специального
устройства, которое впоследствии назвали
шифратором Джефферсона.
В 1817 г. ДЕСИУС УОДСВОРТ сконструировал
шифровальное устройство, которое внесло новый
принцип в криптографию. Нововведение состояло в
том, что он сделал алфавиты открытого и
шифрованного текстов различных длин. Устройство,
с помощью которого он это осуществил,
представляло собой диск, с двумя подвижными
кольцами с алфавитами. Буквы и цифры внешнего
кольца были съемными и могли собираться в любом
порядке. Эта шифрсистема реализует
периодическую многоалфавитную замену.
(Слайд 17) Способов кодирования информации можно
привести много.
Капитан французской армии ШАРЛЬ БАРБЬЕ
разработал в 1819 году систему кодирования ecriture
noctrume – ночное письмо. В системе применялись
выпуклые точки и тире, недостаток системы её
сложность, так как кодировались не буквы, а звуки.
ЛУИ БРАЙЛЬ усовершенствовал систему,
разработал собственный шифр. Основы этой системы
используются поныне.
(Слайд 18) СЭМЮЕЛЬ МОРЗЕ разработал в 1838 году
систему кодирования символов с помощью точки и
тире. Он же является изобретателем телеграфа
(1837год) – устройства в котором использовалась
эта система. Самое важное в этом изобретении –
двоичный код, то есть использованием для
кодирования букв только двух символов.
(Слайд 19) Задание “Проверь себя”
(Слайд 20) В конце XIX века криптография
начинает приобретать черты точной науки, а не
только искусства, ее начинают изучать в военных
академиях. В одной из них был разработан свой
собственный военно-полевой шифр, получивший
название «Линейка Сен-Сира». Она позволила
существенно повысить эффективность труда
шифровальщика, облегчить алгоритм реализации
шифра Виженера. Именно в этой механизации
процессов шифрования-дешифрования и заключается
вклад авторов линейки в практическую
криптографию.
В истории криптографии XIX в. ярко
запечатлелось имя ОГЮСТА КЕРКГОФФСА. В 80-х годах
XIX века издал книгу «Военная криптография»
объемом всего в 64 страницы, но они обессмертили
его имя в истории криптографии. В ней
сформулированы 6 конкретных требований к шифрам,
два из которых относятся к стойкости шифрования,
а остальные — к эксплуатационным качествам. Одно
из них («компрометация системы не должна
причинять неудобств корреспондентам») стало
называться «правилом Керкгоффса». Все эти
требования актуальны и в наши дни.
В XX веке криптография стала
электромеханической, затем электронной. Это
означает, что основными средствами передачи
информации стали электромеханические и
электронные устройства.
(Слайд 21) Во второй половине XX века, вслед за
развитием элементной базы вычислительной
техники, появились электронные шифраторы.
Сегодня именно электронные шифраторы составляют
подавляющую долю средств шифрования. Они
удовлетворяют все возрастающим требованиям по
надежности и скорости шифрования.
В семидесятых годах произошло два события,
серьезно повлиявших на дальнейшее развитие
криптографии. Во-первых, был принят (и
опубликован!) первый стандарт шифрования данных
(DES), «легализовавший» принцип Керкгоффса в
криптографии. Во-вторых, после работы
американских математиков У. ДИФФИ и М. ХЕЛЛМАНА
родилась «новая криптография»—
криптография с открытым ключом.
(Слайд 22) Задание “Проверь себя”
(Слайд 23) Роль криптографии будет возрастать в
связи с расширением ее областей приложения:
- цифровая подпись,
- аутентификация и подтверждение подлинности и
целостности электронных документов, - безопасность электронного бизнеса,
- защита информации, передаваемой через интернет
и др.
Знакомство с криптографией потребуется
каждому пользователю электронных средств обмена
информацией, поэтому криптография в будущем
станет «третьей грамотностью» наравне со
«второй грамотностью» — владением
компьютером и информационными технологиями.
encryption — Как зашифровать текст с помощью CRC32
Насколько я знаю, CRC32 — это код, обнаруживающий ошибки.
Я не использовал его раньше, но я получаю некоторую задачу использовать CRC32 для шифрования текста.
Можно ли использовать CRC32 для шифрования?
0
Yanshof
21 Мар 2019 в 14:06
2 ответа
Лучший ответ
Как уже отмечалось, CRC является линейным и легко обратимым, что именно то, что вы не хотите для безопасного шифрования.
Однако можно кодировать данные с помощью CRC, если для этого была какая-то причина. Например, вы можете взять четыре байта данных, вычислить CRC-32 из этих данных и передать CRC-32 вместо данных. Повторите для следующих четырех байтов. Этот CRC-32 можно легко перевернуть, чтобы получить исходные четыре байта.
Я понятия не имею, почему это может быть полезно, но это может быть сделано.
2
Mark Adler
21 Мар 2019 в 23:28
я получаю некоторую задачу использовать CRC32 для шифрования текста.
Как уже отмечалось, crc32 — это контрольная сумма, даже не криптографический хеш. Это означает, что ему не хватает важных функций для использования в криптографии
Предположим (неправильно), что вы можете использовать crc32 в качестве хеш-функции.
Теоретически (длинный выстрел) вы можете создать потоковый шифр e. грамм. хеширование цепочки ключ. Вы можете зашифровать данные с ним. Просто я уверен, что решение будет недостаточно безопасным. (даже сейчас я любитель, и я вполне уверен, что вижу несколько векторов атаки на таком шифре, crc32 просто слишком линейный)
2
gusto2
21 Мар 2019 в 11:43
Стойкие шифры
Как зашифровать сообщение так, чтобы его никто не сумел прочитать? В детективных романах нам предлагают немало способов, но, оказывается, практически все из них ненадёжны с точки зрения математика. Однако те же математики придумали «совершенный» шифр, взломать который невозможно. Как же он устроен?
Шифры замены
Обычные шифры из детективных романов часто устроены так: каждая буква сообщения заменяется каким-нибудь определённым значком или другой буквой. Подобные шифры очень ненадёжны, и вот почему. Буквы в текстах на русском языке (да и на любом языке вообще) встречаются неравномерно. Например, буква «О» в русских текстах встречается чаще всех других букв, а буква «Ъ» – реже всего. У каждой буквы есть своя примерная частота появления в тексте.
Сочетания букв тоже встречаются неравномерно (например, «ьь» вообще не встречается). Конечно, все эти частоты зависят от конкретного текста – скажем, в биологической статье о жужелицах буква «ж» явно будет встречаться чаще, чем обычно.
Так вот, описанный способ шифровки не изменяет частот – просто теперь с аналогичной частотой будет появляться не сама буква, а заменяющий её значок. Высчитав частоту появления каждого значка в шифровке и сравнив полученные данные с таблицей частот, мы можем сделать предположения, какой букве какой значок соответствует. Далее пробуем заменять значки один за одним на буквы, проверяя свои догадки, корректируя их и делая новые, и постепенно расшифровываем текст. Если он не слишком короткий, мы с большой вероятностью его полностью расшифруем (хотя это может оказаться не совсем простым делом). Кстати, намного чаще любой буквы встречается пробел, разделяющий слова. Поэтому если пробел используется в шифровке и тоже заменён на какой-то значок, мы разгадаем его в первую очередь.
Совершенный шифр
Опишем теперь шифр, который принципиально не поддается расшифровке без знания ключа. Сопоставим каждой букве русского алфавита свою последовательность из 0 и 1 длины 5 (пятизначный двоичный код), например: А – 00000, Б – 00001, В – 00010 и так далее (или в каком-то другом порядке). Если буквы Е и Ё кодировать одинаково, то последовательностей как раз хватит (их 32, а в алфавите 33 буквы).
Заменим в тексте каждую букву на её двоичный код, получим последовательность из 0 и 1 (двоичный текст). Это пока ещё не шифровка – мы бы легко разгадали, какая буква на какую последовательность заменена (тем же методом, что и в случае замены букв на значки).
Чтобы зашифровать полученный двоичный текст, нам потребуется ещё ключ – случайная последовательность из 0 и 1 такой же длины. Этот ключ должен быть и у отправителя шифрованного сообщения, и у адресата.
Для зашифровки просто складываем две последовательности нулей и единиц – двоичный текст сообщения и ключ: первую цифру с первой, вторую со второй, и так далее. Но складываем по особым правилам:
0 + 0 = 0, 1 + 0 = 1, 0 + 1 = 1, 1 + 1 = 0
(в математике это называется сложением по модулю 2).
Полученная последовательность и будет зашифрованным сообщением. Чтобы расшифровать её, надо просто… снова прибавить к ней ключ! Тогда мы как бы прибавим к исходной последовательности ключ два раза. А по нашим правилам, прибавляя две одинаковые цифры мы ничего не меняем, то есть мы вернёмся к исходному двоичному тексту. Схематически процесс шифрования и дешифрования можно описать так:
текст + ключ = шифровка; шифровка + ключ = текст + ключ + ключ = текст.
Ясно, что расшифровать сообщение, не зная ключа, невозможно. Нам как бы дана сумма двух чисел, и нельзя восстановить одно из слагаемых, ничего не зная про другое. Имея на руках лишь шифровку, мы знаем только, что исходный текст может быть абсолютно любым текстом соответствующей длины. Ведь по любому такому тексту можно изготовить ключ, который приведёт ровно к той же самой шифровке!
Недостаток описанного способа в том, что каждый текст требует нового ключа такой же длины – если повторять ключи, появляется возможность расшифровки. Например, мы могли бы попробовать вместо длинного ключа использовать ключ всего из пяти символов, скажем 11010. Разбиваем двоичный текст на пятёрки цифр и прибавляем к каждой пятёрке 11010. Фактически, мы просто заменяем каждую пятёрку цифр на какуюто другую фиксированную пятёрку. В этом случае расшифровать исходный текст так же легко, как если бы мы просто заменили его двоичным кодом, не прибавляя никакого ключа. Использовать длинные ключи, но всё же существенно более короткие, чем текст, тоже опасно – есть метод определения длины ключа, а после того как длина ключа установлена, можно применить частотный анализ.
Поэтому надо заготовить ключ огромной длины заранее и лишь указывать, например, в начале шифровки, какое место ключа используется. При этом очень важно, чтобы ключ был случайной последовательностью из 0 и 1. Например, последовательности 11111111111111111 и 010101010101010 не случайные. Кстати, придумать случайную последовательность не так-то просто. Трудно даже (но возможно) дать чёткое определение, какие последовательности могут считаться случайными.
Немного истории и литературы
Подобный шифр использовал Макс Кристиансен Клаузен, шифровальщик выдающегося советского разведчика Рихарда Зорге. Наиболее часто употребляемые буквы английского алфавита s, i, o, e, r, a, t, n заменялись цифрами от 0 до 7, а остальные буквы – числами от 80 до 99 (чтобы не возникало путаницы, когда числа записывались подряд). Ключом служили старые выпуски «Статистического ежегодника Германского рейха» с множеством числовых данных. Ключ записывали под текстом и прибавляли, причём если сумма двух цифр превышала 10, то записывалась только её последняя цифра. Например, вместо 7 + 5 писали 2, отбрасывая десяток (в математике это называется сложением по модулю 10). Восстанавливали исходное сообщение, «вычитая» ключ из шифровки. Когда выходило отрицательное число, как скажем при вычитании 5 из 2, было ясно, что надо вычитать из числа на 10 больше, то есть из 12 – вот и получали 7.
Японские тайные службы перехватили много радиограмм Зорге, но ни одной не сумели расшифровать. Более полный рассказ об этом читайте в замечательной книге Юлиуса Мадера «Репортаж о докторе Зорге».
А герой приключенческих романов Юлиана Семёнова «Семнадцать мгновений весны» и «Приказано выжить» разведчик Штирлиц, больше известный нам по знамениту кинофильму, использовал в качестве ключа художественную книгу Монтеня. При этом осмысленный текст сообщения«складывался» с осмысленным же (и значит, не случайным!) текстом ключа. Когда германским контрразведчикам стало известно предпор лагаемое содержание одной из шифровок, в частности – некоторые слова, которые там могли встречаться, – они попробовали их подставить в разные места шифровки и посмотреть, какой получается ключ. Попав в нужное место, они открывали кусочек ключа, в котором угадывались части осмысленных слов. Восстанавливая эти слова, они раскрывали и новый кусочек шифровки, и так постепенно расшифровали её.
Шифры с открытым ключом
Начиная с 1977 года, стали появляться новые шифры, основанные на глубоких математических идеях, высказанных американскими математиками Диффи и Хеллманом за два года до этого. Представьте себе, что два бизнесмена хотят переписываться друг с другом, надёжно шифруя сообщения, но забыли договориться о ключе. Они находятся в разных странах, всё их общение может прослушиваться конкурентами. Как тут быть? Оказывается, выходы есть. Опишем один из них, но без подробностей, только сам принцип.
Придуман способ шифровки, для которого надо знать лишь произведение pq двух каких-то простых чисел p и q, а сами числа p и q знать не нужно. А вот для расшифровки сообщения обязательно иметь в распоряжении и число p, и число q. «Ну и что тут такого?», – спросите вы. А вот что. Дело в том, что эти простые числа можно взять очень большими. И тут мы сталкиваемся с таким явлением: современные компьютерные мощности огромны, но всё же ограничены. Скажем, компьютер может за разумное время разложить на простые множители 200-значное число, но раскладывание 300-значных чисел ему уже не под силу (любому из известных алгоритмов потребуются многие годы). Всегда есть какая-то подобная граница. А выяснить про число, простое оно или нет, компьютеры могут очень быстро для гораздо более длинных чисел. Так вот, первый из компаньонов может с помощью компьютера найти какие-нибудь два, скажем, 400-значных простых числа p и q, перемножить их и открыто переслать результат второму (а сами числа p и q хранить в тайне). Получив произведение pq, тот зашифрует своё сообщение и отправит обратно первому. И первый его легко расшифрует – он-то знает оба числа p и q. А вот всяким там подслушивателям для расшифровки придётся сначала разложить на множители произведение pq, в котором 800 знаков – а с этим не справится ни один современный компьютер! Этот метод шифровки называется RSA, по первым буквам фамилий его создателей – Ривеста, Шамира и Адлемана.
Конечно, с развитием компьютерных технологий появляется возможность расшифровывать старые сообщения. Первая шифровка авторов RSA, опубликованная ими в 1977 году как вызов всем дешифровальщикам мира, продержалась 17 лет. Также есть опасность, что будет найден новый, быстрый алгоритм разложения чисел на простые множители. Но есть математическая гипотеза, что все такие алгоритмы работают принципиально не быстрее, чем уже известные.
Как зашифровать текстовые сообщения в 2021 году: личный обмен сообщениями
6 лучших приложений для зашифрованных сообщений на Android, iOS и др.
Чтобы начать отправлять зашифрованные сообщения, вам понадобится приложение, которое может это сделать. Те, кто в нашем списке, придерживаются аналогичных подходов к безопасности и конфиденциальности. Протоколы шифрования работают в фоновом режиме, позволяя вам сосредоточиться на своих сообщениях, что в основном аналогично отправке обычного текстового сообщения. Разобравшись с этим, давайте посмотрим на них.
1.Сигнал
Signal — одно из лучших доступных приложений для обмена зашифрованными сообщениями.
- Доступно на iOS , Android , Windows 10 , MacOS , Linux
Плюсов:
- Стандартное сквозное шифрование, даже в групповых звонках
- Полностью открытый исходный код
- Одобрено многими уважаемыми защитниками конфиденциальности
Минусы:
- Требуется номер телефона
- Не поддерживает несколько устройств в одной учетной записи
The Signal Technology Foundations — ранее известная как Open Whisper Systems — не только создала Signal, но и создала свой собственный протокол сквозного шифрования.Этот протокол использует не только Signal, но и WhatsApp, частные разговоры в Skype и многое другое.
Signal — это проект с открытым исходным кодом, поддерживаемый грантами и пожертвованиями. Без необходимости использовать ваши данные для продажи рекламного места с целью получения прибыли, вы можете быть уверены, что Signal сохраняет все в тайне. Поскольку это открытый исходный код, в чем вы, очевидно, можете убедиться сами, эксперты по безопасности могут проанализировать его на наличие уязвимостей и другого отрывочного кода.
В отличие от некоторых других приложений для обмена зашифрованными сообщениями, информация, которую хранит Signal, весьма ограничена.Помимо вашего номера телефона и последней даты подключения, он стирает практически все остальное как можно скорее. Вот почему многие журналисты и другие эксперты, включая Эдварда Сноудена, считают Signal лучшим приложением для обмена сообщениями для обеспечения конфиденциальности пользователей.
2. WhatsApp
WhatsApp — одно из самых известных приложений для безопасного обмена сообщениями.
- Доступно на iOS , Android , Windows 10 , MacOS
Плюсов:
- Более миллиарда активных пользователей в день
- Невероятно простой в использовании
- Использует протокол шифрования сигнала
Минусы:
- Собирает много метаданных
- Внесены сомнительные изменения в политику конфиденциальности
Более миллиарда человек используют WhatsApp для отправки сообщений, но некоторые пользователи могут не знать, что Facebook купил его в 2014 году.После скандала Facebook с Cambridge Analytica предоставление данных гиганту социальных сетей может быть не в ваших интересах, особенно с учетом изменений в политике конфиденциальности, которые позволяют Facebook использовать данные, которые собирает WhatsApp.
Тем не менее, WhatsApp по умолчанию использует сквозное шифрование — фактически протокол Signal — но не шифрует с его помощью метаданные. Эти метаданные показывают, как вы используете приложение, например, когда вы в сети и как часто отправляете сообщения, что может быть проблемой для конфиденциальности.
Однако фактическое содержание вашего сообщения по-прежнему в безопасности, поэтому оно должно подойти многим пользователям. Просто помните, что ваше имя, статус, изображение профиля и другая информация могут быть не такими конфиденциальными, как вам хотелось бы. Если вас это беспокоит, ознакомьтесь с одной из предлагаемых нами альтернатив WhatsApp.
3. Telegram
Telegram — отличная платформа для группового обмена сообщениями с дополнительной защитой для прямых сообщений.
- Доступно на iOS , Android , Windows 10 , MacOS , Linux
Плюсов:
- Хорошо работает с большими группами
- Имеет надежную интеграцию с ботами
- Дополнительное шифрование в приватных чатах
Минусы:
- По умолчанию сквозное шифрование отсутствует
- Собирает изрядное количество метаданных
Telegram основан на облаке, что означает, что вы можете получать доступ к своим сообщениям с различных устройств и хранить данные в облаке.Он позволяет отправлять зашифрованные сообщения, файлы и участвовать в чате в реальном времени с группами до 200 000 участников. Приложение также имеет открытый исходный код, и компания раскрывает наиболее важные части своего шифрования, называемые MTProto.
Чтобы использовать сквозное шифрование, вам потребуется секретный чат. «Секретные чаты предназначены для людей, которые хотят большей секретности, чем обычный парень», — говорится в FAQ на веб-сайте Telegram. Указанные секретные чаты также позволяют настроить самоуничтожение сообщений через определенное время и зависят от устройства, то есть вы можете получить к ним доступ только с устройства происхождения.
Хотя отсутствие шифрования по умолчанию оставляет желать лучшего и оно собирает больше метаданных, чем другие службы, оно также имеет множество функций, которых нет в других приложениях для обмена сообщениями. Итак, если вам нужны большие группы с полезными ботами, но при этом вам нужна возможность отправлять зашифрованные текстовые сообщения, Telegram может быть хорошим выбором.
4. Threema
Threema не является бесплатным, но также не требует номера телефона или адреса электронной почты.
- Доступно в iOS , Android , веб-браузере
Плюсов:
- Номер телефона или адрес электронной почты не требуется
- Находится в Швейцарии
Минусы:
- Платное приложение без бесплатной пробной версии
- Нет настольного приложения
Threema выходит за рамки стандартных функций, таких как сквозное шифрование, голосовые вызовы и сообщения.Вы можете использовать Threema анонимно, поскольку для этого не требуется указывать свой номер телефона или адрес электронной почты. Вместо этого вы получаете случайный восьмизначный идентификатор Threema ID при первом запуске приложения.
Это одна часть вашей личности. Второй — это пара ключей — открытый ключ и закрытый ключ, которые необходимы для шифрования. Когда кто-то отправляет вам сообщение, они шифруют его с помощью вашего открытого ключа. Только ваш закрытый ключ, который остается на вашем устройстве, может его расшифровать. Вам даже не нужно предоставлять ему доступ к своей адресной книге, чтобы использовать приложение.
Помогает то, что Threema и ее серверы находятся в Швейцарии, где действуют одни из лучших законов о конфиденциальности. Хотя приложение — включая его библиотеку шифрования — имеет открытый исходный код, вам придется приобрести Threema за 2,99 доллара, чтобы воспользоваться его преимуществами.
5. Проволока
Wire — надежная бесплатная альтернатива, для которой требуется только адрес электронной почты.
- Доступно на iOS , Android , Windows 10 , MacOS , Linux
Плюсов:
- Использует адрес электронной почты или номер телефона для регистрации
- Синхронизируется на нескольких устройствах
Минусы:
- Сейчас принадлежит U.S. company
- Связь с пользователями сомнительна
Альтернатива Signal, которую Сноуден одобрял и критиковал, Wire, позволяет вам регистрироваться, используя адрес электронной почты вместо номера телефона. Он также обеспечивает сквозное шифрование. Поскольку он базируется в Европе — компания находится в Швейцарии, а серверы — в Ирландии и Германии, — она находится под юрисдикцией местных законов о конфиденциальности, в частности Общего регламента защиты данных.
Однако с конца 2019 года Wire перенесла свою штаб-квартиру в США.S. Возможно, это не проблема — и Wire настаивает на том, что это не так, — но это может дать судам США право запрашивать данные в суд. Пока это не будет проверено и не будет подтверждено, что ваша информация в безопасности, вы должны быть осторожны — хотя это не намного хуже, чем другие приложения для США, такие как WhatsApp.
Wire работает на всех основных платформах и в браузерах, и его персональный тарифный план предоставляется бесплатно. Однако подписка Pro нацелена на бизнес, обеспечивая аудио- и видеоконференции, а также полный административный контроль.Это стоит 5,83 доллара на пользователя в месяц.
6. Wickr
Wickr — отличный вариант для безопасной отправки временных сообщений.
- Доступно на iOS , Android , Windows 10 , MacOS , Linux
Плюсов:
- Все сообщения самоуничтожаются
- Сохраняются минимальные метаданные
- Не требуется номер телефона или адрес электронной почты
Минусы:
- Немного сложно выучить
- Не полностью открытый код
Wickr использует сквозное шифрование, не может получить доступ к вашим сообщениям или списку контактов и не требует вашего адреса электронной почты или номера телефона для регистрации.Приложение даже не хранит много метаданных. Таким образом, единственное, что он может предоставить властям, — это дата создания учетной записи, дата последнего использования, количество отправленных или полученных сообщений и тип устройства, использованного для создания учетной записи.
Обратите внимание, что Wickr находится в США и подпадает под юрисдикцию действующих там законов. Однако пользователи, проживающие в Европе, могут отказаться от передачи своих личных данных, что удобно. Тем не менее, некоторые функции Wickr могут не работать, если вы это сделаете.Криптографическая библиотека Wickr также имеет открытый исходный код, хотя не весь код находится на GitHub.
План Wickr Me предназначен для личных пользователей и не будет стоить вам ни цента. Однако Wickr Silver стоит 4,99 доллара США за пользователя в месяц и подходит для команд, поскольку предлагает множество функций для совместной работы. Для более крупных организаций подойдет Wickr Platinum, хотя он стоит 25 долларов за пользователя в месяц. Посмотрите его сравнительную таблицу, чтобы узнать, какой из них вам подходит.
Что такое зашифрованный обмен текстовыми сообщениями
Конфиденциальность и безопасность — главные проблемы для потребителей в наши дни, и разумно знать, как лучше всего сохранить конфиденциальность и конфиденциальность ваших данных.Но как насчет текстовых сообщений? Так ли они безопасны, как мы предполагаем?
Есть простые шаги, которые можно предпринять, чтобы сделать свои сообщения более безопасными, и это не будет стоить вам много времени и денег. Вот что вам следует знать о зашифрованных текстовых сообщениях и о том, как начать их отправлять сегодня. Даже те, у кого ограниченный технический опыт, могут получить защиту и сохранить свои данные в безопасности от других.
Зачем нужен зашифрованный обмен сообщениями?
Вы можете предположить, что зашифрованные тексты предназначены для других людей, например, для шпионов или тех, кто скрывает что-то преступное.На самом деле наши данные принадлежат нам, и у нас есть веская причина защитить их от попадания в чужие руки. Многие люди хотели бы сделать с вашей информацией плохие вещи.
Вот несколько примеров:
- Отправка сообщения о приближающемся отпуске может предупредить преступника о том, что ему пора вломиться в ваш дом
- Личные сообщения в рамках романтических отношений могут быть использованы для шантажа или судебного разбирательства во время развод или развод
- Информация о ваших детях может быть использована, чтобы нанести им вред или подвергнуть их опасности
- Данные, содержащиеся в текстах, часто используются как часть схем фишинга по электронной почте, телефону или почте
- Конкуренты могут использовать бизнес-информацию для разработки аналогичных продукты или прерывают подачу патентов
В дополнение к этим очевидным демонстрациям уголовного преследования и нарушения конфиденциальности существуют также юридические угрозы.Многие приложения, социальные сети и мобильные устройства могут использовать данные, передаваемые в ваших текстах, чтобы продавать вам или пытаться продать вам предложения. Хранение ваших данных в зашифрованном виде гарантирует, что они не будут использоваться каким-либо образом, который вы считаете неприемлемым. Некоторые люди также обеспокоены государственными программами шпионажа или иностранными взломами.
Вместо того, чтобы спрашивать: «Зачем мне шифровать текстовые сообщения?» вы должны спросить: «А почему бы и нет?» Это безопасно, легко и занимает очень мало времени с доступными сегодня технологиями.
Основы обмена зашифрованными текстовыми сообщениями
Вы слышали термин «сквозное шифрование»? Это может показаться сложным, но это легко объяснить.Также называемый E2EE, это способ связи, при котором только отправитель и получатель информации могут читать сообщения или данные. Если вы отправите сообщение своей маме, только вы и ваша мама сможете его прочитать. Ваш телефонный провайдер, поставщик приложений или производитель телефона не могут видеть, что вы написали. Для них это было бы тарабарщиной из-за используемой технологии шифрования.
Предполагается, что приложения, которые обещают предлагать зашифрованные тексты или сообщения, используют некоторую форму технологии сквозного шифрования. Только у вас и у человека, с которым вы общаетесь, есть ключи, чтобы разблокировать ваши сообщения.Это также можно использовать для электронной почты, чатов и досок сообщений. Это общий термин для описания защищенных каналов связи в отрасли.
Как использовать приложение для обмена зашифрованными сообщениями
Прелесть использования приложения или инструмента, обещающего шифрование, заключается в том, что они относительно просты с точки зрения пользователя. Фактически, вы можете уже использовать одно из этих приложений и даже не осознавать этого. Некоторые из приложений, которые предлагают эту функцию, включают:
1. Сообщения Apple
Это приложение iOS входит в стандартную комплектацию iPhone, iWatch и других продуктов Apple.Если вы не используете сторонний инструмент обмена сообщениями, ваши сообщения будут автоматически зашифрованы. Даже сообщения, сохраненные в iCloud через Apple, имеют такую же защиту.
Apple довольно часто упоминалась в новостях из-за юридических конфликтов, возникающих из-за их зашифрованной технологии. Поскольку даже Apple не может расшифровать сообщения, отправленные через их платформу обмена сообщениями, властям государственных учреждений и юридическим отделам не удалось заставить их разблокировать устройства или расшифровать сообщения.Да, их безопасность настолько хороша, что даже они не могут ее взломать.
Важно отметить, что шифрование Apple работает только до тех пор, пока сообщения отправляются между двумя пользователями на платформе обмена сообщениями Apple. Если текст отправляется с устройства Android на iPhone или наоборот, безопасность шифрования теряется.
2. WhatsApp
Один из самых популярных сервисов обмена сообщениями в мире, WhatsApp также является одним из самых безопасных. Это бесплатно и доступно для iOS, Android, Windows и некоторых других платформ устройств.Сквозное шифрование защищает данные, отправляемые через приложение, и пользователи могут проверять «ключ» отправляющего или получающего пользователя, чтобы убедиться, что люди такие, какими они себя называют, и что сообщения отправляются безопасно.
Вы можете не только отправлять текстовые сообщения, но также передавать аудио- и видеозвонки. Они пользуются одинаковым шифрованием данных, поэтому они действительно безопасны. Хотя это приложение невероятно полезно, его будущее находится под угрозой. Facebook купил ее в 2014 году, и многие задаются вопросом, будет ли она и дальше оставаться платформой без рекламы, на которую не влияет маркетинговая тактика.Он также запрещен в нескольких странах.
3. Knox
Если вы владелец телефона Samsung, есть хорошие новости для конфиденциальности ваших текстовых сообщений. Knox позволяет пользователям отправлять сообщения друг другу с защитой физического чипа внутри телефона. Этот чип не позволяет звонкам и текстам идентифицировать или извлекать данные из пользовательской информации и записи на самом телефоне. Шифрование надежное. Однако для обеспечения безопасности пользователи должны отправлять и получать сообщения вместе с другими пользователями платформы Knox.Он несовместим с внешними инструментами.
4. Signal
Для пользователей Android, у которых нет телефона Samsung, фаворитом является приложение Signal . Этот инструмент от OpenWhisper автоматически шифрует звонки и SMS-сообщения для пользователей Android, iOS и даже настольных устройств. Это не требует особых усилий, но это один из самых безопасных способов поговорить с друзьями, семьей и коллегами.
Вы также можете использовать его для отправки не только текстовых сообщений. Он может записывать и безопасно передавать голосовые заметки, изображения и видео.Групповой чат является важным преимуществом этой платформы, и все выигрывает от сквозного шифрования.
5. Wickr
Еще одно популярное приложение для обмена зашифрованными текстовыми сообщениями, Wickr , позволяет пользователям отправлять сообщения с истекающим сроком действия, фотографии и вложения файлов, не беспокоясь о том, что их перехватят или украдут. Он доступен для iOS, Mac, Android и Windows. Пользователи Linux тоже могут наслаждаться этим.
Лучшая часть приложения — это то, что вы можете определить точное время истечения срока действия ваших сообщений. Когда таймер истечет, доступ к этим сообщениям будет закрыт.Каждое сообщение также получает собственный уникальный ключ шифрования, доступный только участникам беседы. Ключ удаляется, как только сообщение расшифровывается, и сообщения исчезают по истечении срока их действия.
Легко и безопасно для всех.
Если вы никогда раньше не задумывались о безопасности обмена текстовыми сообщениями, возможно, вы это сделаете сейчас. С упомянутыми приложениями все просто и удобно, и многие из самых надежных инструментов также бесплатны. Вам не нужны глубокие технические знания, чтобы пользоваться безопасными сообщениями, и вполне вероятно, что вы уже отправляете зашифрованные тексты с помощью своего мобильного устройства.
Это проблема не только для тех, кто работает с строгим режимом безопасности, или для тех, кто занимается гнусной деятельностью. Есть множество причин для перехода на зашифрованные тексты, независимо от того, хотите ли вы защитить себя от хакеров или помните, как ваши данные используются в маркетинговых или политических целях. Ваши сообщения — это ваши данные. Вы владеете ими, и у вас должна быть возможность хранить их в безопасности и в вашем распоряжении.
Зачем рисковать своей информацией, если в этом нет необходимости? Безопасные варианты доступны на всех технических платформах, поэтому вы можете сразу же ими пользоваться.
Об авторе
Линси Кнерл — автор статей в HP® Tech Takes. Линси — писатель из Среднего Запада, оратор и член ASJA. Она стремится помочь потребителям и владельцам малого бизнеса более эффективно использовать свои ресурсы с помощью новейших технических решений.
Зашифрованы ли текстовые сообщения? | Rokacom
Но мой оператор мобильной связи говорит, что они используют шифрование?
Это шифрование встроено в стандарт GSM или CDMA. Шифрование SMS для мобильной связи шифрует ТОЛЬКО для вышки сотового телефона.После того, как ваше текстовое сообщение получено на местной вышке сотовой связи, оно расшифровывается, затем отправляется в базу данных оператора мобильной связи и сохраняется в незашифрованном виде и уязвимо. Кроме того, в нескольких статьях показано, что хакеры могут собирать и взламывать эту зашифрованную передачу с помощью компьютерной видеокарты. Вооружившись этими знаниями, попробуйте позвонить своему оператору мобильной связи и спросить: «Шифруются ли текстовые сообщения?»
Что еще мне нужно знать о защите текстовых сообщений?
Ваш оператор мобильной связи должен вести записи текстовых сообщений сотового телефона, которые включают метаданные того, кому вы переписывались.Эдвард Сноуден допустил утечку информации о сборе этих данных АНБ. Поэтому, когда вы спрашиваете «Зашифрованы ли сообщения Tex», вы также должны спрашивать, какие метаданные они хранят о ваших текстовых сообщениях.
Как я могу защитить свои текстовые сообщения?
Простой ответ: вам нужно использовать приложение для безопасного обмена сообщениями. Если вам нужна помощь в его поиске, ознакомьтесь с другой моей статьей, Лучшее приложение для безопасного обмена сообщениями: какое из них вам подходит?
Другие вопросы и ответы
Являются ли текстовые сообщения конфиденциальными?
Ну, это зависит от того, что вы подразумеваете под частным.Размещают ли операторы мобильной связи текстовые сообщения клиентов в своих учетных записях Twitter? Не то чтобы я когда-либо видел. Однако по моему определению Нет, текстовые сообщения не являются частными . Когда они передаются и хранятся в незашифрованном виде, сотрудники операторов мобильной связи, правительства и хакеры могут получить доступ к вашим текстовым сообщениям. Если вы спрашиваете это вместе с «Зашифрованы ли текстовые сообщения», это показывает, что вы впереди всех в том, что шифрование не всегда означает конфиденциальность.
Я считаю сообщение личным только в том случае, если оно зашифровано между мной и предполагаемым получателем.
Что более безопасно для текстовых сообщений или электронной почты?
Здесь есть немного больше нюансов, но я собираюсь сказать, что текстовые сообщения менее безопасны, чем электронная почта, , но это мало что говорит. Вот почему:
- Сегодняшний стандарт электронной почты — это шифрование от вашего почтового клиента к серверу
- Большинство почтовых серверов ВСЕ ЕЩЕ отправляют электронную почту друг другу по незашифрованному протоколу SMTP
- Большинство сообщений электронной почты хранятся на сервере в незашифрованном виде, как и SMS.
- Сквозное шифрование доступно для электронной почты через SMIME и GPG
Эти службы сохраняют конфиденциальность ваших сообщений
ЗАКРЫТЬ
AT&T, Sprint, T-Mobile и Verizon объединяются для создания того, что они называют «новым поколением» службы обмена сообщениями.У Марии Мерседес Галуппо Veuer есть больше.
Buzz60
Мы отправляем сообщения в течение всего дня, и каждый раз, когда мы нажимаем «отправить», мы бросаем кости. Хакерам не нужно взламывать ваш телефон, чтобы украсть ваши данные; они могут перехватывать сообщения или взламывать чужие устройства. Как только они получат ваше электронное письмо или текст, есть только один способ защитить вашу личную переписку: сделать ее нечитаемой.
Представьте, что хакеры могли видеть все, что вы делаете в сети, каждое имя учетной записи и пароль.Все эти данные передаются через ваш маршрутизатор, поэтому вам нужно убедиться, что они не скомпрометированы. Коснитесь или щелкните, чтобы бесплатно проверить, не был ли ваш маршрутизатор взломан.
Одно из самых эффективных средств защиты от слежки называется «сквозным шифрованием». Шифрование — это безопасный способ защитить ваши разговоры от прочтения другими людьми. Даже если хакер их перехватит, они не увидят ничего, кроме тарабарщины. «Сквозной» означает, что сообщения остаются зашифрованными, независимо от того, кто их отправляет или получает.
(Фото: GETTY IMAGES)
Эта идея кажется немного сложной, но ее несложно настроить. И вы можете получить этот дополнительный уровень защиты бесплатно.
Если вы действительно беспокоитесь о безопасности, вам действительно стоит использовать VPN. Коснитесь или щелкните здесь, чтобы узнать все, что вам нужно знать о выборе и настройке VPN.
Зашифрованная электронная почта
Хотите верьте, хотите нет, но такие известные почтовые службы, как Gmail и Yahoo, не обеспечивают сквозного шифрования. Некоторые критики говорят, что это связано с тем, что крупные информационные компании хотят иметь возможность читать ваши сообщения.
Общее объяснение намного проще: водонепроницаемое шифрование сложно реализовать, и оно требует участия всех корреспондентов. Например: если в вашей электронной почте используется шифрование, а в моей — нет, процесс не является непрерывным. В какой-то момент ваше сообщение станет уязвимым.
Предупреждающие знаки: 5 цифровых знаков того, что ваша вторая половинка обманывает
«Горящие» телефоны не только для преступников: Вот почему вам нужно иметь один
Для предприятий и организаций, которым требуются строгие меры безопасности или для осторожности отдельных пользователей, вот несколько выдающихся сервисов, которые действительно обеспечивают сквозное шифрование.У каждого есть свои лазейки и недостатки, но если вы включите всю свою сеть, эти платформы теоретически могут защитить всю вашу цепочку электронной почты.
Вот некоторые службы, известные своими возможностями шифрования, которые делают вашу электронную почту и текстовые сообщения более безопасными.
ProtonMail
Эта служба привлекла внимание всего мира благодаря сквозному шифрованию и стала популярным вариантом для пользователей, ищущих абсолютную конфиденциальность. Компания базируется в Швейцарии, стране, известной своими стандартами конфиденциальности, и ее серверы буквально похоронены под землей.
Существует ограниченная бесплатная версия и более надежная платная версия, и вы можете использовать эту услугу для домена своего веб-сайта. Компания хвастается, что даже они — разработчики — не могут читать ваши электронные письма.
Видите что-то подозрительное в своем почтовом ящике? Есть способ узнать, откуда именно оно пришло. Нажмите или щелкните здесь, чтобы узнать, как отследить отправителя.
Mailfence
Эта бельгийская компания делает ставку на безопасность, используя «ключи», которыми вы можете поделиться с доверенными лицами.Хорошая новость в том, что вы можете обмениваться сверхбезопасными электронными письмами с другими пользователями Mailfence. Плохая новость в том, что вы не можете отправлять сообщения с сквозным шифрованием людям, которые им не пользуются.
Tutanota
Вы можете обеспечить сквозное шифрование между одним пользователем Tutanota и другим; и вы также можете создавать безопасные пароли для просмотра писем, отправленных Tutanota, в других службах, таких как Gmail.
SCRYPTmail
Эта служба похожа на другие, за исключением того, что она также может предоставлять ложные адреса электронной почты, что затрудняет получение получателем (или хакером) информации о том, кто отправил сообщение.Конечно, это может быть использовано злонамеренно, но также может защитить вашу электронную почту от оскорбительных ответов.
Hushmail
Созданный в Канаде в 1998 году, Hushmail уже долгое время занимается частной электронной почтой. Как и Mailfence, Hushmail использует ключи для обмена с другими. Многие инновационные функции Hushmail в наши дни являются довольно стандартными, но сервис остается таким же надежным, как и прежде.
Microsoft Outlook
Да, популярная служба электронной почты разработала сквозное шифрование — вам просто нужно изменить настройки, чтобы использовать его.Outlook проанализирует вашу электронную почту на предмет конфиденциальной информации; но что более интересно, Outlook может запретить получателю копировать или пересылать ваши электронные письма.
Приложения для зашифрованных сообщений
«Текстовые сообщения» в последние годы быстро развивались, и смартфоны способны поддерживать широкий спектр служб обмена сообщениями, некоторые из которых обеспечивают сквозное шифрование, как и электронная почта.
Существует множество недорогих или бесплатных служб обмена сообщениями, обеспечивающих приличный уровень безопасности.Это три самых больших; Я рекомендую сначала Signal, затем Messages (если у вас есть iPhone) и третье WhatsApp, но вы также можете изучить Silence, Silent Phone, Telegram, Wire, Dust или Cyphr, среди других.
Signal Private Messenger
Как следует из названия, Signal Private Messenger специально разработан для скрытой связи. Его разработчик, Open Whisper Systems, получил одобрение экспертов по безопасности и криптографов, и система доступна для устройств Apple и Android, а также для настольных компьютеров.
Все сообщения Signal зашифрованы из конца в конец, и вы также можете установить таймер для своих передач, чтобы они автоматически удалялись. Более того, программа с открытым исходным кодом; нет ни одной крупной корпорации, нависшей над вашими данными, ни удаленного сервера, который хранит ваши данные.
Невероятно, но Signal можно загрузить и использовать бесплатно, независимо от того, получаете ли вы его из Apple App Store или Google Play. Вы можете не только отправлять сообщения, но и проводить видеозвонки в формате HD с пользователями по всему миру.
iOS 13: 9 новых функций, которые вы будете использовать снова и снова
Приложение «Сообщения» от Apple
Пользователи Apple обычно полагаются на приложение «Сообщения» в iOS и macOS, которое защищает сообщения и вложения, отправляемые между двумя гаджетами Apple. Поэтому, если вы отправляете сообщение с iPhone на iPhone друга, его iPad или Macbook, ваш текст будет автоматически зашифрован. Текстовые сообщения, хранящиеся в iCloud, также зашифрованы, если вы включили двухфакторную аутентификацию.
Как и ожидалось, сообщения, отправляемые пользователям Android, не зашифрованы. Гаджеты Android по умолчанию не шифруют SMS-сообщения; в этой ситуации вы можете обратиться к другому из этих приложений.
Пользователи Android часто проигрывают в вопросах безопасности. Коснитесь или щелкните, чтобы просмотреть длинный список приложений, которые необходимо удалить сейчас, а также избегать загрузок в будущем.
WhatsApp завоевал мировую популярность благодаря бесплатному обмену текстовыми и голосовыми сообщениями.Приложение доступно на различных платформах, включая компьютеры с Windows и macOS, а также мобильные устройства Android и iOS.
Один недостаток: WhatsApp принадлежит Facebook, который в последние годы подвергся критике из-за проблем с конфиденциальностью. Коснитесь или щелкните, чтобы увидеть 5 параметров конфиденциальности Facebook, которые необходимо изменить, чтобы защитить свою учетную запись.
Тем не менее, WhatsApp предлагает сквозное шифрование между вами и другими пользователями WhatsApp. Как всегда, я не рекомендую отправлять конфиденциальную информацию через приложение — не говоря уже о компрометации фотографий или документов — но вы можете использовать это приложение, чтобы с комфортом держать хакеров в страхе.
Узнайте обо всех последних технологиях на шоу Ким Командо, крупнейшем в стране ток-шоу на радио выходного дня. Ким отвечает на звонки и дает советы о современном цифровом образе жизни — от смартфонов и планшетов до взлома данных и конфиденциальности в Интернете. Чтобы получить ее ежедневные советы, бесплатные информационные бюллетени и многое другое, посетите ее веб-сайт Komando.com.
ЗАКРЫТЬ
Элизабет Китиндж из Buzz60 рассказывает нам, что некоторые эксперты говорят о контроле над электронной почтой.
Buzz60
Прочтите или поделитесь этой историей: https: // www.usatoday.com/story/tech/columnist/2019/11/21/how-to-securely-send-email-texts/4257814002/
Как зашифровать и расшифровать текстовый файл в Windows 10
Блокнот Windows — это универсальный текстовый редактор, включенный в каждую версию Windows. Вы можете использовать его для основных задач, таких как создание заметок и составление списков, или для более сложных задач, таких как создание командного файла для автоматизации команд на вашем компьютере.
Иногда вы можете написать в Блокноте что-то важное, что требует дополнительной защиты.Шифрование текстового файла Блокнота — лучший способ повысить вашу безопасность. Итак, вот как вы шифруете и расшифровываете текстовый файл в Windows 10.
1. Шифрованная файловая система Windows
Шифрованная файловая система Windows (EFS) — это интегрированный инструмент шифрования файлов, доступный для всех версий Windows 10, кроме Домашней. EFS — это не то же самое, что Bitlocker, который можно использовать для полного шифрования диска. Вместо этого EFS работает по принципу «файл за файлом», что делает его идеальным для шифрования текстового файла.
Чтобы использовать EFS для шифрования файла, щелкните текстовый файл правой кнопкой мыши и выберите Свойства . Теперь выберите Advanced, , затем установите флажок Зашифровать содержимое для защиты данных . Нажмите OK , затем Применить.
Появится предупреждение о шифровании, поясняющее, что шифрование отдельного файла может вызвать проблему при определенных обстоятельствах и что шифрование всей папки обеспечивает большую защиту. Если файл находится в часто используемой папке, это означает, что вам придется разблокировать папку каждый раз, когда вы хотите получить доступ к любому другому файлу.Один из способов обойти это — поместить текстовый файл в отдельную папку и использовать ее в качестве защищенной папки.
После подтверждения вашего выбора шифрованная файловая система спросит вас, хотите ли вы сделать резервную копию ключа шифрования. Вы можете использовать резервную копию ключа шифрования, если забыли пароль для дешифрования.
Экспорт резервной копии ключа шифрования
Если вы решите экспортировать резервную копию ключа шифрования для дополнительной безопасности, запустится мастер экспорта сертификатов Microsoft.Мастер проведет вас через создание и экспорт вашего ключа шифрования на внешний носитель, например, на USB-накопитель.
Выберите Обмен личной информацией на первой странице и отметьте Экспортировать все расширенные свойства . На следующей странице вы должны ввести надежный и уникальный пароль для защиты ваших текстовых файлов. Измените тип шифрования на AES256-SHA256 (чрезвычайно надежное шифрование!), Затем укажите имя файла для резервной копии ключа шифрования.Нажмите Finish , чтобы завершить процесс.
По завершении процесса вы увидите маленький значок замка на значке текстового файла, указывающий на его статус шифрования.
2. 7-Zip
Знаете ли вы, что инструмент архивирования 7-Zip также имеет инструмент шифрования? Опция 7-Zip удобна для пользователей Windows 10 Home, которые не могут использовать шифрованную файловую систему Windows и по-прежнему хотят иметь быстрый способ шифрования текстовых файлов.
Процесс шифрования 7-Zip отличается от варианта EFS.Сначала вы должны загрузить и установить последнюю версию 7-Zip. После установки щелкните правой кнопкой мыши текстовый файл, который хотите зашифровать. Выберите 7-Zip> Добавить в архив , чтобы открыть параметры архива 7-Zip.
Найдите раздел Encryption справа. Введите надежный и уникальный пароль, затем нажмите OK .
Теперь, когда вы хотите получить доступ к файлу, вы должны ввести свой пароль, чтобы расшифровать текстовый файл (или любой другой файл в архиве). Инструмент шифрования 7-Zip — удобный способ зашифровать несколько текстовых файлов с минимальными усилиями.
3. Крипта AES
AES Crypt — это бесплатный инструмент с открытым исходным кодом, который можно использовать для шифрования текстовых файлов. Одна из лучших особенностей AES Crypt — это простота использования.
Вы устанавливаете AES Crypt как обычно. После установки щелкните правой кнопкой мыши текстовый файл, который вы хотите зашифровать, и выберите AES Crypt из контекстного меню. Введите надежный и уникальный пароль, затем нажмите OK . AES Crypt создает зашифрованную копию текстового файла.
Единственное, что нужно помнить, — это удалить исходный файл.Это по двум причинам. Во-первых, зашифрованная копия бесполезна, если кто-то может получить доступ к незашифрованному оригиналу. Во-вторых, вы не сможете расшифровать текстовый файл, если AES Crypt обнаружит, что он все еще существует.
Последний инструмент для шифрования отдельных файлов, на который вы должны обратить внимание, — это AxCrypt, мощный инструмент шифрования с обширными функциями. Однако вам не нужно беспокоиться обо всех функциях — только о том, как AxCrypt зашифрует и расшифрует ваш текстовый файл.
Загрузите и установите AxCrypt.При первом запуске AxCrypt вам необходимо выполнить настройку. Вы должны предоставить активный адрес электронной почты, чтобы получить проверочный код (который, по сути, является вашей бесплатной лицензией AxCrypt), затем скопируйте и вставьте код перед подтверждением.
Затем вам необходимо создать пароль для шифрования AxCrypt. Это позволит зашифровать и расшифровать ваши личные текстовые файлы, поэтому убедитесь, что вы создали надежный и уникальный пароль. Как указано в предупреждении, сброс пароля позволит вам вернуться в свою учетную запись, но не расшифрует текстовые файлы, защищенные старым паролем.
Когда вы будете готовы, перетащите текстовый файл в AxCrypt. AxCrypt автоматически зашифрует файл. Если вы вошли в AxCrypt, вы не получите запрос на ввод пароля для расшифровки текстового файла. Как только вы закроете AxCrypt, вы получите запрос пароля.
AxCrypt — это бесплатный инструмент шифрования, поэтому он включен в наш список лучших бесплатных программ для Windows.
Как лучше всего зашифровать текстовые файлы?
У вас есть четыре варианта шифрования ваших текстовых файлов.Самый простой вариант — 7-Zip, он бесплатный, простой в использовании и обеспечивает надежную защиту. Тем не менее, ни один из других вариантов не является трудным в использовании — если вы, , не забудете свой пароль!
Создание пароля может показаться сложной задачей. Если вы испытываете трудности, попробуйте эти простые способы создать пароль, который вы всегда будете помнить.
Безопасный обмен сообщениями в 2021 году: все, что вам нужно знать
Вам когда-нибудь приходилось отправлять кому-то конфиденциальное сообщение?
Финансовые файлы для налогового профи?
Код от двери гаража другу?
Проект вашего имущественного плана для вашего юриста?
Неловкий вопрос вашему консультанту или терапевту?
Фотография только для вашей второй половинки?
Используете ли вы текстовые сообщения или электронную почту для подобных сообщений?
Позвольте задать вам несколько вопросов:
- Безопасна ли и конфиденциальна ли электронная почта?
- Безопасны ли и конфиденциальны ли текстовые сообщения?
Есть несколько фактов, которые удивляют людей, когда я ими делюсь.Один из самых важных моментов, который я вижу, — это когда я говорю людям, что их электронная почта является небезопасной , а их текстовые сообщения — небезопасными .
Люди склонны полагать, что эти сообщения являются личными и могут быть просмотрены только тем человеком, с которым они общаются. Я расскажу вам, почему электронная почта и текстовые сообщения небезопасны и почему вам следует использовать защищенный обмен сообщениями вместо конфиденциальных сообщений .
Примечание. Эта страница содержит партнерские ссылки. Как партнер Amazon, я зарабатываю на соответствующих покупках.См. Раздел «Раскрытие информации для партнеров».
Угрозы
Электронная почта и SMS / текстовые сообщения чрезвычайно популярны, потому что ими очень легко пользоваться. Чтобы отправить электронное письмо, просто отправьте сообщение на чей-нибудь адрес электронной почты, независимо от того, какой почтовой службой он пользуется. Чтобы написать кому-нибудь, просто отправьте его на его номер телефона, независимо от того, какой телефонной службой он пользуется. К сожалению, сильные стороны функциональной совместимости и простоты использования приводят к недостаткам незащищенности.
Угрозы электронной почты: почему электронные письма не являются безопасными или конфиденциальными?
Когда вы отправляете электронное письмо, оно переходит с вашего устройства на серверы вашего поставщика услуг электронной почты.Ваш поставщик услуг хранит электронное письмо в течение некоторого времени (после его отправки) и отправляет копию через несколько серверов, принадлежащих разным организациям, в разных местах по всей стране или миру. В конце концов, он приходит к поставщику услуг электронной почты человека, которому вы писали. Этот провайдер хранит копию электронного письма в почтовом ящике этого человека, пока он не проверит свою электронную почту. Затем он переходит к их устройству. Их провайдер также может хранить копию электронного письма в течение некоторого времени. Примечание. Я упростил это для иллюстрации.
Любой сервер на этом пути может сделать копию электронного письма , которое они могут сохранить даже после того, как отправитель и получатель удалили электронное письмо .
Некоторые поставщики услуг электронной почты шифруют некоторую часть пути, по которому проходит ваша электронная почта, используя шифрование при передаче . Но во многих случаях электронное письмо проходит через нескольких поставщиков услуг электронной почты, и не все они могут сотрудничать в шифровании электронной почты. Итак, ваша электронная почта может быть незашифрованной во время части своего пути.
Вспомните школьные годы. Представьте, что вы хотите отправить записку другу в классе. Вы пишете записку на листе бумаги, а затем складываете ее пополам. Вы передаете его девушке рядом с вами. Она смотрит на записку и копирует ее , затем передает ее мальчику рядом с ней. Он смотрит на записку, но не копирует ее, а затем передает. Следующий ребенок проходит мимо, не глядя. Он проходит через еще трех детей, некоторые смотрят на него, некоторые копируют его, пока он не достигнет вашего друга.Этот процесс аналогичен тому, что происходит с незашифрованным электронным письмом.
Некоторые поставщики услуг электронной почты шифруют вашу электронную почту, когда она находится на их серверах, используя шифрование в состоянии покоя . Но, опять же, во многих случаях электронное письмо проходит через нескольких поставщиков услуг электронной почты, и они не могут все зашифровать электронную почту в состоянии покоя . Даже те, кто действительно шифрует электронную почту в состоянии покоя, часто все еще могут прочитать электронную почту сами . Это позволяет им предоставлять такие услуги, как фильтрация спама, сканирование на наличие вредоносных программ и индексирование (чтобы вы могли выполнять поиск в своей электронной почте).Но это также означает, что они могут собирать данные , которые могут использоваться для таргетированной рекламы, или к которым может получить доступ мошенник или хакер, взламывающий .
В то время, когда электронное письмо не зашифровано, будь то в пути (в пути) или в хранилище (в состоянии покоя), оно может быть прочитано и потенциально изменено компаниями, которые управляют инфраструктурой электронной почты, хакерами или правительствами.
Gmail предупреждает, что некоторые получатели пользуются почтовыми службами, не поддерживающими шифрование. Gmail предупреждает о том, что вы не должны отправлять конфиденциальные сообщения получателям, чьи почтовые службы не поддерживают шифрование.
Несколько лет назад один из моих родственников покупал походное снаряжение. Сотрудник порекомендовал веб-сайт, на котором продавался продукт, который он искал. Я не знаю, не принимал ли сайт онлайн-платежи или они утверждали, что в их системе возникла проблема, но сайт попросил моего родственника отправить по электронной почте данные его кредитной карты. Мой родственник был обеспокоен этим, но, поскольку сайт был рекомендован коллегой, получившим его заказ, он отправил электронное письмо.
Сможете угадать, что было дальше?
Несколько дней спустя на кредитной карте моего родственника было зафиксировано мошеннических платежей . Информация о кредитной карте могла быть украдена сотрудником сайта, но также возможно, что номер был украден кем-то, у кого был доступ к электронной почте , когда она проходила через Интернет. В любом случае, электронная почта не является способом обмена данными кредитной карты .
Угрозы SMS / текстовых сообщений: почему текстовые сообщения не являются безопасными или конфиденциальными?
Во-первых, несколько быстрых определений.Большинство людей говорят о текстовых сообщениях. Технически, когда вы отправляете только текст, вы используете SMS (службу коротких сообщений). Когда вы отправляете изображения, аудио, видео или другие медиафайлы, вы используете MMS (службу мультимедийных сообщений). В этом посте я буду использовать «текстовое сообщение» для обозначения SMS и MMS.
Когда вы отправляете текстовое сообщение, оно переходит с вашего телефона на ближайшую вышку сотовой связи. Затем он передается вашему оператору мобильной связи. Провайдер обрабатывает и сохраняет сообщение . Затем он отправляет его поставщику мобильных услуг, используемому человеком, которому вы написали текст, и этот провайдер обрабатывает и сохраняет сообщение .Оттуда оно отправляется на вышку сотовой связи рядом с человеком, которому вы написали смс. Эта башня отправляет сообщение на телефон получателя. Примечание. Я упростил это для иллюстрации.
Поставщики мобильных услуг могут сохранить сообщение даже после того, как отправитель и получатель удалили его .
Некоторые поставщики услуг мобильной связи шифруют соединение между вашим телефоном и вышкой сотовой связи, но не все это делают. А остальной путь сообщения обычно не зашифрован .Вспомните пример передачи записки в классе, который я приводил ранее. Этот процесс аналогичен тому, что происходит с незашифрованными текстовыми сообщениями.
В то время, когда текстовое сообщение не зашифровано, будь то в пути или в хранилище, оно может быть прочитано и потенциально изменено компаниями, которые управляют инфраструктурой мобильных сервисов, хакерами или правительствами.
Кстати, именно из-за этих и других недостатков безопасности, я не рекомендую использовать текстовые сообщения для двухфакторной аутентификации .Вместо этого используйте аппаратный токен или приложение для аутентификации.
Использование безопасного обмена сообщениями для повышения вашей безопасности и конфиденциальности
Есть шаги, которые вы можете предпринять, чтобы повысить безопасность своей электронной почты. Но из-за того, как работает электронная почта, : чем больше вы ее защищаете, тем труднее использовать . Вам нужно перепрыгнуть через множество обручей. Вы мало что можете сделать для повышения безопасности текстовых сообщений, в том числе из-за того, как работает эта технология.
Итак, вместо того, чтобы пытаться защитить вашу электронную почту и текстовые сообщения, я рекомендую использовать службу безопасного обмена сообщениями всякий раз, когда вам нужно отправить конфиденциальные сообщения .Конечно, вы можете использовать безопасный обмен сообщениями все время, но правильное использование безопасного обмена сообщениями требует больше усилий, чем электронная почта и текстовые сообщения, поэтому вы можете решить использовать безопасный обмен сообщениями только в случае необходимости.
Главное, что делает безопасный обмен сообщениями безопасным, — это сквозное шифрование . Это сохраняет данные в секрете на всем пути от отправителя до предполагаемого получателя, так что только предполагаемый получатель может их видеть / слышать. Он хранит данные в зашифрованном виде во время передачи , (в пути) и в состоянии покоя, (в хранилище). Это не позволяет не только хакерам, но также правительствам и даже компаниям, передающим данные, увидеть их .
Вспомните пример передачи записки в классе, который я приводил ранее. Теперь представьте, что, написав заметку, вы закрываете ее в ящике с помощью ключа, который есть только у вас и вашего друга. Ваши одноклассники передают коробку, но не может открыть ее , чтобы посмотреть, что внутри. Ваш друг получает коробку и использует свой ключ, чтобы открыть ее и прочитать вашу заметку. Этот процесс аналогичен тому, что происходит с сообщениями с сквозным шифрованием.
Вы можете увидеть, как мессенджеры рекламируют, что они используют Transport Layer Security (TLS) , и это здорово, потому что он шифрует данные во время передачи (в пути), но не шифрует данные в состоянии покоя (в хранилище). Сообщения все еще уязвимы, когда они хранятся. Не соглашайтесь ни на что, кроме сквозного шифрования .
Для сквозного шифрования обычно вам и человеку, с которым вы общаетесь, необходимо использовать одну и ту же систему связи .Например, вы должны использовать приложение Signal или iMessage от Apple. Это одно из препятствий для безопасного обмена сообщениями и основная причина того, что безопасный обмен сообщениями не так широко используется, как незащищенная электронная почта и текстовые сообщения.
Системы безопасного обмена сообщениями
Существует множество вариантов безопасного обмена сообщениями, поэтому я поделюсь с вами некоторыми. Тот, который вам подходит, будет зависеть от того, как вы передаете свое сообщение; нужно ли вам общаться с помощью текста, аудио или видео и нужно ли вам отправлять файлы.
Если вы используете устройство Apple (Mac, iPhone, iPad, Apple Watch), вы можете использовать систему Apple iMessage, которая поддерживает приложение «Сообщения». Сообщения, отправляемые на другие устройства Apple, шифруются сквозным шифрованием. Однако, если вы отправляете сообщение кому-то, кто не использует устройство Apple (если сообщение зеленого цвета, а не синего), это сообщение находится за пределами системы iMessage, , с использованием стандартной инфраструктуры незашифрованных текстовых сообщений .
Также имейте в виду, что если у вас есть iPhone и включено резервное копирование iCloud (и не включены сообщения в iCloud), то Apple может читать ваши сообщения.Узнайте, как предотвратить это, в Руководстве по безопасности и конфиденциальности Apple iOS. Помните, что ваши сообщения, отправленные другим пользователям, по-прежнему могут быть скопированы в их учетные записи iCloud. Это беспокоит и другие безопасные мессенджеры, которые выполняют резервное копирование в облако. Если вас беспокоит конфиденциальность сообщений, выберите другой безопасный мессенджер.
Blue iMessage означает безопасность Зеленое текстовое сообщение означает небезопасность
FaceTime Apple также имеет сквозное шифрование и может использоваться для аудио- или видеозвонков между устройствами Apple.
WhatsApp предлагает сквозное шифрование сообщений, аудиозвонки, видеозвонки и отправку файлов. Очень популярный , особенно за пределами США, помогает справиться с проблемой общения с людьми, использующими ту же систему, что и вы. Он доступен для iOS, Android, Windows phone, Mac и Windows.
Signal — это безопасный мессенджер, который я чаще всего рекомендую экспертами по кибербезопасности и цифровой конфиденциальности . Он предлагает сквозной зашифрованный обмен сообщениями, аудиозвонки, видеозвонки и отправку файлов.Он доступен для iOS, Android, Mac и Windows.
Signal secure messenger
Wire — еще один часто рекомендуемый вариант. Он также предлагает сквозной зашифрованный обмен сообщениями, аудиозвонки, видеозвонки и отправку файлов. Он доступен для iOS, Android, Windows и Linux, а также может быть доступен через основные веб-браузеры независимо от операционной системы.
Я также видел Wickr, рекомендованный экспертами по кибербезопасности и цифровой конфиденциальности, и Facebook Messenger также имеет сквозное шифрование (с использованием протокола Signal), если вы выбираете Secret Conversations (см. Руководство по безопасности и конфиденциальности Facebook) . Facebook Messenger чрезвычайно популярен в США. помогает справиться с проблемой общения с людьми, использующими ту же систему, что и вы.
Я читал, что Whisper, Secret и Telegram недостаточно безопасны и конфиденциальны, чтобы использовать .
Когда вы думаете о том, какой безопасный мессенджер подходит вам, подумайте о функциях, выходящих за рамки безопасности и конфиденциальности. EFF (Electronic Frontier Foundation) сообщает:
… функции безопасности — не единственные переменные, которые имеют значение при выборе безопасного мессенджера.Приложение с отличными функциями безопасности бесполезно, если никто из ваших друзей и знакомых не использует его, а самые популярные и широко используемые приложения могут значительно различаться в зависимости от страны и сообщества. Низкое качество обслуживания или необходимость платить за приложение также могут сделать мессенджер неподходящим для некоторых людей. И выбор устройства также играет роль…
У EFF есть отличная статья, которая поможет вам продумать, что вам нужно в безопасном мессенджере.
Вы можете найти списки приложений для безопасного обмена сообщениями в разделе Дополнительная литература ниже.
Безопасная отправка текстовых сообщений
Если вы не пользуетесь безопасным обменом сообщениями регулярно, но вам нужен способ безопасной отправки текста, подумайте о PrivateBin. Это веб-инструмент, который позволяет отправлять текст со сквозным шифрованием. Он генерирует ссылку, которой вы можете поделиться, и вы выбираете, когда истечет срок ее действия. Вы также можете включить опцию Записать после прочтения , которая вызывает самоуничтожение текста после прочтения. Рекомендую установить пароль . Вы должны отправить пароль через другой канал , чем вы используете для отправки ссылки.
Безопасная отправка файлов
Если вы не пользуетесь безопасным обменом сообщениями регулярно, но вам нужен способ безопасной отправки файлов время от времени, подумайте о Firefox Send. Это веб-инструмент, который позволяет отправлять файлы со сквозным шифрованием. Он генерирует ссылку, которой вы можете поделиться, и вы выбираете, когда истечет срок ее действия. Я рекомендую использовать Protect with password option . Вы должны отправить пароль через другой канал , чем вы используете для отправки ссылки.Вы можете отправлять файлы (включая файлы .zip) размером до 1 ГБ.
Аналогичный инструмент — Tresorit Send. Он также позволяет вам установить пароль, но вы не можете установить срок его действия. Он поддерживает файлы размером до 5 ГБ.
Оба этих инструмента (и компании, которые их создали) имеют хорошую репутацию в плане безопасности и конфиденциальности.
Безопасная электронная почта
Если вы хотите сохранить электронную почту, но использовать ее более безопасно, вам нужно найти способ сквозного шифрования вашей электронной почты. Есть несколько способов сделать это.
Mailvelope часто рекомендуют эксперты по кибербезопасности и конфиденциальности. Он использует расширение браузера для добавления шифрования OpenPGP к службам веб-почты, включая Gmail, Yahoo! Почта и Outlook.com.
Существуют также безопасные провайдеры электронной почты:
ProtonMail: бесплатная зашифрованная электронная почта
ProtonMail позволяет получить безопасную учетную запись электронной почты бесплатно. Получите автоматическую защиту электронной почты, анонимную электронную почту, а также защитите свои данные и нейтралитет.
Мы можем получать комиссию, если вы перейдете по этой ссылке и сделаете покупку без дополнительных затрат для вас.
При использовании безопасных провайдеров электронной почты у вас обычно есть несколько вариантов работы с электронным письмом, отправленным кому-то, кто не пользуется тем же безопасным провайдером электронной почты. Вы можете создать пароль, который получатель должен будет ввести, чтобы прочитать ваше сообщение, или вы можете отправить электронное письмо в незашифрованном виде. Я настоятельно рекомендую использовать вариант пароля , если вы не уверены, что конфиденциальность вам не нужна.
Вы также можете добавить PGP, OpenPGP или GPG в свой почтовый клиент (программное обеспечение, которое вы используете для отправки и получения электронной почты).Инструкции различаются в зависимости от программного обеспечения электронной почты, которое вы используете, и выбранного вами программного обеспечения для обеспечения безопасности, поэтому вам придется искать инструкции.
Безопасен ли конфиденциальный режим Gmail?
Как насчет конфиденциального режима Gmail? У него есть несколько хороших функций, но не заменяет безопасный обмен сообщениями . Это не сквозное шифрование. Google все еще может читать электронные письма (и, по-видимому, то же самое может любой, к которому Google предоставляет доступ). И Google хранит электронные письма даже после истечения срока их действия .Узнайте больше в этой статье EFF.
Текстовые сообщения более безопасны, чем электронные письма? Или электронная почта более безопасна, чем текстовые сообщения?
После всех этих разговоров о небезопасности электронной почты и SMS / текстовых сообщений вы можете задаться вопросом, , что более безопасно: электронная почта или текстовые сообщения?
Как я объяснял в этом посте, ни электронная почта, ни текстовые сообщения не должны считаться конфиденциальными или безопасными (, если вы не используете сквозное шифрование электронной почты ).
Но возвращаясь к вопросу, краткий ответ: это зависит от обстоятельств.Это связано с тем, что безопасность текстового сообщения или электронного письма определяется многими факторами.
- Безопасность устройства отправителя
- Безопасность электронной почты или телефонной службы отправителя
- Безопасность электронной почты или телефонной службы получателя
- Безопасность устройства получателя
Электронное письмо от одного пользователя Google / Gmail другому пользователю Google / Gmail, если у обоих пользователей есть надежные пароли и двухфакторная аутентификация в своих учетных записях Google, будет достаточно безопасно. Электронное письмо останется зашифрованным, поскольку оно передается на серверы Google.
Электронное письмо от пользователя Google / Gmail кому-то, кто пользуется услугами небольшого поставщика услуг электронной почты с плохой безопасностью, и оба пользователя имеют слабые пароли и не имеют двухфакторной аутентификации, будет весьма небезопасным.
Итак, единого уровня безопасности электронной почты не существует.
То же самое и с текстовыми сообщениями. У разных поставщиков услуг телефонной связи разные уровни безопасности, которые определяют, являются ли отправленные вами текстовые сообщения безопасными. Текстовые сообщения, передаваемые между поставщиками услуг, вероятно, будут менее безопасными, чем сообщения, отправляемые одним и тем же поставщиком.Поскольку текстовые сообщения также можно отправлять с телефонных номеров в Интернете (например, Google Voice), что еще больше усложняет вопрос.
Мой совет, который я объяснил выше: используйте безопасный мессенджер для любых конфиденциальных сообщений. Не доверяйте электронной почте или SMS / текстовым сообщениям ничего конфиденциального . Таким образом, вам больше не придется задавать ни одного из следующих вопросов.
- Безопасны ли текстовые сообщения?
- Безопасна ли электронная почта?
- Являются ли текстовые сообщения личными?
- Являются ли электронные письма конфиденциальными?
С доверенным приложением для обмена сообщениями вы можете быть уверены в передаче информации по электронной почте или SMS, просто убедитесь, что вы можете доверять человеку или компании, которым вы отправляете эту информацию.
Дополнительная литература
Что делать
- Подумайте о том, как вы обмениваетесь конфиденциальной информацией. Текст? Файлы? Аудио-разговоры? Видео разговоры?
- Подумайте, с кем вы обмениваетесь конфиденциальной информацией. Какое программное обеспечение вы можете разумно ожидать от них использовать?
- Изучите варианты безопасного обмена сообщениями, которые подходят для определенных вами вариантов использования. Используйте ресурсы из раздела Дополнительная литература выше. Сигнал — хороший вариант.
- Когда вам нужно обменяться конфиденциальной информацией, используйте выбранные вами инструменты. Возможно, вам понадобится помочь человеку, с которым вы общаетесь, с помощью того же инструмента.
- Когда другие отправляют вам конфиденциальную информацию через незашифрованную электронную почту или текстовые сообщения, поговорите с ними об опасностях и о том, как использовать более безопасные варианты.
Мы можем получать комиссию, если вы перейдете по этой ссылке и сделаете покупку без дополнительных затрат для вас.
Как зашифровать выделенный текст и текстовые файлы целиком с помощью Notepad ++
Notepad ++ — популярный текстовый редактор и замена Блокнота со многими полезными функциями.Одна из его лучших функций — поддержка плагинов. NppCrypt — это надстройка Notepad ++, которая позволяет шифровать выделенный текст или целые текстовые файлы. Если вы не хотите использовать BitLocker в Windows 7 или TrueCrypt, вот как вы можете использовать Notepad ++ для шифрования текстовых файлов.
Установите плагин Notepad ++ и NppCrypt
Шаг 1: Загрузите и установите Notepad ++.
Шаг 2: Запустите диспетчер подключаемых модулей, выбрав Подключаемые модули> Диспетчер подключаемых модулей> Показать диспетчер подключаемых модулей.
Шаг 3: Выберите NppCrypt из списка подключаемых модулей, затем нажмите кнопку «Установить». Разрешите Notepad ++ перезагрузиться после завершения установки NppCrypt.
Скриншот Эда Ри / CNET
Зашифровать текст
Шаг 1: Чтобы зашифровать выделенный текст, выберите текст, который вы хотите зашифровать, затем перейдите в Plugins> NppCrypt> Encrypt.
Шаг 2: Выберите шифр, который хотите использовать, затем введите пароль.
Скриншот Эда Ри / CNET
Чтобы зашифровать весь файл, просто перейдите в NppCrypt, не выделяя никакого текста, и выберите «Зашифровать».