WO2020032504A1 - 가상투표코드 기반의 투표 및 개표 방법 및 시스템 - Google Patents

가상투표코드 기반의 투표 및 개표 방법 및 시스템 Download PDF

Info

Publication number
WO2020032504A1
WO2020032504A1 PCT/KR2019/009732 KR2019009732W WO2020032504A1 WO 2020032504 A1 WO2020032504 A1 WO 2020032504A1 KR 2019009732 W KR2019009732 W KR 2019009732W WO 2020032504 A1 WO2020032504 A1 WO 2020032504A1
Authority
WO
WIPO (PCT)
Prior art keywords
voting
code
selection information
virtual
coordinate
Prior art date
Application number
PCT/KR2019/009732
Other languages
English (en)
French (fr)
Inventor
유창훈
Original Assignee
주식회사 센스톤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from KR1020190062104A external-priority patent/KR102137953B1/ko
Application filed by 주식회사 센스톤 filed Critical 주식회사 센스톤
Publication of WO2020032504A1 publication Critical patent/WO2020032504A1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists

Definitions

  • the electronic voting method is not trusted by the voters by the doubt that the administrator can check their own voting results, and current electronic voting methods have the potential to leak each voter's voting results.
  • the problem to be solved by the present invention is to provide a virtual voting code based voting and counting method and system that prevents manipulation of voting results by generating a virtual code that can not be confirmed without a separate voting system for each voter. .
  • the present invention also provides a virtual voting code-based voting and counting method and system that achieves anonymization of voting results by removing the connection between the virtual code according to the voting result of each voter and the voter's identity data.
  • the present invention can extract the voting result from the virtual voting code only when the voting code arrangement is provided from the voting system after the end of the voting through the separation of the voting system and the counting system, thereby preventing the manipulation of the voting results to ensure the integrity of the voting results To provide a virtual ballot-based voting and ballot method and system.
  • the present invention provides a method and system for voting and counting a ballot based on a virtual voting code that increases the reliability of voting by allowing a voter to be anonymous to others after the voting is completed.
  • a virtual voting code based voting and counting method includes a server generating authentication data by receiving a user authentication request from a user terminal; A list providing step of the server providing the coordinate list generated based on the voting code array to the user terminal; Receiving, by the server, a virtual voting code generated at the user terminal; And a distributed storage step in which the server distributes and stores the authentication data and the virtual voting code of each user, wherein the coordinate list includes a plurality of coordinates arranged at random and the virtual voting code is a user terminal. Is generated based on coordinate selection information representing one coordinate selected from the coordinate list, and the voting code array is used to calculate the voting result in the voting system as the plurality of coordinates are listed according to a specific rule.
  • the providing of the list may include providing, by the server, a candidate list including a plurality of candidates to the user terminal.
  • the virtual voting code is generated based on candidate selection information, and the candidate selection information indicates one candidate selected from the candidate list in the user terminal.
  • the candidate selection information may be included as sub-information of the coordinate selection information in the vote code array.
  • the coordinate selection information and the candidate selection information are each assigned a code corresponding to the vote code array.
  • the virtual voting code may be generated by combining a plurality of detailed codes, and the plurality of detailed codes may include detailed codes generated based on a code corresponding to the coordinate selection information in the voting code array.
  • the detailed code generated based on the code corresponding to the coordinate selection information may be generated differently according to a code corresponding to the candidate selection information included as lower information in the coordinate selection information.
  • the virtual voting code is a code generated at the time of voting to search for coordinate selection information selected by the user.
  • the server may store and store the authentication data and the virtual voting code on a block chain basis.
  • a virtual voting code-based voting and ballot method sets a voting result extraction algorithm for applying a voting code array provided from an external device, a voting result extraction algorithm.
  • Setting step Extracting, by the server, virtual voting codes distributed and stored in a plurality of external servers; Extracting, by the server, authentication data distributed and stored in a plurality of external servers; Voting result checking step of the server extracting a plurality of detailed codes from the virtual voting code using the voting result extraction algorithm and confirming a voting result; And the voter counting step, wherein the server calculates the vote count using the authentication data, wherein the virtual voting code is generated based on coordinate selection information, and the coordinate selection information is specified within the voting code array. Coordinate of a selected one of a plurality of coordinates listed according to the rule.
  • the virtual voting code is generated based on candidate selection information, and the candidate selection information is included as sub-information of the coordinate selection information in the voting code array.
  • the coordinate selection information and the candidate selection information are each assigned a code corresponding to the voting code array, and the plurality of detailed codes are generated based on a code corresponding to the coordinate selection information within the voting code array. Including a detail code, the detail code generated based on the code corresponding to the coordinate selection information is generated differently according to a code corresponding to the candidate selection information included as lower information in the coordinate selection information .
  • the server receives the virtual voting code from the user terminal; Extracting, by the server, a plurality of detailed codes from a virtual voting code provided from the user terminal using the voting result extraction algorithm; And providing, by the server, coordinate selection information and candidate selection information corresponding to the extracted detail code to the user terminal.
  • a virtual voting code based voting and ballot program is combined with a computer, which executes the virtual voting code based voting and ballot method, and is stored in a medium. .
  • a virtual voting code generating method comprising: requesting user authentication to a voting server; When the user authentication is completed, a coordinate list and a candidate list generated based on the voting code array are provided from the voting server, wherein the coordinate list includes a plurality of coordinates randomly arranged, and the candidate list includes a plurality of candidates.
  • a list obtaining step Generating a virtual voting code using coordinate selection information generated by selecting one of the coordinate lists and candidate selection information generated by selecting one of the candidate lists; And providing the generated virtual voting code to the voting server, wherein the virtual voting code is a code generated at the time of voting to search for the coordinate selection information, and the voting code array is arranged in the plurality of coordinates.
  • the coordinate selection information includes the candidate selection information as sub-information in the voting code array
  • the coordinate selection information and the candidate selection information are codes corresponding to the voting code array, respectively.
  • the virtual voting code includes a detailed code generated based on a code corresponding to the coordinate selection information in the voting code array, and the detailed code generated based on a code corresponding to the coordinate selection information Differently according to a code corresponding to the candidate selection information included as lower information in the coordinate selection information Characterized in that the sex.
  • the virtual voting code generating program is combined with a computer, which executes the virtual voting code generating method, and is stored in a medium.
  • a virtual voting code-based voting server apparatus includes an authentication data generation unit for generating user authentication by receiving user authentication from a user terminal; A coordinate list and a candidate list are generated based on previously stored voting code arrays and provided to the user terminal.
  • the coordinate list includes a plurality of coordinates randomly arranged, and the candidate list includes a plurality of candidates.
  • the candidate selection information indicates one candidate selected from the candidate list in the user terminal, and the coordinate selection information includes the candidate selection information as sub-information in the voting code array, and the coordinate selection information and the Candidate selection information is characterized in that a code corresponding to each of the vote code array is given.
  • a virtual ballot code-based ballot server apparatus includes a voting result extraction algorithm setting unit for setting a voting result extraction algorithm for applying a voting code array provided from an external device; A virtual voting code extracting unit for extracting distributed and stored virtual voting codes; An authentication data extraction unit configured to extract authentication data of a distributed and stored user; A voting result extracting unit for extracting a plurality of detailed codes from the virtual voting code by using the voting result extracting algorithm and confirming a voting result; And a voting staff calculation unit configured to calculate voting personnel using the extracted authentication data, wherein the virtual voting code is generated based on the coordinate selection information, and the coordinate selection information is within the voting code array.
  • the candidate selection information is included as sub-information, and the coordinate selection information and the candidate selection information are respectively assigned codes corresponding to the voting code array, and the plurality of detailed codes are selected for the coordinates within the voting code array.
  • a detail code generated based on a code corresponding to the information wherein the detail code generated based on the code corresponding to the coordinate selection information corresponds to the candidate selection information included as sub-information in the coordinate selection information. It is characterized in that it is generated differently.
  • the voter system stores the authentication data and the virtual voting code by breaking the connection between the authentication data and the virtual voting code. You won't be able to track what you did.
  • the voting code array used to generate the virtual voting code is included in the voting system during the voting process and provided to the voting system after the voting is completed, extracting the virtual voting code from the voting system in the middle of voting It becomes impossible to eliminate the risk of tampering with the voting results.
  • the voting system extracts the coordinates and candidate selection information from the virtual voting code, and provides the voter's terminal to the voter's terminal. You can check whether the results are reflected correctly.
  • the counting system cannot connect each voter with each vote result, but the voter himself can confirm the vote result with himself only by the vote result provided by the vote counting system. Indeed, more obvious secret ballots are possible.
  • FIG. 1 is a block diagram of a voting and ballot system based on a virtual voting code according to an embodiment of the present invention.
  • FIG. 2 is a block diagram of a virtual voting code based voting server apparatus according to an embodiment of the present invention.
  • FIG. 3 is a block diagram of a virtual ballot server based ballot server apparatus according to an exemplary embodiment of the present invention.
  • FIG. 4 is a flowchart of virtual voting code generation according to an embodiment of the present invention.
  • FIG. 5 is a flowchart illustrating a virtual voting code based voting method according to an embodiment of the present invention.
  • FIG. 6 is a flowchart of a virtual ballot-based ballot counting method according to an embodiment of the present invention.
  • FIG. 7 is an exemplary diagram of a coordinate list and a candidate list according to an embodiment of the present invention.
  • FIG. 8 is an exemplary diagram of a voting code array in which a plurality of coordinates is arranged according to a specific rule according to an embodiment of the present invention.
  • FIG. 9 is an exemplary diagram of a voting result extraction algorithm for searching for coordinate selection information through k-shaped cloud movement according to an embodiment of the present invention.
  • FIG. 10 is an exemplary diagram of a voting result extraction algorithm for searching for coordinate selection information by moving on a track according to an embodiment of the present invention.
  • 'user' means a voter who votes.
  • 'coordinate' refers to a code assigned based on a user's selection or a voting result (for example, the selected candidate number) at the time of electronic voting.
  • 'coordinate' means that a voter receives a ballot from an actual ballot and votes on the user in a plurality of strings (for example, a string of numbers or alphabets). Is assigned to the user by random string selection or candidate selection.
  • the 'voting code array' is that a plurality of coordinates are listed by a specific rule.
  • the 'coordinate list' means a list in which a plurality of coordinates listed in the voting code array are randomly arranged.
  • 'coordinate selection information' is a specific coordinate value in a voting code array assigned (eg, selected by a user) to a user (ie, a voter).
  • 'candidate selection information' is a value of information (eg, a number) of candidates selected by a user (ie, a voter).
  • 'letter' is a component constituting the code, and includes all or part of uppercase alphabet, lowercase alphabet, numbers and special characters.
  • 'code' means a string in which characters are listed.
  • 'virtual voting code' is generated based on the voter's voting result and is used to calculate the voting result at the time of counting.
  • the 'detail code' means some codes included in the virtual voting code.
  • the 'unit count' is a unit defined as being set as a specific time interval and changing as the time interval elapses. For example, one count may be set and used at a specific time interval (for example, 1.5 seconds).
  • the 'virtual voting code generation function' means a function used to generate a virtual voting code.
  • 'cloud movement' means a translational movement while the object rotates.
  • 'cloud movement' is to move while performing a rotational motion and a translational movement together, and means that each point of the rotating object moves while being in contact with the moving axis in turn.
  • FIG. 1 is a block diagram of a voting and ballot system based on a virtual voting code according to an embodiment of the present invention.
  • the voting and ballot system based on the virtual voting code includes a user terminal 10, a voting server 20, and a ballot server 30.
  • the user terminal 10 is a mobile terminal of the voter who votes.
  • the user terminal 10 may have a built-in program or a dedicated application (hereinafter, a dedicated program) for voting using a virtual voting code.
  • a dedicated program embedded in or installed in the user terminal 10 is provided with a coordinate list by communicating with the voting server 20.
  • the coordinate list is a list in which a plurality of coordinates are arranged at random.
  • the dedicated program serves to generate coordinate selection information selected by the user. That is, when the user selects one of the plurality of coordinates arranged in the coordinate list through the user terminal 10, the coordinate selection information is generated using the selected coordinates.
  • the dedicated program when coordinates are selected by the user, the dedicated program communicates with the voting server 20 to receive a candidate list.
  • the candidate list is a list including a plurality of candidates, and may indicate information of candidates running for election, for example, candidate numbers, names, affiliations, and the like.
  • the dedicated program serves to generate candidate selection information selected by the user. That is, when the user selects one candidate among a plurality of candidates included in the candidate list through the user terminal 10, candidate selection information is generated using the selected candidate.
  • the dedicated program generates a virtual voting code using a virtual voting code generation function included in the program.
  • the virtual voting code generation function generates a virtual voting code based on the coordinate selection information given to a specific user.
  • the virtual voting code generation function includes one or more detail code generation functions. For example, if the virtual voting code includes a plurality of detail codes, the virtual voting code generating function generates a plurality of detail codes using the plurality of detail code generating functions, and combines them to generate a final virtual voting code. do.
  • the virtual voting code generation function further includes a detailed code combining function.
  • the detail code combining function is a rule for combining a plurality of detail codes.
  • the detail code combining function combines the plurality of detail codes according to a specific rule to generate a virtual voting code.
  • the virtual voting code generation function generates a virtual voting code composed of a plurality of detailed codes for searching the coordinate selection information (ie, specific coordinates) selected by the user in the ballot counting algorithm. For example, when candidate information selected by each user matches each virtual voting code, the dedicated program generates a virtual voting code capable of searching for coordinates (ie, coordinate selection information) selected by the user in the ballot counting server.
  • the virtual voting code generation function generates the virtual voting code by reflecting the candidate information selected by the user (ie, candidate selection information). That is, the virtual voting code generation function in the dedicated program may contain candidate selection information selected by the user in the virtual voting code itself.
  • the virtual voting code generation function selects a code group based on specific coordinate selection information and selects a specific code value in the coordinate code group based on the candidate selection information.
  • the dedicated program sets the corresponding code value to a value including the coordinate selection information and the candidate selection information of the user, and generates a plurality of detailed codes based on the code value. That is, the dedicated program is included in the voting server, and after generating a plurality of detailed codes (for example, the first code and the second code) that can search for the corresponding code value in the voting code array to be used for voting on the voting server Combine to generate a virtual voting code.
  • the voting code array includes a specific coordinate code selected by the user (that is, a coordinate code provided to the user while representing a specific group) and a coordinate code corresponding to the number of candidates in the group corresponding to the selected coordinate code. do. That is, the dedicated program selects a group according to a specific coordinate code selected by the user, and extracts specific detailed coordinate codes in the group according to a candidate selected by the user.
  • the specific group includes the coordinate code of the number of candidates and the coordinate code representing the group.
  • each group includes a coordinate code selected by the user while representing the group, and a plurality of coordinate codes corresponding to the number of candidates successively.
  • the dedicated program calculates a plurality of subordinate codes (eg, a first code and a second code) for searching the subordinate coordinate code, and then combines them To generate a virtual voting code.
  • a plurality of subordinate codes eg, a first code and a second code
  • a number of coordinate codes corresponding to the number of candidates may be connected to a coordinate code obtained according to a user's specific coordinate selection.
  • the coordinate list is provided by randomly displaying coordinate codes corresponding to the representative code of each coordinate group in the voting code array, and each representative code includes a plurality of coordinates individually connected by reflecting candidate selection information. May contain code.
  • the dedicated program A is connected to the candidate selection information that is the candidate number of 1 to 5 in the representative code (for example, X code) corresponding to the coordinate selection information selected by the user. It includes a virtual voting code generation function that connects code, B code, C code, D code and E code.
  • the virtual voting code generation function calculates an A code in the voting code array by using the X code and 1 as input values, and obtains the voting code array from the ballot server.
  • a virtual voting code is generated by combining a plurality of detailed codes that can search the A code.
  • the user terminal 10 transmits the virtual voting to the voting server 20 through communication.
  • the voting server 20 may not know the voting result of the user.
  • the dedicated program may generate the final virtual voting code by combining the primary virtual voting code generated corresponding to the coordinate selection information and the candidate selection information (that is, the number of the selected candidate). That is, the dedicated program combines the primary virtual voting code generated by the combination of the plurality of detailed codes and the candidate selection information according to the same rules as the counting server (for example, the number corresponding to the candidate selection information is converted into the primary virtual voting code). Insert final code to generate final code.
  • the dedicated program transmits the final virtual voting code to the voting server 20, and the voting server 20 extracts the candidate selection information from the final virtual voting code through the same rules as the dedicated program.
  • the combination rule of the virtual voting code and the candidate selection information may be changed periodically.
  • the dedicated program built in or installed in the user terminal 10 may generate one detail code using the generated coordinate selection information as seed data. That is, the dedicated program calculates a virtual voting code that can search the code value determined by reflecting the candidate selection information in the code value or the coordinate selection information corresponding to the coordinate selection information by reflecting the viewpoint data at which the voting was performed. For example, the dedicated program may generate a plurality of detailed codes (for example, the first code and the second code) by using the OTP code generated based on the voting time point data.
  • the first code and the second code search for a storage location where the voting result (ie, coordinate selection information) is stored.
  • the first code sets the start point of the storage location search
  • the second code sets the search path from the start point to the storage location of the voting result according to a specific search method. That is, when the virtual voting code normally generated for each unit count is provided in the user terminal 10, the ballot counting server 30 moves from the search start point corresponding to the first code according to the search path corresponding to the second code. Is determined as the position (ie, code value) corresponding to the voting result.
  • a method of extracting a voting result for each virtual voting code of the ballot counting server will be described later in detail.
  • the dedicated program may be performed by requesting a user authentication procedure from the voting server 20. That is, the user may input user information, for example, a name, a social security number, a mobile phone number, and the like through the user terminal 10 to perform user authentication. It is necessary to remove the link between each user and his or her voting results, but it is necessary to prevent users from voting duplicated or people who do not have the right to vote. Therefore, the dedicated program can perform a self-authentication procedure by receiving a request from the voting server, whereby the voting server 20 can obtain the self-authentication result data of a specific user.
  • the voting server 20 can obtain the self-authentication result data of a specific user.
  • the dedicated program may store the generated virtual voting code. After the user performs the voting, the user may want to check whether the result of voting is normally input. Since the voting result input through the dedicated program (ie, the application) in the electronic voting is transmitted to the voting server through the communication network, you may want to check whether the input result is manipulated in the middle.
  • the dedicated program may receive a voting result by providing a virtual voting code to the ballot counting server 30. That is, after the voting ends, the user provides the virtual voting code stored in the user terminal 10 to the ballot counting server 30, and receives a ballot result extracted by the ballot counting server 30 so that his / her own ballot is counted. You can check whether it is reflected correctly.
  • the dedicated program may store only the virtual voting code, or may be stored together with the user information.
  • the dedicated program may capture an image of a user using a camera built in the user terminal 10 and store the image of the user together with the virtual voting code.
  • the voting server 20 When the voting server 20 receives a user authentication request from the user terminal 10, it performs a role of generating authentication data. That is, the authentication data may be generated using the user information input by the user through the user terminal 10. Detailed description of the authentication data generation method will be described later.
  • the voting server 20 serves to provide a coordinate list and a candidate list to the user terminal 10. For example, if it is determined that the user authentication procedure is completed and the user has not yet completed the voting, the voting server 20 provides the user list 10 with the coordinate list or the candidate list simultaneously or sequentially.
  • the coordinate list and the candidate list are generated based on the voting code array included in the voting server 20.
  • the voting code array is a plurality of coordinates are listed by a specific rule, each coordinate contains a plurality of candidate numbers (or code values corresponding to the candidate number) as the lower information.
  • the coordinate list is a list that is generated such that a plurality of coordinates listed by a specific rule in the voting code array are randomly arranged
  • the candidate list is a list of a plurality of candidate numbers included as sub-information in each coordinate.
  • the voting server 20 when the voting server 20 provides the coordinate list to the user terminal 10 and receives the coordinate selection information (specific coordinates selected by the user) from the user terminal 10, the voting server 20 includes a plurality of subordinate information included in the corresponding coordinates. A candidate list consisting of candidates will be provided.
  • the voting server 20 may transmit an alarm message to the user terminal 10. For example, in the popup form on the screen of the user terminal 10, "Already authenticated. Please vote.” Messages can be displayed. In another embodiment, when voting has already been completed, the voting server 20 pops up on the screen of the user terminal 10 in the form of a "vote has already completed.” Messages may be displayed.
  • the voting server 20 serves to receive a virtual voting code from the user terminal 10.
  • the virtual voting code is generated based on the coordinate selection information and the candidate selection information in the user terminal 10.
  • the voting server 20 cannot confirm the coordinate selection information and the candidate selection information selected by the user terminal 10. That is, the voting server 20 can not know the user's voting results.
  • the voting server 20 serves to distribute and store the generated authentication data and the received virtual voting code. A detailed description of the method of distributed storage of the virtual voting code will be described later.
  • the ballot counting server 30 receives the voting code array from the voting server 20 after the voting ends, and sets a specific voting result extraction algorithm for applying the voting code array. Detailed description of the voting result extraction algorithm setting method will be described later.
  • the ballot counting server 30 performs a role of extracting the virtual ballot code and authentication data distributed by the voting server 20. Detailed description of the virtual voting code and authentication data extraction method will be described later.
  • the ballot counting server 30 extracts a voting result from the virtual voting code using a voting result extraction algorithm. A detailed description of the method of extracting the voting result will be given later.
  • the ballot counting server 30 may receive a specific virtual voting code (for example, a virtual voting code stored in the user terminal 10 as the user votes) from the user terminal 10. have. Similarly, the ballot counting server 30 may extract the ballot result from the virtual ballot code provided by the user terminal 10 using a ballot result extraction algorithm. The ballot counting server 30 provides the extracted voting result to the user terminal 10.
  • a specific virtual voting code for example, a virtual voting code stored in the user terminal 10 as the user votes
  • the ballot counting server 30 serves to calculate the number of people participating in the voting using the authentication data. A detailed description of the method for calculating the voting staff will be given later.
  • FIG. 2 is a block diagram of a virtual voting code based voting server apparatus according to an embodiment of the present invention.
  • the voting server device 200 includes an authentication data generation unit 210, a list providing unit 220, a virtual voting code receiving unit 230, and a distributed storage unit 240.
  • the voting server device 200 means a computer device including the voting server 20.
  • the authentication data generator 210 receives a user authentication request from the user terminal 10 and generates a authentication data. That is, the authentication data generator 210 may receive user information, for example, a user's name, social security number, mobile phone number, etc. from the user terminal 10, and generate authentication data based on the user information.
  • user information for example, a user's name, social security number, mobile phone number, etc.
  • the voting server 20 may generate authentication data through KYC (Know Your Customer) authentication. That is, when the voting server 20 is requested for user authentication, the user terminal 10 requests the user information input necessary for KYC authentication. Thereafter, KYC authentication data may be generated based on the input user information.
  • KYC Know Your Customer
  • the list providing unit 220 generates a coordinate list and a candidate list based on the voting code array stored in the server device and provides the list to the user terminal 10.
  • each coordinate is an arbitrary number that is a natural number, and the same candidate number is included as sub-information in each coordinate.
  • the candidate number included as the lower information is changed according to the candidate running for the election.
  • a corresponding code is assigned to each coordinate in the voting code array, and a code may be assigned to each candidate included as sub-information for each coordinate.
  • the code assigned to the candidate may be different for each sub information included in each coordinate, or may vary according to the candidate number regardless of the coordinate. That is, the codes of candidates 1, 2, and 3 included in coordinates 63 shown in FIG. 8 and the codes of candidates 1, 2 and 3 included in coordinates 309 may be different (that is, six different codes), and coordinates 63
  • the candidate 1 code included in 309 may have the same code, the candidate 2 code may be the same, and the candidate 3 code may be the same (ie, three different codes).
  • a coordinate code corresponding to the number of candidates may be connected to a coordinate code obtained according to a user's specific coordinate selection.
  • the coordinate list is provided by randomly displaying coordinate codes corresponding to the representative code of each coordinate group in the voting code array, and each representative code includes a plurality of coordinates individually connected by reflecting candidate selection information. May contain code.
  • the dedicated program A is connected to the candidate selection information that is the candidate number of 1 to 5 in the representative code (for example, X code) corresponding to the coordinate selection information selected by the user. It includes a virtual voting code generation function that connects code, B code, C code, D code and E code.
  • the virtual voting code generation function calculates an A code in the voting code array by using the X code and 1 as input values, and obtains the voting code array from the ballot server.
  • a virtual voting code is generated by combining a plurality of detailed codes that can search the A code.
  • the list providing unit 220 may generate a coordinate list by arranging a plurality of coordinates arranged in the voting code array in a random position, as shown in FIG. In this case, although the codes given in the voting code array are connected to each coordinate arranged in the coordinate list, the user can check only the coordinate information in the coordinate list through the user terminal 10.
  • the list providing unit 220 may generate candidate lists in which a plurality of candidates are arranged in order, for example, in order of candidate number. At this time, although the codes given in the voting code array are connected to each candidate listed in the candidate list, the user can check only candidate information in the candidate list through the user terminal 10.
  • the voting server 20 further includes a condition providing unit (not shown) to modify or adjust the virtual voting code generation function stored in a dedicated program built in or installed in the user terminal 10.
  • a condition providing unit (not shown) to modify or adjust the virtual voting code generation function stored in a dedicated program built in or installed in the user terminal 10.
  • Can provide conditions that can be That is, since the voting code array included in the voting server 20 differs according to the voting information such as the type, type, and duration of each voting, the condition providing unit provides different conditions according to the voting code arrangement to the dedicated program.
  • the dedicated program may modify or adjust the virtual voting code generating function according to the condition, and generate the virtual voting code using the modified or adjusted virtual voting code generating function.
  • the virtual voting code receiver 230 receives a virtual voting code generated based on the coordinate selection information and the candidate selection information in the user terminal 10.
  • the coordinate selection information is one coordinate information selected by the user from among a plurality of coordinates arranged in the coordinate list through the user terminal 10, and the candidate selection information is a plurality of pieces included in the candidate list by the user through the user terminal 10.
  • a dedicated program embedded in or installed in the user terminal 10 may generate a virtual voting code using codes connected to coordinate selection information and candidate selection information selected by the user using the virtual voting code generation function. have. That is, the dedicated program generates one detail code based on the code corresponding to the coordinate selection information using one detail code generation function, and uses the other detail code generation function to generate a code corresponding to the candidate selection information. You can change the value of the generated detail code accordingly.
  • the detail code may be generated by applying a code corresponding to the candidate selection information to the detail code generated based on the code corresponding to the coordinate selection information using one detail code generation function.
  • the virtual voting code generation function generates a virtual voting code composed of a plurality of detailed codes for searching the coordinate selection information (ie, specific coordinates) selected by the user in the ballot counting algorithm. For example, when candidate information selected by each user matches each virtual voting code, the dedicated program generates a virtual voting code capable of searching for coordinates (ie, coordinate selection information) selected by the user in the ballot counting server.
  • the virtual voting code generation function generates the virtual voting code by reflecting the candidate information selected by the user (ie, candidate selection information). That is, the virtual voting code generation function in the dedicated program may contain candidate selection information selected by the user in the virtual voting code itself.
  • the virtual voting code generation function selects a code group based on specific coordinate selection information and selects a specific code value in the coordinate code group based on the candidate selection information.
  • the dedicated program sets the corresponding code value to a value including the coordinate selection information and the candidate selection information of the user, and generates a plurality of detailed codes based on the code value. That is, the dedicated program is included in the voting server, and after generating a plurality of detailed codes (for example, the first code and the second code) that can search for the corresponding code value in the voting code array to be used for voting on the voting server. Combine to generate a virtual voting code.
  • a dedicated program embedded in or installed in the user terminal 10 may use a voter's voting time when generating the virtual voting code using the virtual voting code generation function.
  • the distributed storage unit 240 serves to distribute and store the authentication data generated by the authentication data generator 210 and the virtual ballot code received by the virtual ballot code receiver 230.
  • the distributed storage unit 240 may store and store the corresponding authentication data in the server each time the authentication data is generated, and stores the corresponding virtual voting code in the server whenever the virtual voting code is received.
  • the distributed storage unit 240 may separate the authentication data storage space and the virtual voting code storage space. Accordingly, the distributed storage unit 240 may store and store the authentication data by randomizing the storage location in the authentication data storage space each time authentication data is generated in the authentication data generator 210.
  • the distributed storage unit 240 may store and store the virtual voting code by randomizing the storage location in the virtual voting code storage space whenever the virtual voting code receiving unit 230 receives the virtual voting code.
  • the virtual voting code generated based on the authentication data for the specific user and the voting results of the specific user are stored in different storage spaces at different intervals by the distributed storage unit 240, the authentication data for the specific user. And the virtual voting code is eliminated. As a result, it is not possible to know which candidate the specific user (voter) voted.
  • the distributed storage unit 240 distributes the authentication data generated by the authentication data generator 210 and the virtual ballot code received by the virtual ballot code receiver 230 to a plurality of external servers based on a blockchain. You can also save.
  • the authentication data block chain and the virtual voting code block chain are separately formed, and when the authentication data is generated in the authentication data generator 210, the distributed storage unit 240 stores the authentication data in the authentication data block chain and stores the virtual data.
  • the distributed storage unit 240 may store the virtual voting code in a virtual voting code blockchain.
  • the authentication data and the virtual voting code are distributed and stored in a plurality of external servers, thereby preventing forgery or tampering with the user's own authentication data and the virtual voting code data.
  • the plurality of external servers refers to a number of computers on a specific network connected to the Internet.
  • FIG. 3 is a block diagram of a virtual ballot server based ballot server apparatus according to an exemplary embodiment of the present invention.
  • the counting server device 300 means a computer device including the counting server 20.
  • the voting result extraction algorithm setting unit 310 sets a voting result extraction algorithm for applying the voting code array provided from an external device.
  • the voting result extraction algorithm setting unit 310 is provided with the voting code array from the voting server device 200 after the voting is finished, or the voting code arrangement from the removable disk, for example, USB, etc. Can be provided.
  • the voting code array may be provided to the voting result extraction algorithm setting unit 310 by connecting the portable disk including the voting code array to the ballot counting device 300. have.
  • the voting result extraction algorithm setting unit 310 sets a voting result extraction algorithm to match the provided voting code array. That is, since the voting code array is set to different conditions according to the voting area, the number of voting members, the purpose of voting, etc., according to this, the voting result extraction algorithm setting unit 310 matches the voting result arrangement algorithm to match the conditions of the voting code array provided. Will be set.
  • the virtual voting code extracting unit 320 serves to extract the distributed virtual voting code. That is, the virtual voting code extracting unit 320 stores a plurality of virtual voting codes (ie, virtual voting codes of voters who have completed voting) distributed in a plurality of external servers based on a virtual voting code storage space or a blockchain in the server. Extract.
  • virtual voting codes ie, virtual voting codes of voters who have completed voting
  • the voting result extracting unit 340 includes a detailed code combining function included in the virtual voting code generation function. Therefore, when the virtual voting code includes a plurality of detailed codes, the voting result extracting unit 340 may extract the plurality of detailed codes from the virtual voting code by applying the detailed code combining function. For example, when the user terminal 10 generates a virtual voting code in which two detailed codes (that is, a first code and a second code) are combined, the voting result extractor 340 may arrange a character array of the virtual voting code. The first code and the second code can be separated by applying the detail code combining function.
  • the voting result extractor 340 determines a search start point corresponding to the first code, and searches The moving point from the starting point according to the search path corresponding to the second code can be found as the storage location of the voting result.
  • the detailed code may include a first code for setting the start point of the storage location search and a second code for setting the search path from the start point to the voting result storage location according to a specific search method.
  • the voting result extraction algorithm is a k-angle (k is M N ) in which a cloud moves along a track in which M N codes corresponding to the first code are listed, and the vertex of the k-angle is first In the case where the code moves on the code track corresponding to the point where the code is placed, each vertex of the k-square is matched with the voting result storage location, and the point where the first code track (ie, the first track) and the k-square correspond to each other is selected. It may be a storage location search start point corresponding to one code.
  • the virtual voting code is voting for a specific period
  • the ballot counting device 300 ie, the voting result extracting unit 340
  • the voting result extracting unit 340 corresponds to the first code.
  • a point on the track at which the voting is performed by setting the count on the track matched with the code value as the search start point, and returning along the track from the search start point by the count value corresponding to the second code (that is, storing the voting result). Location).
  • the voting server 20 provides the user terminal 10 with the coordinate list and the candidate list generated based on the voting code array.
  • the coordinate list and the candidate list are generated based on the voting code array included in the voting server 20. That is, the voting server 20 may generate a coordinate list and a candidate list based on a plurality of coordinates listed in a voting code array and a plurality of candidate numbers included in subordinate information in each coordinate. That is, the coordinate list is a list in which a plurality of coordinates are arranged at random, and the candidate list is a list containing a plurality of candidate numbers running for election.
  • the dedicated program may generate detailed codes by using the coordinate selection information and the voting time point as seed data of each detail code generation function.
  • the detailed code generated using the coordinate selection information is generated differently according to the candidate selection information which is lower information.
  • the voting server 20 receives the virtual voting code generated by the user terminal 10. As such, since the voting server 20 is provided with the virtual voting code itself including the candidate information selected by the user, the voting server 20 cannot know the voting result of the user.
  • the user terminal 10 may store a virtual voting code generated using a dedicated program.
  • the dedicated program can store only the virtual voting code, or it can be stored with user information.
  • the dedicated program may capture an image of a user using a camera built in the user terminal 10 and store the image of the user together with the virtual voting code.
  • the stored virtual voting code may be used for checking the result of the vote of the user by providing the ballot to the ballot server 30.
  • the ballot counting server 30 sets the voting result extraction algorithm so that the voting result extraction algorithm included in the server matches the provided voting code array. That is, the voting code arrangement has a different code arrangement according to the voting area, the number of voters, and the purpose of voting. If the ballot counting server 30 proceeds to counting by using a ballot result extraction algorithm that does not match the ballot code arrangement, an error occurs in the ballot result. Therefore, the ballot counting server 30 should accurately set the voting result extraction algorithm to match the provided voting code array, and extract the voting result using this.
  • step S600 the ballot counting server 30 extracts the virtual ballot code distributed and stored. That is, the voting server 20 extracts the virtual voting codes distributed and stored in a plurality of external voting codes or virtual voting code storage spaces within the server.
  • step S700 the ballot counting server 30 extracts distributed and stored authentication data. That is, the voting server 20 extracts authentication data distributed and stored in a plurality of external servers or authentication data storage spaces within the server.
  • the voter counting unit 350 may calculate the ratio of the number of voters to the total number of voters through the calculated votes, thereby confirming the vote rate of the vote. For example, if the total number of voters is 100 and the number of voters who completed the vote (ie, the number of extracted authentication data) is 90, the turnout can be calculated at 90 percent.
  • the stored medium refers to a medium that stores data semi-permanently and can be read by a device, not a medium that stores data for a short time such as a register, a cache, a memory, and the like.
  • examples of the storage medium include, but are not limited to, a ROM, a RAM, a CD-ROM, a magnetic tape, a floppy disk, an optical data storage device, and the like.
  • the program may be stored in various recording media on various servers to which the computer can access or various recording media on the computer of the user.
  • the medium may also be distributed over network coupled computer systems so that the computer readable code is stored in a distributed fashion.

