WO2017003051A1 - 랜덤하면서 유일한 코드를 생성하는 전자 장치 및 방법 - Google Patents
랜덤하면서 유일한 코드를 생성하는 전자 장치 및 방법 Download PDFInfo
- Publication number
- WO2017003051A1 WO2017003051A1 PCT/KR2015/013444 KR2015013444W WO2017003051A1 WO 2017003051 A1 WO2017003051 A1 WO 2017003051A1 KR 2015013444 W KR2015013444 W KR 2015013444W WO 2017003051 A1 WO2017003051 A1 WO 2017003051A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- code
- character set
- otp
- generating
- mapping
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3226—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
- H04L9/3228—One-time or temporary data, i.e. information which is sent for every authentication or authorization, e.g. one-time-password, one-time-token or one-time-key
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/083—Network architectures or network communication protocols for network security for authentication of entities using passwords
- H04L63/0838—Network architectures or network communication protocols for network security for authentication of entities using passwords using one-time-passwords
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/84—Mapping; Conversion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0853—Network architectures or network communication protocols for network security for authentication of entities using an additional device, e.g. smartcard, SIM or a different communication terminal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0863—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/083—Network architectures or network communication protocols for network security for authentication of entities using passwords
- H04L63/0846—Network architectures or network communication protocols for network security for authentication of entities using passwords using time-dependent-passwords, e.g. periodically changing passwords
Definitions
- the present invention relates to an electronic device and method for generating a random and unique code, and more particularly, to an electronic device and method for generating a random and unique code using a time-based one time password.
- All computer application systems including the operating system can uniquely generate IDs and assign them to each user in order to distinguish the accessing users.
- IDs can be easily exposed or leaked, and in order to compensate for this, users can easily create passwords that can be memorized and map them with IDs to manage them. Accordingly, security may be increased when a password is used together when the user's ID is exposed.
- the user usually sets a simple password such as '12345678' that is easy to remember. Accordingly, there is a vulnerability that can be easily inferred by others or hackers. Even if a complex password (eg aB3Pe # 28dwqP) is set, the hacker can easily steal the username and password using advanced hacking techniques, such as hacking tools such as Key Logger. To compensate for this, the system requires the user to periodically change complex passwords (of a certain length, mixed case of letters, special characters, numbers). In reality, it is very difficult for a user to remember such a complicated password, and a real user writes down his ID and password for each system.
- a complex password eg aB3Pe # 28dwqP
- the ID / password that the user knows (remembers) and what the user possesses are used together. That is, since authentication is performed using an ID, a password that a user knows (Knowledge Factor), and a user that has a Possession Factor, it is referred to as two factor authentication. Furthermore, the use of multiple factors, especially user biometric information (fingerprint recognition, iris recognition, voice recognition, etc.), for user authentication is called multi-factor authentication.
- a one-time code is a string of ASCII codes, alphanumeric, ⁇ '0',..., '9', 'A',..., 'Z', 'a',..., 'z' ⁇ and special It consists of a combination of displayable ASCII characters ( ⁇ '!', '@',... ⁇ ). This does not mean a real user ID registered in the system, but a randomly generated ID of a certain length, which means a string consisting of characters contained in a given character set.
- the random IDs assigned to the user are "A012ZE”, “KABFZE”, "019D3F",.... Becomes
- TOTP (RFC6238) is used to periodically generate such codes with different character combinations, and unique and random codes can be generated by using each generated TOTP digit as an index of a given character set.
- OTP has the probability that the same result is obtained when algorithmically using different SEED at the same time. In other words, there is a probability of collision. After all, only the TOTP code cannot be used as an ID because it does not satisfy the uniqueness of ID at the same time.
- the conventional user classification technique operates based on a method in which an ID and a password are fixed, thereby causing a problem of exposing a user ID and a password.
- the present invention has been made to solve the above-described problem, various embodiments of the present invention can provide an electronic device and method for generating a random and unique code.
- a method of generating a code includes obtaining a first seed, a first unique code and a character set assigned to a first user, for generating a one time password; Generating a first one time password (OTP) using the first seed; Generating a first sub code by mapping an operation result of the first OTP and a first unique code to the character set; Generating a second sub code by mapping the first OTP to the character set; And generating the code by using the first sub code and the second sub code.
- OTP one time password
- an electronic device for generating a code may include a memory; And a processor electrically connected to the memory, wherein the memory, when executed, obtains a first seed, a first unique code assigned to the first user and a character set for generating a one-time password, Generate a first one time password (OTP) using the first seed, generate a first sub code by mapping operation results of the first OTP and the first unique code to the character set, and generate the first OTP. May generate a second sub code by mapping a to the character set, and store an instruction for generating the code by using the first sub code and the second sub code.
- OTP one time password
- an electronic device and a method for generating a random and unique code may be provided.
- the generated random and unique code can be used in a variety of technical fields, such as IDs to identify users in the system, input codes for electronic commerce, identification codes for money substitutes such as cultural gift certificates.
- the electronic device and the method according to various embodiments of the present disclosure may dynamically generate a random and unique code over time, thereby significantly reducing the possibility of the code leaking.
- FIG. 1 is a flowchart illustrating a unique code generation method according to various embodiments of the present disclosure.
- FIG. 2 is a block diagram of an electronic device that generates a code according to various embodiments of the present disclosure.
- FIG. 3 is a flowchart illustrating a code generation method according to various embodiments of the present disclosure.
- FIG. 4 is a flowchart illustrating a code generation method according to various embodiments of the present disclosure.
- FIG. 5 is a flowchart illustrating an offset determination process according to various embodiments of the present disclosure.
- FIG. 6 is a flowchart illustrating a character set determination method according to various embodiments of the present disclosure.
- FIG. 7 is a flowchart illustrating a character set determination method according to various embodiments of the present disclosure.
- FIG. 1 is a flowchart illustrating a unique code generation method according to various embodiments of the present disclosure.
- the first electronic device 100 may be an electronic device that generates a unique code
- the server 200 may be an electronic device that generates a unique code and verifies a unique code requested for verification.
- the server 200 may be an electronic device that manages a service using a unique code.
- the server 200 is an electronic device that manages a web service and manages a user ID and login information corresponding thereto.
- the first electronic device 100 may share the first unique code and the first seed with the server 200.
- the server 200 transmits the first unique code and the first seed to the first electronic device 100 when subscribing the first user using the first electronic device 100 to the system. can do.
- the server 200 may transmit information capable of displaying the first unique code and the first seed to another electronic device.
- the first user may request subscription to the server 200 through the first electronic device 100 or another electronic device.
- the server 200 may assign a first unique code to the first user in response to the subscription request.
- the server 200 may transmit the first unique code to the first electronic device 100 or another electronic device.
- the server 200 may also grant the first seed to the first user.
- the first seed may be given to the first user for generating a time-based one-time password.
- the server 200 may transmit the first seed to the first electronic device 100 or another electronic device.
- the server 200 may transmit a QR code image including the first unique code and the first seed to the first electronic device 100 or another electronic device.
- the first user may photograph the QR code displayed on another electronic device with the first electronic device 100, and accordingly, the first electronic device 100 may acquire the first unique code and the first seed.
- the first electronic device 100 may generate a first one time password (OTP) using the first seed and the first time information. That is, the first electronic device 100 may generate the first OTP using the first time information and the first seed corresponding to the first time point at the first time point. In addition, at the second time point, the first electronic device 100 may generate the second OTP using the second time information and the first seed corresponding to the second time point. The first electronic device 100 may dynamically generate the OTP according to the passage of time.
- OTP one time password
- the first electronic device 100 may generate a first code using the first OTP and the first unique code.
- a process in which the first electronic device 100 generates a random and unique first code using the first OTP and the first unique code will be described later in more detail.
- the randomness and dynamic changeability of the first OTP and the uniqueness of the first unique code can be guaranteed, so that they can be random and unique. .
- the randomness and uniqueness of the first code will be described later in more detail.
- the server 200 may generate a first OTP using the first seed and the first time information.
- the server 200 may generate the same first OTP generated by the first electronic device 100 by using the first time information and the first seed corresponding to the first time point from the first time point.
- the server 200 may also generate a second OTP identical to that generated by the first electronic device 100 at the second time point by using the second time information and the first seed corresponding to the second time point at the second time point. . That is, the server 200 may also be generated while dynamically changing the OTP.
- the server 200 may generate a first code using the first OTP and the first unique code.
- the server 200 generates the first code using the first OTP and the first unique code.
- the method in which the first electronic device 100 generates the first code using the first OTP and the first unique code. May be the same as Accordingly, the first code generated by the server 200 and the first code generated by the first electronic device 100 may be the same.
- the server 200 may receive a code verification request.
- the server 200 may receive a code confirmation request from an electronic device operated by a first user, for example, the first electronic device 100 or another electronic device.
- the server 200 may determine whether the code in the code verification request is the same as the first code generated by the server 200. If the code in the code verification request is the same as the first code generated by the server 200, in operation 180, the server 200 may determine that the code is suitable. If the code in the code verification request is different from the first code generated by the server 200, in operation 190, the server 200 may determine that the code is inappropriate. The server 200 may perform or not perform additional services such as user login or electronic commerce payment, depending on whether the code is appropriate or inadequate.
- FIG. 2 is a block diagram of an electronic device that generates a code according to various embodiments of the present disclosure.
- the electronic device 100 may include an imaging module 101, a processor 102, and a memory 103.
- the photographing module 101 is a module capable of photographing an external landscape.
- the processor 102 may acquire information of a seed, a unique code, and a character set by using an image acquired through the photographing module 101. Can be.
- the processor 102 stores a CPU, a ROM in which a control program for controlling the electronic device 100 is stored, and a signal or data input from the outside of the display device 100, or is performed by the display device 100.
- RAM may be used as a storage area for work.
- the CPU may include single core, dual core, triple core, or quad core.
- the CPU, ROM and RAM can be interconnected via an internal bus.
- the memory 103 may include both the above-described ROM and RAM, and may store information about a program or algorithm, a seed, a unique code, and a character set for generating a code.
- the memory 103 when executed, causes the processor 102 to obtain a first seed for generating a one time password, a first unique code and a character set assigned to the first user, and to use the first seed. Generate a first OTP (one time password), map the operation result of the first OTP and the first unique code to the character set to generate a first sub code, and map the first OTP to the character set To generate a second sub code, and to store an instruction for generating the code by using the first sub code and the second sub code.
- a first OTP one time password
- the memory 103 may be configured to generate, by the processor 102, the first OTP by inputting first time information corresponding to the first seed and the first time point into a time-based one-time encryption algorithm when executed. Can be saved.
- the memory 103 converts the first unique code into a numeric code, adds the numeric code to the first OTP, and adds the summation, by the processor 102, when executed, in comparison with the character set. Instructions for generating a first sub code by mapping a result to the character set may be stored.
- the memory 103 may, when executed, the processor 102 performs a mod operation on the sum result with the size of the character set, and outputs a result of performing a mode operation on the sum result. Instructions for generating the first sub code may be stored.
- the memory 103 executes an instruction that, when executed, causes the processor 102 to apply a predetermined offset to the sum result and to map the offset applied sum result to the character set to generate the first sub code. Can be stored.
- the memory 103 may, when executed, perform a mod operation on the offset-added summing result with the size of the character set, and perform a result of performing a mode operation on the summing result.
- An instruction for generating the first sub code by mapping to the character set may be stored.
- the memory 103 may be configured to generate the second sub code by executing the processor 102 to apply the predetermined offset to the first OTP and to map the offset-applied first OTP to the character set. Instructions can be stored.
- the memory 103 when executed, causes the processor 102 to perform a mod operation on the offset-applied first OTP with the size of the character set, and to perform a mode operation on the first OTP. Instructions for mapping the character set to the character set to generate the second sub code.
- the memory 103 may store instructions that, when executed, obtain the character set by the processor 102 obtaining a basic character set and shuffling elements of the basic character set.
- the memory 103 when executed, causes the processor 102 to obtain a second seed that is the same for all users of the system, generate a second OTP using the second seed, and generate a second OTP for the second OTP.
- An instruction for swapping each element of the elementary character set with another element may be stored by using a mod operation result of the number of elements of the elementary character set.
- the server 200 may include a communication module 201 and a processor 202.
- the communication module 201 may transmit information on the seed, the unique code, and the character set to another electronic device according to the request. In addition, the communication module 201 may perform a code verification request including a code.
- the processor 202 may assign a unique code to the user. Alternatively, the processor 202 may generate a code in response to the code verification request. The processor 202 may determine whether the code verification request is legitimate by comparing the generated code with the code in the code verification request.
- FIG. 3 is a flowchart illustrating a code generation method according to various embodiments of the present disclosure.
- the first electronic device 100 may obtain a first unique code and a different first seed for each user.
- the first seed may be granted by the server 200 to the first user.
- the first unique code is a character string based on an ASCII code, and may be a combination of alphamet, numbers, and special characters.
- the first unique code may be a code selected from elements of a preset character set.
- the server 200 may generate a first unique code for the first user by using an algorithm that generates a unique code from the character set and transmit it to the first electronic device 100.
- the server 200 may generate a unique code for another user, and the unique code assigned to each of the users may be different.
- the first electronic device 100 may generate a first OTP using the first seed and the first time information.
- the first OTP may consist of numbers, for example.
- the first electronic device 100 may generate a numeric code corresponding to the first unique code by mapping the first unique code to a preset character set.
- the first electronic device 100 may set ⁇ '0', '1', '2',... As a preset character set. , '9',, 'A', 'B',... , 'Z' ⁇ is assumed. In addition, it is assumed that the first electronic device 100 acquires "AX83Z0" as the first unique code. According to an embodiment of the present disclosure, the first electronic device 100 may convert each digit of the first unique code into a numeric code by checking the index of the digit of each character in the first unique code. .
- the first electronic device 100 may convert the unique code of "A” into a numeric code of "10” by confirming that "A", which is the first digit character of the first code, is the 11th index in the character set. Can be. This may be due to the starting point of the numeric code being zero.
- the first electronic device 100 may convert the unique code of "X” into “33” by confirming that "X” is the 34th index in the character set.
- the first electronic device 100 may convert the first unique code "AX83Z0" into a numeric code of ⁇ 10,33,8,3,35,0 ⁇ .
- the first electronic device 100 may add the first OTP and the numeric code. For example, when the first OTP is "382901", each digit of the first OTP may be summed with each digit of the converted numeric code. That is, the electronic device 100 may sum the number codes of ⁇ 10,33,8,3,35,0 ⁇ with the first OTP of ⁇ 3,8,2,9,0,1 ⁇ and ⁇ 13 , 41, 10, 12, 35, 1 ⁇ can be obtained. On the other hand, when the total number of elements in the character set exceeds 36, for example, 36, the first electronic device 100 performs a mod operation on the total number of elements in the character set. It can be substituted as a result.
- the first electronic device 100 may replace “41” with "5" which is a result of performing a 36 mode operation on "41". Accordingly, the first electronic device 100 will be described later.
- a sum result of ⁇ 13,5,10,12,35,1 ⁇ can be obtained.
- an offset may be applied when generating the sum result, which is described in more detail.
- the first electronic device 100 may generate a first sub code by mapping the sum result to a character set. For example, the first electronic device 100 may interpret each number of ⁇ 13, 5, 10, 12, 35, 1 ⁇ as an index and obtain a character corresponding thereto from the character set. That is, the first electronic device 100 may obtain "D" corresponding to the index of "13" as the first character of the first sub code. The electronic device 100 may obtain "5" corresponding to the index of "5" as the second character of the first sub code. According to the above-described scheme, the first electronic device 100 may obtain a first sub code of “D5ACY1”.
- the first electronic device 100 may generate a second sub code by mapping the first OTP to a character set. For example, the first electronic device 100 interprets that each digit of the first OTP of ⁇ 3,8,2,9,0,1 ⁇ is an index, and thus the second sub code corresponding to each digit. Each digit of a character can be generated. For example, the first electronic device 100 may obtain a letter of '3' corresponding to the number of '3' and may obtain a letter of '8' corresponding to the number of '8'. Accordingly, the first electronic device 100 may obtain a second sub code of “382901”. In another embodiment of the present invention, a second sub code may be obtained by mapping a result of applying an offset to each digit of a number to a character set, which will be described later in more detail.
- the first electronic device 100 may generate a first code including the first sub code and the second sub code.
- the first electronic device 100 may generate a first code of, for example, “D5ACY1382901” by concatenate the first sub code and the second sub code.
- “D5ACY1” which is the first sub code of the first code, is set by summing up a dynamic and randomly generated OTP and a unique code, and guarantees uniqueness by the unique code while ensuring dynamic and randomness. Can be.
- the first electronic device 100 since a code having the same sum result may have a low probability, the first electronic device 100 according to various embodiments of the present disclosure may generate a first code that is a unique code by concatenateing a second sub code.
- FIG. 4 is a flowchart illustrating a code generation method according to various embodiments of the present disclosure.
- the first electronic device 100 may obtain a first unique code and a different first seed for each user. As described above, the first electronic device 100 receives the first unique code and the first seed from the server 200 or photographs a QR code displayed by another electronic device to capture the first unique code and the first seed. Can be received.
- the first seed may be a seed for generating an OTP assigned to the first user by the server.
- the first electronic device 100 may generate a first OTP using the first seed and the first time information.
- the first electronic device 100 may generate a numeric code corresponding to the first unique code by mapping the first unique code to a character set. For example, similarly to the embodiment of FIG. 3, the first electronic device 100 may obtain a first unique code of “AX83Z0”, and the first time information corresponding to the first time point at the first time point may be obtained. And a first OTP of “382901” using the first seed.
- the first electronic device 100 may preset ⁇ '0', '1', '2',...
- a first unique code may be mapped to a character set of 'Z' ⁇ to convert the first unique code "AX83Z0" into a numeric code of ⁇ 10,33,8,3,35,0 ⁇ .
- the first electronic device 100 may add the first OTP and the numeric code. For example, when the first OTP is "382901", each digit of the first OTP may be summed with each digit of the converted numeric code. That is, the electronic device 100 may sum the number codes of ⁇ 10,33,8,3,35,0 ⁇ with the first OTP of ⁇ 3,8,2,9,0,1 ⁇ and ⁇ 13 , 41, 10, 12, 35, 1 ⁇ can be obtained.
- the first electronic device 100 may apply an offset to the sum result.
- the first electronic device 100 may set the offset to 18, for example.
- the first electronic device 100 may add an offset of 18 to the number of digits of the sum result.
- the first electronic device may obtain a result of mode calculating the size of the character set to the offset-added sum result. Accordingly, the first electronic device 100 may obtain ⁇ 31, 23, 28, 30, 17, 19 ⁇ which is an offset-added sum result.
- the first electronic device 100 may generate the first sub code by mapping the offset-added sum result to the character set.
- the first electronic device 100 may interpret '31', which is the offset-added sum result, as an index in the character set, and may obtain '31', which is the 31st character.
- the first electronic device 100 may sequentially convert '23', '28', '30', '17', and '19' to characters, thereby generating a first sub code of “VNSUHJ”. can do.
- the first electronic device 100 may apply an offset to the first OTP. Accordingly, offset 18 is added to each number of the first OTP of ⁇ 3,8,2,9,0,1 ⁇ to generate the offset-first first OTP of ⁇ 21,26,20,27,18 ⁇ . Can be.
- the first electronic device 100 may generate a second sub code by mapping the offset-applied first OTP to a character set. That is, the first electronic device 100 may generate the second sub code by interpreting each number of ⁇ 21, 26, 20, 27, 18 ⁇ of the offset-added first OTP as an index in the character set. For example, the first electronic device 100 may obtain 'L', which is the 21st character in the character set, based on '21', which is the first number of the offset first OTP. In the above-described manner, the first electronic device 100 may generate a second sub code of “LQKRIJ” from ⁇ 21, 26, 20, 27, 18 ⁇ of the offset-applied first OTP.
- the first electronic device 100 may generate a first code including the first sub code and the second sub code.
- the first electronic device 100 may generate a first code of, for example, “D5ACY1LQKRIJ” by concatenate the first sub code and the second sub code.
- “D5ACY1” which is the first sub code of the first code, is set by summing up a dynamic and randomly generated OTP and a unique code, and guarantees uniqueness by the unique code while ensuring dynamic and randomness. Can be.
- the first electronic device 100 since a code having the same sum result may have a low probability, the first electronic device 100 according to various embodiments of the present disclosure may generate a first code that is a unique code by concatenateing a second sub code.
- a random six-digit TOTP code would be '839023' and '659921'.
- preId + C ((d + x + offset)% S); // append to the character created in the previous step
- FIG. 5 is a flowchart illustrating an offset determination process according to various embodiments of the present disclosure.
- the first electronic device 100 may obtain the same second seed for all users.
- the second seed may be a seed value for generating a time-based one-time password, for example, and may be different from the first seed.
- the first electronic device 100 may generate a second OTP based on the second seed and the first time information.
- the first electronic device 100 may determine an offset to be used in FIG. 4 using the second OTP. have.
- the first electronic device 100 may set an offset as a result of a mode operation on the number of elements in the character set to an offset generated using the second seed.
- the second seed may be the same not only for the first user but also for all users subscribed to the system, so that the offset generated at the first point in time may be the same for all users, so that uniqueness of the generated code can be continuously guaranteed. have.
- FIG. 6 is a flowchart illustrating a character set determination method according to various embodiments of the present disclosure.
- the first electronic device 100 may obtain the same second seed for all users.
- the second seed may be a seed value for generating a time-based one-time password, for example, and may be different from the first seed.
- the first electronic device 100 may generate a second OTP using the second seed and the first time information.
- the first electronic device 100 may determine the character set using the second OTP. For example, the first electronic device 100 may first acquire a basic character set, and determine the character set to be used for code generation by modifying the basic character set based on the second OTP.
- FIG. 7 is a flowchart illustrating a character set determination method according to various embodiments of the present disclosure.
- the first electronic device 100 may obtain a basic character set.
- the first electronic device 100 may use ⁇ '0', '1', '2',... , '9' ⁇ can be obtained.
- the number of elements of the basic character set may be 10.
- the first electronic device 100 may generate a second OTP using the second seed and the first time information.
- the first electronic device 100 may generate a second OTP using a hOTP algorithm. For example, it is assumed that the first electronic device 100 generates the second OTP of 123456.
- the first electronic device 100 may modulate the size of the second OTP and the character set to obtain a calculation result value.
- the first electronic device 100 may swap the positions of two characters of the basic character set using the operation result value. For example, the first electronic device 100 may obtain 6 that is a result of the mode operation on 123456. The first electronic device 100 may interpret the result of operation 6 as an index of the character set and swap the sixth character of the character set with the zeroth character.
- the first electronic device 100 may sequentially swap all the characters to acquire a character set that shuffles the basic character set. For example, the first electronic device 100 interprets an OPT generation, a mode operation, and an operation result value as an index on the first character of the character set, and performs swapping with the character corresponding to the first character and the index.
- the above-described process can be performed for the second to ninth characters.
- the first electronic device 100 may generate a first code using the shuffled character set.
- the character set can be dynamically changed, and if only the seed is shared, the same character set can be generated for all users, so that the uniqueness of the generated code can be assured in succession.
- the number 6 is the index of C.
- the number corresponding to C [6] is replaced with the C [0] th character to be replaced. That is, swapping.
- the value of the modularity of the HOTP generated in each step is S, and
- the shuffling character set is used to generate a random code once.
- a character set that guarantees uniqueness of the generated code may be shuffled.
- any such software may be, for example, volatile or nonvolatile storage, such as a storage device such as a ROM, whether or not removable or rewritable, or a memory such as, for example, a RAM, a memory chip, a device or an integrated circuit. Or, for example, CD or DVD, magnetic disk or magnetic tape and the like can be stored in a storage medium that is optically or magnetically recordable and simultaneously readable by a machine (eg computer).
- a machine eg computer
- the graphic screen updating method of the present invention may be implemented by a computer or a portable terminal including a control unit and a memory, wherein the memory is a machine suitable for storing a program or programs including instructions for implementing embodiments of the present invention. It will be appreciated that this is an example of a readable storage medium. Accordingly, the present invention includes a program comprising code for implementing the apparatus or method described in any claim herein and a storage medium readable by a machine (such as a computer) storing such a program. In addition, such a program may be transferred electronically through any medium, such as a communication signal transmitted via a wired or wireless connection, and the present invention includes equivalents thereof as appropriate.
- the device may receive and store the program from a program providing device connected by wire or wirelessly.
- the program providing apparatus includes a memory for storing a program including instructions for causing the graphic processing apparatus to perform a preset content protection method, information necessary for the content protection method, and wired or wireless communication with the graphic processing apparatus.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Document Processing Apparatus (AREA)
- User Interface Of Digital Computer (AREA)
- Controls And Circuits For Display Device (AREA)
- Storage Device Security (AREA)
- Information Transfer Between Computers (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
코드를 생성하는 방법은, 일회용 암호를 생성하기 위한 제 1 씨드, 제 1 사용자에게 부여된 제 1 고유 코드 및 문자 세트를 획득하는 동작, 상기 제 1 씨드를 이용하여 제 1 OTP(one time password)를 생성하는 동작, 상기 제 1 OTP 및 제 1 고유 코드의 연산 결과를 상기 문자 세트에 매핑하여 제 1 서브 코드를 생성하는 동작, 상기 제 1 OTP를 상기 문자 세트에 매핑하여 제 2 서브 코드를 생성하는 동작 및 상기 제 1 서브 코드 및 상기 제 2 서브 코드를 이용하여 상기 코드를 생성하는 동작을 포함한다.
Description
본 발명은 랜덤하면서 유일한 코드를 생성하는 전자 장치 및 방법으로, 더욱 상세하게는 시간 기반 일회용 암호(time-based one time password)를 이용하여 랜덤하면서 유일한 코드를 생성하는 전자 장치 및 방법에 관한 것이다.
운영체제를 비롯한 모든 컴퓨터 응용 시스템은 접근하는 사용자의 구분을 위하여 아이디(ID)를 유일하게 생성하여 각 사용자에게 부여할 수 있다. 아이디는 쉽게 노출 혹은 유출될 수 있어 이를 보완하기 위하여 사용자가 쉽게 기억할 수 있는 암호를 생성하여 아이디와 함께 매핑하여 관리할 수 있다. 이에 따라, 사용자의 아이디가 노출된 경우에 비하여 암호를 함께 이용하는 경우에 보안성이 증대될 수 있다.
하지만, 사용자는 일반적으로 기억하기 쉬운 암호, 예를 들어‘12345678’과 같이 단순한 형태를 설정하는 경우가 일반적이다. 이에 따라, 타인 혹은 해커가 쉽게 암호를 유추할 수 있는 취약점이 존재한다. 설령, 복잡한 암호(예, aB3Pe#28dwqP)가 설정된 경우라 하더라도, 해커는 발달된 해킹기술, 예를 들어 키로거(Key Logger)와 같은 해킹툴을 이용하여 아이디와 암호를 쉽게 탈취할 수 있다. 이를 보완하기 위하여, 시스템은 사용자에게 복잡한 암호(일정한 길이, 영문자 대/소문자, 특수문자, 숫자를 혼합)를 주기적으로 변경하여 사용하도록 요구한다. 현실적으로 사용자가 이와같은 복잡한 암호를 기억하는 것은 대단히 어렵고, 실제 사용자는 자신의 아이디와 암호를 시스템별로 메모하여 사용하고 있다.
이와 더불어, 단순 아이디/암호 기반만으로 사용자를 구분는 것은 해킹기술의 발달로 인하여 한계를 가지고 있고, 이를 보완하기 위하여 사용자가 기억하는 정보(아이디/암호)와 사용자만이 소지하고 있는 것(예, 일회용비밀번호 생성기, OTP 토큰, 보안카드 등)를 함께 사용하도록 하고, 이와 같은 사용자인증 방법을 투팩터(2 factor)인증이라고 한다.
즉, 사용자가 인지(기억)하고 있는 아이디/암호와 사용자가 소지하고 있는 무엇(예, OTP 토큰, 보안카드 등)를 함께 사용하도록 한다. 즉, 사용자가 인지(기억)(Knowledge Factor)하고 있는 아이디, 암호와 사용자가 소지(Possession Factor)하고 있는 것을 이용하여 인증을 수행하므로 2 factor인증이라고 일컫는다. 나아가 사용자인증에 여러요소, 특히 사용자 생체정보(지문인식, 홍체인식, 음성인식등)를 함께 사용하는 것을 멀티팩터(multi factor)인증이라고 한다.
사실, 시스템에 접근하는 사용자구분을 위해서는 아이디만 있으면 되나 보안상 이를 보완하기 위하여 복잡한 암호와 여러요소(multi factor)를 함께 사용자에게 요구하고 있는 것이다. 이것은 사용자를 위한것이 아닌 시스템을 위한 형태로 사용자 인증기술이 연구/개발되어지고 있다는 것을 의미한다고 볼 수 있다.
일회용 코드는 ASCII 코드로 구성된 문자열로써, 알파벳과숫자(alphanumeric, {‘0’, …, ‘9’, ‘A’, …, ‘Z’, ‘a’, … ,’z’})와 특수문자(displayable ASCII character, {‘!’, ‘@’, … })의 조합으로 구성된다. 이것은 시스템에 등록되어 있는 실제 사용자 아이디를 의미하는 것이 아닌 일정길이의 임의로 생성된 아이디이며, 주어진 문자집합에 포함된 문자로 구성된 문자열을 뜻한다.
예를 들면, 주어진 문자집합이 { ‘0’, … , ‘9’, ‘A’, … , ‘Z’ } 라고 하고 길이를 6이라고 하면, 사용자에게 할당된 랜덤 아이디는 ‘A012ZE’, ‘KABFZE’, ‘019D3F’, … 이 된다. 이 때 사용자에게 할당된 일회용 코드는 유일해야 한다, 즉 주어진 문자집합을 이용하여 생성할 수 있는 최대 코드의 개수는 36(알파벳 대문자 개수(26) + 숫자(10)) ^ 6(랜덤아이디 길이) = 2,176,782,336 개가 된다.
이와 같은 코드를 주기적으로 다른 문자조합으로 생성하기 위해 TOTP(RFC6238)를 사용하였고, 생성된 TOTP 각 자리수를 주어진 문자집합의 인덱스(index)로 사용함으로써 유일하면서도 랜덤한 코드를 생성할 수 있다. 하지만 OTP는 알고리즘적으로 동일 시점에 다른 SEED를 사용하였을 때, 같은 결과가 나올 확률이 있다. 즉, 충돌이 발생할 확률이 있다는 것이다. 결국 TOTP 코드만 가지고는 동일 시점에 아이디의 요건인 유일성을 만족하지 않으므로 아이디로 사용할 수 없다.
상술한 바와 같이, 종래의 사용자 구분 기술은, 아이디와 암호가 고정된 방식에 기초하여 동작하며, 이에 따라 사용자 아이디 및 암호가 노출되는 문제점이 발생한다. 본 발명은 상술한 문제점을 해결하기 위하여 안출된 것으로, 본 발명의 다양한 실시예들은 랜덤하면서도 유일한 코드를 생성하는 전자 장치 및 방법을 제공할 수 있다.
본 발명의 다양한 실시예에서, 코드를 생성하는 방법은, 일회용 암호를 생성하기 위한 제 1 씨드, 제 1 사용자에게 부여된 제 1 고유 코드 및 문자 세트를 획득하는 동작; 상기 제 1 씨드를 이용하여 제 1 OTP(one time password)를 생성하는 동작; 상기 제 1 OTP 및 제 1 고유 코드의 연산 결과를 상기 문자 세트에 매핑하여 제 1 서브 코드를 생성하는 동작; 상기 제 1 OTP를 상기 문자 세트에 매핑하여 제 2 서브 코드를 생성하는 동작; 및 상기 제 1 서브 코드 및 상기 제 2 서브 코드를 이용하여 상기 코드를 생성하는 동작을 포함할 수 있다.
본 발명의 다양한 실시예에서, 코드를 생성하는 전자 장치는, 메모리; 및 상기 메모리에 전기적으로 연결된 프로세서를 포함하고, 상기 메모리는, 실행시에 상기 프로세서가, 일회용 암호를 생성하기 위한 제 1 씨드, 제 1 사용자에게 부여된 제 1 고유 코드 및 문자 세트를 획득하고, 상기 제 1 씨드를 이용하여 제 1 OTP(one time password)를 생성하고, 상기 제 1 OTP 및 제 1 고유 코드의 연산 결과를 상기 문자 세트에 매핑하여 제 1 서브 코드를 생성하고, 상기 제 1 OTP를 상기 문자 세트에 매핑하여 제 2 서브 코드를 생성하고, 상기 제 1 서브 코드 및 상기 제 2 서브 코드를 이용하여 상기 코드를 생성하는 인스트럭션을 저장할 수 있다.
본 발명의 다양한 실시예들에 의하여, 랜덤하면서도 유일한 코드를 생성하는 전자 장치 및 방법이 제공될 수 있다. 생성된 랜덤하면서도 유일한 코드는, 시스템에서 사용자를 구분하기 위한 아이디, 전자 상거래를 위한 입력 코드, 문화상품권과 같은 화폐 대용 인쇄물의 식별 코드 등의 다양한 기술 분야에서 이용될 수 있다. 특히, 본 발명의 다양한 실시예들에 의한 전자 장치 및 방법은, 랜덤하면서도 유일한 코드를 시간에 따라 동적으로 생성할 수 있으며, 이에 따라 코드가 유출될 가능성이 현저히 저하될 수 있다.
도 1은 본 발명의 다양한 실시예에 따른 유일 코드 생성 방법을 설명하기 위한 흐름도를 도시한다.
도 2는 본 발명의 다양한 실시예에 따른 코드를 생성하는 전자 장치의 블록도를 도시한다.
도 3은 본 발명의 다양한 실시예에 따른 코드 생성 방법을 설명하기 위한 흐름도를 도시한다.
도 4는 본 발명의 다양한 실시예에 따른 코드 생성 방법을 설명하기 위한 흐름도를 도시한다.
도 5는 본 발명의 다양한 실시예에 따른 오프셋 결정 과정을 설명하기 위한 흐름도를 도시한다.
도 6은 본 발명의 다양한 실시예에 따른 문자 세트 결정 방법의 흐름도를 도시한다.
도 7은 본 발명의 다양한 실시예에 따른 문자 세트 결정 방법의 흐름도를 도시한다.
이하, 첨부된 도면들에 기재된 내용들을 참조하여 본 발명에 따른 예시적 실시예를 상세하게 설명한다. 다만, 본 발명이 예시적 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조부호는 실질적으로 동일한 기능을 수행하는 부재를 나타낸다.
도 1은 본 발명의 다양한 실시예에 따른 유일 코드 생성 방법을 설명하기 위한 흐름도를 도시한다.
도 1의 실시예에서, 제 1 전자 장치(100)는 유일 코드를 생성하는 전자 장치일 수 있으며, 서버(200)는 유일 코드를 생성하고, 검증 요청된 유일 코드를 검증하는 전자 장치일 수 있다. 서버(200)는 유일 코드를 이용하는 서비스를 관리하는 전자 장치일 수 있다. 예를 들어, 서버(200)는 웹 서비스를 관리하는 전자 장치로, 사용자 아이디 및 이에 대응하는 로그인 정보를 관리할 수 있다.
110 동작에서, 제 1 전자 장치(100)는 서버(200)와 제 1 고유 코드 및 제 1 씨드를 공유할 수 있다. 하나의 실시예에서, 서버(200)는 제 1 전자 장치(100)를 사용하는 제 1 사용자를 시스템에 가입시키는 경우에, 제 1 전자 장치(100)로 제 1 고유 코드 및 제 1 씨드를 송신할 수 있다. 또는, 서버(200)는 제 1 고유 코드 및 제 1 씨드를 디스플레이할 수 있는 정보를 다른 전자 장치로 송신할 수도 있다. 예를 들어, 제 1 사용자는 제 1 전자 장치(100) 또는 다른 전자 장치를 통하여 서버(200)로 가입을 요청할 수 있다. 서버(200)는 가입 요청에 대응하여 제 1 사용자에게 제 1 고유 코드를 부여할 수 있다. 서버(200)는 제 1 고유 코드를 제 1 전자 장치(100) 또는 다른 전자 장치로 송신할 수 있다. 서버(200)는 아울러 제 1 사용자에게 제 1 씨드를 부여할 수 있다. 제 1 씨드는 시간 기반 일회용 암호 생성을 위하여 제 1 사용자에게 부여될 수 있다. 서버(200)는 제 1 씨드를 제 1 전자 장치(100) 또는 다른 전자 장치로 송신할 수 있다. 하나의 실시예에서, 서버(200)는 제 1 고유 코드 및 제 1 씨드를 포함하는 QR 코드 이미지를 제 1 전자 장치(100) 또는 다른 전자 장치로 송신할 수 있다. 제 1 사용자는 다른 전자 장치에서 표시되는 QR 코드를 제 1 전자 장치(100)로 촬영할 수 있으며, 이에 따라 제 1 전자 장치(100)는 제 1 고유 코드 및 제 1 씨드를 획득할 수 있다.
120 동작에서, 제 1 전자 장치(100)는 제 1 씨드 및 제 1 시간 정보를 이용하여 제 1 OTP(one time password)를 생성할 수 있다. 즉, 제 1 전자 장치(100)는 제 1 시점에서, 제 1 시점에 대응하는 제 1 시간 정보 및 제 1 씨드를 이용하여 제 1 OTP를 생성할 수 있다. 아울러, 제 1 전자 장치(100)는 제 2 시점에서는, 제 2 시점에 대응하는 제 2 시간 정보 및 제 1 씨드를 이용하여 제 2 OTP를 생성할 수 있다. 제 1 전자 장치(100)는 시간의 흐름에 따라서 동적으로 OTP를 변경하여 생성할 수 있다.
130 동작에서, 제 1 전자 장치(100)는 제 1 OTP 및 제 1 고유 코드를 이용하여 제 1 코드를 생성할 수 있다. 제 1 전자 장치(100)가 제 1 OTP 및 제 1 고유 코드를 이용하여 랜덤하면서도 유일한 제 1 코드를 생성하는 과정에 대하여서는 더욱 상세하게 후술하도록 한다. 제 1 코드는 제 1 OTP 및 제 1 고유 코드를 모두 이용하여 생성됨에 따라서, 제 1 OTP의 랜덤성 및 동적인 변경 가능성과 제 1 고유 코드의 유일성을 보장받을 수 있어, 랜덤하면서도 유일할 수 있다. 제 1 코드의 랜덤성 및 유일성에 대하여서도 더욱 상세하게 후술하도록 한다.
140 동작에서, 서버(200)는 제 1 씨드 및 제 1 시간 정보를 이용하여 제 1 OTP를 생성할 수 있다. 서버(200)는 제 1 시점에서 제 1 시점에 대응하는 제 1 시간 정보와 제 1 씨드를 이용하여 제 1 전자 장치(100)가 생성한 것과 동일한 제 1 OTP를 생성할 수 있다. 서버(200) 또한 제 2 시점에서 제 2 시점에 대응하는 제 2 시간 정보와 제 1 씨드를 이용하여 제 1 전자 장치(100)가 제 2 시점에서 생성한 것과 동일한 제 2 OTP를 생성할 수 있다. 즉, 서버(200)도 OTP를 동적으로 변경하면서 생성할 수 있다.
150 동작에서, 서버(200)는 제 1 OTP 및 제 1 고유 코드를 이용하여 제 1 코드를 생성할 수 있다. 서버(200)가 제 1 OTP 및 제 1 고유 코드를 이용하여 제 1 코드를 생성하는 방식은 제 1 전자 장치(100)가 제 1 OTP 및 제 1 고유 코드를 이용하여 제 1 코드를 생성하는 방식과 동일할 수 있다. 이에 따라, 서버(200)가 생성한 제 1 코드와 제 1 전자 장치(100)가 생성한 제 1 코드는 동일할 수 있다.
160 동작에서, 서버(200)는 코드 확인 요청을 수신할 수 있다. 서버(200)는 제 1 사용자가 조작하는 전자 장치, 예를 들어 제 1 전자 장치(100) 또는 다른 전자 장치로부터 코드 확인 요청을 수신할 수 있다.
170 동작에서, 서버(200)는 코드 확인 요청 내의 코드가 서버(200)가 생성한 제 1 코드와 동일한지 여부를 판단할 수 있다. 코드 확인 요청 내의 코드가 서버(200)가 생성한 제 1 코드와 동일한 경우에는, 180 동작에서, 서버(200)는 코드가 적합한 것으로 판단할 수 있다. 코드 확인 요청 내의 코드가 서버(200)가 생성한 제 1 코드와 상이한 경우에는, 190 동작에서, 서버(200)는 코드가 부적합한 것으로 판단할 수 있다. 서버(200)는 코드 적합 또는 부적합 여부에 따라, 사용자 로그인 또는 전자 상거래 결재 등의 추가 서비스를 수행 또는 미수행할 수도 있다.
도 2는 본 발명의 다양한 실시예에 따른 코드를 생성하는 전자 장치의 블록도를 도시한다.
전자 장치(100)는 촬영 모듈(101), 프로세서(102) 및 메모리(103)를 포함할 수 있다.
촬영 모듈(101)는 외부의 경관을 촬영할 수 있는 모듈로, 예를 들어 프로세서(102)는 촬영 모듈(101)을 통하여 획득된 이미지를 이용하여, 씨드, 고유 코드 및 문자 세트의 정보를 획득할 수 있다.
프로세서(102)는 CPU, 전자 장치(100)의 제어를 위한 제어프로그램이 저장된 롬(ROM) 및 디스플레이 장치(100)의 외부로부터 입력되는 신호 또는 데이터를 기억하거나, 디스플레이 장치(100)에서 수행되는 작업을 위한 기억영역으로 사용되는 램(RAM)을 포함할 수 있다. CPU는 싱글 코어, 듀얼 코어, 트리플 코어, 또는 쿼드 코어를 포함할 수 있다. CPU, 롬 및 램은 내부버스(bus)를 통해 상호 연결될 수 있다.
메모리(103)는 상기의 롬 및 램을 모두 포함할 수 있으며, 코드를 생성하기 위한 프로그램 또는 알고리즘, 씨드, 고유 코드 및 문자 세트에 대한 정보를 저장할 수 있다.
상기 메모리(103)는, 실행시에 상기 프로세서(102)가, 일회용 암호를 생성하기 위한 제 1 씨드, 제 1 사용자에게 부여된 제 1 고유 코드 및 문자 세트를 획득하고, 상기 제 1 씨드를 이용하여 제 1 OTP(one time password)를 생성하고, 상기 제 1 OTP 및 제 1 고유 코드의 연산 결과를 상기 문자 세트에 매핑하여 제 1 서브 코드를 생성하고, 상기 제 1 OTP를 상기 문자 세트에 매핑하여 제 2 서브 코드를 생성하고, 상기 제 1 서브 코드 및 상기 제 2 서브 코드를 이용하여 상기 코드를 생성하는 인스트럭션을 저장할 수 있다.
상기 메모리(103)는, 실행시에 상기 프로세서(102)가, 상기 제 1 씨드 및 제 1 시점에 대응하는 제 1 시간 정보를 시간 기반 일회용 암호 알고리즘에 입력하여, 상기 제 1 OTP를 생성하는 인스트럭션을 저장할 수 있다.
상기 메모리(103)는, 실행시에 상기 프로세서(102)가, 상기 문자 세트와 비교함으로써, 상기 제 1 고유 코드를 숫자 코드로 변환하고, 상기 숫자 코드를 상기 제 1 OTP와 합산하고, 상기 합산 결과를 상기 문자 세트에 매핑하여 상기 제 1 서브 코드를 생성하는 인스트럭션을 저장할 수 있다.
상기 메모리(103)는, 실행시에 상기 프로세서(102)가, 상기 합산 결과에 대하여 상기 문자 세트의 크기로 모드(mod) 연산을 수행하고, 상기 합산 결과에 대한 모드 연산 수행 결과를 상기 문자 세트에 매핑하여 상기 제 1 서브 코드를 생성하는 인스트럭션을 저장할 수 있다.
상기 메모리(103)는, 실행시에 상기 프로세서(102)가, 상기 합산 결과에 기설정된 오프셋을 적용하고, 상기 오프셋 적용된 합산 결과를 상기 문자 세트에 매핑하여 상기 제 1 서브 코드를 생성하는 인스트럭션을 저장할 수 있다.
상기 메모리(103)는, 실행시에 상기 프로세서(102)가, 상기 오프셋 적용된 합산 결과에 대하여 상기 문자 세트의 크기로 모드(mod) 연산을 수행하고, 상기 상기 합산 결과에 대한 모드 연산 수행 결과를 상기 문자 세트에 매핑하여 상기 제 1 서브 코드를 생성하는 인스트럭션을 저장할 수 있다.
상기 메모리(103)는, 실행시에 상기 프로세서(102)가, 상기 제 1 OTP에 상기 기설정된 오프셋을 적용하고, 상기 오프셋 적용된 제 1 OTP를 상기 문자 세트에 매핑하여 상기 제 2 서브 코드를 생성하는 인스트럭션을 저장할 수 있다.
상기 메모리(103)는, 실행시에 상기 프로세서(102)가, 상기 오프셋 적용된 제 1 OTP에 대하여 상기 문자 세트의 크기로 모드(mod) 연산을 수행하고, 상기 제 1 OTP에 대한 모드 연산 수행 결과를 상기 문자 세트에 매핑하여 상기 제 2 서브 코드를 생성하는 인스트럭션을 저장할 수 있다.
상기 메모리(103)는, 실행시에 상기 프로세서(102)가, 기본 문자 세트를 획득하고, 상기 기본 문자 세트의 원소를 셔플링(shuffling)함으로써, 상기 문자 세트를 획득하는 인스트럭션을 저장할 수 있다.
상기 메모리(103)는, 실행시에 상기 프로세서(102)가, 시스템의 모든 사용자에게 동일한 제 2 씨드를 획득하고, 상기 제 2 씨드를 이용하여 제 2 OTP를 생성하고, 상기 제 2 OTP에 대한 상기 기본 문자 세트의 원소의 개수의 모드(mod) 연산 결과를 이용하여 상기 기본 문자 세트의 각 자리 원소를 다른 자리의 원소와 스와핑(swapping)하는 인스트럭션을 저장할 수 있다.
한편, 서버(200)는 통신 모듈(201) 및 프로세서(202)를 포함할 수 있다.
통신 모듈(201)은 요청에 따라 씨드, 고유 코드 및 문자 세트에 대한 정보를 다른 전자 장치로 송신할 수 있다. 아울러, 통신 모듈(201)은 코드를 포함한 코드 확인 요청을 수행할 수 있다.
프로세서(202)는 고유 코드를 사용자에게 부여할 수 있다. 또는, 프로세서(202)는 코드 확인 요청에 대응하여, 코드를 생성할 수 있다. 프로세서(202)는 생성된 코드를 코드 확인 요청 내의 코드와 비교함으로써, 코드 확인 요청이 적법한지 여부를 판단할 수 있다.
도 3은 본 발명의 다양한 실시예에 따른 코드 생성 방법을 설명하기 위한 흐름도를 도시한다.
310 동작에서, 제 1 전자 장치(100)는 제 1 고유 코드 및 사용자마다 상이한 제 1 씨드를 획득할 수 있다. 제 1 씨드는 제 1 사용자에게 서버(200)에 의하여 부여된 것일 수 있다. 한편, 제 1 고유 코드는 ASCII 코드에 기초한 문자열로, 알파멧과 숫자와 특수 문자의 조합일 수 있다. 제 1 고유 코드는 미리 설정된 문자 세트의 원소로부터 선택된 코드일 수 있다. 예를 들어, 서버(200)는 문자 세트로부터 유일한 코드를 생성하는 알고리즘을 이용하여 제 1 사용자를 위한 제 1 고유 코드를 생성하고, 이를 제 1 전자 장치(100)로 송신할 수 있다. 서버(200)는 다른 사용자를 위하여 고유 코드를 생성할 수도 있으며, 사용자들 각각에 부여된 고유 코드는 상이할 수 있다.
320 동작에서, 제 1 전자 장치(100)는 제 1 씨드 및 제 1 시간 정보를 이용하여 제 1 OTP를 생성할 수 있다. 제 1 OTP는 예를 들어 숫자로 구성될 수 있다.
330 동작에서, 제 1 전자 장치(100)는 제 1 고유 코드를 미리 설정된 문자 세트에 매핑하여 제 1 고유 코드에 대응하는 숫자 코드를 생성할 수 있다.
예를 들어, 제 1 전자 장치(100)는 미리 설정된 문자 세트로 { '0', '1', '2', …, '9', ,'A', 'B', …, 'Z' }를 이용하는 경우를 상정하도록 한다. 아울러, 제 1 전자 장치(100)는 제 1 고유 코드로 "AX83Z0"를 획득한 것을 상정하도록 한다. 하나의 실시예에서, 제 1 전자 장치(100)는 제 1 고유 코드의 각 자리 문자가 문자 세트에서 몇 번째 인덱스인지를 확인함으로써, 제 1 고유 코드의 각 자리 문자를 숫자 코드로 변환할 수 있다. 예를 들어, 제 1 전자 장치(100)는 제 1 코드의 첫번째 자리 문자인 "A"가 문자 세트에서 11번째 인덱스인 것을 확인함으로써 "A"의 고유 코드를 "10"의 숫자 코드로 변환할 수 있다. 이는, 숫자 코드의 시작점이 0인 것으로부터 기인할 수 있다. 동일한 방식으로, 제 1 전자 장치(100)는 "X"가 문자 세트에서 34번째 인덱스인 것을 확인함으로써 "X"의 고유 코드를 "33"으로 변환할 수 있다. 제 1 전자 장치(100)는 제 1 고유 코드인 "AX83Z0"을 {10,33,8,3,35,0}의 숫자 코드로 변환할 수 있다.
340 동작에서, 제 1 전자 장치(100)는 제 1 OTP 및 숫자 코드를 합산할 수 있다. 예를 들어, 제 1 OTP가 "382901"인 경우에는, 제 1 OTP의 각 자리수를 변환된 숫자 코드의 각 자리수와 합산할 수 있다. 즉, 전자 장치(100)는 {10,33,8,3,35,0}의 숫자 코드를 {3,8,2,9,0,1}의 제 1 OTP와 합산할 수 있으며, {13,41,10,12,35,1}의 합산 결과를 획득할 수 있다. 한편, 합산 결과 중 문자 세트의 원소의 총 개수, 예를 들어 36개를 초과하는 경우에는, 제 1 전자 장치(100)는 해당 합산 결과를 문자 세트의 원소의 총 개수에 모드(mod) 연산을 한 결과로 치환할 수 있다. 이 경우에는, 제 1 전자 장치(100)는 "41"을 "41"에 36의 모드 연산을 수행한 결과인 "5"로 치환할 수 있다. 이에 따라, 제 1 전자 장치(100)는후술하도록 한다. {13,5,10,12,35,1}의 합산 결과를 획득할 수 있다. 본 발명의 다른 실시예에서는 합산 결과 생성시 오프셋을 적용할 수도 있으며, 이에 대하여서는 더욱 상세하게
350 동작에서, 제 1 전자 장치(100)는 합산 결과를 문자 세트에 매핑하여 제 1 서브 코드를 생성할 수 있다. 예를 들어, 제 1 전자 장치(100)는 {13,5,10,12,35,1}의 각 숫자를 인덱스로 해석하여 이에 대응하는 문자를 문자 세트로부터 획득할 수 있다. 즉, 제 1 전자 장치(100)는 '13'의 인덱스에 대응하는 "D"를 제 1 서브 코드의 첫 번째 문자로 획득할 수 있다. 전자 장치(100)는 '5'의 인덱스에 대응하는 "5"를 제 1 서브 코드의 두 번째 문자로 획득할 수 있다. 상술한 방식에 따라서, 제 1 전자 장치(100)는 "D5ACY1"의 제 1 서브 코드를 획득할 수 있다.
360 동작에서, 제 1 전자 장치(100)는 제 1 OTP를 문자 세트에 매핑하여 제 2 서브 코드를 생성할 수 있다. 예를 들어, 제 1 전자 장치(100)는 {3,8,2,9,0,1}의 제 1 OTP의 각 자리 숫자가 인덱스인 것으로 해석하여, 각 자리 숫자에 대응하는 제 2 서브 코드의 문자의 각 자리를 생성할 수 있다. 예를 들어, 제 1 전자 장치(100)는 '3'의 숫자에 대응하여 '3'의 문자를 획득할 수 있으며, '8'의 숫자에 대응하여 '8'의 문자를 획득할 수 있다. 이에 따라 제 1 전자 장치(100)는 "382901"의 제 2 서브 코드를 획득할 수 있다. 본 발명의 다른 실시예에서는 숫자의 각 자리마다 오프셋을 적용한 결과를 문자 세트에 매핑하여 제 2 서브 코드를 획득할 수도 있으며, 이에 대하여서는 더욱 상세하게 후술하도록 한다.
370 동작에서, 제 1 전자 장치(100)는 제 1 서브 코드 및 제 2 서브 코드를 포함하는 제 1 코드를 생성할 수 있다. 제 1 전자 장치(100)는 제 1 서브 코드 및 제 2 서브 코드를 concatenate하여 예를 들어 "D5ACY1382901"의 제 1 코드를 생성할 수 있다. 상술한 바와 같이, 제 1 코드의 제 1 서브 코드인 "D5ACY1"은 동적이면서 랜덤하게 생성되는 OTP 및 고유 코드의 합산에 의하여 설정된 것으로, 동적이면서 랜덤성이 보장되면서, 고유 코드에 의한 유일성이 보장될 수 있다. 다만, 낮은 확률로 합산 결과가 동일한 코드가 발생할 수도 있으므로, 본 발명의 다양한 실시예에 따른 제 1 전자 장치(100)는 제 2 서브 코드를 concatenate함으로써 유일한 코드인 제 1 코드를 생성할 수 있다.
도 4는 본 발명의 다양한 실시예에 따른 코드 생성 방법을 설명하기 위한 흐름도를 도시한다.
410 동작에서, 제 1 전자 장치(100)는 제 1 고유 코드 및 사용자마다 상이한 제 1 씨드를 획득할 수 있다. 상술한 바와 같이, 제 1 전자 장치(100)는 서버(200)로부터 제 1 고유 코드 및 제 1 씨드를 수신하거나 또는 다른 전자 장치에서 디스플레이되는 QR 코드를 촬영함으로써 제 1 고유 코드 및 제 1 씨드를 수신할 수 있다. 제 1 씨드는 서버가 제 1 사용자에게 부여한 OTP 생성을 위한 씨드일 수 있다.
420 동작에서, 제 1 전자 장치(100)는 제 1 씨드 및 제 1 시간 정보를 이용하여 제 1 OTP를 생성할 수 있다. 430 동작에서, 제 1 전자 장치(100)는 제 1 고유 코드를 문자 세트에 매핑하여 제 1 고유 코드에 대응하는 숫자 코드를 생성할 수 있다. 예를 들어, 도 3의 실시예에서와 유사하게, 제 1 전자 장치(100)는 "AX83Z0"의 제 1 고유 코드를 획득할 수 있으며, 제 1 시점에 제 1 시점에 대응하는 제 1 시간 정보 및 제 1 씨드를 이용하여 "382901"의 제 1 OTP를 생성할 수 있다. 제 1 전자 장치(100)는 미리 설정된 { '0', '1', '2', …, '9', ,'A', 'B', …, 'Z' }의 문자 세트에 제 1 고유 코드를 매핑하여 제 1 고유 코드인 "AX83Z0"을 {10,33,8,3,35,0}의 숫자 코드로 변환할 수 있다.
440 동작에서, 제 1 전자 장치(100)는 제 1 OTP 및 숫자 코드를 합산할 수 있다. 예를 들어, 제 1 OTP가 "382901"인 경우에는, 제 1 OTP의 각 자리수를 변환된 숫자 코드의 각 자리수와 합산할 수 있다. 즉, 전자 장치(100)는 {10,33,8,3,35,0}의 숫자 코드를 {3,8,2,9,0,1}의 제 1 OTP와 합산할 수 있으며, {13,41,10,12,35,1}의 합산 결과를 획득할 수 있다. 450 동작에서, 제 1 전자 장치(100)는 상기 합산 결과에 오프셋을 적용할 수 있다. 제 1 전자 장치(100)는 오프셋을 예를 들어 18로 설정할 수 있다. 제 1 전자 장치(100)는 합산 결과의 매 자리 수의 숫자에 오프셋인 18을 합산할 수 있다. 아울러, 도 3과 유사하게 제 1 전자 장치는 오프셋 적용된 합산 결과에 문자 세트의 크기를 모드 연산한 결과를 획득할 수 있다. 이에 따라, 제 1 전자 장치(100)는 오프셋 적용된 합산 결과인 {31,23,28,30,17,19}를 획득할 수 있다.
460 동작에서, 제 1 전자 장치(100)는 오프셋 적용된 합산 결과를 문자 세트에 매핑하여 제 1 서브 코드를 생성할 수 있다. 제 1 전자 장치(100)는 오프셋 적용된 합산 결과인 '31'을 문자 세트에서의 인덱스로 해석하여, 31번째 문자인 'V'를 획득할 수 있다. 제 1 전자 장치(100)는, '23', '28', '30', '17', '19'을 순차적으로 문자로 변환할 수 있으며, 이에 따라 "VNSUHJ"의 제 1 서브 코드를 생성할 수 있다.
470 동작에서, 제 1 전자 장치(100)는 제 1 OTP에 오프셋을 적용할 수 있다. 이에 따라, {3,8,2,9,0,1}의 제 1 OTP의 각 숫자에 오프셋 18을 합산하여, {21,26,20,27,18}의 오프셋 적용된 제 1 OTP를 생성할 수 있다.
480 동작에서, 제 1 전자 장치(100)는 오프셋 적용된 제 1 OTP를 문자 세트에 매핑하여 제 2 서브 코드를 생성할 수 있다. 즉, 제 1 전자 장치(100)는 오프셋 적용된 제 1 OTP의 {21,26,20,27,18}의 각 숫자를 문자 세트에서의 인덱스로 해석하여, 제 2 서브 코드를 생성할 수 있다. 예를 들어, 제 1 전자 장치(100)는 오프셋 적용된 제 1 OTP의 첫 번째 숫자인 '21'에 기초하여, 문자 세트에서의 21번째 문자인 'L'을 획득할 수 있다. 상술한 방식으로, 제 1 전자 장치(100)는 오프셋 적용된 제 1 OTP의 {21,26,20,27,18}으로부터 "LQKRIJ"의 제 2 서브 코드를 생성할 수 있다.
490 동작에서, 제 1 전자 장치(100)는 제 1 서브 코드 및 제 2 서브 코드를 포함하는 제 1 코드를 생성할 수 있다. 제 1 전자 장치(100)는 제 1 서브 코드 및 제 2 서브 코드를 concatenate하여 예를 들어 "D5ACY1LQKRIJ"의 제 1 코드를 생성할 수 있다. 상술한 바와 같이, 제 1 코드의 제 1 서브 코드인 "D5ACY1"은 동적이면서 랜덤하게 생성되는 OTP 및 고유 코드의 합산에 의하여 설정된 것으로, 동적이면서 랜덤성이 보장되면서, 고유 코드에 의한 유일성이 보장될 수 있다. 다만, 낮은 확률로 합산 결과가 동일한 코드가 발생할 수도 있으므로, 본 발명의 다양한 실시예에 따른 제 1 전자 장치(100)는 제 2 서브 코드를 concatenate함으로써 유일한 코드인 제 1 코드를 생성할 수 있다.
하기에서는, 상술한 코드 생성 과정을 알고리즘을 통하여 설명하도록 한다.
- 정의
-C : ASCII 코드로 표현되는 서로 다른 문자를 원소로 하는 문자집합
주어진 문자집합을 C 라고 하고, C 는 ASCII 코드로 표현되는 서로다른 문자(알파벳 대,소문자, 특수문자, 숫자)로 구성된다. 예를 들면, C 가 숫자만으로 구성되었다면 C = { ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’ }가 되며, 같은 숫자가 중복되지 않는다. 또한 숫자와 영문대문자로 구성된다면, C = { ‘0’, … ,’9’, ‘A’, … ‘Z’ }가 된다. 동일한 방법으로 주어진 문자집합 C 는 여러가지 형태로 구성될 수 있다. 또한, C 의 원소를 동일 집합내에서 셔플링(shuffling) 될 수 있다. 예를 들면, 숫자만으로 구성된 문자집합 C = { ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’ } 가 셔플링 된다면 C = { ‘8’, ‘0’, ‘7’, ‘3’, ‘1’, ‘9’, ‘6’, ‘2’, ‘4’, ‘5’ } 와 같이 될 수 있다.
-S : 주어진 문자집합 C 의 원소개수
-C(n) : n 번째 C 의 원소 (0 <= n < C의 문자개)
C 의 n 번째 원소를 C(n) 이라고 정의하고 이 때, n 은 0 <= n < S 인 정수이다. 즉, n은 C 에 포함된 원소의 인덱스(index)를 의미한다. 숫자로만 구성된 문자집합 C = { ‘8’, ‘0’, ‘7’, ‘3’, ‘1’, ‘9’, ‘6’, ‘2’, ‘4’, ‘5’ } 가 있다면, 0 <= n < 10 이고, C(0) = ‘8’, C(9) = ‘5’ 가 된다.
-IndexOf(c) : 주어진 문자 c 의 C 내 인덱스
주어진 문자집합 C = { ‘8’, ‘0’, ‘7’, ‘3’, ‘1’, ‘9’, ‘6’, ‘2’, ‘4’, ‘5’ } 일때, IndexOf(‘8’) = 0, IndexOf(‘5’) = 9 가 된다.
-U : C 에 포함된 문자로 구성된 임의 생성된 사용자 고유아이디를 나타내는 문자열
주어진 문자집합 C = { ‘8’, ‘0’, ‘7’, ‘3’, ‘1’, ‘9’, ‘6’, ‘2’, ‘4’, ‘5’ } 일 때 U 는 ‘0382’, ‘7192’와 같이 표현된다.
-U(n) : U 의 n 번째 문자 ( 0 <= n < U의 문자개수)
주어진 U = ‘0382’ 일 때, n은 0 <= n < 4 인 정수이며, U(2) = ‘8’, U(3) = ‘2’ 가 된다.
-T : TOTP 코드
예를 들면, 랜덤한 6자리 TOTP 코드는 ‘839023’, ‘659921’ 이 된다.
-T(n) : TOTP 코드내 n 번째 위치한 숫자 (0 <= n < TOTP 자리수)
예를 들면, 생성된 TOTP 코드가 ‘839023’ 일 때, T(0) = 8, T(5) = 3 이 된다.
-N : 랜덤 코드의 길이 ( N >= 1 )
-R : 랜덤 코드
-알고리즘
프로그래밍언어 C++ 와 유사한 형태로 기술한다.
String generate_random_id ( C, U, N, T )
{
string preId;
string postId;
int offset = 18; // 임의로 지정
for (n = 0; n < N; n++)
{
int d = numOf(T(n)); // T(n) ASCII 코드를 숫자로 변환, ‘3’ -> 3, ‘9’ -> 9
int x = IndexOf(U(n));
preId += C ( (d + x + offset) % S ); // 이전단계에 만들어진 문자에 append한다.
postId += C ( T(n) + offset);
}
return (preId + postId); // 만들어진 두개의 문자를 append해서 최종 R을 만든다.
}
-시뮬레이션
만약,
N = 6,
C = { ‘0’, … , ‘9’, ‘A’, … , ‘Z’} 이고,
S = 10 + 26 = 36
U = ‘AX83Z0’ 이고
T = ‘382901’ 라고 하면,
0 <= n < 36, (0 … 35)
IndexOf(U) = { 10, 33, 8, 3, 35, 0 } 이 되고,
numOf (T) = { 3, 8, 2, 9, 0, 1 } 이 되고,
각 자리에 대해 연산을 수행하면,
preId[0] = C ( ( 3 + 10 + 18 ) % 36 ) = C ( 31 % 36 ) = C ( 31 ) = ‘V’
preId[1] = C ( ( 8 + 33 + 18 ) % 36 ) = C ( 59 % 36 ) = C ( 23 ) = ‘N’
preId[2] = C ( ( 2 + 8 + 18 ) % 36 ) = C ( 28 % 36 ) = C ( 28 ) = ‘S’
preId[3] = C ( ( 9 + 3 + 18 ) % 36 ) = C ( 30 % 36 ) = C ( 30 ) = ‘U’
preId[4] = C ( ( 0 + 35 + 18 ) % 36 ) = C ( 53 % 36 ) = C ( 17 ) = ‘H’
preId[5] = C ( 1 + 0 + 18 ) % 36 ) = C ( 19 % 36 ) = C ( 19 ) = ‘J’
이고,
postId[0] = C ( ( 3 + 18 ) % 36 ) = C ( 21 ) = ‘L’
postId[1] = C ( ( 8 + 18 ) % 36 ) = C ( 26 ) = ‘Q’
postId[2] = C ( ( 2 + 18 ) % 36 ) = C ( 20 ) = ‘K’
postId[3] = C ( ( 9 + 18 ) % 36 ) = C ( 27 ) = ‘R’
postId[4] = C ( ( 0 + 18 ) % 36 ) = C ( 18 ) = ‘I’
postId[5] = C ( ( 1 + 18 ) % 36 ) = C ( 19 ) = ‘J’
이 되어,
R = generate_random_id(C, U, N, T) 가 되고, R = ‘VNSUHJ LQKRIJ’ 가 나온다.
-시뮬레이션2 - 같은 시점에 다른 아이디인 경우
위와 동일하게 N = 6, C = { ‘0’, … , ‘9’, ‘A’, … , ‘Z’}, S = 10 + 26 = 36 으로 설정한다.
대신 U = ‘B05EFA’ 이고,
위와 같은 T = ‘382901’가 나왔다고 하면,
0 <= n < 36, (0 … 35)
IndexOf(U) = { 11, 0, 6, 14, 15, 10 } 이 되고,
numOf(T) = { 3, 8, 2, 9, 0, 1 } 이 되고,
각 자리에 대해 연산을 수행하면,
preId[0] = C ( ( 3 + 11 + 18 ) % 36 ) = C ( 32 % 36 ) = C ( 31 ) = ‘W’
preId[1] = C ( ( 8 + 0 + 18 ) % 36 ) = C ( 26 % 36 ) = C ( 26 ) = ‘Q’
preId[2] = C ( ( 2 + 6 + 18 ) % 36 ) = C ( 26 % 36 ) = C ( 26 ) = ‘Q’
preId[3] = C ( ( 9 + 14 + 18 ) % 36 ) = C ( 41 % 36 ) = C ( 5 ) = ‘5’
preId[4] = C ( ( 0 + 15 + 18 ) % 36 ) = C ( 33 % 36 ) = C ( 33 ) = ‘X’
preId[5] = C ( 1 + 10 + 18 ) % 36 ) = C ( 29 % 36 ) = C ( 29 ) = ‘T’
이고,
postId[0] = C ( ( 3 + 18 ) % 36 ) = C ( 21 ) = ‘L’
postId[1] = C ( ( 8 + 18 ) % 36 ) = C ( 26 ) = ‘Q’
postId[2] = C ( ( 2 + 18 ) % 36 ) = C ( 20 ) = ‘K’
postId[3] = C ( ( 9 + 18 ) % 36 ) = C ( 27 ) = ‘R’
postId[4] = C ( ( 0 + 18 ) % 36 ) = C ( 18 ) = ‘I’
postId[5] = C ( ( 1 + 18 ) % 36 ) = C ( 19 ) = ‘J’
이 되어,
R = generate_random_id(C, U, N, T) 가 되고, R = ‘WQQ5XT LQKRIJ’ 가 나온다.
따라서 같은 시점에 같은 OTP가 나와도 마다 다른 랜덤 코드는 상이한 결과를 가진다.
도 5는 본 발명의 다양한 실시예에 따른 오프셋 결정 과정을 설명하기 위한 흐름도를 도시한다.
510 동작에서, 제 1 전자 장치(100)는 모든 사용자에게 동일한 제 2 씨드를 획득할 수 있다. 여기에서, 제 2 씨드는 예를 들어 시간 기반 일회용 암호를 생성하기 위한 씨드값일 수 있으며, 제 1 씨드와는 상이할 수 있다. 520 동작에서, 제 1 전자 장치(100)는 제 2 씨드 및 제 1 시간 정보에 기초하여 제 2 OTP를 생성할 수 있으며, 530 동작에서 상기 제 2 OTP를 이용하여 도 4에서 이용할 오프셋을 결정할 수 있다. 예를 들어, 제 1 전자 장치(100)는 제 2 씨드를 이용하여 생성한 오프셋에 문자 세트의 원소의 개수에 대한 모드 연산의 결과 값으로 오프셋을 설정할 수 있다. 제 2 씨드는 제 1 사용자 뿐만 아니라 시스템에 가입된 사용자 모두에게 동일할 수 있으며, 이에 따라 제 1 시점에서 생성된 오프셋은 모든 사용자에게 동일할 수 있어, 생성된 코드의 유일성이 연속하여 보장될 수 있다.
도 6은 본 발명의 다양한 실시예에 따른 문자 세트 결정 방법의 흐름도를 도시한다.
610 동작에서, 제 1 전자 장치(100)는 모든 사용자에게 동일한 제 2 씨드를 획득할 수 있다. 여기에서, 제 2 씨드는 예를 들어 시간 기반 일회용 암호를 생성하기 위한 씨드값일 수 있으며, 제 1 씨드와는 상이할 수 있다.
620 동작에서, 제 1 전자 장치(100)는 제 2 씨드 및 제 1 시간 정보를 이용하여 제 2 OTP 생성할 수 있다. 630 동작에서, 제 1 전자 장치(100)는 제 2 OTP를 이용하여 문자 세트를 결정할 수 있다. 예를 들어, 제 1 전자 장치(100)는 기본 문자 세트를 최초 획득할 수 있으며, 기본 문자 세트를 제 2 OTP에 기초하여 변형함으로써 코드 생성에 이용할 문자 세트를 결정할 수 있다.
도 7은 본 발명의 다양한 실시예에 따른 문자 세트 결정 방법의 흐름도를 도시한다.
710 동작에서, 제 1 전자 장치(100)는 기본 문자 세트를 획득할 수 있다. 예를 들어, 제 1 전자 장치(100)는 { '0', '1', '2', …, '9' }의 기본 문자 세트를 획득할 수 있다. 기본 문자 세트의 원소의 개수는 10일 수 있다.
720 동작에서, 제 1 전자 장치(100) 제 2 씨드 및 제 1 시간 정보를 이용하여 제 2 OTP 생성할 수 있다. 본 발명의 다양한 실시예에서는, 제 1 전자 장치(100)는 hOTP 알고리즘으로 제 2 OTP를 생성할 수도 있다. 예를 들어, 제 1 전자 장치(100)는 123456의 제 2 OTP를 생성한 것을 상정하도록 한다.
730 동작에서, 제 1 전자 장치(100)는 제 2 OTP 및 문자 세트의 크기를 모드(mod) 연산하여, 연산 결과값을 획득할 수 있다. 740 동작에서, 제 1 전자 장치(100)는 연산 결과값을 이용하여 기본 문자 세트의 두 개의 문자의 위치를 스와핑할 수 있다. 예를 들어, 제 1 전자 장치(100)는 123456에 대한 모드 연산 결과인 6을 획득할 수 있다. 제 1 전자 장치(100)는 6의 연산 결과를 문자 세트의 인덱스로 해석하여, 문자 세트의 6번째 문자를 0번째 문자와 스와핑할 수 있다.
750 동작에서, 제 1 전자 장치(100)는 모든 문자에 대하여 순차적으로 스와핑을 수행하여 기본 문자 세트를 셔플링한 문자 세트를 획득할 수 있다. 예를 들어, 제 1 전자 장치(100)는 문자 세트의 1번째 문자에 대하여, OPT 생성, 모드 연산, 연산 결과 값을 인덱스로 해석하여 1번째 문자와 인덱스에 대응하는 문자와 스와핑을 수행하고, 상술한 과정을 2번째 문자 내지 9번째 문자에 대하여 모두 수행할 수 있다.
760 동작에서, 제 1 전자 장치(100)는 셔플링한 문자 세트를 이용하여 제 1 코드를 생성할 수 있다.
상술한 바에 따라, 문자 집합은 동적으로 변경될 수 있으며, 씨드만 공유된다면 모든 사용자에 대하여 동일한 문자 집합이 생성될 수 있어, 상술한 바에서 생성된 코드의 유일성이 연속되어 보장될 수 있다.
하기에서는, 상술한 문자 세트 셔플링 방법의 알고리즘을 설명하도록 한다.
1. 기본 문자집합 C = {‘0’, ‘1’, ’2’, ’3’, ’4’, ’5’, ’6’, ’7’, ’8’, ’9’} 이라한다.
2. Global Key를 설정하고 이를 OTP의 seed로 이용한다.
3. 문자집합의 크기 S만큼 다음을 반복하여 랜덤한 문자집합을 만든다.
1) C(n)의 자리를 변경하기 위해서, HOTP를 하나 만들고 집합크기로 Mod계산한다.
2) HOTP는 123456이면, 문자집합 크기인 10으로 Mod계산하여 6을 얻어낸다.
3) 얻어낸 6은 C의 인덱스를 의미하며 C[6]에 해당하는 숫자를 현재 바꾸려고 하는 C[0]번째 문자와 자리를 바꾼다. 즉 스와핑 한다.
4) 1,2,3과정을 9번 더 반복하여 C[9]까지 수행한다.
5) 위 계산이 완료되면 셔플링된 문자집합이 나오고, 이 집합을 이용하여 랜덤아이디를 생성할 수 있다.
시뮬레이션 - 문자집합 셔플링
문자집합 C = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}이고, C의 크기S = 10, 0 <= n < 10이다.
각 단계에서 생성되는 HOTP를 S로 모듈러 한 값을 O라 하고
O(0) = 1111 2222 % 10,
O(1) = 3333 4444 % 10,
O(2) = 5555 6666 % 10,
O(3) = 7777 8888 % 10,
O(4) = 9999 0000 % 10,
O(5) = 1111 2222 % 10,
O(6) = 3333 4444 % 10,
O(7) = 5555 6666 % 10,
O(8) = 7777 8888 % 10,
O(9) = 9999 0000 % 10 이라고 가정한다.
1) C[0] = 0 섞기
O[0] = 11112222 % 10 = 2 이므로, C[2]을 C[0]자리에 보내고 C[0]을 C[2]에 보내서 스와핑한다. 따라서 문자집합은 C = {2, 1, 0, 3, 4, 5, 6, 7, 8, 9} 가 된다.
2) C[1] = 1 섞기
O[1] = 33334444 % 10 = 4 이므로, C[4]을 C[1]자리에 보내고 C[1]을 C[4]에 보내서 스와핑한다. 따라서 문자집합은 C = {2, 4, 0, 3, 1, 5, 6, 7, 8, 9} 이 된다.
3) C[2] = 0 섞기
O[2] = 55556666 % 10 = 6 이므로, C[6]을 C[2]자리에 보내고 C[2]를 C[6]에 보내서 스와핑한다. 따라서 문자집합은 C = {2, 4, 6, 3, 1, 5, 0, 7, 8, 9}이 된다.
4) C[3] = 1 섞기
O[3] = 77778888 % 10 = 8 이므로, C[8]을 C[3]자리에 보내고 C[3]를 C[8]에 보내서 스와핑한다. 따라서 문자집합은 C = {2, 4, 6, 8, 1, 5, 0, 7, 3, 9}이 된다.
5) C[4] = 4 섞기
O[4] = 99990000 % 10 = 0 이므로, C[0]을 C[4]자리에 보내고 C[4]를 C[0]에 보내서 스와핑한다. 따라서 문자집합은 C = {1, 4, 6, 8, 2, 5, 0, 7, 3, 9}이 된다.
6) C[5] = 5 섞기
O[5] = 1111 2222 % 10 = 2 이므로, C[2]을 C[5]자리에 보내고 C[5]를 C[2]에 보내서 스와핑한다. 따라서 문자집합은 C = {1, 4, 5, 8, 2, 6, 0, 7, 3, 9}이 된다.
7) C[6] = 0 섞기
O[6] = 3333 4444 % 10 = 4 이므로, C[4]을 C[6]자리에 보내고 C[6]를 C[4]에 보내서 스와핑한다. 따라서 문자집합은 C = {1, 4, 5, 8, 0, 6, 2, 7, 3, 9}이 된다.
8) C[7] = 7 섞기
O[7] = 5555 6666% 10 = 6 이므로, C[6]을 C[7]자리에 보내고 C[7]를 C[6]에 보내서 스와핑한다. 따라서 문자집합은 C = {1, 4, 5, 8, 0, 6, 7, 2, 3, 9}이 된다.
9) C[8] = 3 섞기
O[8] = 7777 8888% 10 = 8 이므로, C[8]을 C[8]자리에 보내고 C[8]를 C[8]에 보내서 스와핑한다. 따라서 문자집합은 C = {1, 4, 5, 8, 0, 6, 7, 2, 3, 9}이 된다.
10) C[9] = 9 섞기
O[9] = 9999 0000 % 10 = 0 이므로, C[0]을 C[9]자리에 보내고 C[9]를 C[0]에 보내서 스와핑한다. 따라서 문자집합은 C = {9, 4, 5, 8, 0, 6, 7, 2, 3, 1}이 된다.
따라서 셔플링된 문자집합은 C = {‘9’, ‘4’, ‘5’, ‘8’, ‘0’, ‘6’, ‘7’, ‘2’, ‘3’, ‘1’}이 되며, 이 셔플링 문자집합을 이용하여 랜덤 코드를 한번 생성하게 된다.
상술한 바에 따라서 생성된 코드의 유일성이 보장되는 문자 집합이 셔플링될 수 있다.
본 발명의 실시 예들은 하드웨어, 소프트웨어 또는 하드웨어 및 소프트웨어의 조합의 형태로 실현 가능하다는 것을 알 수 있을 것이다. 이러한 임의의 소프트웨어는 예를 들어, 삭제 가능 또는 재기록 가능 여부와 상관없이, ROM 등의 저장 장치와 같은 휘발성 또는 비휘발성 저장 장치, 또는 예를 들어, RAM, 메모리 칩, 장치 또는 집적 회로와 같은 메모리, 또는 예를 들어 CD, DVD, 자기 디스크 또는 자기 테이프 등과 같은 광학 또는 자기적으로 기록 가능함과 동시에 기계(예를 들어, 컴퓨터)로 읽을 수 있는 저장 매체에 저장될 수 있다. 본 발명의 그래픽 화면 갱신 방법은 제어부 및 메모리를 포함하는 컴퓨터 또는 휴대 단말에 의해 구현될 수 있고, 상기 메모리는 본 발명의 실시 예들을 구현하는 지시들을 포함하는 프로그램 또는 프로그램들을 저장하기에 적합한 기계로 읽을 수 있는 저장 매체의 한 예임을 알 수 있을 것이다. 따라서, 본 발명은 본 명세서의 임의의 청구항에 기재된 장치 또는 방법을 구현하기 위한 코드를 포함하는 프로그램 및 이러한 프로그램을 저장하는 기계(컴퓨터 등)로 읽을 수 있는 저장 매체를 포함한다. 또한, 이러한 프로그램은 유선 또는 무선 연결을 통해 전달되는 통신 신호와 같은 임의의 매체를 통해 전자적으로 이송될 수 있고, 본 발명은 이와 균등한 것을 적절하게 포함한다.
또한, 상기 장치는 유선 또는 무선으로 연결되는 프로그램 제공 장치로부터 상기 프로그램을 수신하여 저장할 수 있다. 상기 프로그램 제공 장치는 상기 그래픽 처리 장치가 기설정된 컨텐츠 보호 방법을 수행하도록 하는 지시들을 포함하는 프로그램, 컨텐츠 보호 방법에 필요한 정보 등을 저장하기 위한 메모리와, 상기 그래픽 처리 장치와의 유선 또는 무선 통신을 수행하기 위한 통신부와, 상기 그래픽 처리 장치의 요청 또는 자동으로 해당 프로그램을 상기 송수신 장치로 전송하는 제어부를 포함할 수 있다.
Claims (20)
- 코드를 생성하는 방법에 있어서,일회용 암호를 생성하기 위한 제 1 씨드, 제 1 사용자에게 부여된 제 1 고유 코드 및 문자 세트를 획득하는 동작;상기 제 1 씨드를 이용하여 제 1 OTP(one time password)를 생성하는 동작;상기 제 1 OTP 및 제 1 고유 코드의 연산 결과를 상기 문자 세트에 매핑하여 제 1 서브 코드를 생성하는 동작;상기 제 1 OTP를 상기 문자 세트에 매핑하여 제 2 서브 코드를 생성하는 동작; 및상기 제 1 서브 코드 및 상기 제 2 서브 코드를 이용하여 상기 코드를 생성하는 동작을 포함하는 코드를 생성하는 방법.
- 제 1 항에 있어서,상기 제 1 씨드를 이용하여 제 1 OTP를 생성하는 동작은,상기 제 1 씨드 및 제 1 시점에 대응하는 제 1 시간 정보를 시간 기반 일회용 암호 알고리즘에 입력하여, 상기 제 1 OTP를 생성하는 코드를 생성하는 방법.
- 제 1 항에 있어서,상기 제 1 OTP 및 제 1 고유 코드의 연산 결과를 상기 문자 세트에 매핑하여 제 1 서브 코드를 생성하는 동작은,상기 문자 세트와 비교함으로써, 상기 제 1 고유 코드를 숫자 코드로 변환하는 동작;상기 숫자 코드를 상기 제 1 OTP와 합산하는 동작; 및상기 합산 결과를 상기 문자 세트에 매핑하여 상기 제 1 서브 코드를 생성하는 동작을 포함하는 코드를 생성하는 방법.
- 제 3 항에 있어서,상기 합산 결과를 상기 문자 세트에 매핑하여 상기 제 1 서브 코드를 생성하는 동작은,상기 합산 결과에 대하여 상기 문자 세트의 크기로 모드(mod) 연산을 수행하는 동작; 및상기 합산 결과에 대한 모드 연산 수행 결과를 상기 문자 세트에 매핑하여 상기 제 1 서브 코드를 생성하는 동작을 포함하는 코드를 생성하는 방법.
- 제 3 항에 있어서,상기 합산 결과를 상기 문자 세트에 매핑하여 상기 제 1 서브 코드를 생성하는 동작은,상기 합산 결과에 기설정된 오프셋을 적용하는 동작; 및상기 오프셋 적용된 합산 결과를 상기 문자 세트에 매핑하여 상기 제 1 서브 코드를 생성하는 동작을 포함하는 코드를 생성하는 방법.
- 제 5 항에 있어서,상기 오프셋 적용된 합산 결과를 상기 문자 세트에 매핑하여 상기 제 1 서브 코드를 생성하는 동작은,상기 오프셋 적용된 합산 결과에 대하여 상기 문자 세트의 크기로 모드(mod) 연산을 수행하는 동작; 및상기 상기 합산 결과에 대한 모드 연산 수행 결과를 상기 문자 세트에 매핑하여 상기 제 1 서브 코드를 생성하는 동작을 포함하는 코드를 생성하는 방법.
- 제 5 항에 있어서,상기 제 1 OTP를 상기 문자 세트에 매핑하여 제 2 서브 코드를 생성하는 동작은,상기 제 1 OTP에 상기 기설정된 오프셋을 적용하는 동작; 및상기 오프셋 적용된 제 1 OTP를 상기 문자 세트에 매핑하여 상기 제 2 서브 코드를 생성하는 동작을 포함하는 코드를 생성하는 방법.
- 제 7 항에 있어서,상기 오프셋 적용된 제 1 OTP에 대하여 상기 문자 세트의 크기로 모드(mod) 연산을 수행하는 동작; 및상기 제 1 OTP에 대한 모드 연산 수행 결과를 상기 문자 세트에 매핑하여 상기 제 2 서브 코드를 생성하는 동작을 포함하는 코드를 생성하는 방법.
- 제 1 항에 있어서,상기 문자 세트를 획득하는 동작은,기본 문자 세트를 획득하는 동작; 및상기 기본 문자 세트의 원소를 셔플링(shuffling)함으로써, 상기 문자 세트를 획득하는 동작을 포함하는 코드를 생성하는 방법.
- 제 9 항에 있어서,상기 기본 문자 세트의 원소를 셔플링하는 동작은,시스템의 모든 사용자에게 동일한 제 2 씨드를 획득하는 동작;상기 제 2 씨드를 이용하여 제 2 OTP를 생성하는 동작; 및상기 제 2 OTP에 대한 상기 기본 문자 세트의 원소의 개수의 모드(mod) 연산 결과를 이용하여 상기 기본 문자 세트의 각 자리 원소를 다른 자리의 원소와 스와핑(swapping)하는 동작을 포함하는 코드를 생성하는 방법.
- 코드를 생성하는 전자 장치에 있어서,메모리; 및상기 메모리에 전기적으로 연결된 프로세서를 포함하고,상기 메모리는, 실행시에 상기 프로세서가,일회용 암호를 생성하기 위한 제 1 씨드, 제 1 사용자에게 부여된 제 1 고유 코드 및 문자 세트를 획득하고,상기 제 1 씨드를 이용하여 제 1 OTP(one time password)를 생성하고,상기 제 1 OTP 및 제 1 고유 코드의 연산 결과를 상기 문자 세트에 매핑하여 제 1 서브 코드를 생성하고,상기 제 1 OTP를 상기 문자 세트에 매핑하여 제 2 서브 코드를 생성하고,상기 제 1 서브 코드 및 상기 제 2 서브 코드를 이용하여 상기 코드를 생성하는 인스트럭션을 저장하는 전자 장치.
- 제 11 항에 있어서,상기 메모리는, 실행시에 상기 프로세서가,상기 제 1 씨드 및 제 1 시점에 대응하는 제 1 시간 정보를 시간 기반 일회용 암호 알고리즘에 입력하여, 상기 제 1 OTP를 생성하는 인스트럭션을 저장하는 전자 장치.
- 제 11 항에 있어서,상기 메모리는, 실행시에 상기 프로세서가,상기 문자 세트와 비교함으로써, 상기 제 1 고유 코드를 숫자 코드로 변환하고,상기 숫자 코드를 상기 제 1 OTP와 합산하고,상기 합산 결과를 상기 문자 세트에 매핑하여 상기 제 1 서브 코드를 생성하는 인스트럭션을 저장하는 전자 장치.
- 제 13 항에 있어서,상기 메모리는, 실행시에 상기 프로세서가,상기 합산 결과에 대하여 상기 문자 세트의 크기로 모드(mod) 연산을 수행하고,상기 합산 결과에 대한 모드 연산 수행 결과를 상기 문자 세트에 매핑하여 상기 제 1 서브 코드를 생성하는 인스트럭션을 저장하는 전자 장치.
- 제 13 항에 있어서,상기 메모리는, 실행시에 상기 프로세서가,상기 합산 결과에 기설정된 오프셋을 적용하고,상기 오프셋 적용된 합산 결과를 상기 문자 세트에 매핑하여 상기 제 1 서브 코드를 생성하는 인스트럭션을 저장하는 전자 장치.
- 제 15 항에 있어서,상기 메모리는, 실행시에 상기 프로세서가,상기 오프셋 적용된 합산 결과에 대하여 상기 문자 세트의 크기로 모드(mod) 연산을 수행하고,상기 상기 합산 결과에 대한 모드 연산 수행 결과를 상기 문자 세트에 매핑하여 상기 제 1 서브 코드를 생성하는 인스트럭션을 저장하는 전자 장치.
- 제 15 항에 있어서,상기 메모리는, 실행시에 상기 프로세서가,상기 제 1 OTP에 상기 기설정된 오프셋을 적용하고,상기 오프셋 적용된 제 1 OTP를 상기 문자 세트에 매핑하여 상기 제 2 서브 코드를 생성하는 인스트럭션을 저장하는 전자 장치.
- 제 17 항에 있어서,상기 오프셋 적용된 제 1 OTP에 대하여 상기 문자 세트의 크기로 모드(mod) 연산을 수행하고,상기 제 1 OTP에 대한 모드 연산 수행 결과를 상기 문자 세트에 매핑하여 상기 제 2 서브 코드를 생성하는 인스트럭션을 저장하는 전자 장치.
- 제 11 항에 있어서,상기 메모리는, 실행시에 상기 프로세서가,기본 문자 세트를 획득하고,상기 기본 문자 세트의 원소를 셔플링(shuffling)함으로써, 상기 문자 세트를 획득하는 인스트럭션을 저장하는 전자 장치.
- 제 19 항에 있어서,상기 메모리는, 실행시에 상기 프로세서가,시스템의 모든 사용자에게 동일한 제 2 씨드를 획득하고,상기 제 2 씨드를 이용하여 제 2 OTP를 생성하고,상기 제 2 OTP에 대한 상기 기본 문자 세트의 원소의 개수의 모드(mod) 연산 결과를 이용하여 상기 기본 문자 세트의 각 자리 원소를 다른 자리의 원소와 스와핑(swapping)하는 인스트럭션을 저장하는 전자 장치.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2015-0094374 | 2015-07-01 | ||
KR1020150094374A KR101572111B1 (ko) | 2015-07-01 | 2015-07-01 | 랜덤하면서 유일한 코드를 생성하는 전자 장치 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2017003051A1 true WO2017003051A1 (ko) | 2017-01-05 |
Family
ID=54847747
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/KR2015/013444 WO2017003051A1 (ko) | 2015-07-01 | 2015-12-09 | 랜덤하면서 유일한 코드를 생성하는 전자 장치 및 방법 |
PCT/KR2016/007093 WO2017003243A1 (ko) | 2015-07-01 | 2016-07-01 | 랜덤하면서 유일한 코드를 생성하는 전자 장치 및 그 제어 방법 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/KR2016/007093 WO2017003243A1 (ko) | 2015-07-01 | 2016-07-01 | 랜덤하면서 유일한 코드를 생성하는 전자 장치 및 그 제어 방법 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10341336B2 (ko) |
EP (1) | EP3113410B1 (ko) |
JP (1) | JP6199447B2 (ko) |
KR (1) | KR101572111B1 (ko) |
CN (1) | CN106452777B (ko) |
AU (1) | AU2016204540B2 (ko) |
WO (2) | WO2017003051A1 (ko) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101751887B1 (ko) * | 2015-12-29 | 2017-07-11 | 한국정보통신주식회사 | 일회용 카드 코드 생성 방법, 그를 이용한 카드 결제 승인 방법, 카드 리더기 및 서버 |
KR101751894B1 (ko) * | 2015-12-29 | 2017-07-03 | 한국정보통신주식회사 | 결제 단말 장치 및 일회용 카드 코드를 이용한 결제 처리 방법 |
US20170357799A1 (en) * | 2016-06-12 | 2017-12-14 | Logmein, Inc. | Tracking and managing multiple time-based one-time password (TOTP) accounts |
KR101945738B1 (ko) * | 2016-11-29 | 2019-02-08 | 충남대학교산학협력단 | 어플리케이션의 무결성을 검증하기 위한 어플리케이션 서버 및 그 제어 방법 |
EP3425602B1 (en) * | 2017-07-06 | 2020-09-02 | Wincor Nixdorf International GmbH | Method and system of performing an authorization mechanism between a service terminal system and a helpdesk system |
KR102036155B1 (ko) * | 2017-08-16 | 2019-10-24 | (주)디에스멘토링 | 서버 패스워드 관리 방법 및 장치 |
US11190495B2 (en) * | 2017-10-02 | 2021-11-30 | Colossio, Inc. | One-time-pad encryption |
US10068082B1 (en) * | 2017-11-16 | 2018-09-04 | Fmr Llc | Systems and methods for maintaining split knowledge of web-based accounts |
JP7192208B2 (ja) * | 2017-12-01 | 2022-12-20 | ヤマハ株式会社 | 機器制御システム、デバイス、プログラム、及び機器制御方法 |
JP6962158B2 (ja) | 2017-12-01 | 2021-11-05 | ヤマハ株式会社 | 機器制御システム、機器制御方法、及びプログラム |
JP7067082B2 (ja) | 2018-01-24 | 2022-05-16 | ヤマハ株式会社 | 機器制御システム、機器制御方法、及びプログラム |
CN110391897A (zh) * | 2018-04-20 | 2019-10-29 | 武汉真元生物数据有限公司 | 一种基于生物标识的口令生成方法及系统 |
US10460221B1 (en) * | 2018-09-07 | 2019-10-29 | Ryan C. Tucker | Displaying a seeded, continuously updating identifier in a QR code |
US10893041B2 (en) * | 2018-10-10 | 2021-01-12 | International Business Machines Corporation | Single use passcode authentication |
US10389708B1 (en) | 2019-01-03 | 2019-08-20 | Capital One Services, Llc | Secure authentication of a user associated with communication with a service representative |
US10769873B1 (en) | 2019-06-28 | 2020-09-08 | Alibaba Group Holding Limited | Secure smart unlocking |
KR102242720B1 (ko) * | 2019-07-09 | 2021-04-21 | 에스지에이 주식회사 | 클라이언트별 능동적 시각 오프셋 윈도우를 통한 고유 시각 방식의 otp 설정 방법 |
KR102227505B1 (ko) * | 2019-09-19 | 2021-03-16 | 주식회사 이노스코리아 | 와이파이를 제공하는 억세스 포인트에 연결하는 전자 장치 및 그 동작 방법 |
KR20210103870A (ko) * | 2020-02-14 | 2021-08-24 | 주식회사 대림 | 세대단말기를 중심으로 하는 스마트홈 보안 강화 시스템 |
US11402814B2 (en) * | 2020-04-22 | 2022-08-02 | Capital One Services, Llc | Interactive home system including wireless devices |
CN111935178B (zh) * | 2020-09-23 | 2020-12-29 | 南京中孚信息技术有限公司 | 一种移动设备双因子离线认证方法、系统及装置 |
EP4020267A1 (en) * | 2020-12-22 | 2022-06-29 | Banco Bilbao Vizcaya Argentaria, S.A. | Anti-fraud method for authorizing operations |
JP7333923B2 (ja) * | 2022-01-28 | 2023-08-28 | 株式会社ギガ・システム | 認証システム、認証モジュール、および認証プログラム |
KR20230120309A (ko) * | 2022-02-09 | 2023-08-17 | (주)가온아이 | 포스트 양자 암호 환경을 위한 고 차원 다형성 암호화를 수행하는 전자 장치 및 그 동작 방법 |
KR102600593B1 (ko) * | 2022-12-22 | 2023-11-09 | 장준 | 가상 키보드를 이용하여 데이터를 암호화하기 위한 장치 및 방법 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090033594A (ko) * | 2007-10-01 | 2009-04-06 | 에스케이 텔레콤주식회사 | 이동통신 단말기에서의 공인 인증서 비밀번호 인증 장치 및방법 |
JP2010102637A (ja) * | 2008-10-27 | 2010-05-06 | Kddi Corp | 数字列変換装置、ユーザ認証システム、数字列変換方法、およびプログラム |
KR20110039947A (ko) * | 2009-10-13 | 2011-04-20 | 주식회사 아레오네트웍스 | 온라인 무선 결제 방법 및 시스템과 이를 위한 기록매체 |
KR101428650B1 (ko) * | 2014-03-07 | 2014-08-13 | (주)케이사인 | 암호화 방법 및 복호화 방법 |
KR20150004540A (ko) * | 2013-07-03 | 2015-01-13 | (주)에이티솔루션즈 | 오류 관리를 위한 엔에프씨 기반 다중 오티피 운영 방법 |
Family Cites Families (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4879747A (en) * | 1988-03-21 | 1989-11-07 | Leighton Frank T | Method and system for personal identification |
JP3053527B2 (ja) | 1993-07-30 | 2000-06-19 | インターナショナル・ビジネス・マシーンズ・コーポレイション | パスワードを有効化する方法及び装置、パスワードを生成し且つ予備的に有効化する方法及び装置、認証コードを使用して資源のアクセスを制御する方法及び装置 |
US10326798B2 (en) * | 1998-07-16 | 2019-06-18 | Grid7, LLC | System and method for secure data transmission and storage |
US7069584B1 (en) * | 1998-12-08 | 2006-06-27 | Davis Campbell Engineering Llc | Process and apparatus for improving the security of authentication procedures using a new “Super PIN” |
JP2004501532A (ja) * | 2000-03-29 | 2004-01-15 | ヴァディアム テクノロジー インコーポレイテッド | 鍵中央提供及びキー入力可能文字によるワンタイムパッド暗号化 |
US7363494B2 (en) | 2001-12-04 | 2008-04-22 | Rsa Security Inc. | Method and apparatus for performing enhanced time-based authentication |
US20060034456A1 (en) * | 2002-02-01 | 2006-02-16 | Secure Choice Llc | Method and system for performing perfectly secure key exchange and authenticated messaging |
US7519989B2 (en) * | 2003-07-17 | 2009-04-14 | Av Thenex Inc. | Token device that generates and displays one-time passwords and that couples to a computer for inputting or receiving data for generating and outputting one-time passwords and other functions |
CA2556148C (en) | 2004-02-23 | 2014-04-29 | Verisign, Inc. | Token authentication system and method |
JP2006018773A (ja) | 2004-07-05 | 2006-01-19 | Fujitsu Ltd | パスワード認証装置、パスワード認証方法およびパスワード認証プログラム |
CN1731721A (zh) | 2004-08-22 | 2006-02-08 | 西安海星现代科技股份有限公司 | 动态口令生成方法 |
US7437755B2 (en) * | 2005-10-26 | 2008-10-14 | Cisco Technology, Inc. | Unified network and physical premises access control server |
US9002750B1 (en) * | 2005-12-09 | 2015-04-07 | Citicorp Credit Services, Inc. (Usa) | Methods and systems for secure user authentication |
CN101000673A (zh) | 2006-01-13 | 2007-07-18 | 蒋利 | 用户交易口令确认系统及方法 |
JP4693171B2 (ja) * | 2006-03-17 | 2011-06-01 | 株式会社日立ソリューションズ | 認証システム |
WO2007119667A1 (en) * | 2006-03-29 | 2007-10-25 | Casio Computer Co., Ltd. | Identification information output device |
US20080072058A1 (en) * | 2006-08-24 | 2008-03-20 | Yoram Cedar | Methods in a reader for one time password generating device |
US20080132235A1 (en) * | 2006-11-30 | 2008-06-05 | Motorola, Inc. | Method to Facilitate Pre-Provisioning a Wireless Access Point With a One-Time Password to Facilitate Authorized Handoffs for a Given Communication Session |
US8255696B2 (en) * | 2007-05-01 | 2012-08-28 | Microsoft Corporation | One-time password access to password-protected accounts |
US8788835B2 (en) * | 2007-08-28 | 2014-07-22 | Alcatel Lucent | Methods for selectively capturing and replicating one-time password generator functionality from device to device |
US8424057B2 (en) * | 2007-12-28 | 2013-04-16 | Ebay, Inc. | Mobile anti-phishing |
US20090220075A1 (en) * | 2008-02-28 | 2009-09-03 | Akros Techlabs, Llc | Multifactor authentication system and methodology |
US9521142B2 (en) | 2009-02-03 | 2016-12-13 | Inbay Technologies Inc. | System and method for generating passwords using key inputs and contextual inputs |
US20100242104A1 (en) | 2009-03-23 | 2010-09-23 | Wankmueller John R | Methods and systems for secure authentication |
CA2761531A1 (en) * | 2009-05-11 | 2010-11-18 | Emue Holdings Pty Ltd | User authentication device and method |
US8799668B2 (en) * | 2009-11-23 | 2014-08-05 | Fred Cheng | Rubbing encryption algorithm and security attack safe OTP token |
EP2519906B1 (en) * | 2009-12-30 | 2017-05-10 | Nec Corporation | Method and system for user authentication |
US8412928B1 (en) * | 2010-03-31 | 2013-04-02 | Emc Corporation | One-time password authentication employing local testing of candidate passwords from one-time password server |
US9258296B2 (en) * | 2010-07-29 | 2016-02-09 | Nirmal Juthani | System and method for generating a strong multi factor personalized server key from a simple user password |
US8640206B2 (en) * | 2010-08-20 | 2014-01-28 | Regis J. Betsch | System and method for controlling access to information stored at plurality of sites |
US8312519B1 (en) * | 2010-09-30 | 2012-11-13 | Daniel V Bailey | Agile OTP generation |
US8869255B2 (en) | 2010-11-30 | 2014-10-21 | Forticom Group Ltd | Method and system for abstracted and randomized one-time use passwords for transactional authentication |
KR101360615B1 (ko) | 2011-10-18 | 2014-02-10 | 김성수 | 근거리 무선통신을 이용한 주문 서비스 시스템 및 방법 |
TWI466525B (zh) * | 2011-11-21 | 2014-12-21 | Inst Information Industry | 存取控制系統及其存取控制方法 |
US20130185780A1 (en) * | 2012-01-12 | 2013-07-18 | Infosys Limited | Computer implemented method and system for generating a one time password |
US9172698B1 (en) * | 2012-10-12 | 2015-10-27 | Ut-Battelle, Llc | System and method for key generation in security tokens |
US8909933B2 (en) * | 2012-10-25 | 2014-12-09 | International Business Machines Corporation | Decoupled cryptographic schemes using a visual channel |
US9218476B1 (en) * | 2012-11-07 | 2015-12-22 | Amazon Technologies, Inc. | Token based one-time password security |
CN103067892B (zh) | 2012-12-21 | 2015-06-03 | 深圳一卡通新技术有限公司 | 一种使用水印的短信传输方法 |
GB2509322A (en) * | 2012-12-28 | 2014-07-02 | Securenvoy Plc | Time-based two factor authentication |
US8904482B1 (en) | 2012-12-31 | 2014-12-02 | Emc Corporation | Techniques for securing a one-time passcode with an alteration code |
US9313024B1 (en) | 2013-06-13 | 2016-04-12 | Masergy Communications, Inc. | Keyed communication token |
FR3008837B1 (fr) * | 2013-07-19 | 2015-08-07 | In Webo Technologies | Procede d'authentification forte |
US9361445B2 (en) * | 2014-01-31 | 2016-06-07 | Google Inc. | Multiline one time password |
US9332008B2 (en) * | 2014-03-28 | 2016-05-03 | Netiq Corporation | Time-based one time password (TOTP) for network authentication |
US9621526B2 (en) * | 2014-04-10 | 2017-04-11 | OTP Technologies, Inc. | Content encryption and decryption |
CN105095701A (zh) | 2014-05-06 | 2015-11-25 | 黄熙镜 | 一种用户认证的方法、装置和终端设备 |
-
2015
- 2015-07-01 KR KR1020150094374A patent/KR101572111B1/ko active IP Right Grant
- 2015-12-09 WO PCT/KR2015/013444 patent/WO2017003051A1/ko active Application Filing
-
2016
- 2016-06-24 US US15/192,684 patent/US10341336B2/en active Active
- 2016-06-30 AU AU2016204540A patent/AU2016204540B2/en active Active
- 2016-06-30 EP EP16177239.7A patent/EP3113410B1/en active Active
- 2016-07-01 WO PCT/KR2016/007093 patent/WO2017003243A1/ko active Application Filing
- 2016-07-01 CN CN201610516618.2A patent/CN106452777B/zh active Active
- 2016-07-01 JP JP2016131405A patent/JP6199447B2/ja active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090033594A (ko) * | 2007-10-01 | 2009-04-06 | 에스케이 텔레콤주식회사 | 이동통신 단말기에서의 공인 인증서 비밀번호 인증 장치 및방법 |
JP2010102637A (ja) * | 2008-10-27 | 2010-05-06 | Kddi Corp | 数字列変換装置、ユーザ認証システム、数字列変換方法、およびプログラム |
KR20110039947A (ko) * | 2009-10-13 | 2011-04-20 | 주식회사 아레오네트웍스 | 온라인 무선 결제 방법 및 시스템과 이를 위한 기록매체 |
KR20150004540A (ko) * | 2013-07-03 | 2015-01-13 | (주)에이티솔루션즈 | 오류 관리를 위한 엔에프씨 기반 다중 오티피 운영 방법 |
KR101428650B1 (ko) * | 2014-03-07 | 2014-08-13 | (주)케이사인 | 암호화 방법 및 복호화 방법 |
Also Published As
Publication number | Publication date |
---|---|
WO2017003243A1 (ko) | 2017-01-05 |
EP3113410B1 (en) | 2019-03-27 |
CN106452777A (zh) | 2017-02-22 |
AU2016204540B2 (en) | 2017-10-12 |
AU2016204540A1 (en) | 2017-01-19 |
US10341336B2 (en) | 2019-07-02 |
JP6199447B2 (ja) | 2017-09-20 |
JP2017017711A (ja) | 2017-01-19 |
EP3113410A1 (en) | 2017-01-04 |
US20170006026A1 (en) | 2017-01-05 |
CN106452777B (zh) | 2019-12-13 |
KR101572111B1 (ko) | 2015-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2017003051A1 (ko) | 랜덤하면서 유일한 코드를 생성하는 전자 장치 및 방법 | |
WO2021071157A1 (en) | Electronic device and method for managing blockchain address using the same | |
WO2017119548A1 (ko) | 보안성이 강화된 사용자 인증방법 | |
WO2022102930A1 (ko) | 브라우저 기반 보안 pin 인증을 이용한 did 시스템 및 그것의 제어방법 | |
WO2018082484A1 (zh) | 一种电子设备的截屏方法、系统及电子设备 | |
WO2021261728A1 (ko) | 다기능을 가지는 보안 연결을 제공하는 보안 통신 장치 및 그 동작 방법 | |
WO2020091525A1 (ko) | 생체 인증을 이용한 결제 방법 및 그 전자 장치 | |
WO2018034491A1 (en) | A primary device, an accessory device, and methods for processing operations on the primary device and the accessory device | |
WO2022060149A1 (ko) | 탈중앙화 네트워크를 이용하여 권리를 관리하는 전자 장치 및 이의 동작 방법 | |
WO2018147530A1 (ko) | 음파를 이용한 식별정보와 구매자의 동적코드를 맵핑하는 모바일 결제 시스템 | |
WO2021080316A1 (ko) | 권한 정보에 기초한 인증서를 사용하여 액세스 컨트롤하는 방법 및 장치 | |
WO2019124830A1 (en) | Electronic apparatus, electronic system and control method thereof | |
WO2020235733A1 (ko) | 유저 바이오 데이터를 이용한 유저 인증 및 서명 장치와 방법 | |
WO2019139421A1 (en) | User terminal device, electronic device, system comprising the same and control method thereof | |
WO2021210918A1 (en) | Electronic device for sending cryptocurrency to blockchain account and method for operating the same | |
WO2020149500A1 (ko) | 공유된 키를 등록하기 위한 방법 및 장치 | |
WO2021049681A1 (ko) | 클라우드 서버를 기초로 인증을 수행하는 전자 장치 및 그 제어 방법 | |
WO2021054619A1 (ko) | 확장함수를 이용한 복수의 묵시적 인증서 발급 시스템 및 그 발급 방법 | |
WO2021172876A1 (ko) | 가상인증코드 기반의 절차 승인 장치 및 방법 | |
WO2021133074A2 (ko) | 경량 기기 전용 개체 또는 메시지 인증 방법 및 이를 수행하는 장치들 | |
WO2019041139A1 (zh) | 显示界面的解锁方法、移动终端及存储介质 | |
WO2017071448A1 (zh) | 一种移动网络注册方法及相关设备、系统 | |
WO2020096180A1 (ko) | 익명성 보장 및 시빌 공격 방지가 가능한, 의사 표시 확인 방법, 신원 확인 정보 저장 모듈의 등록 및 인증 방법 | |
WO2023153717A1 (ko) | 포스트 양자 암호 환경을 위한 고 차원 다형성 암호화를 수행하는 전자 장치 및 그 동작 방법 | |
WO2022203094A1 (ko) | 알에스에이를 방지하는 전자 장치 및 그 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 15897269 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 15897269 Country of ref document: EP Kind code of ref document: A1 |