NexxDigital - компьютеры и операционные системы

20 мая 2017г. на фестивале научных лекций ТЕДх в Новосибирске Леонид Каганов прочел интереснейшую лекцию об истории криптографии и, соответственно, истории появления и развития криптовалюты.

От шифровальных машин к шифрованной почте, браузеру Tor и, наконец, криптовалюте.

Когда появится видео лекции, мы его сюда добавим, а пока — иллюстрированная расшифровка лекции. Enjoy!

TEDx про криптографию

Самая яркая отрасль, технология будущего - это вовсе не IT, не вычислительная техника, а криптография.

Вообще вся наука о шифровании - это такая красивая сказка, которую может рассказать дилетант дилетантам, и она все равно останется красивой и остросюжетной. И я ее вам расскажу.

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

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

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

Цель работы была одна: вскрывать шифр вермахта «Энигма» и читать радиограммы фашистских штабов.

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

Хотя давно пора было знать: ведь впервые шифр «Энигмы» удалось расшифровать полякам еще в 1932 году при помощи утечек, математической теории и построения специального устройства для расшифровки. Но немецкие инженеры просто усложнили шифр «Энигмы». Мы все переделали, и уж больше такого не случится.

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

Но вернемся к «Энигме». Шифр научились вскрывать - в Блечли Парк летели подслушанные радистами сигналы, и возвращались в штабы антигитлеровской коалиции в виде прозрачных планов, сводок и донесений немецкого командования.

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

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

Шли годы, шифры стали сложнее, а методы их взлома - изощреннее. Но до какого-то момента бытовало мнение, что если накопить достаточно материала (перехваченных депеш) и если будет достаточно времени, то государственная разведка с помощью суперкомпьютеров вскроет любой шифр. А на крайний случай всегда остается старая дерзкая спецоперация: можно арестовать радиста, захватить с тыла вражеский штаб с шифрами, подослать к шпиону головокружительную разведчицу - в общем, любым способом выкрасть или заставить отдать шифр. «Мы все переделали, и такого больше не случится…»

Но в 1977 возникла проблема - появилось шифрование нового поколения: несимметричное шифрование RSA (по фамилиям разработчиков: Rivest, Shamir, Adleman). Бесстыдство нового метода состояло в том, что депеши не надо было даже прятать: их можно было гнать совершенно открыто по открытым каналам, пусть противник слушает, никакого материала накопить ему не удастся. Потому что главная подлость заключалась в том, что у нового поколения шифров не было ключа, который должны знать двое - отправляющий и получающий. (Ведь как мы помним из пословицы, знают двое - знает и свинья).

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

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

Алгоритм RSA по вашей просьбе рождает случайную пару из двух ключей. Например, это числа: 5 и 0.2 Конечно, вы догадываетесь, что они не случайные. Но чисто внешне общего у них довольно мало. Один из этих ключей открытый: 5. Вы его можете писать на заборах, публиковать в газетах и подписывать им свои бумажные письма: мол, каждый, кто хочет послать мне шифровку, просто каждую цифру (или номер буквы) должен умножать на 5. А закрытая половина - 0.2 хранится в тайне только у вас. Получая от своих собеседников закодированные цифры, вы просто умножаете их на 0.2 и получите расшифровку!

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

Пока спецслужбы решали, как им отныне жить с этой проблемой государственных шпионов и военных радистов, подоспел интернет, в который побежали огромные толпы простых людей. А в 1991 программист Филипп Циммерман написал программку PGP, в которой подарил шифрование RSA всем желающим для электронной переписки, которую невозможно вскрыть…

Спецслужбы США - как любые спецслужбы любой страны - испокон веков считали своим законным правом читать всю переписку граждан. В интересах государства, разумеется, не просто так. И в послевоенные десятилетия им показалось, что они наконец-то получили такую возможность, и так отныне будет всегда. Поэтому программу PGP восприняли как страшный плевок в душу. И пришли в такое огорчение, что для начала пытались посадить Циммермана в тюрьму. Негодование спецслужб было совершенно искренним и по-человечески понятным.

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

Следующая веха криптоистории стартовала в 2002 году, когда исследовательская лаборатория ВМС США решила рассекретить свою разработку: систему Tor, которая позволяет пользователям шифрованно пользоваться интернетом, оставаясь неуловимым - все пакеты проходят через случайную цепочку серверов Tor по непредсказуемым странам и континентам, и невозможно выяснить, кто и откуда отправил пакет. Это позволяло, например, разведчику в Уганде отправить донесение в посольство в Копенгагене так, чтобы в Уганде никто об этом не узнал.

Можно сказать, в 2002 году родился второй интернет: уже полностью анонимный и зашифрованный. Со своими сайтами, шпионами и черными делами. ВМС США крепко пожалели о своем детище, но было поздно - технология ушла в народ. А через год появился I2P (invisible internet project) - примерно похожая технология, и стало совсем грустно.

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

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

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

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

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

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

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

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

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

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

Но прошло десять лет, и теперь у меня в руке под кожей маленький электронный чип, отвечающий сканеру шифрованным радиосигналом. Он свидетельствует, что он - это именно он. А значит, пришел я. Сканеры отпечатков ушли в прошлое. Сканеры сетчатки так и не вошли в быт. Сканеры ДНК мелькали в фантастическом кино, и наши дети будут смеяться над этой наивностью. Почему? Нашим миром уже давно управляют законы криптографии, а не материи. Например, такая простая штука, как компрометация данных… Проще всего один раз украсть ваш стакан и получить отпечатки пальцев и ДНК. И всё - злоумышленник пожизненно получает доступ к дверце вашей банковской ячейки. Повторить в материи палец с вашим отпечатком - вопрос технологий, особенно в эпоху развивающейся 3D-печати. А вот сменить себе на руках отпечатки - задача нерешаемая. В отличие от кода чипа, который можно легко перепрошить.

