RU2774807C2 - Homomorphous encryption for authentication using password - Google Patents

Homomorphous encryption for authentication using password Download PDF

Info

Publication number
RU2774807C2
RU2774807C2 RU2020123994A RU2020123994A RU2774807C2 RU 2774807 C2 RU2774807 C2 RU 2774807C2 RU 2020123994 A RU2020123994 A RU 2020123994A RU 2020123994 A RU2020123994 A RU 2020123994A RU 2774807 C2 RU2774807 C2 RU 2774807C2
Authority
RU
Russia
Prior art keywords
character
encrypted
user
authentication
data
Prior art date
Application number
RU2020123994A
Other languages
Russian (ru)
Other versions
RU2020123994A3 (en
RU2020123994A (en
Inventor
Себастиан Якобус Антониус ДЕ ХОГ
Алан ПЕСТРИН
Original Assignee
Конинклейке Филипс Н.В.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from EP17208570.6A external-priority patent/EP3503456A1/en
Application filed by Конинклейке Филипс Н.В. filed Critical Конинклейке Филипс Н.В.
Publication of RU2020123994A3 publication Critical patent/RU2020123994A3/ru
Publication of RU2020123994A publication Critical patent/RU2020123994A/en
Application granted granted Critical
Publication of RU2774807C2 publication Critical patent/RU2774807C2/en

Links

Images

Abstract

FIELD: communication.
SUBSTANCE: invention relates to secure information transmission via a communication network. Homomorphous encryption is used for protection of an authentication string, for example a password, during authentication both on a client device and on a server device. Embodiment options relate to a server device and a client device made with the possibility of authentication of a client device user. The user has an access to the authentication string. The server device is made with the possibility of encryption of a dataset of a symbol/position according to a homomorphous encryption algorithm. The client device allows for the user to select a subset from the encrypted set, from which a verification number is calculated, using a homomorphous operation.
EFFECT: increase in the security of data transmission.
17 cl, 7 dwg

Description

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

Настоящее изобретение относится к клиентскому устройству, серверному устройству, способу для сервера, способу для клиента и компьютерочитаемому носителю информации.The present invention relates to a client device, a server device, a server method, a client method, and a computer-readable storage medium.

УРОВЕНЬ ТЕХНИКИBACKGROUND OF THE INVENTION

В патенте США 7735121 раскрыта известная система для защищенной передачи информации по сети связи. Этот известный способ может быть использован для ввода такой информации для проверки подлинности, как PIN-код. US Pat. No. 7,735,121 discloses a known system for secure transmission of information over a communications network. This known method can be used to enter authentication information such as a PIN.

Эта известная система содержит удаленное вычислительное устройство, соединенное с веб-сервером через сеть дистанционной связи. Веб-страница, используемая для проверки подлинности пользователя, содержит виртуальную панель, с которой пользователь может ввести конфиденциальные сведения. Виртуальная панель содержит множество буквенно-цифровых кнопок, которые могут быть непосредственно выбраны на дисплее удаленного вычислительного устройства пользователя для ввода конфиденциальных сведений. В разных местах виртуальной панели в случайном порядке отображаются буквенно-цифровые символы. Фактические символы, отображаемые на виртуальной панели, соотнесены с альтернативным набором символов, хранящимся в базе данных на сервере проверки подлинности. Символы из альтернативного набора символов, которые соответствуют конфиденциальным сведениям, введенным пользователем, затем шифруют с использованием уровня защищенных сокетов (Secure Socket Layer, SSL) и передают на сервер проверки подлинности.This known system comprises a remote computing device connected to a web server via a telecomm network. The web page used to authenticate the user contains a virtual panel from which the user can enter sensitive information. The virtual pad contains a plurality of alphanumeric buttons that can be directly selected on the display of a user's remote computing device to enter confidential information. Alphanumeric characters are randomly displayed in different places on the virtual panel. The actual characters displayed on the virtual bar are mapped to an alternate character set stored in a database on the authentication server. Characters from the alternate character set that match the sensitive information entered by the user are then encrypted using the Secure Socket Layer (SSL) layer and passed to the authentication server.

С этой известной системой связаны несколько проблем. Например, веб-сервер уязвим к атаке со сканированием памяти. После расшифрования ответа от пользователя пароль пользователя можно увидеть в памяти. Злоумышленник с доступом к памяти сервера может получить из нее пароль. Аналогичным образом, на стороне клиента злоумышленник может записывать данные, которые отправляют с устройства пользователя, и затем повторно воспроизводить их, выдавая себя за пользователя серверу. There are several problems associated with this known system. For example, a web server is vulnerable to a memory scan attack. After decrypting the response from the user, the user's password can be seen in memory. An attacker with access to the server's memory can extract the password from it. Similarly, on the client side, an attacker can record the data that is sent from the user's device and then replay it, impersonating the user to the server.

РАСКРЫТИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯDISCLOSURE OF THE INVENTION

Согласно формуле изобретения предложены клиентское устройство и серверное устройство, которые выполнены с возможностью проверки подлинности. Серверное устройство использует гомоморфное шифрование для шифрования набора данных символа/позиции в соответствии с алгоритмом гомоморфного шифрования. Клиентское устройство вычисляет проверочное число из зашифрованных данных символа/позиции. Поскольку символ/позицию шифруют с использованием гомоморфного шифрования, вычисление проверочного числа может быть выполнено на зашифрованных данных без необходимости расшифрования. Наконец, возвращать необходимо только проверочное число. Таким образом, сервер может проверять, совпадают ли принятое и хранящееся проверочное число друг с другом, причем для этого ему не требуется знать, какие данные символа/позиции были выбраны, т. е. серверу не нужно знать строку проверки подлинности, например, пароль или PIN-код пользователя. According to the claims, a client device and a server device are provided that are capable of authentication. The server device uses homomorphic encryption to encrypt the character/position data set according to the homomorphic encryption algorithm. The client device calculates a parity number from the encrypted character/position data. Because the character/position is encrypted using homomorphic encryption, the check number calculation can be performed on the encrypted data without the need for decryption. Finally, only the check number needs to be returned. In this way, the server can check if the received and stored parity match each other without needing to know which character/position data was selected, i.e. the server does not need to know the authentication string, such as a password or User PIN.

В варианте реализации серверное устройство получает данные отображения для символов в наборе символов и связывает данные отображения с зашифрованными данными символа/позиции, соответствующими символу. Пользователь может на клиентском устройстве выбирать данные отображения, соответствующие символам в строке проверки подлинности. Таким образом, строка проверки подлинности не требуется даже в памяти клиентского устройства. Данные отображения предпочтительно сложны для машинного считывания, например, не могут быть считаны машиной. Даже если данные отображения трудно считать, пусть даже, вероятно, невозможно, это усложнит автоматизированные атаки. In an embodiment, the server device obtains mapping data for characters in the character set and associates the mapping data with encrypted character/position data corresponding to the character. The user can, on the client device, select display data corresponding to the characters in the authentication string. Thus, the authentication string is not required even in the memory of the client device. The display data is preferably difficult to machine read, eg, cannot be read by a machine. Even if the mapping data is difficult to read, even if it is probably impossible, it will make automated attacks more difficult.

Способ проверки подлинности, описанный в настоящем документе, может быть применен к широкому диапазону областей практического применения. В число таких областей применения входят системы связи (например, для защиты подлинности сообщений), финансовые системы (например, для защиты финансовых операций), системы хранения (например, для защиты подлинности данных) и т. д. The authentication method described herein can be applied to a wide range of applications. Such applications include communication systems (for example, to protect the authenticity of messages), financial systems (for example, to protect financial transactions), storage systems (for example, to protect the authenticity of data), etc.

Способ согласно настоящему изобретению может быть реализован на компьютере в виде компьютеризованного способа или в специализированном оборудовании, или в сочетании того и другого. Исполнимый код для способа согласно настоящему изобретению может храниться в компьютерном программном продукте. В число примеров компьютерных программных продуктов входят запоминающие устройства, оптические запоминающие устройства, интегральные схемы, серверы, интерактивное программное обеспечение и т. д. Предпочтительно компьютерный программный продукт содержит некратковременный программных код, хранящийся на компьютерочитаемом носителе информации, для осуществления способа в соответствии с настоящим изобретением при исполнении данного программного продукта на компьютере.The method of the present invention may be implemented on a computer as a computerized method, or in specialized equipment, or a combination of both. The executable code for the method of the present invention may be stored in a computer program product. Examples of computer program products include memory devices, optical storage devices, integrated circuits, servers, interactive software, etc. Preferably, the computer program product comprises non-transitory program code stored on a computer-readable storage medium for carrying out the method in accordance with the present invention. when running this software product on a computer.

В предпочтительном варианте реализации компьютерная программа содержит компьютерный программный код, выполненный с возможностью осуществления всех этапов способа в соответствии с настоящим изобретением при выполнении компьютерной программы на компьютере. Предпочтительно компьютерную программу реализуют на компьютерочитаемом носителе информации. In a preferred embodiment, the computer program comprises computer program code configured to perform all steps of the method of the present invention when the computer program is executed on the computer. Preferably, the computer program is implemented on a computer-readable storage medium.

Согласно другому аспекту настоящего изобретения предложен способ создания компьютерной программы, доступной для загрузки. Этот аспект используют при загрузке компьютерной программы, например, в App Store компании Apple, Play Store компании Google или Windows Store компании Microsoft, а также в том случае, когда компьютерная программа доступна для загрузки из такого магазина.According to another aspect of the present invention, a method for making a downloadable computer program is provided. This aspect is used when the computer program is downloaded from, for example, Apple's App Store, Google's Play Store, or Microsoft's Windows Store, or when the computer program is available for download from such a store.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS

Дальнейшие подробные сведения, аспекты и варианты реализации будут описаны только на примерах со ссылкой на чертежи. Элементы на фигурах показаны для простоты и ясности и необязательно изображены в масштабе. На фигурах элементы, которые соответствуют уже описанным элементам, могут иметь одинаковые номера позиций. Содержание чертежей:Further details, aspects and embodiments will be described by way of example only with reference to the drawings. Elements in the figures are shown for simplicity and clarity and are not necessarily drawn to scale. In the figures, elements that correspond to elements already described may have the same reference numerals. Content of drawings:

на Фиг. 1 схематически показан пример варианта реализации системы проверки подлинности;in FIG. 1 schematically shows an example embodiment of an authentication system;

на Фиг. 2 схематически показан пример варианта реализации зависимостей данных;in FIG. 2 schematically shows an example of an implementation of data dependencies;

на Фиг. 3 схематически показан пример варианта реализации данных символа/позиции; in FIG. 3 schematically shows an exemplary embodiment of character/position data;

на Фиг. 4 схематически показан пример варианта реализации данных отображения;in FIG. 4 schematically shows an example of an implementation of mapping data;

на Фиг. 5 схематически показан пример варианта реализации способа для сервера и способа для клиента; in FIG. 5 schematically shows an example of an implementation of the server method and the client method;

на Фиг. 6a схематически показан компьютерочитаемый носитель информации, имеющий выполненную с возможностью записи часть, содержащую компьютерную программу согласно настоящему варианту реализации,in FIG. 6a schematically shows a computer-readable storage medium having a writable portion containing a computer program according to the present embodiment,

на Фиг. 6b схематически показано представление процессорной системы согласно варианту реализации.in FIG. 6b is a schematic representation of a processor system according to an embodiment.

Список номеров позиций на Фиг. 1-4:The list of position numbers in Fig. 1-4:

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

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

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

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

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

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

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

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

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

210 - дисплей210 - display

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

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

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

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

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

320 - подмножество набора данных символа/позиции320 - subset of character/position data set

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

330 - первое неослепленное проверочное число330 - first unblinded check number

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

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

350 - набор зашифрованных данных символа/позиции 350 - a set of encrypted character/position data

360 - подмножество зашифрованного набора данных символа/позиции360 - a subset of the encrypted character/position dataset

370 - второе неослепленное проверочное число 370 - second unblinded check number

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

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

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

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

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

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

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

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

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

ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯIMPLEMENTATION OF THE INVENTION

Хотя настоящее изобретение может быть реализовано во многих различных формах, на чертежах показаны и будут подробно описаны один или более конкретных вариантов реализации при том понимании, что настоящее описание нужно рассматривать как пример принципов настоящего изобретения, и оно не предназначено для ограничения изобретения показанными и описанными конкретными вариантами реализации.Although the present invention may be embodied in many different forms, one or more specific embodiments are shown and will be described in detail in the drawings, with the understanding that the present description is to be considered as exemplifying the principles of the present invention and is not intended to limit the invention to the specific embodiments shown and described. implementation options.

Далее в целях понимания элементы вариантов реализации описаны во время работы. Однако очевидно, что соответствующие элементы выполнены с возможностью осуществления функций, описываемых как выполняемые ими. Кроме того, настоящее изобретение не ограничивается этими вариантами реализации, и изобретение заключается в каждом из новых признаков или комбинации признаков, описанных в данном документе или изложенных во взаимно отличающихся зависимых пунктах формулы изобретения.In the following, for purposes of understanding, the elements of the embodiments are described at run time. However, it is obvious that the respective elements are configured to perform the functions described as being performed by them. In addition, the present invention is not limited to these embodiments, and the invention lies in each of the new features or combination of features described herein or set forth in mutually different dependent claims.

Популярным механизмом проверки подлинности является комбинация имени пользователя и пароля, также известная как учетные данные пользователя. Как правило, учетные данные отправляют на сервер проверки подлинности для проверки. Когда злоумышленник получает учетные данные некоторого пользователя, то он в состоянии выдать себя за пользователя на сервере, т. е. злоумышленник может убедить сервер в том, что он является пользователем, у которого он украл учетные данные. К сожалению, на практике многие пользователи используют одни и те же пароли во многих приложениях. Поэтому злоумышленник в состоянии выдать себя за пользователя в большем количестве приложений, а не просто в одном приложении, взломанном им. A popular authentication mechanism is the username/password combination, also known as user credentials. Typically, credentials are sent to an authentication server for verification. When an attacker obtains the credentials of some user, he is able to impersonate a user on the server, i.e. the attacker can convince the server that he is the user from whom he stole the credentials. Unfortunately, in practice, many users use the same passwords in many applications. Therefore, an attacker is able to impersonate a user in more applications, and not just in one application that he hacked.

Проблема состоит в том, что злоумышленники в состоянии считывать память при вводе пользователем своих учетных данных. Эти атаки называют сканированием памяти. Существующие решения главным образом основаны на многофакторной проверке подлинности, где пользователь должен выполнить несколько шагов проверки подлинности предпочтительно на отдельных устройствах В результате, простого сканирования учетных данных недостаточно для того, чтобы злоумышленник выдал себя за пользователя на сервере, но, с другой стороны, пользователь утрачивает конфиденциальные данные (свой пароль, который он, вероятно, будет использовать в нескольких приложениях).The problem is that attackers are able to read the memory when the user enters their credentials. These attacks are called memory scans. Existing solutions are mainly based on multi-factor authentication, where the user must complete multiple authentication steps, preferably on separate devices As a result, a simple credential scan is not enough for an attacker to impersonate a user on the server, but on the other hand, the user loses sensitive data (his password, which he will probably use in several applications).

Возможное решение может заключаться в обеспечении того, чтобы пароль никогда не присутствовал в памяти. Например, можно сделать так, чтобы пользователь вводил последовательность чисел с использованием защищенной клавиатуры таким образом, чтобы утечка значения числа из-за известного местоположения нажатой кнопки была невозможной, а получаемое в результате нажатия кнопки значение было не открытым, а закодированным значением. A possible solution could be to ensure that the password is never present in memory. For example, you can have the user enter a sequence of numbers using a secure keyboard so that the value of the number cannot leak due to the known location of the button pressed, and the value resulting from the button press is not an open value, but an encoded value.

Эта защищенная клавиатура обеспечивает скрытие всей информации о пароле, например PIN, от сканировщика памяти. Данное решение исключит утечку конфиденциального личного пароля к такому злоумышленнику. Однако злоумышленник может просто отсканировать и повторно воспроизвести закодированный пароль серверу, чтобы все равно выдать себя за пользователя.This secure keypad ensures that all password information such as PIN is hidden from the memory scanner. This solution will exclude the leakage of a confidential personal password to such an attacker. However, an attacker could simply scan and replay the encoded password to the server to impersonate the user anyway.

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

Figure 00000001
пользователей и хэшей (имеющих соль, или иначе, модификатор входа хэш-функции) соответствующих паролей
Figure 00000002
. Когда сервер получает имя пользователя и пароль
Figure 00000003
, он вычисляет
Figure 00000004
и проверяет, справедливо ли
Figure 00000005
.To authenticate to the server, the client typically sends its credentials over a secure channel. The server then uses its database to check if the username/password combination matches. For example, the database contains combinations of names
Figure 00000001
users and hashes (having a salt, or otherwise, a hash function input modifier) of the corresponding passwords
Figure 00000002
. When the server receives the username and password
Figure 00000003
, it calculates
Figure 00000004
and checks if it's true
Figure 00000005
.

Если злоумышленник в состоянии атаковать сервер, то он может обнаружить базу данных, содержащую учетные данные (их производные) пользователя. Существуют хорошие решения для предотвращения получения злоумышленником конфиденциальных паролей из базы данных, такие как использование криптографических хэшей в предыдущем примере. Однако, когда злоумышленник в состоянии сканировать память активного сервера, то в большинстве ситуаций он увидит открытый пароль в памяти сервера. Ниже описаны варианты реализации, в которых используют гомоморфное шифрование для защиты строки проверки подлинности, например, пароля, во время проверки подлинности, как на клиентском устройстве, так и на серверном устройстве. If an attacker is able to attack the server, then he can find a database containing the credentials (their derivatives) of the user. There are good solutions to prevent an attacker from obtaining sensitive passwords from a database, such as the use of cryptographic hashes in the previous example. However, when an attacker is able to scan the active server's memory, in most situations he will see the public password in the server's memory. The following describes implementations that use homomorphic encryption to protect an authentication string, such as a password, during authentication, on both the client device and the server device.

На Фиг. 1 схематически показан пример варианта реализации системы 101 проверки подлинности. Система 101 проверки подлинности содержит клиентское устройство 200 и серверное устройство 100, которые выполнены с возможностью проверки клиентским устройством 200 подлинности пользователя клиентского устройства 200 для серверного устройства 100. Подлинность пользователя проверяют путем обеспечения знания им строки проверки подлинности. On FIG. 1 schematically shows an exemplary embodiment of an authentication system 101. The authentication system 101 includes a client device 200 and a server device 100 that are configured for client device 200 to authenticate a user of client device 200 to server device 100. The user is authenticated by ensuring that they know the authentication string.

Клиентское устройство 200 и серверное устройство 100 могут быть электронными устройствами, выполненными как варианты реализации настоящего изобретения. Клиентское устройство 200 содержит интерфейс 230 связи, выполненный с возможностью обмена данными с серверным устройством, и серверное устройство 100 содержит интерфейс связи 130. Эти интерфейсы связи выполнены с возможностью обмена данными друг с другом в цифровом формате, например, путем обмена цифровыми сообщениями, например, через вычислительную сеть. Например, компьютерная сеть может быть Интернетом, интрасетью, WLAN и т. д. Компьютерная сеть может быть Интернетом. Например, интерфейсы 130 и/или 230 связи могут быть проводными интерфейсами, например, портом Ethernet. Например, интерфейсы 130 и/или 230 могут быть беспроводными интерфейсами, например, интерфейсом Wi-Fi, например, содержащим антенну Wi-Fi. Client device 200 and server device 100 may be electronic devices implemented as embodiments of the present invention. The client device 200 includes a communication interface 230 configured to communicate with the server device, and the server device 100 includes a communication interface 130. These communication interfaces are configured to communicate with each other in a digital format, such as by exchanging digital messages, such as through a computer network. For example, a computer network may be the Internet, an intranet, a WLAN, etc. A computer network may be the Internet. For example, communication interfaces 130 and/or 230 may be wired interfaces, such as an Ethernet port. For example, interfaces 130 and/or 230 may be wireless interfaces, such as a Wi-Fi interface, such as containing a Wi-Fi antenna.

Клиентское устройство 200 и серверное устройство 100 взаимодействуют так, что клиентское устройство может проверять подлинность пользователя клиентского устройства 200 для серверного устройства 100. Например, серверное устройство 100 может быть сконфигурировано для некоторой услуги, для которой данный пользователь авторизован, а остальные пользователи нет. Например, сервер 100 может быть файловым севером, хранящим документы, к которым пользователь имеет доступ, сервером потоковой передачи, обеспечивающим доступ к ценному содержимому, веб-магазином, хранящим информацию о кредитной карте пользователя, и т. д.The client device 200 and the server device 100 cooperate such that the client device can authenticate the user of the client device 200 to the server device 100. For example, the server device 100 may be configured for some service for which the user is authorized and other users are not. For example, server 100 could be a file server that stores documents the user has access to, a streaming server that provides access to valuable content, a web store that stores the user's credit card information, and so on.

Каждое из клиентского устройства 200 и серверного устройства 100 содержат процессорную схему. Они также могут содержать память, содержащую инструкции компьютерной обработки. Процессорная схема выполнена с возможностью исполнения инструкций, хранящихся в памяти. Исполнение проверки подлинности реализуют в процессорной схеме, примеры которой показаны в настоящем документе. На Фиг. 1 показаны функциональные блоки, которые могут быть функциональными блоками процессорной схемы. Например, Фиг. 1 может быть использована в качестве примерного плана организации процессорной схемы. На Фиг. 1 процессорная схема не показана отдельно от блоков. Например, функциональные блоки, показанные на Фиг. 1, могут быть полностью или частично реализованы в компьютерных инструкциях, которые хранятся на устройстве 100 или 200, например, в электронной памяти устройства 100 или 200, и могут быть исполнены микропроцессором устройства 100 или 200. В гибридные вариантах реализации функциональные блоки реализуют частично в оборудовании, например, таком как сопроцессоры, например, криптопроцессоры, и частично в программном обеспечении, хранящемся и исполняемом на устройстве 100 или 200. The client device 200 and the server device 100 each contain a processor circuit. They may also contain memory containing computer processing instructions. The processor circuit is configured to execute instructions stored in the memory. The execution of the authentication is implemented in the processor scheme, examples of which are shown in this document. On FIG. 1 shows functional blocks that may be functional blocks of a processor circuit. For example, Fig. 1 can be used as an approximate plan for organizing a processor circuit. On FIG. 1, the processor circuit is not shown separately from the blocks. For example, the functional blocks shown in Fig. 1 may be wholly or partially implemented in computer instructions that are stored on device 100 or 200, such as in the electronic memory of device 100 or 200, and may be executed by the microprocessor of device 100 or 200. In hybrid implementations, the functional blocks are implemented partially in hardware. such as co-processors, such as crypto processors, and partly in software stored and executed on device 100 or 200.

Серверное устройство 100 выполнено с возможностью проверки подлинности пользователя с клиентского устройства 200. Пользователь имеет доступ к строке проверки подлинности. Строка проверки подлинности имеет множество символов в множестве позиций, причем символы выбирают из набора символов. Например, строка проверки подлинности может представлять собой PIN-код, в этом случае набор символов представляет собой числа {0, 1, 2, …, 9}. Например, строка проверки подлинности может представлять собой буквенно-цифровую строку, в этом случае набор символов может представлять собой{a, …, z, A, …, Z, 0, …, 9}. Кроме того, в соответствии с потребностями системы 101 проверки подлинности в набор символов могут быть добавлены один или более знаков пунктуации. The server device 100 is configured to authenticate the user from the client device 200. The user has access to the authentication string. The authentication string has a plurality of characters in a plurality of positions, the characters being selected from a character set. For example, the authentication string could be a PIN code, in which case the character set is the numbers {0, 1, 2, ..., 9}. For example, the authentication string may be an alphanumeric string, in which case the character set may be {a, ..., z, A, ..., Z, 0, ..., 9}. In addition, one or more punctuation characters may be added to the character set according to the needs of the authentication system 101.

Серверное устройство 100 содержит запоминающее устройство 110, выполненное с возможностью хранения первого проверочного числа, например, запоминающее устройство 110 для проверочных чисел. На фазе установки первое проверочное число было вычислено из строки проверки подлинности. Однако в варианте реализации знания первого проверочного числа недостаточно для получения строки проверки подлинности. Более того, первое проверочное число не может быть использовано само по себе для прохождения проверки подлинности на сервере 100. Другими словами, даже если злоумышленник получил бы первое проверочное число, это не помогло бы ему ни получить строку проверки подлинности, ни пройти проверку подлинности на сервере 100. Клиентское устройство 200 выполнено таким образом, что во время процесса проверки подлинности из строки проверки подлинности вычисляют второе проверочное число. Клиентское устройство 200 может выполнять это, т. к. пользователь предоставляет входные данные, основанные на знании строки проверки подлинности. Затем второе проверочное число отправляют на серверное устройство 100. Проверяют соответствие между первым и вторым проверочным числом, что, в свою очередь, подтверждает, что оба проверочных числа были вычислены из одной и той же строки проверки подлинности. Соответственно, устаналивается подлинность пользователя. The server device 100 includes a memory 110 configured to store the first parity number, such as a parity memory 110 . During the installation phase, the first verification number was calculated from the authentication string. However, in an implementation, knowing the first parity number is not sufficient to obtain an authentication string. Moreover, the first pass number cannot be used on its own to authenticate to server 100. In other words, even if the attacker were to obtain the first pass number, it would not help him either get the authentication string or authenticate to the server. 100. The client device 200 is configured such that during the authentication process, a second verification number is calculated from the authentication string. The client device 200 can do this because the user provides input based on knowledge of the authentication string. The second verification number is then sent to the server device 100. A match is checked between the first and second verification number, which in turn confirms that both verification numbers were calculated from the same authentication string. Accordingly, the user is authenticated.

Запоминающее устройство 110 для проверочных чисел может содержать множество проверочных чисел для множества пользователей. Например, проверочное число может быть связано с именем пользователя. Например, могут храниться пары из проверочного числа и имени пользователя. Взаимосвязь может быть установлена посредством производного от имени пользователя, например, хэша или хэша с солью, или модификатором входа хэш-функции. В этом случае хранилище 110 для проверочных чисел может хранить проверочное число вмести с производным. The parity memory 110 may contain a plurality of parity numbers for a plurality of users. For example, the verification number may be associated with a username. For example, pairs of a check number and a username can be stored. The relationship can be established by a user name derivative, such as a hash or a hash with a salt, or a hash function input modifier. In this case, the parity store 110 may store the parity along with the derivative.

На Фиг. 2 схематически показан пример варианта реализации возможных зависимостей данных. На этом чертеже поясняется возможная взаимосвязь между первым и вторым проверочными числами и строкой проверки подлинности. On FIG. 2 schematically shows an example of an implementation of possible data dependencies. This drawing explains the possible relationship between the first and second verification numbers and the authentication string.

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

Figure 00000006
существует функция
Figure 00000007
, такая что
Figure 00000008
Другими словами, шифрование суммы может быть вычислено из зашифрованных слагаемых, притом это может быть сделано без знания ключа шифрования. Некоторые схемы гомоморфного шифрования могут поддерживать умножение. Существуют также схемы гомоморфного шифрования, которые поддерживают более одной операции, например сложение и умножение. Хотя такие схемы могут быть использованы в варианте реализации, такие сложные типы гомоморфного шифрования не требуются, поскольку нужна только одна операция. Примеры схем гомоморфного шифрования: Ривеста-Шамира-Адлемана (Rivest, Shamir, Adleman, RSA) (без заполнения), Эль-Гамаля (ElGamal), Гольдвасера-Микали (Goldwasser-Micali), Бенало (Benaloh), Пэйе (Paillier) и т. д. Например, числа могут быть выбраны из группы целых чисел по модулю простого числа. Другими примерами являются эллиптические кривые, сформированные некоторым генератором. Группа обратимых чисел по модулю составного числа и т. д.On FIG. 2 shows a set 310 of character/position data. Set 310 contains a number for each combination of a character from the character set and a position in the authentication string. The character/position data can be secret, but it doesn't have to be; it can be open data. Typically, the numbers are selected from a finite group, ring, or field, such as those used in the applied homomorphic encryption scheme. The homomorphic encryption scheme allows you to encrypt data, such as numbers, for example, in a group. In addition, there is at least one binary operation that can be performed on encrypted numbers. For example, a homomorphic encryption scheme that supports addition allows the sum of a set of numbers to be computed during encryption. For example, for such encryption
Figure 00000006
there is a function
Figure 00000007
, such that
Figure 00000008
In other words, the encryption of the sum can be calculated from the encrypted terms, and this can be done without knowing the encryption key. Some homomorphic encryption schemes may support multiplication. There are also homomorphic encryption schemes that support more than one operation, such as addition and multiplication. Although such schemes may be used in an implementation, such complex types of homomorphic encryption are not required since only one operation is needed. Examples of homomorphic encryption schemes: Rivest, Shamir, Adleman, RSA (no padding), ElGamal, Goldwasser-Micali, Benaloh, Paillier, and etc. For example, numbers can be chosen from the group of integers modulo a prime number. Other examples are elliptic curves generated by some generator. The group of invertible numbers modulo a composite number, etc.

На Фиг. 3 схематически показан пример варианта реализации данных символа/позиции. Показаны множество позиций 410. Строка проверки подлинности может быть получена путем выбора символа из набора 420 символов для каждой позиции строки проверки подлинности. Для каждой комбинации позиции в множестве позиций 410 и для каждого символа в наборе 420 символов выбирают число символа/позиции. Если имеются n позиций и m возможных символов, то, как правило, существуют nm чисел символа/позиции. Некоторые комбинации могут быть опущены, но, как следствие, эти комбинации символа/позиции невозможны в строке проверки подлинности. On FIG. 3 schematically shows an example implementation of character/position data. A plurality of positions 410 are shown. An authentication string can be obtained by selecting a character from a set of 420 characters for each position of the authentication string. For each position combination in position set 410 and for each character in character set 420, the number of symbol/position is selected. If there are n positions and m possible characters, then there are typically nm character/position numbers. Some combinations can be omitted, but as a consequence, these character/position combinations are not possible in the authentication string.

В варианте реализации строка проверки подлинности может быть заданной длины или строка проверки подлинности может иметь любую длину, по меньшей мере 2, меньше некоторой максимальной длины. Однако использовать в строке проверки подлинности все позиции из множества позиций не требуется. Например, строки проверки подлинности разных длин могут поддерживаться за счет оставления открытыми некоторых позиций. В альтернативном варианте реализации количество данных символа/позиции можно уменьшить путем кодирования одного символа как пустой позиции. Строки проверки подлинности разных длин могут также поддерживаться путем включения символа заполнения в набор символов. Можно потребовать, чтобы строки проверки подлинности имели символов заполнения не более, чем строка идущих подряд символов в конце строки проверки подлинности. На Фиг. 3 показана одна комбинация из позиции и символа: число 430.In an embodiment, the authentication string may be of a given length, or the authentication string may be any length, at least 2 less than some maximum length. However, you do not need to use all positions from multiple positions in the authentication string. For example, authentication strings of different lengths can be supported by leaving some positions open. In an alternative implementation, the amount of character/position data can be reduced by encoding one character as an empty position. Authentication strings of different lengths can also be supported by including a fill character in the character set. You can require authentication strings to have no more than a string of consecutive characters at the end of the authentication string. On FIG. 3 shows one combination of position and symbol: the number 430.

В варианте реализации данные символа/позиции являются случайными числами. Использование случайных чисел означает небольшой риск наличия двух разных строк проверки подлинности, которые дают одни и те же проверочные числа. Соответственно, могут существовать множество строк проверки подлинности, которые будут приняты при проверке подлинности данного пользователя. Однако риск этого невелик, и альтернативные строки проверки подлинности неизвестны. Кроме того, риск можно уменьшить настолько, насколько требуется, например, путем выбора большей группы и т. д. для гомоморфного шифрования. In an embodiment, the character/position data is random numbers. Using random numbers means there is little risk of having two different authentication strings that produce the same verification numbers. Accordingly, there may be multiple authentication strings that will be accepted when authenticating a given user. However, the risk of this is low and alternative authentication strings are not known. In addition, the risk can be reduced as much as required, for example, by choosing a larger group, etc. for homomorphic encryption.

В варианте реализации набор 310 данных символа/позиции выбирают так, что любое подмножество дает отличный от других результат для операции, поддерживаемой гомоморфным шифрованием. Например, если гомоморфное шифрование поддерживает сложение, то набор 310 данных символа/позиции может быть выбран в виде значений, кратных степеням основания степени. Основание степени может быть выбрано в виде количества символов в наборе символов. Например, если поддерживаемой операцией является сложение, то этот выбор даст разные суммы для каждого подмножества. In an embodiment, the character/position data set 310 is chosen such that any subset yields a different result for an operation supported by homomorphic encryption. For example, if homomorphic encryption supports addition, then the character/position data set 310 may be selected as multiples of the base powers of the degree. The exponent base can be chosen as the number of characters in the character set. For example, if the supported operation is addition, then this choice will give different sums for each subset.

Например, если гомоморфное шифрование поддерживает умножение, то набор 310 данных символа/позиции может быть выбран в виде степеней, причем показатели степени являются значениями, кратными степеням основания степени. Основание степени может быть выбрано в виде количества символов в наборе символов. Например, если поддерживаемой операцией является умножение, то этот выбор даст разные произведения для каждого подмножества. Например, степени могут быть степенями генератора. Дополнительное преимущество выбора данных символа/позиции в виде степеней генератора заключается в том, что возведение в степень служит дополнительным уровнем шифрования. В частности, получить строку проверки подлинности из проверочного числа труднее, даже если оно неослепленное (см. ниже). For example, if homomorphic encryption supports multiplication, then the character/position dataset 310 may be selected in terms of powers, with the exponents being multiples of the base powers of the power. The exponent base can be chosen as the number of characters in the character set. For example, if the supported operation is multiplication, then this choice will give a different product for each subset. For example, powers can be powers of a generator. An additional benefit of selecting character/position data as generator exponents is that exponentiation serves as an additional layer of encryption. In particular, deriving an authentication string from a verification number is more difficult, even if it is not blinded (see below).

В варианте реализации числа символа/позиции меньше, чем размер группы. В варианте реализации числа символа/позиции являются степенями основания степени, например, генератора, а показатели степени меньше размера группы или порядка группы, формируемой генератором. В варианте реализации числа символа/позиции или показатели степени меньше порядка группы, деленного на размер набора символов.In an embodiment, the character/position number is less than the group size. In an embodiment, the character/position numbers are exponents of a power base, such as a generator, and the exponents are less than the group size or order of the group generated by the generator. In an embodiment, the character/position numbers or exponents are less than the order of the group divided by the size of the character set.

Данные символа/позиции могут быть открытыми, но необязательно. В частности, для повышенной защиты от криптографических атак данные символа/позиции могут быть закрытыми для клиентского устройства. Например, если данные символа/позиции являются случайными данными, злоумышленник, анализирующий данные, которыми обмениваются сервер и клиентское устройство, не сможет определить, каким данных символа/позиции соответствуют наблюдаемые данные. Один и тот же набор данных символа/позиции используют на фазе установки, а также во время каждой из последующих фаз проверки подлинности. Данные символа/позиции могут быть выбраны случайным образом для каждого пользователя, проверку подлинности которого поддерживает серверное устройство 100. The character/position data may be public, but does not have to be. In particular, for increased security against cryptographic attacks, the character/position data may be private to the client device. For example, if the character/position data is random data, an attacker analyzing the data exchanged between the server and the client device cannot determine which character/position data the observed data corresponds to. The same character/position data set is used during the setup phase as well as during each of the subsequent authentication phases. The character/position data may be randomly selected for each user whose authentication the server device 100 supports.

Строка 325 проверки подлинности определяет подмножество 320 набора 310 данных символа/позиции. В частности, в подмножество 320 включают числа символа/позиции, соответствующие символам, фактически используемым в разных позициях строки проверки подлинности. Из подмножества 320 выводят первое проверочное число 340. The authentication string 325 defines a subset 320 of the character/position data set 310 . In particular, the subset 320 includes character/position numbers corresponding to the characters actually used in the different positions of the authentication string. From the subset 320, the first check number 340 is output.

Например, первое проверочное число может быть получено из подмножества 320 путем выполнения операции, поддерживаемой гомоморфным шифрованием, например умножения. Для дополнительной безопасности этот результат может быть ослеплен. Например, первое неослепленное проверочное число 330 может быть получено из подмножества 320 путем выполнения поддерживаемой операции, например, умножения чисел в подмножестве. Далее, первое неослепленное проверочное число 330 может быть ослеплено с помощью ослепляющего числа 340. Последнее является (ослепленным) первым проверочным числом 340. Например, для включения ослепляющего числа может быть использована поддерживаемая операция: например, ослепляющее число может быть сложено с первым неослепленным проверочным числом 340 или умножено на него. Ослепляющее число является необязательным. В отсутствии ослепляющего числа злоумышленник, который получает первое неослепленное проверочное число 330, может запустить атаку перебором по словарю, чтобы определить строку проверки подлинности. Ослепляющее число сокращает информацию, которую содержит неослепленное проверочное число 330 о строке 325 проверки подлинности, например, возможно, сокращает ее до нуля. Далее будем считать, что первое проверочное число является ослепленным, но это необязательно. Ослепляющее число может быть случайным числом, например, сформированным генератором случайных чисел.For example, the first parity number can be obtained from subset 320 by performing an operation supported by homomorphic encryption, such as a multiplication. For added security, this result can be blinded. For example, the first unblinded parity number 330 can be obtained from the subset 320 by performing a supported operation, such as multiplying the numbers in the subset. Further, the first non-blinded parity number 330 can be blinded with the blinding number 340. The latter is the (blinded) first parity number 340. For example, a supported operation can be used to enable the blinding number: for example, the blinding number can be added to the first non-blinded parity number 340 or multiplied by it. The blinding number is optional. In the absence of a blinding number, an attacker who obtains the first unblinded verification number of 330 can launch a dictionary attack to determine the authentication string. The blinding number reduces the information that the non-blinded check number 330 contains about the authentication string 325, perhaps reducing it to zero, for example. Further, we will assume that the first check number is blinded, but this is not necessary. The blinding number may be a random number, such as generated by a random number generator.

Следует отметить, что на фазе проверки подлинности серверному устройству не требуются ни строка 325 проверки подлинности, ни неослепленное проверочное число 330, ни ослепляющее число 345. Например, серверное устройство может вычислять первое проверочное число 340 на фазе установки, а затем удалять ненужную информацию. Например, серверное устройство может принимать первое проверочное число 340 на фазе установки, например, от клиентского устройства или от доверенной третьей стороны. На фазе проверки подлинности серверному устройству нужны данные 310 символа/позиции и первое проверочное число, будь то ослепленное или нет. Если данные 310 символа/позиции не являются случайными, они могут быть вычислены при необходимости, а не храниться. It should be noted that neither the authentication string 325, nor the unblinded verification number 330, nor the blind number 345 is required in the authentication phase by the server device. For example, the server device may receive the first parity 340 during the setup phase, for example, from a client device or from a trusted third party. In the authentication phase, the server device needs the character/position data 310 and the first verification number, whether blinded or not. If the character/position data 310 is not random, it can be computed as needed rather than stored.

Серверное устройство 100 содержит блок 120 шифрования. Блок 120 шифрования выполнен с возможностью шифрования набора 310 данных символа/позиции в соответствии с алгоритмом гомоморфного шифрования. Шифрование выполняется на поэлементной основе. На Фиг. 3 это показано в виде зашифрованного набора 350. Во время проверки подлинности зашифрованный набор 350 отправляют клиентскому устройству 200. Во избежание повторного воспроизведения предпочтительно, чтобы результат этого шифрования был разным для разных проверок подлинности. Например, это можно обеспечить путем использования разного ключа при каждом шифровании набора 310, например, путем выбора случайного ключа. Например, это можно обеспечить путем выбора схемы вероятностного шифрования (или и того, и другого). Например, схема шифрования может быть шифрованием Эль-Гамаля, которое является схемой гомоморфного и вероятностного шифрования. Server device 100 contains block 120 encryption. Encryption unit 120 is configured to encrypt character/position data set 310 in accordance with a homomorphic encryption algorithm. Encryption is performed on an element-by-element basis. On FIG. 3, this is shown as an encrypted set 350. During authentication, the encrypted set 350 is sent to the client device 200. In order to avoid replay, it is preferable that the result of this encryption be different for different authentications. For example, this can be achieved by using a different key each time the suite 310 is encrypted, such as by choosing a random key. For example, this can be achieved by choosing a probabilistic encryption scheme (or both). For example, the encryption scheme may be ElGamal encryption, which is a homomorphic and probabilistic encryption scheme.

Клиентское устройство 200 содержит блок 240 гомоморфного вычисления. Блок 240 гомоморфного вычисления выполнен с возможностью вычисления зашифрованного второго проверочного числа из подмножества 360 зашифрованного набора 350 данных символа/позиции. Зашифрованный набор 350 принимают от серверного устройства 100. Например, пользователь клиентского устройства 200 может выбирать подмножество 360 принятого набора 350 на основе своего знания строки 326 проверки подлинности. Если строка 325 проверки подлинности и строка 326 проверки подлинности одинаковые, то подмножество 360 является тем же самым, что и подмножество 320, с тем отличием, что подмножество 360 зашифровано, а подмножество 320 нет. Например, принятый набор 350 может содержат указание на то, какое зашифрованное число символа/позиции соответствует какому символу/позиции. Например, набор 350 может быть сортированным. Например, пользователь может ввести строку проверки подлинности на пользовательском интерфейсе 220 клиентского устройства 200, например, на клавиатуре сенсорного экрана и т. д., чтобы выбрать подмножество 360.The client device 200 includes a homomorphic calculation unit 240 . The homomorphic calculation unit 240 is configured to calculate an encrypted second parity number from a subset 360 of the encrypted character/position data set 350 . The encrypted set 350 is received from the server device 100. For example, a user of the client device 200 may select a subset 360 of the received set 350 based on their knowledge of the authentication string 326 . If authentication string 325 and authentication string 326 are the same, then subset 360 is the same as subset 320, with the difference that subset 360 is encrypted and subset 320 is not. For example, the received set 350 may contain an indication of which character/position encrypted number corresponds to which character/position. For example, set 350 may be sorted. For example, a user may enter an authentication string on the user interface 220 of the client device 200, such as on a touch screen keyboard, etc., to select a subset 360.

Данное указание может быть машиночитаемым или не машиночитаемым. Недостатком указания машиночитаемым образом, какое зашифрованное число символа/позиции в наборе 350 соответствует какому символу/позиции, является то, что клиентское устройство 200 может стать пригодным для сканирования, даже если серверное устройство 100 не является таковым. Целесообразно избегать атак на сервере 100, поскольку атака на сервере 100, как правило, означает, что многие строки проверки подлинности скомпрометированы или взломаны. Поскольку строку проверки подлинности часто используют повторно, это может иметь тяжелые последствия для безопасности. Ниже представлено решение, которое также уменьшает риск атаки на клиентском устройстве 200.This indication may or may not be machine readable. The disadvantage of specifying in a machine-readable manner which character/position cipher number in set 350 corresponds to which character/position is that client device 200 may become scannable even if server device 100 is not. It is advisable to avoid attacks on server 100 because an attack on server 100 typically means that many of the authentication strings are compromised or compromised. Because the authentication string is often reused, this can have severe security implications. Below is a solution that also reduces the risk of an attack on the client device 200.

Блок 240 гомоморфного вычисления выполнен с возможностью гомоморфного вычисления зашифрованного второго проверочного числа из подмножества зашифрованного набора данных символа/позиции. Например, блок 240 гомоморфного вычисления может выполнять то же самое вычисление, которое выполняют на наборе 320 для получения числа 330, с той разницей, что блок 240 гомоморфного вычисления выполняет вычисление на зашифрованных данных. Второе проверочное число 370 является зашифрованным, но неослепленным. The homomorphic calculation unit 240 is configured to homomorphically calculate an encrypted second parity number from a subset of the encrypted character/position data set. For example, homomorphic compute unit 240 may perform the same computation that is performed on set 320 to obtain the number 330, with the difference that homomorphic compute unit 240 performs the computation on encrypted data. The second check number 370 is encrypted but not blinded.

В случае использования ослепления блок 240 гомоморфного вычисления может быть выполнен с возможностью ослепления зашифрованного второго проверочного числа с помощью ослепляющего числа 346. Если блок 240 гомоморфного вычисления выполняет то же самое вычисление и ослепление (хотя и на зашифрованных данных) и использует то же самое ослепляющее число (но зашифрованное), то второе проверочное число 380 является тем же самым, что и первое проверочное число 340, хотя и зашифрованное. In the case of blinding, homomorphic compute unit 240 can be configured to blind the encrypted second parity number with blind number 346. If homomorphic compute unit 240 performs the same computation and blinding (albeit on encrypted data) and uses the same blinding number (but encrypted), then the second parity number 380 is the same as the first parity number 340, albeit encrypted.

Существуют несколько способов получения зашифрованного ослепляющего числа клиентским устройством 200. Например, зашифрованное ослепляющее число может быть получено на фазе установки, зашифрованным для каждого ключа, который будет использован на фазе проверки подлинности. Зашифрованные ослепляющие числа могут быть в запоминающем устройстве устройства 200. В этом случае во время проверки подлинности могут быть использованы один и тот же ключ или ограниченное количество ключей. В альтернативном варианте реализации схема шифрования может быть схемой шифрования с открытым/закрытым ключом. Клиентское устройство 200 может принимать открытый ключ, который также используется для шифрования набора 310 для получения набора 350. В этом случае блок 240 гомоморфного шифрования может шифровать само ослепляющее число. Ослепляющее число может быть получено от пользователя или из хранилища 250 клиентского устройства 200. There are several ways in which the client device 200 can obtain the encrypted blinding number. For example, the encrypted blinding number can be obtained in the setup phase, encrypted for each key that will be used in the authentication phase. The encrypted blinding numbers may be in the memory of the device 200. In this case, the same key or a limited number of keys may be used during authentication. In an alternative implementation, the encryption scheme may be a public/private key encryption scheme. Client device 200 may receive a public key that is also used to encrypt set 310 to obtain set 350. In this case, homomorphic cipher 240 may encrypt the blinding number itself. The blinding number may be obtained from the user or from the storage 250 of the client device 200.

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

Figure 00000009
является неослепленным проверочным числом, то блок гомоморфного шифрования может вычислять
Figure 00000010
,
Figure 00000011
или
Figure 00000012
и т. д. для константы
Figure 00000013
и
Figure 00000014
. Эти числа могут быть ослеплены с помощью ослепляющего числа либо до, либо после дополнительного вычисления. Например, блок 240 гомоморфного шифрования может вычислять
Figure 00000015
, а блок 140 сравнения может проверять, что второе проверочное число в
Figure 00000016
раз больше первого проверочного числа.The second parity number, whether it be the unblinded number 370 or the blinded number 380, is sent to the server device 100. The server device 100 includes a comparator 140 . The comparison unit 140 is configured to check the correspondence between the first check number and the encrypted second check number for user authentication. For example, if client device 200 performs the same calculation as server device 100 (but on encrypted data), then comparator 140 may be configured to decrypt the second parity to compare it to the first parity for equality. This is optional, although, for example, homomorphic cipher 240 may be configured to compute a different number, eg, homomorphic cipher 240 may be configured to compute twice the first parity number or add a constant to it. More generally, if
Figure 00000009
is an unblinded check number, then the homomorphic cipher block can compute
Figure 00000010
,
Figure 00000011
or
Figure 00000012
etc. for a constant
Figure 00000013
and
Figure 00000014
. These numbers can be blinded with a blinding number either before or after additional calculation. For example, block 240 homomorphic encryption can calculate
Figure 00000015
, and the comparator 140 can check that the second parity in
Figure 00000016
times the first check number.

Как указано выше, вышеприведенный вариант реализации защищает от сканирования на сервере, но сканирование на клиентском устройство возможно. В варианте реализации предложена дополнительная необязательная защита следующим образом. В варианте реализации серверное устройство 100 содержит генератор 150 перестановки и блок 160 отображения данных. Генератор 150 перестановки выполнен с возможностью перестановки набора символов. Генератор 150 перестановки может формировать перестановку для каждой позиции, но может также формировать меньше перестановок, чем количество позиций, в этом случае некоторые перестановки используют повторно. Например, некоторая перестановка может быть использована для каждой позиции. Предпочтительно по меньшей мере для каждой проверки подлинности формируют новую перестановку. Серверное устройство 100 может содержать генератор случайных чисел для формирования данных символа/позиции и/или перестановки.As stated above, the implementation above protects against server-side scanning, but client-side scanning is possible. In an embodiment, additional optional protection is proposed as follows. In an embodiment, the server device 100 includes a permutation generator 150 and a data display unit 160 . The permutation generator 150 is configured to permutate the character set. The permutation generator 150 may generate a per-position per permutation, but may also generate fewer permutations than the number of positions, in which case some of the permutations are reused. For example, some permutation may be used for each position. Preferably, a new permutation is generated for at least each authentication. Server device 100 may include a random number generator to generate character/position and/or permutation data.

Блок 160 отображения данных выполнен с возможностью получения данных отображения для символов в наборе символов. Данные отображения изображают символы из набора символов, но в непригодном для машинного считывания виде. В варианте реализации данные отображения извлекают из хранилища данных отображения или извлекают из внешнего устройства генератора данных отображения. Данные отображения могут быть также сформированы на серверном устройстве 100. Формирование данных изображения как таковое известно. Например, известны алгоритмы для формирования так называемой капчи (полностью автоматизированный публичный тест Тьюринга, позволяющий различать компьютеры и людей - Completely Automated Public Turing test to tell Computers and Humans Apart, CAPTCHA). Например, для каждой позиции получают отличный от других набор данных отображения. Может быть сформировано меньше наборов данных отображения, чем количество позиций, в этом случае некоторые данные отображения используют повторно. Например, некоторые данные отображения могут быть использованы для всех позиций. Для каждой проверки подлинности даже не требуется использовать разные данные отображения. В этом случае клиентское устройство кэширует данные отображения, подлежащие использованию при последующей проверке подлинности. Данные отображения потребляют относительно много данных, которые уменьшают за счет кэширования. Данные отображения могут быть изображением, например, для каждого символа может быть изображение. Данные отображения могут быть кинофрагментом. Например, фильм таков, что человек распознает символ из изображения или видеоклипа, а компьютер не может. По меньшей мере необходимость анализа изображений или клипов злоумышленником делает атаки более подверженными ошибкам, менее автоматизируемыми и более ресурсоемкими. Таким образом, злоумышленнику становится труднее распространять атаки на многих пользователей вместо нескольких выбранных пользователей. Например, данные отображения могут быть в формате jpg, png и т. д. или mp4, avi и т. д.The data mapper 160 is configured to obtain display data for characters in the character set. The mapping data depicts characters from the character set, but in a machine-readable form. In an embodiment, the display data is retrieved from the display data store or retrieved from an external device of the display data generator. The display data may also be generated on the server device 100. Image data generation is known as such . For example, algorithms are known for generating the so-called CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart, CAPTCHA). For example, a different display data set is obtained for each position. Fewer display data sets than the number of positions may be generated, in which case some of the display data is reused. For example, some display data may be used for all positions. You don't even need to use different mapping data for each authentication. In this case, the client device caches display data to be used in subsequent authentication. Display data consumes a relatively large amount of data, which is reduced by caching. The display data may be an image, for example, there may be an image for each character. The display data may be a movie. For example, a movie is such that a human can recognize a character from an image or video clip, but a computer cannot. At the very least, the need for an attacker to analyze images or clips makes attacks more error-prone, less automated, and more resource-intensive. Thus, it becomes more difficult for an attacker to spread attacks to many users instead of a few selected users. For example, display data can be in jpg, png, etc. or mp4, avi, etc. format.

Данные отображения отправляют клиентскому устройству 200 вместе с набором 350 зашифрованных данных символа/позиции. Данные отображения могут быть отправлены в переставленном порядке, но связанном с правильными данными символа/позиции. На Фиг. 4 показана перестановка 500 набора символов, используемого для PIN-кодов. То же самое можно сделать с более крупными наборами символов. Перестановка 500 может указывать порядок, в котором данные отображения для символов в наборе символов отправляют клиентскому устройству 200. Данные 510 отображения также показаны на Фиг. 4. Показанные данные 510 отображения представляют собой символы в наборе символов, но в непригодном для машинного считывания виде, в порядке, который указан в перестановке. В этом случае данные отображения формируют путем выбора случайного шрифта и наложения двух черных полосок в случайной ориентации. Вместо этого может быть использован любой способ формирования непригодных для машинного считывания данных, который известен в данной области техники. Ниже показаны данные отображения, соответствующие зашифрованным данным 520-529 символа/позиции, соответствующим символу. Например, если данные 510 отображения формируют для первой позиции, то данные 520-529 символа/позиции являются данными символа/позиции для комбинации из символа в наборе символов и первой позиции. Для следующей позиции используют новые данные символа/позиции, а также, необязательно, новую перестановку и/или новый набор отображения. В более защищенном варианте реализации каждая позиция имеет свои собственные данные символа/позиции, набор отображения и перестановку. The mapping data is sent to the client device 200 along with a set of encrypted character/position data 350 . The mapping data may be sent in a permuted order, but associated with the correct character/position data. On FIG. 4 shows a permutation 500 of the character set used for PIN codes. The same can be done with larger character sets. Permutation 500 may indicate the order in which display data for characters in the character set is sent to client device 200. Display data 510 is also shown in FIG. 4. The displayed mapping data 510 is the characters in the character set, but in a non-machine readable form, in the order indicated in the permutation. In this case, display data is generated by selecting a random font and superimposing two black stripes in a random orientation. Instead, any method of generating unreadable data that is known in the art can be used. The display data corresponding to the encrypted character/position data 520-529 corresponding to the character is shown below. For example, if mapping data 510 is generated for the first position, then character/position data 520-529 is character/position data for a combination of a character in the character set and the first position. For the next position, the new character/position data is used, and optionally a new permutation and/or a new display set. In a more secure implementation, each position has its own character/position data, display set, and permutation.

Клиентское устройство 200 выполнено с возможностью приема данных отображения от серверного устройства, связанного с зашифрованными данными символа/позиции. Клиентское устройство 200 содержит дисплей 210. Дисплей 210 выполнен с возможностью отображения принятых данных отображения для каждой позиции. После отображения данных отображения для конкретной позиции пользователь может выбрать правильный символ, соответствующий данной позиции в строке проверки подлинности. При выборе данных отображения связанные зашифрованные символ/позиция тоже выбираются для подмножества 360. Например, если первый символ строки проверки подлинности представляет собой 9, то пользователь может выбрать данные 511 отображения, и зашифрованные данные 521 символа/позиции добавятся в подмножество 361. Таким образом, пользователь выбирает правильные данные символа/позиции, и это при том, что злоумышленник не знает, что они представляют: данные символа/позиции зашифрованы и соответствуют изображению не дисплее, которое не является машиночитаемым. The client device 200 is configured to receive display data from the server device associated with the encrypted character/position data. The client device 200 includes a display 210. The display 210 is configured to display the received display data for each item. After displaying the mapping data for a particular position, the user can select the correct character corresponding to that position in the authentication string. When selecting display data, the associated encrypted character/position data is also selected for subset 360. For example, if the first character of the authentication string is 9, then the user can select display data 511, and encrypted character/position data 521 is added to subset 361. Thus, the user selects the correct character/position data, and this without the attacker knowing what it represents: the character/position data is encrypted and corresponds to an image on the display that is not machine-readable.

Например, клиентское устройство 200 может быть выполнено в соответствии со следующим псевдокодом.For example, client device 200 may be implemented in accordance with the following pseudocode.

Для каждой позиции в строке проверки подлинности выполнить следующее:For each position in the authentication string, do the following:

Отобразить данные отображения, которые приняты для позицииDisplay the mapping data that is accepted for the position

Принять выбор пользователя для отображаемых данных отображенияAccept user selection for display data to display

Добавить зашифрованные данные символа/позиции для позиции и выбранный символ в подмножество 360.Add encrypted character/position data for the position and the selected character to subset 360.

Различные варианты реализации устройств 100 и 200 могут содержать входной интерфейс, который может быть выбран из различных архитектур. Например, входной интерфейс может быть клавиатурой, сенсорным экраном, мышью и т. д. Посредством входного интерфейса могут быть выбраны данные отображения. Various implementations of devices 100 and 200 may include an input interface that may be selected from various architectures. For example, the input interface may be a keyboard, touch screen, mouse, etc. Display data may be selected via the input interface.

Запоминающие устройство, такие как запоминающее устройство 110 и 250, могут быть реализованы как электронная память, например флэш-память, или магнитная память, например жесткий диск и т. п. Запоминающее устройство 110 или 250 может содержать множество дискретных памятей, вместе составляющих запоминающее устройство. Запоминающее устройство может быть также реализовано как локальное запоминающее устройство или внешнее запоминающее устройство, например облачное запоминающее устройство. В последнем случае устройство содержит блок считывания и записи для считывания и записи на внешнее запоминающее устройство, например, через сетевое соединение. Например, часть запоминающего устройства может быть защищенным запоминающим устройством, а остальная часть может быть обычным запоминающим устройством. Запоминающее устройство также может содержать временную память, например, ОЗУ. Storage devices, such as storage device 110 and 250, may be implemented as electronic memory, such as flash memory, or magnetic memory, such as a hard disk drive, etc. Storage device 110 or 250 may include a plurality of discrete memories that together constitute a storage device . The storage device may also be implemented as a local storage device or an external storage device such as a cloud storage device. In the latter case, the device comprises a reader and writer for reading from and writing to an external storage device, for example via a network connection. For example, part of the storage device may be a secure storage device and the remainder may be a conventional storage device. The storage device may also contain temporary memory, such as RAM.

Как правило, каждое из устройств 100 и 200 содержит микропроцессор (не показан отдельно), который исполняет надлежащее программное обеспечение на устройствах 100 и 200; например, это программное обеспечение могло быть загружено и/или сохранено в соответствующей памяти, например, энергозависимой памяти, такой как ОЗУ, или энергонезависимой памяти, такой как флэш-память (не показана отдельно). В альтернативном варианте реализации устройства 100 и 200 полностью или частично реализованы в программируемой логике, например, такой как программируемая пользователем вентильная матрица (Field-Programmable Gate Array, FPGA). Устройства 100 и 200 могут быть реализованы, полностью или частично, в виде так называемой специализированной интегральной схемы (ASIC), т. е. интегральной схемы (ИС), изготовленной на заказ для ее конкретного применения. Например, схемы могут быть реализованы в КМОП, например, с использованием языка описания аппаратных средств, такого как Verilog, VHDL и т. д.Typically, each of the devices 100 and 200 contains a microprocessor (not shown separately) that runs the appropriate software on the devices 100 and 200; for example, this software may have been loaded and/or stored in appropriate memory, such as volatile memory such as RAM or non-volatile memory such as flash memory (not shown separately). In an alternative implementation, the devices 100 and 200 are fully or partially implemented in programmable logic, such as, for example, a field-programmable gate array (FPGA). Devices 100 and 200 may be implemented, in whole or in part, in the form of a so-called application-specific integrated circuit (ASIC), ie, an integrated circuit (IC) custom-made for its particular application. For example, the circuits may be implemented in CMOS, for example using a hardware description language such as Verilog, VHDL, etc.

В варианте реализации устройства 100 и 200 могут содержать одну или более схем. Схемы реализуют соответствующие блоки, описанные в настоящем документе. Схемы могут быть процессорной схемой и схемой хранения, причем процессорная схема исполняет инструкции, представленные в электронном виде в схемах хранения. In an embodiment, devices 100 and 200 may comprise one or more circuits. The circuits implement the corresponding blocks described in this document. The circuits may be a processor circuit and a storage circuit, where the processor circuit executes instructions electronically represented in the storage circuits.

Процессорная схема может быть выполнена распределенной, например, в виде нескольких схем подпроцессоров. Запоминающее устройство может быть распределенным по множеству распределенных запоминающих подустройств. Частично или полностью память может быть электронной памятью, магнитной памятью и т. д. Например, запоминающее устройством может иметь энергозависимую и энергонезависимую часть. Часть запоминающего устройства может быть предназначена только для чтения.The processor circuit can be distributed, for example, in the form of several subprocessor circuits. The storage device may be distributed across a plurality of distributed storage subdevices. Some or all of the memory may be electronic memory, magnetic memory, etc. For example, a storage device may have a volatile part and a non-volatile part. Part of the storage device may be read-only.

На Фиг. 5 схематически показан пример варианта реализации способа 500 для сервера и способа 600 для клиента. On FIG. 5 schematically shows an exemplary embodiment of a method 500 for a server and a method 600 for a client.

Способ 600 для сервера выполнен с возможностью проверки пользователя с клиентского устройства, например, клиентского устройства 200, причем пользователь имеет доступ к строке проверки подлинности. Строка проверки подлинности имеет множество символов в множестве позиций, причем символы выбирают из набора символов. Способ 600 для сервера включает: Method 600 for the server is configured to authenticate a user from a client device, such as client device 200, where the user has access to an authentication string. The authentication string has a plurality of characters in a plurality of positions, the characters being selected from a character set. Method 600 for the server includes:

- сохранение (610) первого проверочного числа, вычисленного из подмножества набора данных символа/позиции, причем упомянутое подмножество указано строкой проверки подлинности, а набор данных символа/позиции содержит число для каждой комбинации из символа из набора символов и позиции в строке проверки подлинности,- storing (610) a first parity number calculated from a subset of the character/position data set, said subset being indicated by an authentication string, and the character/position data set containing a number for each combination of a character from the character set and a position in the authentication string,

- шифрование (620) набора данных символа/позиции в соответствии с алгоритмом гомоморфного шифрования и отправку зашифрованного набора клиентскому устройству, - encrypting (620) the character/position data set in accordance with the homomorphic encryption algorithm and sending the encrypted set to the client device,

- прием (630) от клиентского устройства второго проверочного числа, получаемого гомоморфным вычислением зашифрованного второго проверочного числа из подмножества зашифрованного набора, при этом подмножество указывают посредством упомянутой строки проверки подлинности, и- receiving (630) from the client device a second verification number obtained by homomorphic calculation of an encrypted second verification number from a subset of the encrypted set, wherein the subset is indicated by said authentication string, and

- проверку (640) соответствия между первым проверочным числом и зашифрованным вторым проверочным числом для проверки подлинности пользователя.- checking (640) the correspondence between the first check number and the encrypted second check number to authenticate the user.

Способ 700 для клиента выполнен с возможностью проверки подлинности пользователя для серверного устройства, например серверном устройстве 100. Пользователь имеет доступ к строке проверки подлинности. Строка проверки подлинности имеет множество символов в множестве позиций, причем символы выбирают из набора символов. Способ 700 для клиента включает:Method 700 for a client is configured to authenticate a user to a server device, such as server device 100. The user has access to an authentication string. The authentication string has a plurality of characters in a plurality of positions, the characters being selected from a character set. Method 700 for a client includes:

- прием (710) набора данных символа/позиции, зашифрованных в соответствии с алгоритмом гомоморфного шифрования, причем зашифрованный набор данных символа/позиции содержит число для каждой комбинации из символа из набора символов и позиции в строке проверки подлинности,- receiving (710) a character/position data set encrypted in accordance with the homomorphic encryption algorithm, wherein the encrypted character/position data set contains a number for each combination of a character from the character set and a position in the authentication string,

- гомоморфное вычисление (720) зашифрованного второго проверочного числа из подмножества зашифрованного набора данных символа/позиции, причем подмножество указывают посредством упомянутой строки проверки подлинности, - homomorphic calculation (720) of the encrypted second parity number from a subset of the encrypted character/position dataset, the subset being indicated by said authentication string,

- отправку (730) зашифрованного второго проверочного числа серверному устройству. - sending (730) the encrypted second verification number to the server device.

Способы 600 и 700 могут включать дополнительные операции. В частности, они могут включать получение, отображение и выбор данных отображения для набора символов. Зависимости между двумя способами указаны пунктирными стрелками. Methods 600 and 700 may include additional steps. In particular, they may include obtaining, displaying, and selecting display data for a character set. Dependencies between the two methods are indicated by dotted arrows.

Как очевидно специалисту в данной области, возможны множество разных путей исполнения этих способов. Например, порядок этапов может быть изменен или некоторые этапы могут быть исполнены параллельно. Кроме того, между этапами могут быть вставлены другие этапы способа. Вставленные этапы могут представлять собой усовершенствования способа, такие как описанные в настоящем документе, или могут не иметь отношения к способу. Например, некоторые этапы могут быть исполнены, по меньшей мере частично, параллельно. Кроме того, данный этап может быть не завершен полностью до начала следующего этапа. As one of skill in the art will appreciate, many different ways of performing these methods are possible. For example, the order of the steps may be changed, or some steps may be executed in parallel. In addition, other method steps may be inserted between the steps. The inserted steps may be improvements to the method, such as those described herein, or may not be relevant to the method. For example, some steps may be executed, at least in part, in parallel. In addition, this stage may not be fully completed before the start of the next stage.

Способ согласно настоящему изобретению может быть исполнен с использованием программного обеспечения, которое содержит инструкции для вызова выполнения процессорной системой способов 600 или 700. Программное обеспечение может содержать только те этапы, которые предпринимаются компонентом системы. Программное обеспечение может храниться на подходящем носителе информации, таком как жесткий диск, гибкий диск, память, оптический диск и т. д. Программное обеспечение может быть отправлено в виде сигнала по проводу или без провода либо с использованием сети данных, например Интернета. Программное обеспечение может быть доступно для загрузки и/или удаленного использования на сервере. Способ согласно настоящему изобретению может быть исполнен с использованием битового потока, выполненного с возможностью конфигурирования программируемой логики, например, программируемой пользователем вентильной матрицы (FPGA), для осуществления способа. The method of the present invention may be executed using software that contains instructions for causing the processor system to execute methods 600 or 700. The software may contain only those steps that are undertaken by a system component. The software may be stored on a suitable storage medium such as a hard disk, floppy disk, memory, optical disk, etc. The software may be sent as a signal over or without wire, or using a data network such as the Internet. The software may be available for download and/or remote use on a server. The method of the present invention may be executed using a bitstream capable of configuring programmable logic, such as a field programmable gate array (FPGA), to implement the method.

Как может быть понятно, изобретение также распространяется на компьютерные программы, в частности, на компьютерные программы на носителе, выполненном с возможность воплощения изобретения на практике, или в нем. Программа может быть в виде исходного кода, объектного кода, промежуточного источника кода и объектного кода, например, в частично компилированном виде или любом ином виде, пригодном для использования в реализации способа согласно настоящему изобретению. Вариант реализации, относящийся к компьютерному программному продукту, содержит выполненные с возможность исполнения инструкции, соответствующие каждому из этапов обработки по меньшей мере одного из изложенных способов. Эти инструкции могут подразделяться на подпрограммы и/или храниться в одном или более файлах, которые могут быть связаны статически или динамически. Другой вариант реализации, относящийся к компьютерному программному продукту, содержит выполненные с возможность исполнения инструкции, соответствующие каждому из средств по меньшей мере одной из описанных систем и/или продуктов.As may be understood, the invention also extends to computer programs, in particular to computer programs on or in a carrier capable of practicing the invention. The program may be in source code, object code, intermediate source code, and object code, such as partially compiled form, or any other form suitable for use in implementing the method of the present invention. An embodiment relating to a computer program product comprises executable instructions corresponding to each of the processing steps of at least one of the methods set forth. These instructions may be subdivided into subroutines and/or stored in one or more files, which may be linked statically or dynamically. Another embodiment related to a computer program product comprises executable instructions corresponding to each of the means of at least one of the described systems and/or products.

Как описано выше, механизм проверки подлинности, основанный на имени пользователя и пароля, уязвим к атакам сканированием памяти. Эти атаки сканированием памяти заключают в себе две угрозы. Во-первых, выдачу себя за пользователя и, во-вторых, утрату конфиденциальной личных сведений. Известные решения не устраняют обе угрозы. Кроме того, известные серверы являются привлекательными мишенями, поскольку они содержат много конфиденциальных паролей. Ниже описаны другие и/или более подробные варианты реализации, к тому же с использованием более математического языка. As described above, the authentication mechanism based on username and password is vulnerable to memory scan attacks. These memory scan attacks involve two threats. Firstly, impersonation of the user and, secondly, the loss of confidential personal information. Known solutions do not eliminate both threats. Also, known servers are attractive targets because they contain many sensitive passwords. Other and/or more detailed implementations are described below, also using more mathematical language.

Рассмотрим защищенную клавиатуру. Она обеспечивает защиту от утраты учетных данных вследствие сканирования памяти. Защищенная клавиатура может рассматриваться как последовательность

Figure 00000017
таблиц, в которой каждая строка представляет цифру от 0 до 9. В такой таблице 2 столбца. Один столбец содержит данные для отображения числа приложением, например
Figure 00000018
, а второй столбец содержит некоторое произвольное значение. Обозначим как
Figure 00000019
значение в памяти, являющееся результатом нажатия значения в строке i таблицы
Figure 00000020
, т. е. значение во втором столбце строки i таблицы
Figure 00000020
. Строки переставляют, чтобы скрыть реальные значения, которые они представляют. Каждый раз, когда пользователь вводит цифру, в память загружается новая таблица, чтобы обеспечить удаление связывающей информации, такой как, являются ли две введенные цифры одинаковыми.Consider a secure keyboard. It provides protection against lost credentials due to memory scans. A secure keyboard can be viewed as a sequence
Figure 00000017
tables in which each row represents a number from 0 to 9. Such a table has 2 columns. One column contains data for the application to display a number, for example
Figure 00000018
, and the second column contains some arbitrary value. Denote as
Figure 00000019
the value in memory resulting from pressing the value in row i of the table
Figure 00000020
, i.e. the value in the second column of row i of the table
Figure 00000020
. The strings are rearranged to hide the real values they represent. Each time the user enters a digit, a new table is loaded into memory to ensure that binding information, such as whether the two digits entered are the same, is removed.

Следующая схема проверки подлинности защищает от атак повторным воспроизведением, но не использует гомоморфного шифрования. Предполагается, что сервер имеет базу данных, где надежно хранятся учетные данные пользователей. Это означает, что база данных сама по себе не допускает утечки (полных) учетных данных никакого пользователя. The following authentication scheme protects against replay attacks, but does not use homomorphic encryption. The server is supposed to have a database where user credentials are securely stored. This means that the database itself does not leak any user's (full) credentials.

1. Пользователь вводит свое имя пользователя и его (производную) отправляют на сервер. 1. The user enters his username and his (derivative) is sent to the server.

2. Сервер проверяет, что пользователь зарегистрирован, и если это так, он выполняет следующее: 2. The server checks that the user is logged in, and if so, it does the following:

(a) Формирует имеющую размер

Figure 00000021
случайную матрицу
Figure 00000022
так, что все элементы в каждом столбце являются уникальными. (a) Forms a sized
Figure 00000021
random matrix
Figure 00000022
so that all elements in each column are unique.

(b) Формирует n случайных перестановок

Figure 00000023
, действующих на множестве
Figure 00000024
. (b) Generates n random permutations
Figure 00000023
acting on the set
Figure 00000024
.

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

Figure 00000025
отображения. (c) Generates n data sets
Figure 00000025
display.

(d) Определяет для

Figure 00000026
таблицу
Figure 00000027
, содержащую в строке j пару
Figure 00000028
.(d) Defines for
Figure 00000026
table
Figure 00000027
, containing in the string j the pair
Figure 00000028
.

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

Figure 00000029
. (e) Responds with a newly randomly selected keyboard
Figure 00000029
.

3. Пользователь предоставляет

Figure 00000030
и вводит свой PIN
Figure 00000031
, дающий в результате строку
Figure 00000032
, которую отправляют обратно серверу. 3. The user provides
Figure 00000030
and enter your PIN
Figure 00000031
, resulting in the string
Figure 00000032
, which is sent back to the server.

4. Сервер воссоздает PIN с помощью

Figure 00000033
и
Figure 00000022
, использующей взаимосвязь
Figure 00000034
, вытекающую из того факта, что пользователь выбирает i-ю цифру PIN (
Figure 00000035
) в строке
Figure 00000036
таблицы
Figure 00000037
. Таким образом, мы делаем вывод, что
Figure 00000038
удовлетворяет соотношению
Figure 00000039
), так что
Figure 00000040
.4. The server recreates the PIN using
Figure 00000033
and
Figure 00000022
, using the relationship
Figure 00000034
, resulting from the fact that the user selects the i-th digit of the PIN (
Figure 00000035
) in line
Figure 00000036
tables
Figure 00000037
. Thus, we conclude that
Figure 00000038
satisfies the relation
Figure 00000039
), so
Figure 00000040
.

