Безопасный обмен данными, обеспечивающий прямую секретность

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

 

УРОВЕНЬ ТЕХНИКИ

[0001] Данная патентная заявка является международной заявкой заявки США № 15/629689, поданной 21 июня 2017 г., которая включена в настоящий документ с помощью ссылки во всей своей полноте для всех целей.

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

[0002] Варианты осуществления настоящего изобретения устраняют эти и другие проблемы по отдельности и вместе.

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

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

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

[0005] Лучшее понимание сущности и преимуществ вариантов осуществления настоящего изобретения может быть достигнуто со ссылкой на следующее подробное описание и сопроводительные графические материалы.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

[0006] Фиг. 1 представляет собой упрощенную схему потока сообщений, иллюстрирующую безопасный обмен данными между клиентским компьютером и серверным компьютером в соответствии с некоторыми вариантами осуществления.

[0007] Фиг. 2 представляет собой схему потока сообщений клиентского компьютера и серверного компьютера с установкой безопасного обмена данными с использованием неотслеживаемых сообщений в соответствии с некоторыми вариантами осуществления.

[0008] Фиг. 3 представляет собой схему потока сообщений клиентского компьютера, безопасно получающего сертификат с серверного компьютера с использованием неотслеживаемых сообщений, в соответствии с некоторыми вариантами осуществления.

[0009] Фиг. 4 представляет собой схему потока сообщений клиентского компьютера и серверного компьютера, устанавливающих безопасный и неотслеживаемый обмен данными с идеальной прямой секретностью, в соответствии с некоторыми вариантами осуществления.

[0010] Фиг. 5 представляет собой схему потока сообщений клиентского компьютера и серверного компьютера, устанавливающих безопасный и неотслеживаемый обмен данными с идеальной прямой секретностью с использованием сообщений при невозможности отказа со стороны клиента и сервера, в соответствии с некоторыми вариантами осуществления.

[0011] Фиг. 6 представляет собой схему потока сообщений клиентского компьютера и серверного компьютера, устанавливающих безопасный и неотслеживаемый обмен данными с использованием зашифрованной части подписи и незашифрованной части подписи для обеспечения невозможности отказа, в соответствии с некоторыми вариантами осуществления.

[0012] Фиг. 7 представляет собой блок-схему способа запрашивания и установки безопасного обмена данными в соответствии с некоторыми вариантами осуществления.

[0013] Фиг. 8 представляет собой блок-схему способа ответа на запрос для установки безопасного обмена данными в соответствии с некоторыми вариантами осуществления.

[0014] Фиг. 9 представляет собой таблицу этапов в реализуемом с помощью компьютера способе установки безопасного и неотслеживаемого обмена данными с идеальной прямой секретностью в соответствии с некоторыми вариантами осуществления.

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

[0016] Фиг. 11 представляет собой таблицу этапов для выполнения реализуемого с помощью компьютера способа установки безопасного и неотслеживаемого обмена данными с идеальной прямой секретностью и с использованием зашифрованной части подписи и незашифрованной части подписи в соответствии с некоторыми вариантами осуществления.

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

ТЕРМИНЫ

[0018] Перед обсуждением вариантов осуществления настоящего изобретения для понимания вариантов осуществления может быть полезным описание некоторых терминов.

[0019] Термин «серверный компьютер» может включать компьютер или кластер вычислительных устройств. Например, серверный компьютер может представлять собой крупный универсальный компьютер, кластер мини-компьютеров или группу серверов, функционирующих как один элемент. В одном примере серверный компьютер может представлять собой сервер баз данных, соединенный с веб-сервером. Серверный компьютер может быть соединен с базой данных и может содержать любое аппаратное обеспечение, программное обеспечение, другую логическую часть или сочетание предыдущего для обслуживания запросов с одного или более клиентских компьютеров. Серверный компьютер может содержать одно или более вычислительных устройств и может использовать любую из множества вычислительных структур, компоновок и компиляций для обслуживания запросов с одного или более клиентских компьютеров.

[0020] Термин «пара открытого (общедоступного)/закрытого ключей» может включать пару связанных криптографических ключей, сгенерированных субъектом (например, компьютером или электронным устройством). Открытый ключ может быть использован для открытых функций, таких как шифрование сообщения для отправки субъекту или для проверки цифровой подписи, которая предположительно была создана субъектом. Закрытый ключ, с другой стороны, может быть использован для закрытых функций, таких как расшифровывание принятого сообщения или наложение цифровой подписи. Открытый ключ обычно авторизует орган, известный как орган сертификации (ОC), который хранит открытый ключ в базе данных и распределяет его любому другому субъекту, который запрашивает его. Закрытый ключ, как правило, хранится на безопасном носителе данных и обычно известен только субъекту. Однако криптографические системы, описанные в настоящем документе, могут обладать механизмами восстановления ключа для восстановления потерянных ключей и избегания потери данных. Открытые и закрытые ключи могут иметь любой подходящий формат, включая формат, основанный на криптографическом алгоритме с открытым ключом (RSA) или криптографии на основе эллиптических кривых (ECC).

[0021] «Цифровая подпись» может относиться к результату применения алгоритма на основе пары открытого/закрытого ключей, который позволяет подписывающей стороне заявлять, и проверяющей стороне подтверждать подлинность и сохранность документа. Подписывающая сторона действует с помощью закрытого ключа, а проверяющая сторона действует с помощью открытого ключа. Этот процесс удостоверяет подлинность отправителя, сохранность подписанного документа и так называемый принцип невозможности отказа, который не позволяет отклонить то, что было подписано. Сертификат или другие данные, которые содержат цифровую подпись подписывающей стороны, называют «подписанным» подписывающей стороной.

[0022] «Сертификат» или «цифровой сертификат» может включать электронный документ или файл данных, который использует цифровую подпись для связывания открытого ключа с данными, связанными с идентификатором. Сертификат может содержать одно или более полей данных, таких как юридическое наименование субъекта, серийный номер сертификата, дату начала и завершения действия сертификата, связанные с сертификатом разрешения и т. д. Сертификат может содержать дату начала действия, указывающую первую дату, в которую действителен сертификат, и дату завершения действия, указывающую последнюю дату, в которую действителен сертификат. Сертификат также может содержать хеш данных в сертификате, включающем поля данных. Если не указано иное, каждый сертификат подписан органом сертификации.

[0023] «Орган сертификации» (ОС) может иметь один или более серверных компьютеров, функционально связанных для выдачи сертификатов субъектам. ОС может доказать свою подлинность с помощью сертификата ОС, который содержит открытый ключ ОС. Сертификат ОС может быть подписан закрытым ключом другого ОС или может быть подписан закрытым ключом того же ОС. Последний известен как самостоятельно подписанный сертификат. ОС может поддерживать базу данных всех сертификатов, изданных ОС, а также может поддерживать список отозванных сертификатов.

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

[0025] «Криптографический объект nonce» может включать любое число, строку, последовательность битов или другое значение данных, предназначенное для использования совместно с одним сеансом обмена данными. В некоторых случаях криптографический объект nonce может быть сгенерирован случайным или псевдослучайным образом. Как правило, криптографический объект nonce имеет достаточную длину, чтобы сделать незначительной вероятность независимого генерирования одного и того же значения объекта nonce несколько раз.

[0026] «Замаскированный ключ», такой как «замаскированный открытый ключ», может включать в себя ключ, который был искажен или иным образом изменен в сравнении с его изначальным значением путем сочетания с другим элементом данных, таким как криптографический объект nonce. Например, в криптографии на основе эллиптических кривых, для генерирования «замаскированного открытого ключа» открытый ключ может быть умножен на объект nonce. Подобным образом, для генерирования «замаскированного закрытого ключа» закрытый ключ может быть умножен на объект nonce. Объект nonce может иметь такую же битовую длину, что и открытый ключ, и закрытый ключ.

[0027] «Пара кратковременных ключей» может включать открытый ключ (т.е. «кратковременный открытый ключ») и закрытый ключ (т.е. «кратковременный закрытый ключ»), сгенерированные для использования с одной транзакцией или другим сеансом обмена данными. Пара кратковременных ключей может иметь любой подходящий формат, такой как ECC или RSA. Как правило, пара кратковременных ключей может быть удалена сразу по завершении транзакции или сеанса связи.

[0028] «Пара статических ключей» может включать открытый ключ (т.е. «статический открытый ключ») и закрытый ключ (т.е. «статический закрытый ключ»), сохраняемые в течение периода времени. Как правило, хотя и не обязательно, статический закрытый ключ может быть сохранен безопасным образом, например, в аппаратном модуле безопасности (HSM) или элементе безопасности (SE). Как правило, хотя и необязательно, статический открытый ключ может быть связан с идентификатором с помощью цифрового сертификата. Пара статических ключей может иметь любой подходящий формат, такой как ECC или RSA.

[0029] «Совместно используемый секрет» может включать любое значение данных или другую информацию, известную только уполномоченным сторонам в безопасном обмене данными. Совместно используемый секрет может быть сгенерирован любым подходящим способом, из любых подходящих данных. Например, алгоритм на основе метода Диффи-Хеллмана, такой как метод Диффи-Хеллмана на эллиптических кривых (ECDH), может быть использован для генерирования совместно используемого секрета из закрытого ключа и открытого ключа. Например, первый компьютер может генерировать первую пару ключей, включающую первый открытый ключ и первый закрытый ключ. Второй компьютер может генерировать вторую пару ключей, включающую второй открытый ключ и второй закрытый ключ. Первый компьютер может генерировать совместно используемый секрет с использованием второго открытого ключа второго компьютера и первого закрытого ключа первого компьютера. Второй компьютер может генерировать тот же совместно используемый секрет с использованием первого открытого ключа первого компьютера и второго закрытого ключа второго компьютера. Первый компьютер и второй компьютер могут оба использовать совместно используемый секрет для генерирования ключа сеанса.

[0030] Термин «идентификационные данные» может включать любые данные или информацию, связанную с пользователем или устройством. Примеры идентификационных данных могут включать имя пользователя, связанного с устройством, организацию, связанную с устройством, платежную информацию, такую как основной учетный номер (PAN), связанный с устройством, дату завершения срока действия устройства, сертификат, связанный с устройством, международный идентификационный номер устройства (IMEI) или серийный номер устройства и т. п.

[0031] Термин «аутентификация» обычно относится к процессу удостоверения подлинности пользователя или компьютера. Аутентификация может быть выполнена путем подтверждения подлинности устройства с использованием криптографии с открытым ключом (например, зашифрованных данных или цифровых подписей) для аутентификационной информации.

[0032] Термин «аутентификационные данные» или «аутентификационная информация» может включать любые данные или информацию, подходящие для аутентификации пользователя или устройства. Примеры аутентификационных данных могут включать пароль или фразу доступа, секретный ключ (например, закрытый ключ), цифровую подпись, указание на то, что устройство хранит определенную информацию, и т. п.

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

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

[0035] «Невозможность отслеживания» представляет собой характеристику безопасного обмена данными, которая относится к способности сообщения обмена данными не раскрывать информацию об идентификаторе отправителя, так что сообщение может быть прослежено до них. Например, в некотором безопасном обмене данными статический открытый ключ первого компьютера отправляется на второй компьютер открыто (например, незашифрованным) во время обмена ключами по методу Диффи-Хеллмана. Открытый ключ первого компьютера может быть статическим, поскольку он соответствует сертификату, сохраненному на нем, который подписан органом сертификации. Как таковой, первый компьютер может быть идентифицирован и отслежен путем перехватывания его сообщений на основе незашифрованного открытого ключа, отправленного во время обмена ключами по методу Диффи-Хеллмана. В другом сценарии подпись может быть отправлена незашифрованной, и третья сторона может перехватывать подпись и пытаться подтвердить подлинность подписи с использованием множества разных открытых ключей для идентификации и отслеживания подписанта подписи. Для предотвращения отслеживания компьютер может генерировать пару кратковременных ключей для использования во время обмена ключами, а затем удалять после установки совместно используемого секрета. Другим способом предотвращения отслеживания является «маскировка» открытого ключа с использованием криптографического объекта nonce (например, произвольно сгенерированного числа).

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

[0037] «Прямая секретность» является характеристикой безопасного обмена данными, которая относится к способности сообщений не расшифровываться, если закрытые ключи отправителя и/или получателя сообщений позже рассекречиваются. «Идеальная прямая секретность» представляет собой характеристику безопасного обмена данными, которая относится к способности сообщений не расшифровываться, если закрытые ключи обоих из отправителя и получателя сообщений позже рассекречиваются. В одном сценарии закрытые ключи могут быть получены третьей стороной, которая получает физический доступ к компьютерам. В другом сценарии третий компьютер может потратить достаточно много времени на взлом закрытого ключа, что будет непрактичным, но не невозможным. Однако безопасный обмен данными с «идеальной прямой секретностью» не может быть расшифрован, даже если оба статических закрытых ключа отправляющего и принимающего компьютеров рассекречены. Одним из способов достижения «идеальной прямой секретности» является отсутствие шифрования сообщений с использованием статических закрытых ключей. Соответственно, если статические закрытые ключи рассекречиваются, они не могут использоваться для расшифровывания сообщений. В одном примере пара ключей шифрования может быть случайно сгенерирована для обмена ключами, а затем чуть позже удалена (например, установлена в нуль). Соответственно, закрытый ключ не может быть получен, если третья сторона позже получает физический доступ к компьютеру. Поэтому сообщения, отправленные в прошлом, сохраняют свою секретность на будущее. Кроме того, даже если одно сообщение рассекречивается, другие сообщения не рассекречиваются, поскольку нет одного ключа, используемого для шифрования в разных сообщениях.

ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ

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

[0039] Можно использовать пары кратковременных ключей или замаскированные открытые ключи для обеспечения невозможности отслеживания. Однако, поскольку идентификатор отправителя скрыт для обеспечения невозможности отслеживания, одним из последствий может быть то, что отправитель может отрицать отправку им сообщения. Для предотвращения отказа отправителем от того, что он отправляет сообщения, сообщение может содержать подпись, которая создана с использованием статического открытого ключа отправителя. Таким образом, неотслеживаемые ключи могут быть использованы для шифрования, тогда как отслеживаемые ключи могут быть использованы для генерирования подписи. Дополнительно новые и разные открытые ключи могут быть использованы при каждом обмене ключами и удалены сразу или вскоре после установки совместно используемого секрета. Дополнительно, хотя могут быть использованы отслеживаемые подписи, они могут быть включены в зашифрованную часть сообщения, таким образом они не могут быть использованы для отслеживания отправителя или получателя сообщения. Соответственно, может быть установлен безопасный обмен данными с «невозможностью отслеживания», «невозможностью отказа» и «идеальной прямой секретностью». Способы и системы для установки такого обмена данными описаны более подробно ниже.

I. ОБЕСПЕЧЕНИЕ БЕЗОПАСНОСТИ ОБМЕНА ДАННЫМИ С ИСПОЛЬЗОВАНИЕМ КЛЮЧЕЙ ШИФРОВАНИЯ

[0040] Обмен ключами по методу Диффи-Хеллмана может позволять первому компьютеру и второму компьютеру установить секретный симметричный ключ по небезопасной сети без передачи самого секретного симметричного ключа. Обмен ключами по методу Диффи-Хеллмана не может быть основан на какой-либо информации, сохраненной ранее на первом или втором компьютере до обмена ключами. Например, алгоритм на основе метода Диффи-Хеллмана, такой как метод Диффи-Хеллмана на основе эллиптических кривых (ECDH), может быть использован для генерирования совместно используемого секрета из закрытого ключа первого компьютера и открытого ключа второго компьютера. Например, первый компьютер может генерировать первую пару ключей, включающую первый открытый ключ и первый закрытый ключ. Второй компьютер может генерировать вторую пару ключей, включающую второй открытый ключ и второй закрытый ключ. Первый компьютер может отправлять свой первый открытый ключ на второй компьютер, и второй компьютер может отправлять свой второй открытый ключ на первый компьютер. Первый компьютер может генерировать совместно используемый секрет с использованием второго открытого ключа второго компьютера и первого закрытого ключа первого компьютера. Второй компьютер может генерировать тот же совместно используемый секрет с использованием первого открытого ключа первого компьютера и второго закрытого ключа второго компьютера. Первый компьютер и второй компьютер могут оба использовать совместно используемый секрет для генерирования ключа сеанса для шифрования связи. По существу, первый компьютер и второй компьютер могут устанавливать безопасный обмен данными по небезопасной сети без использования какой-либо предварительно установленной информации.

[0041] Фиг. 1 представляет собой упрощенную схему 100 потока сообщений, иллюстрирующую безопасный обмен данными между клиентским компьютером 140 и серверным компьютером 180, в соответствии с некоторыми вариантами осуществления. Схема 100 потока сообщений может быть использована между любым первым компьютером и любым вторым компьютером. Разделение на клиент/сервер, используемое в настоящем документе, является лишь иллюстративным и сделано для улучшения понятности. В некоторых вариантах осуществления клиентский компьютер 140 может выполнять операции, описанные как выполняемые серверным компьютером 180. В некоторых вариантах осуществления серверный компьютер 180 может выполнять операции, описанные как выполняемые клиентским компьютером 140.

[0042] Обращаясь к фиг. 1, клиентский компьютер 140 может хранить пару ключей клиента, содержащую открытый ключ и закрытый ключ клиента, соответствующий открытому ключу клиента. Пара ключей клиента может быть статической. Серверный компьютер 180 может хранить пару ключей сервера, содержащую открытый ключ сервера и закрытый ключ сервера, соответствующий открытому ключу сервера. Пара ключей сервера может быть статической. Клиентский компьютер 140 и серверный компьютер 180 могут обмениваться данными по небезопасной сети 160 (например, Интернет или беспроводной локальной сети). Небезопасная сеть 160 может быть «небезопасной» в том смысле, что сама среда обмена данными физически не безопасна, или она может быть «небезопасной» в том смысле, что сообщения не передаются непосредственно между двумя сторонами, а также проходят через другие третьи стороны в сети.

[0043] Клиентский компьютер 140 и серверный компьютер 180 могут выполнять обмен ключами для установки безопасного обмена данными по небезопасной сети 160. Например, клиентский компьютер 140 и серверный компьютер 180 могут выполнять обмен ключами по методу Диффи-Хеллмана, как описано выше, для установки совместно используемого секрета между клиентским компьютером 140 и серверным компьютером 180. Каждый из клиентского компьютера 140 и серверного компьютера 180 могут формировать ключ сеанса из совместно используемого секрета для шифрования и расшифровывания сообщений, которыми они обмениваются между собой.

[0044] На этапе 101 клиентский компьютер 140 может передавать сообщение с запросом на серверный компьютер 180 для инициирования установки безопасного обмена данными. В некоторых вариантах осуществления сообщение с запросом может содержать идентификационные данные. Клиентский компьютер 140 может шифровать идентификационные данные сообщения с ответом с использованием совместно используемого секрета для получения зашифрованных идентификационных данных. Клиентский компьютер 140 может передавать сообщение с запросом, содержащее зашифрованные идентификационные данные, на серверный компьютер 180 по небезопасной сети 160.

[0045] Серверный компьютер 180 может принимать сообщение с запросом от клиентского компьютера 140 по небезопасной сети 160. Серверный компьютер 180 может расшифровывать зашифрованные идентификационные данные сообщения с запросом с использованием совместно используемого секрета (например, с использованием ключа сеанса, сформированного на основе совместно используемого секрета). Серверный компьютер 180 также может проверять идентификационные данные на основе данных, хранимых на серверном компьютере 180. Серверный компьютер 180 может затем шифровать полезные данные для клиентского компьютера 140 с использованием совместно используемого секрета для получения зашифрованных полезных данных. В некоторых вариантах осуществления серверный компьютер 180 может генерировать второй совместно используемый секрет для использования с целью шифрования полезных данных серверного компьютера.

[0046] На этапе 102 серверный компьютер 180 может передавать сообщение с ответом, содержащее зашифрованные полезные данные, на клиентский компьютер 140. Серверный компьютер 180 может передавать данные ответа на клиентский компьютер 140 в ответ на проверку идентификационных данных, принятых от клиентского компьютера 140. Клиентский компьютер 140 может принимать сообщение с ответом и расшифровывать зашифрованные полезные данные с использованием ключа сеанса для получения полезных данных с серверного компьютера 180. Таким образом, клиентский компьютер 140 и серверный компьютер 180 могут установить безопасный обмен данными по небезопасной сети 160 путем выполнения обмена ключами по методу Диффи-Хеллмана.

[0047] Однако обмен ключами, описанный выше в отношении фиг. 1, может включать отправку первым компьютером (например, клиентским компьютером 140) его первого открытого ключа на второй компьютер (например, серверный компьютер 180) и отправку вторым компьютером его второго открытого ключа на первый компьютер. Таким образом, компьютер перехвата может перехватывать сообщения для отслеживания идентификатора первого компьютера на основе первого открытого ключа и для отслеживания идентификатора второго компьютера на основе второго открытого ключа. В дополнение компьютер перехвата может произвести атаку через посредника или сымитировать первый компьютер или второй компьютер. Некоторые из вариантов осуществления, описанных ниже, устраняют эти недостатки.

