Гомоморфное шифрование для проверки подлинности с помощью пароля

Изобретение относится к защищенной передаче информации по сети связи. Технический результат заключается в повышении защиты передачи данных. Технический результат достигается за счет того, что используют гомоморфное шифрование для защиты строки проверки подлинности, например пароля, во время проверки подлинности как на клиентском устройстве, так и на серверном устройстве. Варианты реализации относятся к серверному устройству и клиентскому устройству, выполненным с возможностью проверки подлинности пользователя клиентского устройства. Пользователь имеет доступ к строке проверки подлинности. Серверное устройство выполнено с возможностью шифрования набора данных символа/позиции в соответствии с алгоритмом гомоморфного шифрования. Клиентское устройство позволяет пользователю выбирать подмножество из зашифрованного набора, из которого вычисляют проверочное число с использованием гомоморфной операции. 6 н. и 11 з.п. ф-лы, 7 ил.

 

ОБЛАСТЬ ТЕХНИКИ

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

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

В патенте США 7735121 раскрыта известная система для защищенной передачи информации по сети связи. Этот известный способ может быть использован для ввода такой информации для проверки подлинности, как PIN-код.

Эта известная система содержит удаленное вычислительное устройство, соединенное с веб-сервером через сеть дистанционной связи. Веб-страница, используемая для проверки подлинности пользователя, содержит виртуальную панель, с которой пользователь может ввести конфиденциальные сведения. Виртуальная панель содержит множество буквенно-цифровых кнопок, которые могут быть непосредственно выбраны на дисплее удаленного вычислительного устройства пользователя для ввода конфиденциальных сведений. В разных местах виртуальной панели в случайном порядке отображаются буквенно-цифровые символы. Фактические символы, отображаемые на виртуальной панели, соотнесены с альтернативным набором символов, хранящимся в базе данных на сервере проверки подлинности. Символы из альтернативного набора символов, которые соответствуют конфиденциальным сведениям, введенным пользователем, затем шифруют с использованием уровня защищенных сокетов (Secure Socket Layer, SSL) и передают на сервер проверки подлинности.

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

РАСКРЫТИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯ

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

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

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

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

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

Согласно другому аспекту настоящего изобретения предложен способ создания компьютерной программы, доступной для загрузки. Этот аспект используют при загрузке компьютерной программы, например, в App Store компании Apple, Play Store компании Google или Windows Store компании Microsoft, а также в том случае, когда компьютерная программа доступна для загрузки из такого магазина.

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

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

на Фиг. 1 схематически показан пример варианта реализации системы проверки подлинности;

на Фиг. 2 схематически показан пример варианта реализации зависимостей данных;

на Фиг. 3 схематически показан пример варианта реализации данных символа/позиции;

на Фиг. 4 схематически показан пример варианта реализации данных отображения;

на Фиг. 5 схематически показан пример варианта реализации способа для сервера и способа для клиента;

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

на Фиг. 6b схематически показано представление процессорной системы согласно варианту реализации.

Список номеров позиций на Фиг. 1-4:

100 - серверное устройство

101 - система проверки подлинности

110 - запоминающее устройство для проверочных чисел

120 - блок шифрования

130 - интерфейс связи

140 - блок сравнения

150 - генератор перестановки

160 - блок данных отображения

200 - клиентское устройство

210 - дисплей

220 - пользовательский интерфейс

230 - интерфейс связи

240 - блок гомоморфического вычисления

250 - запоминающее устройство

310 - набор данных символа/позиции

320 - подмножество набора данных символа/позиции

325, 326 - строка проверки подлинности

330 - первое неослепленное проверочное число

340 - первое проверочное число

345, 346 - ослепляющее число

350 - набор зашифрованных данных символа/позиции

360 - подмножество зашифрованного набора данных символа/позиции

370 - второе неослепленное проверочное число

380 - второй набор данных символа/позиции

410 - множество позиций,

420 - набор символов

430 - число символа/позиции

500 - перестановка

510 - данные отображения

511 - данные отображения

530 - зашифрованные данные символа/позиции

520-529 - зашифрованные данные символа/позиции

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

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

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

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

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

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

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

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

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

На Фиг. 1 схематически показан пример варианта реализации системы 101 проверки подлинности. Система 101 проверки подлинности содержит клиентское устройство 200 и серверное устройство 100, которые выполнены с возможностью проверки клиентским устройством 200 подлинности пользователя клиентского устройства 200 для серверного устройства 100. Подлинность пользователя проверяют путем обеспечения знания им строки проверки подлинности.

Клиентское устройство 200 и серверное устройство 100 могут быть электронными устройствами, выполненными как варианты реализации настоящего изобретения. Клиентское устройство 200 содержит интерфейс 230 связи, выполненный с возможностью обмена данными с серверным устройством, и серверное устройство 100 содержит интерфейс связи 130. Эти интерфейсы связи выполнены с возможностью обмена данными друг с другом в цифровом формате, например, путем обмена цифровыми сообщениями, например, через вычислительную сеть. Например, компьютерная сеть может быть Интернетом, интрасетью, WLAN и т. д. Компьютерная сеть может быть Интернетом. Например, интерфейсы 130 и/или 230 связи могут быть проводными интерфейсами, например, портом Ethernet. Например, интерфейсы 130 и/или 230 могут быть беспроводными интерфейсами, например, интерфейсом Wi-Fi, например, содержащим антенну Wi-Fi.