5. Наконец, сервер проверяет PIN с использованием своей базы данных и удаляет все сформированные данные из своей памяти. 5. Finally, the server checks the PIN against its database and removes any generated data from its memory.

Поскольку сервер формирует свежие случайные клавиатуры,

Figure 00000033
будет принята сервером только один раз. Поэтому злоумышленник не может повторно воспроизвести
Figure 00000033
, чтобы выдать себя за пользователя. Кроме того, эта случайность обеспечивает, что сканировщик памяти на устройстве пользователя не сможет со временем собрать конфиденциальные сведения о введенном PIN пользователя.As the server generates fresh random keyboards,
Figure 00000033
will be accepted by the server only once. Therefore, an attacker cannot replay
Figure 00000033
to impersonate the user. In addition, this randomness ensures that the memory scanner on the user's device cannot collect sensitive information about the user's entered PIN over time.

Вышеприведенная процедура может быть также использована для защиты регистрации пользователя от сканирования памяти простым удалением проверки регистрации и заменой части проверки на стороне сервера хранением учетных данных пользователя в базе данных защищенным образом.The above procedure can also be used to protect user registration from memory scanning by simply removing the registration check and replacing the server side part of the check by storing the user's credentials in a database in a secure manner.

Чтобы сканировщик памяти на сервере не мог получить конфиденциальные пароли или PIN-коды, предлагаем следующее.To prevent the memory scanner on the server from obtaining confidential passwords or PINs, we suggest the following.

