| |
[Есть мнение что криптография – панацея от всех болячек компьютерной безопасности. Что ж, так это или нет решать тебе. Всё равно в России что-либо защищать нельзя – придет к тебе нехороший дядя с секатором и пощёлкает им перед твоими глазами... и ты сам добровольно отдашь все ключи... и закрытые... и открытые. Но если не страшен секатор то я расскажу как можно спрятать от чужих глаз то что им видеть не следует... А главное как это работает и как это использовать.] |
Cryptos Logos... спрятать навсегда! [часть 1]
Если ты никогда не сталкивался с проблемами компьютерной безопасности, то скорее всего не подозреваешь что такое криптология и различия между алгоритмами, ключами и цифровыми подписями для тебя довольно туманны и кажутся очень сложными. Впрочем, всё это действительно довольно не просто, но если не вдаваться в ненужные (кому ненужные, а кому и нужные) подробности, то это не так уж и страшно. Посмотрим на ситуацию, как это модно сей час говорить, в респерспективе.
Что это?
Криптология сей час рассматривает два направления – криптография и криптоанализ. Как известно криптография занимается созданием алгоритмов преобразования информации в недоступную третей стороне абракадабру и последующей дешифровкой у получателя. Третья же сторона, между прочем, тоже сложа руки не сидит и активно пытается расшифровать зашифрованную кем-то информацию – то есть криптоанализом. Фактически они выполняют прямо противоположные задачи. Помимо шифрования криптография занимается и проблемами создания цифровых ключей и подписей, но об этом в следующей части нашего повествования. Возможно возникнет вопрос о том как криптоаналитики получают в своё распоряжение алгоритмы шифрования? Сей час в мире существует несколько различных, довольно престижных конкурсов, на выбор правительственного стандарта шифрования, на которые выдвигаются разные алгоритмы шифрования. Криптоаналитики же их тщательно исследуют и таким образом отсеивается некоторое количество алгоритмов подверженных взлому. Стоп! А что же такое взлом алгоритма? Нууу... это так сказать, нахождение способа расшифровать алгоритм, эксплуатируя его недоработки, и несовершенство реализации. Идеальным будет алгоритм который можно расшифровать только прямым перебором всех возможных ключей. Таких алгоритмов в настоящий момент крайне мало. Некоторые алгоритмы всё же имеют некоторые уязвимости позволяющие подобрать нужный для дешифрования ключ быстрее чем прямым перебором (хакеры называют прямой перебор пароля или ключа «брутфорсом»), но тем ни менее временные затраты на этот подбор могут составлять десятки и сотни лет при текущем быстродействии компьютеров. Но даже нестойкие алгоритмы шифрования довольно часто используются. Например, они используются в таких программах, как WinZip, WinRAR, Microsoft Office... Именно на основе несовершенства криптографических алгоритмов, используемых в этих программах и построена работа программ позволяющих «вспомнить» пароль от архивов или файлов созданных этими программами за считанные секунды. Сей час достаточно стойкими алгоритмами считают: Blowfish, IDEA, PGP, ГОСТ 28147-89, DES (AES), RSA.
Симметричные и ассиметричные алгоритмы шифрования.
Большинство криптографических алгоритмов относятся или к алгоритмам с закрытым ключом, или к алгоритмам с открытым ключом шифрования. Итак, в чём же разница между ними?
Алгоритмы с открытым ключом – достаточно новое изобретение, требующее достаточно внушительной производительности, даже от современных компьютеров, поэтому было вполне логично ожидать их появления только после развития ЭВМ. Поэтому до их появления использовались абсолютно другие алгоритмы шифрования данных. Во времена первой и второй мировых войн было сделано достаточно много изобретений, среди которых были и довольно хитрые алгоритмы шифрования данных. Среди них в основном были алгоритмы с закрытым ключом.
Алгоритмы с закрытым ключом довольно часто называют ещё и симметричными – как шифрование, так и дешифровка в таком случае происходят при использовании одного и того же ключа.
Возникает проблемная ситуация: если корреспонденцию перехватывают, то как же сообщить получателю секретный ключ? Если его перехватят, то все шифры можно будит дешифровать. При этом вполне возможно, что злоумышленник будет хранить ещё и все твои старые сообщения и таким образом сможет легко расшифровать всю старую переписку, перехваченным ключом. Поймать текстовое послание во всемирной сети Интернет, не так уж сложно как может показаться на первый взгляд, ведь такие проблемы как сниффинг, Трояны, кража пароля, социальная инженерия и т. д., до сих пор не решены, и их решение не предвидится в обозримом будущем, от чего становится только ещё более грустно... Несколько нелогично передавать свою корреспонденцию, шифруя её алгоритмами с закрытым ключом, если нет уверенности в том, что ключ будет сохранён в тайне. Несмотря на это такие алгоритмы довольно часто используют, например, для шифрования архивной информации, утечка которой нежелательна, да и вообще любой информации, которую не надо никому пересылать, и соответственно нет опасности перехвата ключа. Такие алгоритмы не слишком прожорливы до системных ресурсов и многие довольно успешно работают с зашифрованными таким образом жёсткими дискам, при этом расшифрование происходит «на лету» и можно работать с зашифрованными программами.
Более сложными являются алгоритмы с открытым ключом. В такой ситуации у тебя появляются закрытый ключ, который нельзя никому сообщать и хранить его надо вообще в тайне, и открытый ключ, который моно печатать на бумажках и раздавать у метро, выкрикивать на улице (интересно как это будет выглядеть при длине ключа в 128 бит :)?) и давать хакерам. Имея только открытый ключ расшифровать сообщение крайне проблематично. Он используется только для отправки зашифрованной информации тебе, и никому другому. Когда сообщение зашифруют с твоим открытым ключом, расшифровать его можно будет, только используя и закрытый, и открытый ключи. Одним из минусов такого метода является то, что ассиметричное шифрование требует большой мощности от ПК. А другая, то, что отправитель не сможет потом перечитать своё сообщение, после того как он его тебе зашифрует и отправит (не станешь же ты выдавать ему свой закрытый ключ?). Ассиметричные алгоритмы получили, наверное, самое большое применение при переписке.
Генераторы случайных чисел
Никогда не думал над тем как работают генераторы случайных чисел? Ведь компьютер – это ЭВМ. А ЭВМ – это электронно-вычислительная машина. Комп умеет считать, но как же его заставить выбросить случайное число? Все из мне известных языков программирования имеют генераторы случайных чисел. Как же они их генерируют? Ведь будет очень неприятно, если ключ окажется не случайно сгенерирован, и кто-то сможет получить такой же...
Те генераторы случайных чисел, которые встроены в языки программирования крайне не стойкие. Их, разумеется, вполне хватает на написание игрушек, но криптография – веешь серьёзная и тут такие ошибки не допустимы. Поэтому надёжными можно считать только те программы для шифрования, которые имеют встроенные генераторы случайных чисел. Генерируются они, как правило, на основе наиболее случайных из всех данных, которые может получить компьютер. Это и временной интервал между нажатиями на кнопки клавиатуры, это и скорость передвижения курсора по экрану, и температура процессора, полученная с термодиода, и температура внутри блока питания, да много ещё чего могут придумать кодеры... Так что их скорее правильнее называть генераторами псевдослучайных чисел.
Довольно хорошая секретность
Про PGP слышали все, пользуются им многие, но немногие знают, как он работает. Считается, что Pretty Good Privacy обеспечивает довольно хорошую конфиденциальность и именно благодаря ему массам стала доступна криптографическая защита, да ещё и бесплатная... Да Филлип Зиммерманн создал воистину гениальный алгоритм.
Везде пишут и говорят, что PGP является ассиметричным алгоритмом. На самом деле это не совсем так. Если тебе интересно, то PGP использует в себе сразу два алгоритма – симметричный и ассиметричный. Причём довольно хитро использует... таким образом не сильно ударяя по производительности. Итак, сначала генерируется случайным (или псевдослучайным?) образом ключ, для текущего сеанса передачи сообщения. С этим нашим ключом мы симметрично шифруем наше сообщение алгоритмом IDEA. Замечательно. Мы поучили зашифрованное сообщение. Но ведь тебе бы хотелось бы ещё как-то передать этот ключ, не так ли? Ну теперь можно зашифровать ассиметрично, ключ текущего сеанса, для этого используется открытый ключ адресата. Зашифрованный ключ сеанса присоединяется к сообщению, и отправляются адресату. Получатель при помощи его закрытого и открытого ключа открывает ключ сеанса и дешифрует сообщение. Ууу математики и шахматисты тут же скажет что алгоритм очень красивый. Ну я не шахматист, gnuChess у меня довольно быстро выигрывает, так что я лучше скажу что не стоит слишком сильно доверять PGP. Никто не гарантирует что в нём нет лазейки, допустим для ФБР. Так что постарайтесь трезво оценивать возможности потенциального перехватчика и соответственно выбирать длину ключа и алгоритм. PGP стал практически стандартом де-факто при переписке в сети. Лично я глубоко убеждён что правительство любой страны не любит, когда от него тут секретничают, и давно уже обратило внимание на PGP. Я сильно удивлюсь, если у «ребят из ФБР» нет способа вскрыть шифр сделанный PGP при использовании длинны ключа в 1024 бита, за пару секунд. И ещё я сильно удивлюсь, если этот способ ему предоставила не та же самая компания, что сей час выпускает PGP. Одно дело шифровать переписку от не в меру любопытного админа, конкурента по бизнесу, или подростка из твоей домашней сети, а совсем другое от действительно серьёзных людей и тем более, государства.
продолжение следует...
Эта статья прочитана 4317 раз.
|