Цифровая подпись — это математическая схема для проверки подлинности цифровых сообщений или документов. Действительная цифровая подпись на сообщении дает получателю уверенность в том, что сообщение пришло от отправителя, известного получателю. [1] [2]
Цифровые подписи являются стандартным элементом большинства наборов криптографических протоколов и обычно используются для распространения программного обеспечения, финансовых транзакций, программного обеспечения для управления контрактами и в других случаях, когда важно обнаружить подделку или фальсификацию .
Цифровые подписи часто используются для реализации электронных подписей , которые включают любые электронные данные, несущие в себе намерение подписи, [3] но не все электронные подписи используют цифровые подписи. [4] [ 5] Электронные подписи имеют юридическое значение в некоторых странах, включая Бразилию , Канаду , [6] Южную Африку , [7] Россию , [8] США , Алжир , [9] Турцию , [10] Индию , [11] Индонезию , Мексику , Саудовскую Аравию , [12] Уругвай , [13] Швейцарию , Чили [14] и страны Европейского Союза . [15] [16]
Цифровые подписи используют асимметричную криптографию . Во многих случаях они обеспечивают уровень проверки и безопасности сообщений, отправленных по незащищенному каналу: правильно реализованная цифровая подпись дает получателю основание полагать, что сообщение было отправлено заявленным отправителем. Цифровые подписи во многих отношениях эквивалентны традиционным рукописным подписям, но правильно реализованные цифровые подписи сложнее подделать, чем рукописные. Схемы цифровой подписи, в используемом здесь смысле, основаны на криптографии и должны быть реализованы должным образом, чтобы быть эффективными. Они также могут обеспечивать неотказуемость , что означает, что подписывающий не может успешно утверждать, что он не подписывал сообщение, в то же время утверждая, что его закрытый ключ остается в секрете. [17] Кроме того, некоторые схемы неотказуемости предлагают временную метку для цифровой подписи, так что даже если закрытый ключ раскрыт, подпись действительна. [18] [19] Сообщения с цифровой подписью могут быть чем угодно, представляемым в виде битовой строки : примерами являются электронная почта, контракты или сообщение, отправленное через какой-либо другой криптографический протокол.
Схема цифровой подписи обычно состоит из трех алгоритмов:
Требуются два основных свойства:
Во-первых, подлинность подписи, созданной на основе фиксированного сообщения и фиксированного закрытого ключа, может быть проверена с помощью соответствующего открытого ключа.
Во-вторых, должно быть вычислительно невозможно создать действительную подпись для стороны, не зная ее закрытого ключа. Цифровая подпись — это механизм аутентификации, который позволяет создателю сообщения прикрепить код, который действует как подпись. Алгоритм цифровой подписи (DSA), разработанный Национальным институтом стандартов и технологий , является одним из многих примеров алгоритма подписи.
В следующем обсуждении 1 n относится к унарному числу .
Формально схема цифровой подписи представляет собой тройку вероятностных полиномиальных алгоритмов времени ( G , S , V ), удовлетворяющих следующим условиям:
Для корректности S и V должны удовлетворять
Схема цифровой подписи является безопасной , если для каждого неравномерного вероятностного полиномиального времени противника , A
где A S ( sk , · ) обозначает, что A имеет доступ к оракулу S ( sk , · ), Q обозначает набор запросов к S, сделанных A , который знает открытый ключ pk и параметр безопасности n , а x ∉ Q обозначает , что злоумышленник не может напрямую запрашивать строку x в S . [ 20 ] [21]
В 1976 году Уитфилд Диффи и Мартин Хеллман впервые описали понятие схемы цифровой подписи, хотя они только предположили, что такие схемы существуют на основе функций, которые являются односторонними перестановками с лазейкой. [22] [23] Вскоре после этого Рональд Ривест , Ади Шамир и Лен Адлеман изобрели алгоритм RSA , который можно было использовать для создания примитивных цифровых подписей [24] (хотя только в качестве доказательства концепции — «простые» подписи RSA не являются безопасными [25] ). Первым широко продаваемым программным пакетом, предлагающим цифровую подпись, был Lotus Notes 1.0, выпущенный в 1989 году, который использовал алгоритм RSA. [26]
Вскоре после RSA были разработаны и другие схемы цифровой подписи, самыми ранними из которых были подписи Лампорта , [27] подписи Меркла (также известные как «деревья Меркла» или просто «хэш-деревья»), [28] и подписи Рабина . [29]
В 1988 году Шафи Голдвассер , Сильвио Микали и Рональд Ривест стали первыми, кто строго определил требования безопасности схем цифровой подписи. [30] Они описали иерархию моделей атак для схем подписи, а также представили схему подписи GMR , первую, которая, как можно было доказать, предотвращает даже экзистенциальную подделку против атаки на выбранное сообщение, что является в настоящее время принятым определением безопасности для схем подписи. [30] Первая такая схема, которая не построена на функциях-лазейках, а скорее на семействе функций с гораздо более слабым требуемым свойством односторонней перестановки, была представлена Мони Наором и Моти Юнгом . [31]
Одна из схем цифровой подписи (из многих) основана на RSA . Чтобы создать ключи подписи, сгенерируйте пару ключей RSA, содержащую модуль N , который является произведением двух случайных секретных различных больших простых чисел, а также целых чисел e и d , таких, что e d ≡ 1 (mod φ ( N )), где φ — функция Эйлера . Открытый ключ подписчика состоит из N и e , а секретный ключ подписчика содержит d .
При прямом использовании этот тип схемы подписи уязвим для экзистенциальной атаки подделки только ключа. Чтобы создать подделку, злоумышленник выбирает случайную подпись σ и использует процедуру проверки для определения сообщения m , соответствующего этой подписи. [32] Однако на практике этот тип подписи не используется напрямую, а вместо этого подписываемое сообщение сначала хэшируется для получения короткого дайджеста, который затем дополняется до большей ширины, сравнимой с N , а затем подписывается с помощью обратной функции-ловушки . [33] Таким образом, эта атака подделки создает только дополненный вывод хэш-функции, соответствующий σ, но не сообщение, которое приводит к этому значению, что не приводит к атаке. В модели случайного оракула, хэш-затем-подпись (идеализированная версия этой практики, где хэш и дополнение в сочетании имеют около N возможных выходов), эта форма подписи экзистенциально не поддается подделке, даже против атаки с выбранным открытым текстом . [23] [ необходимо разъяснение ] [34]
Существует несколько причин подписывать такой хэш (или дайджест сообщения) вместо всего документа.
Поскольку организации отходят от бумажных документов с чернильными подписями или штампами подлинности, цифровые подписи могут предоставить дополнительные гарантии доказательств происхождения, идентичности и статуса электронного документа , а также подтверждения осознанного согласия и одобрения подписавшего. Правительственная типография США (GPO) публикует электронные версии бюджета, государственных и частных законов и законопроектов Конгресса с цифровыми подписями. Университеты, включая Penn State, University of Chicago и Stanford, публикуют электронные стенограммы студентов с цифровыми подписями.
Ниже приведены некоторые распространенные причины применения цифровой подписи к сообщениям:
Сообщение может иметь фирменный бланк или рукописную подпись, идентифицирующую отправителя, но фирменные бланки и рукописные подписи могут быть скопированы и вставлены в поддельные сообщения. Даже законные сообщения могут быть изменены в пути. [35]
Если центральный офис банка получает письмо, якобы отправленное филиалом банка, с инструкциями по изменению баланса счета, то, прежде чем действовать в соответствии с инструкциями, сотрудники центрального банка должны убедиться, что они действительно были отправлены сотрудником филиала банка, а не поддельными — будь то подделка всего письма мошенником или просто изменение существующего письма в пути путем добавления нескольких цифр.
С помощью схемы цифровой подписи центральный офис может заранее договориться о наличии открытого ключа в файле, закрытый ключ которого известен только филиалу. Филиал может позже подписать сообщение, а центральный офис может использовать открытый ключ для проверки того, что подписанное сообщение не является подделкой, прежде чем действовать по нему. Фальсификатор, который не знает закрытый ключ отправителя, не может подписать другое сообщение или даже изменить одну цифру в существующем сообщении, не сделав проверку подписи получателя недействительной. [35] [1] [2]
Шифрование может скрыть содержимое сообщения от подслушивающего, но шифрование само по себе может не позволить получателю проверить подлинность сообщения или даже обнаружить выборочные изменения, такие как изменение цифры — если отделения банка просто зашифровали сообщения, которыми они обмениваются, они все равно могут быть уязвимы для подделки. В других приложениях, таких как обновления программного обеспечения, сообщения не являются секретными — когда автор программного обеспечения публикует исправление для всех существующих установок программного обеспечения для применения, само исправление не является секретным, но компьютеры, на которых запущено программное обеспечение, должны проверить подлинность исправления перед его применением, чтобы не стать жертвами вредоносного ПО. [2]
Повторы. Схема цифровой подписи сама по себе не препятствует записи действительного подписанного сообщения и его последующему злонамеренному повторному использованию в атаке повтора . Например, филиал может законно потребовать, чтобы банковский перевод был выдан один раз в подписанном сообщении. Если банк не использует систему идентификаторов транзакций в своих сообщениях для определения того, какие переводы уже были выполнены, кто-то может незаконно повторно использовать одно и то же подписанное сообщение много раз, чтобы опустошить счет. [35]
Уникальность и пластичность подписей. Сама подпись не может использоваться для уникальной идентификации сообщения, которое она подписывает — в некоторых схемах подписей каждое сообщение имеет большое количество возможных действительных подписей от одного и того же подписчика, и может быть легко, даже без знания закрытого ключа, преобразовать одну действительную подпись в другую. [36] Если подписи неправильно используются в качестве идентификаторов транзакций в попытке банковской системы, такой как биржа биткойнов , обнаружить повторы, это может быть использовано для повтора транзакций. [37]
Аутентификация открытого ключа. Предварительное знание открытого ключа может быть использовано для проверки подлинности подписанного сообщения , но не наоборот — предварительное знание подписанного сообщения не может быть использовано для проверки подлинности открытого ключа . В некоторых схемах подписи, имея подписанное сообщение, легко создать открытый ключ, под которым подписанное сообщение пройдет проверку, даже без знания закрытого ключа, который был использован для создания подписанного сообщения в первую очередь. [38]
Неотказуемость [15] или, точнее , неотказуемость источника, является важным аспектом цифровых подписей. Благодаря этому свойству субъект, подписавший некоторую информацию, не может впоследствии отрицать, что подписал ее. Аналогично, доступ только к открытому ключу не позволяет мошеннической стороне подделать действительную подпись.
Обратите внимание, что эти свойства аутентификации, неотказуемости и т. д. полагаются на то, что секретный ключ не был отозван до его использования. Публичный отзыв пары ключей является обязательной возможностью, в противном случае утечка секретных ключей будет продолжать указывать на заявленного владельца пары ключей. Проверка статуса отзыва требует «онлайн» проверки; например, проверки списка отозванных сертификатов или через протокол статуса онлайн-сертификатов . [16] Грубо говоря, это аналогично тому, как поставщик, который получает кредитные карты, сначала проверяет онлайн у эмитента кредитной карты, чтобы узнать, была ли данная карта заявлена как утерянная или украденная. Конечно, в случае украденных пар ключей кража часто обнаруживается только после использования секретного ключа, например, для подписания поддельного сертификата в целях шпионажа.
В своей основополагающей статье Голдвассер, Микали и Ривест излагают иерархию моделей атак против цифровых подписей: [30]
Они также описывают иерархию результатов атаки: [30]
Таким образом, наиболее сильным понятием безопасности является защита от экзистенциального подлога при атаке с использованием адаптивного выбранного сообщения.
Все криптосистемы открытого ключа/закрытого ключа полностью зависят от сохранения секретного ключа. Закрытый ключ может храниться на компьютере пользователя и защищаться локальным паролем, но это имеет два недостатка:
Более безопасной альтернативой является хранение закрытого ключа на смарт-карте . Многие смарт-карты разработаны так, чтобы быть устойчивыми к взлому (хотя некоторые конструкции были взломаны, в частности, Россом Андерсоном и его студентами [39] ). В типичной реализации цифровой подписи хэш, вычисленный из документа, отправляется на смарт-карту, чей процессор подписывает хэш, используя сохраненный закрытый ключ пользователя, а затем возвращает подписанный хэш. Обычно пользователь должен активировать свою смарт-карту, введя персональный идентификационный номер или PIN-код (таким образом обеспечивая двухфакторную аутентификацию ). Можно сделать так, чтобы закрытый ключ никогда не покидал смарт-карту, хотя это не всегда реализуется. Если смарт-карта украдена, вору все равно понадобится PIN-код для генерации цифровой подписи. Это снижает безопасность схемы до уровня системы PIN-кодов, хотя для этого все еще требуется, чтобы злоумышленник владел картой. Смягчающим фактором является то, что закрытые ключи, если они генерируются и хранятся на смарт-картах, обычно считаются трудно поддающимися копированию, и предполагается, что они существуют ровно в одной копии. Таким образом, потеря смарт-карты может быть обнаружена владельцем, и соответствующий сертификат может быть немедленно отозван. Закрытые ключи, защищенные только программным обеспечением, могут быть проще скопированы, и такие компрометации гораздо сложнее обнаружить.
Ввод PIN-кода для активации смарт-карты обычно требует использования цифровой клавиатуры . Некоторые считыватели карт имеют собственную цифровую клавиатуру. Это безопаснее, чем использовать считыватель карт, встроенный в ПК, а затем вводить PIN-код с клавиатуры этого компьютера. Считыватели с цифровой клавиатурой предназначены для обхода угрозы подслушивания, когда на компьютере может быть запущен регистратор нажатий клавиш , что может поставить под угрозу PIN-код. Специализированные считыватели карт также менее уязвимы для несанкционированного доступа к их программному обеспечению или оборудованию и часто имеют сертификат EAL3 .
Разработка смарт-карт — это активно развивающаяся область, и существуют схемы смарт-карт, призванные избежать этих конкретных проблем, несмотря на то, что на данный момент существует мало доказательств безопасности.
Одно из главных различий между цифровой подписью и письменной подписью заключается в том, что пользователь не «видит» то, что он подписывает. Пользовательское приложение представляет хэш-код для подписи алгоритмом цифровой подписи с использованием закрытого ключа. Злоумышленник, получивший контроль над ПК пользователя, может заменить пользовательское приложение на чужую подмену, фактически заменив собственные сообщения пользователя сообщениями злоумышленника. Это может позволить вредоносному приложению обманом заставить пользователя подписать любой документ, отображая на экране оригинал пользователя, но представляя собственные документы злоумышленника приложению для подписи.
Для защиты от этого сценария можно настроить систему аутентификации между приложением пользователя (текстовый процессор, почтовый клиент и т. д.) и приложением подписи. Общая идея заключается в предоставлении некоторых средств как для пользовательского приложения, так и для приложения подписи для проверки целостности друг друга. Например, приложение подписи может потребовать, чтобы все запросы исходили из двоичных файлов с цифровой подписью.
Одним из основных различий между облачным сервисом цифровой подписи и локально предоставляемым является риск. Многие компании, не склонные к риску, включая правительства, финансовые и медицинские учреждения, а также платежные процессоры, требуют более надежных стандартов, таких как сертификация FIPS 140-2 уровня 3 и FIPS 201 , чтобы гарантировать, что подпись проверена и защищена.
Технически говоря, цифровая подпись применяется к строке битов, тогда как люди и приложения «верят», что они подписывают семантическую интерпретацию этих битов. Для того чтобы быть семантически интерпретированной, строка битов должна быть преобразована в форму, которая имеет смысл для людей и приложений, и это делается посредством комбинации аппаратных и программных процессов на основе компьютерной системы. Проблема в том, что семантическая интерпретация битов может меняться в зависимости от процессов, используемых для преобразования битов в семантическое содержимое. Относительно легко изменить интерпретацию цифрового документа, внеся изменения в компьютерную систему, где документ обрабатывается. С семантической точки зрения это создает неопределенность относительно того, что именно было подписано. WYSIWYS (What You See Is What You Sign) [40] означает, что семантическая интерпретация подписанного сообщения не может быть изменена. В частности, это также означает, что сообщение не может содержать скрытую информацию, о которой подписчик не знает, и которая может быть раскрыта после применения подписи. WYSIWYS является требованием для действительности цифровых подписей, но это требование трудно гарантировать из-за растущей сложности современных компьютерных систем. Термин WYSIWYS был придуман Питером Лэндроком и Торбеном Педерсеном для описания некоторых принципов предоставления безопасных и юридически обязывающих цифровых подписей для общеевропейских проектов. [40]
Подпись чернилами можно скопировать с одного документа на другой, скопировав изображение вручную или в цифровом виде, но создание достоверных копий подписей, которые могут выдержать определенную проверку, требует значительных ручных или технических навыков, а создание копий подписей чернилами, которые могут выдержать профессиональную проверку, очень сложно.
Цифровые подписи криптографически связывают электронную идентификацию с электронным документом, и цифровая подпись не может быть скопирована в другой документ. Бумажные контракты иногда имеют блок подписи чернилами на последней странице, и предыдущие страницы могут быть заменены после применения подписи. Цифровые подписи могут быть применены ко всему документу, так что цифровая подпись на последней странице будет указывать на подделку, если какие-либо данные на любой из страниц были изменены, но этого также можно добиться, подписав чернилами и пронумеровав все страницы контракта.
Большинство схем цифровой подписи преследуют следующие цели независимо от криптографической теории или правовых положений:
Только если все эти условия выполнены, цифровая подпись фактически будет доказательством того, кто отправил сообщение, и, следовательно, его согласия с его содержанием. Правовое регулирование не может изменить эту реальность существующих инженерных возможностей, хотя некоторые из них не отразили эту реальность.
Законодательные органы, под давлением предприятий, ожидающих прибыли от эксплуатации PKI, или технологического авангарда, выступающего за новые решения старых проблем, приняли законы и/или правила во многих юрисдикциях, разрешающие, одобряющие, поощряющие или разрешающие цифровые подписи и предусматривающие (или ограничивающие) их юридическую силу. Первый, по-видимому, был в Юте в Соединенных Штатах, за которым последовали штаты Массачусетс и Калифорния . Другие страны также приняли законы или выпустили правила в этой области, а ООН уже некоторое время имеет активный проект модельного закона. Эти законы (или предлагаемые законы) различаются от места к месту, обычно воплощают ожидания, противоречащие (оптимистично или пессимистично) состоянию базовой криптографической инженерии, и в конечном итоге сбивают с толку потенциальных пользователей и спецификаторов, почти все из которых не разбираются в криптографии.
Принятие технических стандартов для цифровых подписей отстает от большей части законодательства, задерживая более или менее единую инженерную позицию по вопросам взаимодействия , выбора алгоритма , длины ключей и т. д., которые пытаются обеспечить инженеры.
Некоторые отрасли установили общие стандарты взаимодействия для использования цифровых подписей между участниками отрасли и с регулирующими органами. К ним относятся Automotive Network Exchange для автомобильной промышленности и SAFE-BioPharma Association для отрасли здравоохранения .
В нескольких странах цифровая подпись имеет статус, несколько схожий со статусом традиционной подписи ручкой и бумагой, как в директиве ЕС о цифровой подписи 1999 года и последующем законодательстве ЕС 2014 года . [15] Как правило, эти положения означают, что все, что подписано в цифровой форме, юридически связывает подписавшего документ с условиями, изложенными в нем. По этой причине часто считается лучшим использовать отдельные пары ключей для шифрования и подписания. Используя пару ключей шифрования, человек может участвовать в зашифрованном разговоре (например, относительно сделки с недвижимостью), но шифрование юридически не подписывает каждое сообщение, которое он или она отправляет. Только когда обе стороны приходят к соглашению, они подписывают договор своими ключами подписи, и только тогда они юридически связаны условиями определенного документа. После подписания документ можно отправить по зашифрованной ссылке. Если ключ подписи утерян или скомпрометирован, его можно отозвать, чтобы смягчить любые будущие транзакции. Если ключ шифрования утерян, следует использовать резервную копию или депонирование ключа для продолжения просмотра зашифрованного контента. Ключи подписи ни в коем случае не следует резервировать или депонировать, если место назначения резервной копии не зашифровано надежно.