Пусть

Figure 00000041
будет группой, сформированной посредством
Figure 00000042
, порядок которой равен большому простому числу p. Предположим, что сервер имеет базу данных, содержащую производное имен пользователей и пароля Let
Figure 00000041
will be a group formed by
Figure 00000042
, whose order is equal to a large prime number p . Suppose the server has a database containing a derivative of usernames and password

Figure 00000043
Figure 00000043

где PIN

Figure 00000044
- PIN пользователя, а
Figure 00000045
- некоторый неизвестный элемент
Figure 00000046
. Поскольку
Figure 00000047
представляет собой схему «обязательств Педерсена» (Pedersen Commitment), которая теоретически скрывает информацию,
Figure 00000047
не содержит информации о PIN, когда
Figure 00000045
неизвестен [1].where PIN
Figure 00000044
- user PIN, and
Figure 00000045
- some unknown element
Figure 00000046
. Because the
Figure 00000047
is a "Pedersen Commitment" scheme that theoretically hides information
Figure 00000047
does not contain PIN information when
Figure 00000045
unknown [1].

Пусть

Figure 00000048
обозначает шифрование Эль-Гамаля [2] помощью секретного ключа. Поэтому Let
Figure 00000048
denotes the encryption of ElGamal [2] using a secret key. That's why