II. БЕЗОПАСНЫЙ И НЕОТСЛЕЖИВАЕМЫЙ ОБМЕН ДАННЫМИ

[0048] Как обсуждено выше, обмен открытыми ключами (например, обмен ключами по методу Диффи-Хеллмана) может включать открытую отправку статических открытых ключей (например, в незашифрованном виде). Если для безопасного обмена данными между двумя компьютерами нет больше других средств, то открытые ключи не могут быть сами по себе зашифрованы. Однако компьютер третьей стороны может перехватывать сообщения (например, поскольку они отправляются по небезопасной сети, такой как Интернет) и идентифицировать два компьютера на основе их статических открытых ключей. Это может позволить третьей стороне отслеживать компьютеры.

A. Способ установки безопасного и неотслеживаемого обмена данными

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

[0050] Фиг. 2 представляет собой схему 200 потока сообщений клиентского компьютера 240 и серверного компьютера 280 с установкой безопасного обмена данными с использованием неотслеживаемых сообщений в соответствии с некоторыми вариантами осуществления. Перед потоком сообщений по фиг. 2 клиентский компьютер 240 может сохранить полезные данные 252 клиента и сертификат 288 сервера серверного компьютера 280. Клиентский компьютер 240 может получить сертификат 288 серверного компьютера с использованием потока сообщений, например, описанного ниже в отношении фиг. 3.

[0051] Серверный компьютер 280 может хранить пару 286 статических ключей сервера, содержащую статический закрытый ключ 282 сервера и статический открытый ключ 284 сервера. Серверный компьютер 280 может также хранить сертификат 288 сервера. Сертификат 288 сервера может содержать статический открытый ключ 284 сервера и подпись органа сертификации для аутентификации серверного компьютера 288. Статический закрытый ключ 282 сервера и статический открытый ключ 284 сервера могут быть «статическими» в том смысле, что они не изменяются с течением времени, позволяя осуществлять аутентификацию серверного компьютера 288 с использованием сертификата 288 сервера. Серверный компьютер 280 может также хранить полезные данные 292 сервера. Полезные данные 292 сервера могут быть обработаны как закрытые данные, так что они не передаются открыто без шифрования.

[0052] В данном потоке сообщений клиентский компьютер 240 может инициировать установку безопасного обмена данными. На этапе 201 клиентский компьютер 240 может генерировать кратковременный закрытый ключ клиента. Кратковременный закрытый ключ клиента может быть сгенерирован случайным образом.

[0053] На этапе 202 клиентский компьютер 240 может определить кратковременный открытый ключ клиента с использованием кратковременного закрытого ключа клиента. Кратковременный закрытый ключ клиента и кратковременный открытый ключ клиента могут образовывать пару ключей для использования в криптографии с открытым ключом.

[0054] На этапе 203 клиентский компьютер 240 может определить первый совместно используемый секрет с использованием кратковременного закрытого ключа клиента и статического открытого ключа 284 сервера, который может быть включен в сертификат 288 сервера. Клиентский компьютер 240 может определить первый ключ сеанса с использованием функции формирования ключа на основе совместно используемого секрета, идентификатора серверного компьютера 280 и идентификатора сеанса обмена данными.

[0055] На этапе 204 клиентский компьютер 240 может шифровать полезные данные 252 клиента с использованием первого совместно используемого секрета (например, с использованием первого ключа сеанса) для определения зашифрованных данных клиента. Полезные данные 252 клиента могут содержать закрытые данные клиента и/или запрос на определенные данные или информацию с серверного компьютера 280. После шифрования полезных данных 252 клиента клиентский компьютер 240 может обнулить (например, полностью удалить для предотвращения какого-либо восстановления) первый совместно используемый секрет и первый ключ сеанса.

[0056] На этапе 205 клиентский компьютер 240 может передавать «сообщение с запросом», содержащее кратковременный открытый ключ клиента и зашифрованные данные клиента, на серверный компьютер 280. Кратковременный открытый ключ клиента может быть отправлен открыто (например, в незашифрованном виде). Сообщение с запросом может указывать на то, что клиентский компьютер 240 запрашивает установку безопасного обмена данными с использованием совместно используемого секрета на основе замаскированного открытого ключа клиента. Сообщение с запросом может быть передано по небезопасной сети. Серверный компьютер 280 может принимать сообщение с запросом от клиентского компьютера 240. Поскольку кратковременный открытый ключ клиента используется только для данного сеанса обмена данными (кратковременный закрытый ключ клиента обнуляется на этапе 214), то он не может быть использован для отслеживания клиентского компьютера 240. Таким образом, сообщение с запросом, отправленное на этапе 205, является неотслеживаемым.

[0057] На этапе 206 серверный компьютер 280 может определить первый совместно используемый секрет с использованием статического закрытого ключа 282 сервера и замаскированного открытого ключа клиента. Первый совместно используемый секрет, определенный серверным компьютером на этапе 206 с использованием статического закрытого ключа 282 сервера и замаскированного открытого ключа клиента, может быть таким же, как и первый совместно используемый секрет, сгенерированный клиентским компьютером 240 на этапе 203 с использованием кратковременного закрытого ключа клиента и статического открытого ключа 284 сервера. Серверный компьютер 280 может также определить такой же первый ключ сеанса, определенный клиентским компьютером 240 с использованием функции формирования ключа на основе совместно используемого секрета, идентификатора серверного компьютера 280 и идентификатора сеанса обмена данными.

[0058] На этапе 207 серверный компьютер 280 может расшифровывать зашифрованные данные клиента с использованием первого совместно используемого секрета (например, с использованием первого ключа сеанса) для получения полезных данных 252 клиента. После расшифровывания полезных данных 252 клиента серверный компьютер 280 может обнулить (например, полностью удалить для предотвращения какого-либо восстановления) первый совместно используемый секрет и первый ключ сеанса. В этот момент серверный компьютер 280 может обрабатывать полезные данные 252 клиента и генерировать или идентифицировать какие-либо подходящие данные или информацию для включения в полезные данные 292 сервера, предоставляемые в ответ на запрос клиентского компьютера.

[0059] На этапе 208 серверный компьютер 280 может генерировать маскирующий коэффициент сервера. Маскирующий коэффициент сервера может быть случайным образом сгенерированным криптографическим объектом nonce. Серверный компьютер 280 может использовать маскирующий коэффициент сервера для предотвращения отслеживания его третьими сторонами, как описано ниже. Например, серверный компьютер 280 может применять маскирующий коэффициент сервера к статическому открытому ключу 284 сервера (например, с использованием умножения) для определения замаскированного открытого ключа сервера. Серверный компьютер 280 может использовать только данный маскирующий коэффициент сервера и данный замаскированный открытый ключ сервера в данном конкретном сеансе обмена данными с клиентским компьютером 240 и может генерировать разный маскирующий коэффициент для последующих сеансов обмена данными. Таким образом, серверный компьютер 280 может не отслеживаться третьими сторонами на основе замаскированного открытого ключа сервера.

[0060] На этапе 209 серверный компьютер 280 может определить второй совместно используемый секрет с использованием маскирующего коэффициента сервера, статического закрытого ключа 282 сервера и кратковременного открытого ключа клиента. Серверный компьютер 280 может также определить второй ключ сеанса с использованием функции формирования ключа и второго совместно используемого секрета.

[0061] На этапе 210 серверный компьютер 280 может определить замаскированный открытый ключ сервера с использованием маскирующего коэффициента сервера и статического открытого ключа сервера. Например, серверный компьютер 280 может применять маскирующий коэффициент сервера к статическому открытому ключу 284 сервера (например, с использованием умножения) для определения замаскированного открытого ключа сервера.

[0062] На этапе 211 серверный компьютер 280 может шифровать маскирующий коэффициент сервера, сертификат 288 сервера и полезные данные 292 сервера с использованием второго совместно используемого секрета (например, с использованием второго ключа сеанса) для получения зашифрованных данных сервера.

[0063] На этапе 212 серверный компьютер 280 может передавать сообщение с ответом, содержащее замаскированный открытый ключ сервера и зашифрованные данные сервера, на клиентский компьютер 240. Сообщение с ответом может быть отправлено по небезопасной сети. Замаскированный открытый ключ сервера может быть отправлен открыто (например, в незашифрованном виде). Однако замаскированный открытый ключ сервера основан на маскирующем коэффициенте сервера, который может быть использован только в данном конкретном сеансе обмена данными. Соответственно, серверный компьютер 280 не может быть отслежен третьей стороной, перехватывающей данное сообщение и другие сообщения, отправленные серверным компьютером 280. Клиентский компьютер 240 может принимать сообщение с ответом.

[0064] На этапе 213 клиентский компьютер 240 может определить второй совместно используемый секрет с использованием кратковременного закрытого ключа клиента и замаскированного открытого ключа сервера. Второй совместно используемый секрет, определенный клиентским компьютером 240 на этапе 213, может быть таким же, как и второй совместно используемый секрет, определенный серверным компьютером 280 на этапе 209 с использованием кратковременного открытого ключа клиента, маскирующего коэффициента сервера и статического закрытого ключа 284 сервера. Клиентский компьютер 240 может также определить такой же второй ключ сеанса (который также определен серверным компьютером 280) с использованием функции формирования ключа и второго совместно используемого секрета.

[0065] На этапе 214 после определения второго совместно используемого секрета и второго ключа сеанса клиентский компьютер 240 может обнулить кратковременный закрытый ключ клиента. То есть клиентский компьютер 240 может удалить кратковременный закрытый ключ клиента, так что его нельзя будет позже восстановить. Кроме того, даже если кратковременный закрытый ключ клиента был рассекречен и получен третьей стороной за короткий период времени перед его обнулением, третья сторона не сможет расшифровать какой-либо другой обмен данными с использованием кратковременного закрытого ключа клиента, поскольку данный кратковременный закрытый ключ клиента был использован только для расшифровывания данного конкретного сообщения с ответом.

[0066] На этапе 215 клиентский компьютер 240 может расшифровывать зашифрованные данные сервера с использованием второго совместно используемого секрета (например, с использованием второго ключа сеанса) для получения маскирующего коэффициента сервера, сертификата 288 сервера и полезных данных 292 сервера.

[0067] На этапе 216 клиентский компьютер 240 может проверять замаскированный открытый ключ сервера путем его повторного создания с использованием маскирующего коэффициента сервера и статического открытого ключа 284 сервера, который включен в сертификат 288 сервера. Клиентский компьютер 240 может аутентифицировать, что серверный компьютер 280 отправил сообщение с ответом на основе проверяемого замаскированного открытого ключа сервера.

[0068] На этапе 217 клиентский компьютер 240 и серверный компьютер 280 могут завершить сеанс обмена данными, или они могут продолжить безопасный обмен данными с использованием второго ключа сеанса.

[0069] Поток сообщений по фиг. 2 позволяет клиентскому компьютеру 240 и серверному компьютеру 280 установить безопасный обмен данными с использованием неотслеживаемых сообщений, тем самым обеспечивая конфиденциальность обмена данными и сохранение приватности клиентского компьютера 240, серверного компьютера 280 и их пользователей. Однако поток сообщений по фиг. 2 требует сохранения клиентским компьютером 240 сертификата 288 сервера серверного компьютера, который содержит статический открытый ключ 284 сервера, используемый при генерировании первого совместно используемого секрета. Соответственно, клиентский компьютер 240 должен раньше получить сертификат 288 сервера.

B. Способ получения сертификата с использованием неотслеживаемого обмена данными

[0070] Как обсуждено выше, отслеживаемость сообщений является проблемой, поскольку это может позволить компьютеру третьей стороны отслеживать определенные компьютеры, нарушая тем самым конфиденциальность обмена данными и приватность компьютера и его пользователей. Для решения проблемы отслеживаемости клиентский компьютер может генерировать пару кратковременных ключей, которая отличается от его пары статических ключей. Как описано выше со ссылкой на фиг. 2, клиентский компьютер может отправлять кратковременный открытый ключ на серверный компьютер без нарушения конфиденциальности или приватности. Однако, если клиентский компьютер еще не сохранил копию открытого ключа серверного компьютера (например, на основе сертификата серверного компьютера), то клиентский компьютер не может установить совместно используемый секрет с серверным компьютером с использованием криптографии с открытым ключом. Эта ситуация является проблематичной, поскольку клиентский компьютер должен иметь возможность проверить, что сертификат, принятый в сообщении с ответом от серверного компьютера, представляет собой в действительности тот сертификат серверного компьютера (не сертификат другого компьютера), при этом серверный компьютер не может предоставить свой статический открытый ключ на клиентский компьютер открыто вследствие проблемы отслеживаемости, описанной в настоящем документе. Соответственно, клиентский компьютер должен получить сертификат серверного компьютера с использованием безопасного и неотслеживаемого обмена сообщениями для сохранения конфиденциальности и приватности.

[0071] Фиг. 3 представляет собой схему 300 потока сообщений клиентского компьютера 340, безопасно получающего сертификат с серверного компьютера 380 с использованием неотслеживаемых сообщений, в соответствии с некоторыми вариантами осуществления. Перед потоком сообщений по фиг. 2 клиентский компьютер 340 может не сохранять сертификат 388 сервера серверного компьютера 380.

[0072] Серверный компьютер 380 может хранить пару 386 статических ключей сервера, содержащую статический закрытый ключ 382 сервера и статический открытый ключ 384 сервера. Серверный компьютер 380 может также хранить сертификат 388 сервера. Сертификат 288 сервера может содержать статический открытый ключ 384 сервера и подпись органа сертификации для аутентификации серверного компьютера 388. Статический закрытый ключ 382 сервера и статический открытый ключ 284 сервера могут быть «статическими» в том смысле, что они не изменяются с течением времени, позволяя осуществлять аутентификацию серверного компьютера 388 с использованием сертификата 388 сервера. Серверный компьютер 380 может также хранить полезные данные 392 сервера. Полезные данные 392 сервера могут быть обработаны как закрытые данные, так что они не передаются открыто без шифрования.

[0073] В данном потоке сообщений клиентский компьютер 340 может инициировать установку безопасного обмена данными. На этапе 301 клиентский компьютер 340 может генерировать кратковременный закрытый ключ клиента. Кратковременный закрытый ключ клиента может быть сгенерирован случайным образом.

[0074] На этапе 302 клиентский компьютер 340 может определить кратковременный открытый ключ клиента с использованием кратковременного закрытого ключа клиента. Кратковременный закрытый ключ клиента и кратковременный открытый ключ клиента могут образовывать пару ключей для использования в криптографии с открытым ключом.

[0075] На этапе 303 клиентский компьютер 340 может передавать «сообщение с запросом», содержащее кратковременный открытый ключ клиента, на серверный компьютер 380. Кратковременный открытый ключ клиента может быть отправлен открыто (например, в незашифрованном виде). Сообщение с запросом может указывать на то, что клиентский компьютер 340 запрашивает прием сертификата 388 сервера. Сообщение с запросом может быть передано по небезопасной сети. Серверный компьютер 380 может принимать сообщение с запросом от клиентского компьютера 340. Поскольку кратковременный открытый ключ клиента используется только для данного сеанса обмена данными (кратковременный закрытый ключ клиента обнуляется на этапе 310), то он не может быть использован для отслеживания клиентского компьютера 340. Таким образом, сообщение с запросом, отправленное на этапе 303, является неотслеживаемым.

[0076] На этапе 304 серверный компьютер 380 может генерировать маскирующий коэффициент сервера. Маскирующий коэффициент сервера может быть случайным образом сгенерированным криптографическим объектом nonce. Серверный компьютер 380 может использовать маскирующий коэффициент сервера для предотвращения отслеживания третьими сторонами его обмена данными, как описано ниже. Например, серверный компьютер 380 может применять маскирующий коэффициент сервера к статическому открытому ключу 384 сервера (например, с использованием умножения) для определения замаскированного открытого ключа сервера. Серверный компьютер 380 может использовать только данный маскирующий коэффициент сервера и данный замаскированный открытый ключ сервера в данном конкретном сеансе обмена данными с клиентским компьютером 340 и может генерировать разный маскирующий коэффициент для последующих сеансов обмена данными. Таким образом, серверный компьютер 380 может не отслеживаться третьими сторонами на основе замаскированного открытого ключа сервера.

[0077] На этапе 305 серверный компьютер 380 может определить первый совместно используемый секрет с использованием статического закрытого ключа сервера 382 и кратковременного открытого ключа клиента. Серверный компьютер 380 может определить первый ключ сеанса с использованием функции формирования ключа на основе первого совместно используемого секрета. Серверный компьютер 380 может использовать первый ключ сеанса для шифрования сертификата 388 сервера и полезные данные 392 сервера для передачи на клиентский компьютер 340.

[0078] На этапе 306 серверный компьютер 380 может определить замаскированный открытый ключ сервера с использованием маскирующего коэффициента сервера и статического открытого ключа 384 сервера. Например, серверный компьютер 380 может применять маскирующий коэффициент сервера к статическому открытому ключу 384 сервера (например, с использованием умножения) для определения замаскированного открытого ключа сервера.

[0079] На этапе 307 серверный компьютер 380 может шифровать маскирующий коэффициент сервера, сертификат 388 сервера и полезные данные 392 сервера с использованием первого совместно используемого секрета (например, с использованием первого ключа сеанса) для получения зашифрованных данных сервера. После шифрования серверный компьютер 380 может обнулить первый совместно используемый секрет и первый ключ сеанса.

[0080] На этапе 308 серверный компьютер 380 может передавать сообщение с ответом, содержащее замаскированный открытый ключ сервера и зашифрованные данные сервера, на клиентский компьютер 340. Сообщение с ответом может быть отправлено по небезопасной сети. Замаскированный открытый ключ сервера может быть отправлен открыто (например, в незашифрованном виде). Однако замаскированный открытый ключ сервера основан на маскирующем коэффициенте сервера, который может быть использован только в данном конкретном сеансе обмена данными. Соответственно, серверный компьютер 380 не может быть отслежен третьей стороной, перехватывающей данное сообщение и другие сообщения, отправленные серверным компьютером 380. Клиентский компьютер 340 может принимать сообщение с ответом.

[0081] На этапе 309 клиентский компьютер 340 может определить первый совместно используемый секрет с использованием кратковременного закрытого ключа клиента и замаскированного открытого ключа сервера. Первый совместно используемый секрет, определенный клиентским компьютером 340 на этапе 309, может быть таким же, как и первый совместно используемый секрет, определенный серверным компьютером 380 на этапе 305 с использованием кратковременного открытого ключа клиента, маскирующего коэффициента сервера и статического закрытого ключа 284 сервера. Клиентский компьютер 340 может также определить такой же первый ключ сеанса (который также определен серверным компьютером 380) с использованием функции формирования ключа и первого совместно используемого секрета.

[0082] На этапе 310 после определения первого совместно используемого секрета и первого ключа сеанса клиентский компьютер 340 может обнулить кратковременный закрытый ключ клиента. То есть, клиентский компьютер 340 может удалить кратковременный закрытый ключ клиента, так что его нельзя будет позже восстановить. Кроме того, даже если кратковременный закрытый ключ клиента был рассекречен и получен третьей стороной за короткий период времени перед его обнулением, третья сторона не сможет расшифровать какой-либо другой обмен данными с использованием кратковременного закрытого ключа клиента, поскольку данный кратковременный закрытый ключ клиента был использован только для расшифровывания данного конкретного сообщения с ответом.

[0083] На этапе 311 клиентский компьютер 340 может расшифровывать зашифрованные данные сервера с использованием первого совместно используемого секрета (например, с использованием первого ключа сеанса) для получения маскирующего коэффициента сервера, сертификата 388 сервера и полезных данных 392 сервера.

[0084] На этапе 312 клиентский компьютер 340 может проверять замаскированный открытый ключ сервера путем его повторного создания с использованием маскирующего коэффициента сервера и статического открытого ключа 384 сервера, который включен в сертификат 388 сервера. Клиентский компьютер 340 может аутентифицировать, что серверный компьютер 380 отправил сообщение с ответом на основе проверяемого замаскированного открытого ключа сервера.

[0085] На этапе 313 клиентский компьютер 340 может сохранить сертификат 388 сервера, так что статический открытый ключ 384 сервера может быть использован для шифрования последующего обмена данными с серверным компьютером 380, такого как тот, что описан выше со ссылкой на фиг. 2.

[0086] Потоки сообщений по фиг. 2 и фиг. 3 позволяют клиентскому компьютеру и серверному компьютеру устанавливать безопасный обмен данными с использованием неотслеживаемых сообщений, даже если клиентский компьютер ранее не сохранил открытый ключ серверного компьютера. Однако потоки сообщений по фиг. 2 и фиг. 3 не позволяют серверному компьютеру аутентифицировать клиентский компьютер без отправки дополнительных сообщений или включения дополнительных данных в сообщения с запросом и ответом. Таким образом, может возникнуть проблема отказа. Например, клиентский компьютер может отрицать отправку сообщения с запросом. Соответственно, было бы полезно, чтобы сообщения обладали свойством «невозможности отказа», так чтобы сообщения не могли быть отправлены компьютером в отличие от сообщения, сохраняющего конкретный закрытый ключ, соответствующий конкретному открытому ключу, включенному в указанное сообщение. Также было бы преимущественно, чтобы сообщения с серверного компьютера также имели аутентифицируемые данные, так чтобы от сообщения нельзя было отказаться.