На Международном хакерском конгрессе в Германии Ян Крисслер (Jan Krissler), известный как Starbug, показал, как можно легко подделать отпечатки пальцев по фотографиям . Ему удалось создать рабочий макет подушечки пальца министра обороны Германии Урсулы фон дер Ляйен по нескольким фотографиям, сделанным хорошим фотоаппаратом на пресс-конференциях и встречах.

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

"Защита информации" – более широкое понятие по сравнению с понятием "криптографической защиты". Защита информации может обеспечиваться различными методами (физическими, методами стеганографии, др.), в том числе и криптографическими. Под криптографическими методами защиты информации понимаются такие, которые используют математические способы преобразования защищаемой информации (см. «Словарь криптографических терминов», под ред. Б.А. Погорелова, В.Н. Сачкова, МЦНМО, М., 2006.).

  • Определения шифра Вы можете посмотреть в словаре. Однако очень часто в рунете, да и в литературе тоже, путают эти понятия. Выделим основное отличие на понятийном уровне. Код это преобразование информации, в котором НЕ участвует секретная составляющая в виде ключа, примером кода является base64 - схема, по которой произвольная последовательность байт преобразуется в последовательность печатных ASCII символов. Шифр – это преобразование, в котором участвует в каком-либо виде секретная составляющая (ключ). Примерами шифров являются алгоритмы AES или ГОСТ 28147-89.

  • Вы знаете из словаря, что аутентификация - это доказательство пользователя что он - это он. Обычно пользователь это доказывает обладанием некоторого знания (пароль, ключ и т.п.) Протокол аутентификации - это процедура этого доказательства. Протоколы аутентификации различаются числом шагов: 2-проходные, 4-проходные. Также бывает односторонняя и взаимная аутентификация. Например, если Вы заходите на почтовый сайт, и сайт просит Вас ввести пароль это будет 2-проходная односторонняя аутентификация, т.е. Вы аутентифицировались перед сервером и протокол состоял из двух шагов: запрос, ответ. Более сложные протоколы работают, например, в рамках протокола TLS, там может использоваться 5-ти проходная взаимная аутентификация, которая совмещается с протоколом открытого распределения ключей.

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

  • Определения данных понятий Вы можете найти в словаре, а здесь поясним в чем их различие. Для нормальной работы инфраструктуры открытых ключей (PKI) необходимо наличие центра доверия, обычно это удостоверяющий центр (УЦ). Сертификат - это подписанный удостоверяющим центром открытый ключ пользователя. Сертификат может содержать еще много информации, они выстраиваются в цепочки сертификатов, но главная задача сертификата - удостоверить что открытый ключ именно ВАШ.

  • В первую очередь Вам следует запастись терпением. Криптография – наука сложная. Для изучения криптографии также является необходимым знание математики на высоком уровне (студент 3го курса математических/технических специальностей – уровень необходимый, но не достаточный). Для начала можно воспользоваться книгой А.П. Алферов, А.Ю. Зубов, А.С. Кузьмин, А.В. Черемушкин, «Основы криптографии», Гелиос АРВ, М., 2001. Также неплохой вариант: Б. Шнайер «Прикладная криптография: Протоколы, алгоритмы, исходные тексты на языке Си», Триумф, М., 2002, - более популярный, но, на мой взгляд, более слабый вариант. На следующем этапе нужно уже определиться со специализацией, и… Удачи!

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

  • Под “совершенными” понимают такие шифры, при анализе которых криптоаналитик не может получить никакой информации об открытом тексте, имея в распоряжении шифртекст. Казалось бы, все шифры, которые стоит использовать на практике должны обладать свойством “совершенности”. Однако это не так, причем практически всегда. Дело в том, что свойство “совершенности” требует использования огромного количества ключевой информации (объем которой равен совокупному объему всех открытых текстов). Данное условие является крайне непрактичным, поэтому, как правило, используют шифры, совершенные в неклассическом смысле: оптимальные по скорости/цене реализации и криптографической стойкости. Шифры, совершенные относительно этих свойств в определенный момент времени, часто стандартизируются государственными и/или международными организациями.

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

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

  • Алгоритмы шифрования

    • Шифры разделяются на блочные и поточные по следующему признаку. Первые оперируют сразу с большим блоком информации (64, 128, 256 бит), вторые вырабатывают знаки шифрующей последовательности меньшей длины (1, 4, 16, 32 бита). В некотором приближении данное различие можно считать условным. Как правило, блочные шифры отличаются от поточных принципами строения. Также, обычно поточные шифры работают в режиме гаммирования, т.е. вырабатывают шифрующую последовательность, которая затем накладывается (суммируется) с последовательностью основного текста. Для блочных же шифров отдельно разрабатываются различные режимы использования (в том числе, режим гаммирования). Исторически поточные шифры использовались на платформах с ограниченными ресурсами (вычислительными, малым объемом памяти), или для обеспечения высокой скорости шифрования. Однако в настоящее время на подавляющем большинстве платформ использование блочных шифров является приемлемым. Поточные шифры продолжают использоваться (Э. Бихам) в случае необходимости иметь сверхскоростной программный шифр, а также в случае аппаратной реализации шифра в массовых дешевых изделиях.

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

    • Чисто теоритически почти для любого шифра можно определить ключ шифрования (или дешифровать шифртекст). Другой вопрос: за сколько времени? Пусть длина ключа равна n бит. Если Вы используете «хороший» алгоритм шифрования, то для него не существует методов нахождения ключа с трудоемкостью меньше чем 2^n (операций опробования одного ключа). В этом случае длины ключа, равной 128 битам, более чем достаточно. Можно также порекомендовать НЕ использовать ключи длиной меньше 64 бит. В то же время, если у Вас не возникает неудобств с хранением, передачей ключей, со скоростью шифрования, то всегда нужно использовать ключ максимальной длины из возможных для Вашего алгоритма шифрования.

    • Чтобы ответить на этот вопрос, нужно в первую очередь определить, по каким критериям следует сравнивать шифры. В первую очередь, это, конечно же, криптографическая стойкость. Во вторую – скорость программной (аппаратной) реализации. Шифры можно также сравнивать по следующему критерию: количество различных платформ, на которых они могут быть реализованы. (Следует учитывать, что платформы, на которых возникает необходимость реализации шифрования, могут быть весьма различными: от высокопроизводительных ЭВМ до смарт-карт.). Что касается криптографической стойкости, то на данный момент и американский стандарт AES и отечественный ГОСТ 28147-89 можно считать стойкими. В плане быстродействия отечественный стандарт уступает американскому (не стоит забывать, что отечественный стандарт старше американского на 10 лет!), однако скорость его работы достаточна для подавляющего большинства практических целей. Оба стандарта шифрования позволяют создавать реализации на самых различных платформах, в том числе с ограниченными ресурсами. В то же время, следует отметить, что для реализации шифра ГОСТ 28147-89, требуется меньше памяти. Таким образом, нельзя однозначно заключить, какой шифр «лучше». Если добавить в критерии оценки шифров такое свойство, как «патриотизм», то однозначно побеждает отечественный стандарт ГОСТ 28147-89.

    • В первую очередь, алгоритм шифрования должен быть стойким. Во вторую – с достаточно высокой скоростью шифрования. Наибольшее число вопросов у пользователя может вызывать первое условие. Определить, что шифр является стойким может лишь большая группа профессиональных криптографов в течение длительного периода времени (для этого и проводятся в Европе и США конкурсы на различные криптографические алгоритмы). Обычному пользователю, а иногда даже крупной компании, такие трудоемкие исследования, как правило, оказываются неподсилу. Специально для вас существуют стандартизированные решения. В нашей стране это алгоритм шифрования ГОСТ 28147-89. Стандартизированные решения подходят практически в любой ситуации. Однако бывают исключительные случаи (см. ответ на вопрос из ФАКа «Существует ГОСТ на шифрование, зачем нам еще какие-то шифры и алгоритмы?»). Какой шифр использовать в таких ситуациях – зависит уже от множества различных условий, и общего рецепта здесь дать нельзя.

    • Основная цель использования алгоритма шифрования – обеспечение конфиденциальности информации. Следует отметить, что существует огромное количество шифров, удовлетворяющих этой цели. Однако при практическом использовании алгоритма шифрования к нему могут предъявляться дополнительные требования. Приведем некоторые из них: а. Высокая скорость программной реализации шифрования на определенной платформе. При этом конкретная платформа может варьироваться от обычных ПК до процессоров на смарт-картах. б. Высокая скорость аппаратной реализации и низкая стоимость конечного изделия. При аппаратной реализации каждая операция, используемая при шифровании вносит определенный вклад в стоимость конечного изделия. в. Определенные особенности ключевой структуры. Например, шифрование большого (небольшого) объема информации на одном ключе, частая смена ключей. г. Необходимость наличия дополнительных свойств, например, синхронизации. д. Особые сферы применения. В качестве примера можно привести алгоритмы шифрования для устройств RFID. В последнем случае идут даже на снижение стойкости шифра с целью его максимального упрощения. Для подавляющего большинства практических задач вполне подходят стандартизированные решения. Их можно и нужно использовать. Гарантией криптографической стойкости таких алгоритмов, как ГОСТ 28147-89 и AES, служит повышенный интерес к ним всего мирового криптографического сообщества.

    • Смотря для каких целей. Если хотите поиграть в шпионов – используйте на здоровье! Если же от стойкости Вашего шифра зависит конфиденциальность Ваших данных, финансовое состояние Вашей фирмы или Вас лично, то ответ – НЕТ. Человеку свойственно ошибаться, даже если он профессионал. Поэтому, перед тем, как начать практическое использование криптографического алгоритма, он проходит множество проверок различными экспертами. И процесс этот не быстрый: конкурс NESSIE (https://www.cosic.esat.kuleuven.be/nessie/) проводился в течение 3,5 лет; конкурс AES (http://csrc.nist.gov/groups/ST/toolkit/block_ciphers.html/) – почти 4 года; предполагаемые сроки проведения конкурса SHA-3 (http://csrc.nist.gov/groups/ST/hash/sha-3/index.html/) – 4 года. В общем, если Вам нужно шифровать более серьезные сообщения, чем «Сережка любит Светку из 8 “Б”», то используйте либо стандартизированные решения, либо криптоалгоритмы, прошедшие экспертизу высокого уровня.

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

    • Радужные таблицы (rainbow table) это особый вариант таблиц, который используется при алгоритмах поиска или перебора, основанных на принципе time-memory tradeoff (компромисс между временем поиска и размером таблиц). Существует несколько способов построения таких таблиц. Все они основаны на построении цепочек последовательного применения исследуемой функции и хранении только первой и последней точек данных цепочек. Известны классический метод, предложенный Хеллманом, метод основанный на выделенных точках и метод радужных таблиц. Все эти методы различаются так называемой функцией редукции. Для метода радужных таблиц эта функция состоит из последовательности различных функций. Это позволяет уменьшить число таблиц и увеличить их размер, т.к. уменьшается вероятность склеивания генерируемых цепочек. Самые известные атаки подобного вида: обращение хэш-функции MD5, атаки на A5/1 и DES.

    Криптография с открытым ключом, ЭЦП

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

    • У криптографии с открытым ключом есть свои плюсы и минусы. К плюсам можно отнести удобство в управлении ключами и возможность организовать процедуры подписи и ключевого обмена. Однако есть и минусы. Это сложность реализации, как правило, невысокая скорость реализации. Так же некоторые относят к минусам и то, что принципы, которые лежат в основе криптографии с открытым ключом, основаны на трудно решаемых математических задачах, которые однажды, кто-нибудь, может и решить. В общем случае, они, конечно, решены, но вот с практической точки зрения требуются БОЛЬШИЕ И ДОРОГИЕ компьютеры для их решения, которые не могут быть доступны простым гражданам или фирмам.

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

    • Используйте стандартизированные решения, например ГОСТ Р 34.10-2001. Очень хорошая стойкая схема.

    Функции хэширования

    • Долгое время самой распространенной функцией хэширования являлась MD5. В настоящее время эта функция хэширования продолжает использоваться во многих протоколах и приложениях. Однако в августе 2004 года для MD5 впервые предъявлены коллизии. Методы совершенствовались и теперь коллизии MD5 строятся уже за сотые доли секунды. Более того, имеются примеры так называемых мультиколлизий. Например, здесь (http://www.win.tue.nl/hashclash/Nostradamus/) можно найти 12 pdf файлов с различным и занимательным содержанием, но одинаковыми значения хэш-функции MD5 от них.

    • Для произвольного значения хэш-функции, на данный момент, нет. Хэш-функцию MD5 сломали относительно задачи построения коллизии. Но пока не разработано универсального метода построения прообраза для этой хэш-функции. Однако методы анализа MD5 развиваются очень стремительно и появление метода построения прообраза в ближайшее время весьма реально. Следует отметить, что при определенных предположениях задача построения прообраза решена уже на данный момент. Например, здесь (http://eprint.iacr.org/2011/248.pdf) решается задача восстановления пароля по значению хэш-кода MD5 от строки, состоящей из этого пароля и значения соли.

    • Криптографические функции хэширования используются для доказательства авторства, обеспечения целостности сообщений, идентификации и аутентификации сообщений или участников протокола. Наиболее распространено использование функций хэширования при вычислении электронной цифровой подписи (ЭЦП). В данном случае использование хэш-функций обусловлено необходимостью обеспечения криптографической стойкости и высокой скорости реализации вычисления ЭЦП. Хэш-функции также часто используются при идентификации пользователя с помощью пароля. Как правило, на сервере хранятся не сами пароли (по понятным причинам), а результат применения к ним функции хэширования (хэш-коды). При введении пользователем пароля, к нему применяется хэш-функция и полученный результат сравнивается с хранимым на сервере. Хэш-функции иногда используют для построения блочных (SHACAL) и поточных (SEAL) шифров, генераторов случайных чисел.

    • Ключевые функции хэширования (коды аутентификации сообщений, message authentication code, MAC), в отличие от бесключевых функций хэширования, при вычислении хэш-кода используют некоторую секретную информацию – ключ. Ключевые функции хэширования используются для обеспечения целостности информации и идентификации сообщений или пользователей. Один из наиболее распространенных вариантов построения MAC на основе бесключевой функции хэширования носит название HMAC. При вычислении хэш-кода с помощью HMAC используется двукратное вычисление бесключевой функции хэширования.

    • При криптографическом анализе хэш-функций, одной из основных рассматриваемых задач является задача построения коллизии. Другими словами, требуется найти два различных сообщения x и y, такие что значения их хэш-кодов совпадают. На первый взгляд может показаться, что если длина хэш-кода равна n бит, то найти коллизию для “идеальной” хэш-функции можно только с помощью перебора 2n различных сообщений. Но это не так, и в теории вероятностей это называется парадоксом задачи о днях рождениях. Задача о днях рождениях формулируется следующим образом:: какова вероятность того, что среди N учеников одного класса существуют двое, имеющие одинаковую дату рождения? Оказывается, что данная вероятность больше 0,5 уже при N=23. Задача о днях рождениях схожа с задачей поиска коллизии функции хэширования и для построения коллизии достаточно перебрать гораздо меньше, чем 2^n сообщений, а именно - порядка 2^(n/2).

    • При криптографическом анализе функций хэширования рассматриваются три основные задачи: 1. Построение прообраза. 2. Построение второго прообраза. 3. Построение коллизии. (см. основную статью о хэш-функциях). Существуют общие методы решения каждой из этих задач, применимые к любой функции хэширования. Некоторые считают хэш-функцию «сломанной», если для нее предложены методы решения какой-либо из задач 1-3 с трудоемкостью меньше трудоемкости общего метода. В 2008 году появился ряд работ австрийских и польских криптографов по анализу отечественного стандарта на хэш-функцию. Их усилиями трудоемкость решения основных задач криптоанализа для хэш-функции ГОСТ Р 30.11-94 существенно снижена по сравнению с общими методами анализа. В то же время, трудоемкость решения данных задач (как и требования на необходимый объем памяти) остается настолько большой, что не стоит опасаться продолжать использовать в дальнейшем отечественный стандарт на хэш-функцию (см. также статью о хэш-функции ГОСТ Р 30.11-94). При этом с 2013 года в России действует новый стандарт на функцию хэширования (http://www.standards.ru/document/5293367.aspx). Если кртако, то в новом алгоритме полностью поменяли структуру и увеличили размер хэш-кода.

    • «Сломали» - термин неформальный и его можно трактовать различными способами. В последнее время действительно появился целый ряд работ, показавших серьезные слабости алгоритмов хэширования MD5 и SHA-1. Этим результатам и выводам из них посвящена отдельная статья. Здесь отметим только основное. От использования данных хэш-функций нужно отказаться! Следует однозначно избегать их использовать в разрабатываемых системах защиты информации. В то же время, на данный момент существует лишь несколько практических примеров использования теоретических результатов по анализу хэш-функций SHA-1. В связи с этим, в тех случаях, когда переход на использование других алгоритмов хэширования связан с высокими затратами (прежде всего, финансовыми), продолжение использования SHA-1 возможно. При этом, однако, следует проводить дополнительные экспертизы системы защиты информации. От использования MD5 нужно отказаться КАТЕГОРИЧЕСКИ!

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

    Использование криптографии на практике

    • Что такое целостность данных Вы посмотрите в словаре, а мы рассмотрим методы ее обеспечения. Сначала теория. Обеспечение целостности данных это одна из задач, которую успешно решают с помощью функций хэширования. Если вычислить хэш-код от блока данных, то при практически любом, даже самом незначительном изменении блока данных хэш-код поменяется. И если Вы сохраняете хэш-код в безопасности, то это гарантирует Вам неизменность данных при передаче. Однако, если Вы передаете хэш-код вместе с данными, то использование обычных хэш-функций уже опасно, Вам необходимо применить ключевые хэш-функции, например HMAC. Задачу обеспечения целостности можно также решать с помощью шифрования или кодирования (например, процедурой архивации данных). Теперь о практике. Если вы хотите передать файл по сети и хотите быть уверены, что он дойдет в точности такой, какой был послан, Вы можете: - воспользоваться программой вычисления функции хэширования (самая популярная программа md5sum) и вычислить хэш-код от файла. Однако, во первых, вам надо убедиться что само значение хэш-кода никто не изменил, и, во вторых, репутация функции MD5 существенно подорвана, и лучше пользоваться другими функциями; - архивировать файл и передать архив. От случайных изменений это предохраняет, а если Вы боитесь намеренного изменения – архивируйте с паролем; - зашифровать файл, только при этом ключ шифрования не передавайте вместе с файлом; - и, наконец, подписать ваш файл с помощью ЭЦП (о том как это сделать, смотрите ФАК)

    • Для обмена зашифрованными или подписанными ЭЦП электронными письмами можно использовать стандартное решение PGP. Реализаций данного решения много, например http://www.gnupg.org/ . Для использования PGP Вам необходимо сгенерировать пару ключей: открытый и секретный. Затем необходимо передать по безопасному или доверенному каналу Ваш открытый ключ абоненту. Далее в любой почтовой программе типа The Bat или Outlook (в Bat проще!) создать письмо и подписать и/или зашифровать его, используя соответствующие пункты меню программы. Вашему абоненту останется просто проверить подпись или расшифровать письмо.

    • Как подписать письмо цифровой подписью смотрите в отдельном вопросе. Если Вы хотите подписать файл то Вам понадобиться развернуть у себя небольшую инфраструктуру открытых ключей, а именно сгенерировать себе открытый и закрытый ключ. Проще всего это сделать с помощью библиотеки openssl (http://www.openssl.org/). Утилитами genrsa можно получить открытый и секретный ключи необходимого размера, а утилитой rsautl подписать файл.

    • Существует множество утилит и программ для решения данной задачи. Например, программа TrueCrypt (www.truecrypt.org) позволяет создавать целые зашифрованные разделы. Для шифрования одного файла можно воспользоваться утилитой EncryptFiles http://www.encryptfiles.net . Данная программа позволяет шифровать файлы с использованием более 10 алгоритмов в том числе и AES. В самом крайнем случае можно воспользоваться архиватором с паролем, однако нужно помнить, что не все архиваторы обладают стойкой системой шифрования. Нельзя также забывать, что сложность восстановления Ваших данных в этом случае определяется не только алгоритмом шифрования, но и сложностью Вашего пароля.

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

    • Вопрос для отдельной статьи, ответим кратко. Самое простое - это создать свой самоподписанный сертификат. Это может легко сделать библиотека openssl. После чего заходите в конфиги своего любимого apache и прописываете пути к ключам и сертификату для организации TLS/SSL соединения. Если Вы хотите сделать это под Windows, то Вам понадобиться установленный CSP (Cryptographic Service Provider), можно установить и отечественный CSP (КриптоПро, Lissi csp и др.) с поддержкой отечественных стандартов на хэш-функцию, шифрование и ЭЦП. Далее Вам останется воспользоваться средствами этого самого CSP, ну или просто зайти на сайт, например, http://www.cryptopro.ru/certsrv/ и запросить там тестовый сертификат. Если Вы хотите прикрутить не самописный сертификат к своему сервису, можно заказать на http://www.startssl.com - там бесплатно можно получить сертификат для своего домена.

    • Получение качественных случайных чисел является сложной криптографической задачей. Для ее решения существуют как аппаратные так и программные средства. На практике можно воспользоваться как самыми простыми так и более сложными алгоритмами. Можно выписывать случайное число “из головы”, либо с помощью механических средств (монетка, кубики, домино т.д.). Затем, для повышения его “качества” желательно применить к нему хэш-функцию, добавив в качестве аргумента еще каких-либо псевдослучайных параметров (текущее время, дата, номер машины соседа и т.п.). Однако этот метод хорош для разового использования. Для получения большого числа случайных чисел желательно использовать программные средства. Почти в любом языке программирования есть функция rand(), которая генерирует псевдослучайное число. Однако следует помнить, что период данной функции обычно небольшой (216 или 232) и до ее использования необходимо задать первоначальное псевдослучайное заполнение (время, дата и тп). Существуют генераторы ключевой информации в программных криптографических пакетах (например, truecrypt). Многие открытые операционные системы собирают псевдослучайную информацию (движение мышки, нажатие клавиш и т.п.) в определенный файл (/dev/random). Можно воспользоваться онлайн-генераторами (http://random.org), однако алгоритмы их работы, как правило, не опубликованы.

    • Одноразовые пароли (One-Time Password, OTP) - это одно из средств решения задачи аутентификации пользователей. Ключевым свойством OTP является то, что пароль действует только для одного процесса аутентификации и в ограниченном промежутке времени. Данное свойство позволяет эффективно противостоять возможной компрометации пароля во время использования. Современные реализации таких систем строятся на основе электронных брелков (http://www.aladdin-rd.ru/catalog/etoken/otp/ , http://www.rsa.com/node.aspx?id=1215). Существуют различные схемы работы системы OTP, в самой простой из них сервер и клиентское устройство ведут счет уже полученных паролей и для новой аутентификации на обоих сторонах генерируется одинаковое случайное значение - пароль.

    • Для решения задачи соединения компьютеров в безопасную сеть в рамках общедоступной сети существует стандартный способ – организовать VPN с закрытым трафиком с помощью протокола IPSec. Способ хороший, но для частного использования, например двух компьютеров, может быть слишком громоздким. Можно использовать более простое решение – туннелирование. Организовать его не сложно: ставится сервер ssh. Для linux систем это не проблема, для Windows можно использовать freeSSHd (www.freesshd.com). Далее настраиваем туннель. Для linux способов много, для Windows можно использовать бесплатный клиент Putty, у которого существует возможность настройки туннеля. После успешной настройки трафик между двумя компьютерами (ftp, http, icq, и т.д.) можно направлять через зашифрованный канал ssh.

    • C паролями на архивы ситуация существенно зависит от программы архивации. Как правило, ни один архиватор пароль для архива в самом архиве не хранит. Шифруется, в основном, уже архивированный файл. Основная атака на архиваторы с паролем - это атака с известным открытым текстом, т.е. одним из файлов архива. Для наиболее известных архиваторов положение следующее: ARJ – не стойкий, любая длинна пароля вскрывается; ZIP – не стойкий, если только не используется AES; RAR – ранние версии уязвимы, версия 3.0 и старше использует в качестве шифра AES и достаточно стойки при хорошем пароле. Что касается Word и MS Office, то здесь ситуация схожая. Ранние версии офиса уязвимы и пароли легко вскрываются. Версии программы, начиная с Office XP/2003, содержат возможность установки более-менее стойкого пароля на открытие файлов, однако по умолчанию стоит пароль 40 бит, что очень опасно.

    • Вопрос о грамотной политике своих паролей не прост. Следует сказать, что скорость и возможность перебора паролей сильно зависит от того, кто и какой пароль подбирает. Например, если злоумышленник хорошо знает автора пароля, то, попробовав около 20 вариантов (например номер машины, имя жены, дни рождения или номер телефона) злоумышленник может добиться успеха. Следует так же заметить, что большое количество программ получают пароли в открытом виде, что облегчает задачу перехвата. Скорость перебора паролей сильно зависит от самого приложения, для которого он осуществляется. Приложение может содержать защиту от перебора, что очень осложнит сам перебор, однако нельзя забывать, что злоумышленник может украсть базу паролей и спокойно перебирать ее дома на своем компьютере. Тем не менее, скорость перебора иногда может достигать десятков миллионов вариантов в секунду. А значит, пароль из 5 символов очень слаб. Несложно посчитать, что для такой скорости и латинского алфавита из больших и малых букв (52 символа) время полного перебора 10 символьного пароля составит (52^10)/10000000/3600/24/365 = 458 лет. Для 6 символов время составит 33 минуты! Как выбирать хороший пароль смотрите в отдельной статье.

    • Если грамотно подходить к вопросу обеспечения безопасности своей точки доступа или WiFi канала, то проблем можно избежать. Дело в том, что протокол WEP (Wired Equivalent Privacy) - устаревший протокол обеспечения безопасности беспроводной IEEE 802.11 сети, имеет существенные уязвимости и использовать его на практике категорически не рекомендуется. В качестве замены протокола WEP был разработан сначала протокол WPA, а затем и протокол WPA2. Для обеспечения достаточного уровня безопасности беспроводной сети рекомендуется использовать протокол WPA2, режим шифрования AES и режим аутентификация либо PSK (предварительно распределенный ключ) для личного использования либо аутентификацию EAP. Более подробно о протоколах обеспечения безопасности сетей Wi-Fi смотрите в статье Wi-Fi - защита беспроводных сетей. В любом случае, когда используете общественную точку доступа даже с применением WPA - будте бдительны, не передовайте конфиденциальную информацию в открытом виде.

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

    • Это опасно! В этой ситуации возможны два случая. Первый, самый распространенный и менее опасный. Поддавшись российской привычке к халяве, или просто по неспособности, владельцы сайта не удосужились изготовить верный сертификат и продлевать его должным образом. Вместо этого они изготовили самоподписной сертификат и установили его на сайт (обычно он еще и просроченный). Это связано с тем, что для изготовления верного (валидного) сертификата необходимо его подписать в некотором Удостоверяющем Центре, а это, как правило, стоит денег. И второй, более опасный случай. Существует атака на протокол TLS методом «человек посередине» (Man-in-the-middle attack). Атака сводиться к тому, что злоумышленник подменяет собой сервер назначения (например gmail.com), использует свой самоподписной или просто «не верный» сертификат и предлагает его Вам в качестве сертификата сервера. Если вы игнорируете предупреждение браузера об опасности и соглашаетесь на начало сессии TLS, вы начинаете общение с компьютером злоумышленника по как бы защищенному каналу и рассказываете ему все свои «пароли и явки»

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

    Contents

    Оновные задачи криптографии

    В настоящее время криптогарфические функции применяются для решения следующих задач защиты информации:
    1. Обеспечение конфиденциальности информации .
    2. Обеспечение целостности информации .
    3. Аутентификация информации .
    4. Удостоверение авторства по отношению к сообщению или документу.
    5. Обеспечение неотслеживаемости информации .

    Основные понятия криптографии.

    Криптография – самостоятельная наука с особым предметом исследований и специфическими методами исследования, и, несомненно, эта наука имеет математическую природу. Наиболее отчётливо многообразие связей криптологии с математикой проявилось в двадцатом веке. Большое влияние на это имел выход в свет фундаментальный труд К. Шеннона «Теория связи в секретных системах». Впрочем и до этого события история криптологии была отмечена замечателльными научными трудами и практическим вкладом в криптоаналитические разработки многих математиков, таких, как Л. Б. Альберти(XVв.), Б. Виженер, Ф. Виета(XVI-XVII вв.), Л. Эйлер(XVIII в.) и др.

    Современная криптология

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

    Криптографическая система

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

    Ключ криптосистемы

    Практическое использование ключа криптосистемы подразумевает реализацию так называемого жизненного цикла ключа, т.е. выполнение таких действий с ключом, как генерация, распределение (рассылка) между пользователями, хранение, установка (с целью реализации при данном ключе криптографической функции для защиты информации), смена и уничтожение ключей. Протоколы, управляющие жизненным циклом ключей, называются ключевыми протоколами. Ключевое множество и ключевые протоколы образуют ключевую подсистему криптографической системы. В зависимости от задач защиты информации различают и выполняющие эти задачи криптографические системы. Для обеспечения конфиденциальности информации используется система шифрования, реализующая семейство E биективных функций множества сообщений, называемое шифром: E = {}, kK.

    Аутентификация сторон

    Для аутентификации сторон протокола используется система идентификации, для аутентификации сообщений – система имитозащиты, для обеспечения неотказуемости от авторства – система электронной цифровой подписи (ЭЦП).
    Сообщение, к которому применяется криптографическая функция шифра, называют открытым текстом, а само применение функции шифра к открытому тексту называется шифрованием или зашифрованием. Результат шифрования открытого текста называется шифрованным текстом или криптограммой.
    Шифр E можно рассматривать как семейство отображений , биективных по первой переменной, где X* и Y* - соответственно множество открытых и шифрованных текстов. Биективность функций шифра обеспечивает возможность восстановления открытого текста по шифрованному тексту. Применение к криптограмме обратного отображения с использованием известного ключа называется расшифрованием.
    Раскрытие криптоаналитиком информации, защищаемой шифром, называют дешифрованием (ключ расшифрования криптоаналитику неизвестен, т.е. неизвестно, какое именно отображение из семейства E использовано для шифрования). Разработанный криптоаналитиком метод раскрытия шифра или информации , защищаемой шифром, называют криптоаналитической атакой.

    Стойкость

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

    Классификация криптосистем .

    По принципам использования ключей криптосистемы разделены на системы с секретным и открытым ключом.

    Симметричные криптосистемы

    Системы с секретным ключом (основная статья "Симметричная криптосистема") используются на протяжении нескольких тысячелетий до настоящего времени и основаны на классическом принципе обеспечения конфиденциальности и информации: а именно, на секретности используемого ключа для всех, кроме лиц, допущенных к информации. Такие криптосистемы называют также симметричными в связи с тем, что ключи, используемые в них для реализации прямых и обратных криптографических функций, обладают определённой симметрией (часто они совпадают). Защита информации с помощью симметричных криптосистем обеспечивается секретностью ключа.

    В настоящее время симметричные шифры - это:

    Блочные шифры. Обрабатывают информацию блоками определённой длины (обычно 64, 128 бит), применяя к блоку ключ в установленном порядке, как правило, несколькими циклами перемешивания и подстановки, называемыми раундами. Результатом повторения раундов является лавинный эффект - нарастающая потеря соответствия битов между блоками открытых и зашифрованных данных.

    Поточные шифры, в которых шифрование проводится над каждым битом либо байтом исходного (открытого) текста с использованием гаммирования. Поточный шифр может быть легко создан на основе блочного (например, ГОСТ 28147-89 в режиме гаммирования), запущенного в специальном режиме.

    Большинство симметричных шифров используют сложную комбинацию большого количества подстановок и перестановок. Многие такие шифры исполняются в несколько (иногда до 80) проходов, используя на каждом проходе «ключ прохода». Множество «ключей прохода» для всех проходов называется «расписанием ключей» (key schedule). Как правило, оно создается из ключа выполнением над ним неких операций, в том числе перестановок и подстановок.

    Типичным способом построения алгоритмов симметричного шифрования является сеть Фейстеля. Алгоритм строит схему шифрования на основе функции F(D, K) , где D - порция данных, размером вдвое меньше блока шифрования, а K - «ключ прохода» для данного прохода. От функции не требуется обратимость - обратная ей функция может быть неизвестна. Достоинства сети Фейстеля - почти полное совпадение дешифровки с шифрованием (единственное отличие - обратный порядок «ключей прохода» в расписании), что сильно облегчает аппаратную реализацию. Операция перестановки перемешивает биты сообщения по некоему закону. В аппаратных реализациях она тривиально реализуется как перепутывание проводников. Именно операции перестановки дают возможность достижения «эффекта лавины».

    Операция перестановки линейна -

    f(a) xor f(b) == f(a xor b)

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

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

    Криптосистема с открытым ключом

    Системы с открытым ключом (основная статья "Асимметричная криптосистема") были предложены американскими криптографами Диффи и Хеллманом в 1975году, в настоящее время они активно применяются для защиты информации. Другое их название – асимметричные системы , так как в них ключи шифрования и расшифрования не связаны явным отношением симметрии или равенства. Ключ шифрования может быть открытым, известным для всех, но расшифровать сообщение может только пользователь, обладающий секретным ключом расшифрования, который, во избежание путаницы с ключом симметричной системы, обычно называют закрытым ключом. Вычисление ключа расшифрования по ключу шифрования, т.е. раскрытие шифра, увязано с решением математических задач, характеризуемых высокой сложностью решения. К таким задачам относятся, например, задача поиска делителей большого натурального числа и задача логарифмирования в конечных полях большого порядка. Идея криптографии с открытым ключом очень тесно связана с идеей односторонних функций, то есть таких функций f(x) , что по известному x довольно просто найти значение f(x) , тогда как определение x из f(x) невозможно за разумный срок.

    Пусть K - пространство ключей, а e и d - ключи шифрования и расшифрования соответственно. E - функция шифрования для произвольного ключа eϵK , такая что:

    E(m)=c

    Здесь cϵC , где C - пространство шифротекстов, а mϵM , где M - пространство сообщений. D - функция расшифрования, с помощью которой можно найти исходное сообщение m , зная шифротекст c:

    D(c)=m

    {E: eϵK} - набор шифрования, а {D: dϵK} - соответствующий набор для расшифрования. Каждая пара (E, D) имеет свойство: зная E , невозможно решить уравнение E(m)=c , то есть для данного произвольного шифротекста cϵC , невозможно найти сообщение mϵM . Это значит, что по данному e невозможно определить соответствующий ключ расшифрования d . E является односторонней функцией, а d - лазейкой. Ниже показана схема передачи информации лицом А лицу В. Они могут быть как физическими лицами, так и организациями и так далее. Но для более лёгкого восприятия принято участников передачи отождествлять с людьми, чаще всего именуемыми Алиса и Боб. Участника, который стремится перехватить и расшифровать сообщения Алисы и Боба, чаще всего называют Евой.

    Международная группа исследователей информационной безопасности из Великобритании, Словакии, Чехии и Италии обнаружила критическую уязвимость в популярной библиотеке шифрования RSA Library v1.02.013 от Infineon. Ошибка в алгоритме для генерации простых чисел RSA, делает сгенерированные с помощью библиотеки Infineon ключи шифрования подверженными факторизации - это позволяет злоумышленникам раскрывать секретную часть ключа.

    Уязвимая библиотека применяется для обеспечения безопасности национальных ID-карт в нескольких странах, а также во многих популярных программных продуктах, используемых как государственными органами, так и бизнесом.

    В чем проблема

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

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

    Первые последствия

    Исследователи проверили национальные ID-карты четырех государств, и быстро выяснили, что как минимум карты двух стран - Эстонии и Словакии - используют для обеспечения безопасности уязвимые ключи длиной 2048 бит. Эстонские власти подтвердили наличие уязвимости , заявив о том, что с 2014 года было выпущено около 750 тысяч уязвимых карточек. Один из журналистов издания Ars Technica в 2015 году получил карточку «электронного резидента Эстонии» - эксперимент показал , что использующийся в ней ключ поддается факторизации.

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

    Исследователи также проверили 41 модель различных ноутбуков, использующих чипы TPM - в 10 из них используется библиотека от Infineon. Уязвимость оказывается особенно серьезное влияние в случае TPM версии 1.2, поскольку те ключи, что система использует для контроля работы шифровальщика BitLocker от Microsoft подвержены факторизации. Это значит, что любой, кто украдет или завладеет уязвимым компьютером, сможет преодолеть защиту жесткого диска и загрузчика.

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

    Среди других находок - 2892 PGP-ключа, использующихся для шифрования email-переписки, 956 из которых оказались факторизуемыми. По словам экспертов, большинство уязвимых PGP-ключей были сгенерированы с помощью USB-продукта Yubikey 4. При этом другие функции USB-ключа, включая U2F-аутентификацию не содержали уязвимости.

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

    Как защититься

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

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

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



    Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter
    ПОДЕЛИТЬСЯ:
    NexxDigital - компьютеры и операционные системы