Figure 00000049
Figure 00000049

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

Figure 00000050
.where r is some uniform random value modulo p and
Figure 00000050
.

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

Figure 00000045
, который используется в
Figure 00000047
.User U is assumed to have saved
Figure 00000045
, which is used in
Figure 00000047
.

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

1. Пользователь вводит свое имя пользователя и его (его производную) отправляют на сервер. 1. The user enters their username and it (its derivative) is sent to the server.

2. Сервер проверяет, что пользователь зарегистрирован, и если это так, он выполняет следующее:2. The server checks that the user is logged in, and if so, it does the following:

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

Figure 00000051
. (a) Generates a random secret key
Figure 00000051
.

(b) Формирует имеющую размер

Figure 00000021
случайную матрицу
Figure 00000022
, где
Figure 00000052
. (b) Forms a sized
Figure 00000021
random matrix
Figure 00000022
, where
Figure 00000052
.

(c) Формирует n случайных перестановок

Figure 00000023
, действующих на множестве
Figure 00000024
. (c) Generates n random permutations
Figure 00000023
acting on the set
Figure 00000024
.

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

Figure 00000025
отображения. (d) Generates n data sets
Figure 00000025
display.

(e) Определяет для

Figure 00000026
таблицу
Figure 00000027
, содержащую в строке j пару
Figure 00000028
.(e) Defines for
Figure 00000026
table
Figure 00000027
, containing in the string j the pair
Figure 00000028
.

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