[0087] Кроме того, усложнение данной проблемы необходимо для сообщений для сохранения «идеальной прямой секретности». То есть рассекречивание закрытого ключа компьютера или одного сообщения не должно затем рассекречивать какие-либо предыдущие сообщения, которые могут быть перехвачены. Дополнительно сообщения должны быть неотслеживаемыми. Кроме того, использование сети и вычислительных ресурсов может быть уменьшено путем ограничения потока сообщений для установки безопасного обмена данными только для одного сообщения с запросом с клиентского компьютера и одного сообщения с ответом с серверного компьютера. Способы и системы, которые решают эти проблемы при использовании только одного сообщения с запросом с клиентского компьютера и одного сообщения с ответом с серверного компьютера, описаны более подробно ниже.

III. БЕЗОПАСНЫЙ И НЕОТСЛЕЖИВАЕМЫЙ ОБМЕН ДАННЫМИ, ОБЕСПЕЧИВАЮЩИЙ ИДЕАЛЬНУЮ ПРЯМУЮ СЕКРЕТНОСТЬ И НЕВОЗМОЖНОСТЬ ОТКАЗА

[0088] В других потоках сообщений невозможность отслеживания может быть достигнута путем маскирования открытых ключей, которыми обмениваются открыто с использованием маскирующих коэффициентов. Такие потоки сообщений могут также достигать взаимной аутентификации двух компьютеров путем включения маскирующих коэффициентов в зашифрованные части сообщения, позволяя получателю сообщения аутентифицировать отправляющий компьютер путем сравнения замаскированного открытого ключа, принятого открыто, с совпадающим замаскированным открытым ключом, определенным путем применения маскирующего коэффициента к статическому открытому ключу, включенному в сертификат отправителя. Однако в таких потоках сообщений маскирующий коэффициент используется как для шифрования, так и для аутентификации. Соответственно, если закрытые ключи обоих устройств получены третьей стороной, третья сторона может расшифровывать любые новые сообщения, а также любые ранее перехваченные сообщения. Например, третья сторона может использовать статический закрытый ключ сервера вместе с замаскированным открытым ключом клиента (принятые открыто в сообщении с запросом) для генерирования совместно используемого секрета, который может быть использован для расшифровывания маскирующего коэффициента клиента (в зашифрованных полезных данных перехваченного сообщения с запросом). Затем третья сторона может расшифровывать сообщение с ответом, отправленное с сервера с использованием статического закрытого ключа клиента и маскирующего коэффициента клиента (полученных с сообщения с запросом, отправленного на сервер). Таким образом, третья сторона может расшифровывать ранее перехваченные сообщения, если они могут получать закрытые ключи как клиента, так и сервера. То есть, сообщения в данном примерном потоке сообщений нарушают «идеальную прямую секретность».

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

[0090] Было бы преимущественным устанавливать безопасный обмен данными с использованием только одного сообщения с запросом и одного сообщения с ответом, при этом чтобы сообщения обладали свойством «невозможности отслеживания» с обеспечением при этом «невозможности отказа» от сообщений и сохранением «идеальной прямой секретности».

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

[0091] Фиг. 4 представляет собой схему 400 потока сообщений клиентского компьютера 440 и серверного компьютера 480, устанавливающих безопасный и неотслеживаемый обмен данными с идеальной прямой секретностью, в соответствии с некоторыми вариантами осуществления. Данный поток сообщений содержит сообщение с запросом, переданное клиентским компьютером 440 на этапе 406, от которого не может отказаться клиентский компьютер 440. Сообщение с запросом на этапе 406 и сообщение с ответом с серверного компьютера 480 на этапе 415 являются неотслеживаемыми, поскольку они содержат кратковременные замаскированные открытые ключи вместо статических открытых ключей. Кроме того, сообщение с запросом и ответом сохраняет идеальную прямую секретность. Генерирование и формат сообщений с запросом и ответом более подробно описаны ниже.

[0092] В данном потоке сообщений клиентский компьютер 440 может инициировать установку безопасного обмена данными. Перед потоком сообщений клиентский компьютер 440 может сохранять пару 446 статических ключей клиента, содержащую статический закрытый ключ 442 клиента и статический открытый ключ 444 клиента. Клиентский компьютер может также сохранять сертификат 448 клиента, который подписан органом сертификации и который содержит статический открытый ключ 444 клиента. Клиентский компьютер 440 может также сохранять сертификат 488 сервера. Дополнительно клиентский компьютер 440 может сохранять полезные данные 452 клиента, которые могут быть закрытыми данными.

[0093] На этапе 401 клиентский компьютер 440 может генерировать маскирующий коэффициент клиента. Маскирующий коэффициент клиента может быть сгенерирован случайным образом.

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

[0095] На этапе 403 клиентский компьютер 440 может определить первый совместно используемый секрет с использованием маскирующего коэффициента клиента и статического открытого ключа 484 сервера, который может быть включен в сертификат 488 сервера. Клиентский компьютер 440 может определить первый ключ сеанса с использованием функции формирования ключа на основе первого совместно используемого секрета.

[0096] На этапе 404 клиентский компьютер 440 может определить подпись клиента путем подписывания (с использованием статического закрытого ключа 442 клиента) полезных данных 452 клиента, замаскированного открытого ключа клиента и статического открытого ключа 484 сервера. Клиентский компьютер 440 может определить подпись клиента, например, с использованием алгоритма создания цифровой подписи на основе эллиптической кривой (ECDSA). Подпись клиента может быть включена в сообщение с запросом с клиентского компьютера 440 для обеспечения невозможности отказа клиентского компьютера 440. Дополнительно подпись клиента основана на маскирующем коэффициенте клиента, который используется только в данном сеансе обмена данными (например, в сообщении с одним запросом и одним ответом). Таким образом, подпись действительна только для данного конкретного сообщения с запросом. Кроме того, подпись клиента основана на статическом открытом ключе 484 сервера. Таким образом, другой компьютер может не выдавать себя за принимающую сторону данного конкретного сообщения с запросом.

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

[0098] На этапе 405 клиентский компьютер 440 может шифровать полезные данные 452 клиента, сертификат 448 клиента, подпись клиента и замаскированный открытый ключ клиента с использованием первого совместно используемого секрета (например, с использованием первого ключа сеанса) для определения зашифрованных данных клиента. Клиентский компьютер может выполнить шифрование, например, с использованием процесса аутентифицированного шифрования связанными данными (AEAD). Полезные данные 452 клиента могут содержать закрытые данные клиента и/или запрос на определенные данные или информацию с серверного компьютера 480. После шифрования полезных данных 452 клиента клиентский компьютер 440 может обнулить (например, полностью удалить для предотвращения какого-либо восстановления) первый совместно используемый секрет и первый ключ сеанса.

[0099] На этапе 406 клиентский компьютер 440 может передавать «сообщение с запросом», содержащее замаскированный открытый ключ клиента и зашифрованные данные клиента, на серверный компьютер 480. Замаскированный открытый ключ клиента может быть отправлен открыто (например, в незашифрованном виде). Сообщение с запросом может указывать на то, что клиентский компьютер 440 запрашивает установку безопасного обмена данными с использованием совместно используемого секрета на основе замаскированного открытого ключа клиента. Сообщение с запросом может быть передано по небезопасной сети. Серверный компьютер 480 может принимать сообщение с запросом от клиентского компьютера 440.

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

[0101] Дополнительно сообщение с запросом, отправленное на этапе 405, обеспечивает невозможность отказа клиентского компьютера 440, поскольку зашифрованные данные клиента содержат подпись клиента, которая была сгенерирована с использованием маскирующего коэффициента клиента.

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

[0103] На этапе 407 серверный компьютер 480 может определить первый совместно используемый секрет с использованием статического закрытого ключа 482 сервера и замаскированного открытого ключа клиента, который был включен в сообщение с запросом. Первый совместно используемый секрет, определенный серверным компьютером на этапе 406 с использованием статического закрытого ключа 482 сервера и замаскированного открытого ключа клиента, может быть таким же, как и первый совместно используемый секрет, сгенерированный клиентским компьютером 440 на этапе 403 с использованием маскирующего коэффициента клиента и статического открытого ключа 484 сервера. Серверный компьютер 480 может также определить такой же первый ключ сеанса, определенный клиентским компьютером 440, с использованием функции формирования ключа на основе первого совместно используемого секрета.

[0104] На этапе 408 серверный компьютер 480 может расшифровывать зашифрованные данные клиента с использованием первого совместно используемого секрета (например, с использованием первого ключа сеанса) для получения полезных данных 452 клиента, сертификата 448 клиента, подписи клиента и замаскированного открытого ключа клиента. Серверный компьютер может выполнить расшифровку, например, с использованием процесса расшифровки на основе аутентифицированного шифрования связанными данными (AEAD). После расшифровывания зашифрованных данных клиента серверный компьютер 480 может обнулить (например, полностью удалить для предотвращения какого-либо восстановления) первый совместно используемый секрет и первый ключ сеанса.

[0105] На этапе 409 серверный компьютер 480 может проверить подпись клиента с использованием статического открытого ключа 444 клиента, который включен в сертификат 448 клиента, полезные данные 452 клиента, замаскированный открытый ключ клиента и статический открытый ключ 484 сервера. Серверный компьютер 480 может проверить подпись клиента, например, с использованием алгоритма создания цифровой подписи на основе эллиптической кривой (ECDSA).

[0106] Серверный компьютер 480 может также подтверждать подлинность цепочки сертификатов, относящейся к сертификату 448 клиента. Дополнительно серверный компьютер 480 может обрабатывать полезные данные 452 клиента и генерировать или идентифицировать любые подходящие данные или информацию для включения в полезные данные 492 сервера, подлежащие предоставлению в ответ на запрос клиентского компьютера.

[0107] На этапе 410 серверный компьютер 480 может генерировать маскирующий коэффициент сервера. Маскирующий коэффициент сервера может быть случайным образом сгенерированным криптографическим объектом nonce. Серверный компьютер 480 может использовать маскирующий коэффициент сервера для предотвращения отслеживания его третьими сторонами, как описано в настоящем документе. Например, серверный компьютер 480 может применять маскирующий коэффициент сервера к статическому открытому ключу 484 сервера (например, с использованием умножения) для определения замаскированного открытого ключа сервера. Серверный компьютер 480 может использовать только данный маскирующий коэффициент сервера и данный замаскированный открытый ключ сервера в данном конкретном сеансе обмена данными с клиентским компьютером 440 (например, в сообщении с запросом на этапе 406 и сообщении с ответом на этапе 415) и может генерировать разный маскирующий коэффициент для последующих сеансов обмена данными. Таким образом, идентификатор серверного компьютера 480 может не отслеживаться на основе замаскированного открытого ключа сервера.

[0108] На этапе 411 серверный компьютер 480 может определить второй совместно используемый секрет с использованием маскирующего коэффициента сервера, статического закрытого ключа 482 сервера и замаскированного открытого ключа клиента. В некоторых вариантах осуществления серверный компьютер 480 может сохранять несколько пар статических ключей, и он может использовать другую пару статических ключей для шифрования сообщения с ответом. Серверный компьютер 480 может также определить второй ключ сеанса с использованием функции формирования ключа и второго совместно используемого секрета.

[0109] На этапе 412 серверный компьютер 480 может определить замаскированный открытый ключ сервера с использованием маскирующего коэффициента сервера и статического открытого ключа сервера. Например, серверный компьютер 480 может применять маскирующий коэффициент сервера к статическому открытому ключу сервера (например, с использованием умножения) для определения замаскированного открытого ключа сервера. Статический открытый ключ сервера, используемый для определения замаскированного открытого ключа сервера, может быть частью другой пары статических ключей, как обсуждено выше.

[0110] На этапе 413 серверный компьютер 480 может шифровать маскирующий коэффициент сервера, сертификат сервера (соответствующий статическому открытому ключу пары статических ключей, используемой для шифрования), полезных данных 492 сервера и замаскированного открытого ключа сервера с использованием второго совместно используемого секрета (например, с использованием второго ключа сеанса) для получения зашифрованных данных сервера. Серверный компьютер 480 может выполнить шифрование, например, с использованием процесса аутентифицированного шифрования связанными данными (AEAD).

[0111] На этапе 414 серверный компьютер 480 может передавать сообщение с ответом, содержащее замаскированный открытый ключ сервера и зашифрованные данные сервера, на клиентский компьютер 440. Сообщение с ответом может быть отправлено по небезопасной сети. Замаскированный открытый ключ сервера может быть отправлен открыто (например, в незашифрованном виде). Однако замаскированный открытый ключ сервера основан на маскирующем коэффициенте сервера, который может быть использован только в данном конкретном сеансе обмена данными. Соответственно, серверный компьютер 480 не может быть отслежен третьей стороной, перехватывающей данное сообщение и другие сообщения, отправленные серверным компьютером 480. Клиентский компьютер 440 может принимать сообщение с ответом.

[0112] На этапе 416 клиентский компьютер 440 может определить второй совместно используемый секрет с использованием маскирующего коэффициента клиента и замаскированного открытого ключа сервера, который был принят в сообщении с ответом. Второй совместно используемый секрет, определенный клиентским компьютером 440 на этапе 416, может быть таким же, как и второй совместно используемый секрет, определенный серверным компьютером 480 на этапе 411 с использованием замаскированного открытого ключа клиента, маскирующего коэффициента сервера и статического закрытого ключа сервера. Клиентский компьютер 440 может также определить такой же второй ключ сеанса (который также определен серверным компьютером 480) с использованием функции формирования ключа и второго совместно используемого секрета.

[0113] На этапе 417 после определения второго совместно используемого секрета и второго ключа сеанса клиентский компьютер 440 может обнулить маскирующий коэффициент клиента. То есть клиентский компьютер 440 может удалять маскирующий коэффициент клиента, так что он не может быть восстановлен позже. Кроме того, даже если маскирующий коэффициент клиента был рассекречен и получен третьей стороной за короткий период времени перед его обнулением, третья сторона не сможет расшифровать какой-либо другой обмен данными с использованием маскирующего коэффициента клиента, он был использован только для расшифровывания данного конкретного сообщения с ответом. Дополнительно, даже если третья сторона получает доступ к обоим из статического закрытого ключа клиентского компьютера и статического закрытого ключа серверного компьютера, она не может расшифровать сообщение с ответом без получения маскирующего коэффициента клиента, который обнуляется сразу после принятия сообщения, представляющего собой сообщение с ответом. Таким образом, сохраняется идеальная прямая секретность.

[0114] На этапе 418 клиентский компьютер 440 может расшифровывать зашифрованные данные сервера с использованием второго совместно используемого секрета (например, с использованием второго ключа сеанса) для получения маскирующего коэффициента сервера, сертификата сервера (соответствующего статическому открытому ключу пары статических ключей, используемой для шифрования), полезных данных 492 сервера и замаскированного открытого ключа сервера. Клиентский компьютер 440 может выполнить расшифровку, например, с использованием процесса расшифровки на основе аутентифицированного шифрования связанными данными (AEAD).

[0115] На этапе 419 клиентский компьютер 440 может проверить замаскированный открытый ключ сервера путем его повторного создания с использованием маскирующего коэффициента сервера, включенного в сообщение с ответом, и статического открытого ключа сервера сертификата сервера, который также включен в сообщение с ответом. Клиентский компьютер 440 может аутентифицировать, что серверный компьютер 480 отправил сообщение с ответом на основе проверяемого замаскированного открытого ключа сервера. Клиентский компьютер 440 может также подтверждать подлинность цепочки сертификата сервера, включенного в сообщение с ответом.

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

[0117] На этапе 421 клиентский компьютер 440 и серверный компьютер 480 могут завершить сеанс обмена данными, или они могут продолжить безопасный обмен данными с использованием второго ключа сеанса.

[0118] Поток сообщений по фиг. 4 позволяет клиентскому компьютеру 440 и серверному компьютеру 480 установить безопасный обмен данными с использованием неотслеживаемых сообщений, тем самым обеспечивая конфиденциальность обмена данными и сохранение приватности клиентского компьютера 440, серверного компьютера 480 и их пользователей. Дополнительно клиентский компьютер 480 не может отказаться от сообщения с запросом, поскольку он содержит подпись клиента. Кроме того, сообщения с запросом и ответом сохраняют идеальную прямую секретность, поскольку их шифрование зависит от маскирующего коэффициента клиента и маскирующего коэффициента сервера, которые обнуляют сразу после того, как они становятся ненужными для процесса расшифровки. Дополнительно использование сети и вычислительных ресурсов уменьшается, поскольку данное решение достигается с использованием только одного сообщения с запросом и одного сообщения с ответом.

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

[0119] Фиг. 5 представляет собой схему 500 потока сообщений клиентского компьютера 540 и серверного компьютера 580, устанавливающих безопасный и неотслеживаемый обмен данными с идеальной прямой секретностью с использованием сообщений при невозможности отказа со стороны клиента и сервера, в соответствии с некоторыми вариантами осуществления. Данный поток сообщений содержит сообщение с запросом, переданное клиентским компьютером 540 на этапе 506, от которого не может отказаться клиентский компьютер 540, и сообщение с ответом, переданное серверным компьютером 580 на этапе 516, от которого не может отказаться серверный компьютер 580. Сообщение с запросом на этапе 506 и сообщение с ответом на этапе 516 являются неотслеживаемыми, поскольку они содержат одноразовые замаскированные открытые ключи вместо статических открытых ключей. Кроме того, сообщение с запросом и ответом сохраняет идеальную прямую секретность. Генерирование и формат сообщений с запросом и ответом более подробно описаны ниже.

[0120] В данном потоке сообщений клиентский компьютер 540 может инициировать установку безопасного обмена данными. Перед потоком сообщений клиентский компьютер 540 может сохранять пару 546 статических ключей клиента, содержащую статический закрытый ключ 542 клиента и статический открытый ключ 544 клиента. Клиентский компьютер может также сохранять сертификат 548 клиента, который подписан органом сертификации и который содержит статический открытый ключ 544 клиента. Клиентский компьютер 540 может также сохранять сертификат 588 сервера. Дополнительно клиентский компьютер 540 может сохранять полезные данные 552 клиента, которые могут быть закрытыми данными. Определенные этапы в схеме 500 потока сообщений по фиг. 5 могут быть выполнены подобно этапам в схеме 400 потока сообщений по фиг. 4.

[0121] На этапе 501 клиентский компьютер 540 может генерировать маскирующий коэффициент клиента. Маскирующий коэффициент клиента может быть сгенерирован случайным образом.

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

[0123] На этапе 503 клиентский компьютер 540 может определить первый совместно используемый секрет с использованием маскирующего коэффициента клиента и статического открытого ключа 584 сервера, который может быть включен в сертификат 588 сервера. Клиентский компьютер 540 может определить первый ключ сеанса с использованием функции формирования ключа на основе первого совместно используемого секрета.

[0124] На этапе 504 клиентский компьютер 540 может определить подпись клиента путем подписывания полезных данных 552 клиента, замаскированного открытого ключа клиента и статического открытого ключа 584 сервера. Клиентский компьютер 540 может определить подпись клиента, например, с использованием алгоритма создания цифровой подписи на основе эллиптической кривой (ECDSA). Подпись клиента может быть включена в сообщение с запросом с клиентского компьютера 540 для обеспечения невозможности отказа клиентского компьютера 540. Дополнительно подпись клиента основана на маскирующем коэффициенте клиента, который используется только в данном сеансе обмена данными (например, в сообщении с одним запросом и одним ответом). Таким образом, подпись действительна только для данного конкретного сообщения с запросом. Кроме того, подпись клиента основана на статическом открытом ключе 584 сервера. Таким образом, другой компьютер может не выдавать себя за принимающую сторону данного конкретного сообщения с запросом.

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

[0126] На этапе 505 клиентский компьютер 540 может шифровать полезные данные 552 клиента, сертификат 548 клиента, подпись клиента и замаскированный открытый ключ клиента с использованием первого совместно используемого секрета (например, с использованием первого ключа сеанса) для определения зашифрованных данных клиента. Клиентский компьютер может выполнить шифрование, например, с использованием процесса аутентифицированного шифрования связанными данными (AEAD). Полезные данные 552 клиента могут содержать закрытые данные клиента и/или запрос на определенные данные или информацию с серверного компьютера 580. После шифрования полезных данных 552 клиента клиентский компьютер 540 может обнулить (например, полностью удалить для предотвращения какого-либо восстановления) первый совместно используемый секрет и первый ключ сеанса.