Клиентское устройство 200 и серверное устройство 100 взаимодействуют так, что клиентское устройство может проверять подлинность пользователя клиентского устройства 200 для серверного устройства 100. Например, серверное устройство 100 может быть сконфигурировано для некоторой услуги, для которой данный пользователь авторизован, а остальные пользователи нет. Например, сервер 100 может быть файловым севером, хранящим документы, к которым пользователь имеет доступ, сервером потоковой передачи, обеспечивающим доступ к ценному содержимому, веб-магазином, хранящим информацию о кредитной карте пользователя, и т. д.

Каждое из клиентского устройства 200 и серверного устройства 100 содержат процессорную схему. Они также могут содержать память, содержащую инструкции компьютерной обработки. Процессорная схема выполнена с возможностью исполнения инструкций, хранящихся в памяти. Исполнение проверки подлинности реализуют в процессорной схеме, примеры которой показаны в настоящем документе. На Фиг. 1 показаны функциональные блоки, которые могут быть функциональными блоками процессорной схемы. Например, Фиг. 1 может быть использована в качестве примерного плана организации процессорной схемы. На Фиг. 1 процессорная схема не показана отдельно от блоков. Например, функциональные блоки, показанные на Фиг. 1, могут быть полностью или частично реализованы в компьютерных инструкциях, которые хранятся на устройстве 100 или 200, например, в электронной памяти устройства 100 или 200, и могут быть исполнены микропроцессором устройства 100 или 200. В гибридные вариантах реализации функциональные блоки реализуют частично в оборудовании, например, таком как сопроцессоры, например, криптопроцессоры, и частично в программном обеспечении, хранящемся и исполняемом на устройстве 100 или 200.

Серверное устройство 100 выполнено с возможностью проверки подлинности пользователя с клиентского устройства 200. Пользователь имеет доступ к строке проверки подлинности. Строка проверки подлинности имеет множество символов в множестве позиций, причем символы выбирают из набора символов. Например, строка проверки подлинности может представлять собой PIN-код, в этом случае набор символов представляет собой числа {0, 1, 2, …, 9}. Например, строка проверки подлинности может представлять собой буквенно-цифровую строку, в этом случае набор символов может представлять собой{a, …, z, A, …, Z, 0, …, 9}. Кроме того, в соответствии с потребностями системы 101 проверки подлинности в набор символов могут быть добавлены один или более знаков пунктуации.

Серверное устройство 100 содержит запоминающее устройство 110, выполненное с возможностью хранения первого проверочного числа, например, запоминающее устройство 110 для проверочных чисел. На фазе установки первое проверочное число было вычислено из строки проверки подлинности. Однако в варианте реализации знания первого проверочного числа недостаточно для получения строки проверки подлинности. Более того, первое проверочное число не может быть использовано само по себе для прохождения проверки подлинности на сервере 100. Другими словами, даже если злоумышленник получил бы первое проверочное число, это не помогло бы ему ни получить строку проверки подлинности, ни пройти проверку подлинности на сервере 100. Клиентское устройство 200 выполнено таким образом, что во время процесса проверки подлинности из строки проверки подлинности вычисляют второе проверочное число. Клиентское устройство 200 может выполнять это, т. к. пользователь предоставляет входные данные, основанные на знании строки проверки подлинности. Затем второе проверочное число отправляют на серверное устройство 100. Проверяют соответствие между первым и вторым проверочным числом, что, в свою очередь, подтверждает, что оба проверочных числа были вычислены из одной и той же строки проверки подлинности. Соответственно, устаналивается подлинность пользователя.

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

На Фиг. 2 схематически показан пример варианта реализации возможных зависимостей данных. На этом чертеже поясняется возможная взаимосвязь между первым и вторым проверочными числами и строкой проверки подлинности.

На Фиг. 2 показан набор 310 данных символа/позиции. Набор 310 содержит число для каждой комбинации из символа из набора символов и позиции в строке проверки подлинности. Данные символа/позиции могут быть секретными, но это необязательно; это могут быть открытые данные. Как правило, числа выбирают из конечной группы, кольца или поля, например, таких, которые используют в применяемой схеме гомоморфного шифрования. Схема гомоморфного шифрования позволяет шифровать данные, например, числа, например, в группе. Кроме того, существует по меньшей мере одна двоичная операция, которая может быть выполнена на зашифрованных числах. Например, схема гомоморфного шифрования, которая поддерживает сложение, позволяет суммировать набор чисел, подлежащих вычислению во время шифрования. Например, для такого шифрования существует функция , такая что Другими словами, шифрование суммы может быть вычислено из зашифрованных слагаемых, притом это может быть сделано без знания ключа шифрования. Некоторые схемы гомоморфного шифрования могут поддерживать умножение. Существуют также схемы гомоморфного шифрования, которые поддерживают более одной операции, например сложение и умножение. Хотя такие схемы могут быть использованы в варианте реализации, такие сложные типы гомоморфного шифрования не требуются, поскольку нужна только одна операция. Примеры схем гомоморфного шифрования: Ривеста-Шамира-Адлемана (Rivest, Shamir, Adleman, RSA) (без заполнения), Эль-Гамаля (ElGamal), Гольдвасера-Микали (Goldwasser-Micali), Бенало (Benaloh), Пэйе (Paillier) и т. д. Например, числа могут быть выбраны из группы целых чисел по модулю простого числа. Другими примерами являются эллиптические кривые, сформированные некоторым генератором. Группа обратимых чисел по модулю составного числа и т. д.