Figure 00000029
и открытого ключа
Figure 00000050
. (f) Responds with a newly randomly selected keyboard
Figure 00000029
and public key
Figure 00000050
.

3. Пользователь предоставляет

Figure 00000030
и вводит свой
Figure 00000053
, дающий в результате строку
Figure 00000054
. 3. The user provides
Figure 00000030
and enter your
Figure 00000053
, resulting in the string
Figure 00000054
.

4. Пользователь извлекает

Figure 00000045
из памяти и формирует случайное шифрование
Figure 00000055
с использованием открытого ключа h. 4. User retrieves
Figure 00000045
from memory and generates a random encryption
Figure 00000055
using the public key h .

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

Figure 00000056
. 5. The user responds with a string
Figure 00000056
.

6. Сервер расшифровывает

Figure 00000033
и проверяет, совпадает ли она с
Figure 00000047
. 6. Server decrypts
Figure 00000033
and checks if it matches
Figure 00000047
.

7. Наконец, удаляет все сформированные данные из своей памяти. 7. Finally, deletes all generated data from its memory.

Вместо матрицы 10 на n для набора

Figure 00000024
может быть использован другой набор символов. Instead of a 10 by n matrix for the set
Figure 00000024
a different character set may be used.

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

Figure 00000057
может быть представлена целым числом Correctness: It should be noted that the numeric string
Figure 00000057
can be represented as an integer