[0127] На этапе 506 клиентский компьютер 540 может передавать «сообщение с запросом», содержащее замаскированный открытый ключ клиента и зашифрованные данные клиента, на серверный компьютер 580. Замаскированный открытый ключ клиента может быть отправлен открыто (например, в незашифрованном виде). Сообщение с запросом может указывать на то, что клиентский компьютер 540 запрашивает установление безопасного обмена данными с использованием совместно используемого секрета на основе замаскированного открытого ключа клиента. Сообщение с запросом может быть передано по небезопасной сети. Серверный компьютер 580 может принимать сообщение с запросом от клиентского компьютера 540. Поскольку замаскированный открытый ключ клиента используется только для данного сеанса обмена данными (маскирующий коэффициент клиента обнуляется на этапе 517), то он не может быть использован для отслеживания клиентского компьютера 540. Таким образом, сообщение с запросом, отправленное на этапе 505, является неотслеживаемым. Дополнительно сообщение с запросом, отправленное на этапе 505, обеспечивает невозможность отказа клиентского компьютера 540, поскольку зашифрованные данные клиента содержат подпись клиента, которая была сгенерирована с использованием маскирующего коэффициента клиента. Дополнительно сообщение с запросом сохраняет идеальную прямую секретность, поскольку отсутствуют данные, включенные в сообщение с запросом, которое может быть использовано для расшифровывания каких-либо данных в других сообщениях, отправленных клиентским компьютером 540, в прошлом или будущем. Идеальная прямая секретность сохраняется, поскольку замаскированный коэффициент клиента не предоставлен в зашифрованных данных клиента. Например, подпись клиента используется для аутентификации клиентского компьютера 540 вместо использования маскирующего коэффициента. Однако подпись клиента не содержит информацию, которая может быть использована для расшифровывания сообщений с клиентского компьютера 540, даже если статический закрытый ключ 542 клиента и статический закрытый ключ 582 сервера рассекречены.

[0128] На этапе 507 серверный компьютер 580 может определить первый совместно используемый секрет с использованием статического закрытого ключа 582 сервера и замаскированного открытого ключа клиента, который был включен в сообщение с запросом. Первый совместно используемый секрет, определенный серверным компьютером на этапе 506 с использованием статического закрытого ключа 582 сервера и замаскированного открытого ключа клиента, может быть таким же, как и первый совместно используемый секрет, сгенерированный клиентским компьютером 540 на этапе 503 с использованием маскирующего коэффициента клиента и статического открытого ключа 584 сервера. Серверный компьютер 580 может также определить такой же первый ключ сеанса, определенный клиентским компьютером 540, с использованием функции формирования ключа на основе первого совместно используемого секрета.

[0129] На этапе 508 серверный компьютер 580 может расшифровывать зашифрованные данные клиента с использованием первого совместно используемого секрета (например, с использованием первого ключа сеанса) для получения полезных данных 552 клиента, сертификата 548 клиента, подписи клиента и замаскированного открытого ключа клиента. Серверный компьютер может выполнить расшифровку, например, с использованием процесса расшифровки на основе аутентифицированного шифрования связанными данными (AEAD). После расшифровывания зашифрованных данных клиента серверный компьютер 580 может обнулить (например, полностью удалить для предотвращения какого-либо восстановления) первый совместно используемый секрет и первый ключ сеанса.

[0130] На этапе 509 серверный компьютер 580 может проверить подпись клиента с использованием статического открытого ключа 544 клиента, который включен в сертификат 548 клиента, полезные данные 552 клиента, замаскированный открытый ключ клиента и статический открытый ключ 584 сервера. Серверный компьютер 580 может проверить подпись клиента, например, с использованием алгоритма создания цифровой подписи на основе эллиптической кривой (ECDSA).

[0131] Серверный компьютер 580 может также подтверждать подлинность цепочки сертификатов, относящейся к сертификату 548 клиента. Дополнительно серверный компьютер 580 может обрабатывать полезные данные 552 клиента и генерировать или идентифицировать любые подходящие данные или информацию для включения в полезные данные 592 сервера, подлежащие предоставлению в ответ на запрос клиентского компьютера.

[0132] На этапе 510 серверный компьютер 580 может генерировать маскирующий коэффициент сервера. Маскирующий коэффициент сервера может быть случайным образом сгенерированным криптографическим объектом nonce. Серверный компьютер 580 может использовать маскирующий коэффициент сервера для предотвращения отслеживания его третьими сторонами, как описано в настоящем документе. Например, серверный компьютер 580 может применять маскирующий коэффициент сервера к статическому открытому ключу 584 сервера (например, с использованием умножения) для определения замаскированного открытого ключа сервера. Серверный компьютер 580 может использовать только данный маскирующий коэффициент сервера и данный замаскированный открытый ключ сервера в данном конкретном сеансе обмена данными с клиентским компьютером 540 (например, в сообщении с запросом на этапе 506 и сообщении с ответом на этапе 516) и может генерировать разный маскирующий коэффициент для последующих сеансов обмена данными. Таким образом, идентификатор серверного компьютера 580 может не отслеживаться на основе замаскированного открытого ключа сервера.

[0133] На этапе 511 серверный компьютер 580 может определить второй совместно используемый секрет с использованием маскирующего коэффициента сервера, статического закрытого ключа 582 сервера и замаскированного открытого ключа клиента. В некоторых вариантах осуществления серверный компьютер 580 может сохранять несколько пар статических ключей, и он может использовать другую пару статических ключей для шифрования сообщения с ответом. Серверный компьютер 580 может также определить второй ключ сеанса с использованием функции формирования ключа и второго совместно используемого секрета.

[0134] На этапе 512 серверный компьютер 580 может определить замаскированный открытый ключ сервера с использованием маскирующего коэффициента сервера и статического открытого ключа сервера. Например, серверный компьютер 580 может применять маскирующий коэффициент сервера к статическому открытому ключу сервера (например, с использованием умножения) для определения замаскированного открытого ключа сервера. Статический открытый ключ сервера, используемый для определения замаскированного открытого ключа сервера, может быть частью другой пары статических ключей, как обсуждено выше.

[0135] На этапе 513 серверный компьютер 580 может определить подпись сервера путем подписывания сертификата сервера, полезных данных 592 сервера, замаскированного открытого ключа сервера и статического открытого ключа 544 клиента. Серверный компьютер 580 может определить подпись сервера, например, с использованием алгоритма создания цифровой подписи на основе эллиптической кривой (ECDSA). Подпись сервера может быть включена в сообщение с ответом с серверного компьютера 580 для обеспечения невозможности отказа серверного компьютера 580. Дополнительно подпись сервера основана на замаскированном открытом ключе сервера, который используется только в данном сеансе обмена данными (например, в сообщении с одним запросом и одним ответом). Таким образом, подпись действительна только для данного конкретного сообщения с запросом. Кроме того, подпись сервера основана на статическом открытом ключе 544 клиента. Таким образом, другой компьютер может не выдавать себя за принимающую сторону данного конкретного сообщения с запросом.

[0136] На этапе 514 серверный компьютер 580 может шифровать сертификат сервера (соответствующий статическому открытому ключу пары статических ключей, используемой для шифрования), полезные данные 492 сервера, подпись сервера и замаскированный открытый ключ сервера с использованием второго совместно используемого секрета (например, с использованием второго ключа сеанса) для получения зашифрованных данных сервера. Серверный компьютер 580 может выполнить шифрование, например, с использованием процесса аутентифицированного шифрования связанными данными (AEAD).

[0137] На этапе 515 серверный компьютер 580 может обнулить маскирующий коэффициент сервера, так что он не может быть восстановлен.

[0138] На этапе 516 серверный компьютер 580 может передавать сообщение с ответом, содержащее замаскированный открытый ключ сервера и зашифрованные данные сервера, на клиентский компьютер 540. Сообщение с ответом может быть отправлено по небезопасной сети. Замаскированный открытый ключ сервера может быть отправлен открыто (например, в незашифрованном виде). Однако замаскированный открытый ключ сервера основан на маскирующем коэффициенте сервера, который может быть использован только в данном конкретном сеансе обмена данными. Соответственно, серверный компьютер 580 не может быть отслежен третьей стороной, перехватывающей данное сообщение и другие сообщения, отправленные серверным компьютером 580. Клиентский компьютер 540 может принимать сообщение с ответом.

[0139] На этапе 517 клиентский компьютер 540 может определить второй совместно используемый секрет с использованием маскирующего коэффициента клиента и замаскированного открытого ключа сервера, который был принят в сообщении с ответом. Второй совместно используемый секрет, определенный клиентским компьютером 540 на этапе 517, может быть таким же, как и второй совместно используемый секрет, определенный серверным компьютером 580 на этапе 511 с использованием замаскированного открытого ключа клиента, маскирующего коэффициента сервера и статического закрытого ключа сервера. Клиентский компьютер 540 может также определить такой же второй ключ сеанса (который также определен серверным компьютером 580) с использованием функции формирования ключа и второго совместно используемого секрета.

[0140] На этапе 518 после определения второго совместно используемого секрета и второго ключа сеанса клиентский компьютер 540 может обнулить маскирующий коэффициент клиента. То есть клиентский компьютер 540 может удалять маскирующий коэффициент клиента, так что он не может быть восстановлен позже. Кроме того, даже если маскирующий коэффициент клиента был рассекречен и получен третьей стороной за короткий период времени перед его обнулением, третья сторона не сможет расшифровать какой-либо другой обмен данными с использованием маскирующего коэффициента клиента, он был использован только для расшифровывания данного конкретного сообщения с ответом. Дополнительно, даже если третья сторона получает доступ к обоим из статического закрытого ключа клиентского компьютера и статического закрытого ключа серверного компьютера, она не может расшифровать сообщение с ответом без получения маскирующего коэффициента клиента, который обнуляется сразу после принятия сообщения, представляющего собой сообщение с ответом. Таким образом, сохраняется идеальная прямая секретность.

[0141] На этапе 519 клиентский компьютер 540 может расшифровывать зашифрованные данные сервера с использованием второго совместно используемого секрета (например, с использованием второго ключа сеанса) для получения маскирующего коэффициента сервера, сертификата сервера (соответствующего статическому открытому ключу пары статических ключей, используемой для шифрования), полезных данных 592 сервера и замаскированного открытого ключа сервера. Клиентский компьютер 540 может выполнить расшифровку, например, с использованием процесса расшифровки на основе аутентифицированного шифрования связанными данными (AEAD).

[0142] На этапе 519 клиентский компьютер 540 может проверить сервер с использованием статического открытого ключа сервера, который включен в сертификат сервера сообщения с ответом, полезные данные сервера 592, замаскированный открытый ключ сервера и статический открытый ключ сервера. Клиентский компьютер 540 может проверить подпись клиента, например, с использованием алгоритма создания цифровой подписи на основе эллиптической кривой (ECDSA). Клиентский компьютер 540 может также подтверждать подлинность цепочки сертификата сервера, включенного в сообщение с ответом.

[0143] На этапе 520 клиентский компьютер 540 и серверный компьютер 580 могут завершить сеанс обмена данными, или они могут продолжить безопасный обмен данными с использованием второго ключа сеанса.

[0144] Поток сообщений по фиг. 5 позволяет клиентскому компьютеру 540 и серверному компьютеру 580 установить безопасный обмен данными с использованием неотслеживаемых сообщений, тем самым обеспечивая конфиденциальность обмена данными и сохранение приватности клиентского компьютера 540, серверного компьютера 580 и их пользователей. Дополнительно клиентский компьютер 540 не может отказаться от сообщения с запросом, поскольку он содержит подпись клиента. Серверный компьютер 580 может также не отказываться от сообщения с ответом, поскольку оно содержит подпись сервера. Кроме того, сообщения с запросом и ответом сохраняют идеальную прямую секретность, поскольку их шифрование зависит от маскирующего коэффициента клиента и маскирующего коэффициента сервера, которые обнуляют сразу после того, как они становятся ненужными для процесса расшифровки. Дополнительно использование сети и вычислительных ресурсов уменьшается, поскольку данное решение достигается с использованием только одного сообщения с запросом и одного сообщения с ответом.

C. Безопасный обмен данными, обеспечивающий идеальную прямую секретность и невозможность отказа клиента и сервера с использованием двухкомпонентных закрытых подписей

[0145] Фиг. 6 представляет собой схему 600 потока сообщений клиентского компьютера 640 и серверного компьютера 680, устанавливающих безопасный и неотслеживаемый обмен данными с использованием зашифрованной части подписи и незашифрованной части подписи для обеспечения невозможности отказа, в соответствии с некоторыми вариантами осуществления. Зашифрованная часть подписи может содержать идентифицирующую информацию, тогда как незашифрованная часть подписи не содержит идентифицирующую информацию. Дополнительно незашифрованная часть подписи может быть основана на зашифрованных данных. Таким образом, подпись может быть основана на зашифрованных данных и одновременно с этим является «неотслеживаемой».

[0146] Данный поток сообщений содержит сообщение с запросом, переданное клиентским компьютером 640 на этапе 607, от которого не может отказаться клиентский компьютер 640, и сообщение с ответом, переданное серверным компьютером 680 на этапе 618, от которого не может отказаться серверный компьютер 680. Сообщение с запросом на этапе 607 и сообщение с ответом на этапе 618 являются неотслеживаемыми, поскольку они содержат одноразовые замаскированные открытые ключи вместо статических открытых ключей. Кроме того, сообщение с запросом и ответом сохраняет идеальную прямую секретность. Генерирование и формат сообщений с запросом и ответом более подробно описаны ниже.

[0147] В данном потоке сообщений клиентский компьютер 640 может инициировать установку безопасного обмена данными. Перед потоком сообщений клиентский компьютер 640 может сохранять пару 646 статических ключей клиента, содержащую статический закрытый ключ 642 клиента и статический открытый ключ 644 клиента. Клиентский компьютер может также сохранять сертификат 648 клиента, который подписан органом сертификации и который содержит статический открытый ключ 644 клиента. Клиентский компьютер 640 может также сохранять сертификат 688 сервера. Дополнительно клиентский компьютер 640 может сохранять полезные данные 652 клиента, которые могут быть закрытыми данными.

[0148] На этапе 601 клиентский компьютер 640 может генерировать маскирующий коэффициент клиента. Маскирующий коэффициент клиента может быть сгенерирован случайным образом.

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

[0150] На этапе 603 клиентский компьютер 640 может определить первый совместно используемый секрет с использованием маскирующего коэффициента клиента и статического открытого ключа 684 сервера, который может быть включен в сертификат 688 сервера. Клиентский компьютер 640 может определить первый ключ сеанса с использованием функции формирования ключа на основе первого совместно используемого секрета.

[0151] На этапе 604 клиентский компьютер 640 может определить L-подпись клиента и случайное значение L-подписи клиента с использованием алгоритма L-подписи. Алгоритм L-подписи может представлять собой, например, алгоритм подписи ECDSA или алгоритм подписи Шнорра.

[0152] На этапе 605 клиентский компьютер 640 может шифровать L-подпись клиента, полезные данные 652 клиента, сертификат 648 клиента и замаскированный открытый ключ клиента с использованием первого совместно используемого секрета (например, с использованием первого ключа сеанса) для определения зашифрованных данных клиента. Клиентский компьютер может выполнить шифрование, например, с использованием процесса аутентифицированного шифрования связанными данными (AEAD). Полезные данные 652 клиента могут содержать закрытые данные клиента и/или запрос на определенные данные или информацию с серверного компьютера 680. После шифрования полезных данных 652 клиента клиентский компьютер 640 может обнулить (например, полностью удалить для предотвращения какого-либо восстановления) первый совместно используемый секрет и первый ключ сеанса.

[0153] На этапе 606 клиентский компьютер 640 может определить R-подпись клиента с использованием алгоритма R-подписи на основе статического закрытого ключа 642 клиента, случайного значения L-подписи клиента и зашифрованных данных клиента. Таким образом, L-подпись основана на незашифрованных полезных данных 652 клиента, тогда как R-подпись основана на зашифрованных данных клиента. L-подпись клиента и R-подпись клиента вместе образуют подпись клиента. Как L-подпись, так и R-подпись требуются для подтверждения подлинности сообщения с запросом. Вместе L-подпись клиента и R-подпись клиента обеспечивают невозможность отказа от сообщения с запросом с клиентского компьютера 640. Дополнительно R-подпись клиента основана на зашифрованных данных клиента, которые содержат замаскированный открытый ключ клиента, используемый только в данном сеансе обмена данными (например, в сообщении с одним запросом и одним ответом). Таким образом, подпись клиента действительна только для данного конкретного сообщения с запросом.

[0154] На этапе 607 клиентский компьютер 640 может передавать сообщение с запросом, содержащее замаскированный открытый ключ клиента, зашифрованные данные клиента и R-подпись клиента, на серверный компьютер 680. Замаскированный открытый ключ клиента и R-подпись клиента могут быть отправлены открыто (например, в незашифрованном виде). Таким образом, R-подпись клиента, которая основана на зашифрованных данных клиента, отправляется незашифрованной, тогда как L-подпись клиента включена в зашифрованные данные клиента. L-подпись клиента может содержать части подписи клиента, которые могут быть использованы для идентификации клиента. Следовательно, подпись клиента может быть основана на зашифрованных данных клиента с обеспечением при этом невозможности отслеживания, поскольку часть R-подписи основана на зашифрованных данных, тогда как часть L-подписи, которая может быть использована для идентификации и отслеживания клиентского компьютера 640, включена в зашифрованные данные клиента.

[0155] Сообщение с запросом может также указывать на то, что клиентский компьютер 640 запрашивает установку безопасного обмена данными с использованием совместно используемого секрета на основе замаскированного открытого ключа клиента. Сообщение с запросом может быть передано по небезопасной сети. Серверный компьютер 680 может принимать сообщение с запросом от клиентского компьютера 640. Поскольку замаскированный открытый ключ клиента используется только для данного сеанса обмена данными (маскирующий коэффициент клиента обнуляется на этапе 620), то он не может быть использован для отслеживания клиентского компьютера 640. Таким образом, сообщение с запросом, отправленное на этапе 605, является неотслеживаемым. Дополнительно сообщение с запросом, отправленное на этапе 605, обеспечивает невозможность отказа клиентского компьютера 640, поскольку зашифрованные данные клиента содержат подпись клиента, которая была сгенерирована с использованием маскирующего коэффициента клиента. Дополнительно сообщение с запросом сохраняет идеальную прямую секретность, поскольку отсутствуют данные, включенные в сообщение с запросом, которое может быть использовано для расшифровывания каких-либо данных в других сообщениях, отправленных клиентским компьютером 640, в прошлом или будущем. Идеальная прямая секретность сохраняется, поскольку замаскированный коэффициент клиента не предоставлен в зашифрованных данных клиента. Например, подпись клиента используется для аутентификации клиентского компьютера 640 вместо использования маскирующего коэффициента. Однако подпись клиента не содержит информацию, которая может быть использована для расшифровывания сообщений с клиентского компьютера 640, даже если статический закрытый ключ 642 клиента и статический закрытый ключ 682 сервера рассекречены.

[0156] На этапе 608 серверный компьютер 680 может определить первый совместно используемый секрет с использованием статического закрытого ключа 682 сервера и замаскированного открытого ключа клиента, который был включен в сообщение с запросом. Первый совместно используемый секрет, определенный серверным компьютером на этапе 606 с использованием статического закрытого ключа 682 сервера и замаскированного открытого ключа клиента, может быть таким же, как и первый совместно используемый секрет, определенный клиентским компьютером 640 на этапе 603 с использованием маскирующего коэффициента клиента и статического открытого ключа 684 сервера. Серверный компьютер 680 может также определить такой же первый ключ сеанса, определенный клиентским компьютером 640, с использованием функции формирования ключа на основе первого совместно используемого секрета.

[0157] На этапе 609 серверный компьютер 680 может расшифровывать зашифрованные данные клиента с использованием первого совместно используемого секрета (например, с использованием первого ключа сеанса) для получения L-подписи клиента, полезных данных 652 клиента и сертификата 648 клиента. Серверный компьютер может выполнить расшифровку, например, с использованием процесса расшифровки на основе аутентифицированного шифрования связанными данными (AEAD). После расшифровывания зашифрованных данных клиента серверный компьютер 680 может обнулить (например, полностью удалить для предотвращения какого-либо восстановления) первый совместно используемый секрет и первый ключ сеанса.

[0158] На этапе 610 серверный компьютер 680 может проверить подпись клиента, которая содержит как L-подпись клиента, так и R-подпись клиента, с использованием статического открытого ключа 644 клиента (который включен в сертификат 648 клиента), L-подписи клиента, R-подписи клиента и зашифрованных данных клиента.

[0159] Серверный компьютер 680 может также подтверждать подлинность цепочки сертификатов, относящейся к сертификату 648 клиента. Дополнительно серверный компьютер 680 может обрабатывать полезные данные 652 клиента и генерировать или идентифицировать любые подходящие данные или информацию для включения в полезные данные 692 сервера, подлежащие предоставлению в ответ на запрос клиентского компьютера.

[0160] На этапе 611 серверный компьютер 680 может генерировать маскирующий коэффициент сервера. Маскирующий коэффициент сервера может быть случайным образом сгенерированным криптографическим объектом nonce. Серверный компьютер 680 может использовать маскирующий коэффициент сервера для предотвращения отслеживания его третьими сторонами, как описано в настоящем документе. Например, серверный компьютер 680 может применять маскирующий коэффициент сервера к статическому открытому ключу 684 сервера (например, с использованием умножения) для определения замаскированного открытого ключа сервера. Серверный компьютер 680 может использовать только данный маскирующий коэффициент сервера и данный замаскированный открытый ключ сервера в данном конкретном сеансе обмена данными с клиентским компьютером 640 (например, в сообщении с запросом и сообщении с ответом) и может генерировать разный маскирующий коэффициент для последующих сеансов обмена данными. Таким образом, идентификатор серверного компьютера 680 может не отслеживаться на основе замаскированного открытого ключа сервера.