На Фиг. 3 схематически показан пример варианта реализации данных символа/позиции. Показаны множество позиций 410. Строка проверки подлинности может быть получена путем выбора символа из набора 420 символов для каждой позиции строки проверки подлинности. Для каждой комбинации позиции в множестве позиций 410 и для каждого символа в наборе 420 символов выбирают число символа/позиции. Если имеются n позиций и m возможных символов, то, как правило, существуют nm чисел символа/позиции. Некоторые комбинации могут быть опущены, но, как следствие, эти комбинации символа/позиции невозможны в строке проверки подлинности.

В варианте реализации строка проверки подлинности может быть заданной длины или строка проверки подлинности может иметь любую длину, по меньшей мере 2, меньше некоторой максимальной длины. Однако использовать в строке проверки подлинности все позиции из множества позиций не требуется. Например, строки проверки подлинности разных длин могут поддерживаться за счет оставления открытыми некоторых позиций. В альтернативном варианте реализации количество данных символа/позиции можно уменьшить путем кодирования одного символа как пустой позиции. Строки проверки подлинности разных длин могут также поддерживаться путем включения символа заполнения в набор символов. Можно потребовать, чтобы строки проверки подлинности имели символов заполнения не более, чем строка идущих подряд символов в конце строки проверки подлинности. На Фиг. 3 показана одна комбинация из позиции и символа: число 430.

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

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

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

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

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

Строка 325 проверки подлинности определяет подмножество 320 набора 310 данных символа/позиции. В частности, в подмножество 320 включают числа символа/позиции, соответствующие символам, фактически используемым в разных позициях строки проверки подлинности. Из подмножества 320 выводят первое проверочное число 340.

Например, первое проверочное число может быть получено из подмножества 320 путем выполнения операции, поддерживаемой гомоморфным шифрованием, например умножения. Для дополнительной безопасности этот результат может быть ослеплен. Например, первое неослепленное проверочное число 330 может быть получено из подмножества 320 путем выполнения поддерживаемой операции, например, умножения чисел в подмножестве. Далее, первое неослепленное проверочное число 330 может быть ослеплено с помощью ослепляющего числа 340. Последнее является (ослепленным) первым проверочным числом 340. Например, для включения ослепляющего числа может быть использована поддерживаемая операция: например, ослепляющее число может быть сложено с первым неослепленным проверочным числом 340 или умножено на него. Ослепляющее число является необязательным. В отсутствии ослепляющего числа злоумышленник, который получает первое неослепленное проверочное число 330, может запустить атаку перебором по словарю, чтобы определить строку проверки подлинности. Ослепляющее число сокращает информацию, которую содержит неослепленное проверочное число 330 о строке 325 проверки подлинности, например, возможно, сокращает ее до нуля. Далее будем считать, что первое проверочное число является ослепленным, но это необязательно. Ослепляющее число может быть случайным числом, например, сформированным генератором случайных чисел.

Следует отметить, что на фазе проверки подлинности серверному устройству не требуются ни строка 325 проверки подлинности, ни неослепленное проверочное число 330, ни ослепляющее число 345. Например, серверное устройство может вычислять первое проверочное число 340 на фазе установки, а затем удалять ненужную информацию. Например, серверное устройство может принимать первое проверочное число 340 на фазе установки, например, от клиентского устройства или от доверенной третьей стороны. На фазе проверки подлинности серверному устройству нужны данные 310 символа/позиции и первое проверочное число, будь то ослепленное или нет. Если данные 310 символа/позиции не являются случайными, они могут быть вычислены при необходимости, а не храниться.

Серверное устройство 100 содержит блок 120 шифрования. Блок 120 шифрования выполнен с возможностью шифрования набора 310 данных символа/позиции в соответствии с алгоритмом гомоморфного шифрования. Шифрование выполняется на поэлементной основе. На Фиг. 3 это показано в виде зашифрованного набора 350. Во время проверки подлинности зашифрованный набор 350 отправляют клиентскому устройству 200. Во избежание повторного воспроизведения предпочтительно, чтобы результат этого шифрования был разным для разных проверок подлинности. Например, это можно обеспечить путем использования разного ключа при каждом шифровании набора 310, например, путем выбора случайного ключа. Например, это можно обеспечить путем выбора схемы вероятностного шифрования (или и того, и другого). Например, схема шифрования может быть шифрованием Эль-Гамаля, которое является схемой гомоморфного и вероятностного шифрования.

Клиентское устройство 200 содержит блок 240 гомоморфного вычисления. Блок 240 гомоморфного вычисления выполнен с возможностью вычисления зашифрованного второго проверочного числа из подмножества 360 зашифрованного набора 350 данных символа/позиции. Зашифрованный набор 350 принимают от серверного устройства 100. Например, пользователь клиентского устройства 200 может выбирать подмножество 360 принятого набора 350 на основе своего знания строки 326 проверки подлинности. Если строка 325 проверки подлинности и строка 326 проверки подлинности одинаковые, то подмножество 360 является тем же самым, что и подмножество 320, с тем отличием, что подмножество 360 зашифровано, а подмножество 320 нет. Например, принятый набор 350 может содержат указание на то, какое зашифрованное число символа/позиции соответствует какому символу/позиции. Например, набор 350 может быть сортированным. Например, пользователь может ввести строку проверки подлинности на пользовательском интерфейсе 220 клиентского устройства 200, например, на клавиатуре сенсорного экрана и т. д., чтобы выбрать подмножество 360.

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