Landscapes

  • Business, Economics & Management (AREA)
  • Engineering & Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Computer Security & Cryptography (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

가상투표코드 기반의 투표 및 개표 방법 및 시스템이 제공된다. 상기 가상투표코드 기반의 투표 및 개표 방법은 서버가 사용자 단말로부터 사용자 인증을 요청받아 인증 데이터를 생성하는, 인증 데이터 생성단계; 상기 서버가 투표코드배열을 기반으로 생성된 좌표 리스트를 상기 사용자 단말로 제공하는, 리스트 제공단계; 상기 서버가 상기 사용자 단말에서 생성된 가상투표코드를 제공받는, 가상투표코드 수신단계; 및 상기 서버가 각 사용자의 상기 인증 데이터 및 상기 가상투표코드를 분산 저장하는, 분산 저장단계;를 포함한다.

Description

가상투표코드 기반의 투표 및 개표 방법 및 시스템
본 발명은 가상투표코드 기반의 투표 및 개표 방법 및 시스템에 관한 것이다.
투표란 집단의 구성원들의 의사를 묻는 방식 중 하나로서, 선거를 하거나 가부를 결정할 때에 투표용지에 의사를 표시하여 일정한 곳, 예를 들어 투표함에 내는 것을 말한다. 투표를 전자적인 방식에 의해 실시할 수도 있는데, 이를 전자투표라고 한다. 예를 들어, 대통령 선거를 전자 투표 방식으로 진행할 경우, 유권자들은 투표소에 설치된 투표 단말, 또는 개인 단말, 예를 들어, 개인용 컴퓨터, 또는 스마트폰 등의 이동 단말 등을 이용하여 대통령 후보로 등록한 후보자들 중 한 명을 선택하여 투표를 실시할 수도 있다.
이러한 전자 투표의 경우 투표를 위한 별도의 투표용지를 사용하지 않고 투표자가 자신의 이동 단말을 이용하여 투표를 실시하게 되므로, 기존의 아날로그 투표 방식에 비해 선거 비용을 절감할 수 있으며, 개표가 매우 빠르게 이루어진다는 장점이 있다.
그러나 전자 투표는 악의적인 집단에 의한 해킹으로 인해 투표 결과가 위조되거나 변조되는 등 부정 투표의 위험성이 높아 보안적인 측면이 취약하다는 문제가 있다.
또한, 전자 투표 방식은 관리자가 본인의 투표결과를 확인할 수 있을 것이라는 의심에 의해 투표자들의 신뢰를 받지 못하고 있으며, 현재 기존의 전자 투표 방식들은 각 투표자의 투표결과가 유출될 가능성이 존재한다.
본 발명이 해결하고자 하는 과제는 각 투표자의 투표결과를 별도의 개표시스템이 없이 확인이 불가능한 가상코드로 생성하여 투표결과 조작을 방지하는, 가상투표코드 기반의 투표 및 개표 방법 및 시스템을 제공하는 것이다.
또한, 본 발명은 각 투표자의 투표결과에 따른 가상코드와 투표자의 본인인증데이터의 연결관계를 제거하여 투표결과에 대한 익명화를 달성하는, 가상투표코드 기반의 투표 및 개표 방법 및 시스템을 제공한다.
또한, 본 발명은 투표시스템과 개표시스템의 분리를 통해 투표 종료 후 투표시스템으로부터 투표코드배열이 제공되어야 가상투표코드에서 투표결과를 추출할 수 있어서, 투표결과 조작을 방지하여 투표 결과의 무결성을 보장하는, 가상투표코드 기반의 투표 및 개표 방법 및 시스템을 제공한다.
또한, 본 발명은 투표자가 투표 완료 후에 타인에게는 익명화되었지만 본인은 투표결과가 제대로 반영되었는지 확인 가능하여 투표에 대한 신뢰성을 높이는, 가상투표코드 기반의 투표 및 개표 방법 및 시스템을 제공한다.
본 발명이 해결하고자 하는 과제들은 이상에서 언급된 과제로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상술한 과제를 해결하기 위한 본 발명의 일 면에 따른 가상투표코드 기반의 투표 및 개표 방법은 서버가 사용자 단말로부터 사용자 인증을 요청받아 인증 데이터를 생성하는, 인증 데이터 생성단계; 상기 서버가 투표코드배열을 기반으로 생성된 좌표 리스트를 상기 사용자 단말로 제공하는, 리스트 제공단계; 상기 서버가 상기 사용자 단말에서 생성된 가상투표코드를 제공받는, 가상투표코드 수신단계; 및 상기 서버가 각 사용자의 상기 인증 데이터 및 상기 가상투표코드를 분산 저장하는, 분산 저장단계;를 포함하되, 상기 좌표 리스트는 복수의 좌표가 랜덤하게 배치되어 있는 것이고, 상기 가상투표코드는 사용자 단말에서 상기 좌표 리스트 중에서 선택된 하나의 좌표를 나타내는 좌표 선택 정보를 기반으로 생성되는 것이고, 상기 투표코드배열은 상기 복수의 좌표가 특정한 규칙에 따라 나열된 것으로서, 개표시스템에서 투표결과 산출에 이용된다.
또한, 상기 리스트 제공단계는, 상기 서버가 상기 사용자 단말로 복수의 후보를 포함하는 후보 리스트를 제공하는 단계를 포함한다.
또한, 상기 가상투표코드는 후보 선택 정보를 기반으로 생성되고, 상기 후보 선택 정보는 상기 사용자 단말에서 상기 후보 리스트 중에서 선택된 하나의 후보를 나타내는 것이다.
또한, 상기 후보 선택 정보는 상기 투표코드배열 내에서 상기 좌표 선택 정보의 하위 정보로 포함되는 것이다.
또한, 상기 좌표 선택 정보 및 상기 후보 선택 정보는 각각 상기 투표코드배열 내에 대응되는 코드가 부여된다.
또한, 상기 가상투표코드는 복수의 세부코드를 조합하여 생성되는 것이며, 상기 복수의 세부코드는 상기 투표코드배열 내에서 상기 좌표 선택 정보에 대응하는 코드를 기반으로 생성된 세부코드를 포함하되, 상기 좌표 선택 정보에 대응하는 코드를 기반으로 생성된 세부코드는 상기 좌표 선택 정보에 하위 정보로 포함된 상기 후보 선택 정보에 대응하는 코드에 따라 상이하게 생성되는 것을 특징으로 한다.
또한, 상기 가상투표코드는 상기 사용자에 의해 선택된 좌표 선택 정보를 탐색할 수 있도록 투표시점에 생성된 코드이다.
또한, 상기 분산저장 단계는, 상기 서버가 상기 인증 데이터 및 상기 가상투표코드를 블록체인(block chain) 기반으로 분산저장할 수 있다.
상술한 과제를 해결하기 위한 본 발명의 다른 일 면에 따른 가상투표코드 기반의 투표 및 개표 방법은 서버가 외부기기로부터 제공된 투표코드배열을 적용하기 위한 투표결과추출알고리즘을 설정하는, 투표결과추출알고리즘 설정단계; 상기 서버가 복수의 외부 서버에 분산 저장된 가상투표코드를 추출하는, 가상투표코드 추출단계; 상기 서버가 복수의 외부 서버에 분산 저장된 인증데이터를 추출하는, 인증데이터 추출단계; 상기 서버가 상기 투표결과추출알고리즘을 이용하여 상기 가상투표코드에서 복수의 세부코드를 추출하여 투표결과를 확인하는, 투표결과 확인단계; 및 상기 서버가 상기 인증데이터를 이용하여 투표인원을 산출하는, 투표인원 산출단계;를 포함하되, 상기 가상투표코드는 좌표 선택 정보를 기반으로 생성되며, 상기 좌표 선택 정보는 상기 투표코드배열 내에 특정한 규칙에 따라 나열된 복수의 좌표 중 선택된 하나의 좌표이다.
또한, 상기 가상투표코드는 후보 선택 정보를 기반으로 생성되며, 상기 후보 선택 정보는 상기 투표코드배열 내에서 상기 좌표 선택 정보의 하위 정보로 포함되는 것이다.
또한, 상기 좌표 선택 정보 및 상기 후보 선택 정보는 각각 상기 투표코드배열 내에 대응되는 코드가 부여되고, 상기 복수의 세부코드는 상기 투표코드배열 내에서 상기 좌표 선택 정보에 대응하는 코드를 기반으로 생성된 세부코드를 포함하되, 상기 좌표 선택 정보에 대응하는 코드를 기반으로 생성된 세부코드는 상기 좌표 선택 정보에 하위 정보로 포함된 상기 후보 선택 정보에 대응하는 코드에 따라 상이하게 생성되는 것을 특징으로 한다.
또한, 상기 서버가 상기 사용자 단말로부터 가상투표코드를 제공받는 단계; 상기 서버가 상기 투표결과추출알고리즘을 이용하여 상기 사용자 단말로부터 제공된 가상투표코드에서 복수의 세부코드를 추출하는 단계; 및 상기 서버가 상기 추출된 세부코드에 대응하는 좌표 선택 정보 및 후보 선택 정보를 상기 사용자 단말로 제공하는 단계;를 포함한다.
상술한 과제를 해결하기 위한 본 발명의 다른 일 면에 따른 가상투표코드 기반의 투표 및 개표 프로그램은, 하드웨어인 컴퓨터와 결합되어 상기 가상투표코드 기반의 투표 및 개표 방법을 실행하며, 매체에 저장된다.
상술한 과제를 해결하기 위한 본 발명의 다른 일 면에 따른 가상투표코드 생성 방법은 투표서버로 사용자 인증을 요청하는 단계; 사용자 인증이 완료되면, 상기 투표서버로부터 투표코드배열을 기반으로 생성된 좌표 리스트 및 후보 리스트를 제공받되, 상기 좌표 리스트는 복수의 좌표가 랜덤하게 배치되어 있는 것이고, 상기 후보 리스트는 복수의 후보를 포함하고 있는 것인, 리스트 획득 단계; 상기 좌표 리스트 중에서 하나를 선택하여 생성된 좌표 선택 정보 및 상기 후보 리스트 중에서 하나를 선택하여 생성된 후보 선택 정보를 이용하여 가상투표코드를 생성하는 단계; 및 생성된 가상투표코드를 상기 투표서버로 제공하는 단계;를 포함하되, 상기 가상투표코드는 상기 좌표 선택 정보를 탐색할 수 있도록 투표시점에 생성된 코드이며, 상기 투표코드배열은 상기 복수의 좌표가 특정한 규칙에 따라 나열된 것이고, 상기 좌표 선택 정보는 상기 투표코드배열 내에서 상기 후보 선택 정보를 하위 정보로 포함하고 있고, 상기 좌표 선택 정보 및 상기 후보 선택 정보는 각각 상기 투표코드배열 내에 대응되는 코드가 부여되고, 상기 가상투표코드는 상기 투표코드배열 내에서 상기 좌표 선택 정보에 대응하는 코드를 기반으로 생성된 세부코드를 포함하되, 상기 좌표 선택 정보에 대응하는 코드를 기반으로 생성된 세부코드는 상기 좌표 선택 정보에 하위 정보로 포함된 상기 후보 선택 정보에 대응하는 코드에 따라 상이하게 생성되는 것을 특징으로 한다.
상술한 과제를 해결하기 위한 본 발명의 다른 일 면에 따른 가상투표코드 생성 프로그램은, 하드웨어인 컴퓨터와 결합되어 상기 가상투표코드 생성 방법을 실행하며, 매체에 저장된다.
상술한 과제를 해결하기 위한 본 발명의 다른 일 면에 따른 가상투표코드 기반의 투표 서버장치는 사용자 단말로부터 사용자 인증을 요청받아 인증데이터를 생성하는 인증데이터 생성부; 기 저장되어 있는 투표코드배열을 기반으로 좌표 리스트 및 후보 리스트를 생성하여 상기 사용자 단말로 제공하되, 상기 좌표 리스트는 복수의 좌표가 랜덤하게 배치되어 있는 것이고, 상기 후보 리스트는 복수의 후보를 포함하는 것인, 리스트 제공부; 상기 사용자 단말에서 좌표 선택 정보와 후보 선택 정보를 기반으로 생성된 가상투표코드를 수신하는, 가상투표코드 수신부; 및 생성된 상기 인증데이터 및 수신된 상기 가상투표코드를 복수의 외부 서버로 분산 저장하는 분산저장부;를 포함하되, 상기 좌표 선택 정보는 상기 사용자 단말에서 상기 좌표 리스트 중에서 선택된 하나의 좌표를 나타내고, 상기 후보 선택 정보는 상기 사용자 단말에서 상기 후보 리스트 중에서 선택된 하나의 후보를 나타내는 것이며, 상기 좌표 선택 정보는 상기 투표코드배열 내에서 상기 후보 선택 정보를 하위 정보로 포함하고 있고, 상기 좌표 선택 정보 및 상기 후보 선택 정보는 각각 상기 투표코드배열 내에 대응되는 코드가 부여되는 것을 특징으로 한다.
상술한 과제를 해결하기 위한 본 발명의 다른 일 면에 따른 가상투표코드 기반의 개표 서버장치는 외부기기로부터 제공된 투표코드배열을 적용하기 위한 투표결과추출알고리즘을 설정하는 투표결과추출알고리즘 설정부; 분산 저장된 가상투표코드를 추출하는 가상투표코드 추출부; 분산 저장된 사용자의 인증데이터를 추출하는 인증데이터 추출부; 상기 투표결과추출알고리즘을 이용하여 상기 가상투표코드에서 복수의 세부코드를 추출하여 투표결과를 확인하는 투표결과 추출부; 및 상기 추출된 인증데이터를 이용하여 투표 인원을 산출하는 투표인원 산출부;를 포함하되, 상기 가상투표코드는 상기 좌표 선택 정보를 기반으로 생성되는 것이고, 상기 좌표 선택 정보는 상기 투표코드배열 내에서 상기 후보 선택 정보를 하위 정보로 포함하고 있고, 상기 좌표 선택 정보 및 상기 후보 선택 정보는 각각 상기 투표코드배열 내에 대응되는 코드가 부여되고, 상기 복수의 세부코드는 상기 투표코드배열 내에서 상기 좌표 선택 정보에 대응하는 코드를 기반으로 생성된 세부코드를 포함하되, 상기 좌표 선택 정보에 대응하는 코드를 기반으로 생성된 세부코드는 상기 좌표 선택 정보에 하위 정보로 포함된 상기 후보 선택 정보에 대응하는 코드에 따라 상이하게 생성되는 것을 특징으로 한다.
본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
상기와 같은 본 발명에 따르면, 아래와 같은 다양한 효과들을 가진다.
첫째, 투표자가 자신의 단말기를 이용해 본인 인증 후 투표를 실시하면, 투표시스템에서 인증데이터와 가상투표코드를 분산 저장하여 인증데이터와 가상투표코드 간의 연결관계를 끊음으로써, 특정 투표자가 어떤 후보에게 투표했는지를 추적할 수 없게 된다.
둘째, 가상투표코드를 생성하는데 사용되는 투표코드배열은 투표가 진행되는 동안 투표시스템에 포함되어 있고, 투표가 완료된 후에 개표시스템에 제공되기 때문에, 투표 중간에 개표시스템에서 가상투표코드를 추출하는 것이 불가능하게 되어 투표 결과의 조작 위험을 배제할 수 있다.
셋째, 투표자가 자신의 단말기에 저장되어 있는 가상투표코드를 개표시스템으로 제공하면, 개표시스템은 가상투표코드에서 좌표 및 후보 선택 정보를 추출하고, 이를 투표자의 단말기에 제공함으로써, 투표자는 자신의 투표결과가 정확하게 반영되었는지를 확인할 수 있다.
넷째, 인증 데이터와 가상투표코드의 연결관계가 끊어져 있으므로, 개표시스템은 각각의 투표자와 각각의 투표결과를 연결지을 수 없지만, 투표자 본인은 개표시스템으로부터 제공된 투표결과만으로 자신과 투표결과를 확인할 수 있으므로, 보다 확실한 비밀투표가 가능하다.
본 발명의 효과들은 이상에서 언급된 효과로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 가상투표코드 기반의 투표 및 개표 시스템의 구성도이다.
도 2는 본 발명의 일 실시예에 따른 가상투표코드 기반의 투표 서버장치의 구성도이다.
도 3은 본 발명의 일 실시예에 따른 가상투표코드 기반의 개표 서버장치의 구성도이다.
도 4는 본 발명의 일 실시예에 따른 가상투표코드 생성의 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 가상투표코드 기반의 투표 방법의 순서도이다.
도 6은 본 발명의 일 실시예에 따른 가상투표코드 기반의 개표 방법의 순서도이다.
도 7은 본 발명의 일 실시예에 따른 좌표 리스트 및 후보 리스트의 예시도이다.
도 8은 본 발명의 일 실시예에 따른 복수의 좌표가 특정한 규칙에 따라 나열된 투표코드배열에 대한 예시도이다.
도 9는 본 발명의 일 실시예에 따른 k각형의 구름이동을 통해 좌표 선택 정보를 탐색하는 투표결과추출알고리즘에 대한 예시도이다.
도 10은 본 발명의 일 실시예에 따른 트랙상을 이동하여 좌표 선택 정보를 탐색하는 투표결과추출알고리즘에 대한 예시도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나, 본 발명은 이하에서 개시되는 실시예들에 제한되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술 분야의 통상의 기술자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다. 명세서 전체에 걸쳐 동일한 도면 부호는 동일한 구성 요소를 지칭하며, "및/또는"은 언급된 구성요소들의 각각 및 하나 이상의 모든 조합을 포함한다. 비록 "제1", "제2" 등이 다양한 구성요소들을 서술하기 위해서 사용되나, 이들 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 구성요소는 본 발명의 기술적 사상 내에서 제2 구성요소일 수도 있음은 물론이다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야의 통상의 기술자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
본 명세서에서 '사용자'는 투표를 실시하는 투표자를 의미한다.
본 명세서에서 '좌표'는 전자투표 시에 사용자의 선택 또는 투표결과(예를 들어, 선택한 후보 번호)를 기반으로 부여되는 코드를 의미한다. 즉, '좌표'는, 실물 투표시에 투표용지를 부여받아 투표를 진행하는 것과 마찬가지로, 전자 투표시에 투표자가 복수의 문자열(예를 들어, 숫자 또는 알파벳의 조합으로 된 코드열) 중에서 사용자에 의한 임의의 문자열 선택 또는 후보 선택에 의해 사용자에게 배정되는 것이다.
본 명세서에서 '투표코드배열'은 복수의 좌표가 특정한 규칙으로 나열된 것이다.
본 명세서에서 '좌표 리스트'는 투표코드배열에 나열된 복수의 좌표가 랜덤하게 배치된 리스트를 의미한다.
본 명세서에서 '좌표 선택 정보'는 사용자(즉, 투표자)에게 부여(예를 들어, 사용자에 의해 선택)된 투표코드배열 내의 특정한 좌표 값이다.
본 명세서에서 '후보 선택 정보'는 사용자(즉, 투표자)에 의해 선택된 후보자의 정보(예를 들어, 번호)의 값이다.
본 명세서에서 '문자'는 코드를 구성하는 구성요소로서, 대문자 알파벳, 소문자 알파벳, 숫자 및 특수문자 등의 전부 또는 일부를 포함한다.
본 명세서에서 '코드'는 문자가 나열된 문자열을 의미한다.
본 명세서에서 '가상투표코드'는 투표자의 투표결과를 기반으로 생성되는 것으로서, 개표 시에 투표결과를 산출하는 데 이용된다.
본 명세서에서 '세부코드'는 가상투표코드에 포함되는 일부 코드를 의미한다.
본 명세서에서 '단위카운트'는 특정한 시간간격으로 설정되어, 상기 시간간격이 경과됨에 따라 변경되는 것으로 정의된 단위이다. 예를 들어, 1카운트는 특정한 시간간격(예를 들어, 1.5초)으로 설정되어 사용될 수 있다.
본 명세서에서 '가상투표코드생성함수'는 가상투표코드를 생성하는데 이용되는 함수를 의미한다.
본 명세서에서 '구름이동'은 대상체가 회전하면서 병진운동을 하는 것을 의미한다. 즉, '구름이동'은 회전운동과 병진운동을 함께 수행하면서 이동하는 것으로서, 회전하는 대상체의 각 지점이 이동하는 축 상에 차례대로 접하면서 이동하는 것을 의미한다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세하게 설명한다.
도 1은 본 발명의 일 실시예에 따른 가상투표코드 기반의 투표 및 개표 시스템의 구성도이다.
도 1에 도시된 바와 같이, 가상투표코드 기반의 투표 및 개표 시스템은 사용자 단말(10), 투표서버(20) 및 개표서버(30)로 구성된다.
사용자 단말(10)은 투표를 실시하는 투표자의 이동 단말기이다. 사용자 단말(10)은 가상투표코드를 이용하여 투표를 실시하기 위한 전용프로그램 또는 전용어플리케이션(이하, 전용프로그램)이 내장 또는 설치되어 있을 수 있다.
일 실시예로, 사용자 단말(10)에 내장 또는 설치되어 있는 전용프로그램은 투표서버(20)와 통신을 수행하여 좌표 리스트를 제공받는다. 여기서, 좌표 리스트는 복수의 좌표가 랜덤하게 배치되어 있는 리스트이다.
이후, 전용프로그램은 사용자에 의해 선택된 좌표 선택 정보를 생성하는 역할을 수행한다. 즉, 사용자가 사용자 단말(10)을 통해 좌표 리스트에 배치되어 있는 복수의 좌표 중 하나의 좌표를 선택하면, 선택된 좌표를 이용하여 좌표 선택 정보를 생성하게 된다.
일 실시예로, 사용자에 의해 좌표가 선택되면, 전용프로그램은 투표서버(20)와 통신을 수행하여 후보 리스트를 제공받는다. 여기서, 후보 리스트는 복수의 후보를 포함한 리스트로서, 선거에 출마한 후보들의 정보, 예를 들어 후보 번호, 이름, 소속 등을 나타낼 수 있다.
이후, 전용프로그램은 사용자에 의해 선택된 후보 선택 정보를 생성하는 역할을 수행한다. 즉, 사용자가 사용자 단말(10)을 통해 후보 리스트에 포함되어 있는 복수의 후보 중 하나의 후보를 선택하면, 선택된 후보를 이용하여 후보 선택 정보를 생성하게 된다.
또한, 전용프로그램은 프로그램 내에 포함되어 있는 가상투표코드생성함수를 이용하여 가상투표코드를 생성하는 역할을 수행한다. 일실시예로, 가상투표코드생성함수는 특정한 사용자에게 부여된 좌표 선택 정보를 기반으로 가상투표코드를 생성한다.
일 실시예로, 가상투표코드생성함수는 하나 이상의 세부코드생성함수를 포함한다. 예를 들어, 가상투표코드가 복수의 세부코드를 포함하는 경우, 가상투표코드생성함수는 복수의 세부코드생성함수를 이용하여 복수의 세부코드를 생성하고, 이를 결합하여 최종적인 가상투표코드를 생성한다.
또한, 다른 일실시예로, 가상투표코드생성함수는 세부코드결합함수를 더 포함한다. 세부코드결합함수는 복수의 세부코드를 조합하는 규칙이다. 가상투표코드가 복수의 세부코드를 포함하는 경우, 세부코드결합함수는 복수의 세부코드를 특정한 규칙에 따라 결합하여 가상투표코드를 생성한다.
일 실시예로, 가상투표코드생성함수는 사용자에 의해 선택된 좌표 선택 정보(즉, 특정한 좌표)를 개표알고리즘에서 탐색할 수 있는 복수의 세부코드로 구성된 가상투표코드를 생성한다. 예를 들어, 각 사용자가 선택한 후보정보가 각 가상투표코드에 매칭되는 경우, 전용프로그램은 개표서버에서 사용자에 의해 선택된 좌표(즉, 좌표 선택 정보)를 탐색할 수 있는 가상투표코드를 생성한다.
또한, 다른 일실시예로, 가상투표코드생성함수는 사용자에 의해 선택된 후보정보(즉, 후보선택정보)를 반영하여 가상투표코드를 생성한다. 즉, 전용프로그램 내 가상투표코드생성함수는 가상투표코드 자체에 사용자가 선택한 후보선택정보를 담을 수 있다.
예를 들어, 가상투표코드생성함수는 특정한 좌표 선택 정보를 기반으로 코드 그룹을 선택하고, 후보선택정보를 기반으로 좌표코드 그룹 내의 특정한 코드값을 선택한다. 전용프로그램은 해당 코드값을 사용자의 좌표선택정보와 후보선택정보를 포함하는 값으로 설정하고, 이를 바탕으로 복수의 세부코드를 생성한다. 즉, 전용프로그램은 투표서버 내에 포함되고 개표서버에서 개표를 위해 사용될 투표코드배열 내에서 해당 코드값을 탐색할 수 있는 복수의 세부코드(예를 들어, 제1코드 및 제2코드)를 생성 후 결합하여 가상투표코드를 생성한다.
구체적인 예로, 투표코드배열은 사용자에 의해 선택되는 특정한 좌표코드(즉, 특정 그룹을 대표하면서 사용자에게 선택 가능하도록 제공되는 좌표코드)와 선택된 좌표코드에 대응하는 그룹 내에 후보자 인원수만큼의 좌표코드를 포함한다. 즉, 전용프로그램은 사용자에 의해 특정한 좌표코드를 선택받음에 따라 그룹을 선택하고, 사용자로부터 후보를 선택받음에 따라 그룹 내의 특정한 세부 좌표코드를 추출한다. 예를 들어, 특정 그룹은 후보자수의 좌표코드와 그룹을 대표하는 좌표코드를 포함한다. 구체적으로, 각 그룹은 해당 그룹을 대표하면서 사용자에 의해 선택되는 좌표코드와 이에 연속되게 이어지는 후보자 수만큼의 복수의 좌표코드를 포함한다. 사용자의 후보자 선택에 따라 그룹 내의 특정한 세부좌표코드가 결정되면, 전용프로그램은 해당 세부좌표코드를 탐색할 수 있는 복수의 세부코드(예를 들어, 제1코드 및 제2코드)를 산출한 후 결합하여 가상투표코드를 생성한다.
또한, 구체적인 예로, 투표코드배열은 사용자의 특정한 좌표선택에 따라 획득되는 좌표코드에 후보자 수에 대응하는 개수의 좌표코드가 연결될 수 있다. 예를 들어, 좌표리스트는 투표코드배열 내에서 각 좌표그룹의 대표코드에 해당하는 좌표코드들을 랜덤하게 표시하여 제공되는 것이고, 각각의 대표코드에는 후보선택정보를 반영하여 개별적으로 연결되는 복수의 좌표코드를 포함할 수 있다. 예를 들어, 5명의 후보가 출마한 투표인 경우, 전용프로그램은 사용자가 선택한 좌표선택정보에 해당하는 대표코드(예를 들어, X코드)에 1~5의 후보자 번호인 후보선택정보에 연결된 A코드, B코드, C코드, D코드 및 E코드와 연결하는 가상투표코드생성함수를 포함한다. 즉, 사용자가 X좌표를 선택한 후 1번 후보를 선택하면, 가상투표코드생성함수는 X코드와 1을 입력값으로 하여 투표코드배열 내의 A코드를 산출하고, 투표코드배열을 획득한 개표서버에서 A코드를 탐색할 수 있는 복수의 세부코드를 산출한 후 결합하여 가상투표코드를 생성한다.
이와 같이, 후보선택정보를 가상투표코드 생성의 기준위치에 반영하면, 가상투표코드 자체에 사용자에 의해 선택된 후보 정보가 포함되므로, 사용자 단말(10)이 통신을 통해 투표서버(20)로 가상투표코드를 제공하였을 때, 투표서버(20)는 사용자의 투표결과를 알 수 없게 된다.
또한, 다른 일실시예로, 전용프로그램은 좌표선택정보에 대응하게 생성된 1차 가상투표코드와 후보선택정보(즉, 선택한 후보의 번호)를 조합하여 최종 가상투표코드를 생성할 수 있다. 즉, 전용프로그램은 개표서버와 동일한 규칙으로 복수의 세부코드의 조합으로 생성된 1차 가상투표코드와 후보선택정보를 조합(예를 들어, 후보선택정보에 해당하는 숫자를 1차 가상투표코드의 특정한 위치에 삽입)하여 최종코드를 생성한다. 전용프로그램은 최종 가상투표코드를 투표서버(20)로 전송하고, 투표서버(20)는 최종 가상투표코드에서 전용프로그램과 동일한 규칙을 통해 후보선택정보를 추출한다. 가상투표코드와 후보선택정보의 조합 규칙은 주기적으로 변경할 수 있다.
또한, 사용자 단말(10)에 내장 또는 설치되어 있는 전용프로그램은 생성된 좌표 선택 정보를 시드데이터로 이용하여 하나의 세부코드를 생성할 수 있다. 즉, 전용프로그램은 투표가 수행된 시점데이터를 반영하여, 좌표선택정보에 해당하는 코드값 또는 좌표선택정보에 후보선택정보를 반영하여 결정된 코드값을 탐색할 수 있는 가상투표코드를 산출한다. 예를 들어, 전용프로그램은 투표수행 시점데이터를 기반으로 생성되는 OTP코드를 활용하여 복수의 세부코드(예를 들어, 제1코드 및 제2코드)를 생성할 수 있다.
전용프로그램에서 생성된 가상투표코드가 제1코드 및 제2코드의 특정한 규칙에 따른 조합으로 생성되는 경우, 제1코드와 제2코드는 투표결과(즉, 좌표 선택 정보)가 저장된 저장위치를 탐색하기 위한 각각의 역할을 수행할 수 있다. 예를 들어, 제1코드는 저장위치탐색의 시작지점을 설정하고, 제2코드는 특정한 탐색방식에 따라 상기 시작지점으로부터 투표결과의 저장위치로의 탐색경로를 설정한다. 즉, 사용자 단말(10)에서 단위카운트마다 정상적으로 생성된 가상투표코드가 제공되면, 개표서버(30)는 제1코드에 대응하는 탐색시작지점으로부터 제2코드에 상응하는 탐색경로에 따라 이동한 지점을 투표결과에 상응하는 위치(즉, 코드값)로 판단한다. 개표서버의 각 가상투표코드에 대한 투표결과를 추출하는 방법에 대해서는 상세히 후술한다.
다른 일 실시예로, 전용프로그램은 투표서버(20)로부터 사용자 인증 절차를 요청받아 수행할 수 있다. 즉, 사용자는 사용자 단말(10)을 통해 사용자 정보, 예를 들어, 이름, 주민등록번호, 휴대폰번호 등을 입력하여 사용자 인증을 진행할 수 있다. 각 사용자와 각자의 투표결과 사이의 연결관계를 제거할 필요는 있으나, 사용자가 중복 투표를 하거나 투표권이 없는 사람이 투표를 수행하는 것은 방지할 필요가 있다. 따라서, 전용프로그램은 투표서버로부터 요청받아 본인인증절차를 수행할 수 있고, 이에 따라 투표서버(20)는 특정 사용자의 본인인증결과데이터를 획득할 수 있다.
또한, 다른 일 실시예로, 전용프로그램은 생성된 가상투표코드를 저장할 수 있다. 사용자가 투표 수행 후에 본인이 투표한 결과가 정상적으로 입력이 된 것인지 확인하기를 원할 수 있다. 전자투표에서 전용프로그램(즉, 어플리케이션)을 통해 입력된 투표결과는 통신망을 통해 투표서버로 전달되는 것이므로, 본인이 입력한 결과가 중간에 조작되었는지 확인하기를 원할 수 있다. 일 실시예로, 전용프로그램은 개표서버(30)로 가상투표코드를 제공하여 투표결과를 수신할 수도 있다. 즉, 투표가 종료된 후, 사용자는 사용자 단말(10)에 저장되어 있는 가상투표코드를 개표서버(30)로 제공하면, 개표서버(30)에 의해 추출된 투표결과를 수신하여 자신의 투표가 정확하게 반영되었는지를 확인할 수 있다.
이 때, 전용프로그램은 가상투표코드만 저장할 수도 있고, 또는 사용자 정보와 함께 저장할 수도 있다. 예를 들어, 전용프로그램은 사용자 단말(10)에 내장되어 있는 카메라를 이용하여 사용자의 이미지를 촬영하여 가상투표코드와 함께 저장할 수 있다.
투표서버(20)는 사용자 단말(10)로부터 사용자 인증을 요청받으면, 인증데이터를 생성하는 역할을 수행한다. 즉, 사용자가 사용자 단말(10)을 통해 입력한 사용자 정보를 이용하여 인증데이터를 생성할 수 있다. 인증데이터 생성 방식에 대한 상세한 설명은 후술한다.
또한, 일 실시예로, 투표서버(20)는 사용자 단말(10)로 좌표 리스트 및 후보 리스트를 제공하는 역할을 수행한다. 예를 들어, 사용자 인증 절차가 완료되어 아직 투표를 완료하지 않은 사용자로 판단되면, 투표서버(20)는 좌표리스트 또는 후보리스트를 동시 또는 순차로 사용자단말(10)에 제공한다.
이때, 좌표 리스트 및 후보 리스트는 투표서버(20)에 포함되어 있는 투표코드배열을 기반으로 생성된다. 여기서, 투표코드배열은 복수의 좌표가 특정한 규칙으로 나열된 것이고, 각 좌표는 하위정보로서 복수의 후보 번호(또는, 후보 번호에 대응하는 코드값)를 포함하고 있다. 즉, 좌표 리스트는 투표코드배열에 특정한 규칙으로 나열되어 있는 복수의 좌표가 랜덤하게 배치되도록 생성된 리스트이며, 후보 리스트는 각 좌표에 하위정보로 포함된 복수의 후보 번호를 나열한 리스트이다.
따라서, 투표서버(20)는 사용자 단말(10)로 좌표 리스트를 제공하여 사용자 단말(10)로부터 좌표 선택 정보(사용자에 의해 선택된 특정한 좌표)를 제공받으면, 해당 좌표에 하위정보로 포함된 복수의 후보들로 구성된 후보 리스트를 제공하게 된다.
일 실시예로, 인증이 이미 완료된 경우, 투표서버(20)는 사용자 단말(10)로 알람 메시지를 전송할 수 있다. 예를 들어, 사용자 단말(10)의 화면에 팝업 형태로 "이미 인증이 완료되었습니다. 투표를 진행해 주세요." 등의 메시지를 표시할 수 있다. 다른 일 실시예로, 투표가 이미 완료된 경우, 투표서버(20)는 사용자 단말(10)의 화면에 팝업 형태로 "이미 투표를 완료하였습니다." 등의 메시지를 표시할 수도 있다.
또한, 투표서버(20)는 사용자 단말(10)로부터 가상투표코드를 제공받는 역할을 수행한다. 가상투표코드는 사용자 단말(10)에서 좌표 선택 정보 및 후보 선택 정보를 기반으로 생성된 것이다.
따라서, 투표서버(20)는 사용자 단말(10)에서 선택된 좌표 선택 정보 및 후보 선택 정보를 확인할 수 없다. 즉, 투표서버(20)는 사용자의 투표결과를 알 수 없다.
또한, 투표서버(20)는 생성된 인증데이터와 수신된 가상투표코드를 분산저장하는 역할을 수행한다. 가상투표코드를 분산저장하는 방식에 대한 상세한 설명은 후술한다.
개표서버(30)는 투표가 종료된 후에, 투표서버(20)로부터 투표코드배열을 제공받아, 투표코드배열을 적용하기 위한 특정한 투표결과추출알고리즘을 설정하는 역할을 수행한다. 투표결과추출알고리즘 설정 방식에 대한 상세한 설명은 후술한다.
또한, 개표서버(30)는 투표서버(20)에 의해 분산저장되어 있는 가상투표코드 및 인증데이터를 추출하는 역할을 수행한다. 가상투표코드 및 인증데이터를 추출 방식에 대한 상세한 설명은 후술한다.
또한, 개표서버(30)는 투표결과추출알고리즘을 이용하여 가상투표코드로부터 투표결과를 추출하는 역할을 수행한다. 투표결과를 추출하는 방식에 대한 상세한 설명은 후술한다.
일 실시예로, 개표서버(30)는 사용자 단말(10)로부터 특정한 가상투표코드(예를 들어, 사용자가 투표를 수행함에 따라 사용자 단말(10) 내에 저장되어 있는 가상투표코드)를 수신할 수도 있다. 마찬가지로, 개표서버(30)는 투표결과추출알고리즘을 이용하여 사용자 단말(10)에서 제공된 가상투표코드로부터 투표결과를 추출할 수 있다. 개표서버(30)는 추출된 투표결과를 사용자 단말(10)로 제공한다.
또한, 개표서버(30)는 인증데이터를 이용하여 투표에 참여한 인원을 산출하는 역할을 수행한다. 투표 인원 산출하는 방식에 대한 상세한 설명은 후술한다.
도 2는 본 발명의 일 실시예에 따른 가상투표코드 기반의 투표 서버장치의 구성도이다.
도 2에 도시된 바와 같이, 투표서버장치(200)는 인증데이터 생성부(210), 리스트 제공부(220), 가상투표코드 수신부(230) 및 분산저장부(240)를 포함한다.
여기서, 투표서버장치(200)는 투표서버(20)가 포함된 컴퓨터 장치를 의미한다.
인증데이터 생성부(210)는 사용자 단말(10)로부터 사용자 인증을 요청받아 인증데이터를 생성하는 역할을 수행한다. 즉, 인증데이터 생성부(210)는 사용자 단말(10)로부터 사용자 정보, 예를 들어, 사용자의 이름, 주민등록번호, 휴대폰번호 등을 제공받아, 이를 기반으로 인증데이터를 생성할 수 있다.
일 실시예로, 투표서버(20)는 KYC(Know Your Customer) 인증을 통해 인증데이터를 생성할 수 있다. 즉, 투표서버(20)가 사용자 인증을 요청받으면, 사용자 단말(10)로 KYC 인증에 필요한 사용자 정보 입력을 요청한다. 이후, 입력된 사용자 정보를 기반으로 KYC 인증데이터를 생성할 수 있다.
리스트 제공부(220)는 서버장치 내에 저장되어 있는 투표코드배열을 기반으로 좌표 리스트 및 후보 리스트를 생성하여 사용자 단말(10)로 제공하는 역할을 수행한다.
도 8에 도시된 바와 같이, 투표코드배열은 복수의 좌표가 특정한 규칙에 따라 나열되어 있으며, 각 좌표에 하위정보로 복수의 후보가 포함되어 있다. 도 8에 도시된 바와 같이, 각 좌표는 자연수인 임의의 숫자이며, 각 좌표에는 동일한 후보번호가 하위정보로 포함되어 있다. 이때, 하위정보로 포함되는 후보번호는 선거에 출마한 후보에 따라 변경된다.
이때, 각 좌표에는 투표코드배열 내에서 대응하는 코드가 부여되어 있으며, 각 좌표에 대해 하위정보로 포함된 각 후보에 대해서도 코드가 부여될 수 있다. 여기서, 후보에 부여된 코드는 각 좌표에 포함된 하위정보마다 다를 수 있고, 또는 좌표에 상관없이 후보 번호에 따라 다를 수도 있다. 즉, 도 8에 도시된 좌표 63에 포함된 후보 1, 2, 3의 코드와 좌표 309에 포함된 후보 1, 2, 3의 코드가 각각 다를 수 있고(즉, 6개의 상이한 코드), 좌표 63 및 309에 포함된 후보 1의 코드가 같고, 후보 2의 코드가 같고, 후보 3의 코드가 같을 수 있다(즉, 3개의 상이한 코드).
구체적인 예로, 투표코드배열은 사용자의 특정한 좌표선택에 따라 획득되는 좌표코드에 후보자 수에 대응하는 개수의 좌표코드가 연결될 수 있다. 예를 들어, 좌표리스트는 투표코드배열 내에서 각 좌표그룹의 대표코드에 해당하는 좌표코드들을 랜덤하게 표시하여 제공되는 것이고, 각각의 대표코드에는 후보선택정보를 반영하여 개별적으로 연결되는 복수의 좌표코드를 포함할 수 있다. 예를 들어, 5명의 후보가 출마한 투표인 경우, 전용프로그램은 사용자가 선택한 좌표선택정보에 해당하는 대표코드(예를 들어, X코드)에 1~5의 후보자 번호인 후보선택정보에 연결된 A코드, B코드, C코드, D코드 및 E코드와 연결하는 가상투표코드생성함수를 포함한다. 즉, 사용자가 X좌표를 선택한 후 1번 후보를 선택하면, 가상투표코드생성함수는 X코드와 1을 입력값으로 하여 투표코드배열 내의 A코드를 산출하고, 투표코드배열을 획득한 개표서버에서 A코드를 탐색할 수 있는 복수의 세부코드를 산출한 후 결합하여 가상투표코드를 생성한다.
일 실시예로, 리스트 제공부(220)는 투표코드배열에 배치된 복수의 좌표를, 도 7(a)에 도시된 바와 같이, 랜덤한 위치로 배치하여 좌표 리스트를 생성할 수 있다. 이때, 좌표 리스트에 배치된 각 좌표에는 투표코드배열에서 부여된 코드가 연결되어 있지만, 사용자는 사용자 단말(10)을 통해 좌표 리스트에서 좌표 정보만 확인할 수 있다.
또한, 일 실시예로, 리스트 제공부(220)는, 도 7(b)에 도시된 바와 같이, 복수의 후보를 순서대로, 예를 들어, 후보 번호 순서대로 나열된 후보 리스트를 생성할 수 있다. 이때, 후보 리스트에 나열된 각 후보에는 투표코드배열에서 부여된 코드가 연결되어 있지만, 사용자는 사용자 단말(10)을 통해 후보 리스트에서 후보 정보만 확인할 수 있다.
또한, 일 실시예로, 투표서버(20)는 조건제공부(미도시)를 더 포함하고 있어, 사용자 단말(10)에 내장 또는 설치된 전용프로그램에 저장되어 있는 가상투표코드생성함수를 변형 또는 조절할 수 있는 조건을 제공할 수 있다. 즉, 투표서버(20)에 포함되어 있는 투표코드배열은 각 투표의 유형, 종류, 기간 등 투표 정보에 따라 상이하기 때문에, 조건제공부는 전용프로그램에 투표코드배열에 따라 상이한 조건을 제공한다., 이후, 전용프로그램은 조건에 따라 가상투표코드생성함수를 변형 또는 조절하고, 변형 또는 조절된 가상투표코드생성함수를 이용하여 가상투표코드를 생성할 수있다.
가상투표코드 수신부(230)는 사용자 단말(10)에서 좌표 선택 정보와 후보 선택 정보를 기반으로 생성된 가상투표코드를 수신하는 역할을 수행한다. 좌표 선택 정보는 사용자가 사용자 단말(10)을 통해 좌표 리스트에 배치되어 있는 복수의 좌표 중에서 선택한 하나의 좌표 정보이고, 후보 선택 정보는 사용자가 사용자 단말(10)을 통해 후보 리스트에 포함되어 있는 복수의 후보 중에서 선택한 하나의 후보 정보이다.
일 실시예로, 사용자 단말(10)에 내장 또는 설치된 전용프로그램은 가상투표코드생성함수를 이용하여 사용자에 의해 선택된 좌표 선택 정보와 후보 선택 정보에 각각 연결된 코드를 이용하여 가상투표코드를 생성할 수 있다. 즉, 전용프로그램은 하나의 세부코드생성함수를 이용하여 좌표 선택 정보에 대응하는 코드를 기반으로 하나의 세부코드를 생성하고, 다른 하나의 세부코드생성함수를 이용하여 후보 선택 정보에 대응하는 코드에 따라 생성된 세부코드의 값을 변경할 수 있다. 이때, 하나의 세부코드생성함수를 이용하여 좌표 선택 정보에 대응하는 코드를 기반으로 생성된 세부코드에 후보 선택 정보에 대응하는 코드를 적용하여 세부코드를 생성할 수도 있다.
일 실시예로, 가상투표코드생성함수는 사용자에 의해 선택된 좌표 선택 정보(즉, 특정한 좌표)를 개표알고리즘에서 탐색할 수 있는 복수의 세부코드로 구성된 가상투표코드를 생성한다. 예를 들어, 각 사용자가 선택한 후보정보가 각 가상투표코드에 매칭되는 경우, 전용프로그램은 개표서버에서 사용자에 의해 선택된 좌표(즉, 좌표 선택 정보)를 탐색할 수 있는 가상투표코드를 생성한다.
또한, 다른 일실시예로, 가상투표코드생성함수는 사용자에 의해 선택된 후보정보(즉, 후보선택정보)를 반영하여 가상투표코드를 생성한다. 즉, 전용프로그램 내 가상투표코드생성함수는 가상투표코드 자체에 사용자가 선택한 후보선택정보를 담을 수 있다.
예를 들어, 가상투표코드생성함수는 특정한 좌표 선택 정보를 기반으로 코드 그룹을 선택하고, 후보선택정보를 기반으로 좌표코드 그룹 내의 특정한 코드값을 선택한다. 전용프로그램은 해당 코드값을 사용자의 좌표선택정보와 후보선택정보를 포함하는 값으로 설정하고, 이를 바탕으로 복수의 세부코드를 생성한다. 즉, 전용프로그램은 투표서버 내에 포함되고 개표서버에서 개표를 위해 사용될 투표코드배열 내에서 해당 코드값을 탐색할 수 있는 복수의 세부코드(예를 들어, 제1코드 및 제2코드)를 생성 후 결합하여 가상투표코드를 생성한다.
또한, 일 실시예로, 사용자 단말(10)에 내장 또는 설치된 전용프로그램은 가상투표코드생성함수를 이용하여 가상투표코드를 생성할때, 투표자의 투표시점을 이용할 수도 있다.
분산저장부(240)는 인증데이터 생성부(210)에서 생성된 인증데이터 및 가상투표코드 수신부(230)에서 수신한 가상투표코드를 분산저장하는 역할을 수행한다.
일 실시예로, 분산저장부(240)는 인증데이터가 생성될때마다 해당 인증데이터를 서버에 분산저장하고, 가상투표코드가 수신될때마다 해당 가상투표코드를 서버에 분산저장할 수 있다. 예를 들어, 분산저장부(240)는 인증데이터 저장공간과 가상투표코드 저장공간을 분리할 수 있다. 이에 따라, 분산저장부(240)는 인증데이터 생성부(210)에서 인증데이터가 생성될때마다 인증데이터 저장공간 내에서의 저장 위치를 랜덤하게 하여 인증데이터를 분산저장할 수 있다. 또한, 분산저장부(240)는 가상투표코드 수신부(230)에서 가상투표코드를 수신할때마다 가상투표코드 저장공간 내에서의 저장 위치를 랜덤하게 하여 가상투표코드를 분산저장할 수 있다. 즉, 특정 사용자에 대한 인증데이터와 특정 사용자의 투표결과를 기반으로 생성된 가상투표코드가 분산저장부(240)에 의해 시간 간격을 두고 각각 다른 저장공간에 저장되기 때문에, 특정 사용자에 대한 인증데이터와 가상투표코드의 연결관계가 제거되게 된다. 이에 따라, 특정 사용자(투표자)가 어떤 후보에 투표하였는지를 알 수 없게 된다.
다른 일 실시예로, 분산저장부(240)는 인증데이터 생성부(210)에서 생성된 인증데이터 및 가상투표코드 수신부(230)에서 수신한 가상투표코드를 블록체인 기반으로 복수의 외부 서버에 분산저장할 수도 있다. 이때, 인증데이터 블록체인과 가상투표코드 블록체인이 따로 형성되어, 인증데이터 생성부(210)에서 인증데이터가 생성되면 분산저장부(240)는 인증데이터를 인증데이터 블록체인에 분산저장하고, 가상투표코드 수신부(230)에서 가상투표코드가 수신되면 분산저장부(240)는 가상투표코드를 가상투표코드 블록체인에 분산저장할 수 있다. 이렇게 블록체인을 적용하여 인증데이터 및 가상투표코드를 복수의 외부서버에 분산 저장함에 따라, 사용자의 본인 인증 데이터 및 가상투표코드 데이터의 위조 또는 변조를 방지할 수 있게 된다. 여기서, 복수의 외부 서버는 인터넷으로 연결된 특정 네트워크 상의 수많은 컴퓨터를 의미한다.
도 3은 본 발명의 일 실시예에 따른 가상투표코드 기반의 개표 서버장치의 구성도이다.
도 3에 도시된 바와 같이, 개표서버장치(300)는 투표결과추출알고리즘 설정부(310), 가상투표코드 추출부(320), 인증데이터 추출부(330), 투표결과 추출부(340) 및 투표인원 산출부(350)를 포함한다.
여기서, 개표서버장치(300)는 개표서버(20)가 포함된 컴퓨터 장치를 의미한다.
투표결과추출알고리즘 설정부(310)는 외부기기로부터 제공된 투표코드배열을 적용하기 위한 투표결과추출알고리즘을 설정하는 역할을 수행한다. 일 실시예로, 투표결과추출알고리즘 설정부(310)는 투표가 종료된 후에, 투표서버장치(200)로부터 투표코드배열을 제공받거나, 또는 이동식 디스크, 예를 들어, USB 등으로부터 투표코드배열을 제공받을 수 있다. 이동식 디스크를 통해 투표코드배열을 제공받는 경우, 관리자가 투표코드배열을 포함하고 있는 이동식 디스크를 개표서버장치(300)에 연결함으로써 투표결과추출알고리즘 설정부(310)에 투표코드배열이 제공될 수 있다.
이후, 투표결과추출알고리즘 설정부(310)는 제공된 투표코드배열에 매칭되도록 투표결과추출알고리즘을 설정한다. 즉, 투표코드배열은 투표구역, 투표인원, 투표목적 등에 따라 상이한 조건으로 설정되어 있으므로, 이에 따라, 투표결과추출알고리즘 설정부(310)는 제공되는 투표코드배열의 조건에 매칭되도록 투표결과추출알고리즘을 설정하게 된다.
가상투표코드 추출부(320)는 분산저장된 가상투표코드를 추출하는 역할을 수행한다. 즉, 가상투표코드 추출부(320)는 서버 내 가상투표코드 저장공간 또는 블록체인 기반으로 복수의 외부 서버에 분산저장되어 있는 복수의 가상투표코드(즉, 투표 완료한 유권자의 가상투표코드)를 추출한다.
인증데이터 추출부(330)는 분산저장된 사용자의 인증데이터를 추출하는 역할을 수행한다. 즉, 인증데이터 추출부(330)는 서버 내 인증데이터 저장공간 또는 블록체인 기반으로 복수의 외부 서버에 분산저장되어 있는 복수의 인증데이터(즉, 투표 완료한 유권자의 인증데이터)를 추출한다.
투표결과 추출부(340) 투표결과추출알고리즘을 이용하여 가상투표코드에서 복수의 세부코드를 추출하여 투표결과를 확인하는 역할을 수행한다. 즉, 투표결과추출알고리즘을 이용하여 가상투표코드에서 좌표 선택 정보 및 후보 선택 정보를 추출하여, 모든 유권자의 투표결과를 산출하게 된다.
일 실시예로, 투표결과 추출부(340)는 가상투표코드생성함수에 포함된 세부코드결합함수를 포함한다. 따라서, 가상투표코드가 복수의 세부코드를 포함하는 경우, 투표결과 추출부(340)는 세부코드결합함수를 적용하여 가상투표코드에서 복수의 세부코드를 추출할 수 있다. 예를 들어, 사용자 단말(10)에서 두 개의 세부코드(즉, 제1코드 및 제2코드)가 결합된 가상투표코드를 생성하는 경우, 투표결과 추출부(340)는 가상투표코드의 문자배열에서 세부코드결합함수를 적용하여 제1코드 및 제2코드를 분리해낼 수 있다.
투표결과 추출부(340)는 추출된 하나 이상의 세부코드를 기반으로 투표결과추출알고리즘 내에 투표결과가 저장된 저장위치를 탐색하는 역할을 수행한다. 여기서, 투표결과추출알고리즘은 가상투표코드에 포함되는 각각의 세부코드 적용 시에 투표결과의 저장위치 탐색이 가능하도록 하는 알고리즘으로서, 사용자 단말(10)에서 가상투표코드를 생성할 때 이용했던 가상투표코드생성함수에 매칭되는 것이다. 이때, 투표결과 저장위치는 투표코드배열 내에 나열된 좌표 선택 정보의 위치를 의미한다.
일 실시예에 따라, 복수의 가상투표코드를 통해 탐색된 복수의 투표결과 저장위치가 동일할 수 있다. 즉, 투표결과추출알고리즘 내에 동일한 지점에 복수의 투표결과가 저장될 수 있다. 하지만, 가상투표코드를 이용하여 투표결과추출알고리즘 내의 투표결과 저장위치를 탐색하는 것은, 사용자(즉, 투표자)를 특정하고자 하는 것이 아니고, 사용자의 투표결과만을 추출하여 모든 유권자의 투표결과를 산출하기 위한 것이므로, 동일한 지점에 복수의 투표결과가 저장되어도 무방하다. 하지만, 가상투표코드에 사용자의 투표시점이 반영된 경우, 사용자마다 투표시점이 다르게 반영되어 가상투표코드가 생성되기 때문에, 투표결과추출알고리즘 내에 상이한 위치에 각각의 사용자의 투표결과가 저장되게 된다. 즉, 가상투표코드에 사용자의 투표시점이 반영된 경우, 투표결과추출알고리즘 내에 동일한 위치에 복수의 투표결과가 저장되지 않게 된다.
투표결과 추출부(340)에서 각각의 세부코드를 기반으로 투표결과 저장위치를 탐색하는 방식으로는 다양한 방식이 적용될 수 있다. 투표결과 추출부(340)가 복수의 세부코드를 기반으로 저장위치를 탐색하기 위해 세부코드 간에는 상관관계를 포함할 수 있다.
가상투표코드가 제1코드 및 제2코드로 구성되는 경우, 세부코드 간에 상관관계를 가지는 일 실시예로, 투표결과 추출부(340)는 제1코드에 대응하는 탐색시작지점을 결정하고, 탐색시작지점으로부터 제2코드에 상응하는 탐색경로에 따라 이동한 지점을 투표결과의 저장위치로 찾을 수 있다. 즉, 세부코드는, 저장위치탐색의 시작지점을 설정하는 제1코드 및 특정한 탐색방식에 따라, 시작지점으로부터 투표결과 저장위치로의 탐색경로를 설정하는 제2코드를 포함할 수 있다.
일 실시예로, 가상투표코드가 투표결과의 저장위치의 탐색시작지점을 결정하는 제1코드와 탐색시작지점으로부터의 저장위치 방향을 제시하는 제2코드를 포함하는 경우, 투표결과추출알고리즘은 제1코드에 대응되는 지점에서 제2코드에 대응되는 방향을 지시할 때, 해당 위치에 좌표 선택 정보가 매칭되는 저장위치가 배치되도록 조절하는 알고리즘이다.
예를 들어, 도 9를 참조하면, 투표결과추출알고리즘이 제1코드에 해당하는 MN개의 코드가 나열된 트랙을 따라 구름이동하는 k각형(k는 MN)이며, k각형의 꼭지점이 제1코드 트랙 상에 코드가 배치되는 지점에 대응되면서 이동하는 경우, k각형의 각 꼭지점이 투표결과 저장위치와 매칭되고, 제1코드 트랙(즉, 제1트랙)과 k각형이 대응되는 지점이 제1코드에 대응하는 저장위치 탐색시작지점이 될 수 있다. 이 때, 투표결과 추출부(340)는 추출된 제1코드에 대응되는 지점에 k각형의 꼭지점이 접하도록 k각형에 구름이동를 적용할 수 있다. 이를 통해, 투표결과 추출부(340)는 k각형이 접한 제1트랙 상의 위치에서 제2코드에 상응하는 각도(예를 들어, k각형의 꼭지점을 향하도록 180도를 MN개로 분할한 특정한 각도)로 지시함에 따라, 가상투표코드에 대응하는 투표결과가 저장된 저장위치(즉, 좌표 선택 정보)인 k각형의 꼭지점을 탐색할 수 있다.
구체적으로, 도 9에서와 같이, 투표결과 추출부(340)는 제1코드에 대응하는 지점으로 k각형을 구름이동(즉, k각형의 각 꼭지점과 트랙 상의 각 지점이 차례대로 접하도록 하면서 이동)시킨다. 그 후, 투표결과 추출부(340)는 제2코드에 상응하는 각도 방향을 지시하여 저장위치에 상응하는 꼭지점을 탐색한다.
또한, 도 10에 도시된 바와 같이, 투표결과추출알고리즘은 가상투표코드를 구성하는 복수의 세부코드를 기반으로 트랙상을 이동하여 투표결과 저장위치에 매칭된 지점으로 이동하는 것이다.
구체적으로, 가상투표코드가 특정 기간동안 투표가 진행됨에 따라 투표결과추출알고리즘이 시작된 초기시점으로부터 경과된 단위카운트를 기반으로 제1코드와 각 사용자가 사용자 단말(10)에 설치된 전용프로그램을 통해 투표를 실시한 시점으로부터 경과된 단위카운트를 기반으로 생성된 제2코드를 포함하는 경우, 도 10에서와 같이, 개표서버장치(300)(즉, 투표결과 추출부(340))는 제1코드에 대응되는 코드값이 매칭된 트랙상의 카운트를 탐색시작지점으로 설정하고, 제2코드에 상응하는 카운트값만큼 상기 탐색시작지점으로부터 트랙을 따라서 회귀하여 투표를 실시한 시점의 트랙상의 지점(즉, 투표결과 저장위치)을 탐색한다. 예를 들어, 개표서버장치(300)가 제1코드용 트랙에서 가상투표코드 내의 제1코드가 부여된 지점(또는 카운트)를 탐색하여 탐색시작지점을 설정하고, 탐색시작지점으로부터 역방향으로 제2코드용 트랙을 배치하여 가상투표코드 내의 제2코드가 부여된 지점(또는 카운트)를 탐색하여 제1코드용 트랙 상에서 투표가 실시된 지점(또는 카운트)를 추출한다. 또한, 예를 들어, 개표서버장치(300)가 가상투표코드 내의 제1코드를 기반으로 탐색시작지점을 설정하고, 가상투표코드 내의 제2코드에 제2함수의 역함수를 적용함에 따라 산출된 카운트값만큼 회귀하여 투표시점에 대응되는 지점을 탐색한다.
투표인원 산출부(350) 추출된 인증데이터를 이용하여 투표 인원을 산출하는 역할을 수행한다. 즉, 투표인원 산출부(350) 추출된 인증데이터의 개수로부터 투표에 참여한 인원을 산출할 수 있다.
일 실시예로, 산출된 투표인원을 통해 투표인원 산출부(350)는 모든 유권자 수 대비 투표에 참가한 인원의 비율을 산출하여, 해당 투표의 투표율을 확인할 수 있다.
도 4는 본 발명의 일 실시예에 따른 가상투표코드 생성의 흐름도이고, 도 5는 본 발명의 일 실시예에 따른 가상투표코드 기반의 투표 방법의 순서도이다.
도 4 및 도 5를 참조하여, 가상투표코드 생성 방법 및 가상투표코드 기반의 투표 방법에 대해 설명한다.
도 5를 참조하면, 본 발명의 일 실시예에 따른 가상투표코드 기반의 투표 방법은 서버가 사용자 단말로부터 사용자 인증을 요청받아 인증 데이터를 생성하는 단계(S100; 인증 데이터 생성단계), 서버가 투표코드배열을 기반으로 생성된 좌표 리스트를 사용자 단말로 제공하는 단계(S200; 리스트 제공단계), 서버가 사용자 단말에서 생성된 가상투표코드를 제공받는 단계(S300; 가상투표코드 수신단계) 및 서버가 각 사용자의 인증 데이터 및 가상투표코드를 분산 저장하는 단계(S400; 분산 저장단계)를 포함한다. 이하, 각 단계에 대한 상세한 설명을 기재한다. 다만, 투표서버장치(200)(즉, 투표서버(20))에 대한 설명 과정에서 상술된 내용에 대한 구체적인 개시는 생략한다.
도 4를 참조하면, 사용자 단말(10)은 투표서버(20)로 사용자 인증을 요청한다. 즉, 즉, 사용자는 사용자 단말(10)을 통해 사용자 정보, 예를 들어, 이름, 주민등록번호, 휴대폰번호 등을 입력하여 사용자 인증을 진행할 수 있다.
사용자 단말(10)로부터 사용자 인증이 요청되면, 단계 S100에서, 투표서버(20)가 사용자 단말(10)로부터 제공된 사용자 정보를 이용하여 인증 데이터를 생성한다.
일 실시예로, 사용자 단말(10)로부터 사용자 인증이 요청되면, 투표서버(20)는 해당 사용자에 대한 사용자 인증 여부를 확인할 수 있다. 사용자 인증이 완료되지 않은 경우, 투표서버(20)는 해당 사용자에 대한 인증 데이터를 생성할 수 있다. 반면에, 이미 사용자 인증이 완료된 경우, 투표서버(20)는 사용자 단말(10)로 이미 인증이 완료되었다는 메시지를 전송하고, 투표를 실시할 것을 요청할 수 있다.
단계 S200에서, 투표서버(20)가 투표코드배열을 기반으로 생성된 좌표 리스트 및 후보 리스트를 사용자 단말(10)로 제공한다. 좌표 리스트 및 후보 리스트는 투표서버(20)에 포함되어 있는 투표코드배열을 기반으로 생성된다. 즉, 투표서버(20)는 투표코드배열에 특정한 규칙으로 나열되어 있는 복수의 좌표 및 각 좌표에 하위 정보로 포함되는 복수의 후보 번호를 기반으로 하여 좌표 리스트 및 후보 리스트를 생성할 수 있다. 즉, 좌표 리스트는 복수의 좌표가 랜덤하게 배치되어 있는 리스트이고, 후보 리스트는 선거에 출마한 복수의 후보 번호가 포함되어 있는 리스트이다.
이후, 사용자 단말(10)은 투표서버(20)로부터 제공된 좌표 리스트를 사용자 단말(10)의 화면에 표시하여, 사용자가 복수의 좌표 중 하나를 선택하면, 좌표 선택 정보를 생성하게 된다. 그런 다음, 사용자 단말(10)은 투표서버(20)로부터 제공된 후보 리스트를 사용자 단말(10)의 화면에 표시하여, 사용자가 복수의 후보 중 하나를 선택하면, 후보 선택 정보를 생성하게 된다. 이때, 투표서버(20)로부터 제공되는 후보 리스트는 사용자에 의해 선택된 특정 좌표에 하위정보로 포함된 복수의 후보가 번호순으로 나열된 것이다.
이후, 사용자 단말(10)에 내장 또는 설치된 전용프로그램은 생성된 좌표 선택 정보를 이용하여 가상투표코드를 생성한다.
일 실시예로, 전용프로그램이 가상투표코드를 생성할때, 가상투표코드는 후보 선택 정보에 따라 상이하게 생성될 수 있다. 즉, 좌표 선택 정보가 후보 선택 정보를 하위 정보로 포함하고 있기 때문에, 전용프로그램이 좌표 선택 정보를 기반으로 가상투표코드를 생성할 때, 후보 선택 정보에 따라 가상투표코드가 상이하게 생성되게 된다.
구체적인 예로, 투표코드배열은 사용자의 특정한 좌표선택에 따라 획득되는 좌표코드에 후보자 수에 대응하는 개수의 좌표코드가 연결될 수 있다. 예를 들어, 좌표리스트는 투표코드배열 내에서 각 좌표그룹의 대표코드에 해당하는 좌표코드들을 랜덤하게 표시하여 제공되는 것이고, 각각의 대표코드에는 후보선택정보를 반영하여 개별적으로 연결되는 복수의 좌표코드를 포함할 수 있다. 예를 들어, 5명의 후보가 출마한 투표인 경우, 전용프로그램은 사용자가 선택한 좌표선택정보에 해당하는 대표코드(예를 들어, X코드)에 1~5의 후보자 번호인 후보선택정보에 연결된 A코드, B코드, C코드, D코드 및 E코드와 연결하는 가상투표코드생성함수를 포함한다. 즉, 사용자가 X좌표를 선택한 후 1번 후보를 선택하면, 가상투표코드생성함수는 X코드와 1을 입력값으로 하여 투표코드배열 내의 A코드를 산출하고, 투표코드배열을 획득한 개표서버에서 A코드를 탐색할 수 있는 복수의 세부코드를 산출한 후 결합하여 가상투표코드를 생성한다.
또한, 일 실시예에 따라, 전용프로그램은 사용자가 투표를 실시한 시점(투표시점)을 기반으로 가상투표코드를 생성할 수도 있다.
예를 들어, 가상투표코드가 복수의 세부코드를 포함하는 경우, 전용프로그램은 좌표 선택 정보와 투표시점을 각각의 세부코드생성함수의 시드데이터로 이용하여 세부코드를 생성할 수 있다. 이때, 좌표 선택 정보를 이용하여 생성된 세부코드는 하위 정보인 후보 선택 정보에 따라 상이하게 생성되게 된다.
각각의 세부코드생성함수를 이용하여 복수의 세부코드를 생성하면, 사용자 단말(10)은 가상투표코드생성함수에 포함되어 있는 세부코드결합함수를 이용하여 복수의 세부코드가 결합된 가상투표코드를 생성할 수 있다. 예를 들어, 사용자 단말(10)은 전용프로그램을 이용하여, 각각의 세부코드로 생성된 좌표 선택 정보와 투표시점을 각각 세부코드결합함수의 시드데이터로 이용하여 가상투표코드를 생성하게 된다.
단계 S300에서, 투표서버(20)는 사용자 단말(10)에서 생성된 가상투표코드를 제공받는다. 이와 같이, 투표서버(20)는 사용자에 의해 선택된 후보 정보가 포함된 가상투표코드 자체를 제공받게 되므로, 투표서버(20)는 사용자의 투표결과를 알 수 없게 된다.
단계 S400에서, 투표서버(20)는 단계 S100에서 생성된 사용자의 인증 데이터 및 단계 S300에서 제공된 가상투표코드를 분산저장한다. 즉, 투표서버(20)는 서버 내 가상투표코드 저장공간 또는 블록체인 기반으로 복수의 외부 서버에 인증데이터 및 가상투표코드를 분산저장할 수 있다.
이때, 투표서버(20)는 단계 S200에서 인증데이터가 생성되자마자 분산저장하고, 단계 S300에서 가상투표코드가 수신되자마자 분산저장할 수도 있다. 즉, 투표서버(20)는 특정 사용자에 대한 인증데이터와 특정 사용자의 투표결과를 기반으로 생성된 가상투표코드를 시간 간격을 두고 각각 다른 저장공간에 저장함으로써, 특정 사용자에 대한 인증데이터와 가상투표코드의 연결관계가 제거되도록 한다.
일 실시예로, 사용자 단말(10)은 전용프로그램을 이용하여 생성된 가상투표코드를 저장할 수 있다. 전용프로그램은 가상투표코드만 저장할 수도 있고, 또는 사용자 정보와 함께 저장할 수도 있다. 예를 들어, 전용프로그램은 사용자 단말(10)에 내장되어 있는 카메라를 이용하여 사용자의 이미지를 촬영하여 가상투표코드와 함께 저장할 수 있다. 저장된 가상투표코드는 개표시에 사용자가 개표서버(30)로 제공하여 자신의 투표결과를 확인하는 용도로 활용될 수 있다.
도 6은 본 발명의 일 실시예에 따른 가상투표코드 기반의 개표 방법의 순서도이다.
도 6을 참조하면, 본 발명의 일 실시예에 따른 가상투표코드 기반의 개표 방법은 서버가 외부기기로부터 제공된 투표코드배열에 매칭되는 투표결과추출알고리즘을 탐색하는 단계(S500; 투표결과추출알고리즘 탐색단계), 서버가 복수의 외부 서버에 분산 저장된 가상투표코드를 추출하는 단계(S600; 가상투표코드 추출단계), 서버가 복수의 외부 서버에 분산 저장된 인증데이터를 추출하는 단계(S700; 인증데이터 추출단계), 서버가 투표결과추출알고리즘을 이용하여 가상투표코드에서 복수의 세부코드를 추출하여 투표결과를 확인하는 단계(S800; 투표결과 확인단계) 및 서버가 인증데이터를 이용하여 투표인원을 산출하는 단계(S900; 투표인원 산출단계)를 포함한다. 이하, 각 단계에 대한 상세한 설명을 기재한다. 다만, 개표서버장치(300)(즉, 개표서버(30))에 대한 설명 과정에서 상술된 내용에 대한 구체적인 개시는 생략한다.
단계 S500에서, 개표서버(30)가 외부기기로부터 제공된 투표코드배열를 적용하기 위한 투표결과추출알고리즘을 설정한다. 즉, 개표서버(30) 투표가 완전히 종료된 후에(즉, 투표기간이 종료된 후에), 투표서버(20)로부터 투표코드배열을 제공받거나, 또는 이동식 디스크, 예를 들어, USB 등으로부터 투표코드배열을 제공받을 수 있다. 이때, 개표서버(30)는 투표가 완전히 종료된 뒤에 투표코드배열을 획득하게 되기 때문에, 개표서버(30)는 투표기간 중에는 개표를 할 수 없게 된다. 이에 따라, 투표결과의 조작에 대한 위험성이 낮아지게 된다.
개표서버(30)는 서버 내에 포함된 투표결과추출알고리즘이 제공된 투표코드배열에 매칭되도록 투표결과추출알고리즘을 설정한다. 즉, 투표코드배열은 투표구역, 투표인원, 투표목적 등에 따라 상이한 코드배열을 가지고 있다. 만약, 개표서버(30)가 투표코드배열에 맞지 않는 투표결과추출알고리즘을 이용하여 개표를 진행하게 되면, 투표결과에 오류가 발생하게 된다. 따라서, 개표서버(30)는 제공된 투표코드배열에 매칭되도록 투표결과추출알고리즘을 정확하게 설정하고, 이를 이용하여 투표결과를 추출해야 한다.
단계 S600에서, 개표서버(30)가 분산 저장된 가상투표코드를 추출한다. 즉, 투표서버(20)에 의해 복수의 외부 서버 또는 서버 내의 가상투표코드 저장 공간에 분산저장되어 있는 가상투표코드를 추출한다.
단계 S700에서, 개표서버(30)가 분산 저장된 인증데이터를 추출한다. 즉, 투표서버(20)에 의해 복수의 외부 서버 또는 서버 내의 인증데이터 저장 공간에 분산저장되어 있는 인증데이터를 추출한다.
가상투표코드와 인증데이터는 각각의 저장공간 또는 각각의 블록체인에 저장되어 있기 때문에, 개표서버(30)는 가상투표코드와 인증데이터 간의 연결관계를 확인할 수가 없다. 즉, 가상투표코드와 인증데이터 간의 연결관계가 끊어져 있기 때문에 투표자 본인을 제외하고는 어떤 투표자가 어떤 후보에게 투표를 했는지 알 수 없기 때문에, 투표 보안성이 향상되게 된다.
단계 S800에서, 개표서버(30)는 투표결과추출알고리즘을 이용하여 가상투표코드에서 복수의 세부코드를 추출하여 투표결과를 확인한다.
즉, 개표서버(30)는 투표결과추출알고리즘을 이용하여 가상투표코드에서 복수의 세부코드를 추출하여 투표결과를 확인한다. 예를 들어, 개표서버(30)는 투표결과추출알고리즘을 이용하여 가상투표코드에서 좌표 선택 정보를 추출하고, 하위 정보로 포함된 후보 선택 정보를 추출하여, 모든 유권자의 투표결과를 산출하게 된다.
일 실시예로, 개표서버(30)는 가상투표코드 생성시, 가상투표코드생성함수의 시드데이터로 이용된 투표시점을 기반으로 하여 좌표 선택 정보를 추출할 수 있다. 이 외에, 개표서버(30)에서 추출된 복수의 세부코드를 투표결과추출알고리즘을 적용하여 투표결과를 확인하는 방식은 도 3을 참조하여 상술한 설명과 중복되므로 생략한다.
개표서버(30)는 투표결과추출알고리즘 상에서 좌표 선택 정보가 추출되면, 하위 정보로 포함된 후보 선택 정보를 추출할 수 있게 된다.
개표서버(30)는 투표기간 중에 분산저장된 모든 가상투표코드에 대해서 투표결과추출알고리즘을 적용하여 각각의 좌표 선택 정보 및 후보 선택 정보를 추출하고, 이를 통해 투표결과를 산출할 수 있게 된다.
일 실시예로, 개표서버(30)는 동일한 가상투표코드를 추출할 수도 있다. 이는, 복수의 투표자가 동일한 좌표와 동일한 후보를 선택한 것을 의미한다. 하지만, 가상투표코드는 단지 투표결과만을 산출하기 위한 것이므로, 복수의 투표자가 같은 좌표 및 후보를 선택해도 투표결과에는 영향이 없으며, 이는 이중 투표를 의미하는 것이 아니다.
다른 일 실시예로, 가상투표코드에 사용자의 투표시점이 반영된 경우, 사용자마다 투표시점이 다르게 반영되어 가상투표코드가 생성되게 된다. 즉, 사용자마다 투표를 실시한 시간이 다르기 때문에, 동일한 가상투표코드가 생성될 수 없게 된다.
단계 S900에서, 개표서버(30)가 인증데이터를 이용하여 투표인원을 산출한다. 즉, 개표서버(30)는 추출된 인증데이터의 개수로부터 투표에 참여한 인원을 산출할 수 있다.
일 실시예로, 산출된 투표인원을 통해 투표인원 산출부(350)는 모든 유권자 수 대비 투표에 참가한 인원의 비율을 산출하여, 해당 투표의 투표율을 확인할 수 있다. 예를 들어, 총 유권자의 수가 100명이고 투표를 완료한 인원(즉, 추출된 인증데이터의 개수)가 90개이면, 투표율은 90퍼센트로 산출될 수 있다.
이상에서 전술한 본 발명의 일 실시예에 따른 가상투표코드 기반의 투표 및 개표 방법은, 하드웨어인 컴퓨터와 결합되어 실행되기 위해 프로그램(또는 어플리케이션)으로 구현되어 매체에 저장될 수 있다.
또한, 이상에서 전술한 본 발명의 일 실시예에 따른 가상투표코드 생성 방법은, 하드웨어인 컴퓨터와 결합되어 실행되기 위해 프로그램(또는 어플리케이션)으로 구현되어 매체에 저장될 수 있다.
상기 전술한 프로그램은, 상기 컴퓨터가 프로그램을 읽어 들여 프로그램으로 구현된 상기 방법들을 실행시키기 위하여, 상기 컴퓨터의 프로세서(CPU)가 상기 컴퓨터의 장치 인터페이스를 통해 읽힐 수 있는 C, C++, JAVA, Ruby, 기계어 등의 컴퓨터 언어로 코드화된 코드(Code)를 포함할 수 있다. 이러한 코드는 상기 방법들을 실행하는 필요한 기능들을 정의한 함수 등과 관련된 기능적인 코드(Functional Code)를 포함할 수 있고, 상기 기능들을 상기 컴퓨터의 프로세서가 소정의 절차대로 실행시키는데 필요한 실행 절차 관련 제어 코드를 포함할 수 있다. 또한, 이러한 코드는 상기 기능들을 상기 컴퓨터의 프로세서가 실행시키는데 필요한 추가 정보나 미디어가 상기 컴퓨터의 내부 또는 외부 메모리의 어느 위치(주소 번지)에서 참조되어야 하는지에 대한 메모리 참조관련 코드를 더 포함할 수 있다. 또한, 상기 컴퓨터의 프로세서가 상기 기능들을 실행시키기 위하여 원격(Remote)에 있는 어떠한 다른 컴퓨터나 서버 등과 통신이 필요한 경우, 코드는 상기 컴퓨터의 통신 모듈을 이용하여 원격에 있는 어떠한 다른 컴퓨터나 서버 등과 어떻게 통신해야 하는지, 통신 시 어떠한 정보나 미디어를 송수신해야 하는지 등에 대한 통신 관련 코드를 더 포함할 수 있다.
상기 저장되는 매체는, 레지스터, 캐쉬, 메모리 등과 같이 짧은 순간 동안 데이터를 저장하는 매체가 아니라 반영구적으로 데이터를 저장하며, 기기에 의해 판독(reading)이 가능한 매체를 의미한다. 구체적으로는, 상기 저장되는 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있지만, 이에 제한되지 않는다. 즉, 상기 프로그램은 상기 컴퓨터가 접속할 수 있는 다양한 서버 상의 다양한 기록매체 또는 사용자의 상기 컴퓨터상의 다양한 기록매체에 저장될 수 있다. 또한, 상기 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장될 수 있다.
이상, 첨부된 도면을 참조로 하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며, 제한적이 아닌 것으로 이해해야만 한다.

Claims (17)

  1. 가상투표코드 기반의 투표 및 개표 방법으로서,
    서버가 사용자 단말로부터 사용자 인증을 요청받아 인증 데이터를 생성하는, 인증 데이터 생성단계;
    상기 서버가 투표코드배열을 기반으로 생성된 좌표 리스트를 상기 사용자 단말로 제공하는, 리스트 제공단계;
    상기 서버가 상기 사용자 단말에서 생성된 가상투표코드를 제공받는, 가상투표코드 수신단계; 및
    상기 서버가 각 사용자의 상기 인증 데이터 및 상기 가상투표코드를 분산 저장하는, 분산 저장단계;를 포함하되,
    상기 좌표 리스트는 복수의 좌표가 랜덤하게 배치되어 있는 것이고,
    상기 가상투표코드는 사용자 단말에서 상기 좌표 리스트 중에서 선택된 하나의 좌표를 나타내는 좌표 선택 정보를 기반으로 생성되는 것이고,
    상기 투표코드배열은 상기 복수의 좌표가 특정한 규칙에 따라 나열된 것으로서, 개표시스템에서 투표결과 산출에 이용되는 것인, 가상투표코드 기반의 투표 및 개표 방법.
  2. 제1항에 있어서,
    상기 리스트 제공단계는,
    상기 서버가 상기 사용자 단말로 복수의 후보를 포함하는 후보 리스트를 제공하는 단계를 포함하는, 가상투표코드 기반의 투표 및 개표 방법.
  3. 제2항에 있어서,
    상기 가상투표코드는 후보 선택 정보를 기반으로 생성되고,
    상기 후보 선택 정보는 상기 사용자 단말에서 상기 후보 리스트 중에서 선택된 하나의 후보를 나타내는 것인, 가상투표코드 기반의 투표 및 개표 방법.
  4. 제3항에 있어서,
    상기 후보 선택 정보는 상기 투표코드배열 내에서 상기 좌표 선택 정보의 하위 정보로 포함되는 것인, 가상투표코드 기반의 투표 및 개표 방법.
  5. 제4항에 있어서,
    상기 좌표 선택 정보 및 상기 후보 선택 정보는 각각 상기 투표코드배열 내에 대응되는 코드가 부여되는 것인, 가상투표코드 기반의 투표 및 개표 방법.
  6. 제5항에 있어서,
    상기 가상투표코드는 복수의 세부코드를 조합하여 생성되는 것이며,
    상기 복수의 세부코드는 상기 투표코드배열 내에서 상기 좌표 선택 정보에 대응하는 코드를 기반으로 생성된 세부코드를 포함하되, 상기 좌표 선택 정보에 대응하는 코드를 기반으로 생성된 세부코드는 상기 좌표 선택 정보에 하위 정보로 포함된 상기 후보 선택 정보에 대응하는 코드에 따라 상이하게 생성되는 것을 특징으로 하는, 가상투표코드 기반의 투표 및 개표 방법.
  7. 제6항에 있어서,
    상기 가상투표코드는 상기 사용자에 의해 선택된 좌표 선택 정보를 탐색할 수 있도록 투표시점에 생성된 코드인, 가상투표코드 기반의 투표 및 개표 방법.
  8. 제1항에 있어서,
    상기 분산저장 단계는,
    상기 서버가 상기 인증 데이터 및 상기 가상투표코드를 블록체인(block chain) 기반으로 분산 저장하는 것인, 가상투표코드 기반의 투표 및 개표 방법.
  9. 가상투표코드 기반의 투표 및 개표 방법으로서,
    서버가 외부기기로부터 제공된 투표코드배열를 적용하기 위한 투표결과추출알고리즘을 설정하는, 투표결과추출알고리즘 설정단계;
    상기 서버가 복수의 외부 서버에 분산 저장된 가상투표코드를 추출하는, 가상투표코드 추출단계;
    상기 서버가 복수의 외부 서버에 분산 저장된 인증데이터를 추출하는, 인증데이터 추출단계;
    상기 서버가 상기 투표결과추출알고리즘을 이용하여 상기 가상투표코드에서 복수의 세부코드를 추출하여 투표결과를 확인하는, 투표결과 확인단계; 및
    상기 서버가 상기 인증데이터를 이용하여 투표인원을 산출하는, 투표인원 산출단계;를 포함하되,
    상기 가상투표코드는 좌표 선택 정보를 기반으로 생성되며,
    상기 좌표 선택 정보는 상기 투표코드배열 내에 특정한 규칙에 따라 나열된 복수의 좌표 중 선택된 하나의 좌표인, 가상투표코드 기반의 투표 및 개표 방법.
  10. 제9항에 있어서,
    상기 가상투표코드는 후보 선택 정보를 기반으로 생성되며,
    상기 후보 선택 정보는 상기 투표코드배열 내에서 상기 좌표 선택 정보의 하위 정보로 포함되는 것인, 가상투표코드 기반의 투표 및 개표 방법.
  11. 제10항에 있어서,
    상기 좌표 선택 정보 및 상기 후보 선택 정보는 각각 상기 투표코드배열 내에 대응되는 코드가 부여되고,
    상기 복수의 세부코드는 상기 투표코드배열 내에서 상기 좌표 선택 정보에 대응하는 코드를 기반으로 생성된 세부코드를 포함하되, 상기 좌표 선택 정보에 대응하는 코드를 기반으로 생성된 세부코드는 상기 좌표 선택 정보에 하위 정보로 포함된 상기 후보 선택 정보에 대응하는 코드에 따라 상이하게 생성되는 것을 특징으로 하는, 가상투표코드 기반의 투표 및 개표 방법.
  12. 제9항에 있어서,
    상기 서버가 상기 사용자 단말로부터 가상투표코드를 제공받는 단계;
    상기 서버가 상기 투표결과추출알고리즘을 이용하여 상기 사용자 단말로부터 제공된 가상투표코드에서 복수의 세부코드를 추출하는 단계; 및
    상기 서버가 상기 추출된 세부코드에 대응하는 좌표 선택 정보 및 후보 선택 정보를 상기 사용자 단말로 제공하는 단계;를 포함하는, 가상투표코드 기반의 투표 및 개표 방법.
  13. 하드웨어인 컴퓨터와 결합되어, 제1항 내지 제12항 중 어느 한 항의 방법을 실행시키기 위하여 매체에 저장된, 가상투표코드 기반의 투표 및 개표 프로그램.
  14. 가상투표코드 생성 방법으로서,
    투표서버로 사용자 인증을 요청하는 단계;
    사용자 인증이 완료되면, 상기 투표서버로부터 투표코드배열을 기반으로 생성된 좌표 리스트 및 후보 리스트를 제공받되, 상기 좌표 리스트는 복수의 좌표가 랜덤하게 배치되어 있는 것이고, 상기 후보 리스트는 복수의 후보를 포함하고 있는 것인, 리스트 획득 단계;
    상기 좌표 리스트 중에서 하나를 선택하여 생성된 좌표 선택 정보 및 상기 후보 리스트 중에서 하나를 선택하여 생성된 후보 선택 정보를 이용하여 가상투표코드를 생성하는 단계; 및
    생성된 가상투표코드를 상기 투표서버로 제공하는 단계;를 포함하되,
    상기 가상투표코드는 상기 좌표 선택 정보를 탐색할 수 있도록 투표시점에 생성된 코드이며,
    상기 투표코드배열은 상기 복수의 좌표가 특정한 규칙에 따라 나열된 것이고,
    상기 좌표 선택 정보는 상기 투표코드배열 내에서 상기 후보 선택 정보를 하위 정보로 포함하고 있고,
    상기 좌표 선택 정보 및 상기 후보 선택 정보는 각각 상기 투표코드배열 내에 대응되는 코드가 부여되고,
    상기 가상투표코드는 상기 투표코드배열 내에서 상기 좌표 선택 정보에 대응하는 코드를 기반으로 생성된 세부코드를 포함하되, 상기 좌표 선택 정보에 대응하는 코드를 기반으로 생성된 세부코드는 상기 좌표 선택 정보에 하위 정보로 포함된 상기 후보 선택 정보에 대응하는 코드에 따라 상이하게 생성되는 것을 특징으로 하는, 가상투표코드 생성 방법.
  15. 하드웨어인 컴퓨터와 결합되어, 제14항의 방법을 실행시키기 위하여 매체에 저장된, 가상투표코드 생성 프로그램.
  16. 가상투표코드 기반의 투표 서버장치로서,
    사용자 단말로부터 사용자 인증을 요청받아 인증데이터를 생성하는 인증데이터 생성부;
    기 저장되어 있는 투표코드배열을 기반으로 좌표 리스트 및 후보 리스트를 생성하여 상기 사용자 단말로 제공하되, 상기 좌표 리스트는 복수의 좌표가 랜덤하게 배치되어 있는 것이고, 상기 후보 리스트는 복수의 후보를 포함하는 것인, 리스트 제공부;
    상기 사용자 단말에서 좌표 선택 정보와 후보 선택 정보를 기반으로 생성된 가상투표코드를 수신하는, 가상투표코드 수신부; 및
    생성된 상기 인증데이터 및 수신된 상기 가상투표코드를 복수의 외부 서버로 분산 저장하는 분산저장부;를 포함하되,
    상기 좌표 선택 정보는 상기 사용자 단말에서 상기 좌표 리스트 중에서 선택된 하나의 좌표를 나타내고, 상기 후보 선택 정보는 상기 사용자 단말에서 상기 후보 리스트 중에서 선택된 하나의 후보를 나타내는 것이며,
    상기 좌표 선택 정보는 상기 투표코드배열 내에서 상기 후보 선택 정보를 하위 정보로 포함하고 있고,
    상기 좌표 선택 정보 및 상기 후보 선택 정보는 각각 상기 투표코드배열 내에 대응되는 코드가 부여되는 것을 특징으로 하는, 가상투표코드 기반의 투표 서버장치.
  17. 가상투표코드 기반의 개표 서버장치로서,
    외부기기로부터 제공된 투표코드배열을 적용하기 위한 투표결과추출알고리즘을 설정하는 투표결과추출알고리즘 설정부;
    분산 저장된 가상투표코드를 추출하는 가상투표코드 추출부;
    분산 저장된 사용자의 인증데이터를 추출하는 인증데이터 추출부;
    상기 투표결과추출알고리즘을 이용하여 상기 가상투표코드에서 복수의 세부코드를 추출하여 투표결과를 확인하는 투표결과 추출부; 및
    상기 추출된 인증데이터를 이용하여 투표 인원을 산출하는 투표인원 산출부;를 포함하되,
    상기 가상투표코드는 상기 좌표 선택 정보를 기반으로 생성되는 것이고,
    상기 좌표 선택 정보는 상기 투표코드배열 내에서 상기 후보 선택 정보를 하위 정보로 포함하고 있고,
    상기 좌표 선택 정보 및 상기 후보 선택 정보는 각각 상기 투표코드배열 내에 대응되는 코드가 부여되고,
    상기 복수의 세부코드는 상기 투표코드배열 내에서 상기 좌표 선택 정보에 대응하는 코드를 기반으로 생성된 세부코드를 포함하되, 상기 좌표 선택 정보에 대응하는 코드를 기반으로 생성된 세부코드는 상기 좌표 선택 정보에 하위 정보로 포함된 상기 후보 선택 정보에 대응하는 코드에 따라 상이하게 생성되는 것을 특징으로 하는, 가상투표코드 기반의 개표 서버장치.
PCT/KR2019/009732 2018-08-09 2019-08-05 가상투표코드 기반의 투표 및 개표 방법 및 시스템 WO2020032504A1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR20180093349 2018-08-09
KR10-2018-0093349 2018-08-09
KR1020190062104A KR102137953B1 (ko) 2018-08-09 2019-05-27 가상투표코드 기반의 투표 및 개표 방법 및 시스템
KR10-2019-0062104 2019-05-27

Publications (1)

Publication Number Publication Date
WO2020032504A1 true WO2020032504A1 (ko) 2020-02-13

Family

ID=69414867

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2019/009732 WO2020032504A1 (ko) 2018-08-09 2019-08-05 가상투표코드 기반의 투표 및 개표 방법 및 시스템

Country Status (1)

Country Link
WO (1) WO2020032504A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114530011A (zh) * 2022-02-22 2022-05-24 重庆新华龙掌媒文化传播有限公司 一种基于用户特征信息的防刷票方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013235549A (ja) * 2012-05-10 2013-11-21 Mineko Uchida 電子投票システム
KR101378285B1 (ko) * 2014-01-21 2014-03-25 신철우 전자 투표 시스템 및 방법
US20170178438A1 (en) * 2015-01-21 2017-06-22 Cesar Ramón Juan CORREA PARKER Method and System of Electronic Voting Implemented in a Portable Device
KR101837169B1 (ko) * 2016-12-29 2018-03-09 주식회사 코인플러그 영지식 증명 알고리즘을 사용하여 머클 트리 구조의 블록체인 기반 비밀 전자 투표 서비스를 제공하기 위한 방법, 및 이를 이용한 투표 코인 발행 서버, 투표 토큰 분배 서버 및 투표 지원 서버

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013235549A (ja) * 2012-05-10 2013-11-21 Mineko Uchida 電子投票システム
KR101378285B1 (ko) * 2014-01-21 2014-03-25 신철우 전자 투표 시스템 및 방법
US20170178438A1 (en) * 2015-01-21 2017-06-22 Cesar Ramón Juan CORREA PARKER Method and System of Electronic Voting Implemented in a Portable Device
KR101837169B1 (ko) * 2016-12-29 2018-03-09 주식회사 코인플러그 영지식 증명 알고리즘을 사용하여 머클 트리 구조의 블록체인 기반 비밀 전자 투표 서비스를 제공하기 위한 방법, 및 이를 이용한 투표 코인 발행 서버, 투표 토큰 분배 서버 및 투표 지원 서버

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
29 September 2017 (2017-09-29), Retrieved from the Internet <URL:https://www.nec.go.kr/bos/cmm/fms/FileDown> [retrieved on 20191017] *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114530011A (zh) * 2022-02-22 2022-05-24 重庆新华龙掌媒文化传播有限公司 一种基于用户特征信息的防刷票方法
CN114530011B (zh) * 2022-02-22 2023-09-01 重庆华龙数智科技有限公司 一种基于用户特征信息的防刷票方法

Similar Documents

Publication Publication Date Title
KR20200018224A (ko) 가상투표코드 기반의 투표 및 개표 방법 및 시스템
WO2021002692A1 (en) Method for providing virtual asset service based on decentralized identifier and virtual asset service providing server using them
WO2018194368A1 (en) Method and apparatus for access control in distributed blockchain-based internet of things (iot) network
WO2017003051A1 (ko) 랜덤하면서 유일한 코드를 생성하는 전자 장치 및 방법
WO2017119548A1 (ko) 보안성이 강화된 사용자 인증방법
WO2015111856A1 (ko) 전자 투표 시스템 및 방법
WO2013137503A1 (ko) 자연언어처리를 이용하는 잠금 해제 수행 방법 및 그 단말기
WO2019143022A1 (ko) 음성 명령을 이용한 사용자 인증 방법 및 전자 장치
WO2014084498A2 (ko) 웹사이트와 어플에서의 회원 간 만남주선 시스템
WO2022102930A1 (ko) 브라우저 기반 보안 pin 인증을 이용한 did 시스템 및 그것의 제어방법
WO2020189926A1 (ko) 블록체인 네트워크를 이용하여 사용자의 아이덴티티를 관리하는 방법 및 서버, 그리고, 블록체인 네트워크 기반의 사용자 아이덴티티를 이용하여 사용자를 인증하는 방법 및 단말
WO2019039865A1 (ko) 인증 단말, 인증 장치 및 이들을 이용한 인증 방법 및 시스템
WO2018169159A1 (ko) 가변적 생체정보 기반의 인증 시스템 및 이를 이용한 인증 방법
WO2019031627A1 (ko) 가상코드제공시스템, 가상코드생성장치, 가상코드검증장치, 가상코드제공방법 및 가상코드제공프로그램
WO2021071116A1 (ko) 브라우저의 웹스토리지를 이용한 간편인증 방법 및 시스템
WO2020206899A1 (zh) 基于时间戳的身份验证方法、装置、设备及存储介质
WO2020032504A1 (ko) 가상투표코드 기반의 투표 및 개표 방법 및 시스템
WO2018070576A1 (ko) 복합 생체 정보를 이용한 사용자 인증 방법 및 그 장치
WO2019125081A1 (ko) 블록체인을 이용한 일회성 접근 권한 부여 시스템
WO2014133256A1 (ko) 미러월드 기반 체감형 디지털 보드 게임 서비스 제공 방법 및 장치
WO2018169160A1 (ko) 가변적 생체정보 기반의 복합 인증 시스템 및 이를 이용한 복합 인증 방법
WO2018199576A1 (en) Method and apparatus for performing authentication based on biometric information
WO2021049681A1 (ko) 클라우드 서버를 기초로 인증을 수행하는 전자 장치 및 그 제어 방법
WO2015026083A1 (ko) 휴대폰 본인인증 도용방지와 스미싱 방지를 위한 문자메시지 보안시스템 및 방법
WO2020032344A1 (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: 19846946

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205 DATED 28/05/2021)

122 Ep: pct application non-entry in european phase

Ref document number: 19846946

Country of ref document: EP

Kind code of ref document: A1