[0161] На этапе 612 серверный компьютер 680 может определить второй совместно используемый секрет с использованием маскирующего коэффициента сервера, статического закрытого ключа 682 сервера и замаскированного открытого ключа клиента. В некоторых вариантах осуществления серверный компьютер 680 может сохранять несколько пар статических ключей, и он может использовать другую пару статических ключей для шифрования сообщения с ответом. Серверный компьютер 680 может также определить второй ключ сеанса с использованием функции формирования ключа и второго совместно используемого секрета.

[0162] На этапе 613 серверный компьютер 680 может определить L-подпись сервера и случайное значение L-подписи сервера с использованием алгоритма L-подписи. Алгоритм L-подписи может представлять собой, например, алгоритм подписи ECDSA или алгоритм подписи Шнорра.

[0163] На этапе 615 серверный компьютер 680 может шифровать L-подпись сервера, полезные данные 692 сервера, сертификат сервера и замаскированный открытый ключ сервера с использованием второго совместно используемого секрета (например, с использованием второго ключа сеанса) для определения зашифрованных данных сервера. Серверный компьютер 680 может выполнить шифрование, например, с использованием процесса аутентифицированного шифрования связанными данными (AEAD). Полезные данные 692 сервера могут содержать закрытые данные сервера и/или определенные данные или информацию в ответ на запрос с клиентского компьютера 640. После шифрования клиентский компьютер 680 может обнулить (например, полностью удалить для предотвращения какого-либо восстановления) первый совместно используемый секрет и первый ключ сеанса.

[0164] На этапе 616 серверный компьютер 640 может определить R-подпись сервера с использованием алгоритма R-подписи на основе статического закрытого ключа 682 сервера, случайного значения L-подписи сервера и зашифрованных данных сервера. Таким образом, L-подпись сервера основана на незашифрованных полезных данных 692 сервера, тогда как R-подпись сервера основана на зашифрованных данных сервера. L-подпись сервера и R-подпись сервера вместе образуют подпись сервера. Как L-подпись сервера, так и R-подпись сервера требуются для подтверждения подлинности сообщения с ответом с серверного компьютера 680. Вместе L-подпись сервера и R-подпись сервера обеспечивают невозможность отказа от сообщения с ответом с серверного компьютера 680. Дополнительно R-подпись сервера основана на зашифрованных данных сервера, которые содержат замаскированный открытый ключ сервера, используемый только в данном сеансе обмена данными (например, в сообщении с одним запросом и одним ответом). Таким образом, подпись сервера действительная только для данного конкретного сообщения с запросом.

[0165] На этапе 617 серверный компьютер 680 может обнулить маскирующий коэффициент сервера, так что он не может быть восстановлен.

[0166] На этапе 618 серверный компьютер 680 может передавать сообщение с ответом, содержащее R-подпись сервера, замаскированный открытый ключ сервера и зашифрованные данные сервера, на клиентский компьютер 680. Сообщение с ответом может быть отправлено по небезопасной сети. Замаскированный открытый ключ сервера и R-подпись сервера могут быть отправлены открыто (например, в незашифрованном виде). Однако замаскированный открытый ключ сервера основан на маскирующем коэффициенте сервера, который может быть использован только в данном конкретном сеансе обмена данными. Дополнительно R-подпись сервера не содержит информацию, идентифицирующую серверный компьютер 680. Вместо этого любая информация, идентифицирующая серверный компьютер 680, включена в L-подпись сервера, которая включена в зашифрованные данные сервера. Соответственно, серверный компьютер 680 не может быть отслежен третьей стороной, перехватывающей данное сообщение и другие сообщения, отправленные серверным компьютером 680. Клиентский компьютер 640 может принимать сообщение с ответом.

[0167] На этапе 619 клиентский компьютер 640 может определить второй совместно используемый секрет с использованием маскирующего коэффициента клиента и замаскированного открытого ключа сервера, который был принят в сообщении с ответом. Второй совместно используемый секрет, определенный клиентским компьютером 640 на этапе 619, может быть таким же, как и второй совместно используемый секрет, определенный серверным компьютером 680 на этапе 612 с использованием замаскированного открытого ключа клиента, маскирующего коэффициента сервера и статического закрытого ключа сервера. Клиентский компьютер 640 может также определить такой же второй ключ сеанса (который также определен серверным компьютером 680) с использованием функции формирования ключа и второго совместно используемого секрета.

[0168] На этапе 620 после определения второго совместно используемого секрета и второго ключа сеанса клиентский компьютер 640 может обнулить маскирующий коэффициент клиента. То есть клиентский компьютер 640 может удалять маскирующий коэффициент клиента, так что он не может быть восстановлен позже. Кроме того, даже если маскирующий коэффициент клиента был рассекречен и получен третьей стороной за короткий период времени перед его обнулением, третья сторона не сможет расшифровать какой-либо другой обмен данными с использованием маскирующего коэффициента клиента, он был использован только для расшифровывания данного конкретного сообщения с ответом. Дополнительно, даже если третья сторона получает доступ к обоим из статического закрытого ключа клиентского компьютера и статического закрытого ключа серверного компьютера, она не может расшифровать сообщение с ответом без получения маскирующего коэффициента клиента, который обнуляется сразу после принятия сообщения, представляющего собой сообщение с ответом. Таким образом, сохраняется идеальная прямая секретность.

[0169] На этапе 621 клиентский компьютер 540 может расшифровывать зашифрованные данные сервера с использованием второго совместно используемого секрета (например, с использованием второго ключа сеанса) для получения L-подписи сервера, маскирующего коэффициента сервера, сертификата сервера (соответствующего статическому открытому ключу пары статических ключей, используемой для шифрования) и полезных данных 592 сервера. Клиентский компьютер 640 может выполнить расшифровку, например, с использованием процесса расшифровки на основе аутентифицированного шифрования связанными данными (AEAD).

[0170] На этапе 622 клиентский компьютер 640 может проверить подпись сервера, которая содержит как L-подпись сервера, так и R-подпись сервера, с использованием статического открытого ключа сервера (который включен в сертификат клиента), L-подписи сервера, R-подписи сервера и зашифрованных данных сервера. Поскольку подлинность подписи сервера, которая основана на зашифрованных данных сервера, может быть подтверждена с использованием статического открытого ключа сервера, серверный компьютер 680 не может отказаться от сообщения с ответом.

[0171] Затем клиентский компьютер 640 и серверный компьютер 680 могут завершить сеанс обмена данными, или они могут продолжить безопасный обмен данными с использованием второго ключа сеанса.

[0172] Поток сообщений по фиг. 6 позволяет клиентскому компьютеру 640 и серверному компьютеру 680 установить безопасный обмен данными с использованием неотслеживаемых сообщений, тем самым обеспечивая конфиденциальность обмена данными и сохранение приватности клиентского компьютера 640, серверного компьютера 680 и их пользователей. Дополнительно клиентский компьютер 640 не может отказаться от сообщения с запросом, поскольку он содержит подпись клиента. Серверный компьютер 680 может также не отказываться от сообщения с ответом, поскольку оно содержит подпись сервера. Дополнительно подпись клиента и подпись сервера основаны на своих соответственных зашифрованных данных, а не только на незашифрованных данных, которые обеспечивают улучшенную безопасность. Кроме того, подписи клиента и сервера не содержат распознаваемую информацию, поскольку часть L-подписи зашифрована. Таким образом, объединенные L-подпись и R-подпись представляют собой закрытую и анонимную подпись. Кроме того, сообщения с запросом и ответом сохраняют идеальную прямую секретность, поскольку их шифрование зависит от маскирующего коэффициента клиента и маскирующего коэффициента сервера, которые обнуляют сразу после того, как они становятся ненужными для процесса расшифровки. Дополнительно использование сети и вычислительных ресурсов уменьшается, поскольку данное решение достигается с использованием только одного сообщения с запросом и одного сообщения с ответом.

VI. СПОСОБЫ БЕЗОПАСНОГО ОБМЕНА ДАННЫМИ

[0173] Способы установки безопасного обмена данными описаны ниже со ссылкой на фиг. 7 и фиг. 8. Схемы потока сообщений, описанные в настоящем документе, могут включать эти способы или их часть.

A. Способ запрашивания и установки безопасного обмена данными

[0174] Фиг. 7 представляет собой блок-схему 700 выполняемого первым компьютером способа запрашивания и установки безопасного обмена данными в соответствии с некоторыми вариантами осуществления. Способ может быть выполнен, например, клиентским компьютером 440, клиентским компьютером 540 или клиентским компьютером 640, обсужденным выше. Перед началом способа первый компьютер может сохранить первый статический закрытый ключ первого компьютера, первый статический открытый ключ первого компьютера, соответствующий первому статическому закрытому ключу, и второй статический открытый ключ второго компьютера.

[0175] На этапе 701 первый компьютер может генерировать первый маскирующий коэффициент. Первый маскирующий коэффициент может быть сгенерирован с использованием генератора псевдослучайных чисел. Первый маскирующий коэффициент может быть использован как закрытый ключ на основе эллиптической кривой.

[0176] На этапе 702 первый компьютер может определить первый замаскированный открытый ключ с использованием первого маскирующего коэффициента. Первый замаскированный открытый ключ и первый маскирующий коэффициент могут образовывать пару ключей на основе эллиптической кривой.

[0177] На этапе 703 первый компьютер может генерировать подпись первого компьютера путем подписывания первого замаскированного открытого ключа с использованием первого статического закрытого ключа. Первый компьютер может также подписывать закрытые данные клиента и открытый ключ аутентификации второго компьютера с использованием первого статического закрытого ключа. Первый компьютер может генерировать подпись с использованием алгоритма цифровой подписи (например, ECDSA).

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

[0179] На этапе 705 первый компьютер может шифровать данные первого компьютера с использованием первого совместно используемого секрета. Данные первого компьютера могут содержать первый статический открытый ключ и подпись первого компьютера для получения зашифрованных данных первого компьютера.

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

[0181] С использованием способа по фиг. 7 первый компьютер может отправлять сообщение на второй компьютер, так что второй компьютер может подтверждать подлинность подписи первого компьютера с подтверждением при этом того, что первый компьютер сгенерировал сообщение.

B. Способ обеспечения ответа на запрос для установки безопасного обмена данными

[0182] Фиг. 8 представляет собой блок-схему 800 способа обеспечения ответа на запрос для установки безопасного обмена данными в соответствии с некоторыми вариантами осуществления. Способ может быть выполнен, например, серверным компьютером 480, серверным компьютером 580 или серверным компьютером 680, обсужденным выше. Перед началом способа второй компьютер может сохранять второй статический закрытый ключ второго компьютера и второй статический открытый ключ второго компьютера, соответствующий второму статическому закрытому ключу.

[0183] На этапе 801 второй компьютер может принимать от первого компьютера первое сообщение, содержащее первый замаскированный открытый ключ первого компьютера и зашифрованные данные первого компьютера. Первое сообщение может быть сгенерировано первым компьютером с использованием способа, описанного выше в отношении фиг. 7.

[0184] На этапе 802 второй компьютер может определить первый совместно используемый секрет с использованием первого замаскированного открытого ключа и второго статического закрытого ключа. Второй компьютер может определить такой же первый совместно используемый секрет, который был определен первым компьютером.

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

[0186] На этапе 804 второй компьютер может подтверждать подлинность подписи первого компьютера с использованием первого статического открытого ключа первого компьютера и первого замаскированного открытого ключа. Второй компьютер может подтверждать подлинность подписи первого компьютера с использованием алгоритма цифровой подписи (например, ECDSA).

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

[0188] С использованием способа по фиг. 8 второй компьютер может аутентифицировать первый компьютер путем подтверждения подлинности подписи первого компьютера.

V. ПОДРОБНЫЕ СПОСОБЫ БЕЗОПАСНОГО ОБМЕНА ДАННЫМИ

[0189] Первый компьютер и второй компьютер могут установить безопасный обмен данными с использованием неотслеживаемых сообщений, которые обеспечивают невозможность отказа и идеальную прямую секретность, как описано в настоящем документе. Такой безопасный обмен данными может быть установлен первым и вторым компьютерами, выполняющими способы путем реализации набора инструкций, которые описаны ниже в отношении фиг. 9, 10 и 11. Таблица 1, приведенная ниже, содержит некоторые определения терминов и функций, используемых на фиг. 9, 10 и 11. Часть всех инструкций, терминов и функций, описанных со ссылкой на фиг. 9, 10 и 11, может быть реализована в потоках сообщений, описанных в настоящем документе при необходимости. Инструкции, термины и функции, описанные со ссылкой на фиг. 9, 10 и 11, являются иллюстративными, но не исчерпывающими.

AEAD, AEAD-1 (sk, data, associated data) Алгоритм для аутентифицированного шифрования посредством связанных данных (associated data) (AES ключа сеанса SK, данных (data) для зашифровки или расшифровки, связанных данных). Связанные данные могут оставаться в исходном виде, но могут быть проверены на сохранность.
Sign(sk, data), verify(vk, sig, data) Алгоритмы для подписывания (sign) и проверки (verify) с использованием схемы цифровой подписи (signature) (например, ECDSA). sk представляет собой ключ подписи. vk представляет собой ключ проверки. Схема подписи может также включать хеширование и проверку хеша.
PrivSign(sk, data) = [sign_L(), sign_R(sk, random, data) ]
PrivVerify(vk, sig_L, Sig_R, data)
Алгоритмы для создания и подтверждения подлинности «закрытых» подписей. Алгоритм подписывания состоит из двух разных алгоритмов: sign_L() и sing_R(). Sign_L() выводит случайное значение (random) и sig_L. sign_R() учитывает ключ подписи sk, случайное значение, сгенерированное посредством sig_L, и данные для подписывания и создает sig_R.
Как sig_L, так и sig_R нужны для проверки подписи. Знание только Sig_R не выдает информации об идентификации подписанта. Как подпись ECDSA, так и подпись Шнорра, например, могут быть использованы в данной форме и обладать этими свойствами.
enc_c Зашифрованные данные, сгенерированные на клиенте (IFD/мобильном устройстве)
enc_s Зашифрованные данные, сгенерированные на сервере (ICC)
C_s Цепочка сертификатов, аутентифицирующая сервер (ICC)
C_s_{n} Цепочка сертификатов, аутентифицирующая сервер (ICC) - n-я версия
C_c Цепочка сертификатов, аутентифицирующая клиента (ICC)
d_bc Маскирующий коэффициент клиента
d_bs Маскирующий коэффициент сервера
d_c, Q_c = [d_c]P Открытый ключ аутентификации клиента, совпадающий с соответствующим закрытым ключом: d_c
d_ec, Q_ec = [d_ec]P Кратковременный открытый ключ клиента, совпадающий с кратковременным закрытым ключом: d_ec
d_s, Q_s = [d_s]P Открытый ключ аутентификации сервера (ICC), совпадающий с соответствующим закрытым ключом: d_s
d_s_{n}, Q_s_{n} Открытый и закрытый ключи аутентификации сервера (ICC), n-я версия.
ICC Мобильный телефон, чип с интегральными схемами или сервер
ID_s Идентификатор сервера
IFD Интерфейсное устройство или клиент
IV Вектор инициализации (принадлежит к [0..q-1])
KDF Функция 800-56C формирования ключа на основе AES C_MAC. Применяется на соединенных входных данных
PRNG Генератор псевдослучайных чисел
PubK (C) Извлечение открытого ключа из Cert C
q Порядок кривой
Q_bc Замаскированный открытый ключ клиента
Q_bs Замаскированный открытый ключ сервера
SD_c Закрытые данные клиента (полезные данные)
SD_s Закрытые данные сервера (полезные данные)
seed Счетчик или время и т. д., доступные для проверки на ICC или сервере и обеспечивающие новизну маскирующего коэффициента.
sID_s Идентификатор сервера (ICC) для сеанса. Основан на х-координате Q_bs (x_coord (Q_bs))
sID_c Идентификатор клиента (IFD или мобильного устройства). Усеченное значение х-координаты Q_ec
sk_1_c, sk_c, sk_1_s, sk_s, sk_2_c AES ключи сеанса безопасного обмена сообщениями
Z, Z_1,Z_2 Промежуточные совместно используемые секретные ключи (x-координата совместной результирующей точки EC-DH)
Zeroize Сброс всех входных параметров - значения, установленные на все двоичные нули.

Таблица 1

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

[0190] Фиг. 9 представляет собой таблицу 900 этапов для выполнения реализуемого с помощью компьютера способа установки безопасного и неотслеживаемого обмена данными с идеальной прямой секретностью между клиентским компьютером и серверным компьютером, так что клиентский компьютер не может отказываться от своих сообщений, в соответствии с некоторыми вариантами осуществления. Клиентский компьютер может представлять собой, например, интерфейсное устройство (IFD). Серверный компьютер может представлять собой, например, чип с интегральными микросхемами (ICC) или мобильное устройство. Некоторые из всех этапов в таблице 900 могут быть выполнены в потоках сообщений, описанных в настоящем документе, например, таких как поток сообщений по фиг. 4. Дополнительно этапы в таблице 900 могут быть выполнены в другом порядке.

[0191] На этапе 901 клиентский компьютер может сохранить n-ую версию открытого ключа аутентификации серверного компьютера («Q_s_{n}»). Клиентский компьютер мог ранее принять данную конкретную версию открытого ключа серверного компьютера от серверного компьютера. Клиентский компьютер может также сохранить n-ую версию сертификата серверного компьютера («C_s_{n}») для аутентификации цепочки сертификатов серверного компьютера. Клиентский компьютер может также сохранить закрытые данные клиента («SD_c»). Закрытые данные клиента могут быть частью полезных данных, отправляемых в сообщении с запросом на серверный компьютер. Клиентский компьютер может также сохранить идентификатор сервера («ID_s»), идентифицирующий серверный компьютер. Клиентский компьютер может также сохранить сертификат клиента («C_c») для аутентификации цепочки сертификатов клиентского компьютера. Клиентский компьютер может также сохранить закрытый ключ аутентификации клиента («d_c»), который совпадает с соответствующим открытым ключом аутентификации клиента («Q_c»), образуя пару ключей на основе эллиптической кривой. Открытый ключ аутентификации клиента («Q_c») может быть определен с использованием алгоритма с открытым ключом («P») на основе закрытого ключа аутентификации клиента (Q_c = [d_c] P). Клиентский компьютер может также сохранить начальное значение («seed»). Начальное значение может быть значением доверенного времени или значением счетчика, которое может быть включено в сообщение для указания новизны или своевременности данного сообщения.

[0192] Серверный компьютер может сохранить n-ую версию открытого ключа аутентификации сервера («Q_s_{n}») и соответствующего закрытого ключа аутентификации сервера («d_s_{n}»), которые образуют пару ключей на основе эллиптической кривой. Серверный компьютер может определить открытый ключ аутентификации сервера с использованием алгоритма с открытым ключом («P») на основе закрытого ключа аутентификации сервера (Q_s_{n} = [d_s_{n}] P). Серверный компьютер может также сохранить n-ую версию сертификата сервера («C_s_{n}») для аутентификации цепочки сертификатов серверного компьютера. Серверный компьютер может также сохранить закрытые данные сервера («SD_s»), которые могут быть включены в зашифрованные полезные данные для клиентского компьютера. Серверный компьютер может также сохранить следующие версии открытого ключа аутентификации сервера («Q_s_{n+1}»), закрытый ключ аутентификации сервера («d_s_{n+1}») и соответствующий сертификат («C_s_{n+1}»). Следующая версия открытого ключа аутентификации сервера («Q_s_{n+1}») может быть другим открытым ключом, но он может быть подписан с использованием закрытого ключа аутентификации сервера («d_s_{n}»), соответствующего открытому ключу аутентификации сервера («Q_s_{n}»), для продолжения цепочки сертификатов.