Блок 240 гомоморфного вычисления выполнен с возможностью гомоморфного вычисления зашифрованного второго проверочного числа из подмножества зашифрованного набора данных символа/позиции. Например, блок 240 гомоморфного вычисления может выполнять то же самое вычисление, которое выполняют на наборе 320 для получения числа 330, с той разницей, что блок 240 гомоморфного вычисления выполняет вычисление на зашифрованных данных. Второе проверочное число 370 является зашифрованным, но неослепленным.

В случае использования ослепления блок 240 гомоморфного вычисления может быть выполнен с возможностью ослепления зашифрованного второго проверочного числа с помощью ослепляющего числа 346. Если блок 240 гомоморфного вычисления выполняет то же самое вычисление и ослепление (хотя и на зашифрованных данных) и использует то же самое ослепляющее число (но зашифрованное), то второе проверочное число 380 является тем же самым, что и первое проверочное число 340, хотя и зашифрованное.

Существуют несколько способов получения зашифрованного ослепляющего числа клиентским устройством 200. Например, зашифрованное ослепляющее число может быть получено на фазе установки, зашифрованным для каждого ключа, который будет использован на фазе проверки подлинности. Зашифрованные ослепляющие числа могут быть в запоминающем устройстве устройства 200. В этом случае во время проверки подлинности могут быть использованы один и тот же ключ или ограниченное количество ключей. В альтернативном варианте реализации схема шифрования может быть схемой шифрования с открытым/закрытым ключом. Клиентское устройство 200 может принимать открытый ключ, который также используется для шифрования набора 310 для получения набора 350. В этом случае блок 240 гомоморфного шифрования может шифровать само ослепляющее число. Ослепляющее число может быть получено от пользователя или из хранилища 250 клиентского устройства 200.

Второе проверочное число, будь то неослепленное число 370 или ослепленное число 380, отправляют на серверное устройство 100. Серверное устройство 100 содержит блок 140 сравнения. Блок 140 сравнения выполнен с возможностью проверки соответствия между первым проверочным числом и зашифрованным вторым проверочным числом для проверки подлинности пользователя. Например, если клиентское устройство 200 выполняет то же самое вычисление, что и серверное устройство 100 (но на зашифрованных данных), то блок 140 сравнения может быть выполнен с возможностью расшифрования второго проверочного числа для сравнения его с первым проверочным числом на предмет равенства. Это необязательно, хотя, например, блок 240 гомоморфного шифрования может быть выполнен с возможностью вычисления другого числа, например, блок 240 гомоморфного шифрования может быть выполнен с возможностью вычисления удвоенного первого проверочного числа или прибавления константы к нему. В более общем смысле, если является неослепленным проверочным числом, то блок гомоморфного шифрования может вычислять , или и т. д. для константы и . Эти числа могут быть ослеплены с помощью ослепляющего числа либо до, либо после дополнительного вычисления. Например, блок 240 гомоморфного шифрования может вычислять , а блок 140 сравнения может проверять, что второе проверочное число в раз больше первого проверочного числа.

Как указано выше, вышеприведенный вариант реализации защищает от сканирования на сервере, но сканирование на клиентском устройство возможно. В варианте реализации предложена дополнительная необязательная защита следующим образом. В варианте реализации серверное устройство 100 содержит генератор 150 перестановки и блок 160 отображения данных. Генератор 150 перестановки выполнен с возможностью перестановки набора символов. Генератор 150 перестановки может формировать перестановку для каждой позиции, но может также формировать меньше перестановок, чем количество позиций, в этом случае некоторые перестановки используют повторно. Например, некоторая перестановка может быть использована для каждой позиции. Предпочтительно по меньшей мере для каждой проверки подлинности формируют новую перестановку. Серверное устройство 100 может содержать генератор случайных чисел для формирования данных символа/позиции и/или перестановки.

Блок 160 отображения данных выполнен с возможностью получения данных отображения для символов в наборе символов. Данные отображения изображают символы из набора символов, но в непригодном для машинного считывания виде. В варианте реализации данные отображения извлекают из хранилища данных отображения или извлекают из внешнего устройства генератора данных отображения. Данные отображения могут быть также сформированы на серверном устройстве 100. Формирование данных изображения как таковое известно. Например, известны алгоритмы для формирования так называемой капчи (полностью автоматизированный публичный тест Тьюринга, позволяющий различать компьютеры и людей - Completely Automated Public Turing test to tell Computers and Humans Apart, CAPTCHA). Например, для каждой позиции получают отличный от других набор данных отображения. Может быть сформировано меньше наборов данных отображения, чем количество позиций, в этом случае некоторые данные отображения используют повторно. Например, некоторые данные отображения могут быть использованы для всех позиций. Для каждой проверки подлинности даже не требуется использовать разные данные отображения. В этом случае клиентское устройство кэширует данные отображения, подлежащие использованию при последующей проверке подлинности. Данные отображения потребляют относительно много данных, которые уменьшают за счет кэширования. Данные отображения могут быть изображением, например, для каждого символа может быть изображение. Данные отображения могут быть кинофрагментом. Например, фильм таков, что человек распознает символ из изображения или видеоклипа, а компьютер не может. По меньшей мере необходимость анализа изображений или клипов злоумышленником делает атаки более подверженными ошибкам, менее автоматизируемыми и более ресурсоемкими. Таким образом, злоумышленнику становится труднее распространять атаки на многих пользователей вместо нескольких выбранных пользователей. Например, данные отображения могут быть в формате jpg, png и т. д. или mp4, avi и т. д.

