RU2774807C2 - Homomorphous encryption for authentication using password - Google Patents
Homomorphous encryption for authentication using password Download PDFInfo
- 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
Links
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 11
- 238000004364 calculation method Methods 0.000 claims description 14
- 230000000875 corresponding Effects 0.000 claims description 11
- 230000001052 transient Effects 0.000 claims 2
- 238000004891 communication Methods 0.000 abstract description 9
- 230000005540 biological transmission Effects 0.000 abstract description 3
- 239000000126 substance Substances 0.000 abstract 1
- 230000015654 memory Effects 0.000 description 54
- 238000004590 computer program Methods 0.000 description 18
- 239000000203 mixture Substances 0.000 description 14
- 239000011159 matrix material Substances 0.000 description 4
- 230000003287 optical Effects 0.000 description 3
- 230000001010 compromised Effects 0.000 description 2
- 230000001419 dependent Effects 0.000 description 2
- 238000000034 method Methods 0.000 description 2
- 239000003607 modifier Substances 0.000 description 2
- 150000003839 salts Chemical class 0.000 description 2
- 239000011780 sodium chloride Substances 0.000 description 2
- 201000004569 blindness Diseases 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000021615 conjugation Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000002452 interceptive Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Abstract
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.
Чтобы пройти проверку подлинности на сервере, клиент, как правило, отправляет свои учетные данные по защищенному каналу. Затем сервер использует свою базу данных для проверки соответствия комбинации имени пользователя и пароля. Например, база данных содержит комбинации имен пользователей и хэшей (имеющих соль, или иначе, модификатор входа хэш-функции) соответствующих паролей . Когда сервер получает имя пользователя и пароль , он вычисляет и проверяет, справедливо ли .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 users and hashes (having a salt, or otherwise, a hash function input modifier) of the corresponding passwords . When the server receives the username and password , it calculates and checks if it's true .
Если злоумышленник в состоянии атаковать сервер, то он может обнаружить базу данных, содержащую учетные данные (их производные) пользователя. Существуют хорошие решения для предотвращения получения злоумышленником конфиденциальных паролей из базы данных, такие как использование криптографических хэшей в предыдущем примере. Однако, когда злоумышленник в состоянии сканировать память активного сервера, то в большинстве ситуаций он увидит открытый пароль в памяти сервера. Ниже описаны варианты реализации, в которых используют гомоморфное шифрование для защиты строки проверки подлинности, например, пароля, во время проверки подлинности, как на клиентском устройстве, так и на серверном устройстве. 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
Клиентское устройство 200 и серверное устройство 100 могут быть электронными устройствами, выполненными как варианты реализации настоящего изобретения. Клиентское устройство 200 содержит интерфейс 230 связи, выполненный с возможностью обмена данными с серверным устройством, и серверное устройство 100 содержит интерфейс связи 130. Эти интерфейсы связи выполнены с возможностью обмена данными друг с другом в цифровом формате, например, путем обмена цифровыми сообщениями, например, через вычислительную сеть. Например, компьютерная сеть может быть Интернетом, интрасетью, WLAN и т. д. Компьютерная сеть может быть Интернетом. Например, интерфейсы 130 и/или 230 связи могут быть проводными интерфейсами, например, портом Ethernet. Например, интерфейсы 130 и/или 230 могут быть беспроводными интерфейсами, например, интерфейсом Wi-Fi, например, содержащим антенну Wi-Fi.
Клиентское устройство 200 и серверное устройство 100 взаимодействуют так, что клиентское устройство может проверять подлинность пользователя клиентского устройства 200 для серверного устройства 100. Например, серверное устройство 100 может быть сконфигурировано для некоторой услуги, для которой данный пользователь авторизован, а остальные пользователи нет. Например, сервер 100 может быть файловым севером, хранящим документы, к которым пользователь имеет доступ, сервером потоковой передачи, обеспечивающим доступ к ценному содержимому, веб-магазином, хранящим информацию о кредитной карте пользователя, и т. д.The
Каждое из клиентского устройства 200 и серверного устройства 100 содержат процессорную схему. Они также могут содержать память, содержащую инструкции компьютерной обработки. Процессорная схема выполнена с возможностью исполнения инструкций, хранящихся в памяти. Исполнение проверки подлинности реализуют в процессорной схеме, примеры которой показаны в настоящем документе. На Фиг. 1 показаны функциональные блоки, которые могут быть функциональными блоками процессорной схемы. Например, Фиг. 1 может быть использована в качестве примерного плана организации процессорной схемы. На Фиг. 1 процессорная схема не показана отдельно от блоков. Например, функциональные блоки, показанные на Фиг. 1, могут быть полностью или частично реализованы в компьютерных инструкциях, которые хранятся на устройстве 100 или 200, например, в электронной памяти устройства 100 или 200, и могут быть исполнены микропроцессором устройства 100 или 200. В гибридные вариантах реализации функциональные блоки реализуют частично в оборудовании, например, таком как сопроцессоры, например, криптопроцессоры, и частично в программном обеспечении, хранящемся и исполняемом на устройстве 100 или 200. The
Серверное устройство 100 выполнено с возможностью проверки подлинности пользователя с клиентского устройства 200. Пользователь имеет доступ к строке проверки подлинности. Строка проверки подлинности имеет множество символов в множестве позиций, причем символы выбирают из набора символов. Например, строка проверки подлинности может представлять собой PIN-код, в этом случае набор символов представляет собой числа {0, 1, 2, …, 9}. Например, строка проверки подлинности может представлять собой буквенно-цифровую строку, в этом случае набор символов может представлять собой{a, …, z, A, …, Z, 0, …, 9}. Кроме того, в соответствии с потребностями системы 101 проверки подлинности в набор символов могут быть добавлены один или более знаков пунктуации. The
Серверное устройство 100 содержит запоминающее устройство 110, выполненное с возможностью хранения первого проверочного числа, например, запоминающее устройство 110 для проверочных чисел. На фазе установки первое проверочное число было вычислено из строки проверки подлинности. Однако в варианте реализации знания первого проверочного числа недостаточно для получения строки проверки подлинности. Более того, первое проверочное число не может быть использовано само по себе для прохождения проверки подлинности на сервере 100. Другими словами, даже если злоумышленник получил бы первое проверочное число, это не помогло бы ему ни получить строку проверки подлинности, ни пройти проверку подлинности на сервере 100. Клиентское устройство 200 выполнено таким образом, что во время процесса проверки подлинности из строки проверки подлинности вычисляют второе проверочное число. Клиентское устройство 200 может выполнять это, т. к. пользователь предоставляет входные данные, основанные на знании строки проверки подлинности. Затем второе проверочное число отправляют на серверное устройство 100. Проверяют соответствие между первым и вторым проверочным числом, что, в свою очередь, подтверждает, что оба проверочных числа были вычислены из одной и той же строки проверки подлинности. Соответственно, устаналивается подлинность пользователя. The
Запоминающее устройство 110 для проверочных чисел может содержать множество проверочных чисел для множества пользователей. Например, проверочное число может быть связано с именем пользователя. Например, могут храниться пары из проверочного числа и имени пользователя. Взаимосвязь может быть установлена посредством производного от имени пользователя, например, хэша или хэша с солью, или модификатором входа хэш-функции. В этом случае хранилище 110 для проверочных чисел может хранить проверочное число вмести с производным. The
На Фиг. 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 содержит число для каждой комбинации из символа из набора символов и позиции в строке проверки подлинности. Данные символа/позиции могут быть секретными, но это необязательно; это могут быть открытые данные. Как правило, числа выбирают из конечной группы, кольца или поля, например, таких, которые используют в применяемой схеме гомоморфного шифрования. Схема гомоморфного шифрования позволяет шифровать данные, например, числа, например, в группе. Кроме того, существует по меньшей мере одна двоичная операция, которая может быть выполнена на зашифрованных числах. Например, схема гомоморфного шифрования, которая поддерживает сложение, позволяет суммировать набор чисел, подлежащих вычислению во время шифрования. Например, для такого шифрования существует функция , такая что Другими словами, шифрование суммы может быть вычислено из зашифрованных слагаемых, притом это может быть сделано без знания ключа шифрования. Некоторые схемы гомоморфного шифрования могут поддерживать умножение. Существуют также схемы гомоморфного шифрования, которые поддерживают более одной операции, например сложение и умножение. Хотя такие схемы могут быть использованы в варианте реализации, такие сложные типы гомоморфного шифрования не требуются, поскольку нужна только одна операция. Примеры схем гомоморфного шифрования: Ривеста-Шамира-Адлемана (Rivest, Shamir, Adleman, RSA) (без заполнения), Эль-Гамаля (ElGamal), Гольдвасера-Микали (Goldwasser-Micali), Бенало (Benaloh), Пэйе (Paillier) и т. д. Например, числа могут быть выбраны из группы целых чисел по модулю простого числа. Другими примерами являются эллиптические кривые, сформированные некоторым генератором. Группа обратимых чисел по модулю составного числа и т. д.On FIG. 2 shows a
На Фиг. 3 схематически показан пример варианта реализации данных символа/позиции. Показаны множество позиций 410. Строка проверки подлинности может быть получена путем выбора символа из набора 420 символов для каждой позиции строки проверки подлинности. Для каждой комбинации позиции в множестве позиций 410 и для каждого символа в наборе 420 символов выбирают число символа/позиции. Если имеются n позиций и m возможных символов, то, как правило, существуют nm чисел символа/позиции. Некоторые комбинации могут быть опущены, но, как следствие, эти комбинации символа/позиции невозможны в строке проверки подлинности. On FIG. 3 schematically shows an example implementation of character/position data. A plurality of
В варианте реализации строка проверки подлинности может быть заданной длины или строка проверки подлинности может иметь любую длину, по меньшей мере 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
В варианте реализации данные символа/позиции являются случайными числами. Использование случайных чисел означает небольшой риск наличия двух разных строк проверки подлинности, которые дают одни и те же проверочные числа. Соответственно, могут существовать множество строк проверки подлинности, которые будут приняты при проверке подлинности данного пользователя. Однако риск этого невелик, и альтернативные строки проверки подлинности неизвестны. Кроме того, риск можно уменьшить настолько, насколько требуется, например, путем выбора большей группы и т. д. для гомоморфного шифрования. 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/
Например, если гомоморфное шифрование поддерживает умножение, то набор 310 данных символа/позиции может быть выбран в виде степеней, причем показатели степени являются значениями, кратными степеням основания степени. Основание степени может быть выбрано в виде количества символов в наборе символов. Например, если поддерживаемой операцией является умножение, то этот выбор даст разные произведения для каждого подмножества. Например, степени могут быть степенями генератора. Дополнительное преимущество выбора данных символа/позиции в виде степеней генератора заключается в том, что возведение в степень служит дополнительным уровнем шифрования. В частности, получить строку проверки подлинности из проверочного числа труднее, даже если оно неослепленное (см. ниже). For example, if homomorphic encryption supports multiplication, then the character/
В варианте реализации числа символа/позиции меньше, чем размер группы. В варианте реализации числа символа/позиции являются степенями основания степени, например, генератора, а показатели степени меньше размера группы или порядка группы, формируемой генератором. В варианте реализации числа символа/позиции или показатели степени меньше порядка группы, деленного на размер набора символов.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
Строка 325 проверки подлинности определяет подмножество 320 набора 310 данных символа/позиции. В частности, в подмножество 320 включают числа символа/позиции, соответствующие символам, фактически используемым в разных позициях строки проверки подлинности. Из подмножества 320 выводят первое проверочное число 340. The
Например, первое проверочное число может быть получено из подмножества 320 путем выполнения операции, поддерживаемой гомоморфным шифрованием, например умножения. Для дополнительной безопасности этот результат может быть ослеплен. Например, первое неослепленное проверочное число 330 может быть получено из подмножества 320 путем выполнения поддерживаемой операции, например, умножения чисел в подмножестве. Далее, первое неослепленное проверочное число 330 может быть ослеплено с помощью ослепляющего числа 340. Последнее является (ослепленным) первым проверочным числом 340. Например, для включения ослепляющего числа может быть использована поддерживаемая операция: например, ослепляющее число может быть сложено с первым неослепленным проверочным числом 340 или умножено на него. Ослепляющее число является необязательным. В отсутствии ослепляющего числа злоумышленник, который получает первое неослепленное проверочное число 330, может запустить атаку перебором по словарю, чтобы определить строку проверки подлинности. Ослепляющее число сокращает информацию, которую содержит неослепленное проверочное число 330 о строке 325 проверки подлинности, например, возможно, сокращает ее до нуля. Далее будем считать, что первое проверочное число является ослепленным, но это необязательно. Ослепляющее число может быть случайным числом, например, сформированным генератором случайных чисел.For example, the first parity number can be obtained from
Следует отметить, что на фазе проверки подлинности серверному устройству не требуются ни строка 325 проверки подлинности, ни неослепленное проверочное число 330, ни ослепляющее число 345. Например, серверное устройство может вычислять первое проверочное число 340 на фазе установки, а затем удалять ненужную информацию. Например, серверное устройство может принимать первое проверочное число 340 на фазе установки, например, от клиентского устройства или от доверенной третьей стороны. На фазе проверки подлинности серверному устройству нужны данные 310 символа/позиции и первое проверочное число, будь то ослепленное или нет. Если данные 310 символа/позиции не являются случайными, они могут быть вычислены при необходимости, а не храниться. It should be noted that neither the
Серверное устройство 100 содержит блок 120 шифрования. Блок 120 шифрования выполнен с возможностью шифрования набора 310 данных символа/позиции в соответствии с алгоритмом гомоморфного шифрования. Шифрование выполняется на поэлементной основе. На Фиг. 3 это показано в виде зашифрованного набора 350. Во время проверки подлинности зашифрованный набор 350 отправляют клиентскому устройству 200. Во избежание повторного воспроизведения предпочтительно, чтобы результат этого шифрования был разным для разных проверок подлинности. Например, это можно обеспечить путем использования разного ключа при каждом шифровании набора 310, например, путем выбора случайного ключа. Например, это можно обеспечить путем выбора схемы вероятностного шифрования (или и того, и другого). Например, схема шифрования может быть шифрованием Эль-Гамаля, которое является схемой гомоморфного и вероятностного шифрования.
Клиентское устройство 200 содержит блок 240 гомоморфного вычисления. Блок 240 гомоморфного вычисления выполнен с возможностью вычисления зашифрованного второго проверочного числа из подмножества 360 зашифрованного набора 350 данных символа/позиции. Зашифрованный набор 350 принимают от серверного устройства 100. Например, пользователь клиентского устройства 200 может выбирать подмножество 360 принятого набора 350 на основе своего знания строки 326 проверки подлинности. Если строка 325 проверки подлинности и строка 326 проверки подлинности одинаковые, то подмножество 360 является тем же самым, что и подмножество 320, с тем отличием, что подмножество 360 зашифровано, а подмножество 320 нет. Например, принятый набор 350 может содержат указание на то, какое зашифрованное число символа/позиции соответствует какому символу/позиции. Например, набор 350 может быть сортированным. Например, пользователь может ввести строку проверки подлинности на пользовательском интерфейсе 220 клиентского устройства 200, например, на клавиатуре сенсорного экрана и т. д., чтобы выбрать подмножество 360.The
Данное указание может быть машиночитаемым или не машиночитаемым. Недостатком указания машиночитаемым образом, какое зашифрованное число символа/позиции в наборе 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
Блок 240 гомоморфного вычисления выполнен с возможностью гомоморфного вычисления зашифрованного второго проверочного числа из подмножества зашифрованного набора данных символа/позиции. Например, блок 240 гомоморфного вычисления может выполнять то же самое вычисление, которое выполняют на наборе 320 для получения числа 330, с той разницей, что блок 240 гомоморфного вычисления выполняет вычисление на зашифрованных данных. Второе проверочное число 370 является зашифрованным, но неослепленным. The
В случае использования ослепления блок 240 гомоморфного вычисления может быть выполнен с возможностью ослепления зашифрованного второго проверочного числа с помощью ослепляющего числа 346. Если блок 240 гомоморфного вычисления выполняет то же самое вычисление и ослепление (хотя и на зашифрованных данных) и использует то же самое ослепляющее число (но зашифрованное), то второе проверочное число 380 является тем же самым, что и первое проверочное число 340, хотя и зашифрованное. In the case of blinding,
Существуют несколько способов получения зашифрованного ослепляющего числа клиентским устройством 200. Например, зашифрованное ослепляющее число может быть получено на фазе установки, зашифрованным для каждого ключа, который будет использован на фазе проверки подлинности. Зашифрованные ослепляющие числа могут быть в запоминающем устройстве устройства 200. В этом случае во время проверки подлинности могут быть использованы один и тот же ключ или ограниченное количество ключей. В альтернативном варианте реализации схема шифрования может быть схемой шифрования с открытым/закрытым ключом. Клиентское устройство 200 может принимать открытый ключ, который также используется для шифрования набора 310 для получения набора 350. В этом случае блок 240 гомоморфного шифрования может шифровать само ослепляющее число. Ослепляющее число может быть получено от пользователя или из хранилища 250 клиентского устройства 200. There are several ways in which the
Второе проверочное число, будь то неослепленное число 370 или ослепленное число 380, отправляют на серверное устройство 100. Серверное устройство 100 содержит блок 140 сравнения. Блок 140 сравнения выполнен с возможностью проверки соответствия между первым проверочным числом и зашифрованным вторым проверочным числом для проверки подлинности пользователя. Например, если клиентское устройство 200 выполняет то же самое вычисление, что и серверное устройство 100 (но на зашифрованных данных), то блок 140 сравнения может быть выполнен с возможностью расшифрования второго проверочного числа для сравнения его с первым проверочным числом на предмет равенства. Это необязательно, хотя, например, блок 240 гомоморфного шифрования может быть выполнен с возможностью вычисления другого числа, например, блок 240 гомоморфного шифрования может быть выполнен с возможностью вычисления удвоенного первого проверочного числа или прибавления константы к нему. В более общем смысле, если является неослепленным проверочным числом, то блок гомоморфного шифрования может вычислять , или и т. д. для константы и . Эти числа могут быть ослеплены с помощью ослепляющего числа либо до, либо после дополнительного вычисления. Например, блок 240 гомоморфного шифрования может вычислять , а блок 140 сравнения может проверять, что второе проверочное число в раз больше первого проверочного числа.The second parity number, whether it be the unblinded
Как указано выше, вышеприведенный вариант реализации защищает от сканирования на сервере, но сканирование на клиентском устройство возможно. В варианте реализации предложена дополнительная необязательная защита следующим образом. В варианте реализации серверное устройство 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
Блок 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
Данные отображения отправляют клиентскому устройству 200 вместе с набором 350 зашифрованных данных символа/позиции. Данные отображения могут быть отправлены в переставленном порядке, но связанном с правильными данными символа/позиции. На Фиг. 4 показана перестановка 500 набора символов, используемого для PIN-кодов. То же самое можно сделать с более крупными наборами символов. Перестановка 500 может указывать порядок, в котором данные отображения для символов в наборе символов отправляют клиентскому устройству 200. Данные 510 отображения также показаны на Фиг. 4. Показанные данные 510 отображения представляют собой символы в наборе символов, но в непригодном для машинного считывания виде, в порядке, который указан в перестановке. В этом случае данные отображения формируют путем выбора случайного шрифта и наложения двух черных полосок в случайной ориентации. Вместо этого может быть использован любой способ формирования непригодных для машинного считывания данных, который известен в данной области техники. Ниже показаны данные отображения, соответствующие зашифрованным данным 520-529 символа/позиции, соответствующим символу. Например, если данные 510 отображения формируют для первой позиции, то данные 520-529 символа/позиции являются данными символа/позиции для комбинации из символа в наборе символов и первой позиции. Для следующей позиции используют новые данные символа/позиции, а также, необязательно, новую перестановку и/или новый набор отображения. В более защищенном варианте реализации каждая позиция имеет свои собственные данные символа/позиции, набор отображения и перестановку. The mapping data is sent to the
Клиентское устройство 200 выполнено с возможностью приема данных отображения от серверного устройства, связанного с зашифрованными данными символа/позиции. Клиентское устройство 200 содержит дисплей 210. Дисплей 210 выполнен с возможностью отображения принятых данных отображения для каждой позиции. После отображения данных отображения для конкретной позиции пользователь может выбрать правильный символ, соответствующий данной позиции в строке проверки подлинности. При выборе данных отображения связанные зашифрованные символ/позиция тоже выбираются для подмножества 360. Например, если первый символ строки проверки подлинности представляет собой 9, то пользователь может выбрать данные 511 отображения, и зашифрованные данные 521 символа/позиции добавятся в подмножество 361. Таким образом, пользователь выбирает правильные данные символа/позиции, и это при том, что злоумышленник не знает, что они представляют: данные символа/позиции зашифрованы и соответствуют изображению не дисплее, которое не является машиночитаемым. The
Например, клиентское устройство 200 может быть выполнено в соответствии со следующим псевдокодом.For example,
Для каждой позиции в строке проверки подлинности выполнить следующее: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
Различные варианты реализации устройств 100 и 200 могут содержать входной интерфейс, который может быть выбран из различных архитектур. Например, входной интерфейс может быть клавиатурой, сенсорным экраном, мышью и т. д. Посредством входного интерфейса могут быть выбраны данные отображения. Various implementations of
Запоминающие устройство, такие как запоминающее устройство 110 и 250, могут быть реализованы как электронная память, например флэш-память, или магнитная память, например жесткий диск и т. п. Запоминающее устройство 110 или 250 может содержать множество дискретных памятей, вместе составляющих запоминающее устройство. Запоминающее устройство может быть также реализовано как локальное запоминающее устройство или внешнее запоминающее устройство, например облачное запоминающее устройство. В последнем случае устройство содержит блок считывания и записи для считывания и записи на внешнее запоминающее устройство, например, через сетевое соединение. Например, часть запоминающего устройства может быть защищенным запоминающим устройством, а остальная часть может быть обычным запоминающим устройством. Запоминающее устройство также может содержать временную память, например, ОЗУ. Storage devices, such as
Как правило, каждое из устройств 100 и 200 содержит микропроцессор (не показан отдельно), который исполняет надлежащее программное обеспечение на устройствах 100 и 200; например, это программное обеспечение могло быть загружено и/или сохранено в соответствующей памяти, например, энергозависимой памяти, такой как ОЗУ, или энергонезависимой памяти, такой как флэш-память (не показана отдельно). В альтернативном варианте реализации устройства 100 и 200 полностью или частично реализованы в программируемой логике, например, такой как программируемая пользователем вентильная матрица (Field-Programmable Gate Array, FPGA). Устройства 100 и 200 могут быть реализованы, полностью или частично, в виде так называемой специализированной интегральной схемы (ASIC), т. е. интегральной схемы (ИС), изготовленной на заказ для ее конкретного применения. Например, схемы могут быть реализованы в КМОП, например, с использованием языка описания аппаратных средств, такого как Verilog, VHDL и т. д.Typically, each of the
В варианте реализации устройства 100 и 200 могут содержать одну или более схем. Схемы реализуют соответствующие блоки, описанные в настоящем документе. Схемы могут быть процессорной схемой и схемой хранения, причем процессорная схема исполняет инструкции, представленные в электронном виде в схемах хранения. In an embodiment,
Процессорная схема может быть выполнена распределенной, например, в виде нескольких схем подпроцессоров. Запоминающее устройство может быть распределенным по множеству распределенных запоминающих подустройств. Частично или полностью память может быть электронной памятью, магнитной памятью и т. д. Например, запоминающее устройством может иметь энергозависимую и энергонезависимую часть. Часть запоминающего устройства может быть предназначена только для чтения.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
Способ 600 для сервера выполнен с возможностью проверки пользователя с клиентского устройства, например, клиентского устройства 200, причем пользователь имеет доступ к строке проверки подлинности. Строка проверки подлинности имеет множество символов в множестве позиций, причем символы выбирают из набора символов. Способ 600 для сервера включает:
- сохранение (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 для клиента включает:
- прием (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 могут включать дополнительные операции. В частности, они могут включать получение, отображение и выбор данных отображения для набора символов. Зависимости между двумя способами указаны пунктирными стрелками.
Как очевидно специалисту в данной области, возможны множество разных путей исполнения этих способов. Например, порядок этапов может быть изменен или некоторые этапы могут быть исполнены параллельно. Кроме того, между этапами могут быть вставлены другие этапы способа. Вставленные этапы могут представлять собой усовершенствования способа, такие как описанные в настоящем документе, или могут не иметь отношения к способу. Например, некоторые этапы могут быть исполнены, по меньшей мере частично, параллельно. Кроме того, данный этап может быть не завершен полностью до начала следующего этапа. 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
Как может быть понятно, изобретение также распространяется на компьютерные программы, в частности, на компьютерные программы на носителе, выполненном с возможность воплощения изобретения на практике, или в нем. Программа может быть в виде исходного кода, объектного кода, промежуточного источника кода и объектного кода, например, в частично компилированном виде или любом ином виде, пригодном для использования в реализации способа согласно настоящему изобретению. Вариант реализации, относящийся к компьютерному программному продукту, содержит выполненные с возможность исполнения инструкции, соответствующие каждому из этапов обработки по меньшей мере одного из изложенных способов. Эти инструкции могут подразделяться на подпрограммы и/или храниться в одном или более файлах, которые могут быть связаны статически или динамически. Другой вариант реализации, относящийся к компьютерному программному продукту, содержит выполненные с возможность исполнения инструкции, соответствующие каждому из средств по меньшей мере одной из описанных систем и/или продуктов.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.
Рассмотрим защищенную клавиатуру. Она обеспечивает защиту от утраты учетных данных вследствие сканирования памяти. Защищенная клавиатура может рассматриваться как последовательность таблиц, в которой каждая строка представляет цифру от 0 до 9. В такой таблице 2 столбца. Один столбец содержит данные для отображения числа приложением, например , а второй столбец содержит некоторое произвольное значение. Обозначим как значение в памяти, являющееся результатом нажатия значения в строке i таблицы , т. е. значение во втором столбце строки i таблицы . Строки переставляют, чтобы скрыть реальные значения, которые они представляют. Каждый раз, когда пользователь вводит цифру, в память загружается новая таблица, чтобы обеспечить удаление связывающей информации, такой как, являются ли две введенные цифры одинаковыми.Consider a secure keyboard. It provides protection against lost credentials due to memory scans. A secure keyboard can be viewed as a sequence 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 , and the second column contains some arbitrary value. Denote as the value in memory resulting from pressing the value in row i of the table , i.e. the value in the second column of row i of the table . 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) Формирует имеющую размер случайную матрицу так, что все элементы в каждом столбце являются уникальными. (a) Forms a sized random matrix so that all elements in each column are unique.
(b) Формирует n случайных перестановок , действующих на множестве . (b) Generates n random permutations acting on the set .
(c) Формирует n наборов данных отображения. (c) Generates n data sets display.
(d) Определяет для таблицу , содержащую в строке j пару .(d) Defines for table , containing in the string j the pair .
(e) Отвечает с помощью только что случайно выбранной клавиатуры . (e) Responds with a newly randomly selected keyboard .
3. Пользователь предоставляет и вводит свой PIN, дающий в результате строку , которую отправляют обратно серверу. 3. The user provides and enter your PIN , resulting in the string , which is sent back to the server.
4. Сервер воссоздает PIN с помощью и , использующей взаимосвязь , вытекающую из того факта, что пользователь выбирает i-ю цифру PIN () в строке таблицы . Таким образом, мы делаем вывод, что удовлетворяет соотношению ), так что .4. The server recreates the PIN using and , using the relationship , resulting from the fact that the user selects the i-th digit of the PIN ( ) in line tables . Thus, we conclude that satisfies the relation ), so .
5. Наконец, сервер проверяет PIN с использованием своей базы данных и удаляет все сформированные данные из своей памяти. 5. Finally, the server checks the PIN against its database and removes any generated data from its memory.
Поскольку сервер формирует свежие случайные клавиатуры, будет принята сервером только один раз. Поэтому злоумышленник не может повторно воспроизвести , чтобы выдать себя за пользователя. Кроме того, эта случайность обеспечивает, что сканировщик памяти на устройстве пользователя не сможет со временем собрать конфиденциальные сведения о введенном PIN пользователя.As the server generates fresh random keyboards, will be accepted by the server only once. Therefore, an attacker cannot replay 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.
Пусть будет группой, сформированной посредством , порядок которой равен большому простому числу p. Предположим, что сервер имеет базу данных, содержащую производное имен пользователей и пароля Let will be a group formed by , whose order is equal to a large prime number p . Suppose the server has a database containing a derivative of usernames and password
где PIN - PIN пользователя, а - некоторый неизвестный элемент . Поскольку представляет собой схему «обязательств Педерсена» (Pedersen Commitment), которая теоретически скрывает информацию, не содержит информации о PIN, когда неизвестен [1].where PIN - user PIN, and - some unknown element . Because the is a "Pedersen Commitment" scheme that theoretically hides information does not contain PIN information when unknown [1].
Пусть обозначает шифрование Эль-Гамаля [2] помощью секретного ключа. Поэтому Let denotes the encryption of ElGamal [2] using a secret key. That's why
где r - некоторое равномерное случайное значение по модулю p и .where r is some uniform random value modulo p and .
Предполагается, что пользователь U сохранил , который используется в .User U is assumed to have saved , which is used in .
Тогда проверка подлинности происходит следующим образом: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) Формирует случайный секретный ключ . (a) Generates a random secret key .
(b) Формирует имеющую размер случайную матрицу , где . (b) Forms a sized random matrix , where .
(c) Формирует n случайных перестановок , действующих на множестве . (c) Generates n random permutations acting on the set .
(d) Формирует n наборов данных отображения. (d) Generates n data sets display.
(e) Определяет для таблицу , содержащую в строке j пару .(e) Defines for table , containing in the string j the pair .
(f) Отвечает с помощью только что случайно выбранной клавиатуры и открытого ключа . (f) Responds with a newly randomly selected keyboard and public key .
3. Пользователь предоставляет и вводит свой , дающий в результате строку . 3. The user provides and enter your , resulting in the string .
4. Пользователь извлекает из памяти и формирует случайное шифрование с использованием открытого ключа h. 4. User retrieves from memory and generates a random encryption using the public key h .
5. Пользователь отвечает строкой . 5. The user responds with a string .
6. Сервер расшифровывает и проверяет, совпадает ли она с . 6. Server decrypts and checks if it matches .
7. Наконец, удаляет все сформированные данные из своей памяти. 7. Finally, deletes all generated data from its memory.
Вместо матрицы 10 на n для набора может быть использован другой набор символов. Instead of a 10 by n matrix for the set a different character set may be used.
Корректность: Следует отметить, что цифровая строка может быть представлена целым числом Correctness: It should be noted that the numeric string can be represented as an integer
Кроме того, из гомоморфизма Эль-Гамаля Moreover, from the ElGamal homomorphism
вытекает follows
так что so
Регистрация: Тогда регистрация происходит следующим образом: 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) Формирует случайный секретный ключ . (a) Generates a random secret key .
(b) Формирует имеющую размер случайную матрицу , где . (b) Forms a sized random matrix , where .
(c) Формирует n случайных перестановок , действующих на множестве . (c) Generates n random permutations acting on the set .
(d) Формирует n наборов данных отображения. (d) Generates n data sets display.
(e) Определяет для таблицу , содержащую в строке j пару . (e) Defines for table , containing in the string j the pair .
(f) Отвечает с помощью только что случайно выбранной клавиатуры и открытого ключа . (f) Responds with a newly randomly selected keyboard and public key .
3. Пользователь предоставляет и вводит свой выбранный , дающий в результате строку . 3. The user provides and enters your chosen , resulting in the string .
4. Пользователь формирует случайный и случайное шифрование с использованием открытого ключа h. 4. User generates a random and random encryption using the public key h .
5. Пользователь отвечает строкой . 5. The user responds with a string .
6. Сервер расшифровывает в и сохраняет пользователя U вместе с . 6. Server decrypts in and saves user U along with .
7. Наконец, удаляет все оставшиеся сформированные данные из своей памяти. 7. Finally, removes all remaining generated data from its memory.
Нулевые знания сервера: Сервер видит только основанное на случайном ключе шифрование и саму . Из семантической стойкости схемы Эль-Гамаля [3] следует, что умножение основанного на случайном ключе шифрования на результат клавиатуры скрывает, в том числе для сервера, все выборы, сделанные пользователем на клавиатуре. Это также называют ослеплением шифрования. Кроме того, обязательства Педерсена обеспечивают невозможность использования для выделения PIN. Zero knowledge of the server: The server only sees encryption based on a random key and herself . 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 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
На Фиг. 6b показано схематическое представление процессорной системы 1140 согласно варианту реализации. Процессорная система содержит одну или более интегральных схем 1110. Архитектура одной или более интегральных схем 1110 схематически показана на Фиг. 6b. Схема 1110 содержит блок 1120 обработки, например, ЦП, для выполнения компонентов компьютерной программы с целью осуществления способа согласно варианту реализации и/или реализации его модулей или блоков. Схема 1110 содержит память 1122 для хранения программного кода, данных и т. д. Программный код конфигурирует процессорную систему как вариант реализации клиентского устройства или серверного устройства.On FIG. 6b shows a schematic representation of a
Часть памяти 1122 может быть предназначена только для чтения. Схема 1110 может содержать элемент 1126 связи, например, антенну, разъемы или то и другое и т. п. Схема 1110 может содержать специализированную интегральную схему 1124 для выполнения части или всей обработки, определенной в указанном способе. Процессор 1120, память 1122, специализированная ИС 1124 и элемент 1126 связи могут быть соединены друг с другом посредством межсоединения 1130, например, шины. Процессорная система 1110 может быть выполнена с возможностью контактного и бесконтактного обмена данными с использованием антенны и/или разъема, соответственно. Portion of
Например, в варианте реализации клиентское устройство серверное устройство, устройство формирования ключа и/или устройство проверки подписи могут содержать процессорную схему и схему памяти, причем процессор выполнен с возможностью исполнения программного обеспечения, хранящегося в схеме памяти. Например, процессорная схема может представлять собой процессор 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)
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)
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)
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 | |
US8195951B2 (en) | Data processing system for providing authorization keys | |
US11310049B2 (en) | Homomorphic encryption for password authentication | |
Cheon et al. | Ghostshell: Secure biometric authentication using integrity-based homomorphic evaluations | |
US20200021448A1 (en) | Public-private key pair account login and key manager | |
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 | |
US9325499B1 (en) | Message encryption and decryption utilizing low-entropy keys | |
EP3496331A1 (en) | Two-party signature device and method | |
Odelu et al. | A secure and efficient ECC‐based user anonymity preserving single sign‐on scheme for distributed computer networks | |
US11128453B2 (en) | Visual image authentication | |
Choi et al. | Security enhanced multi-factor biometric authentication scheme using bio-hash function | |
Mishra et al. | An anonymous biometric‐based remote user‐authenticated key agreement scheme for multimedia systems | |
Wei et al. | Secure control protocol for universal serial bus mass storage devices | |
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 | |
JP5101535B2 (en) | Authentication method, authentication system, program, and shared key generation method | |
Cheng et al. | Smart card–based password authenticated key agreement protocol using chaotic maps |