[0193] На этапе 902 клиентский компьютер может генерировать маскирующий коэффициент клиента («d_bc») с использованием генератора псевдослучайных чисел («PRNG () # [0..q-1]»).

[0194] На этапе 903 клиентский компьютер может определить замаскированный открытый ключ клиента («Q_bc») с использованием алгоритма с открытым ключом («P») и маскирующего коэффициента клиента («Q_bc = [d_bc] . P»).

[0195] На этапе 904 клиентский компьютер может определить первый промежуточный совместно используемый секрет («Z_1»). Первый промежуточный совместно используемый секрет может быть основан на x-координате совместно используемой результирующей точки эллиптической кривой по методу Диффи-Хеллмана на основе маскирующего коэффициента клиента и открытого ключа аутентификации сервера (Z_1 = [d_bc] . Q_s_{n}).

[0196] На этапе 905 клиентский компьютер может определить идентификатор клиента («sID_c») для данного сеанса на основе x-координаты эллиптической кривой замаскированного открытого ключа клиента (sID_c=x-coord ( Q_bc )). Идентификатор клиента («sID_c») может представлять собой усеченное значение x-координаты открытого ключа шифрования клиента.

[0197] На этапе 906 клиентский компьютер может определить первый ключ сеанса («sk_1_c») с использованием функции формирования ключа («KDF») на основе первого промежуточного совместно используемого секрета («Z_1»), идентификатора сервера («ID_s») и идентификатора клиента («sID_c») (sk_1_c=KDF (Z_1 , ID_s, sID_c)).

[0198] На этапе 907 клиентский компьютер может определить подпись клиента («sig_c») путем подписывания сохраненного начального значения, закрытых данных клиента («SD_c»), замаскированного открытого ключа клиента («Q_bc») и n-ой версии открытого ключа аутентификации серверного компьютера («Q_s_{n}») с использованием алгоритма цифровой подписи (например, ECDSA) закрытым ключом аутентификации клиента («d_c») (sig_c=sign(d_c, seed | SD_c | Q_bc | Q_s_{n})).

[0199] На этапе 908 клиентский компьютер может генерировать зашифрованные данные клиента («enc_c») с использованием первого ключа сеанса («sk_1_c»). Шифрование может быть выполнено с использованием аутентифицированного шифрования связанными данными (AEAD) (enc _c=AEAD (sk_1_c , seed | SD_c | C_c | sig_c | PAD_c, Q_bc). Данные, зашифрованные клиентским компьютером, могут содержать начальное значение, закрытые данные клиента («SD_c»), подпись клиента («sig_c») и заполняющие данные шифрования клиента («PAD_c»). Заполняющие данные шифрования клиента («PAD_c») могут добавить подходящую длину зашифрованным данным на основе используемого алгоритма шифрования. Шифрование может также быть основано на связанных данных, которые остаются в исходном виде (например, они не зашифрованы), но проверяются на сохранность. Связанные данные могут содержать замаскированный открытый ключ клиента («Q_bc»).

[0200] На этапе 909 клиентский компьютер может обнулить первый промежуточный совместно используемый секрет («Z_1») и первый ключ сеанса («sk_1_c»).

[0201] На этапе 910 клиентский компьютер может передавать сообщение с запросом, содержащее замаскированный открытый ключ клиента («Q_bc») и зашифрованные данные клиента («enc_c»), на серверный компьютер. Таким образом, сообщение с запросом является «неотслеживаемым», поскольку ни замаскированный открытый ключ клиента («Q_bc»), ни зашифрованные данные клиента («enc_c») не могут быть использованы для идентификации или отслеживания клиентского компьютера. Например, открытый ключ аутентификации клиента («Q_c»), который может быть использован для идентификации клиентского компьютера (поскольку его цепочка сертификатов может использоваться для аутентификации клиентского компьютера), отправляется не открыто, а вместо этого в зашифрованном виде. Только замаскированный открытый ключ клиента («Q_bc»), который основан на случайным образом сгенерированном маскирующем коэффициенте клиента («d_bc»), отправляется открыто.

[0202] На этапе 911 серверный компьютер может подтверждать, что замаскированный открытый ключ клиента («Q_bc») принадлежит области эллиптической кривой.

[0203] На этапе 912 серверный компьютер может определить такой же первый промежуточный совместно используемый секрет («Z_1»), который был определен клиентским компьютером. Серверный компьютер может определить первый промежуточный совместно используемый секрет («Z_1») с использованием n-ой версии закрытого ключа аутентификации сервера («d_s_{n}») и замаскированного открытого ключа клиента («Q_bc») (Z_1 = [d_s_{n}] . Q_bc).

[0204] На этапе 913 серверный компьютер может определить идентификатор клиента («sID_c») на основе x-координаты эллиптической кривой замаскированного открытого ключа клиента (sID_c=x-coord ( Q_bc )). Идентификатор клиента («sID_c») может представлять собой усеченное значение x-координаты открытого ключа шифрования клиента.

[0205] На этапе 914 серверный компьютер может определить первый ключ сеанса («sk_1_s») с использованием функции формирования ключа («KDF») на основе первого промежуточного совместно используемого секрета («Z_1»), идентификатора сервера («ID_s») и идентификатора клиента («sID_c») (sk_1_c=KDF (Z_1 , ID_s, sID_c )).

[0206] На этапе 915 серверный компьютер может расшифровывать зашифрованные данные клиента («enc_c») с использованием первого ключа сеанса («sk_1_c») и алгоритма расшифровки (AEAD-1) для определения начального значения, закрытых данных клиента («SD_c»), подписи клиента («sig_c») и заполняющих данных шифрования клиента («PAD_c») (seed | SD_c | C_c | sig_c| PAD_c=AEAD-1 ( sk_1_c , enc_c, Q_bc)).

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

[0208] На этапе 917 серверный компьютер может обнулить первый ключ сеанса («sk_1_c») и первый промежуточный совместно используемый секрет («Z_1»).

[0209] На этапе 918 серверный компьютер может определить открытый ключ аутентификации клиента («Q_c») путем извлечения его из сертификата клиента («C_c») (Q_c=PubK(C_c)).

[0210] На этапе 919 серверный компьютер может подтверждать подлинность подписи сертификата клиента («C_c») и проверять принадлежность открытого ключа аутентификации клиента («Q_c») области эллиптической кривой.

[0211] На этапе 920 серверный компьютер может подтверждать подлинность подписи клиента («sig_c») с помощью открытого ключа аутентификации клиента («Q_c») с использованием алгоритма цифровой подписи (например, ECDSA), и начального значения, закрытых данных клиента («SD_c»), замаскированного открытого ключа клиента («Q_bc»), а также n-ой версии открытого ключа аутентификации серверного компьютера («Q_s_{n}») (verify(Q_c, sig_c, seed | SD_c |Q_bc | Q_s_{n})). Подпись клиента («sig_c») обеспечивает невозможность отказа клиентского компьютера, поскольку ее подлинность может быть проверена с использованием открытого ключа аутентификации клиента («Q_c») с обеспечением при этом компьютеру доступа к закрытому ключу аутентификации клиента («d_c») (например, клиентскому компьютеру и при сохранении безопасности только клиентскому компьютеру). Дополнительно подпись клиента («sig_c») генерируется путем подписывания закрытых данных клиента («SD_c»), замаскированного открытого ключа клиента («Q_bc») и n-ой версии открытого ключа аутентификации серверного компьютера («Q_s_{n}»). Следовательно, подпись клиента («sig_c») не только обеспечивает невозможность отказа клиентского компьютера, но и ограничивает данную подпись в отношении данного конкретного сеанса с данным серверным компьютером. Соответственно, другой компьютер не может выдавать себя за принимающую сторону данного сообщения.

[0212] На этапе 921 серверный компьютер может генерировать маскирующий коэффициент сервера («d_bs») с использованием генератора псевдослучайных чисел (d_bs=PRNG () # [0..q-1]).

[0213] На этапе 922 серверный компьютер может определить второй промежуточный совместно используемый секрет («Z») с использованием маскирующего коэффициента сервера («d_bs»), следующей версии закрытого ключа аутентификации сервера («d_s_{n+1}») и замаскированного открытого ключа клиента («Q_bc») (Z = [d_bs . d_s_{n+1}] Q_bc).

[0214] На этапе 923 серверный компьютер может определить замаскированный открытый ключ сервера («Q_bs») с использованием маскирующего коэффициента сервера («d_bs») и следующей версии (n+1) открытого ключа аутентификации серверного компьютера («Q_s_{n+1}») (Q_bs = [d_bs] . Q_s_{n+1}).

[0215] На этапе 924 серверный компьютер может определить идентификатор сервера для данного сеанса обмена данными («sID_s») с использованием замаскированного открытого ключа сервера («Q_bs»). Идентификатор сервера («sID_s») может быть основан на x-координате эллиптической кривой замаскированного открытого ключа сервера («Q_bs») (sID_s=x-coord (Q_bs)).

[0216] На этапе 925 серверный компьютер может определить второй ключ сеанса («sk_s | sk_c») с использованием функции формирования ключа на основе второго промежуточного совместно используемого секрета («Z»), идентификатора сервера («sID_s») для данного сеанса обмена данными и идентификатора клиента («sID_c») для данного сеанса (sk_s | sk_c=KDF ( Z, sID_s, sID_c)). Вторые ключи сеанса («sk_s | sk_c») могут быть использованы для шифрования будущих сообщений, отправляемых между клиентом и сервером для использования разных ключей шифрования в каждом направлении (например, от клиента к серверу и от сервера к клиенту).

[0217] На этапе 926 серверный компьютер может генерировать зашифрованные данные сервера («enc_s») с использованием второго ключа сеанса («sk_s»). Шифрование может быть выполнено с использованием аутентифицированного шифрования связанными данными (AEAD) (enc_s=AEAD ( sk_s , d_bs | C_s_{n+1} | SD_s | PAD_s, Q_bs)). Данные, зашифрованные серверным компьютером, могут содержать маскирующий коэффициент сервера («d_bs»), следующую версию (n+1) сертификата сервера («C_s_{n+1}»), которая связана со следующей версией (n+1) открытого ключа аутентификации серверного компьютера («Q_s_{n+1}»), закрытые данные сервера («SD_s») (например, полезные данные сервера в ответ на запрос клиента) и заполняющие данные шифрования сервера («PAD_s»). Заполняющие данные шифрования сервера («PAD_s») могут добавить подходящую длину зашифрованным данным на основе используемого алгоритма шифрования. Шифрование может также быть основано на связанных данных, которые остаются в исходном виде (например, они не зашифрованы), но проверяются на сохранность. Связанные данные могут содержать заблокированный открытый ключ сервера («Q_bs»).

[0218] На этапе 927 серверный компьютер может обнулить второй ключ сеанса («sk_s»), второй промежуточный совместно используемый секрет («Z») и маскирующий коэффициент сервера («d_bs»). С помощью обнуления первого ключа сеанса («sk_1_c») и первого промежуточного совместно используемого секрета («Z_1») на этапе 917 и затем обнуления второго ключа сеанса («sk_s»), второго промежуточного совместно используемого секрета («Z») и маскирующего коэффициента сервера («d_bs») на этапе 928 серверный компьютер сохраняет идеальную прямую секретность. Идеальная прямая секретность сохраняется, поскольку любые данные, которые могут потенциально использоваться для взлома шифрования сообщения с ответом (например, sk_s, Z, d_bs, sk_1_c, и Z_1), удалены. Например, данные, остающиеся на серверном компьютере, такие как статический закрытый ключ аутентификации сервера (d_s) и статический открытый ключ аутентификации сервера (Q_s), не были использованы при шифровании зашифрованных данных сервера (enc_s).

[0219] На этапе 928 серверный компьютер может передавать сообщение с ответом, содержащее замаскированный открытый ключ сервера («Q_bs») и зашифрованные данные сервера («enc_s»), на клиентский компьютер. Таким образом, сообщение с ответом является «неотслеживаемым», поскольку ни замаскированный открытый ключ сервера («Q_bs»), ни зашифрованные данные сервера («enc_s») не могут быть использованы для идентификации или отслеживания серверного компьютера. Например, статический открытый ключ аутентификации сервера («Q_s»), который может быть использован для идентификации серверного компьютера (поскольку его цепочка сертификатов может использоваться для аутентификации серверного компьютера), отправляется не открыто, а вместо этого в зашифрованном виде. Только замаскированный открытый ключ сервера («Q_bs»), который основан на случайным образом сгенерированном маскирующем коэффициенте сервера («d_bs»), отправляется открыто.

[0220] На этапе 929 клиентский компьютер может подтверждать, что замаскированный открытый ключ сервера («Q_bs») принадлежит области эллиптической кривой.

[0221] На этапе 930 клиентский компьютер может определить второй промежуточный совместно используемый секрет («Z») с использованием маскирующего коэффициента клиента («d_bc») и замаскированного открытого ключа сервера («Q_bs») (Z = [d_bc] . Q_bs).

[0222] На этапе 931 клиентский компьютер может определить идентификатор сервера для данного сеанса обмена данными («sID_s») с использованием замаскированного открытого ключа сервера («Q_bs»). Идентификатор сервера («sID_s») может быть основан на x-координате эллиптической кривой замаскированного открытого ключа сервера («Q_bs») (sID_s=x-coord (Q_bs)).

[0223] На этапе 932 клиентский компьютер может определить второй ключ сеанса («sk_s | sk_c») с использованием функции формирования ключа на основе второго промежуточного совместно используемого секрета («Z»), идентификатора сервера («sID_s») для данного сеанса обмена данными и идентификатора клиента («sID_c») для данного сеанса (sk_s | sk_c=KDF (Z, sID_s, sID_c)).

[0224] На этапе 933 клиентский компьютер может обнулить второй промежуточный совместно используемый секрет («Z») и маскирующий коэффициент клиента («d_bc»).

[0225] На этапе 934 клиентский компьютер может расшифровывать зашифрованные данные сервера («enc_s») с использованием первого ключа сеанса («sk_s») и алгоритма расшифровки (AEAD-1) для определения маскирующего коэффициента сервера («d_bs»), следующей версии сертификата сервера («C_s_{n+1}»), закрытых данных сервера («SD_s») и заполняющих данных шифрования сервера («PAD_s»). Замаскированный открытый ключ сервера («Q_bs») может быть использован как дополнительные данные в алгоритме расшифровки.

[0226] На этапе 935 клиентский компьютер может определить следующую версию открытого ключа сервера («Q_s_{n+1}») путем извлечения его из следующей версии сертификата сервера («C_s_{n+1}») (Q_s_{n+1} = PubK(C_s_{n+1}).

[0227] На этапе 936 клиентский компьютер может подтверждать подлинность подписи сертификата сервера («C_s_{n+1}») и может проверять принадлежность открытого ключа сервера («Q_s_{n+1}») области эллиптической кривой.

[0228] На этапе 937 клиентский компьютер может подтверждать подлинность замаскированного открытого ключа сервера («Q_bs»), принятого в сообщении с ответом, путем определения замаскированного открытого ключа сервера («Q_bs») с использованием маскирующего коэффициента сервера («d_bs») и открытого ключа сервера («Q_s_{n+1}»). Подтверждение подлинности замаскированного открытого ключа сервера («Q_bs») само по себе может не обеспечивать невозможность отказа. Невозможность отказа может быть обеспечена с использованием подписей, как обсуждено выше.

[0229] На этапе 938 клиентский компьютер может обнулить маскирующий коэффициент сервера («d_bs»).

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

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

[0231] Фиг. 10 представляет собой таблицу 1000 этапов выполнения реализуемого с помощью компьютера способа установки безопасного и неотслеживаемого обмена данными с идеальной прямой секретностью между клиентским компьютером и серверным компьютером, так что клиентский компьютер и серверный компьютер не могут отказываться от своих сообщений, в соответствии с некоторыми вариантами осуществления. Клиентский компьютер может представлять собой, например, интерфейсное устройство (IFD). Серверный компьютер может представлять собой, например, чип с интегральными микросхемами (ICC) или мобильное устройство. Некоторые из всех этапов в таблице 1000 могут быть выполнены в потоках сообщений, описанных в настоящем документе, например, таких как поток сообщений по фиг. 5. Дополнительно этапы в таблице 1000 могут быть выполнены в другом порядке.

[0232] На этапе 1001 клиентский компьютер может сохранить n-ую версию открытого ключа аутентификации серверного компьютера («Q_s_{n}»). Клиентский компьютер мог ранее принять данную конкретную версию открытого ключа серверного компьютера от серверного компьютера. Клиентский компьютер может также сохранить n-ую версию сертификата серверного компьютера («C_s_{n}») для аутентификации цепочки сертификатов серверного компьютера. Клиентский компьютер может также сохранить закрытые данные клиента («SD_c»). Закрытые данные клиента могут быть частью полезных данных, отправляемых в сообщении с запросом на серверный компьютер. Клиентский компьютер может также сохранить идентификатор сервера («ID_s»), идентифицирующий серверный компьютер. Клиентский компьютер может также сохранить сертификат клиента («C_c») для аутентификации цепочки сертификатов клиентского компьютера. Клиентский компьютер может также сохранить закрытый ключ аутентификации клиента («d_c»), который совпадает с соответствующим открытым ключом аутентификации клиента («Q_c»), образуя пару ключей на основе эллиптической кривой. Открытый ключ аутентификации клиента («Q_c») может быть определен с использованием алгоритма с открытым ключом («P») на основе закрытого ключа аутентификации клиента (Q_c = [d_c] P). Клиентский компьютер может также сохранить начальное значение («seed»). Начальное значение может быть значением доверенного времени или значением счетчика, которое может быть включено в сообщение для указания новизны или своевременности данного сообщения.

[0233] Серверный компьютер может сохранить n-ую версию открытого ключа аутентификации сервера («Q_s_{n}») и соответствующего закрытого ключа аутентификации сервера («d_s_{n}»), которые образуют пару ключей на основе эллиптической кривой. Серверный компьютер может определить открытый ключ аутентификации сервера с использованием алгоритма с открытым ключом («P») на основе закрытого ключа аутентификации сервера (Q_s_{n} = [d_s_{n}] P). Серверный компьютер может также сохранить n-ую версию сертификата сервера («C_s_{n}») для аутентификации цепочки сертификатов серверного компьютера. Серверный компьютер может также сохранить закрытые данные сервера («SD_s»), которые могут быть включены в зашифрованные полезные данные для клиентского компьютера. Серверный компьютер может также сохранить следующие версии открытого ключа аутентификации сервера («Q_s_{n+1}»), закрытый ключ аутентификации сервера («d_s_{n+1}») и соответствующий сертификат («C_s_{n+1}»).

[0234] На этапе 1002 клиентский компьютер может генерировать маскирующий коэффициент клиента («d_bc») с использованием генератора псевдослучайных чисел («PRNG () # [0..q-1]»).

[0235] На этапе 1003 клиентский компьютер может определить замаскированный открытый ключ клиента («Q_bc») с использованием алгоритма с открытым ключом («P») и маскирующего коэффициента клиента («Q_bc = [d_bc] . P»).

[0236] На этапе 1004 клиентский компьютер может определить первый промежуточный совместно используемый секрет («Z_1»). Первый промежуточный совместно используемый секрет может быть основан на x-координате совместно используемой результирующей точки эллиптической кривой по методу Диффи-Хеллмана на основе маскирующего коэффициента клиента и открытого ключа аутентификации сервера (Z_1 = [d_bc] . Q_s_{n}).

[0237] На этапе 1005 клиентский компьютер может определить идентификатор клиента («sID_c») для данного сеанса на основе x-координаты эллиптической кривой замаскированного открытого ключа клиента (sID_c=x-coord ( Q_bc )). Идентификатор клиента («sID_c») может представлять собой усеченное значение x-координаты открытого ключа шифрования клиента.

[0238] На этапе 1006 клиентский компьютер может определить первый ключ сеанса («sk_1_c») с использованием функции формирования ключа («KDF») на основе первого промежуточного совместно используемого секрета («Z_1»), идентификатора сервера («ID_s») и идентификатора клиента («sID_c») (sk_1_c=KDF (Z_1 , ID_s, sID_c)).

[0239] На этапе 1007 клиентский компьютер может определить подпись клиента («sig_c») путем подписывания сохраненного начального значения, закрытых данных клиента («SD_c»), замаскированного открытого ключа клиента («Q_bc») и n-ой версии открытого ключа аутентификации серверного компьютера («Q_s_{n}») с использованием алгоритма цифровой подписи (например, ECDSA) и посредством закрытого ключа аутентификации клиента («d_c») (sig_c=sign(d_c, seed | SD_c | Q_bc | Q_s_{n})).

[0240] На этапе 1008 клиентский компьютер может генерировать зашифрованные данные клиента («enc_c») с использованием первого ключа сеанса («sk_1_c»). Шифрование может быть выполнено с использованием аутентифицированного шифрования связанными данными (AEAD) (enc_c=AEAD (sk_1_c , seed | SD_c | C_c | sig_c | PAD_c, Q_bc)). Данные, зашифрованные клиентским компьютером, могут содержать начальное значение, закрытые данные клиента («SD_c»), подпись клиента («sig_c») и заполняющие данные шифрования клиента («PAD_c»). Заполняющие данные шифрования клиента («PAD_c») могут добавить подходящую длину зашифрованным данным на основе используемого алгоритма шифрования. Шифрование может также быть основано на связанных данных, которые остаются в исходном виде (например, они не зашифрованы), но проверяются на сохранность. Связанные данные могут содержать замаскированный открытый ключ клиента («Q_bc»).

[0241] На этапе 1009 клиентский компьютер может обнулить первый промежуточный совместно используемый секрет («Z_1») и первый ключ сеанса («sk_1_c»).

[0242] На этапе 1010 клиентский компьютер может передавать сообщение с запросом, содержащее замаскированный открытый ключ клиента («Q_bc») и зашифрованные данные клиента («enc_c»), на серверный компьютер. Таким образом, сообщение с запросом является «неотслеживаемым», поскольку ни замаскированный открытый ключ клиента («Q_bc»), ни зашифрованные данные клиента («enc_c») не могут быть использованы для идентификации или отслеживания клиентского компьютера. Например, открытый ключ аутентификации клиента («Q_c»), который может быть использован для идентификации клиентского компьютера (поскольку его цепочка сертификатов может использоваться для его аутентификации), отправляется не открыто, а вместо этого в зашифрованном виде. Только замаскированный открытый ключ клиента («Q_bc»), который основан на случайным образом сгенерированном маскирующем коэффициенте клиента («d_c»), отправляется открыто.

[0243] На этапе 1011 серверный компьютер может подтверждать, что замаскированный открытый ключ клиента («Q_bc») принадлежит области эллиптической кривой.

[0244] На этапе 1012 серверный компьютер может определить такой же первый промежуточный совместно используемый секрет («Z_1»), который был определен клиентским компьютером. Серверный компьютер может определить первый промежуточный совместно используемый секрет («Z_1») с использованием n-ой версии закрытого ключа аутентификации сервера («d_s_{n}») и замаскированного открытого ключа клиента («Q_bc») (Z_1 = [d_s_{n}] . Q_bc).

[0245] На этапе 1013 серверный компьютер может определить идентификатор клиента («sID_c») на основе x-координаты эллиптической кривой замаскированного открытого ключа клиента (sID_c=x-coord ( Q_bc )). Идентификатор клиента («sID_c») может представлять собой усеченное значение x-координаты открытого ключа шифрования клиента.

[0246] На этапе 1014 серверный компьютер может определить первый ключ сеанса («sk_1_s») с использованием функции формирования ключа («KDF») на основе первого промежуточного совместно используемого секрета («Z_1»), идентификатора сервера («ID_s») и идентификатора клиента («sID_c») (sk_1_c=KDF (Z_1 , ID_s, sID_c )).

[0247] На этапе 1015 серверный компьютер может расшифровывать зашифрованные данные клиента («enc_c») с использованием первого ключа сеанса («sk_1_c») и алгоритма расшифровки (AEAD-1) для определения начального значения, закрытых данных клиента («SD_c»), подписи клиента («sig_c») и заполняющих данных шифрования клиента («PAD_c») (seed | SD_c | C_c | sig_c| PAD_c=AEAD-1 (sk_1_c , enc_c, Q_bc)).

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

[0249] На этапе 1017 серверный компьютер может обнулить первый ключ сеанса («sk_1_c») и первый промежуточный совместно используемый секрет («Z_1»).

[0250] На этапе 1018 серверный компьютер может определить открытый ключ аутентификации клиента («Q_c») путем извлечения его из сертификата клиента («C_c») (Q_c=PubK(C_c)).

[0251] На этапе 1019 серверный компьютер может подтверждать подлинность подписи сертификата клиента («C_c») и проверять принадлежность открытого ключа аутентификации клиента («Q_c») области эллиптической кривой.

[0252] На этапе 1020 серверный компьютер может подтверждать подлинность подписи клиента («sig_c») с помощью открытого ключа аутентификации клиента («Q_c») с использованием алгоритма цифровой подписи (например, ECDSA), и начального значения, закрытых данных клиента («SD_c»), замаскированного открытого ключа клиента («Q_bc»), а также n-ой версии открытого ключа аутентификации серверного компьютера («Q_s_{n}») (verify(Q_c, sig_c, seed | SD_c |Q_bc | Q_s_{n})). Подпись клиента («sig_c») обеспечивает невозможность отказа клиентского компьютера, поскольку ее подлинность может быть проверена с использованием открытого ключа аутентификации клиента («Q_c») с обеспечением при этом компьютеру доступа к закрытому ключу аутентификации клиента («d_c») (например, клиентскому компьютеру и при сохранении безопасности только клиентскому компьютеру). Дополнительно подпись клиента («sig_c») генерируется путем подписывания закрытых данных клиента («SD_c»), замаскированного открытого ключа клиента («Q_bc») и n-ой версии открытого ключа аутентификации серверного компьютера («Q_s_{n}»). Следовательно, подпись клиента («sig_c») не только обеспечивает невозможность отказа клиентского компьютера, но и ограничивает данную подпись в отношении данного конкретного сеанса с данным серверным компьютером. Соответственно, другой компьютер не может выдавать себя за принимающую сторону данного сообщения.

[0253] На этапе 1021 серверный компьютер может генерировать маскирующий коэффициент сервера («d_bs») с использованием генератора псевдослучайных чисел (d_bs=PRNG () # [0..q-1]).

[0254] На этапе 1022 серверный компьютер может определить второй промежуточный совместно используемый секрет («Z») с использованием маскирующего коэффициента сервера («d_bs»), следующей версии закрытого ключа аутентификации сервера («d_s_{n+1}») и замаскированного открытого ключа клиента («Q_bc») (Z = [d_bs . d_s_{n+1}] Q_bc).

[0255] На этапе 1023 серверный компьютер может определить замаскированный открытый ключ сервера («Q_bs») с использованием маскирующего коэффициента сервера («d_bs») и следующей версии (n+1) открытого ключа аутентификации серверного компьютера («Q_s_{n+1}») (Q_bs = [d_bs] . Q_s_{n+1}).

[0256] На этапе 1024 серверный компьютер может определить идентификатор сервера для данного сеанса обмена данными («sID_s») с использованием замаскированного открытого ключа сервера («Q_bs»). Идентификатор сервера («sID_s») может быть основан на x-координате эллиптической кривой замаскированного открытого ключа сервера («Q_bs») (sID_s=x-coord (Q_bs)).

[0257] На этапе 1025 серверный компьютер может определить второй ключ сеанса («sk_s | sk_c») с использованием функции формирования ключа на основе второго промежуточного совместно используемого секрета («Z»), идентификатора сервера («sID_s») для данного сеанса обмена данными и идентификатора клиента («sID_c») для данного сеанса (sk_s | sk_c=KDF ( Z, sID_s, sID_c)).

[0258] На этапе 1026 серверный компьютер может определить подпись сервера («sig_s») путем подписывания следующей версии (n+1) сертификата серверного компьютера («C_s_{n+1}»), закрытых данных сервера («SD_s») (например, полезных данных), замаскированного открытого ключа сервера («Q_bs») и открытого ключа аутентификации клиента («Q_c») с использованием алгоритма цифровой подписи (например, ECDSA) посредством закрытого ключа аутентификации сервера («d_s») (sig_s=sign (d_s, C_s_{n+1} | SD_s | Q_bs | Q_c)).

[0259] На этапе 1027 серверный компьютер может генерировать зашифрованные данные сервера («enc_s») с использованием второго ключа сеанса («sk_s»). Шифрование может быть выполнено с использованием аутентифицированного шифрования связанными данными (AEAD) (enc_s=AEAD (sk_s , d_bs | C_s_{n+1} | SD_s | PAD_s, Q_bs)). Данные, зашифрованные серверным компьютером, могут содержать следующую версию (n+1) сертификата сервера («C_s_{n+1}»), которая связана со следующей версией (n+1) открытого ключа аутентификации серверного компьютера («Q_s_{n+1}»), закрытые данные сервера («SD_s») (например, полезные данные сервера в ответ на запрос клиента), подпись сервера («sig_s») и заполняющие данные шифрования сервера («PAD_s»). Заполняющие данные шифрования сервера («PAD_s») могут добавить подходящую длину зашифрованным данным на основе используемого алгоритма шифрования. Шифрование может также быть основано на связанных данных, которые остаются в исходном виде (например, они не зашифрованы), но проверяются на сохранность. Связанные данные могут содержать заблокированный открытый ключ сервера («Q_bs»).

[0260] На этапе 1028 серверный компьютер может обнулить второй ключ сеанса («sk_s»), второй промежуточный совместно используемый секрет («Z») и маскирующий коэффициент сервера («d_bs»). С помощью обнуления первого ключа сеанса («sk_1_c») и первого промежуточного совместно используемого секрета («Z_1») на этапе 1017 и затем обнуления второго ключа сеанса («sk_s»), второго промежуточного совместно используемого секрета («Z») и маскирующего коэффициента сервера («d_bs») на этапе 1028 серверный компьютер сохраняет идеальную прямую секретность. Идеальная прямая секретность сохраняется, поскольку любые данные, которые могут потенциально использоваться для взлома шифрования сообщения с ответом (например, sk_s, Z, d_bs, sk_1_c, и Z_1), удалены. Например, данные, остающиеся на серверном компьютере, такие как статический закрытый ключ аутентификации сервера (d_s) и статический открытый ключ аутентификации сервера (Q_s), не были использованы при шифровании зашифрованных данных сервера (enc_s).

[0261] На этапе 1029 серверный компьютер может передавать сообщение с ответом, содержащее замаскированный открытый ключ сервера («Q_bs») и зашифрованные данные сервера («enc_s»), на клиентский компьютер. Таким образом, сообщение с ответом является «неотслеживаемым», поскольку ни замаскированный открытый ключ сервера («Q_bs»), ни зашифрованные данные сервера («enc_s») не могут быть использованы для идентификации или отслеживания серверного компьютера. Например, статический открытый ключ аутентификации сервера («Q_s»), который может быть использован для идентификации серверного компьютера (поскольку его цепочка сертификатов может использоваться для аутентификации серверного компьютера), отправляется не открыто, а вместо этого в зашифрованном виде. Только замаскированный открытый ключ сервера («Q_bs»), который основан на случайным образом сгенерированном маскирующем коэффициенте сервера («d_bs»), отправляется открыто.

[0262] На этапе 1030 клиентский компьютер может подтверждать, что замаскированный открытый ключ сервера («Q_bs») принадлежит области эллиптической кривой.

[0263] На этапе 1031 клиентский компьютер может определить второй промежуточный совместно используемый секрет («Z») с использованием маскирующего коэффициента клиента («d_bc») и замаскированного открытого ключа сервера («Q_bs») (Z = [d_bc] . Q_bs).

[0264] На этапе 1032 клиентский компьютер может определить идентификатор сервера для данного сеанса обмена данными («sID_s») с использованием замаскированного открытого ключа сервера («Q_bs»). Идентификатор сервера («sID_s») может быть основан на x-координате эллиптической кривой замаскированного открытого ключа сервера («Q_bs») (sID_s=x-coord (Q_bs)).

[0265] На этапе 1033 клиентский компьютер может определить второй ключ сеанса («sk_s | sk_c») с использованием функции формирования ключа на основе второго промежуточного совместно используемого секрета («Z»), идентификатора сервера («sID_s») для данного сеанса обмена данными и идентификатора клиента («sID_c») для данного сеанса (sk_s | sk_c=KDF ( Z, sID_s, sID_c)).

[0266] На этапе 1034 клиентский компьютер может обнулить второй промежуточный совместно используемый секрет («Z») и маскирующий коэффициент клиента («d_bc»).

[0267] На этапе 1035 клиентский компьютер может расшифровывать зашифрованные данные сервера («enc_s») с использованием первого ключа сеанса («sk_s») и алгоритма расшифровки (AEAD-1) для определения следующей версии сертификата сервера («C_s_{n+1}»), закрытых данных сервера («SD_s»), подписи сервера («sig_s») и заполняющих данных шифрования сервера («PAD_s»). Замаскированный открытый ключ сервера («Q_bs») может быть использован как дополнительные данные в алгоритме расшифровки.

[0268] На этапе 1036 клиентский компьютер может определить следующую версию открытого ключа сервера («Q_s_{n+1}») путем извлечения его из следующей версии сертификата сервера («C_s_{n+1}») (Q_s_{n+1} = PubK(C_s_{n+1}).

[0269] На этапе 1037 клиентский компьютер может подтверждать подлинность подписи сертификата сервера («C_s_{n+1}») и может проверять принадлежность открытого ключа сервера («Q_s_{n+1}») области эллиптической кривой.

[0270] На этапе 1038 клиентский компьютер может подтверждать подлинность подписи сервера («sig_s») с помощью открытого ключа аутентификации сервера («Q_s») с использованием алгоритма цифровой подписи (например, ECDSA), и следующей версии сертификата сервера («C_s_{n+1}»), закрытых данных сервера («SD_s»), замаскированного открытого ключа сервера («Q_bs»), а также открытого ключа клиента («Q_c») (verify(Q_s, sig_s, C_s_{n+1} | SD_s | Q_bs | Q_c)). Подпись сервера («sig_s») обеспечивает невозможность отказа серверного компьютера, поскольку ее подлинность может быть проверена с использованием открытого ключа аутентификации сервера («Q_s») с обеспечением при этом компьютеру доступа к закрытому ключу аутентификации сервера («d_s») (например, серверному компьютеру и при сохранении безопасности только серверному компьютеру). Дополнительно подпись сервера («sig_s») генерируется путем подписывания закрытых данных сервера («SD_s»), замаскированного открытого ключа сервера («Q_bs») и открытого ключа аутентификации клиента («Q_c»). Следовательно, подпись сервера («sig_s») не только обеспечивает невозможность отказа серверного компьютера, но и ограничивает данную подпись в отношении данного конкретного сеанса с данным клиентским компьютером. Соответственно, другой компьютер не может выдавать себя за принимающую сторону данного сообщения.

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

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

[0272] Фиг. 11 представляет собой таблицу 1100 этапов выполнения реализуемого с помощью компьютера способа установки безопасного и неотслеживаемого обмена данными с использованием зашифрованной части подписи и незашифрованной части подписи в соответствии с некоторыми вариантами осуществления. Клиентский компьютер может представлять собой, например, интерфейсное устройство (IFD). Серверный компьютер может представлять собой, например, чип с интегральными микросхемами (ICC) или мобильное устройство. Некоторые из всех этапов в таблице 1100 могут быть выполнены в потоках сообщений, описанных в настоящем документе, например, таких как поток сообщений по фиг. 6. Дополнительно этапы в таблице 1100 могут быть выполнены в другом порядке.

[0273] На этапе 1101 клиентский компьютер может сохранить n-ую версию открытого ключа аутентификации серверного компьютера («Q_s_{n}»). Клиентский компьютер мог ранее принять данную конкретную версию открытого ключа серверного компьютера от серверного компьютера. Клиентский компьютер может также сохранить n-ую версию сертификата серверного компьютера («C_s_{n}») для аутентификации цепочки сертификатов серверного компьютера. Клиентский компьютер может также сохранить закрытые данные клиента («SD_c»). Закрытые данные клиента могут быть частью полезных данных, отправляемых в сообщении с запросом на серверный компьютер. Клиентский компьютер может также сохранить идентификатор сервера («ID_s»), идентифицирующий серверный компьютер. Клиентский компьютер может также сохранить сертификат клиента («C_c») для аутентификации цепочки сертификатов клиентского компьютера. Клиентский компьютер может также сохранить закрытый ключ аутентификации клиента («d_c»), который совпадает с соответствующим открытым ключом аутентификации клиента («Q_c»), образуя пару ключей на основе эллиптической кривой. Открытый ключ аутентификации клиента («Q_c») может быть определен с использованием алгоритма с открытым ключом («P») на основе закрытого ключа аутентификации клиента (Q_c = [d_c] P). Клиентский компьютер может также сохранить начальное значение («seed»). Начальное значение может быть значением доверенного времени или значением счетчика, которое может быть включено в сообщение для указания новизны или своевременности данного сообщения.

[0274] Серверный компьютер может сохранить n-ую версию открытого ключа аутентификации сервера («Q_s_{n}») и соответствующего закрытого ключа аутентификации сервера («d_s_{n}»), которые образуют пару ключей на основе эллиптической кривой. Серверный компьютер может определить открытый ключ аутентификации сервера с использованием алгоритма с открытым ключом («P») на основе закрытого ключа аутентификации сервера (Q_s_{n} = [d_s_{n}] P). Серверный компьютер может также сохранить n-ую версию сертификата сервера («C_s_{n}») для аутентификации цепочки сертификатов серверного компьютера. Серверный компьютер может также сохранить закрытые данные сервера («SD_s»), которые могут быть включены в зашифрованные полезные данные для клиентского компьютера. Серверный компьютер может также сохранить следующие версии открытого ключа аутентификации сервера («Q_s_{n+1}»), закрытый ключ аутентификации сервера («d_s_{n+1}») и соответствующий сертификат («C_s_{n+1}»).

[0275] На этапе 1102 клиентский компьютер может генерировать маскирующий коэффициент клиента («d_bc») с использованием генератора псевдослучайных чисел («PRNG () # [0..q-1]»).

[0276] На этапе 1103 клиентский компьютер может определить замаскированный открытый ключ клиента («Q_bc») с использованием алгоритма с открытым ключом («P») и маскирующего коэффициента клиента («Q_bc = [d_bc] . P»).

[0277] На этапе 1104 клиентский компьютер может определить первый промежуточный совместно используемый секрет («Z_1»). Первый промежуточный совместно используемый секрет может быть основан на x-координате совместно используемой результирующей точки эллиптической кривой по методу Диффи-Хеллмана на основе маскирующего коэффициента клиента и открытого ключа аутентификации сервера ( Z_1 = [d_bc] . Q_s_{n}).

[0278] На этапе 1105 клиентский компьютер может определить идентификатор клиента («sID_c») для данного сеанса на основе x-координаты эллиптической кривой замаскированного открытого ключа клиента (sID_c=x-coord ( Q_bc )). Идентификатор клиента («sID_c») может представлять собой усеченное значение x-координаты открытого ключа шифрования клиента.

[0279] На этапе 1106 клиентский компьютер может определить первый ключ сеанса («sk_1_c») с использованием функции формирования ключа («KDF») на основе первого промежуточного совместно используемого секрета («Z_1»), идентификатора сервера («ID_s») и идентификатора клиента («sID_c») (sk_1_c=KDF (Z_1 , ID_s, sID_c)).

[0280] Клиентский компьютер может определить подпись клиента с использованием алгоритма анонимного подписывания, который включает алгоритм L-подписи («Sign_L()») и алгоритм R-подписи («Sign_R()»). На этапе 1107 клиентский компьютер может определить L-подпись («sigc_L») и случайное значение подписи клиента («rand_c») с использованием алгоритма L-подписи («Sign_L()»).

[0281] На этапе 1108 клиентский компьютер может генерировать зашифрованные данные клиента («enc_c») с использованием первого ключа сеанса («sk_1_c»). Шифрование может быть выполнено с использованием аутентифицированного шифрования связанными данными (AEAD) (enc _c=AEAD (sk_1_c , seed | SD_c | C_c | sigc_L | PAD_c, Q_bc)). Данные, зашифрованные клиентским компьютером, могут содержать начальное значение, закрытые данные клиента («SD_c»), сертификат клиента («C_c»), L-подпись клиента («sigc_L») и заполняющие данные шифрования клиента («PAD_c»). Заполняющие данные шифрования клиента («PAD_c») могут добавить подходящую длину зашифрованным данным на основе используемого алгоритма шифрования. Шифрование может также быть основано на связанных данных, которые остаются в исходном виде (например, они не зашифрованы), но проверяются на сохранность. Связанные данные могут содержать замаскированный открытый ключ клиента («Q_bc»).

[0282] На этапе 1109 клиентский компьютер может определить R-подпись клиента («sigc_R») с использованием алгоритма R-подписи («Sign_R()»), а также закрытого ключа аутентификации клиента («d_c»), случайного значения подписи клиента («rand_c») (на основе алгоритма L-подписи) и зашифрованных данных клиента («enc_c»). Таким образом, R-подпись клиента основана на зашифрованных данных клиента, тогда как L-подпись клиента включена в зашифрованные данные клиента.

[0283] На этапе 1110 клиентский компьютер может обнулить первый промежуточный совместно используемый секрет («Z_1») и первый ключ сеанса («sk_1_c»).

[0284] На этапе 1111 клиентский компьютер может передавать сообщение с запросом, содержащее замаскированный открытый ключ клиента («Q_bc»), R-подпись клиента («sigc_r») и зашифрованные данные клиента («enc_c»), на серверный компьютер. Таким образом, сообщение с запросом является «неотслеживаемым», поскольку ни замаскированный открытый ключ клиента («Q_bc»), ни R-подпись клиента, ни зашифрованные данные клиента («enc_c») не могут быть использованы для идентификации или отслеживания клиентского компьютера. Например, открытый ключ аутентификации клиента («Q_c») и L-подпись клиента («sigc_L»), которые могут быть использованы для идентификации клиентского компьютера, отправляются не открыто, а вместо этого в зашифрованном виде.

[0285] На этапе 1112 серверный компьютер может подтверждать, что замаскированный открытый ключ клиента («Q_bc») принадлежит области эллиптической кривой.

[0286] На этапе 1113 серверный компьютер может определить такой же первый промежуточный совместно используемый секрет («Z_1»), который был определен клиентским компьютером. Серверный компьютер может определить первый промежуточный совместно используемый секрет («Z_1») с использованием n-ой версии закрытого ключа аутентификации сервера («d_s_{n}») и замаскированного открытого ключа клиента («Q_bc») (Z_1 = [d_s_{n}] . Q_bc).

[0287] На этапе 1114 серверный компьютер может определить идентификатор клиента («sID_c») на основе x-координаты эллиптической кривой замаскированного открытого ключа клиента (sID_c=x-coord ( Q_bc )). Идентификатор клиента («sID_c») может представлять собой усеченное значение x-координаты открытого ключа шифрования клиента.

[0288] На этапе 1115 серверный компьютер может определить первый ключ сеанса («sk_1_c») с использованием функции формирования ключа («KDF») на основе первого промежуточного совместно используемого секрета («Z_1»), идентификатора сервера («ID_s») и идентификатора клиента («sID_c») (sk_1_c=KDF (Z_1 , ID_s, sID_c )).

[0289] На этапе 1116 серверный компьютер может расшифровывать зашифрованные данные клиента («enc_c») с использованием первого ключа сеанса («sk_1_c») и алгоритма расшифровки (AEAD-1) для определения начального значения, закрытых данных клиента («SD_c»), подписи клиента («sig_c») и заполняющих данных шифрования клиента («PAD_c») (seed | SD_c | C_c | sig_c| PAD_c=AEAD-1 ( sk_1_c , enc_c, Q_bc)).

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

[0291] На этапе 1118 серверный компьютер может обнулить первый ключ сеанса («sk_1_c») и первый промежуточный совместно используемый секрет («Z_1»).

[0292] На этапе 1119 серверный компьютер может определить открытый ключ аутентификации клиента («Q_c») путем извлечения его из сертификата клиента («C_c») (Q_c=PubK(C_c)).

[0293] На этапе 1120 серверный компьютер может подтверждать подлинность подписи сертификата клиента («C_c») и проверять принадлежность открытого ключа аутентификации клиента («Q_c») области эллиптической кривой.

[0294] На этапе 1121 серверный компьютер может подтверждать подлинность подписи клиента, которая содержит как L-подпись клиента («sigc_L»), так и R-подпись клиента («sigc_R»), посредством открытого ключа аутентификации клиента («Q_c») с использованием «закрытого» алгоритма цифровой подписи на основе зашифрованных данных клиента («enc_c»). «Закрытый» алгоритм цифровой подписи может быть закрытым в том смысле, что этот алгоритм содержит два разных алгоритма, где один алгоритм создает R-подпись на основе зашифрованных данных, которая не содержит идентифицирующую информацию, а другой алгоритм создает L-подпись, содержащую идентифицирующую информацию, которая может быть зашифрована. Подпись клиента («sigc_L» и «sigc_R» вместе) обеспечивает невозможность отказа клиентского компьютера, поскольку ее подлинность может быть проверена с использованием открытого ключа аутентификации клиента («Q_c») с обеспечением при этом компьютеру доступа к закрытому ключу аутентификации клиента («d_c») (например, клиентскому компьютеру и при сохранении безопасности только клиентскому компьютеру). Дополнительно R-подпись клиента генерируют путем подписывания самих зашифрованных данных клиента («enc_c»). Дополнительно R-подпись клиента не содержит идентифицирующую информацию. Следовательно, подпись клиента не только обеспечивает невозможность отказа клиентского компьютера, но и является «неотслеживаемой», одновременно с этим данная подпись ограничивается данным конкретным сеансом с данным серверным компьютером. Соответственно, другой компьютер не может выдавать себя за принимающую сторону данного сообщения.

[0295] На этапе 1122 серверный компьютер может генерировать маскирующий коэффициент сервера («d_bs») с использованием генератора псевдослучайных чисел (d_bs=PRNG () # [0..q-1]).

[0296] На этапе 1123 серверный компьютер может определить второй промежуточный совместно используемый секрет («Z») с использованием маскирующего коэффициента сервера («d_bs»), следующей версии закрытого ключа аутентификации сервера («d_s_{n+1}») и замаскированного открытого ключа клиента («Q_bc») (Z = [d_bs . d_s_{n+1}] Q_bc).

[0297] На этапе 1124 серверный компьютер может определить замаскированный открытый ключ сервера («Q_bs») с использованием маскирующего коэффициента сервера («d_bs») и следующей версии (n+1) открытого ключа аутентификации серверного компьютера («Q_s_{n+1}») (Q_bs = [d_bs] . Q_s_{n+1}).

[0298] На этапе 1125 серверный компьютер может определить идентификатор сервера для данного сеанса обмена данными («sID_s») с использованием замаскированного открытого ключа сервера («Q_bs»). Идентификатор сервера («sID_s») может быть основан на x-координате эллиптической кривой замаскированного открытого ключа сервера («Q_bs») (sID_s=x-coord (Q_bs)).

[0299] На этапе 1126 серверный компьютер может определить второй ключ сеанса («sk_s | sk_c») с использованием функции формирования ключа на основе второго промежуточного совместно используемого секрета («Z»), идентификатора сервера («sID_s») для данного сеанса обмена данными и идентификатора клиента («sID_c») для данного сеанса (sk_s | sk_c=KDF ( Z, sID_s, sID_c)).

[0300] Серверный компьютер может определить подпись сервера с использованием алгоритма анонимного подписывания, который содержит алгоритм L-подписи («Sign_L()») и алгоритм R-подписи («Sign_R()»). На этапе 1127 серверный компьютер может определить L-подпись («sigc_L») и случайное значение подписи сервера («rand_s») с использованием алгоритма L-подписи («Sign_L()»).

[0301] На этапе 1128 серверный компьютер может генерировать зашифрованные данные сервера («enc_s») с использованием второго ключа сеанса («sk_s»). Шифрование может быть выполнено с использованием аутентифицированного шифрования связанными данными (AEAD) (enc_s=AEAD ( sk_s, C_s_{n+1} | SD_s | sigs_L | PAD_s, Q_bs)). Данные, зашифрованные серверным компьютером, могут содержать сертификат сервера («C_s_{n+1}»), закрытые данные сервера («SD_s»), L-подпись сервера («sigs_L») и заполняющие данные шифрования сервера («PAD_s»). Заполняющие данные шифрования сервера («PAD_s») могут добавить подходящую длину зашифрованным данным на основе используемого алгоритма шифрования. Шифрование может также быть основано на связанных данных, которые остаются в исходном виде (например, они не зашифрованы), но проверяются на сохранность. Связанные данные могут содержать заблокированный открытый ключ сервера («Q_bs»).

[0302] На этапе 1129 серверный компьютер может определить R-подпись сервера («sigs_R») с использованием алгоритма R-подписи («Sign_R()»), а также закрытого ключа аутентификации сервера («d_s»), случайного значения подписи сервера («rand_s») (на основе алгоритма L-подписи) и зашифрованных данных сервера («enc_s»). Таким образом, R-подпись сервера основана на зашифрованных данных сервера, тогда как L-подпись сервера включена в зашифрованные данные сервера.

[0303] На этапе 1130 серверный компьютер может обнулить второй ключ сеанса («sk_s»), второй промежуточный совместно используемый секрет («Z») и маскирующий коэффициент сервера («d_bs»). С помощью обнуления первого ключа сеанса («sk_1_c») и первого промежуточного совместно используемого секрета («Z_1») на этапе 1017 и затем обнуления второго ключа сеанса («sk_s»), второго промежуточного совместно используемого секрета («Z») и маскирующего коэффициента сервера («d_bs») на этапе 1028 серверный компьютер сохраняет идеальную прямую секретность. Идеальная прямая секретность сохраняется, поскольку любые данные, которые могут потенциально использоваться для взлома шифрования сообщения с ответом (например, sk_s, Z, d_bs, sk_1_c, и Z_1), удалены. Например, данные, остающиеся на серверном компьютере, такие как статический закрытый ключ аутентификации сервера (d_s) и статический открытый ключ аутентификации сервера (Q_s), не были использованы при шифровании зашифрованных данных сервера (enc_s).

[0304] На этапе 1131 серверный компьютер может передавать сообщение с ответом, содержащее замаскированный открытый ключ сервера («Q_bs»), R-подпись сервера («sigc_R») и зашифрованные данные сервера («enc_s»), на клиентский компьютер. Таким образом, сообщение с ответом является «неотслеживаемым», поскольку ни замаскированный открытый ключ сервера («Q_bs»), ни R-подпись сервера («sigc_R»), ни зашифрованные данные сервера («enc_s») не могут быть использованы для идентификации или отслеживания серверного компьютера. Например, статический открытый ключ аутентификации сервера («Q_s»), который может быть использован для идентификации серверного компьютера, отправляется не открыто, а вместо этого в зашифрованном виде.

[0305] На этапе 1132 клиентский компьютер может подтверждать, что замаскированный открытый ключ сервера («Q_bs») принадлежит области эллиптической кривой.

[0306] На этапе 1133 клиентский компьютер может определить второй промежуточный совместно используемый секрет («Z») с использованием маскирующего коэффициента клиента («d_bc») и замаскированного открытого ключа сервера («Q_bs») (Z = [d_bc] . Q_bs).

[0307] На этапе 1134 клиентский компьютер может определить идентификатор сервера для данного сеанса обмена данными («sID_s») с использованием замаскированного открытого ключа сервера («Q_bs»). Идентификатор сервера («sID_s») может быть основан на x-координате эллиптической кривой замаскированного открытого ключа сервера («Q_bs») (sID_s=x-coord (Q_bs)).

[0308] На этапе 1135 клиентский компьютер может определить второй ключ сеанса («sk_s | sk_c») с использованием функции формирования ключа на основе второго промежуточного совместно используемого секрета («Z»), идентификатора сервера («sID_s») для данного сеанса обмена данными и идентификатора клиента («sID_c») для данного сеанса (sk_s | sk_c=KDF ( Z, sID_s, sID_c)).

[0309] На этапе 1136 клиентский компьютер может обнулить второй промежуточный совместно используемый секрет («Z») и маскирующий коэффициент клиента («d_bc»).

[0310] На этапе 1137 клиентский компьютер может расшифровывать зашифрованные данные сервера («enc_s») с использованием первого ключа сеанса («sk_s») и алгоритма расшифровки (AEAD-1) для определения следующей версии сертификата сервера («C_s_{n+1}»), закрытых данных сервера («SD_s»), L-подписи сервера («sigs_L») и заполняющих данных шифрования сервера («PAD_s»). Замаскированный открытый ключ сервера («Q_bs») может быть использован как дополнительные данные в алгоритме расшифровки.

[0311] На этапе 1138 клиентский компьютер может определить следующую версию открытого ключа сервера («Q_s_{n+1}») путем извлечения его из следующей версии сертификата сервера («C_s_{n+1}») (Q_s_{n+1} = PubK(C_s_{n+1}).

[0312] На этапе 1139 клиентский компьютер может подтверждать подлинность подписи сертификата сервера («C_s_{n+1}») и может проверять принадлежность открытого ключа сервера («Q_s_{n+1}») области эллиптической кривой.

[0313] На этапе 1140 клиентский компьютер может подтверждать подлинность подписи сервера, которая содержит как L-подпись сервера («sigs_L»), так и R-подпись сервера («sigs_R»), посредством открытого ключа аутентификации сервера («Q_s») с использованием «закрытого» алгоритма цифровой подписи на основе зашифрованных данных сервера («enc_s»). «Закрытый» алгоритм цифровой подписи может быть закрытым в том смысле, что этот алгоритм содержит два разных алгоритма, где один алгоритм создает R-подпись на основе зашифрованных данных, которая не содержит идентифицирующую информацию, а другой алгоритм создает L-подпись, содержащую идентифицирующую информацию, которая может быть зашифрована. Подпись сервера («sigc_L» и «sigc_R» вместе) обеспечивает невозможность отказа серверного компьютера, поскольку ее подлинность может быть проверена с использованием открытого ключа аутентификации сервера («Q_s») с обеспечением при этом компьютеру доступа к закрытому ключу аутентификации сервера («d_s») (например, серверному компьютеру и при сохранении безопасности только серверному компьютеру). Дополнительно R-подпись сервера генерируют путем подписывания самих зашифрованных данных сервера («enc_s»). Дополнительно R-подпись сервера не содержит идентифицирующую информацию серверного компьютера. Следовательно, подпись сервера не только обеспечивает невозможность отказа серверного компьютера, но и является «неотслеживаемой», одновременно с этим данная подпись ограничивается данным конкретным сеансом с данным клиентским компьютером. Соответственно, другой компьютер не может выдавать себя за принимающую сторону данного сообщения.

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

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

[0316] Следует понимать, что любые из вариантов осуществления настоящего изобретения могут быть реализованы в форме управляющей логики с использованием аппаратного обеспечения (например, интегральной схемы специального назначения или программируемой пользователем вентильной матрицы) и/или с использованием компьютерного программного обеспечения с традиционно программируемым процессором в модульном или целостном режиме. В контексте настоящего документа процессор включает процессор с одним ядром, процессор с несколькими ядрами на одной и той же интегральной микросхеме или ряд процессорных устройств на одной печатной плате или сетевых. На основе раскрытия и указаний, предоставленных в настоящем документе, специалисту в данной области техники будут понятны и очевидны другие пути и/или способы реализации вариантов осуществления настоящего изобретения с использованием аппаратного обеспечения и комбинации аппаратного обеспечения и программного обеспечения.

[0317] Любые из программных компонентов или функций, описанных в этой заявке, могут быть реализованы в виде программного кода, который должен быть исполнен процессором, с использованием любого подходящего компьютерного языка, такого как, например, Java, C, C++, C#, Objective-C, Swift, или языка сценариев, такого как Perl или Python, с использованием, например, традиционных или объектно-ориентированных подходов. Программный код может быть сохранен в виде последовательности инструкций или команд на машиночитаемом носителе для хранения и/или передачи. Подходящий постоянный машиночитаемый носитель может включать оперативное запоминающее устройство (RAM), постоянное запоминающее устройство (ROM), магнитный носитель, такой как жесткий диск или гибкий диск, или оптический носитель, такой как компакт-диск (CD) или DVD (цифровой универсальный диск), флеш-память и т. п. Машиночитаемый носитель может представлять собой любую комбинацию таких устройств хранения или передачи.

[0318] Запоминающие носители и машиночитаемые носители для хранения кода или частей кода могут включать любые надлежащие носители, известные или используемые в данной области техники, включая запоминающие носители и среды связи, такие как, но без ограничения, энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные любым способом или технологией для хранения и/или передачи информации, такой как машиночитаемые инструкции, структуры данных, программные модули или другие данные, включая RAM, ROM, EEPROM, флэш-память или другую запоминающую технологию, CD-ROM, цифровой универсальный диск (DVD) или другой оптический носитель, магнитные кассеты, магнитную ленту, запоминающее устройство на магнитных дисках или другие магнитные запоминающие устройства, сигналы данных, передачи данных или любой другой носитель, который может быть использован для хранения или передачи желаемой информации и к которому может осуществить доступ компьютер. На основе описания и указаний, представленных в данном документе, для специалиста в данной области техники будут очевидны другие пути и/или способы осуществления разных вариантов осуществления.

[0319] Такие программы могут также быть закодированы и переданы с использованием несущих сигналов, предназначенных для передачи по проводным, оптическим и/или беспроводным сетям согласно разнообразным протоколам, включая Интернет. Таким образом, машиночитаемый носитель согласно варианту осуществления настоящего изобретения может быть создан с использованием сигнала данных, закодированного с помощью таких программ. Машиночитаемые носители, закодированные с помощью программного кода, могут быть представлены с совместимым устройством или предоставлены отдельно от других устройств (например, посредством скачивания через Интернет). Любой такой машиночитаемый носитель может располагаться на или в одном компьютерном продукте (например, жестком диске, CD или целой компьютерной системе) и может быть представлен на или в разных компьютерных продуктах в системе или сети. Компьютерная система может содержать монитор, принтер или другое подходящее устройство отображения для предоставления пользователю любых результатов, упомянутых в настоящем документе.

[0320] Любые из способов, описанных в настоящем документе, могут быть полностью или частично выполнены компьютерной системой, содержащей один или более процессоров, которые могут быть приспособлены для выполнения этапов. Таким образом, варианты осуществления могут относиться к компьютерным системам, приспособленным для выполнения этапов любого из способов, описанных в настоящем документе, потенциально с разными компонентами, выполняющими соответствующие этапы или соответствующую группу этапов. Хотя этапы представлены пронумерованными, этапы способов в настоящем документе могут быть выполнены одновременно или в другом порядке. Кроме того, части этих этапов могут быть использованы с частями других этапов из других способов. Также весь этап или его части могут быть необязательными. Кроме того, любой из этапов любого из способов может быть выполнен модулями, блоками, схемами или другими средствами для выполнения этих этапов.

[0321] Характерные детали конкретных вариантов осуществления могут сочетаться любым подходящим образом, не отходя от идеи и объема вариантов осуществления настоящего изобретения. Однако другие варианты осуществления настоящего изобретения могут относиться к особым вариантам осуществления, относящимся к каждому отдельному аспекту или особым сочетаниям этих отдельных аспектов.

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

[0323] Формы единственного числа подразумевают «один или более», если иное не указано отдельно. Использование «или» предназначено для обозначения «включающего или», а не «исключающего или», если иное не указано отдельно. Использование терминов «первый», «второй», «третий», «четвертый», «пятый», «шестой», «седьмой», «восьмой», «девятый», «десятый» и т. д. не обязательно указывает на порядок или нумерацию различных элементов, и они могут быть просто использованы в целях определения названия для уточнения разных элементов. Использование «клиентского» компьютера и «серверного» компьютера не обязательно указывает на целевое предназначение компьютеров, но может быть просто использовано в целях названия.

[0324] Все патенты, патентные заявки, публикации и описания, упомянутые в настоящем документе, включены посредством ссылки во всей своей полноте для всех целей. Ни один из указанных документов не принимается в качестве прототипа.

1. Компьютерно-реализуемый способ выполнения обмена данными между первым компьютером и вторым компьютером, при этом способ содержит этапы, на которых:

сохраняют посредством первого компьютера первый статический закрытый ключ первого компьютера, первый статический открытый ключ первого компьютера, соответствующий первому статическому закрытому ключу, и второй статический открытый ключ второго компьютера;

генерируют посредством первого компьютера первый маскирующий коэффициент;

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

генерируют посредством первого компьютера подпись первого компьютера путем подписывания первого замаскированного открытого ключа с использованием первого статического закрытого ключа;

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

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

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

2. Способ по п.1, в котором данные первого компьютера дополнительно включают в себя сертификат первого компьютера, при этом сертификат первого компьютера включает в себя первый статический открытый ключ.

3. Способ по п.1, дополнительно содержащий этапы, на которых:

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

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

расшифровывают посредством первого компьютера зашифрованные данные второго компьютера с использованием второго совместно используемого секрета.

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

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

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

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

8. Компьютерно-реализуемый способ выполнения обмена данными между первым компьютером и вторым компьютером, при этом способ содержит этапы, на которых:

сохраняют посредством второго компьютера второй статический закрытый ключ второго компьютера и второй статический открытый ключ второго компьютера, соответствующий второму статическому закрытому ключу;

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

определяют посредством второго компьютера первый совместно используемый секрет с использованием первого замаскированного открытого ключа и второго статического закрытого ключа;

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

подтверждают посредством второго компьютера подлинность подписи первого компьютера с использованием первого статического открытого ключа первого компьютера и первого замаскированного открытого ключа.

9. Способ по п.8, дополнительно содержащий этапы, на которых:

генерируют посредством второго компьютера второй маскирующий коэффициент;

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

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

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

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

10. Способ по п.8, дополнительно содержащий этапы, на которых:

генерируют посредством второго компьютера второй маскирующий коэффициент;

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

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

генерируют посредством второго компьютера подпись второго компьютера путем подписывания второго замаскированного открытого ключа с использованием второго статического закрытого ключа;

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

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

11. Компьютерно-реализуемый способ выполнения обмена данными между первым компьютером и вторым компьютером, при этом способ содержит этапы, на которых:

сохраняют посредством первого компьютера первый статический закрытый ключ первого компьютера, первый статический открытый ключ первого компьютера, соответствующий первому статическому закрытому ключу, и второй статический открытый ключ второго компьютера;

генерируют посредством первого компьютера первый маскирующий коэффициент;

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

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

генерируют посредством первого компьютера с использованием алгоритма первой подписи первую подпись первого компьютера и случайное значение подписи первого компьютера;

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

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

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

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

13. Способ по п.11, дополнительно содержащий этапы, на которых:

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

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

расшифровывают посредством первого компьютера зашифрованные данные второго компьютера с использованием второго совместно используемого секрета.

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

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

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

17. Компьютерно-реализуемый способ выполнения обмена данными между первым компьютером и вторым компьютером, при этом способ содержит этапы, на которых:

сохраняют посредством второго компьютера второй статический закрытый ключ второго компьютера и второй статический открытый ключ второго компьютера, соответствующий второму статическому закрытому ключу;

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

определяют посредством второго компьютера первый совместно используемый секрет с использованием первого замаскированного открытого ключа и второго статического закрытого ключа;

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

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

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

19. Способ по п.17, дополнительно содержащий этапы, на которых:

генерируют посредством второго компьютера второй маскирующий коэффициент;

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

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

генерируют посредством второго компьютера с использованием алгоритма первой подписи первую подпись второго компьютера и случайное значение подписи второго компьютера;

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

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

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

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

21. Система для выполнения безопасного обмена данными между первым компьютером и вторым компьютером, содержащая:

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

один или более процессоров для исполнения инструкций, хранимых на машиночитаемом носителе.



 

Похожие патенты:

Изобретение относится к средствам генерирования ключа. Технический результат – осуществление защиты безопасности для голосовой услуги.

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

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

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

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

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

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

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

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

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

Изобретение относится к средствам генерирования ключа. Технический результат – осуществление защиты безопасности для голосовой услуги.
Наверх