Данные отображения отправляют клиентскому устройству 200 вместе с набором 350 зашифрованных данных символа/позиции. Данные отображения могут быть отправлены в переставленном порядке, но связанном с правильными данными символа/позиции. На Фиг. 4 показана перестановка 500 набора символов, используемого для PIN-кодов. То же самое можно сделать с более крупными наборами символов. Перестановка 500 может указывать порядок, в котором данные отображения для символов в наборе символов отправляют клиентскому устройству 200. Данные 510 отображения также показаны на Фиг. 4. Показанные данные 510 отображения представляют собой символы в наборе символов, но в непригодном для машинного считывания виде, в порядке, который указан в перестановке. В этом случае данные отображения формируют путем выбора случайного шрифта и наложения двух черных полосок в случайной ориентации. Вместо этого может быть использован любой способ формирования непригодных для машинного считывания данных, который известен в данной области техники. Ниже показаны данные отображения, соответствующие зашифрованным данным 520-529 символа/позиции, соответствующим символу. Например, если данные 510 отображения формируют для первой позиции, то данные 520-529 символа/позиции являются данными символа/позиции для комбинации из символа в наборе символов и первой позиции. Для следующей позиции используют новые данные символа/позиции, а также, необязательно, новую перестановку и/или новый набор отображения. В более защищенном варианте реализации каждая позиция имеет свои собственные данные символа/позиции, набор отображения и перестановку.

Клиентское устройство 200 выполнено с возможностью приема данных отображения от серверного устройства, связанного с зашифрованными данными символа/позиции. Клиентское устройство 200 содержит дисплей 210. Дисплей 210 выполнен с возможностью отображения принятых данных отображения для каждой позиции. После отображения данных отображения для конкретной позиции пользователь может выбрать правильный символ, соответствующий данной позиции в строке проверки подлинности. При выборе данных отображения связанные зашифрованные символ/позиция тоже выбираются для подмножества 360. Например, если первый символ строки проверки подлинности представляет собой 9, то пользователь может выбрать данные 511 отображения, и зашифрованные данные 521 символа/позиции добавятся в подмножество 361. Таким образом, пользователь выбирает правильные данные символа/позиции, и это при том, что злоумышленник не знает, что они представляют: данные символа/позиции зашифрованы и соответствуют изображению не дисплее, которое не является машиночитаемым.

Например, клиентское устройство 200 может быть выполнено в соответствии со следующим псевдокодом.

Для каждой позиции в строке проверки подлинности выполнить следующее:

Отобразить данные отображения, которые приняты для позиции

Принять выбор пользователя для отображаемых данных отображения

Добавить зашифрованные данные символа/позиции для позиции и выбранный символ в подмножество 360.

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

Запоминающие устройство, такие как запоминающее устройство 110 и 250, могут быть реализованы как электронная память, например флэш-память, или магнитная память, например жесткий диск и т. п. Запоминающее устройство 110 или 250 может содержать множество дискретных памятей, вместе составляющих запоминающее устройство. Запоминающее устройство может быть также реализовано как локальное запоминающее устройство или внешнее запоминающее устройство, например облачное запоминающее устройство. В последнем случае устройство содержит блок считывания и записи для считывания и записи на внешнее запоминающее устройство, например, через сетевое соединение. Например, часть запоминающего устройства может быть защищенным запоминающим устройством, а остальная часть может быть обычным запоминающим устройством. Запоминающее устройство также может содержать временную память, например, ОЗУ.

Как правило, каждое из устройств 100 и 200 содержит микропроцессор (не показан отдельно), который исполняет надлежащее программное обеспечение на устройствах 100 и 200; например, это программное обеспечение могло быть загружено и/или сохранено в соответствующей памяти, например, энергозависимой памяти, такой как ОЗУ, или энергонезависимой памяти, такой как флэш-память (не показана отдельно). В альтернативном варианте реализации устройства 100 и 200 полностью или частично реализованы в программируемой логике, например, такой как программируемая пользователем вентильная матрица (Field-Programmable Gate Array, FPGA). Устройства 100 и 200 могут быть реализованы, полностью или частично, в виде так называемой специализированной интегральной схемы (ASIC), т. е. интегральной схемы (ИС), изготовленной на заказ для ее конкретного применения. Например, схемы могут быть реализованы в КМОП, например, с использованием языка описания аппаратных средств, такого как Verilog, VHDL и т. д.

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

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

На Фиг. 5 схематически показан пример варианта реализации способа 500 для сервера и способа 600 для клиента.

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

- сохранение (610) первого проверочного числа, вычисленного из подмножества набора данных символа/позиции, причем упомянутое подмножество указано строкой проверки подлинности, а набор данных символа/позиции содержит число для каждой комбинации из символа из набора символов и позиции в строке проверки подлинности,