Figure 00000058
Figure 00000058

Кроме того, из гомоморфизма Эль-Гамаля Moreover, from the ElGamal homomorphism

Figure 00000059
Figure 00000059

вытекает follows

Figure 00000060
Figure 00000060

так что so

Figure 00000061
Figure 00000061

Регистрация: Тогда регистрация происходит следующим образом: Registration: Then registration proceeds as follows:

1. Пользователь вводит свое имя пользователя и его (его производную) отправляют на сервер. 1. The user enters their username and it (its derivative) is sent to the server.

2. Сервер проверяет, что пользователь НЕ зарегистрирован, и если так, он выполняет следующее: 2. The server checks that the user is NOT logged in, and if so, it does the following:

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

Figure 00000051
. (a) Generates a random secret key
Figure 00000051
.

(b) Формирует имеющую размер

Figure 00000021
случайную матрицу
Figure 00000022
, где
Figure 00000062
. (b) Forms a sized
Figure 00000021
random matrix
Figure 00000022
, where
Figure 00000062
.

(c) Формирует n случайных перестановок

Figure 00000023
, действующих на множестве
Figure 00000024
. (c) Generates n random permutations
Figure 00000023
acting on the set
Figure 00000024
.

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

Figure 00000025
отображения. (d) Generates n data sets
Figure 00000025
display.