- шифрование (620) набора данных символа/позиции в соответствии с алгоритмом гомоморфного шифрования и отправку зашифрованного набора клиентскому устройству,

- прием (630) от клиентского устройства второго проверочного числа, получаемого гомоморфным вычислением зашифрованного второго проверочного числа из подмножества зашифрованного набора, при этом подмножество указывают посредством упомянутой строки проверки подлинности, и

- проверку (640) соответствия между первым проверочным числом и зашифрованным вторым проверочным числом для проверки подлинности пользователя.

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

- прием (710) набора данных символа/позиции, зашифрованных в соответствии с алгоритмом гомоморфного шифрования, причем зашифрованный набор данных символа/позиции содержит число для каждой комбинации из символа из набора символов и позиции в строке проверки подлинности,

- гомоморфное вычисление (720) зашифрованного второго проверочного числа из подмножества зашифрованного набора данных символа/позиции, причем подмножество указывают посредством упомянутой строки проверки подлинности,

- отправку (730) зашифрованного второго проверочного числа серверному устройству.

Способы 600 и 700 могут включать дополнительные операции. В частности, они могут включать получение, отображение и выбор данных отображения для набора символов. Зависимости между двумя способами указаны пунктирными стрелками.

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

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

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

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

Рассмотрим защищенную клавиатуру. Она обеспечивает защиту от утраты учетных данных вследствие сканирования памяти. Защищенная клавиатура может рассматриваться как последовательность таблиц, в которой каждая строка представляет цифру от 0 до 9. В такой таблице 2 столбца. Один столбец содержит данные для отображения числа приложением, например , а второй столбец содержит некоторое произвольное значение. Обозначим как значение в памяти, являющееся результатом нажатия значения в строке i таблицы , т. е. значение во втором столбце строки i таблицы . Строки переставляют, чтобы скрыть реальные значения, которые они представляют. Каждый раз, когда пользователь вводит цифру, в память загружается новая таблица, чтобы обеспечить удаление связывающей информации, такой как, являются ли две введенные цифры одинаковыми.

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

1. Пользователь вводит свое имя пользователя и его (производную) отправляют на сервер.

2. Сервер проверяет, что пользователь зарегистрирован, и если это так, он выполняет следующее:

(a) Формирует имеющую размер случайную матрицу так, что все элементы в каждом столбце являются уникальными.

(b) Формирует n случайных перестановок , действующих на множестве .

(c) Формирует n наборов данных отображения.

(d) Определяет для таблицу , содержащую в строке j пару .

(e) Отвечает с помощью только что случайно выбранной клавиатуры .

3. Пользователь предоставляет и вводит свой PIN, дающий в результате строку , которую отправляют обратно серверу.

4. Сервер воссоздает PIN с помощью и , использующей взаимосвязь , вытекающую из того факта, что пользователь выбирает i-ю цифру PIN () в строке таблицы . Таким образом, мы делаем вывод, что удовлетворяет соотношению ), так что .

5. Наконец, сервер проверяет PIN с использованием своей базы данных и удаляет все сформированные данные из своей памяти.

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

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

Чтобы сканировщик памяти на сервере не мог получить конфиденциальные пароли или PIN-коды, предлагаем следующее.

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

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

Пусть обозначает шифрование Эль-Гамаля [2] помощью секретного ключа. Поэтому

где r - некоторое равномерное случайное значение по модулю p и .

Предполагается, что пользователь U сохранил , который используется в .

Тогда проверка подлинности происходит следующим образом:

1. Пользователь вводит свое имя пользователя и его (его производную) отправляют на сервер.

2. Сервер проверяет, что пользователь зарегистрирован, и если это так, он выполняет следующее:

(a) Формирует случайный секретный ключ .

(b) Формирует имеющую размер случайную матрицу , где .

(c) Формирует n случайных перестановок , действующих на множестве .

(d) Формирует n наборов данных отображения.

(e) Определяет для таблицу , содержащую в строке j пару .

(f) Отвечает с помощью только что случайно выбранной клавиатуры и открытого ключа .

3. Пользователь предоставляет и вводит свой , дающий в результате строку .

4. Пользователь извлекает из памяти и формирует случайное шифрование с использованием открытого ключа h.

5. Пользователь отвечает строкой .

6. Сервер расшифровывает и проверяет, совпадает ли она с .

7. Наконец, удаляет все сформированные данные из своей памяти.

Вместо матрицы 10 на n для набора может быть использован другой набор символов.

Корректность: Следует отметить, что цифровая строка может быть представлена целым числом

Кроме того, из гомоморфизма Эль-Гамаля

вытекает

так что

Регистрация: Тогда регистрация происходит следующим образом:

1. Пользователь вводит свое имя пользователя и его (его производную) отправляют на сервер.

2. Сервер проверяет, что пользователь НЕ зарегистрирован, и если так, он выполняет следующее:

(a) Формирует случайный секретный ключ .

(b) Формирует имеющую размер случайную матрицу , где .

(c) Формирует n случайных перестановок , действующих на множестве .

(d) Формирует n наборов данных отображения.

(e) Определяет для таблицу , содержащую в строке j пару .

(f) Отвечает с помощью только что случайно выбранной клавиатуры и открытого ключа .

3. Пользователь предоставляет и вводит свой выбранный , дающий в результате строку .

4. Пользователь формирует случайный и случайное шифрование с использованием открытого ключа h.

5. Пользователь отвечает строкой .

6. Сервер расшифровывает в и сохраняет пользователя U вместе с .

7. Наконец, удаляет все оставшиеся сформированные данные из своей памяти.

Нулевые знания сервера: Сервер видит только основанное на случайном ключе шифрование и саму . Из семантической стойкости схемы Эль-Гамаля [3] следует, что умножение основанного на случайном ключе шифрования на результат клавиатуры скрывает, в том числе для сервера, все выборы, сделанные пользователем на клавиатуре. Это также называют ослеплением шифрования. Кроме того, обязательства Педерсена обеспечивают невозможность использования для выделения PIN.

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

Источники ссылок

[1] Pedersen.: Non-interactive and information-theoretic secure verifiable secret sharing. In Advances in Cryptology CRYPTO ’91 Springer

[2] T. ElGamal.: A public key cryptosystem and a signature scheme based on discrete logarithms. In Proceedings of CRYPTO 84 on Advances in Cryptology, pages 10--18, New York, NY, USA, 1985. Springer-Verlag New York, Inc.

[3] Y. Tsiounis and M. Yung.: On the security of ElGamal based encryption. In H. Imai and Y. Zheng, editors, Public Key Cryptography, volume 1431 of Lecture Notes in Computer Science, pages 117--134. Springer, 1998.

На Фиг. 6a показан компьютерочитаемый носитель 1000 информации, имеющий часть 1010, содержащую компьютерную программу 1020, причем компьютерная программа 1020 содержит инструкции для вызова выполнения процессорной системой способа для клиента или способ для сервера согласно варианту реализации. Компьютерная программа 1020 может быть реализована на компьютерочитаемом носителе 1000 информации в виде физических меток или посредством намагничивания компьютерочитаемого носителя 1000 информации. Однако возможен и любой другой подходящий вариант реализации. Кроме того, понятно, что хотя компьютерочитаемый носитель 1000 информации показан здесь в виде оптического диска, компьютерочитаемый носитель 1000 информации может быть любым подходящим компьютерочитаемым носителем информации, таким как жесткий диск, твердотельная память, флэш-память и т. д., и может быть выполнен без возможности записи или с возможностью записи. Компьютерная программа 1020 содержит инструкции для вызова выполнения процессорной системой способа для клиента или способа для сервера согласно варианту осуществления.

На Фиг. 6b показано схематическое представление процессорной системы 1140 согласно варианту реализации. Процессорная система содержит одну или более интегральных схем 1110. Архитектура одной или более интегральных схем 1110 схематически показана на Фиг. 6b. Схема 1110 содержит блок 1120 обработки, например, ЦП, для выполнения компонентов компьютерной программы с целью осуществления способа согласно варианту реализации и/или реализации его модулей или блоков. Схема 1110 содержит память 1122 для хранения программного кода, данных и т. д. Программный код конфигурирует процессорную систему как вариант реализации клиентского устройства или серверного устройства.

Часть памяти 1122 может быть предназначена только для чтения. Схема 1110 может содержать элемент 1126 связи, например, антенну, разъемы или то и другое и т. п. Схема 1110 может содержать специализированную интегральную схему 1124 для выполнения части или всей обработки, определенной в указанном способе. Процессор 1120, память 1122, специализированная ИС 1124 и элемент 1126 связи могут быть соединены друг с другом посредством межсоединения 1130, например, шины. Процессорная система 1110 может быть выполнена с возможностью контактного и бесконтактного обмена данными с использованием антенны и/или разъема, соответственно.

Например, в варианте реализации клиентское устройство серверное устройство, устройство формирования ключа и/или устройство проверки подписи могут содержать процессорную схему и схему памяти, причем процессор выполнен с возможностью исполнения программного обеспечения, хранящегося в схеме памяти. Например, процессорная схема может представлять собой процессор Intel Core i7, ARM Cortex-R8 и т. д. В варианте реализации процессорная схема может представлять собой ARM Cortex M0. Схема памяти может быть схемой ПЗУ или энергонезависимой памяти, например, флэш-памяти. Схема памяти может быть схемой энергозависимой памяти, например, СОЗУ (SRAM). В последнем случае устройство может содержать энергонезависимый программный интерфейс, например, жесткий диск, сетевой интерфейс и т. д., выполненный с возможностью снабжения программным обеспечением.

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

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

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

1. Серверное устройство (200) для проверки пользователя с клиентского устройства (100), причем пользователь имеет доступ к строке (326) проверки подлинности, строка проверки подлинности имеет множество символов во множестве позиций (410), а символы выбраны из набора (420) символов, при этом серверное устройство содержит:

- запоминающее устройство (110), хранящее первое проверочное число (340, ), вычисленное из подмножества (320) набора (310) данных символа/позиции, причем упомянутое подмножество указано строкой (325, p) проверки подлинности, а набор данных (310, ) символа/позиции содержит число (430) для каждой комбинации из символа из набора символов и позиции в строке проверки подлинности,

- процессорную схему, выполненную с возможностью:

- шифрования набора данных символа/позиции в соответствии с алгоритмом гомоморфного шифрования и отправки зашифрованного набора (350) клиентскому устройству,

- приема от клиентского устройства второго проверочного числа (380), получаемого гомоморфным вычислением зашифрованного второго проверочного числа из подмножества зашифрованного набора, при этом упомянутое подмножество указано строкой проверки подлинности, и