(e) Определяет для

Figure 00000026
таблицу
Figure 00000027
, содержащую в строке j пару
Figure 00000063
. (e) Defines for
Figure 00000026
table
Figure 00000027
, containing in the string j the pair
Figure 00000063
.

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

Figure 00000029
и открытого ключа
Figure 00000050
. (f) Responds with a newly randomly selected keyboard
Figure 00000029
and public key
Figure 00000050
.

3. Пользователь предоставляет

Figure 00000030
и вводит свой выбранный
Figure 00000064
, дающий в результате строку
Figure 00000065
. 3. The user provides
Figure 00000030
and enters your chosen
Figure 00000064
, resulting in the string
Figure 00000065
.

4. Пользователь формирует случайный

Figure 00000045
и случайное шифрование
Figure 00000055
с использованием открытого ключа h. 4. User generates a random
Figure 00000045
and random encryption
Figure 00000055
using the public key h .

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

Figure 00000056
. 5. The user responds with a string
Figure 00000056
.

6. Сервер расшифровывает

Figure 00000033
в
Figure 00000047
и сохраняет пользователя U вместе с
Figure 00000047
. 6. Server decrypts
Figure 00000033
in
Figure 00000047
and saves user U along with
Figure 00000047
.

7. Наконец, удаляет все оставшиеся сформированные данные из своей памяти. 7. Finally, removes all remaining generated data from its memory.

Нулевые знания сервера: Сервер видит только основанное на случайном ключе шифрование

Figure 00000047
и саму
Figure 00000047
. Из семантической стойкости схемы Эль-Гамаля [3] следует, что умножение основанного на случайном ключе шифрования на результат клавиатуры скрывает, в том числе для сервера, все выборы, сделанные пользователем на клавиатуре. Это также называют ослеплением шифрования. Кроме того, обязательства Педерсена обеспечивают невозможность использования
Figure 00000047
для выделения PIN. Zero knowledge of the server: The server only sees encryption based on a random key
Figure 00000047
and herself
Figure 00000047
. From the semantic strength of the ElGamal scheme [3], it follows that the multiplication of the encryption based on a random key by the result of the keyboard hides, including for the server, all the choices made by the user on the keyboard. This is also called encryption blindness . In addition, Pedersen's obligations ensure that
Figure 00000047
to allocate a PIN.

Примечание: для определения надлежащей группы, реализующей вышеуказанные варианты реализации, могут быть использованы как простые поля, так и эллиптически кривые.Note: Both simple fields and elliptic curves can be used to determine the proper group that implements the above implementations.

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

[1] Pedersen.: Non-interactive and information-theoretic secure verifiable secret sharing. In Advances in Cryptology CRYPTO ’91 Springer[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.[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.[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 содержит инструкции для вызова выполнения процессорной системой способа для клиента или способа для сервера согласно варианту осуществления. On FIG. 6a shows a computer readable medium 1000 having a portion 1010 containing a computer program 1020, the computer program 1020 including instructions for causing the processor system to execute a client method or a server method according to an embodiment. The computer program 1020 may be implemented on the computer-readable storage medium 1000 in the form of physical marks or by magnetizing the computer-readable storage medium 1000. However, any other suitable embodiment is also possible. Further, it will be appreciated that although the computer readable storage medium 1000 is shown here as an optical disc, the computer readable storage medium 1000 may be any suitable computer readable storage medium such as a hard disk drive, solid state memory, flash memory, etc., and may be made without the possibility of recording or with the possibility of recording. Computer program 1020 includes instructions for causing the processor system to execute a client method or a server method according to an embodiment.

На Фиг. 6b показано схематическое представление процессорной системы 1140 согласно варианту реализации. Процессорная система содержит одну или более интегральных схем 1110. Архитектура одной или более интегральных схем 1110 схематически показана на Фиг. 6b. Схема 1110 содержит блок 1120 обработки, например, ЦП, для выполнения компонентов компьютерной программы с целью осуществления способа согласно варианту реализации и/или реализации его модулей или блоков. Схема 1110 содержит память 1122 для хранения программного кода, данных и т. д. Программный код конфигурирует процессорную систему как вариант реализации клиентского устройства или серверного устройства.On FIG. 6b shows a schematic representation of a processor system 1140 according to an embodiment. The processor system includes one or more integrated circuits 1110. The architecture of one or more integrated circuits 1110 is shown schematically in FIG. 6b. Circuitry 1110 includes a processing unit 1120, such as a CPU, for executing computer program components to implement the method according to the embodiment and/or implement modules or blocks thereof. Circuitry 1110 includes a memory 1122 for storing program code, data, etc. The program code configures the processor system as either a client device implementation or a server device implementation.

Часть памяти 1122 может быть предназначена только для чтения. Схема 1110 может содержать элемент 1126 связи, например, антенну, разъемы или то и другое и т. п. Схема 1110 может содержать специализированную интегральную схему 1124 для выполнения части или всей обработки, определенной в указанном способе. Процессор 1120, память 1122, специализированная ИС 1124 и элемент 1126 связи могут быть соединены друг с другом посредством межсоединения 1130, например, шины. Процессорная система 1110 может быть выполнена с возможностью контактного и бесконтактного обмена данными с использованием антенны и/или разъема, соответственно. Portion of memory 1122 may be read-only. Circuit 1110 may include a coupler 1126, such as an antenna, connectors, or both, etc. Circuit 1110 may include an ASIC 1124 to perform some or all of the processing defined in said method. The processor 1120, memory 1122, ASIC 1124, and coupler 1126 may be connected to each other via an interconnect 1130, such as a bus. Processor system 1110 may be configured to communicate contactlessly and non-contactly using an antenna and/or connector, respectively.

Например, в варианте реализации клиентское устройство серверное устройство, устройство формирования ключа и/или устройство проверки подписи могут содержать процессорную схему и схему памяти, причем процессор выполнен с возможностью исполнения программного обеспечения, хранящегося в схеме памяти. Например, процессорная схема может представлять собой процессор Intel Core i7, ARM Cortex-R8 и т. д. В варианте реализации процессорная схема может представлять собой ARM Cortex M0. Схема памяти может быть схемой ПЗУ или энергонезависимой памяти, например, флэш-памяти. Схема памяти может быть схемой энергозависимой памяти, например, СОЗУ (SRAM). В последнем случае устройство может содержать энергонезависимый программный интерфейс, например, жесткий диск, сетевой интерфейс и т. д., выполненный с возможностью снабжения программным обеспечением. For example, in an embodiment, the client device, the server device, the key generation device, and/or the signature verification device may comprise a processor circuit and a memory circuit, the processor being configured to execute software stored in the memory circuit. For example, the processor circuitry may be an Intel Core i7 processor, ARM Cortex-R8, etc. In an embodiment, the processor circuitry may be an ARM Cortex M0. The memory circuitry may be a ROM circuitry or non-volatile memory circuitry such as flash memory. The memory circuit may be a volatile memory circuit such as SRAM. In the latter case, the device may comprise a non-volatile software interface, such as a hard drive, a network interface, etc., configured to be provided with software.

Следует отметить, что вышеупомянутые варианты реализации иллюстрируют, а не ограничивают, настоящее изобретение, и что специалисты в данной области техники в состоянии разработать множество альтернативных вариантов реализации.It should be noted that the foregoing embodiments are illustrative, and not limiting, of the present invention, and that those skilled in the art are able to develop many alternative implementations.

В формуле изобретения никакие номера позиций, указанные в скобках, не следует трактовать как ограничивающие пункт формулы изобретения. Использование глагола «содержит/включает в себя» и его спряжений не исключает наличия других элементов или этапов, кроме указанных в пункте формулы изобретения. Грамматические средства выражения единственного числа, используемые с элементом, не исключают наличия множества таких элементов. Настоящее изобретение может быть реализовано посредством оборудования, содержащего несколько различных элементов, и посредством соответствующим образом запрограммированного компьютера. В описывающем устройство пункте, перечисляющем несколько средств, некоторые из этих средств могут быть реализованы одним и тем же элементом оборудования. Сам факт того, что определенные меры изложены во взаимно отличающихся зависимых пунктах формулы, не означает того, комбинация этих мер не может быть использована эффективно.In the claims, no position numbers given in brackets should be construed as limiting the claim. The use of the verb "comprises/includes" and its conjugations does not preclude the presence of other elements or steps other than those specified in a claim. The singular grammatical means used with an element does not preclude the presence of a plurality of such elements. The present invention can be implemented by means of equipment containing several different elements, and by means of an appropriately programmed computer. In a device-specific clause listing multiple features, some of those features may be implemented by the same piece of equipment. The mere fact that certain measures are set forth in mutually distinct dependent claims does not mean that a combination of these measures cannot be used effectively.

В формуле изобретения ссылки в скобках относятся к номерам позиций на чертежах, демонстрирующих примеры вариантов реализации, или к формулам в вариантах реализации, чтобы сделать пункт формулы изобретения более понятным. Эти ссылки не должны толковаться как ограничивающие пункт формулы изобретения.In the claims, references in parentheses refer to reference numbers in the drawings showing exemplary embodiments, or to formulas in embodiments, to make the claim more understandable. These references are not to be construed as limiting the claim.

Claims (44)

1. Серверное устройство (200) для проверки пользователя с клиентского устройства (100), причем пользователь имеет доступ к строке (326) проверки подлинности, строка проверки подлинности имеет множество символов во множестве позиций (410), а символы выбраны из набора (420) символов, при этом серверное устройство содержит: 1. Server device (200) to verify the user from the client device (100), wherein the user has access to the authentication string (326), the authentication string has multiple characters in multiple positions (410), and the characters are selected from the set (420) characters, while the server device contains: - запоминающее устройство (110), хранящее первое проверочное число (340,
Figure 00000066
), вычисленное из подмножества (320) набора (310) данных символа/позиции, причем упомянутое подмножество указано строкой (325, p) проверки подлинности, а набор данных (310,
Figure 00000067
) символа/позиции содержит число (430) для каждой комбинации из символа из набора символов и позиции в строке проверки подлинности,
- a memory device (110) storing the first check number (340,
Figure 00000066
) calculated from a subset (320) of the character/position data set (310), said subset being indicated by the authentication string (325, p ), and the data set (310,
Figure 00000067
) character/position contains a number (430) for each combination of a character from the character set and a position in the authentication string,
- процессорную схему, выполненную с возможностью: - a processor circuit configured to: - шифрования набора данных символа/позиции в соответствии с алгоритмом гомоморфного шифрования и отправки зашифрованного набора (350) клиентскому устройству, - encrypting the character/position data set according to the homomorphic encryption algorithm and sending the encrypted set (350) to the client device, - приема от клиентского устройства второго проверочного числа (380), получаемого гомоморфным вычислением зашифрованного второго проверочного числа из подмножества зашифрованного набора, при этом упомянутое подмножество указано строкой проверки подлинности, и- receiving from the client device a second parity number (380) obtained by homomorphic calculation of an encrypted second parity number from a subset of the encrypted set, said subset being indicated by the authentication string, and - проверки соответствия между первым проверочным числом и зашифрованным вторым проверочным числом для проверки подлинности пользователя.- checking the correspondence between the first check number and the encrypted second check number for user authentication. 2. Серверное устройство по п. 1, в котором процессорная схема выполнена с возможностью: 2. The server device according to claim 1, in which the processor circuit is configured to: - формирования перестановки (500) набора символов,- forming a permutation (500) of a character set, - получения данных (510, 511) отображения для символов в наборе символов и связывания данных отображения с зашифрованными данными (530, 520-529) символа/позиции, соответствующими упомянутому символу, receiving mapping data (510, 511) for characters in the character set and associating the mapping data with encrypted character/position data (530, 520-529) corresponding to said character, - отправки данных отображения клиентскому устройству, связанному зашифрованными данными символа/позиции, и в порядке в соответствии со сформированной перестановкой.- sending the display data to the client device associated with the encrypted character/position data, and in order according to the generated permutation. 3. Серверное устройство по п. 1, в котором: 3. The server device according to claim 1, in which: - для всех позиций использованы одни и те же данные отображения, или- the same display data is used for all positions, or - по меньшей мере для двух разных позиций использованы разные данные отображения.- at least two different positions used different display data. 4. Серверное устройство по п. 2, в котором клиентскому устройству не отправляют данные отображения для последующей проверки подлинности, причем в клиентском устройстве использованы кэшированные данные отображения.4. The server device according to claim 2, wherein the client device is not sent the display data for subsequent authentication, and the cached display data is used in the client device. 5. Серверное устройство по любому из предыдущих пунктов, в котором первое проверочное число ослеплено с помощью ослепляющего числа (
Figure 00000068
), а вычисление второго проверочного числа включает ослепление с помощью ослепляющего числа.
5. The server device according to any one of the preceding claims, wherein the first parity number is blinded with a blinding number (
Figure 00000068
), and the calculation of the second check number includes blinding with the blinding number.
6. Серверное устройство по любому из предыдущих пунктов, в котором по меньшей мере некоторые из данных символа/позиции являются случайными числами. 6. The server device according to any one of the preceding claims, wherein at least some of the character/position data is random numbers. 7. Серверное устройство по любому из предыдущих пунктов, в котором: 7. The server device according to any one of the preceding claims, wherein: - по меньшей мере некоторые из данных символа/позиции вычислены как значения, кратные степеням основания степени,- at least some of the character/position data is computed as multiples of the base powers of the degree, - по меньшей мере некоторые из данных символа/позиции вычислены как степени, причем показатели степени являются значениями, кратными степеням основания степени.- at least some of the character/position data is computed as powers, the exponents being multiples of the powers of the base of the power. 8. Серверное устройство по любому из предыдущих пунктов, в котором проверка соответствия включает расшифрование второго проверочного числа.8. The server device according to any one of the preceding claims, wherein the matching check includes deciphering the second check number. 9. Серверное устройство по любому из предыдущих пунктов, в котором алгоритм гомоморфного шифрования является алгоритмом вероятностного гомоморфного шифрования.9. The server device according to any one of the preceding claims, wherein the homomorphic encryption algorithm is a probabilistic homomorphic encryption algorithm. 10. Серверное устройство по любому из предыдущих пунктов, в котором проверочное число является обязательством Педерсена, и/или в котором шифрование является шифрованием Эль-Гамаля.10. A server device according to any one of the preceding claims, wherein the check number is a Pedersen commitment and/or where the encryption is an ElGamal encryption. 11. Клиентское устройство для проверки пользователя для серверного устройства, причем пользователь имеет доступ к строке проверки подлинности, строка проверки подлинности имеет множество символов во множестве позиций, а символы выбраны из набора символов, при этом клиентское устройство содержит:11. A client device for verifying a user for a server device, wherein the user has access to an authentication string, the authentication string has a plurality of characters in a plurality of positions, and the characters are selected from a character set, the client device comprising: - процессорную схему, выполненную с возможностью: - a processor circuit configured to: - приема набора данных символа/позиции, зашифрованных в соответствии с алгоритмом гомоморфного шифрования, причем зашифрованный набор (
Figure 00000067
) данных символа/позиции содержит число для каждой комбинации из символа из набора символов и позиции в строке проверки подлинности,
- receiving a set of character/position data encrypted in accordance with the homomorphic encryption algorithm, with the encrypted set (
Figure 00000067
) character/position data contains a number for each combination of a character from the character set and a position in the authentication string,
- гомоморфного вычисления зашифрованного второго проверочного числа (
Figure 00000066
) из подмножества упомянутого зашифрованного набора данных символа/позиции, причем упомянутое подмножество указано строкой (p) проверки подлинности,
- homomorphic calculation of the encrypted second check number (
Figure 00000066
) from a subset of said encrypted character/position data set, said subset being indicated by an authentication string ( p ),
- отправки зашифрованного второго проверочного числа серверному устройству. - sending the encrypted second verification number to the server device. 12. Клиентское устройство по п. 11, в котором процессорная схема выполнена с возможностью:12. The client device according to claim 11, in which the processor circuit is configured to: - приема данных отображения от серверного устройства, связанного с зашифрованными данными символа/позиции,- receiving display data from the server device associated with the encrypted character/position data, - отображения принятых данных отображения для каждой позиции строки проверки подлинности;- displaying the received mapping data for each position of the authentication string; - приема пользовательского ввода, выбирающего данные отображения из отображаемых данных отображения,- receiving a user input selecting display data from the displayed display data, - выбора упомянутого подмножества в соответствии с выбранными данными отображения. - selecting said subset according to the selected display data. 13. Клиентское устройство по любому из пп. 11, 12, содержащее запоминающее устройство для хранения ослепляющего числа, причем процессорная схема выполнена с возможностью ослепления зашифрованного второго проверочного числа с помощью ослепляющего числа (
Figure 00000068
).
13. The client device according to any one of paragraphs. 11, 12, comprising a memory device for storing a blinding number, wherein the processor circuit is configured to blind the encrypted second parity number with the blinding number (
Figure 00000068
).
14. Способ (600) для сервера для проверки пользователя с клиентского устройства (100), причем пользователь имеет доступ к строке (326) проверки подлинности, строка проверки подлинности имеет множество символов во множестве позиций (410), а символы выбирают из набора (420) символов, при этом способ для сервера включает: 14. A method (600) for a server to validate a user from a client device (100), wherein the user has access to the authentication string (326), the authentication string has multiple characters in multiple positions (410), and the characters are selected from the set (420 ) characters, while the method for the server includes: - сохранение (610) первого проверочного числа (340,
Figure 00000066
), вычисленного из подмножества (320) набора (310) данных символа/позиции, причем упомянутое подмножество указано строкой (325, p) проверки подлинности, а набор данных (310,
Figure 00000067
) символа/позиции содержит число (430) для каждой комбинации из символа из набора символов и позиции в строке проверки подлинности,
- saving (610) the first check number (340,
Figure 00000066
) calculated from a subset (320) of the character/position data set (310), said subset being indicated by the authentication string (325, p ), and the data set (310,
Figure 00000067
) character/position contains a number (430) for each combination of a character from the character set and a position in the authentication string,
- шифрование (620) набора данных символа/позиции в соответствии с алгоритмом гомоморфного шифрования и отправку зашифрованного набора (350) клиентскому устройству, - encryption (620) of the character/position data set in accordance with the homomorphic encryption algorithm and sending the encrypted set (350) to the client device, - прием (630) от клиентского устройства второго проверочного числа (380), получаемого гомоморфным вычислением зашифрованного второго проверочного числа из подмножества зашифрованного набора, при этом подмножество указывают посредством упомянутой строки проверки подлинности, и- receiving (630) from the client device a second verification number (380) obtained by homomorphic calculation of an encrypted second verification number from a subset of the encrypted set, wherein the subset is indicated by said authentication string, and - проверку (640) соответствия между первым проверочным числом и зашифрованным вторым проверочным числом для проверки подлинности пользователя.- checking (640) the correspondence between the first check number and the encrypted second check number to authenticate the user. 15. Способ (700) для клиента для проверки пользователя для серверного устройства, причем пользователь имеет доступ к строке проверки подлинности, строка проверки подлинности имеет множество символов во множестве позиций, а символы выбирают из набора символов, при этом способ для клиента включает:15. A method (700) for a client to validate a user for a server device, wherein the user has access to an authentication string, the authentication string has a plurality of characters in a plurality of positions, and the characters are selected from a character set, the method for the client comprising: - прием (710) набора данных символа/позиции, зашифрованных в соответствии с алгоритмом гомоморфного шифрования, причем зашифрованный набор (
Figure 00000067
) данных символа/позиции содержит число для каждой комбинации из символа из набора символов и позиции в строке проверки подлинности,
- receiving (710) a set of character/position data encrypted in accordance with the homomorphic encryption algorithm, wherein the encrypted set (
Figure 00000067
) character/position data contains a number for each combination of a character from the character set and a position in the authentication string,
- гомоморфное вычисление (720) зашифрованного второго проверочного числа (
Figure 00000066
) из подмножества зашифрованного набора данных символа/позиции, причем подмножество указывают посредством упомянутой строки (p) проверки подлинности,
- homomorphic calculation (720) of the encrypted second check number (
Figure 00000066
) from a subset of the encrypted character/position data set, the subset being indicated by said authentication string ( p ),
- отправку (730) зашифрованного второго проверочного числа серверному устройству. - sending (730) the encrypted second verification number to the server device. 16. Компьютерочитаемый носитель (1000) информации, содержащий кратковременные и некратковременные данные (1020), представляющие инструкции, выполнение которых процессорной системой приводит к осуществлению ею способа по п. 14.16. A computer-readable storage medium (1000) containing transient and non-transitory data (1020) representing instructions whose execution by the processor system causes it to perform the method of claim 14. 17. Компьютерочитаемый носитель (1000) информации, содержащий кратковременные и некратковременные данные (1020), представляющие инструкции, выполнение которых процессорной системой приводит к осуществлению ею способа по п. 15.17. A computer-readable storage medium (1000) containing transient and non-transitory data (1020) representing instructions, the execution of which by the processor system leads to the implementation of the method according to claim 15.
RU2020123994A 2017-12-19 2018-12-06 Homomorphous encryption for authentication using password RU2774807C2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP17208570.6A EP3503456A1 (en) 2017-12-19 2017-12-19 Homomorphic encryption for password authentication
EP17208570.6 2017-12-19
PCT/EP2018/083710 WO2019121026A1 (en) 2017-12-19 2018-12-06 Homomorphic encryption for password authentication

Publications (3)

Publication Number Publication Date
RU2020123994A3 RU2020123994A3 (en) 2022-01-20
RU2020123994A RU2020123994A (en) 2022-01-20
RU2774807C2 true RU2774807C2 (en) 2022-06-23

Family

ID=

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040133778A1 (en) * 2003-01-07 2004-07-08 Masih Madani Virtual pad
RU2414001C2 (en) * 2005-12-01 2011-03-10 Гридлоктс Лимитед Method and apparatus for checking authenticity or rights using one-time transaction codes
US20150227930A1 (en) * 2014-02-11 2015-08-13 Square, Inc. Homomorphic passcode encryption
US9215219B1 (en) * 2011-11-07 2015-12-15 Parallels IP Holdings GmbH Method for protecting data used in cloud computing with homomorphic encryption
US20170237725A1 (en) * 2016-02-12 2017-08-17 International Business Machines Corporation Password-Based Authentication

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040133778A1 (en) * 2003-01-07 2004-07-08 Masih Madani Virtual pad
RU2414001C2 (en) * 2005-12-01 2011-03-10 Гридлоктс Лимитед Method and apparatus for checking authenticity or rights using one-time transaction codes
US9215219B1 (en) * 2011-11-07 2015-12-15 Parallels IP Holdings GmbH Method for protecting data used in cloud computing with homomorphic encryption
US20150227930A1 (en) * 2014-02-11 2015-08-13 Square, Inc. Homomorphic passcode encryption
US20170237725A1 (en) * 2016-02-12 2017-08-17 International Business Machines Corporation Password-Based Authentication

Similar Documents

Publication Publication Date Title
Odelu et al. Provably secure authenticated key agreement scheme for distributed mobile cloud computing services
US10521616B2 (en) Remote re-enrollment of physical unclonable functions
Limbasiya et al. Advanced formal authentication protocol using smart cards for network applicants
EP3091690B1 (en) Rsa decryption using multiplicative secret sharing
Das et al. An improved and effective secure password-based authentication and key agreement scheme using smart cards for the telecare medicine information system
Lee et al. Three‐factor control protocol based on elliptic curve cryptosystem for universal serial bus mass storage devices
US11310049B2 (en) Homomorphic encryption for password authentication
US8195951B2 (en) Data processing system for providing authorization keys
JP2017076839A (en) Encryption processing method, encryption processing apparatus, and encryption processing program
Yeh et al. Robust elliptic curve cryptography‐based three factor user authentication providing privacy of biometric data
US20200021448A1 (en) Public-private key pair account login and key manager
Cheon et al. Ghostshell: Secure biometric authentication using integrity-based homomorphic evaluations
US9325499B1 (en) Message encryption and decryption utilizing low-entropy keys
EP3496331A1 (en) Two-party signature device and method
US11128453B2 (en) Visual image authentication
Choi et al. Security enhanced multi-factor biometric authentication scheme using bio-hash function
Odelu et al. A secure and efficient ECC‐based user anonymity preserving single sign‐on scheme for distributed computer networks
Mishra et al. An anonymous biometric‐based remote user‐authenticated key agreement scheme for multimedia systems
US8954728B1 (en) Generation of exfiltration-resilient cryptographic keys
Meshram et al. An efficient remote user authentication with key agreement procedure based on convolution-Chebyshev chaotic maps using biometric
RU2774807C2 (en) Homomorphous encryption for authentication using password
US11424922B2 (en) Hashing schemes for cryptographic private key generation
Adams et al. Digital signatures for mobile users
CN114448640A (en) Double-blind information distribution method and device and computer readable storage medium
JP5101535B2 (en) Authentication method, authentication system, program, and shared key generation method