- проверки соответствия между первым проверочным числом и зашифрованным вторым проверочным числом для проверки подлинности пользователя.

2. Серверное устройство по п. 1, в котором процессорная схема выполнена с возможностью:

- формирования перестановки (500) набора символов,

- получения данных (510, 511) отображения для символов в наборе символов и связывания данных отображения с зашифрованными данными (530, 520-529) символа/позиции, соответствующими упомянутому символу,

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

3. Серверное устройство по п. 1, в котором:

- для всех позиций использованы одни и те же данные отображения, или

- по меньшей мере для двух разных позиций использованы разные данные отображения.

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

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

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

7. Серверное устройство по любому из предыдущих пунктов, в котором:

- по меньшей мере некоторые из данных символа/позиции вычислены как значения, кратные степеням основания степени,

- по меньшей мере некоторые из данных символа/позиции вычислены как степени, причем показатели степени являются значениями, кратными степеням основания степени.

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

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

10. Серверное устройство по любому из предыдущих пунктов, в котором проверочное число является обязательством Педерсена, и/или в котором шифрование является шифрованием Эль-Гамаля.

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

- процессорную схему, выполненную с возможностью:

- приема набора данных символа/позиции, зашифрованных в соответствии с алгоритмом гомоморфного шифрования, причем зашифрованный набор () данных символа/позиции содержит число для каждой комбинации из символа из набора символов и позиции в строке проверки подлинности,

- гомоморфного вычисления зашифрованного второго проверочного числа () из подмножества упомянутого зашифрованного набора данных символа/позиции, причем упомянутое подмножество указано строкой (p) проверки подлинности,

- отправки зашифрованного второго проверочного числа серверному устройству.

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

- приема данных отображения от серверного устройства, связанного с зашифрованными данными символа/позиции,

- отображения принятых данных отображения для каждой позиции строки проверки подлинности;

- приема пользовательского ввода, выбирающего данные отображения из отображаемых данных отображения,

- выбора упомянутого подмножества в соответствии с выбранными данными отображения.

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

14. Способ (600) для сервера для проверки пользователя с клиентского устройства (100), причем пользователь имеет доступ к строке (326) проверки подлинности, строка проверки подлинности имеет множество символов во множестве позиций (410), а символы выбирают из набора (420) символов, при этом способ для сервера включает:

- сохранение (610) первого проверочного числа (340, ), вычисленного из подмножества (320) набора (310) данных символа/позиции, причем упомянутое подмножество указано строкой (325, p) проверки подлинности, а набор данных (310, ) символа/позиции содержит число (430) для каждой комбинации из символа из набора символов и позиции в строке проверки подлинности,

- шифрование (620) набора данных символа/позиции в соответствии с алгоритмом гомоморфного шифрования и отправку зашифрованного набора (350) клиентскому устройству,

- прием (630) от клиентского устройства второго проверочного числа (380), получаемого гомоморфным вычислением зашифрованного второго проверочного числа из подмножества зашифрованного набора, при этом подмножество указывают посредством упомянутой строки проверки подлинности, и

- проверку (640) соответствия между первым проверочным числом и зашифрованным вторым проверочным числом для проверки подлинности пользователя.

15. Способ (700) для клиента для проверки пользователя для серверного устройства, причем пользователь имеет доступ к строке проверки подлинности, строка проверки подлинности имеет множество символов во множестве позиций, а символы выбирают из набора символов, при этом способ для клиента включает:

- прием (710) набора данных символа/позиции, зашифрованных в соответствии с алгоритмом гомоморфного шифрования, причем зашифрованный набор () данных символа/позиции содержит число для каждой комбинации из символа из набора символов и позиции в строке проверки подлинности,

- гомоморфное вычисление (720) зашифрованного второго проверочного числа () из подмножества зашифрованного набора данных символа/позиции, причем подмножество указывают посредством упомянутой строки (p) проверки подлинности,

- отправку (730) зашифрованного второго проверочного числа серверному устройству.

16. Компьютерочитаемый носитель (1000) информации, содержащий кратковременные и некратковременные данные (1020), представляющие инструкции, выполнение которых процессорной системой приводит к осуществлению ею способа по п. 14.

17. Компьютерочитаемый носитель (1000) информации, содержащий кратковременные и некратковременные данные (1020), представляющие инструкции, выполнение которых процессорной системой приводит к осуществлению ею способа по п. 15.



 

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

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

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

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

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

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

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

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

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

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

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

Изобретение относится к средствам криптографической защиты информации, а именно к устройствам шифрования данных в соответствии с алгоритмом «Магма» по стандарту ГОСТ Р 34.12-2015, и может быть использовано в доверенных сенсорных системах сбора, обработки и передачи цифровых данных. Технический результат заключается в обеспечении криптографической обработки данных в соответствии с итерацией алгоритма «Магма» по стандарту ГОСТ Р 34.12-2015 при их инвертированном представлении. Он достигается тем, что в устройстве криптографической защиты информации реализуют инвертированные вычисления для операций, составляющих итерацию криптографического преобразования. В этом случае между преобразованиями в прямом и инвертированном представлении сохраняется изоморфизм, при соответствии входных данных в прямом и инвертированном представлении сохраняется соответствие выходных данных и промежуточных результатов в прямом и инвертированном представлении. 2 ил.
Наверх