WO2016207542A1 - Electronic voting machine and infrastructure comprising such a machine - Google Patents

Electronic voting machine and infrastructure comprising such a machine Download PDF

Info

Publication number
WO2016207542A1
WO2016207542A1 PCT/FR2016/051523 FR2016051523W WO2016207542A1 WO 2016207542 A1 WO2016207542 A1 WO 2016207542A1 FR 2016051523 W FR2016051523 W FR 2016051523W WO 2016207542 A1 WO2016207542 A1 WO 2016207542A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
identifier
list
function
identifiers
Prior art date
Application number
PCT/FR2016/051523
Other languages
French (fr)
Inventor
Damien REIMERT
Stéphane FRENOT
Stéphane GRUMBACH
Simon MEYFFRET
Original Assignee
Inria Institut National De Recherche En Informatique Et En Automatique
Institut National Des Sciences Appliquees Lyon
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
Application filed by Inria Institut National De Recherche En Informatique Et En Automatique, Institut National Des Sciences Appliquees Lyon filed Critical Inria Institut National De Recherche En Informatique Et En Automatique
Publication of WO2016207542A1 publication Critical patent/WO2016207542A1/en

Links

Classifications

    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07CTIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
    • G07C13/00Voting apparatus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/46Secure multiparty computation, e.g. millionaire problem
    • H04L2209/463Electronic voting

Definitions

  • Electronic voting machine and infrastructure comprising such a machine
  • the invention relates to an electronic voting machine.
  • a vote we mean here any expression of a wish.
  • a vote may relate to a broad election or poll. Voting can be the selection of one of a set of possible elements, or a freely expressed element.
  • voting systems where the voters communicate with a machine that acts like a server to vote.
  • the voting server may take the form of a web application, executed on a web server, to which the voters access via a browser.
  • Such systems are widely used today.
  • the invention aims to improve the situation.
  • the proposed electronic voting machine comprises memory for storing a row of identifiers, and at least one pending data table with a pointer to an identifier of the row of identifiers, a communication interface, a central unit computer capable of interacting with the memory and the communication interface to execute a first function capable of processing a message by verifying a first condition relating to a comparison of a content of said message with the identifiers of the list of identifiers respectively, and, where appropriate, by completing the waiting table with message data relating to a vote and a second function capable of processing a message by verifying a second condition relating to a comparison of the content of said message to the identifiers of the list row of identifiers, and, if necessary, by constructing a message with the identifier of the list to which point e the pending table and at least some of the pending table data.
  • the machine further comprises a controller arranged to send a request to peer electronic voting machines, the query on the identifier to which the waiting array points and call the first function with each response message, call the second function whenever a request is received from a peer electronic voting machine, and conditionally changing the pointer of the waiting data table to an identifier of the higher ranked row list according to the data of the waiting table.
  • the proposed machine ensures both a vote preserving the anonymity of the source and a vote count.
  • the counting is inexpensive in machine resources, even in the case of a poll involving a large number of homologous machines. Stripping converges rapidly, with little exchange of messages between peer machines compared to conventional methods. The counting remains anonymous.
  • FIG. 1 represents a functional diagram illustrating an electronic voting infrastructure in a first operating state
  • FIG. 2 represents a functional diagram illustrating the infrastructure of FIG. 1 in a second operating state
  • FIGS. 3 to 6 show functional diagrams respectively illustrating a controller, a configurator, a manager and a voting module for an electronic voting infrastructure
  • FIG. 7 represents a flowchart illustrating the operation of an electronic voting infrastructure
  • FIG. 8 represents a flowchart illustrating the setting up of an electronic ballot
  • FIG. 9 represents a flowchart illustrating the operation of an electronic voting infrastructure controller in a polling establishment phase
  • FIG. 10 represents a flowchart illustrating the operation of an electronic voting infrastructure configurator in a polling establishment phase
  • FIG. 11 represents a flowchart illustrating the operation of an electronic voting infrastructure manager in a polling establishment phase
  • FIG. 12 represents a flowchart illustrating the operation of a voting machine of an electronic voting infrastructure in a voting phase
  • FIGS. 13 and 14 represent flowcharts illustrating the operation of a voting machine of an electronic voting infrastructure in a stripping phase;
  • FIG. 15 represents a block diagram of an encapsulation function for a voting machine of an electronic voting infrastructure;
  • FIG. 16 is a block diagram of a verification function for a voting machine of an electronic voting infrastructure.
  • Figure 1 shows an electronic voting infrastructure 1 in a first operating state. This first operating state corresponds to a phase of establishment of the electronic voting infrastructure.
  • Infrastructure 1 is organized on a computer network infrastructure.
  • the computer network comprises machines equipped with hardware and software that enable the machines of the infrastructure 1 to communicate with each other. These communications take place according to one or more lower level network protocols.
  • the machines of the infrastructure 1 communicate with each other according to a higher level protocol which allows data exchanges between the machines of the infrastructure 1.
  • the infrastructure 1 comprises at least one machine forming a controller 10.
  • the controller 10 of the infrastructure 1 organizes e-voting processes.
  • the controller 10 initiates the electronic voting processes.
  • the controller 10 defines the electronic voting processes and launches them.
  • the definition of an electronic voting process includes in particular the establishment of a list of identifiers corresponding to machines of the network infrastructure authorized to participate in the vote, and data relating to the subject of the voting process.
  • any machine in the network infrastructure can function as a controller 10.
  • the infrastructure 1 further comprises at least one machine forming a configurator 20.
  • the configurator 20 is more particularly active in the configuration of a topology for the infrastructure 1.
  • the configurator 20 provides each machine of the infrastructure 1 the data necessary for the exchange of data relating to the voting process.
  • the infrastructure 1 further comprises at least one machine forming a manager 30.
  • the manager 30 supports the organization of the voting machines between them and the distribution of encryption data. This is in particular to ensure a coherence and distribution of encryption keys corresponding to a tree structure. As a variant, this task can be performed by another machine of the infrastructure, in particular the configurator 20.
  • the controller 10, the configurator 20 and the manager 30 together form a functional unit that can be viewed as a server in the electronic voting infrastructure 1.
  • the controller 10, the configurator 20 and the manager 30 correspond to equipment, typically computer central units, physically distinct from each other. This avoids the same equipment concentrating all information relating to infrastructure 1, voting processes and voting machines. This improves security and privacy.
  • the controller 10, the configurator 20 and the manager 30 may correspond to the same equipment.
  • the infrastructure 1 further comprises a plurality of voting machines, for example a first voting machine 42, a second voting machine 44 and an umpteenth voting machine 46.
  • a plurality of voting machines for example a first voting machine 42, a second voting machine 44 and an umpteenth voting machine 46.
  • the voting machines of infrastructure 1 form a group 40 of voting machines.
  • Group 40 machines are able to communicate with each other.
  • the infrastructure 1 comprises at least one linking server machine, or a tracker 50.
  • the tracker 50 maintains machine addresses of the voting infrastructure, in particular their address in the network infrastructure, for example an internet protocol address, or "IP" address.
  • IP internet protocol address
  • the manager 30 and the configurator 20 are preferably trusted third parties.
  • the voting infrastructure machines can be connected to a network time server for synchronization.
  • Figure 2 shows the electronic voting infrastructure 1 in a second operating state. This second operating state corresponds to a vote and counting phase.
  • the controller 10, the configurator 20 and the manager 30 are absent from the voting infrastructure 1. They are inactive during the vote and counting phase. Preferably, the machines corresponding to the controller 10, the configurator 20 and / or the manager 30 are off, or at least unavailable within the network infrastructure.
  • the infrastructure 1 comprises the voting machines and the tracker 50.
  • the controller 10 Since the controller 10, the configurator 20 and the manager 30 are not able to listen to the data exchanges through the voting infrastructure 1, they can be considered as trusted authorities.
  • FIG. 3 shows a controller module 100 used for example for the controller 10 of the infrastructure 1 of FIG. 1.
  • the controller module 100 includes a main controller 110 and a data storage structure 120.
  • the controller 110 is capable of reading, writing, and processing data in the storage structure 120.
  • the storage structure 120 at least temporarily maintains a set of polling data, including voter identification and voting identification data.
  • the storage structure 120 may be organized in the random access memory of a computer, or any other volatile memory device. In this case, the current polling data is cleared when the module is powered off. This power down can be programmed to intervene at the end of the phase of establishing the voting infrastructure. This avoids, in particular, a list of voting identifiers being hacked.
  • the controller module 100 further comprises at least a first communication interface 140 that can be controlled by the controller 110 to communicate with the machines of a network infrastructure, for example the machines of the infrastructure 1 of FIG. 1.
  • the controller module 100 further comprises a user interface 130 that interacts with the main controller 110.
  • the user interface 130 may be of graphic type.
  • the controller module 100 may be implemented in the form of a software controller of the type known as the "Node.js server" executed by a central computer unit.
  • the storage structure 120 may be organized in the random access memory of the computer in question.
  • FIG. 4 shows a configurator module 200 used for example as a configurator 20 of the infrastructure 1 of FIG. 1.
  • the configurator module 200 comprises a main controller 210 and a storage structure 220 which stores the data relating to the configurator function.
  • the controller 210 can read, write and process the data in the storage structure 220.
  • the storage structure 220 is organized in volatile memory. This improves the security of the ballot.
  • the configurator module 200 further comprises a communication interface 230 which can be controlled by the main controller 210 to transmit and receive data through an electronic voting infrastructure, for example the infrastructure 1 of FIG. 1.
  • the configurator module 200 may take the form of a server of type Node.js that runs on a central computer unit.
  • the storage structure 220 may be organized in the random access memory of the computer in question.
  • FIG. 5 shows a management module 300 that can be used as a manager of an electronic voting infrastructure, for example the manager of the infrastructure 1 of FIG. 1.
  • the management module 300 comprises a main controller 310 and a data storage structure 320 with which the controller can interact, in particular for read, write and process data.
  • the storage structure 320 is preferably organized in volatile memory.
  • the management module 300 further comprises a communication interface 330 which can be controlled by the controller 310 for exchanging data through an electronic voting infrastructure, for example the infrastructure 1 of FIG. 1.
  • the management module 300 can be implemented in the form of a server Node.js which runs on a central computer unit.
  • the storage structure 320 can be organized in the RAM of this CPU.
  • FIG. 6 shows an electronic voting module 400 used for example as a voting machine of an electronic voting infrastructure, for example any machine of the group 40 of FIG. 1.
  • the voting module 400 includes a controller 410 and a data storage structure 420 with which the main controller 410 can interact to read, write and store data.
  • Voter module 400 further includes a user interface 430 that interacts with the main controller 410.
  • the user interface 430 may be of graphic type.
  • the voting module 400 further comprises a communication interface 440 which can be controlled by the main controller 410 to exchange data through an electronic voting infrastructure, in particular, the infrastructure 1 of Figure 1.
  • the voting module 400 can be made in the form of a javascript application, for example using a type function library known as "angular.js" executed on a central computer unit in an internet browser.
  • the storage structure 420 may be organized in the storage memory of this central unit.
  • the controller modules 100, configurator 200, manager 300 and vote manager 400 preferably run on machines separate from the network infrastructure, such as this has been described in connection with FIG. 1. Sensitive data is distributed. It reduces the risk that an attack on one of these machines will disclose all data from the voting process. As a variant, at least some of these modules run on the same machine of the network infrastructure. In particular, the same machine can function as controller, manager, configurator and / or voting machine. This is facilitated by the fact that the controller, the manager and the configurator do not need to be active once the ballot is launched.
  • Figure 7 illustrates different operational modes of a voting infrastructure, in particular infrastructure 1 of Figure 1.
  • a first operational mode represented by block 5
  • at least some of the software and hardware elements of a network infrastructure cooperate to organize an electronic voting ballot.
  • This operation mainly concerns one or more machines of the infrastructure that will act in the manner of an infrastructure server, for example the assembly formed of the controller 10, the configurator 20 and the manager 30 of FIG. an initial communication between the infrastructure server and equipment intended to operate as electronic voting machines, for example the machines of group 40 of FIG.
  • each voting machine receives the expression of a vote.
  • operation 7 is what is commonly referred to as a poll or poll.
  • the vote is purely local.
  • the infrastructure server is idle.
  • the infrastructure corresponds to the infrastructure of Figure 2.
  • a third operational mode illustrated by block 9 the polling data are collected.
  • This operational mode mainly concerns the voting machines themselves, where appropriate linked to one another by means of an additional machine, for example the tracker 50 of FIG. corresponds to what is called a recount in a conventional ballot.
  • the infrastructure corresponds to the infrastructure of Figure 2.
  • Figure 8 details the organization of an electronic ballot, for example in the infrastructure 1 of Figure 1.
  • Polling configuration data is first set up, which corresponds to block 52.
  • the configuration data includes data on the subject of the vote and voter data, in particular their identification in the voting infrastructure. electronic voting. In particular, it involves establishing a list of voting identifiers such that each voter can be associated anonymously with a vote identifier.
  • the voting machines correspond to the leaves of an n-ary tree. Between each leaf of the tree and the root of the tree are identified nodes that connect different branches of the tree.
  • FIG. 9 illustrates a principal function for the controller of an electronic voting infrastructure, for example the controller 10 of FIG. 1, in a mode of operation corresponding to the setting up of a poll.
  • the function starts in a step 900.
  • the function receives a string SntcStrg corresponding to the subject of the vote expressed in natural language.
  • the SntcStrg chain may be entered by the user of an infrastructure controller, where appropriate through a user interface, for example the interface 130 of FIG. 3, or a request of the REST type.
  • the SntcStrg string can be a question, for example.
  • the function starts a loop structure by initializing a counter k to zero.
  • step 906 the function receives a Chce character string which corresponds to the expression, in natural language, of a possible answer to the question of step 902.
  • the function creates an indexed array Answrs [..] in which it stores the Chce string of step 906 as an index element k.
  • step 910 the function increments the counter k, then returns to step 906.
  • the steps 906 to 910 are repeated as long as the function receives character strings corresponding to possible answers to the question that makes the subject of the vote.
  • Steps 904 to 910 correspond to the entry of a set of possible answers to the question entered in step 902.
  • Steps 904 to 910 are optional: the vote may admit free answers to the question of step 902 .
  • the function starts a second loop structure by initializing a counter j to zero.
  • the function receives a voter identifier VtrPubld, for example in the form of a string of characters.
  • the identifier VtrPubld corresponds to a public identification data of the voter: it is under this identifier that the voter is known to the poll organizer.
  • This identifier corresponds for example to an identity document reference, an email address, a social network identifier, for example of the type known as Facebook, or even a pseudonym chosen for the poll.
  • the function also receives a VtrPubAdd address with the voter identifier VtrPubld.
  • the VtrPubAdd address allows the sending of messages for the voter.
  • the address VtrPubAdd comprises, for example, a voting machine address, for example the address in the network infrastructure of one of the first voting machine 42, the second voting machine 44 and the nth voting machine 46. , or an email address.
  • the address VtrPubAdd is optional insofar as the voter identifier VtrPubld can be put in relation with an address that can be used for sending message, for example when the VtrPubld identifier itself corresponds to an e-mail address.
  • the function stores the received VtrPubld identifier in a VtrPub [..] array as an index element j.
  • step 918 the function increments the counter j and then returns to step 914 as long as voter IDs are received, until a time period expires or a quota is reached. voting, or until an end of list is received.
  • the function receives polling parameters, especially at its beginning and end. These are for example parameters defining a time period of validity of the vote. These time parameters here include a poll start date StrtDat and a poll end date EdDat.
  • Steps 900 to 922 correspond to the receipt of data relating to the definition of a poll.
  • This definition includes a declaration of vote, in the form of the chain SntcStrg, a list of possible answers to this declaration, here gathered in the table Answrs ["], a list of persons authorized to participate in the vote, here gathered in the table VtrPub [..], and a ballot validity period, here in the form of a start StrtDat date and an end EdDat date.
  • the application described here corresponds to a classic election.
  • the manner of defining the poll may vary, particularly with respect to the data of steps 902 to 910.
  • FIG. 10 illustrates a main function for the configurator of an electronic voting infrastructure, for example the controller 20 of FIG. 1, in an operating mode corresponding to an implementation of this infrastructure. The function starts in a step 1000.
  • the function receives a list of vote identifiers VtPvtld, for example gathered in a table VtrPvt [..].
  • the cardinal of the list of voting identifiers corresponds to that of the list of voter IDs.
  • Each voter identifier VtrPubld corresponds to a vote identifier VtPvtld.
  • the VtPvtld identifiers identify the votes and not the voters.
  • each vote identifier VtPvtld results from an anonymization function called with a voter identifier.
  • this function can be implemented in the infrastructure controller, for example the controller 10 of FIG. 1.
  • each vote identifier VtPvtld results from a hash function, for example of type MD5, called on the result of the concatenation of a voter identifier VtrPubld and a respective private key, for example generated for the occasion.
  • a hash function for example of type MD5
  • the function can also receive, in step 1002, a poll identifier.
  • the list of vote identifiers VtPvtld may be transmitted in a message, typically addressed by the infrastructure controller, for example the controller 10 of FIG. 1, to the infrastructure manager, for example the manager 20 of FIG. 1.
  • the controller and the infrastructure manager are identified here by their respective CtrlrAdd or CfgtrAdd addresses in the network infrastructure.
  • the function In the next step 1004, the function generates a tree structure whose number of sheets corresponds to the cardinal of the list of voter IDs. In other words, the tree structure has as many sheets as the ballot contains voters.
  • the function generates a list of node identifiers, noted generically NodIdx_i.
  • This tree structure can be stored as a KTRE [..] list of tables, in which each table relates a node identifier NodIdx_i and a list of child nodes each identified by their index number in the table. .
  • the tree structure of step 1004 is similar to that of a B + tree. Whenever possible, each child node is a tree leading to as many leaves as other child nodes.
  • the tree includes a number ChldNbr of children and a number HghtNbr of levels, or height.
  • the numbers ChldNbr of children and HgtNbr of levels are such that the number VtrNbr of the identifiers of voters:
  • the nodes are indexed.
  • the root is the node whose index value is zero.
  • Each node may be associated with a Nodldx index value, and its child nodes may each be associated with a respective index value of the Nodldx form.
  • Idx where Idx is an integer less than or equal to the number ChldNbr minus one denoting a child node.
  • each leaf of the tree can be associated with an index value Lfldx of the form i_l.i_2..i_HgtNbr, where each element i corresponds to an integer.
  • Each leaf of the tree can be associated with a natural integer LfNbr corresponding to the translation of the index value Lfldx, for example by virtue of the following function:
  • each natural integer corresponding to a vote identifier may be uniquely associated with an index value designating a leaf in the tree structure.
  • care is taken to maintain the equilibrium of the tree by assigning to the lower-level nodes the same number of leaves of the tree with k-1 leaves where the number k corresponds to the normal number of threads. 'a knot.
  • One of the nodes of the tree can be found with 2k-1 leaves.
  • the number k is set at creation. The larger the number k, the less distinguishable the votes. The larger the number k, the longer the counting time may be.
  • the number k is greater than or equal to 3.
  • the following formula indicates a relationship between parameters of the tree structure:
  • HgtNbr SUP (log A k (cardinal (VtPvtId))) This formula indicates that the number HgtNbr of levels of the tree structure corresponds to the whole function by higher values of the logarithm of the number k that multiplies the number of identifiers of vote .
  • the function starts a loop structure by initializing a counter k to zero.
  • the function associates a branch of the tree structure with each voter identifier value VtPvtld.
  • the branch of the tree structure is designated by the index value of the parent node of that sheet.
  • the function creates an array VBB [..] with, as index element k, an array of two elements corresponding respectively to:
  • a vote identifier here generically the identifier VtPvtId_k for the index identifier k in the array;
  • NodIdx_i node identifiers a row list of NodIdx_i node identifiers, the nodes of the list connecting a leaf of the tree to the root of the tree.
  • a NodIdx_i identifier is related to an integer value NodChldNbr_i which corresponds to the number of child nodes of the considered node.
  • each NodIdx_i identifier is associated with a respective encryption key value NodKy_i.
  • each Nodldx node identifier may be associated with a value indicating the level of the node in the tree structure.
  • the function increments the counter k.
  • the function verifies that the counter k has reached its final value, which corresponds to the cardinal of the list VtPvt [..] of the vote identifiers VtPvtld.
  • step 1014 If so, then the function proceeds to the next step 1014. Otherwise, the function returns to step 1008.
  • step 1014 the function transmits a result list which corresponds to the VBB [..] table.
  • the data in the VBB table is included in a message sent by the configurator to the infrastructure controller.
  • the function stops at the next step 1016.
  • the controller of the electronic voting infrastructure receives from the configurator a list corresponding to the VBB list of vote identifiers, in which each vote identifier is associated with a row list of node identifiers.
  • the controller transmits to the associated address of each voter identifier a message comprising the vote identifier value VtPvtld and the row list of node identifiers, if appropriate accompanied by the NodKy key values and / or number values. of children NodChildNbr. This data is retrieved on the VTR voting machines.
  • the key values are not generated by the infrastructure configurator.
  • Each voting machine sends the row list of nodes to the manager 30 which in return sends a list of private keys NodKy each corresponding to a node of the list.
  • the data transmitted by the controller includes an address of the manager 30 in the network of the infrastructure.
  • FIG. 11 illustrates an example of a main function for a voting infrastructure manager, for example the manager 30 of FIG. 1, in a mode of operation corresponding to the setting up of a poll.
  • the function starts in a step 1100.
  • the function receives a row list Brch [..] of node identifiers.
  • the row list Brch [..] is received in a message sent from a voting machine of the infrastructure to the infrastructure manager.
  • the Brch [..] list corresponds to the list of node identifiers received on the voting machine in question.
  • step 1004 the function generates a private key value for each node identifier value of the list.
  • the private key corresponds to an asymmetric encryption algorithm for use in the voting infrastructure.
  • the key values are generically noted NodKy_i.
  • step 1006 the function constructs a message to the polling machine designated by the VtrAdd address as received at step 1002.
  • the message comprises a list NodPvtKy [..] of private key values, each corresponding to a node identifier of the list Brch ["], and a list Trckrs [..] of addresses of connection servers, of the type for example tracker 50 of Figures 1 and 2.
  • Each machine in the group of voting machines receives an initial message including an encryption key specific to this voting machine.
  • This message is received via another medium of communication such as a postal mail.
  • the value of this key is noted generically PrsnKy_i for the voting machine i.
  • the initial message further comprises a list of linking servers, for example designated by their respective addresses TrckrAdd.
  • the initial message is sent to each machine of the group of administration machines by an infrastructure manager, for example the manager 30 of FIG. 1.
  • the sending of the initial message is preferably controlled by a controller of the user. infrastructure, for example the controller 10 of Figure 1.
  • the first message and the second message are sent separately, on command of an infrastructure controller, for example the controller 10 of FIG.
  • a voting machine Once a voting machine has received the initial message, it is able to participate in the ballot. It can operate according to the second operational mode of the infrastructure.
  • FIG. 12 illustrates a principal function for a voting machine of an electronic voting infrastructure, for example one of the machines VTR_1, VTR_2 and VTR_3 of FIG. 2, according to an operational mode corresponding to the conduct of a poll.
  • the machine has a vote identifier value VtPvtld, a row list of node identifiers Brch ["], and, for each node identifier Nodld of this list, an integer value NodChldNbr corresponding to a node cardinal and a NodKy encryption key value.
  • the function starts with a step 1200.
  • the function receives a PllMat data set necessary for the conduct of the poll.
  • These data can, as a whole, be seen as voting material.
  • this data is received through a message from a source of the infrastructure.
  • the address of the source in question is made available to the voting machine by one or more linking servers, for example the tracker 50 of FIGS. 1 and 2.
  • the data in question can be received in encrypted form by the controller 10.
  • the message may also come from a configurator of the voting infrastructure.
  • the destination address of this message may differ from the known address of the trackers of the voting infrastructure. For example, the trackers know the internet protocol addresses of the voting machines and the message in question is sent to an email address in connection with the voter ID.
  • the function decrypts the voting material PllMat using an encryption key PrsnKy_i of the machine i. This key can be transmitted by another medium such as a postal mail.
  • the function controls a return of the question and the possible answers.
  • the function receives the expression of a Chce vote, for example in the form of a choice or, if necessary, of a free answer.
  • the function creates a result table Tlly [..] to store the result of the vote.
  • the dimension of the table Tlly [..] corresponds to the number of possible answers to the question asked.
  • the function stores the value 1 (one) as an element whose index corresponds to the choice of step 1106.
  • the function In the next step 1210, the function generates a SignVal signature value using the NodKy encryption key associated with the lowest-level Nodld node identifier in the Brch [..] list and the result of the vote. from the previous step, for example the result table Rslt [..].
  • step 1212 the function constructs a CrptBx object for encapsulating the voting results.
  • An object of type CrptBx can be seen as an electronic urn.
  • a CrptBx object includes, or relates to, a CrptBxId identifier value, vote result data, for example in the form of a CrptBxTlly list ["], and a CrptBxSgn signature value.
  • An object of CrptBx type can for example take the form of a triplet gathering these three elements.
  • step 1212 the function constructs a CrptBx type object with the voting result data from step 1208.
  • the CrptBxId identifier corresponds to the lowest-level Nodld node identifier in the Brch [. .] of the voting machine, typically the first identifier of this list.
  • the CrptBxTlly list [..] corresponds to the list Rslt [..].
  • the value CrptBxSgn corresponds to the SignVal signature value of step 1210.
  • the function also locally creates a pending data table CrtCrptBx [..] including a pointer value CrtCrptBxId to the lowest-level node identifier in the Brch [..] list of the voting machine, and the CrptBx object that has just been created.
  • the function ends in the next step 1214.
  • a vote in itself corresponds to a purely local process, which concerns an infrastructure voting machine.
  • a vote does not require any communication of the voting machine in question with the homologous machines of the voting infrastructure.
  • Each vote results locally in the creation of a CrptBx object and a table CrtCrptBx [..] containing this object, stored on the machine of the infrastructure where the vote took place.
  • Figure 13 illustrates a first function for any voting machine of an electronic voting infrastructure according to the third operational mode which corresponds to the counting of the votes.
  • the function starts in a step 1300.
  • the function constructs an interrogation message for at least one tracker of the voting infrastructure, for example the tracker 50 of FIG. 2.
  • the function receives in response a list VtrAdd [..] of homologous machines of the voting infrastructure, for example at least some of the machines of the group of machines 40 of FIG. 2.
  • the machines are identified by their address on the network infrastructure.
  • the VtrAdd [..] list may only correspond to a subset of the infrastructure's voting machines. For example, the machines in the VtrAdd list [..] are randomly selected from the addresses maintained in the tracker, or the tracker in question only maintains the addresses of some of the voting machines in the infrastructure.
  • the function constructs a request in the form of a message here comprising a NodIdQry value corresponding to a node identifier.
  • This NodIdQry value corresponds to an element of the Brch [..] list. This value is the lowest-level element unknown in the Brch [..] list. In one embodiment, this value corresponds to the value CrtCrptBxId.
  • the function issues a request to each of the addresses in the VtrAdd [..] list. Alternatively, the request could include several node identifiers of the Brch [..] list.
  • the function processes a response received in the form of a message sent from one of the addresses of the list VtrAdd [..].
  • the message contains an object of type CrptBx.
  • the identifier CrptBxId corresponds to one of the node identifiers of the Brch list [..] of the machine at the origin of the response.
  • the CrptBxId identifier may correspond to:
  • the CrptBx object does not necessarily contain the expected response, that is, an object corresponding to the NodldQry identifier.
  • the function checks the consistency of the data contained in the CrptBx object and, if necessary, processes this data by integrating the CrptBx object into the pending CrtCrptBx ["] array.
  • the function can call a verification subfunction.
  • Steps 1308 and 1310 are restarted each time a response containing a CrptBx object is received.
  • Step 1304 corresponding to the interrogation of a tracker is renewed, for example at regular time intervals. The function ends in the next step 1312.
  • Fig. 14 illustrates a second function for any voting machine according to the third operational mode. This second function processes the request type messages received by a voting machine and from a voting machine homologous to the electronic voting infrastructure.
  • the function starts in a step 1400.
  • the function receives a request in the form of a message sent by a voting machine homologous to the voting infrastructure.
  • the sending voting machine is identified by an address of this machine in the network infrastructure.
  • the received message comprises a NodIdQry node identifier.
  • step 1404 the function verifies that the identifier NodIdQry is in CrtCrptBx. Otherwise the function stops at step 1408.
  • the function sends a response message to the sending machine.
  • the function is arranged to respond randomly to the received message, in particular according to a response rate set as a parameter, for example 80%.
  • the function may further maintain a list of the issuing machines and / or NodIdQry IDs requested. This allows the function in particular to stop responding when the same machine and / or the same NodIdQry identifier are too often requested.
  • the response message includes at least one CrptBx object from the CrtCrptBx array [..] waiting on the voting machine.
  • the function addresses a single CrptBx object. This further improves the confidentiality of the counting.
  • the function could return all the CrptBx objects available in the CrtCrptBx [..] table.
  • the object CrptBx in response can correspond to the identifier NodIdQry or to a upper identifier in the Brch [..] list.
  • This CrptBx object does not necessarily contain the expected response of the machine that is causing the request message.
  • the function can address part of the table CrtCrptBx [..] which corresponds to a superset of what is requested, namely the identifier NodIdQry, possibly without the data corresponding to the identifier NodIdQry.
  • the content of the response may depend on the result of a random draw implemented by the function, in particular when the machine has several CrptBx objects corresponding to the NodIdQry identifier.
  • the voting machine can perform an update function on the pending CrtCrptBx [..] table and the CrptBx objects it contains.
  • This function checks whether the number of different signatures contained in the CrptBx objects of the waiting table CrtCrptBx [..] corresponds to the cardinal value associated with the node identifier of the Brch list [..] to which the CrtCrptBxId value points. . If so, then the update function changes the value of CrptCrpBxId so that it points to the just higher rank node ID in the Brch [..] list of the voting machine.
  • the function creates a new object of type CrptBx from the CrptBx objects of the pending array. Old CrptBx objects are replaced by the new one.
  • the function uses an aggregate function that updates the CrptBxTlly [..] list of the new object from the voting results of the old CprtBx objects corresponding to a lower-ranked node in the Brch [..] list. the voting machine.
  • Figure 15 illustrates a function Bld () 1500 as an example of CrptBx object aggregation function.
  • the Bld () 1500 function receives several CrptBx objects as input.
  • the CrptBxId identifier of these objects corresponds to the identifier of the same node of the Brch list [..] of the voting machine.
  • the Bld () function 1500 includes a concatenation subfunction Cnct () 1502 that is called with the CrptBxSgn signature values of the CrptBx objects.
  • the function Cnct () 1502 outputs an HshVal, or hash, fingerprint value resulting from the concatenation of these signature values.
  • the function Bld () 1500 includes a query subfunction Prt () 1504.
  • the function Prt () 1504 is called with the value CrptBxId which corresponds to a node identifier in the Brch list [..] of the machine. vote.
  • the function Prt () outputs a CrtNodld node identifier value which corresponds to the node of rank just above in the Brch list [..] at the node identified by the value CrptBxId.
  • the Prt () function returns the identifier of the node that follows the node identified by the CrptBxId value in the Brch [..] row list.
  • the function Bld () 1500 also includes an aggregation subfunction Mrg () 1506.
  • the Mrg () function 1506 is called with the voting results contained in the CrptBx objects received as input, in particular their CrptBxTlly lists [.. ].
  • the function Mrg () 1506 establishes consolidated data from these lists CrptBxTlly [..] that it stores for example in a new list CrtTlly [..]. Consolidation may depend on the nature of the vote. In a simple embodiment, the consolidation consists in counting the voices expressed for each of the possible choices. In this case, the Mrg () function adds the result vectors.
  • the Bld () function 1500 includes a hash function Hsh () 1508, or footprint.
  • the function Hsh () 1508 is called with the value HshVal delivered by the function Cnct () 1502, the value CrtNodld delivered by the function Prt () 1504 and the list CrtTlly [..] delivered by the function Mrg () 1506.
  • the function Hsh () 1508 outputs a second HshVal2 fingerprint value resulting from the application of a hash function on the input data.
  • the Bld () function 1500 also includes a Crpt () 1510 encryption function.
  • the Crpt () function 1510 performs encryption from input values.
  • the function Crpt () 1510 receives the value HshVal resulting from the function Cnct () 1502, the node identifier corresponding to the identifiers CrptBxId and the value HshVal2 resulting from the function Hsh () 1508.
  • the function Crpt () 1510 uses as key the value associated with the node identifier corresponding to the value CrtNodld in the list Brch.
  • the Bld () function 1500 includes a Bxg () 1512 encapsulation function.
  • the Bxg () function 1512 creates an object of the CrptBx type from the data it receives.
  • the function Bxg () 1512 assigns to the new object CrptBx: the result of the function Crpt () 1510 as a signature CrptBxSgn, the value of the identifier CrtNodld as a value CrptBxId and the list CrtTlly [..] as result data CprtBxTllyl ..].
  • FIG. 16 illustrates a function Vrf () for checking an object of the CrptBx type.
  • the Vrf () function comprises a Nbxg 1602 desencapsulation subfunction, which receives as input an object of the CrptBx type. It outputs the data contained in the CrptBx object, in particular a CrptBxId identifier value, a CrptBxTlly list [.] Of voting results, a CrptBxSgn signature value.
  • the function Vrf () further comprises a decryption sub-function Dcph 1604.
  • the subfunction Dcph is called with the value CrptBxSgn resulting from the call of the function Nbxg 1602, and an associated key value, in the machine. vote, with the identifier corresponding to the CrptBxId identifier value.
  • Dcph 1604 provides a first HshVal signature value which should correspond to the concatenation of the signature values of the aggregated CrptBx objects in the verified CrptBx object, a second HshVal2 signature value which should correspond to the second HshVal2 imprint value described in connection with Fig. 15 and an IdVal identifier value which should correspond to a node identifier of the Brch list [..].
  • the Vrf () function also includes an Hsh () 1606 footprint subfeature that produces an HshVaB footprint value from input values.
  • the function Hsh () 1606 is called with the credential value CrptBxId, the vote result data CrptBxTlly [..] and the first HshVall imprint value resulting from the function Nbxg 1602. This results in a third value HshVaB fingerprint by hashing.
  • the function Vrf () comprises a comparison subfunction Cmpr () 1608.
  • the function Cmpr () 1608 is called with the value HshVaB resulting from the call of the function Hsh () 1606 and the second impression value HshVal2 resulting the call to the Dcph () function.
  • the function Cmpr () 1608 delivers a Boolean value that corresponds to a comparison of these values.
  • the function Vrf () comprises a first search sub-function Srchl () 1610.
  • the function Srchl () 1610 is called with the identifier value IdVal resulting from the call of the function Dcph () 1604 and the list Brch [ "] Respective node identifiers of the voting machine.
  • the Srchl () function 1610 returns a Boolean value that corresponds to the presence or absence of the IdVal identifier value in the Brch [..] list.
  • the Vrf () function includes a second Srch2 () search subfunction 1612.
  • the Srch2 () function is called with the HshVall fingerprint value resulting from the call to the Dcph () 1604 function and a fingerprint value CrrtHshVal corresponding to the concatenation of the signature values of CrptBx objects in the pending array.
  • the Srch2 () function returns a Boolean value that corresponds to the presence or absence of the fingerprint value of the level corresponding to IdVal in HshVall.
  • the function Srchl () 1610 is furthermore arranged here so that the Boolean value it returns corresponds to the result of calling the function Srch2 () according to a truth table corresponding to an AND gate.
  • the function Vrf () 1600 finally comprises a logic function ND () 1614 which delivers a Boolean value resulting from the comparison of input values according to a truth table corresponding to an AND function.
  • the ND () function 1614 is called with the Boolean value BoolVall resulting from the function Cmpr () 1608 and the Boolean value BoolVal2 resulting from the call of the function Srchl () 1610.
  • controller nor the configurator nor the infrastructure manager are active in the operational modes corresponding to the polling and counting.
  • the tree structure that organizes the counting is never materialized: a voting machine only has the identifiers corresponding to a branch of this tree.
  • the tracker maintains a list of addresses corresponding to the nodes that at one point participated in the voting mechanism.
  • the machines corresponding to the new incoming nodes can be shown to the tracker. The latter maintains an ordered list by date of arrival of the nodes.
  • the tracker returns a sub-list of addresses to contact. Then, if a machine does not find new votes to integrate, it can contact the tracker to get a new sub-list of addresses in order to be able to restart the search mechanism of the voting values.
  • the voting data are collected in a messy form that can not be related to the voting machines.
  • each voting machine tries to calculate partial results, each corresponding to a node of the tree structure, from the leaf to the root of this tree. To do this, a voting machine will look for voting data from peer machines that calculate partial results for possibly different (higher) nodes.
  • the balance of the tree structure decreases the ability to distinguish between the results corresponding to different branches of the tree.
  • Any machine in the network infrastructure can define and launch an e-voting process and not just the configurator.
  • the infrastructure can operate on the basis of different communication protocols of the internet protocol.
  • different protocols can be used for setting up the ballot and its counting.
  • a voting machine could answer queries with all the CrptBx objects it has, regardless of the rank of the sending machine.

Abstract

The invention relates to an electronic voting machine (42 - 44 - 46) that stores a ranked identifier list and a standby data table having a pointer to an identifier from the list. A central unit executes a first function, which processes a message by verifying a condition related to a comparison with the identifiers from the list and completing the standby table with data from the message that is related to a vote, and a second function, which processes a message by verifying a condition related to a comparison with the identifiers from the list and constructing a message containing both the identifier from the list to which the standby table points, and data from the standby table. A controller sends a request, related to the identifier to which the standby table points, to homologous machines and calls up the first function with each response message. Said controller calls up the second function each time a request is received from a homologous machine and conditionally changes the pointer, from the standby data table, to a higher-ranking identifier from the ranked list on the basis of the data from the standby table.

Description

Machine de vote électronique et infrastructure comportant une telle machine  Electronic voting machine and infrastructure comprising such a machine
L'invention concerne une machine de vote électronique. The invention relates to an electronic voting machine.
Par vote, on entend ici toute expression d'un vœu. Un vote peut concerner une élection au sens large ou un sondage. Le vote peut correspondre à la sélection d'un élément parmi un ensemble d'éléments possibles, ou à un élément librement exprimé. By vote, we mean here any expression of a wish. A vote may relate to a broad election or poll. Voting can be the selection of one of a set of possible elements, or a freely expressed element.
On connaît des systèmes de vote dit "en ligne", où les votants communiquent avec une machine qui agit à la manière d'un serveur pour voter. Par exemple, le serveur de vote peut prendre la forme d'une application web, exécutée sur un serveur web, à laquelle les votants accèdent par l'intermédiaire d'un navigateur. De tels systèmes sont largement utilisés aujourd'hui. So-called "online" voting systems are known, where the voters communicate with a machine that acts like a server to vote. For example, the voting server may take the form of a web application, executed on a web server, to which the voters access via a browser. Such systems are widely used today.
Les systèmes de vote en ligne, et plus généralement les systèmes de vote électronique fonctionnant selon une organisation centralisée, sont peu efficaces lorsqu'il s'agit de garantir le secret des votes. Dans des systèmes de vote centralisés en effet, une même machine concentre l'ensemble des données de vote, c'est-à-dire les vœux exprimés par les votants et des données d'identification de ces votants. Techniquement, il est très compliqué dans ce cas de faire en sorte que les votes des participants ne puissent absolument pas être retrouvés, c'est-à-dire d'établir une relation entre l'identifiant d'un utilisateur et une sous-partie au moins des résultats du vote. On a proposé depuis quelques années déjà des systèmes de vote électronique fonctionnant selon une organisation décentralisée. Pour assurer la confidentialité des données, la plupart de ces systèmes mettent en œuvre des procédés de chiffrement dits "homomorphiques". Ces procédés sont particulièrement coûteux en calculs. En pratique, ils sont réservés à des votes avec des participants peu nombreux, de l'ordre au plus de quelques dizaines. Online voting systems, and more generally electronic voting systems operating in a centralized organization, are not very effective in ensuring the secrecy of votes. In centralized voting systems, the same machine concentrates all the voting data, that is to say the wishes expressed by the voters and identification data of these voters. Technically, it is very complicated in this case to ensure that the votes of participants can absolutely not be found, that is to say, to establish a relationship between the identifier of a user and a sub-part at least the results of the vote. For some years now, electronic voting systems have been proposed operating in a decentralized organization. To ensure the confidentiality of data, most of these systems implement so-called "homomorphic" encryption methods. These methods are particularly expensive in calculations. In practice, they are reserved for votes with few participants, of the order of more than a few dozen.
L'invention vise à améliorer la situation. La machine de vote électronique proposée comprend de la mémoire pour stocker une liste rangée d'identifiants, et au moins un tableau de données en attente avec un pointeur vers un identifiant de la liste rangée d'identifiants, une interface de communication, une unité centrale d'ordinateur capable d'interaction avec la mémoire et l'interface de communication pour exécuter une première fonction capable de traiter un message en vérifiant une première condition portant sur une comparaison d'un contenu dudit message aux identifiants de la liste rangée d'identifiants respectivement, et, le cas échéant, en complétant le tableau en attente avec des données du message relatives à un vote et une seconde fonction capable de traiter un message en vérifiant une seconde condition portant sur une comparaison du contenu dudit message aux identifiants de la liste rangée d'identifiants, et, le cas échéant, en construisant un message avec l'identifiant de la liste vers lequel pointe le tableau en attente et certaines au moins des données du tableau en attente. La machine comprend en outre un contrôleur agencé pour émettre une requête à destination de machines de vote électronique homologues, la requête portant sur l'identifiant vers lequel pointe le tableau en attente et appeler la première fonction avec chaque message de réponse, appeler la seconde fonction à chaque fois qu'une requête est reçue d'une machine de vote électronique homologue, et modifier conditionnellement le pointeur du tableau de données en attente vers un identifiant de la liste rangée de rang supérieur en fonction des données du tableau en attente. The invention aims to improve the situation. The proposed electronic voting machine comprises memory for storing a row of identifiers, and at least one pending data table with a pointer to an identifier of the row of identifiers, a communication interface, a central unit computer capable of interacting with the memory and the communication interface to execute a first function capable of processing a message by verifying a first condition relating to a comparison of a content of said message with the identifiers of the list of identifiers respectively, and, where appropriate, by completing the waiting table with message data relating to a vote and a second function capable of processing a message by verifying a second condition relating to a comparison of the content of said message to the identifiers of the list row of identifiers, and, if necessary, by constructing a message with the identifier of the list to which point e the pending table and at least some of the pending table data. The machine further comprises a controller arranged to send a request to peer electronic voting machines, the query on the identifier to which the waiting array points and call the first function with each response message, call the second function whenever a request is received from a peer electronic voting machine, and conditionally changing the pointer of the waiting data table to an identifier of the higher ranked row list according to the data of the waiting table.
La machine proposée assure à la fois un vote préservant l'anonymat de la source et un dépouillement du scrutin. Le dépouillement est peu coûteux en ressources machine, même dans le cas d'un scrutin impliquant un grand nombre de machines homologues. Le dépouillement converge rapidement, avec assez peu d'échanges de messages entre les machines homologues en comparaison des procédés classiques. Le dépouillement conserve l'anonymat. The proposed machine ensures both a vote preserving the anonymity of the source and a vote count. The counting is inexpensive in machine resources, even in the case of a poll involving a large number of homologous machines. Stripping converges rapidly, with little exchange of messages between peer machines compared to conventional methods. The counting remains anonymous.
On propose également une infrastructure de vote électronique comprenant plusieurs machines de vote homologues du type proposé précédemment. It also proposes an electronic voting infrastructure comprising several homologous voting machines of the type previously proposed.
On propose enfin un procédé de vote électronique comprenant les étapes suivantes : Finally, an electronic voting method is proposed comprising the following steps:
- stocker une liste rangée d'identifiants, et au moins un tableau de données en attente avec un pointeur vers un identifiant de la liste rangée d'identifiants ; - recevoir une requête d'une machine de vote électronique, la requête portant sur l'identifiant vers lequel pointe le tableau en attente, storing a row of identifiers, and at least one table of pending data with a pointer to an identifier of the list of identifiers; receiving a request from an electronic voting machine, the request relating to the identifier to which the waiting table points,
- vérifier une condition portant sur une comparaison du contenu de la requête aux identifiants de la liste rangée d'identifiants, et, le cas échéant, construire un message en réponse avec l'identifiant de la liste vers lequel pointe le tableau en attente et certaines au moins des données du tableau en attente,  check a condition relating to a comparison of the content of the request with the identifiers of the row of identifiers, and, if necessary, construct a message in response with the identifier of the list to which the table on hold is pointing and certain at least data from the waiting table,
- modifier conditionnellement le pointeur du tableau de données en attente vers un identifiant de la liste rangée de rang supérieur en fonction des données du tableau en attente.  conditionally changing the pointer of the pending data table to an identifier of the higher ranked row list according to the data of the waiting table.
D'autres caractéristiques et avantages de l'invention apparaîtront à l'examen de la description ci-après, et des dessins annexés, sur lesquels : Other characteristics and advantages of the invention will appear on examining the following description and the attached drawings, in which:
- La figure 1 représente un diagramme fonctionnel illustrant une infrastructure de vote électronique dans un premier état de fonctionnement ; FIG. 1 represents a functional diagram illustrating an electronic voting infrastructure in a first operating state;
- La figure 2 représente un diagramme fonctionnel illustrant l'infrastructure de la figure 1 dans un second état de fonctionnement ; - Les figures 3 à 6 représentent des diagrammes fonctionnels illustrant respectivement un contrôleur, un configurateur, un gestionnaire et un module de vote pour une infrastructure de vote électronique ; FIG. 2 represents a functional diagram illustrating the infrastructure of FIG. 1 in a second operating state; FIGS. 3 to 6 show functional diagrams respectively illustrating a controller, a configurator, a manager and a voting module for an electronic voting infrastructure;
- La figure 7 représente un ordinogramme illustrant le fonctionnement d'une infrastructure de vote électronique ; FIG. 7 represents a flowchart illustrating the operation of an electronic voting infrastructure;
- La figure 8 représente un ordinogramme illustrant la mise en place d'un scrutin électronique ; - La figure 9 représente un ordinogramme illustrant le fonctionnement d'un contrôleur d'infrastructure de vote électronique dans une phase de mise en place d'un scrutin ; - La figure 10 représente un ordinogramme illustrant le fonctionnement d'un configurateur d'infrastructure de vote électronique dans une phase de mise en place d'un scrutin ; - La figure 11 représente un ordinogramme illustrant le fonctionnement d'un gestionnaire d'infrastructure de vote électronique dans une phase de mise en place d'un scrutin ; FIG. 8 represents a flowchart illustrating the setting up of an electronic ballot; FIG. 9 represents a flowchart illustrating the operation of an electronic voting infrastructure controller in a polling establishment phase; FIG. 10 represents a flowchart illustrating the operation of an electronic voting infrastructure configurator in a polling establishment phase; FIG. 11 represents a flowchart illustrating the operation of an electronic voting infrastructure manager in a polling establishment phase;
- La figure 12 représente un ordinogramme illustrant le fonctionnement d'une machine de vote d'une infrastructure de vote électronique dans une phase de vote ; FIG. 12 represents a flowchart illustrating the operation of a voting machine of an electronic voting infrastructure in a voting phase;
- Les figures 13 et 14 représentent des ordinogrammes illustrant le fonctionnement d'une machine de vote d'une infrastructure de vote électronique dans une phase de dépouillement ; - La figure 15 représente un schéma fonctionnel d'une fonction d'encapsulation pour une machine de vote d'une infrastructure de vote électronique ; et FIGS. 13 and 14 represent flowcharts illustrating the operation of a voting machine of an electronic voting infrastructure in a stripping phase; FIG. 15 represents a block diagram of an encapsulation function for a voting machine of an electronic voting infrastructure; and
- La figure 16 représente un schéma fonctionnel d'une fonction de vérification pour une machine de vote d'une infrastructure de vote électronique. FIG. 16 is a block diagram of a verification function for a voting machine of an electronic voting infrastructure.
Les dessins annexés contiennent des éléments de caractère certain et pourront par conséquent non seulement servir à compléter l'invention, mais aussi contribuer à sa définition, le cas échéant. La figure 1 montre une infrastructure de vote électronique 1 dans un premier état de fonctionnement. Ce premier état de fonctionnement correspond à une phase d'établissement de l'infrastructure de vote électronique. The attached drawings contain elements of a certain character and may therefore not only serve to complete the invention, but also contribute to its definition, if necessary. Figure 1 shows an electronic voting infrastructure 1 in a first operating state. This first operating state corresponds to a phase of establishment of the electronic voting infrastructure.
L'infrastructure 1 est organisée sur une infrastructure de réseau informatique. Le réseau informatique comprend des machines équipées d'éléments matériels et logiciels qui permettent aux machines de l'infrastructure 1 de communiquer les unes avec les autres. Ces communications s'opèrent selon un ou plusieurs protocoles réseau de niveau inférieur quelconques. Les machines de l'infrastructure 1 communiquent entre elles selon un protocole de niveau supérieur qui permet des échanges de données entre les machines de l'infrastructure 1. L'infrastructure 1 comprend au moins une machine formant un contrôleur 10. Le contrôleur 10 de l'infrastructure 1 organise les processus de vote électronique. Le contrôleur 10 initialise les processus de vote électronique. Le contrôleur 10 définit les processus de vote électronique et les lance. La définition d'un processus de vote électronique comprend en particulier l'établissement d'une liste d'identifiants correspondant à des machines de l'infrastructure réseau autorisées à participer au vote, et de données relatives à l'objet du processus de vote. Infrastructure 1 is organized on a computer network infrastructure. The computer network comprises machines equipped with hardware and software that enable the machines of the infrastructure 1 to communicate with each other. These communications take place according to one or more lower level network protocols. The machines of the infrastructure 1 communicate with each other according to a higher level protocol which allows data exchanges between the machines of the infrastructure 1. The infrastructure 1 comprises at least one machine forming a controller 10. The controller 10 of the infrastructure 1 organizes e-voting processes. The controller 10 initiates the electronic voting processes. The controller 10 defines the electronic voting processes and launches them. The definition of an electronic voting process includes in particular the establishment of a list of identifiers corresponding to machines of the network infrastructure authorized to participate in the vote, and data relating to the subject of the voting process.
Contrairement aux systèmes classiques de vote électronique, toute machine de l'infrastructure réseau peut fonctionner en tant que contrôleur 10. Unlike conventional electronic voting systems, any machine in the network infrastructure can function as a controller 10.
L'infrastructure 1 comprend en outre au moins une machine formant un configurateur 20. Le configurateur 20 est plus particulièrement actif dans la configuration d'une topologie pour l'infrastructure 1. Le configurateur 20 fournit à chaque machine de l'infrastructure 1 les données nécessaires à l'échange de données relatives au processus de vote. The infrastructure 1 further comprises at least one machine forming a configurator 20. The configurator 20 is more particularly active in the configuration of a topology for the infrastructure 1. The configurator 20 provides each machine of the infrastructure 1 the data necessary for the exchange of data relating to the voting process.
L'infrastructure 1 comprend encore au moins une machine formant un gestionnaire 30. Le gestionnaire 30 prend en charge l'organisation des machines de vote entre elles et la distribution de données de chiffrement. Il s'agit en particulier d'assurer une cohérence et une distribution de clés de chiffrement correspondant à une structure arborescente. En variante, cette tâche peut être réalisée par une autre machine de l'infrastructure, en particulier le configurateur 20. The infrastructure 1 further comprises at least one machine forming a manager 30. The manager 30 supports the organization of the voting machines between them and the distribution of encryption data. This is in particular to ensure a coherence and distribution of encryption keys corresponding to a tree structure. As a variant, this task can be performed by another machine of the infrastructure, in particular the configurator 20.
Le contrôleur 10, le configurateur 20 et le gestionnaire 30 forment conjointement un ensemble fonctionnel qui peut être vu comme un serveur dans l'infrastructure de vote électronique 1. Ici, le contrôleur 10, le configurateur 20 et le gestionnaire 30 correspondent à des équipements, typiquement des unités centrales d'ordinateurs, physiquement distincts les uns des autres. On évite ainsi qu'un même équipement ne concentre toute l'information relative à l'infrastructure 1, aux processus de vote et aux machines de vote. Ceci améliore la sécurité et la confidentialité. En variante, le contrôleur 10, le configurateur 20 et le gestionnaire 30 peuvent correspondre à un même équipement. The controller 10, the configurator 20 and the manager 30 together form a functional unit that can be viewed as a server in the electronic voting infrastructure 1. Here, the controller 10, the configurator 20 and the manager 30 correspond to equipment, typically computer central units, physically distinct from each other. This avoids the same equipment concentrating all information relating to infrastructure 1, voting processes and voting machines. This improves security and privacy. Alternatively, the controller 10, the configurator 20 and the manager 30 may correspond to the same equipment.
L'infrastructure 1 comprend en outre une pluralité de machines de vote, par exemple une première machine de vote 42, une seconde machine de vote 44 et une énième machine de vote 46. The infrastructure 1 further comprises a plurality of voting machines, for example a first voting machine 42, a second voting machine 44 and an umpteenth voting machine 46.
Ensemble, les machines de vote de l'infrastructure 1 forment un groupe 40 de machines de vote. Les machines du groupe 40 sont capables de communiquer les unes avec les autres. À cette fin, l'infrastructure 1 comprend au moins une machine formant serveur de mise en relation, ou un traqueur 50. Le traqueur 50 maintient des adresses de machines de l'infrastructure de vote, en particulier leur adresse dans l'infrastructure réseau, par exemple une adresse de protocole internet, ou adresse "IP". Together, the voting machines of infrastructure 1 form a group 40 of voting machines. Group 40 machines are able to communicate with each other. For this purpose, the infrastructure 1 comprises at least one linking server machine, or a tracker 50. The tracker 50 maintains machine addresses of the voting infrastructure, in particular their address in the network infrastructure, for example an internet protocol address, or "IP" address.
Le gestionnaire 30 et le configurateur 20 sont de préférence des tiers de confiance. Les machines de l'infrastructure de vote peuvent être reliées à un serveur de temps du réseau pour synchronisation. La figure 2 montre l'infrastructure de vote électronique 1 dans un second état de fonctionnement. Ce second état de fonctionnement correspond à une phase de vote et de dépouillement. The manager 30 and the configurator 20 are preferably trusted third parties. The voting infrastructure machines can be connected to a network time server for synchronization. Figure 2 shows the electronic voting infrastructure 1 in a second operating state. This second operating state corresponds to a vote and counting phase.
Dans ce second état de fonctionnement, le contrôleur 10, le configurateur 20 et le gestionnaire 30 sont absents de l'infrastructure de vote 1. Ils sont inactifs durant la phase de vote et de dépouillement. De préférence, les machines correspondant au contrôleur 10, au configurateur 20 et/ou au gestionnaire 30 sont éteintes, ou du moins indisponibles au sein de l'infrastructure réseau. Ceci rend les données relatives au processus de vote en cours, dont la liste des identifiants des machines de vote, inaccessibles depuis l'infrastructure réseau. Cela améliore considérablement la sûreté du processus en ce que les données les plus sensibles ne sont accessibles que pendant très peu de temps, uniquement à l'initialisation de l'infrastructure de vote. In this second operating state, the controller 10, the configurator 20 and the manager 30 are absent from the voting infrastructure 1. They are inactive during the vote and counting phase. Preferably, the machines corresponding to the controller 10, the configurator 20 and / or the manager 30 are off, or at least unavailable within the network infrastructure. This makes the data relating to the voting process course, including the list of identifiers of voting machines, inaccessible from the network infrastructure. This greatly improves the security of the process in that the most sensitive data is only accessible for a very short time, only at the initialization of the voting infrastructure.
Dans le second état de fonctionnement, l'infrastructure 1 comporte les machines de vote et le traqueur 50. In the second operating state, the infrastructure 1 comprises the voting machines and the tracker 50.
Dans la mesure où le contrôleur 10, le configurateur 20 et le gestionnaire 30 ne sont pas capables d'écouter les échanges de données à travers l'infrastructure de vote 1, ils peuvent être considérés comme des autorités de confiance. Since the controller 10, the configurator 20 and the manager 30 are not able to listen to the data exchanges through the voting infrastructure 1, they can be considered as trusted authorities.
La figure 3 montre un module contrôleur 100 à usage par exemple pour le contrôleur 10 de l'infrastructure 1 de la figure 1. FIG. 3 shows a controller module 100 used for example for the controller 10 of the infrastructure 1 of FIG. 1.
Le module contrôleur 100 comprend un contrôleur principal 110 et une structure de stockage de données 120. Le contrôleur 110 est capable de lire, écrire et traiter des données dans la structure de stockage 120. La structure de stockage 120 maintient au moins temporairement un ensemble de données relatives aux scrutins, y compris des éléments d'identification des votants et des données d'identification de vote. La structure de stockage 120 peut être organisée dans la mémoire vive d'un ordinateur, ou tout autre dispositif à mémoire volatile. Dans ce cas, les données relatives au scrutin en cours sont effacées à mise hors tension du module. Cette mise hors tension peut être programmée pour intervenir à l'issue de la phase d'établissement de l'infrastructure de vote. Cela évite notamment qu'une liste des identifiants de vote ne soit piratée. The controller module 100 includes a main controller 110 and a data storage structure 120. The controller 110 is capable of reading, writing, and processing data in the storage structure 120. The storage structure 120 at least temporarily maintains a set of polling data, including voter identification and voting identification data. The storage structure 120 may be organized in the random access memory of a computer, or any other volatile memory device. In this case, the current polling data is cleared when the module is powered off. This power down can be programmed to intervene at the end of the phase of establishing the voting infrastructure. This avoids, in particular, a list of voting identifiers being hacked.
Le module contrôleur 100 comprend en outre au moins une première interface de communication 140 qui peut être commandée par le contrôleur 110 pour communiquer avec les machines d'une infrastructure réseau, par exemple les machines de l'infrastructure 1 de la figure 1. Optionnellement, le module contrôleur 100 comprend en outre une interface utilisateur 130 qui interagit avec le contrôleur principal 110. L'interface utilisateur 130 peut être de type graphique. Le module contrôleur 100 peut être implémenté sous la forme d'un contrôleur logiciel du type connu sous le nom de "serveur Node.js" exécuté par une unité centrale d'ordinateur. La structure de stockage 120 peut être organisée dans la mémoire vive de l'ordinateur en question. La figure 4 montre un module configurateur 200 à usage par exemple en tant que configurateur 20 de l'infrastructure 1 de la figure 1. The controller module 100 further comprises at least a first communication interface 140 that can be controlled by the controller 110 to communicate with the machines of a network infrastructure, for example the machines of the infrastructure 1 of FIG. 1. Optionally, the controller module 100 further comprises a user interface 130 that interacts with the main controller 110. The user interface 130 may be of graphic type. The controller module 100 may be implemented in the form of a software controller of the type known as the "Node.js server" executed by a central computer unit. The storage structure 120 may be organized in the random access memory of the computer in question. FIG. 4 shows a configurator module 200 used for example as a configurator 20 of the infrastructure 1 of FIG. 1.
Le module configurateur 200 comprend un contrôleur principal 210 et une structure de stockage 220 qui mémorise les données relatives à la fonction de configurateur. Le contrôleur 210 peut lire, écrire et traiter les données dans la structure de stockage 220. De préférence, la structure de stockage 220 est organisée dans de la mémoire volatile. Ceci permet d'améliorer la sécurité du scrutin. The configurator module 200 comprises a main controller 210 and a storage structure 220 which stores the data relating to the configurator function. The controller 210 can read, write and process the data in the storage structure 220. Preferably, the storage structure 220 is organized in volatile memory. This improves the security of the ballot.
Le module configurateur 200 comprend en outre une interface de communication 230 qui peut être commandée par le contrôleur principal 210 pour émettre et recevoir des données au travers d'une infrastructure de vote électronique, par exemple l'infrastructure 1 de la figure 1. The configurator module 200 further comprises a communication interface 230 which can be controlled by the main controller 210 to transmit and receive data through an electronic voting infrastructure, for example the infrastructure 1 of FIG. 1.
Le module configurateur 200 peut prendre la forme d'un serveur de type Node.js qui s'exécute sur une unité centrale d'ordinateur. La structure de stockage 220 peut être organisée dans la mémoire vive de l'ordinateur en question. The configurator module 200 may take the form of a server of type Node.js that runs on a central computer unit. The storage structure 220 may be organized in the random access memory of the computer in question.
La figure 5 montre un module de gestion 300 qui peut être utilisé en tant que gestionnaire d'une infrastructure de vote électronique, par exemple le gestionnaire 30 de l'infrastructure 1 de la figure 1. FIG. 5 shows a management module 300 that can be used as a manager of an electronic voting infrastructure, for example the manager of the infrastructure 1 of FIG. 1.
Le module de gestion 300 comprend un contrôleur principal 310 et une structure de stockage de données 320 avec laquelle le contrôleur peut interagir, en particulier, pour lire, écrire et traiter des données. La structure de stockage 320 est de préférence organisée dans de la mémoire volatile. The management module 300 comprises a main controller 310 and a data storage structure 320 with which the controller can interact, in particular for read, write and process data. The storage structure 320 is preferably organized in volatile memory.
Le module de gestion 300 comprend en outre une interface de communication 330 qui peut être commandée par le contrôleur 310 pour échanger de données au travers d'une infrastructure de vote électronique, par exemple l'infrastructure 1 de la figure 1. The management module 300 further comprises a communication interface 330 which can be controlled by the controller 310 for exchanging data through an electronic voting infrastructure, for example the infrastructure 1 of FIG. 1.
Le module de gestion 300 peut être réalisé sous la forme d'un serveur Node.js qui s'exécute sur une unité centrale d'ordinateur. La structure de stockage 320 peut être organisée dans la mémoire vive de cette unité centrale. The management module 300 can be implemented in the form of a server Node.js which runs on a central computer unit. The storage structure 320 can be organized in the RAM of this CPU.
La figure 6 montre un module de vote électronique 400 à usage par exemple en tant que machine de vote d'une infrastructure de vote électronique, par exemple une machine quelconque du groupe 40 de la figure 1. FIG. 6 shows an electronic voting module 400 used for example as a voting machine of an electronic voting infrastructure, for example any machine of the group 40 of FIG. 1.
Le module de vote 400 comprend un contrôleur 410 et une structure de stockage de données 420 avec laquelle le contrôleur principal 410 peut interagir pour lire, écrire et stocker des données. Le module de vote 400 comprend en outre une interface utilisateur 430 qui interagit avec le contrôleur principal 410. L'interface utilisateur 430 peut être de type graphique. The voting module 400 includes a controller 410 and a data storage structure 420 with which the main controller 410 can interact to read, write and store data. Voter module 400 further includes a user interface 430 that interacts with the main controller 410. The user interface 430 may be of graphic type.
Le module de vote 400 comprend en outre une interface de communication 440 qui peut être commandée par le contrôleur principal 410 pour échanger des données à travers une infrastructure de vote électronique, en particulier, l'infrastructure 1 de la figure 1. The voting module 400 further comprises a communication interface 440 which can be controlled by the main controller 410 to exchange data through an electronic voting infrastructure, in particular, the infrastructure 1 of Figure 1.
Le module de vote 400 peut être réalisé sous la forme d'une application javascript, par exemple utilisant une bibliothèque de fonctions de type connu sous le nom de "angular.js" exécuté sur une unité centrale d'ordinateur dans un navigateur internet. La structure de stockage 420 peut être organisée dans la mémoire de stockage de cette unité centrale. The voting module 400 can be made in the form of a javascript application, for example using a type function library known as "angular.js" executed on a central computer unit in an internet browser. The storage structure 420 may be organized in the storage memory of this central unit.
Les modules contrôleur 100, configurateur 200, gestionnaire 300 et de vote 400 s'exécutent de préférence sur des machines distinctes de l'infrastructure réseau, comme cela a été décrit en relation avec la figure 1. Les données sensibles sont distribuées. On diminue le risque qu'une attaque visant l'une de ces machines ne divulgue l'ensemble des données du processus de vote. En variante, certains au moins de ces modules s'exécutent sur une même machine de l'infrastructure réseau. En particulier, une même machine peut fonctionner en tant que contrôleur, gestionnaire, configurateur et/ou machine de vote. Ceci est facilité par le fait que le contrôleur, le gestionnaire et le configurateur n'ont pas besoin d'être actifs une fois le scrutin lancé. The controller modules 100, configurator 200, manager 300 and vote manager 400 preferably run on machines separate from the network infrastructure, such as this has been described in connection with FIG. 1. Sensitive data is distributed. It reduces the risk that an attack on one of these machines will disclose all data from the voting process. As a variant, at least some of these modules run on the same machine of the network infrastructure. In particular, the same machine can function as controller, manager, configurator and / or voting machine. This is facilitated by the fact that the controller, the manager and the configurator do not need to be active once the ballot is launched.
La figure 7 illustre différents modes opérationnels d'une infrastructure de vote, en particulier l'infrastructure 1 de la figure 1. Figure 7 illustrates different operational modes of a voting infrastructure, in particular infrastructure 1 of Figure 1.
Selon un premier mode opérationnel, représenté par le bloc 5, certains au moins des éléments logiciels et matériels d'une infrastructure réseau coopèrent en vue d'organiser un scrutin de vote électronique. Cette opération concerne principalement une ou plusieurs machines de l'infrastructure qui vont agir à la manière d'un serveur d'infrastructure, par exemple l'ensemble formé du contrôleur 10, du configurateur 20 et du gestionnaire 30 de la figure 1. Elle implique une communication initiale entre le serveur d'infrastructure et des équipements destinés à opérer en tant que machines de vote électronique, par exemple les machines du groupe 40 de la figure 1. According to a first operational mode, represented by block 5, at least some of the software and hardware elements of a network infrastructure cooperate to organize an electronic voting ballot. This operation mainly concerns one or more machines of the infrastructure that will act in the manner of an infrastructure server, for example the assembly formed of the controller 10, the configurator 20 and the manager 30 of FIG. an initial communication between the infrastructure server and equipment intended to operate as electronic voting machines, for example the machines of group 40 of FIG.
Selon un second mode opérationnel, illustré par le bloc 7, chaque machine de vote reçoit l'expression d'un vote. Dans un processus de vote classique, l'opération 7 correspond à ce que l'on appelle communément un scrutin ou un sondage. Le vote est purement local. Dans ce mode opérationnel, le serveur d'infrastructure est inactif. L'infrastructure correspond à l'infrastructure de la figure 2. According to a second operational mode, illustrated by block 7, each voting machine receives the expression of a vote. In a traditional voting process, operation 7 is what is commonly referred to as a poll or poll. The vote is purely local. In this operational mode, the infrastructure server is idle. The infrastructure corresponds to the infrastructure of Figure 2.
Selon un troisième mode opérationnel, illustré par le bloc 9, les données relatives au scrutin sont rassemblées. Ce mode opérationnel concerne principalement les machines de vote elles-mêmes, le cas échéant mises en relation les unes avec les autres grâce à une machine supplémentaire, par exemple le traqueur 50 de la figure 1. L'opération 9 correspond à ce que l'on appelle un dépouillement dans un scrutin classique. L'infrastructure correspond à l'infrastructure de la figure 2. In a third operational mode, illustrated by block 9, the polling data are collected. This operational mode mainly concerns the voting machines themselves, where appropriate linked to one another by means of an additional machine, for example the tracker 50 of FIG. corresponds to what is called a recount in a conventional ballot. The infrastructure corresponds to the infrastructure of Figure 2.
La figure 8 détaille l'organisation d'un scrutin électronique, par exemple dans l'infrastructure 1 de la figure 1. Figure 8 details the organization of an electronic ballot, for example in the infrastructure 1 of Figure 1.
On établit d'abord des données de configuration relatives au scrutin, ce qui correspond au bloc 52. Les données de configuration comprennent des données relatives à l'objet du vote et des données relatives aux votants, en particulier leur identification dans l'infrastructure de vote électronique. Il s'agit en particulier d'établir une liste d'identifiants de vote telle que chaque votant puisse être associé anonymement à un identifiant de vote. Polling configuration data is first set up, which corresponds to block 52. The configuration data includes data on the subject of the vote and voter data, in particular their identification in the voting infrastructure. electronic voting. In particular, it involves establishing a list of voting identifiers such that each voter can be associated anonymously with a vote identifier.
On organise ensuite une structure arborescente qui organise les identifiants de vote. Cela correspond au bloc 54. Dans cette structure arborescente, les machines de vote correspondent aux feuilles d'un arbre n-aire. Entre chaque feuille de l'arbre et la racine de celui-ci se trouvent des nœuds identifiés qui relient différentes branches de l'arbre. We then organize a tree structure that organizes the voting identifiers. This corresponds to block 54. In this tree structure, the voting machines correspond to the leaves of an n-ary tree. Between each leaf of the tree and the root of the tree are identified nodes that connect different branches of the tree.
On génère ensuite une collection de clés de chiffrement, ici de type symétrique, qui va être utilisée par les machines de vote principalement afin de vérifier et/ou dépouiller les votes. Ceci correspond au bloc 56. We then generate a collection of encryption keys, here of symmetrical type, which will be used by voting machines mainly to check and / or vote. This corresponds to block 56.
La figure 9 illustre une fonction principale pour le contrôleur d'une infrastructure de vote électronique, par exemple le contrôleur 10 de la figure 1, dans un mode de fonctionnement correspondant à la mise en place d'un scrutin. FIG. 9 illustrates a principal function for the controller of an electronic voting infrastructure, for example the controller 10 of FIG. 1, in a mode of operation corresponding to the setting up of a poll.
La fonction débute en une étape 900. The function starts in a step 900.
À l'étape suivante 902, la fonction reçoit une chaîne de caractères SntcStrg correspondant à l'objet du vote exprimé en langage naturel. La chaîne SntcStrg peut être entrée par l'utilisateur d'un contrôleur d'infrastructure, le cas échéant à travers une interface utilisateur, par exemple l'interface 130 de la figure 3, ou une requête de type REST. La chaîne SntcStrg peut correspondre à une question, par exemple. À l'étape suivante 904, la fonction débute une structure de boucle en initialisant un compteur k à la valeur nulle. In the next step 902, the function receives a string SntcStrg corresponding to the subject of the vote expressed in natural language. The SntcStrg chain may be entered by the user of an infrastructure controller, where appropriate through a user interface, for example the interface 130 of FIG. 3, or a request of the REST type. The SntcStrg string can be a question, for example. In the next step 904, the function starts a loop structure by initializing a counter k to zero.
À l'étape suivante, étape 906, la fonction reçoit une chaîne de caractères Chce qui correspond à l'expression, en langage naturel, d'une réponse possible à la question de l'étape 902. In the next step, step 906, the function receives a Chce character string which corresponds to the expression, in natural language, of a possible answer to the question of step 902.
À l'étape suivante 908, la fonction crée un tableau indexé Answrs[..] dans lequel elle stocke la chaîne Chce de l'étape 906 en tant qu'élément d'index k. In the next step 908, the function creates an indexed array Answrs [..] in which it stores the Chce string of step 906 as an index element k.
À l'étape suivante 910, la fonction incrémente le compteur k, puis retourne à l'étape 906. Les étapes 906 à 910 sont répétées tant que la fonction reçoit des chaînes de caractères correspondant à des réponses possibles à la question qui fait l'objet du vote. Les étapes 904 à 910 correspondent à l'entrée d'un jeu de réponses possibles à la question entrée à l'étape 902. Les étapes 904 à 910 sont optionnelles : le vote peut admettre des réponses libres à la question de l'étape 902. In the next step 910, the function increments the counter k, then returns to step 906. The steps 906 to 910 are repeated as long as the function receives character strings corresponding to possible answers to the question that makes the subject of the vote. Steps 904 to 910 correspond to the entry of a set of possible answers to the question entered in step 902. Steps 904 to 910 are optional: the vote may admit free answers to the question of step 902 .
À l'étape suivante 912, la fonction débute une seconde structure de boucle en initialisant un compteur j à la valeur nulle. In the next step 912, the function starts a second loop structure by initializing a counter j to zero.
À l'étape suivante 914, la fonction reçoit un identifiant de votant VtrPubld, par exemple sous la forme d'une chaîne de caractères. L'identifiant VtrPubld correspond à une donnée d'identification publique du votant : c'est sous cet identifiant que le votant est connu de l'organisateur du scrutin. Cet identifiant correspond par exemple à une référence de pièce d'identité, une adresse de courrier électronique, un identifiant de réseau social, par exemple du type connu sous le nom de Facebook, ou même d'un pseudonyme choisi pour le scrutin. La fonction reçoit en outre une adresse VtrPubAdd avec l'identifiant de votant VtrPubld. L'adresse VtrPubAdd permet l'envoi de message pour le votant. L'adresse VtrPubAdd comprend par exemple une adresse de machine de vote, par exemple l'adresse dans l'infrastructure réseau de l'une de la première machine de vote 42, la seconde machine de vote 44 et de la énième machine de vote 46, ou une adresse de courrier électronique. L'adresse VtrPubAdd est optionnelle dans la mesure où l'identifiant de votant VtrPubld peut être mis en relation avec une adresse utilisable pour l'envoi de message, par exemple lorsque l'identifiant VtrPubld correspond lui-même à une adresse de courrier électronique. In the next step 914, the function receives a voter identifier VtrPubld, for example in the form of a string of characters. The identifier VtrPubld corresponds to a public identification data of the voter: it is under this identifier that the voter is known to the poll organizer. This identifier corresponds for example to an identity document reference, an email address, a social network identifier, for example of the type known as Facebook, or even a pseudonym chosen for the poll. The function also receives a VtrPubAdd address with the voter identifier VtrPubld. The VtrPubAdd address allows the sending of messages for the voter. The address VtrPubAdd comprises, for example, a voting machine address, for example the address in the network infrastructure of one of the first voting machine 42, the second voting machine 44 and the nth voting machine 46. , or an email address. The address VtrPubAdd is optional insofar as the voter identifier VtrPubld can be put in relation with an address that can be used for sending message, for example when the VtrPubld identifier itself corresponds to an e-mail address.
À l'étape suivante 916, la fonction mémorise l'identifiant VtrPubld reçu dans un tableau VtrPub [ .. ] en tant qu'élément d'index j . In the next step 916, the function stores the received VtrPubld identifier in a VtrPub [..] array as an index element j.
À l'étape suivante 918, la fonction incrémente le compteur j puis retourne à l'étape 914 tant que sont reçus des identifiants de votants, jusqu'à l'expiration d'une période temporelle ou à l'atteinte d'un quota de votants, ou jusqu'à réception d'une indication de fin de liste. In the next step 918, the function increments the counter j and then returns to step 914 as long as voter IDs are received, until a time period expires or a quota is reached. voting, or until an end of list is received.
La fonction passe ensuite à l'étape suivante 920. The function then proceeds to the next step 920.
Il résulte de la succession des étapes 912 à 918 une liste d'identifiants publics de personnes autorisées à participer au scrutin, stockée dans le tableau VtrPub [..]. It follows from the succession of steps 912 to 918 a list of public identifiers of persons authorized to participate in the poll, stored in the table VtrPub [..].
À l'étape 920, la fonction reçoit des paramètres relatifs au scrutin, en particulier à son début et à sa fin. Il s'agit par exemple de paramètres définissant une période temporelle de validité du scrutin. Ces paramètres temporels comprennent ici une date StrtDat de début de scrutin et une date EdDat de fin de scrutin. In step 920, the function receives polling parameters, especially at its beginning and end. These are for example parameters defining a time period of validity of the vote. These time parameters here include a poll start date StrtDat and a poll end date EdDat.
La fonction se termine à l'étape suivante 922. The function ends in the next step 922.
Les étapes 900 à 922 correspondent à la réception de données relatives à la définition d'un scrutin. Cette définition comprend une déclaration de vote, sous la forme de la chaîne SntcStrg, une liste de réponses possibles à cette déclaration, ici rassemblées dans le tableau Answrs[„], une liste de personnes autorisées à participer au scrutin, ici rassemblées dans le tableau VtrPub [..], et une période de validité du scrutin, ici sous la forme d'une date StrtDat de début et d'une date EdDat de fin. L'application décrite ici correspond à une élection classique. Selon l'application envisagée, qui peut être différente, la manière de définir le scrutin peut varier, en particulier en ce qui concerne les données des étapes 902 à 910. La figure 10 illustre une fonction principale pour le configurateur d'une infrastructure de vote électronique, par exemple le contrôleur 20 de la figure 1, dans un mode de fonctionnement correspondant à une mise en place de cette infrastructure. La fonction débute en une étape 1000. Steps 900 to 922 correspond to the receipt of data relating to the definition of a poll. This definition includes a declaration of vote, in the form of the chain SntcStrg, a list of possible answers to this declaration, here gathered in the table Answrs ["], a list of persons authorized to participate in the vote, here gathered in the table VtrPub [..], and a ballot validity period, here in the form of a start StrtDat date and an end EdDat date. The application described here corresponds to a classic election. Depending on the intended application, which may be different, the manner of defining the poll may vary, particularly with respect to the data of steps 902 to 910. FIG. 10 illustrates a main function for the configurator of an electronic voting infrastructure, for example the controller 20 of FIG. 1, in an operating mode corresponding to an implementation of this infrastructure. The function starts in a step 1000.
À l'étape suivante 1002, la fonction reçoit une liste d'identifiants de vote VtPvtld, par exemple rassemblés dans un tableau VtrPvt[..]. Le cardinal de la liste des identifiants de vote correspond à celui de la liste des identifiants de votants. À chaque identifiant de votant VtrPubld correspond un identifiant de vote VtPvtld. Les identifiants VtPvtld identifient les votes et non les votants. Par exemple, chaque identifiant de vote VtPvtld résulte d'une fonction d' anonymisation appelée avec un identifiant de votant. Typiquement cette fonction peut être implémentée dans le contrôleur d'infrastructure, par exemple le contrôleur 10 de la figure 1. À titre d'exemple uniquement, chaque identifiant de vote VtPvtld résulte d'une fonction de hachage, par exemple de type MD5, appelée sur le résultat de la concaténation d'un identifiant de votant VtrPubld et d'une clé privée respective, par exemple générée pour l'occasion. In the next step 1002, the function receives a list of vote identifiers VtPvtld, for example gathered in a table VtrPvt [..]. The cardinal of the list of voting identifiers corresponds to that of the list of voter IDs. Each voter identifier VtrPubld corresponds to a vote identifier VtPvtld. The VtPvtld identifiers identify the votes and not the voters. For example, each vote identifier VtPvtld results from an anonymization function called with a voter identifier. Typically this function can be implemented in the infrastructure controller, for example the controller 10 of FIG. 1. By way of example only, each vote identifier VtPvtld results from a hash function, for example of type MD5, called on the result of the concatenation of a voter identifier VtrPubld and a respective private key, for example generated for the occasion.
Dans le cas où l'infrastructure de vote gère plusieurs scrutins concomitamment, la fonction peut en outre recevoir, à l'étape 1002, un identifiant de scrutin. In the case where the voting infrastructure manages several polls concomitantly, the function can also receive, in step 1002, a poll identifier.
La liste des identifiants de vote VtPvtld peut être transmise dans un message, typiquement adressé par le contrôleur d'infrastructure, par exemple le contrôleur 10 de la figure 1, au gestionnaire d'infrastructure, par exemple le gestionnaire 20 de la figure 1. The list of vote identifiers VtPvtld may be transmitted in a message, typically addressed by the infrastructure controller, for example the controller 10 of FIG. 1, to the infrastructure manager, for example the manager 20 of FIG. 1.
Le contrôleur et le gestionnaire d'infrastructure sont identifiés ici par leur adresse respective CtrlrAdd, ou CfgtrAdd, dans l'infrastructure réseau. The controller and the infrastructure manager are identified here by their respective CtrlrAdd or CfgtrAdd addresses in the network infrastructure.
À l'étape suivante 1004, la fonction génère une structure arborescente dont le nombre de feuilles correspond au cardinal de la liste des identifiants de votant. Autrement dit, la structure arborescente comporte autant de feuilles que le scrutin comporte de votants. La fonction génère une liste d'identifiants de nœuds, notés génériquement NodIdx_i. Cette structure arborescente peut être stockée sous la forme d'une liste KTRE[..] de tableaux, dans laquelle chaque tableau met en relation un identifiant de nœud NodIdx_i et une liste de nœuds enfants identifiés chacun par leur numéro d'index dans le tableau. In the next step 1004, the function generates a tree structure whose number of sheets corresponds to the cardinal of the list of voter IDs. In other words, the tree structure has as many sheets as the ballot contains voters. The function generates a list of node identifiers, noted generically NodIdx_i. This tree structure can be stored as a KTRE [..] list of tables, in which each table relates a node identifier NodIdx_i and a list of child nodes each identified by their index number in the table. .
La structure arborescente de l'étape 1004 se rapproche de celle d'un arbre B+. Dans la mesure du possible, chaque nœud enfant correspond à un arbre menant à autant de feuilles que les autres nœuds enfants. L'arbre comprend un nombre ChldNbr d'enfants et un nombre HghtNbr de niveaux, ou hauteur. Les nombres ChldNbr d'enfants et HgtNbr de niveaux sont tels que le nombre VtrNbr d'identifiants de votants : The tree structure of step 1004 is similar to that of a B + tree. Whenever possible, each child node is a tree leading to as many leaves as other child nodes. The tree includes a number ChldNbr of children and a number HghtNbr of levels, or height. The numbers ChldNbr of children and HgtNbr of levels are such that the number VtrNbr of the identifiers of voters:
- soit strictement supérieur au nombre ChldNbr de nœuds élevé à une puissance correspondant au HgtNbr de rangs moins un ;  or strictly greater than the number ChldNbr of nodes raised to a power corresponding to the HgtNbr of ranks minus one;
- soit inférieur ou égal au nombre ChldNbr de nœuds élevé à une puissance correspondant au HgtNbr. or less than or equal to the number ChldNbr of nodes raised to a power corresponding to the HgtNbr.
Les nœuds sont indexés. La racine correspond au nœud dont la valeur d'index est nulle.The nodes are indexed. The root is the node whose index value is zero.
Chaque nœud peut être associé à une valeur d'index Nodldx, et ses nœuds enfants peuvent être associés chacune à une valeur d'index respective de la forme Nodldx. Idx où Idx est un nombre entier inférieur ou égal au nombre ChldNbr moins un désignant un nœud enfant.Each node may be associated with a Nodldx index value, and its child nodes may each be associated with a respective index value of the Nodldx form. Idx where Idx is an integer less than or equal to the number ChldNbr minus one denoting a child node.
De cette manière, chaque feuille de l'arbre peut être associée à une valeur d'index Lfldx de la forme i_l.i_2..i_HgtNbr, où chaque élément i correspond à un nombre entier. Chaque feuille de l'arbre peut être associée à un nombre entier naturel LfNbr correspondant à la traduction de la valeur d'index Lfldx, par exemple grâce à la fonction suivante : In this way, each leaf of the tree can be associated with an index value Lfldx of the form i_l.i_2..i_HgtNbr, where each element i corresponds to an integer. Each leaf of the tree can be associated with a natural integer LfNbr corresponding to the translation of the index value Lfldx, for example by virtue of the following function:
LfNbr := SUM(j:=l, j:=HgtNbr, (iJ-l)*kA( HgtNbr - j), LfNbr: = SUM (j: = l, j: = HgtNbr, (i, j-l) * k A (HgtNbr - j)
Où SUM() est la fonction somme.  Where SUM () is the sum function.
Inversement, chaque nombre entier naturel correspondant à un identifiant de vote peut être associé de manière unique à une valeur d'index désignant une feuille dans la structure arborescente. De préférence, on fait en sorte de conserver l'équilibre de l'arbre en attribuant aux nœuds de plus bas niveau un même nombre de feuilles de l'arbre à k- 1 feuilles près où le nombre k correspond au nombre normal de fils d'un nœud. Un des nœuds de l'arbre peut se retrouver avec 2k- 1 feuilles. Le nombre k est fixé à la création. Plus le nombre k est grand, moins les votes sont distinguables. Plus le nombre k est grand, plus le temps de dépouillement risque d'être long. Le nombre k est supérieur ou égal à 3. La formule suivante indique une relation entre des paramètres de la structure arborescente : Conversely, each natural integer corresponding to a vote identifier may be uniquely associated with an index value designating a leaf in the tree structure. Preferably, care is taken to maintain the equilibrium of the tree by assigning to the lower-level nodes the same number of leaves of the tree with k-1 leaves where the number k corresponds to the normal number of threads. 'a knot. One of the nodes of the tree can be found with 2k-1 leaves. The number k is set at creation. The larger the number k, the less distinguishable the votes. The larger the number k, the longer the counting time may be. The number k is greater than or equal to 3. The following formula indicates a relationship between parameters of the tree structure:
HgtNbr=SUP(logAk(cardinal(VtPvtId))) Celle formule indique que le nombre HgtNbr de niveaux de la structure arborescente correspond à la fonction entière par valeurs supérieures du logarithme décimal du nombre k que multiplie le nombre d'identifiants de vote. HgtNbr = SUP (log A k (cardinal (VtPvtId))) This formula indicates that the number HgtNbr of levels of the tree structure corresponds to the whole function by higher values of the logarithm of the number k that multiplies the number of identifiers of vote .
À l'étape suivante 1006, la fonction débute une structure de boucle en initialisant un compteur k à la valeur nulle. In the next step 1006, the function starts a loop structure by initializing a counter k to zero.
À l'étape suivante 1008, la fonction associe une branche de la structure arborescente à chaque valeur d'identifiant de votant VtPvtld. Dans le cas où les nœuds sont indexés de la manière indiquée à l'étape 1004, la branche de la structure arborescente est désignée par la valeur d'index du nœud parent de cette feuille. Par exemple, la fonction crée un tableau VBB[..] avec, en tant qu'élément d'index k, un tableau de deux éléments correspondant respectivement à : In the next step 1008, the function associates a branch of the tree structure with each voter identifier value VtPvtld. In the case where the nodes are indexed as indicated in step 1004, the branch of the tree structure is designated by the index value of the parent node of that sheet. For example, the function creates an array VBB [..] with, as index element k, an array of two elements corresponding respectively to:
- un identifiant de vote, ici génériquement l'identifiant VtPvtId_k pour l'identifiant d'index k dans le tableau ;  a vote identifier, here generically the identifier VtPvtId_k for the index identifier k in the array;
- une liste rangée d'identifiants de nœuds NodIdx_i, les nœuds de la liste mettant en relation une feuille de l'arbre jusqu'à la racine de ce dernier. À chaque fois, un identifiant NodIdx_i est en relation avec une valeur entière NodChldNbr_i qui correspond au nombre de nœuds enfants du nœud considéré. Dans une variante de réalisation, chaque identifiant NodIdx_i est associé à une valeur de clé de chiffrement respective NodKy_i. a row list of NodIdx_i node identifiers, the nodes of the list connecting a leaf of the tree to the root of the tree. Each time, a NodIdx_i identifier is related to an integer value NodChldNbr_i which corresponds to the number of child nodes of the considered node. In an alternative embodiment, each NodIdx_i identifier is associated with a respective encryption key value NodKy_i.
La liste des identifiants de nœuds est rangée de manière que l'ordre des nœuds corresponde au parcours d'une branche de l'arbre, d'une feuille à la racine. En remplacement, ou en complément, chaque identifiant de nœud Nodldx peut être associé à une valeur indiquant le niveau du nœud dans la structure arborescente. The list of node identifiers is arranged so that the order of the nodes corresponds to the path of a branch of the tree, from a leaf to the root. In replacing, or in addition, each Nodldx node identifier may be associated with a value indicating the level of the node in the tree structure.
À l'étape suivante 1010, la fonction incrémente le compteur k. In the next step 1010, the function increments the counter k.
À l'étape suivante 1012, la fonction vérifie que le compteur k a atteint sa valeur finale, laquelle correspond au cardinal de la liste VtPvt[..] des identifiants de vote VtPvtld. In the next step 1012, the function verifies that the counter k has reached its final value, which corresponds to the cardinal of the list VtPvt [..] of the vote identifiers VtPvtld.
Si oui, alors la fonction passe à l'étape suivante 1014. Sinon, la fonction retourne à l'étape 1008. If so, then the function proceeds to the next step 1014. Otherwise, the function returns to step 1008.
À l'étape 1014, la fonction transmet une liste résultat laquelle correspond au tableau VBB[..]. Par exemple, les données du tableau VBB sont incluses dans un message adressé par le configurateur au contrôleur d'infrastructure. La fonction s'arrête à l'étape suivante 1016. In step 1014, the function transmits a result list which corresponds to the VBB [..] table. For example, the data in the VBB table is included in a message sent by the configurator to the infrastructure controller. The function stops at the next step 1016.
Le contrôleur de l'infrastructure de vote électronique reçoit du configurateur une liste correspondant à la liste VBB des identifiants de vote, dans laquelle chaque identifiant de vote est associé à une liste rangée d'identifiants de nœuds. Le contrôleur transmet à l'adresse associée de chaque identifiant de votant un message comportant la valeur d'identifiant de vote VtPvtld et la liste rangée d'identifiants de nœuds, le cas échéant accompagné des valeurs de clés NodKy et/ou des valeurs de nombre d'enfants NodChildNbr. Ces données sont récupérées sur les machines de vote VTR. En variante, les valeurs de clés ne sont pas générées par le configurateur de l'infrastructure. Chaque machine de vote adresse la liste rangée des nœuds au gestionnaire 30 qui lui adresse en retour une liste de clés privées NodKy correspondant chacune à un nœud de la liste. Dans ce cas, les données transmises par le contrôleur comprennent une adresse du gestionnaire 30 dans le réseau de l'infrastructure. The controller of the electronic voting infrastructure receives from the configurator a list corresponding to the VBB list of vote identifiers, in which each vote identifier is associated with a row list of node identifiers. The controller transmits to the associated address of each voter identifier a message comprising the vote identifier value VtPvtld and the row list of node identifiers, if appropriate accompanied by the NodKy key values and / or number values. of children NodChildNbr. This data is retrieved on the VTR voting machines. Alternatively, the key values are not generated by the infrastructure configurator. Each voting machine sends the row list of nodes to the manager 30 which in return sends a list of private keys NodKy each corresponding to a node of the list. In this case, the data transmitted by the controller includes an address of the manager 30 in the network of the infrastructure.
La figure 11 illustre un exemple de fonction principale pour un gestionnaire d'infrastructure de vote, par exemple le gestionnaire 30 de la figure 1, dans un mode de fonctionnement correspondant à la mise en place d'un scrutin. La fonction débute en une étape 1100. FIG. 11 illustrates an example of a main function for a voting infrastructure manager, for example the manager 30 of FIG. 1, in a mode of operation corresponding to the setting up of a poll. The function starts in a step 1100.
À l'étape suivante 1102, la fonction reçoit une liste rangée Brch[..] d'identifiants de nœuds. La liste rangée Brch[..] est reçue dans un message adressé depuis une machine de vote de l'infrastructure au gestionnaire de l'infrastructure. La liste Brch[..] correspond à la liste des identifiants de nœuds reçue sur la machine de vote en question. In the next step 1102, the function receives a row list Brch [..] of node identifiers. The row list Brch [..] is received in a message sent from a voting machine of the infrastructure to the infrastructure manager. The Brch [..] list corresponds to the list of node identifiers received on the voting machine in question.
À l'étape 1004, la fonction génère une valeur de clé privée pour chaque valeur d'identifiant de nœud de la liste. La clé privée correspond à un algorithme de chiffrement asymétrique à usage dans l'infrastructure de vote. Les valeurs de clé sont notées génériquement NodKy_i. In step 1004, the function generates a private key value for each node identifier value of the list. The private key corresponds to an asymmetric encryption algorithm for use in the voting infrastructure. The key values are generically noted NodKy_i.
À l'étape suivante 1006, la fonction construit un message à destination de la machine de vote désignée par l'adresse VtrAdd telle qu'elle a été reçue à l'étape 1002. In the next step 1006, the function constructs a message to the polling machine designated by the VtrAdd address as received at step 1002.
Le message comprend une liste NodPvtKy[..] de valeurs clés privées, correspondant chacune à un identifiant de nœud de la liste Brch[„], et une liste Trckrs[..] d'adresses de serveurs de mise en relation, du type par exemple du traqueur 50 des figures 1 et 2. The message comprises a list NodPvtKy [..] of private key values, each corresponding to a node identifier of the list Brch ["], and a list Trckrs [..] of addresses of connection servers, of the type for example tracker 50 of Figures 1 and 2.
La fonction se termine à l'étape suivante 1108. The function ends in the next step 1108.
Chaque machine du groupe des machines de vote reçoit un message initial comprenant une clé de chiffrement propre à cette machine de vote. Ce message est reçu via un autre médium de communication comme un courrier postal par exemple. La valeur de cette clé est noté génériquement PrsnKy_i pour la machine de vote i. Le message initial comporte en outre une liste de serveurs de mise en relation, par exemple désignés par leur adresse respective TrckrAdd. Ici, le message initial est adressé à chaque machine du groupe de machines d'administration par un gestionnaire de l'infrastructure, par exemple le gestionnaire 30 de la figure 1. L'envoi du message initial est de préférence commandé par un contrôleur de l'infrastructure, par exemple le contrôleur 10 de la figure 1. Le premier message et le second message sont envoyés séparément, sur commande d'un contrôleur d'infrastructure, par exemple le contrôleur 10 de la figure 1. Each machine in the group of voting machines receives an initial message including an encryption key specific to this voting machine. This message is received via another medium of communication such as a postal mail. The value of this key is noted generically PrsnKy_i for the voting machine i. The initial message further comprises a list of linking servers, for example designated by their respective addresses TrckrAdd. Here, the initial message is sent to each machine of the group of administration machines by an infrastructure manager, for example the manager 30 of FIG. 1. The sending of the initial message is preferably controlled by a controller of the user. infrastructure, for example the controller 10 of Figure 1. The first message and the second message are sent separately, on command of an infrastructure controller, for example the controller 10 of FIG.
Une fois qu'une machine de vote a reçu le message initial, elle est capable de participer au scrutin. Elle peut fonctionner selon le second mode opérationnel de l'infrastructure. Once a voting machine has received the initial message, it is able to participate in the ballot. It can operate according to the second operational mode of the infrastructure.
La figure 12 illustre une fonction principale pour une machine de vote d'une infrastructure de vote électronique, par exemple l'une des machines VTR_1, VTR_2 et VTR_3 de la figure 2, selon un mode opérationnel correspondant au déroulement d'un scrutin. FIG. 12 illustrates a principal function for a voting machine of an electronic voting infrastructure, for example one of the machines VTR_1, VTR_2 and VTR_3 of FIG. 2, according to an operational mode corresponding to the conduct of a poll.
La machine dispose d'une valeur d'identifiant de vote VtPvtld, d'une liste rangée d'identifiants de nœuds Brch[„], et, pour chaque identifiant de nœud Nodld de cette liste, d'une valeur entière NodChldNbr correspondant à un cardinal de nœud et d'une valeur de clé de chiffrement NodKy. The machine has a vote identifier value VtPvtld, a row list of node identifiers Brch ["], and, for each node identifier Nodld of this list, an integer value NodChldNbr corresponding to a node cardinal and a NodKy encryption key value.
La fonction débute par une étape 1200. The function starts with a step 1200.
À l'étape suivante 1202, la fonction reçoit un jeu de données PllMat nécessaire au déroulement du scrutin. Ces données peuvent, dans leur ensemble, être vues comme du matériel de vote. En particulier, ces données sont reçues grâce à un message d'une source de l'infrastructure. L'adresse de la source en question est mise à disposition de la machine de vote par un ou plusieurs serveurs de mise en relation, par exemple le traqueur 50 des figures 1 et 2. Les données en question peuvent être reçues sous une forme chiffrée par le contrôleur 10. Le message peut également provenir d'un configurateur de l'infrastructure de vote. L'adresse de destination de ce message peut différer de l'adresse connue des traqueurs de l'infrastructure de vote. Par exemple, les traqueurs connaissent les adresses de protocole internet des machines de vote et le message en question est envoyé à une adresse de courrier électronique en relation avec l'identifiant de votant. À l'étape suivante 1204, la fonction déchiffre le matériel de scrutin PllMat à l'aide d'une clé de chiffrement PrsnKy_i de la machine i. Cette clé peut être transmise par un autre médium comme un courrier postal par exemple. À l'étape suivante 1206, la fonction commande une restitution de la question et des réponses possibles. In the next step 1202, the function receives a PllMat data set necessary for the conduct of the poll. These data can, as a whole, be seen as voting material. In particular, this data is received through a message from a source of the infrastructure. The address of the source in question is made available to the voting machine by one or more linking servers, for example the tracker 50 of FIGS. 1 and 2. The data in question can be received in encrypted form by the controller 10. The message may also come from a configurator of the voting infrastructure. The destination address of this message may differ from the known address of the trackers of the voting infrastructure. For example, the trackers know the internet protocol addresses of the voting machines and the message in question is sent to an email address in connection with the voter ID. In the next step 1204, the function decrypts the voting material PllMat using an encryption key PrsnKy_i of the machine i. This key can be transmitted by another medium such as a postal mail. In the next step 1206, the function controls a return of the question and the possible answers.
À l'étape suivante 1208, la fonction reçoit l'expression d'un vote Chce, par exemple sous la forme d'un choix ou, le cas échéant, d'une réponse libre. La fonction crée un tableau résultat Tlly[..] pour y stocker le résultat du vote. Par exemple, la dimension du tableau Tlly[..] correspond au nombre de réponses possibles à la question posée. Et la fonction stocke la valeur 1 (une) en tant qu'élément dont l'index correspond au choix de l'étape 1106. In the next step 1208, the function receives the expression of a Chce vote, for example in the form of a choice or, if necessary, of a free answer. The function creates a result table Tlly [..] to store the result of the vote. For example, the dimension of the table Tlly [..] corresponds to the number of possible answers to the question asked. And the function stores the value 1 (one) as an element whose index corresponds to the choice of step 1106.
À l'étape suivante 1210, la fonction génère une valeur de signature SignVal à l'aide de la clé de chiffrement NodKy associée à l'identifiant de nœud Nodld de plus bas niveau dans la liste Brch[..] et du résultat du vote de l'étape précédente, par exemple le tableau résultat Rslt[..]. In the next step 1210, the function generates a SignVal signature value using the NodKy encryption key associated with the lowest-level Nodld node identifier in the Brch [..] list and the result of the vote. from the previous step, for example the result table Rslt [..].
À l'étape 1212, la fonction construit un objet CrptBx d'encapsulation des résultats du vote. Un objet de type CrptBx peut être vu comme une urne électronique. In step 1212, the function constructs a CrptBx object for encapsulating the voting results. An object of type CrptBx can be seen as an electronic urn.
Un objet CrptBx comprend, ou met en relation, une valeur d'identifiant CrptBxId, des données de résultat de vote, par exemple sous la forme d'une liste CrptBxTlly[„], et une valeur de signature CrptBxSgn. Un objet de type CrptBx peut par exemple prendre la forme d'un triplet rassemblant ces trois éléments. A CrptBx object includes, or relates to, a CrptBxId identifier value, vote result data, for example in the form of a CrptBxTlly list ["], and a CrptBxSgn signature value. An object of CrptBx type can for example take the form of a triplet gathering these three elements.
À l'étape 1212, la fonction construit un objet de type CrptBx avec les données relatives au résultat du vote du l'étape 1208. L'identifiant CrptBxId correspond à l'identifiant de nœud Nodld de plus bas niveau dans la liste Brch[..] de la machine de vote, typiquement le premier identifiant de cette liste. La liste CrptBxTlly[..] correspond à la liste Rslt[..]. La valeur CrptBxSgn correspond à la valeur de signature SignVal de l'étape 1210. La fonction crée en outre localement un tableau CrtCrptBx[..] de données en attente comprenant une valeur CrtCrptBxId formant pointeur vers l'identifiant de nœud de plus bas niveau dans la liste Brch[..] de la machine de vote, et l'objet CrptBx qui vient d'être créé. La fonction se termine à l'étape suivante 1214. In step 1212, the function constructs a CrptBx type object with the voting result data from step 1208. The CrptBxId identifier corresponds to the lowest-level Nodld node identifier in the Brch [. .] of the voting machine, typically the first identifier of this list. The CrptBxTlly list [..] corresponds to the list Rslt [..]. The value CrptBxSgn corresponds to the SignVal signature value of step 1210. The function also locally creates a pending data table CrtCrptBx [..] including a pointer value CrtCrptBxId to the lowest-level node identifier in the Brch [..] list of the voting machine, and the CrptBx object that has just been created. The function ends in the next step 1214.
Un vote en lui-même correspond à processus purement local, qui concerne une machine de vote de l'infrastructure. Un vote ne nécessite aucune communication de la machine de vote en question avec les machines homologues de l'infrastructure de vote. Chaque vote résulte localement en la création d'un objet CrptBx et d'un tableau CrtCrptBx[..] contenant cet objet, mémorisé sur la machine de l'infrastructure où le vote a eu lieu. La figure 13 illustre une première fonction pour une machine de vote quelconque d'une infrastructure de vote électronique selon le troisième mode opérationnel qui correspond au dépouillement des votes. A vote in itself corresponds to a purely local process, which concerns an infrastructure voting machine. A vote does not require any communication of the voting machine in question with the homologous machines of the voting infrastructure. Each vote results locally in the creation of a CrptBx object and a table CrtCrptBx [..] containing this object, stored on the machine of the infrastructure where the vote took place. Figure 13 illustrates a first function for any voting machine of an electronic voting infrastructure according to the third operational mode which corresponds to the counting of the votes.
La fonction débute en une étape 1300. The function starts in a step 1300.
À l'étape suivante 1302, la fonction construit un message d'interrogation à destination d'au moins un traqueur de l'infrastructure de vote, par exemple le traqueur 50 de la figure 2. In the next step 1302, the function constructs an interrogation message for at least one tracker of the voting infrastructure, for example the tracker 50 of FIG. 2.
À l'étape suivante 1304, la fonction reçoit en réponse une liste VtrAdd[..] de machines homologues de l'infrastructure de vote, par exemple certaines au moins des machines du groupe de machines 40 de la figure 2. Les machines sont identifiées par leur adresse sur l'infrastructure réseau. La liste VtrAdd [..] peut ne correspondre qu'à un sous-ensemble de machines de vote de l'infrastructure. Par exemple, les machines de la liste VtrAdd[..] sont sélectionnées aléatoirement parmi les adresses maintenues dans le traqueur ou le traqueur en question ne maintient que les adresses de certaines des machines de vote de l'infrastructure. In the next step 1304, the function receives in response a list VtrAdd [..] of homologous machines of the voting infrastructure, for example at least some of the machines of the group of machines 40 of FIG. 2. The machines are identified by their address on the network infrastructure. The VtrAdd [..] list may only correspond to a subset of the infrastructure's voting machines. For example, the machines in the VtrAdd list [..] are randomly selected from the addresses maintained in the tracker, or the tracker in question only maintains the addresses of some of the voting machines in the infrastructure.
À l'étape suivante 1306, la fonction construit une requête sous la forme d'un message comportant ici une valeur NodIdQry correspondant à un identifiant de nœud. Cette valeur NodIdQry correspond à un élément de la liste Brch[..]. Cette valeur correspond à l'élément de plus bas niveau inconnu de la liste Brch[..]. Dans un mode de réalisation cette valeur correspond à la valeur CrtCrptBxId. La fonction émet une requête à destination de chacune des adresses de la liste VtrAdd[..]. En variante, la requête pourrait comprendre plusieurs identifiants de nœuds de la liste Brch[..]. In the next step 1306, the function constructs a request in the form of a message here comprising a NodIdQry value corresponding to a node identifier. This NodIdQry value corresponds to an element of the Brch [..] list. This value is the lowest-level element unknown in the Brch [..] list. In one embodiment, this value corresponds to the value CrtCrptBxId. The function issues a request to each of the addresses in the VtrAdd [..] list. Alternatively, the request could include several node identifiers of the Brch [..] list.
À l'étape suivante 1308, la fonction traite une réponse reçue sous la forme d'un message émis depuis l'une des adresses de la liste VtrAdd[..]. Le message comporte un objet de type CrptBx. L'identifiant CrptBxId correspond à l'un des identifiants de nœuds de la liste Brch[..] de la machine à l'origine de la réponse. Selon l'avancement de cette machine, l'identifiant CrptBxId peut correspondre : In the next step 1308, the function processes a response received in the form of a message sent from one of the addresses of the list VtrAdd [..]. The message contains an object of type CrptBx. The identifier CrptBxId corresponds to one of the node identifiers of the Brch list [..] of the machine at the origin of the response. Depending on the progress of this machine, the CrptBxId identifier may correspond to:
- à l'identifiant NodldQry du nœud demandé ; ou  the NodldQry identifier of the requested node; or
- à un identifiant de nœud de niveau supérieur à l'identifiant NodldQry dans la liste Brch[..].  - a node identifier higher than the NodldQry identifier in the Brch [..] list.
Dans ce dernier cas, l'objet CrptBx ne contient pas nécessairement la réponse attendue, c'est-à-dire un objet correspondant à l'identifiant NodldQry. In the latter case, the CrptBx object does not necessarily contain the expected response, that is, an object corresponding to the NodldQry identifier.
À l'étape suivante 1310, la fonction vérifie la cohérence des données contenues dans l'objet CrptBx et, le cas échéant, traite ces données en intégrant l'objet CrptBx dans le tableau CrtCrptBx[„] en attente. La fonction peut appeler une sous-fonction de vérification. In the next step 1310, the function checks the consistency of the data contained in the CrptBx object and, if necessary, processes this data by integrating the CrptBx object into the pending CrtCrptBx ["] array. The function can call a verification subfunction.
Les étapes 1308 et 1310 sont recommencées à chaque réception d'une réponse comportant un objet CrptBx. L'étape 1304 correspondant à l'interrogation d'un traqueur est renouvelée, par exemple à intervalles de temps réguliers. La fonction se termine à l'étape suivante 1312. Steps 1308 and 1310 are restarted each time a response containing a CrptBx object is received. Step 1304 corresponding to the interrogation of a tracker is renewed, for example at regular time intervals. The function ends in the next step 1312.
La figure 14 illustre une seconde fonction pour une machine de vote quelconque selon le troisième mode opérationnel. Cette seconde fonction traite les messages de type requête reçu par une machine de vote et provenant d'une machine de vote homologue de l'infrastructure de vote électronique. Fig. 14 illustrates a second function for any voting machine according to the third operational mode. This second function processes the request type messages received by a voting machine and from a voting machine homologous to the electronic voting infrastructure.
La fonction débute en une étape 1400. À l'étape suivante 1402, la fonction reçoit une requête sous la forme d'un message adressé par une machine de vote homologue de l'infrastructure de vote. La machine de vote émettrice est identifiée par une adresse de cette machine dans l'infrastructure réseau. Le message reçu comporte un identifiant de nœud NodIdQry. The function starts in a step 1400. In the next step 1402, the function receives a request in the form of a message sent by a voting machine homologous to the voting infrastructure. The sending voting machine is identified by an address of this machine in the network infrastructure. The received message comprises a NodIdQry node identifier.
À l'étape suivante 1404, la fonction vérifie que l'identifiant NodIdQry se trouve dans CrtCrptBx. Sinon la fonction s'arrête à l'étape 1408. In the next step 1404, the function verifies that the identifier NodIdQry is in CrtCrptBx. Otherwise the function stops at step 1408.
Si oui, alors, à l'étape suivante 1406, la fonction adresse un message de réponse à la machine émettrice. Dans une forme de réalisation, la fonction est agencée pour répondre de manière aléatoire au message reçu, en particulier selon un taux de réponse fixé en tant que paramètre, par exemple 80%. La fonction peut en outre maintenir une liste des machines émettrices et/ou des identifiant NodIdQry demandés. Ceci permet en particulier à la fonction de ne plus répondre lorsqu'une même machine et/ou un même identifiant NodIdQry sont trop souvent demandés. If yes, then, in the next step 1406, the function sends a response message to the sending machine. In one embodiment, the function is arranged to respond randomly to the received message, in particular according to a response rate set as a parameter, for example 80%. The function may further maintain a list of the issuing machines and / or NodIdQry IDs requested. This allows the function in particular to stop responding when the same machine and / or the same NodIdQry identifier are too often requested.
Le message de réponse comprend au moins un objet CrptBx du tableau CrtCrptBx[..] en attente sur la machine de vote. Ici, la fonction adresse un unique objet CrptBx. Ceci permet d'améliorer encore la confidentialité du dépouillement. En variante, la fonction pourrait renvoyer l'ensemble des objets de type CrptBx disponibles dans le tableau CrtCrptBx[..]. The response message includes at least one CrptBx object from the CrtCrptBx array [..] waiting on the voting machine. Here, the function addresses a single CrptBx object. This further improves the confidentiality of the counting. Alternatively, the function could return all the CrptBx objects available in the CrtCrptBx [..] table.
Selon l'état d'avancement de la machine de vote, c'est-à-dire de l'identifiant de la liste vers laquelle pointe la valeur CrtCrptBxId, l'objet CrptBx en réponse peut correspondre à l'identifiant NodIdQry ou à un identifiant supérieur dans la liste Brch[..]. Cet objet CrptBx ne contient pas nécessairement la réponse attendue par la machine à l'origine du message de requête. La fonction peut adresser une partie du tableau CrtCrptBx[..] qui correspond à un sur-ensemble de ce qui est demandé, à savoir l'identifiant NodIdQry, éventuellement sans les données correspondant à l'identifiant NodIdQry. Le contenu de la réponse peut dépendre du résultat d'un tirage aléatoire implémenté par la fonction, en particulier lorsque la machine dispose de plusieurs objets CrptBx correspondant à l'identifiant NodIdQry. According to the progress of the voting machine, that is to say the identifier of the list to which the value CrtCrptBxId points, the object CrptBx in response can correspond to the identifier NodIdQry or to a upper identifier in the Brch [..] list. This CrptBx object does not necessarily contain the expected response of the machine that is causing the request message. The function can address part of the table CrtCrptBx [..] which corresponds to a superset of what is requested, namely the identifier NodIdQry, possibly without the data corresponding to the identifier NodIdQry. The content of the response may depend on the result of a random draw implemented by the function, in particular when the machine has several CrptBx objects corresponding to the NodIdQry identifier.
La fonction se termine également à la suite de l'étape 1408. En outre, à chaque fois qu'un message de réponse est reçu et vérifié, la machine de vote peut exécuter une fonction de mise à jour portant sur le tableau CrtCrptBx[..] en attente et les objets CrptBx qu'il contient. Cette fonction vérifie si le nombre de signatures différentes contenues dans les objets CrptBx du tableau en attente CrtCrptBx[..] correspond à la valeur du cardinal associé à l'identifiant de nœud de la liste Brch[..] vers laquelle pointe la valeur CrtCrptBxId. Si oui, alors la fonction de mise à jour modifie la valeur de CrptCrpBxId pour qu'elle pointe vers l'identifiant de nœud de rang juste supérieur dans la liste Brch[..] de la machine de vote. Et la fonction crée un nouvel objet de type CrptBx à partir des objets CrptBx du tableau en attente. Les anciens objets CrptBx sont remplacés par le nouveau. La fonction fait appel à une fonction d'agrégation qui met à jour la liste CrptBxTlly[..] du nouvel objet à partir des résultats de votes des anciens objets CprtBx correspondant à un nœud de rang inférieur dans la liste Brch[..] de la machine de vote. The function also ends after step 1408. In addition, each time a response message is received and verified, the voting machine can perform an update function on the pending CrtCrptBx [..] table and the CrptBx objects it contains. This function checks whether the number of different signatures contained in the CrptBx objects of the waiting table CrtCrptBx [..] corresponds to the cardinal value associated with the node identifier of the Brch list [..] to which the CrtCrptBxId value points. . If so, then the update function changes the value of CrptCrpBxId so that it points to the just higher rank node ID in the Brch [..] list of the voting machine. And the function creates a new object of type CrptBx from the CrptBx objects of the pending array. Old CrptBx objects are replaced by the new one. The function uses an aggregate function that updates the CrptBxTlly [..] list of the new object from the voting results of the old CprtBx objects corresponding to a lower-ranked node in the Brch [..] list. the voting machine.
La figure 15 illustre une fonction Bld() 1500 comme exemple de fonction d'agrégation d'objets CrptBx. Figure 15 illustrates a function Bld () 1500 as an example of CrptBx object aggregation function.
La fonction Bld() 1500 reçoit en entrée plusieurs objets CrptBx. L'identifiant CrptBxId de ces objets correspond à l'identifiant d'un même nœud de la liste Brch[..] de la machine de vote. The Bld () 1500 function receives several CrptBx objects as input. The CrptBxId identifier of these objects corresponds to the identifier of the same node of the Brch list [..] of the voting machine.
La fonction Bld() 1500 comprend une sous-fonction de concaténation Cnct() 1502 qui est appelée avec les valeurs de signature CrptBxSgn des objets CrptBx. La fonction Cnct() 1502 délivre en sortie une valeur d'empreinte HshVal, ou de hachage, résultant de la concaténation de ces valeurs de signature. The Bld () function 1500 includes a concatenation subfunction Cnct () 1502 that is called with the CrptBxSgn signature values of the CrptBx objects. The function Cnct () 1502 outputs an HshVal, or hash, fingerprint value resulting from the concatenation of these signature values.
La fonction Bld() 1500 comprend une sous-fonction d'interrogation Prt() 1504. La fonction Prt() 1504 est appelée avec la valeur CrptBxId laquelle correspond à un identifiant de nœud dans la liste Brch[..] de la machine de vote. La fonction Prt() délivre en sortie une valeur d'identifiant de nœud CrtNodld qui correspond au nœud de rang juste supérieur dans la liste Brch[..] au nœud identifié par la valeur CrptBxId. Par exemple, la fonction Prt() renvoie l'identifiant du nœud qui suit le nœud identifié par la valeur CrptBxId dans la liste rangée Brch[..]. The function Bld () 1500 includes a query subfunction Prt () 1504. The function Prt () 1504 is called with the value CrptBxId which corresponds to a node identifier in the Brch list [..] of the machine. vote. The function Prt () outputs a CrtNodld node identifier value which corresponds to the node of rank just above in the Brch list [..] at the node identified by the value CrptBxId. For example, the Prt () function returns the identifier of the node that follows the node identified by the CrptBxId value in the Brch [..] row list.
La fonction Bld() 1500 comprend encore une sous-fonction d'agrégation Mrg() 1506. La fonction Mrg() 1506 est appelée avec les résultats de votes contenus dans les objets CrptBx reçus en entrée, en particulier leurs listes CrptBxTlly[..]. La fonction Mrg() 1506 établit des données consolidées à partir de ces listes CrptBxTlly[..] qu'elle stocke par exemple dans une nouvelle liste CrtTlly[..]. La consolidation peut dépendre de la nature du scrutin. Dans un mode de réalisation simple, la consolidation consiste à compter les voix exprimées pour chacun des choix possibles. Dans ce cas, la fonction Mrg() additionne des vecteurs résultats. The function Bld () 1500 also includes an aggregation subfunction Mrg () 1506. The Mrg () function 1506 is called with the voting results contained in the CrptBx objects received as input, in particular their CrptBxTlly lists [.. ]. The function Mrg () 1506 establishes consolidated data from these lists CrptBxTlly [..] that it stores for example in a new list CrtTlly [..]. Consolidation may depend on the nature of the vote. In a simple embodiment, the consolidation consists in counting the voices expressed for each of the possible choices. In this case, the Mrg () function adds the result vectors.
La fonction Bld() 1500 comprend une fonction de hachage Hsh() 1508, ou d'empreinte. La fonction Hsh() 1508 est appelée avec la valeur HshVal délivrée par la fonction Cnct() 1502, la valeur CrtNodld délivrée par la fonction Prt() 1504 et la liste CrtTlly[..] délivrée par la fonction Mrg() 1506. La fonction Hsh() 1508 délivre en sortie une seconde valeur d'empreinte HshVal2 résultant de l'application d'une fonction de hachage sur les données d'entrée. La fonction Bld() 1500 comprend encore une fonction de chiffrement Crpt() 1510. La fonction Crpt() 1510 réalise un chiffrement à partir de valeurs d'entrée. La fonction Crpt() 1510 reçoit la valeur HshVal résultant de la fonction Cnct() 1502, l'identifiant de nœud correspondant aux identifiants CrptBxId et la valeur HshVal2 résultant de la fonction Hsh() 1508. La fonction Crpt() 1510 utilise comme clé de chiffrement la valeur associée à l'identifiant de nœud correspondant à la valeur CrtNodld dans la liste Brch. The Bld () function 1500 includes a hash function Hsh () 1508, or footprint. The function Hsh () 1508 is called with the value HshVal delivered by the function Cnct () 1502, the value CrtNodld delivered by the function Prt () 1504 and the list CrtTlly [..] delivered by the function Mrg () 1506. The function Hsh () 1508 outputs a second HshVal2 fingerprint value resulting from the application of a hash function on the input data. The Bld () function 1500 also includes a Crpt () 1510 encryption function. The Crpt () function 1510 performs encryption from input values. The function Crpt () 1510 receives the value HshVal resulting from the function Cnct () 1502, the node identifier corresponding to the identifiers CrptBxId and the value HshVal2 resulting from the function Hsh () 1508. The function Crpt () 1510 uses as key the value associated with the node identifier corresponding to the value CrtNodld in the list Brch.
La fonction Bld() 1500 comprend enfin une fonction d'encapsulation Bxg() 1512. La fonction Bxg() 1512 crée un objet de type CrptBx à partir des données qu'elle reçoit. La fonction Bxg() 1512 attribue au nouvel objet CrptBx : le résultat de la fonction Crpt() 1510 en tant que signature CrptBxSgn, la valeur de l'identifiant CrtNodld en tant que valeur CrptBxId et la liste CrtTlly[..] en tant que données de résultat CprtBxTllyl..]. Finally, the Bld () function 1500 includes a Bxg () 1512 encapsulation function. The Bxg () function 1512 creates an object of the CrptBx type from the data it receives. The function Bxg () 1512 assigns to the new object CrptBx: the result of the function Crpt () 1510 as a signature CrptBxSgn, the value of the identifier CrtNodld as a value CrptBxId and the list CrtTlly [..] as result data CprtBxTllyl ..].
La figure 16 illustre une fonction Vrf() de vérification d'un objet de type CrptBx. La fonction Vrf() comprend une sous-fonction de désencapsulation Nbxg 1602, qui reçoit en entrée un objet de type CrptBx. Elle délivre en sortie les données contenues dans l'objet CrptBx, en particulier une valeur d'identifiant CrptBxId, une liste CrptBxTlly[..] de résultats de vote, une valeur de signature CrptBxSgn. FIG. 16 illustrates a function Vrf () for checking an object of the CrptBx type. The Vrf () function comprises a Nbxg 1602 desencapsulation subfunction, which receives as input an object of the CrptBx type. It outputs the data contained in the CrptBx object, in particular a CrptBxId identifier value, a CrptBxTlly list [.] Of voting results, a CrptBxSgn signature value.
La fonction Vrf() comprend en outre une sous-fonction de déchiffrement Dcph 1604. La sous-fonction Dcph est appelée avec la valeur CrptBxSgn résultant de l'appel de la fonction Nbxg 1602, et une valeur de clé associée, dans la machine de vote, à l'identifiant correspondant à la valeur d'identifiant CrptBxId. La fonction Dcph 1604 délivre une première valeur de signature HshVal qui devrait correspondre à la concaténation des valeurs de signature des objets CrptBx agrégés dans l'objet CrptBx vérifié, une seconde valeur de signature HshVal2 qui devrait correspondre à la seconde valeur d'empreinte HshVal2 décrite en relation avec la figure 15 et une valeur d'identifiant IdVal qui devrait correspondre à un identifiant de nœud de la liste Brch[..] . The function Vrf () further comprises a decryption sub-function Dcph 1604. The subfunction Dcph is called with the value CrptBxSgn resulting from the call of the function Nbxg 1602, and an associated key value, in the machine. vote, with the identifier corresponding to the CrptBxId identifier value. Dcph 1604 provides a first HshVal signature value which should correspond to the concatenation of the signature values of the aggregated CrptBx objects in the verified CrptBx object, a second HshVal2 signature value which should correspond to the second HshVal2 imprint value described in connection with Fig. 15 and an IdVal identifier value which should correspond to a node identifier of the Brch list [..].
La fonction Vrf() comprend aussi une sous-fonction d'empreinte Hsh() 1606 qui produit une valeur d'empreinte HshVaB à partir de valeurs d'entrées. Ici, la fonction Hsh() 1606 est appelée avec la valeur d'identifiant CrptBxId, les données de résultat de vote CrptBxTlly[..] et la première valeur d'empreinte HshVall résultant de la fonction Nbxg 1602. Il en résulte une troisième valeur d'empreinte HshVaB par hachage. The Vrf () function also includes an Hsh () 1606 footprint subfeature that produces an HshVaB footprint value from input values. Here, the function Hsh () 1606 is called with the credential value CrptBxId, the vote result data CrptBxTlly [..] and the first HshVall imprint value resulting from the function Nbxg 1602. This results in a third value HshVaB fingerprint by hashing.
La fonction Vrf() comprend une sous-fonction de comparaison Cmpr() 1608. La fonction Cmpr() 1608 est appelée avec la valeur HshVaB résultant de l'appel de la fonction Hsh() 1606 et la seconde valeur d'empreinte HshVal2 résultant de l'appel de la fonction Dcph(). La fonction Cmpr() 1608 délivre une valeur booléenne qui correspond à une comparaison de ces valeurs. The function Vrf () comprises a comparison subfunction Cmpr () 1608. The function Cmpr () 1608 is called with the value HshVaB resulting from the call of the function Hsh () 1606 and the second impression value HshVal2 resulting the call to the Dcph () function. The function Cmpr () 1608 delivers a Boolean value that corresponds to a comparison of these values.
La fonction Vrf() comprend une première sous-fonction de recherche Srchl() 1610. La fonction Srchl() 1610 est appelée avec la valeur d'identifiant IdVal résultant de l'appel de la fonction Dcph() 1604 et la liste Brch[„] des identifiants de nœuds respectifs de la machine de vote. La fonction Srchl() 1610 retourne une valeur booléenne qui correspond à la présence ou non de la valeur d'identifiant IdVal dans la liste Brch[..]. La fonction Vrf() comprend une seconde sous-fonction de recherche Srch2() 1612. La fonction Srch2() est appelée avec la valeur d'empreinte HshVall résultant de l'appel de la fonction Dcph() 1604 et une valeur d'empreinte CrrtHshVal correspondant à la concaténation des valeurs de signature des objets CrptBx dans le tableau en attente. La fonction Srch2() retourne une valeur booléenne qui correspond à la présence ou non de la valeur d'empreinte du niveau correspondant à IdVal dans HshVall. The function Vrf () comprises a first search sub-function Srchl () 1610. The function Srchl () 1610 is called with the identifier value IdVal resulting from the call of the function Dcph () 1604 and the list Brch [ "] Respective node identifiers of the voting machine. The Srchl () function 1610 returns a Boolean value that corresponds to the presence or absence of the IdVal identifier value in the Brch [..] list. The Vrf () function includes a second Srch2 () search subfunction 1612. The Srch2 () function is called with the HshVall fingerprint value resulting from the call to the Dcph () 1604 function and a fingerprint value CrrtHshVal corresponding to the concatenation of the signature values of CrptBx objects in the pending array. The Srch2 () function returns a Boolean value that corresponds to the presence or absence of the fingerprint value of the level corresponding to IdVal in HshVall.
La fonction Srchl() 1610 est en outre agencée ici de manière que la valeur booléenne qu'elle retourne corresponde au résultat de l'appel de la fonction Srch2() selon une table de vérité correspondant à une porte AND. The function Srchl () 1610 is furthermore arranged here so that the Boolean value it returns corresponds to the result of calling the function Srch2 () according to a truth table corresponding to an AND gate.
La fonction Vrf() 1600 comprend enfin une fonction logique ND() 1614 qui délivre une valeur booléenne résultant de la comparaison de valeurs d'entrée selon une table de vérité correspondant à une fonction AND. La fonction ND() 1614 est appelée avec la valeur booléenne BoolVall résultant de la fonction Cmpr() 1608 et la valeur booléenne BoolVal2 résultant de l'appel de la fonction Srchl() 1610. The function Vrf () 1600 finally comprises a logic function ND () 1614 which delivers a Boolean value resulting from the comparison of input values according to a truth table corresponding to an AND function. The ND () function 1614 is called with the Boolean value BoolVall resulting from the function Cmpr () 1608 and the Boolean value BoolVal2 resulting from the call of the function Srchl () 1610.
On vient de décrire une machine de vote électronique et une infrastructure de vote électronique comprenant une telle machine. Celles-ci présentent les particularités suivantes : We have just described an electronic voting machine and an electronic voting infrastructure comprising such a machine. These have the following particularities:
Ni le contrôleur, ni le configurateur, ni le gestionnaire de l'infrastructure ne sont actifs dans les modes opérationnels correspondant au scrutin et au dépouillement.  Neither the controller nor the configurator nor the infrastructure manager are active in the operational modes corresponding to the polling and counting.
La structure arborescente qui organise le dépouillement n'est jamais matérialisée : une machine de vote ne possède que les identifiants correspondant à une branche de cet arbre.  The tree structure that organizes the counting is never materialized: a voting machine only has the identifiers corresponding to a branch of this tree.
Le traqueur maintient une liste d'adresses correspondant aux nœuds qui ont, à un moment donné, participé au mécanisme de vote. Les machines correspondant aux nouveaux nœuds entrants peuvent se manifester auprès du traqueur. Ce dernier maintient une liste ordonnée par date d'arrivée des nœuds. À chaque nouvelle connexion, le traqueur renvoie une sous-liste d'adresses à contacter. Par la suite, si une machine ne trouve plus de nouveaux votes à intégrer, elle peut recontacter le traqueur pour obtenir une nouvelle sous-liste d'adresses afin de pouvoir relancer le mécanisme de recherche des valeurs de vote. The tracker maintains a list of addresses corresponding to the nodes that at one point participated in the voting mechanism. The machines corresponding to the new incoming nodes can be shown to the tracker. The latter maintains an ordered list by date of arrival of the nodes. At each new connection, the tracker returns a sub-list of addresses to contact. Then, if a machine does not find new votes to integrate, it can contact the tracker to get a new sub-list of addresses in order to be able to restart the search mechanism of the voting values.
Les données de vote sont rassemblées sous une forme désordonnée qui ne peut être mise en relation avec les machines de vote.  The voting data are collected in a messy form that can not be related to the voting machines.
- Lors du dépouillement, chaque machine de vote s'efforce de calculer des résultats partiels, correspondant chacun à un nœud de la structure arborescente, de la feuille à la racine de cet arbre. Pour ce faire, une machine de vote va chercher les données de vote auprès de machines homologues qui calculent des résultats partiels relatifs à des nœuds éventuellement différents (supérieurs). - During the counting, each voting machine tries to calculate partial results, each corresponding to a node of the tree structure, from the leaf to the root of this tree. To do this, a voting machine will look for voting data from peer machines that calculate partial results for possibly different (higher) nodes.
- L'équilibre de la structure arborescente diminue les capacités à distinguer entre les résultats correspondant à des branches différentes de l'arbre. - The balance of the tree structure decreases the ability to distinguish between the results corresponding to different branches of the tree.
Toute machine de l'infrastructure réseau peut définir et lancer un processus de vote électronique et non seulement le configurateur.  Any machine in the network infrastructure can define and launch an e-voting process and not just the configurator.
L'infrastructure peut fonctionner sur la base de protocoles de communication différents du protocole internet. En particulier des protocoles différents peuvent être utilisés pour la mise en place du scrutin et de son dépouillement.  The infrastructure can operate on the basis of different communication protocols of the internet protocol. In particular, different protocols can be used for setting up the ballot and its counting.
Une machine de vote pourrait répondre aux requêtes avec l'ensemble des objets CrptBx dont elle dispose, indépendamment du rang dans lequel se trouve la machine émettrice.  A voting machine could answer queries with all the CrptBx objects it has, regardless of the rank of the sending machine.
L'invention n'est pas limitée aux modes de réalisation décrits ci-avant à titre d'exemple uniquement. Elle englobe toutes les variantes que pourra envisager l'homme de l'art. The invention is not limited to the embodiments described above by way of example only. It encompasses all the variants that can be considered by those skilled in the art.

Claims

Revendications claims
1. Machine de vote électronique du type comprenant : An electronic voting machine of the type comprising:
- de la mémoire (400) pour stocker une liste rangée d'identifiants, et au moins un tableau de données en attente avec un pointeur vers un identifiant de la liste rangée d'identifiants ; memory (400) for storing a row of identifiers, and at least one table of pending data with a pointer to an identifier of the row of identifiers;
- une interface de communication (440) ; a communication interface (440);
- une unité centrale d'ordinateur (410) capable d'interaction avec la mémoire (400) et l'interface de communication (440) pour exécuter :  a computer central unit (410) capable of interacting with the memory (400) and the communication interface (440) to execute:
une première fonction capable de traiter un message en vérifiant une première condition portant sur une comparaison d'un contenu dudit message aux identifiants de la liste rangée d'identifiants respectivement, et, le cas échéant, en complétant le tableau en attente avec des données du message relatives à un vote ;  a first function capable of processing a message by verifying a first condition relating to a comparison of a content of said message with the identifiers of the row of identifiers respectively, and, where appropriate, by completing the table waiting with data from the message relating to a vote;
une seconde fonction capable de traiter un message en vérifiant une seconde condition portant sur une comparaison du contenu dudit message aux identifiants de la liste rangée d'identifiants, et, le cas échéant, en construisant un message avec l'identifiant de la liste vers lequel pointe le tableau en attente et certaines au moins des données du tableau en attente ;  a second function capable of processing a message by verifying a second condition relating to a comparison of the content of said message to the identifiers of the list of identifiers, and, if necessary, by constructing a message with the identifier of the list to which points the table on hold and at least some of the data in the pending table;
- un contrôleur (410) agencé pour :  a controller (410) arranged for:
émettre une requête à destination de machines de vote électronique homologues, la requête portant sur l'identifiant vers lequel pointe le tableau en attente et appeler la première fonction avec chaque message de réponse,  issue a request to peer electronic voting machines, the request for the identifier to which the waiting array points and call the first function with each response message,
appeler la seconde fonction à chaque fois qu'une requête est reçue d'une machine de vote électronique homologue, et  calling the second function each time a request is received from a peer electronic voting machine, and
modifier conditionnellement le pointeur du tableau de données en attente vers un identifiant de la liste rangée de rang supérieur en fonction des données du tableau en attente.  conditionally changing the pending data table pointer to an identifier of the higher ranked row list based on the data in the pending table.
2. Machine selon la revendication 1 dans laquelle les identifiants de la liste rangée désigne un nœud d'une structure arborescente, la liste correspondant à une partie au moins d'une branche de la structure arborescente. 2. Machine according to claim 1 wherein the identifiers of the row list denotes a node of a tree structure, the list corresponding to at least part of a branch of the tree structure.
3. Machine selon l'une des revendications 1 et 2, dans laquelle la première fonction complète le tableau de données en attente avec des données du message relatives à une valeur de signature, la seconde fonction construit le message avec une valeur de signature, et le pointeur du tableau de données en attente est modifié en fonction d'un résultat d'un test portant sur les signatures contenues dans le tableau en attente. 3. Machine according to one of claims 1 and 2, wherein the first function completes the data table pending with message data relating to a signature value, the second function constructs the message with a signature value, and the pointer of the pending data array is changed based on a result of a signature test contained in the pending array.
4. Machine selon l'une des revendications précédentes, dans laquelle la mémoire stocke une collection de valeurs entières associées chacune à un identifiant respectif de la liste rangée d'identifiants, et le pointeur du tableau de données en attente est modifié en fonction d'un résultat d'un test portant sur la valeur entière associée à l'identifiant vers lequel pointe le tableau de données en attente. 4. Machine according to one of the preceding claims, wherein the memory stores a collection of integer values each associated with a respective identifier of the row list of identifiers, and the pointer of the table of pending data is modified according to a result of a test of the integer value associated with the identifier to which the pending data array points.
5. Machine selon l'une des revendications précédentes, dans laquelle le contrôleur est agencé pour émettre une requête préalable à destination d'un serveur de mise en relation et émettre une requête à destination de certaines au moins des machines de vote électronique homologues correspondant à des adresses reçues du serveur de mise en relation. 5. Machine according to one of the preceding claims, wherein the controller is arranged to issue a prior request to a connection server and issue a request to some at least peer electronic voting machines corresponding to addresses received from the linking server.
6. Machine selon l'une des revendications précédentes, dans laquelle le tableau de données en attente maintient des données relatives à un vote effectué sur la machine. 6. Machine according to one of the preceding claims, wherein the data table pending maintains data relating to a vote on the machine.
7. Machine selon l'une des revendications précédentes, dans laquelle une partie au moins des données du tableau en attente sont organisées en une liste d'objets numériques maintenant chacun une relation entre des données de résultat de vote et un identifiant de la liste rangée d'identifiants. 7. Machine according to one of the preceding claims, wherein at least a portion of the data of the waiting table is organized into a list of digital objects each maintaining a relationship between vote result data and an identifier of the ordered list. identifiers.
8. Machine selon la revendication 7, dans laquelle la seconde fonction construit ledit message avec l'ensemble des objets numériques du tableau de données en attente. 8. Machine according to claim 7, wherein the second function constructs said message with all the digital objects of the data table pending.
9. Machine selon l'une des revendications précédentes, dans laquelle les identifiants de la liste rangée d'identifiants des objets numériques du tableau en attente sont de rang inférieur au rang de l'identifiant vers lequel pointe le tableau en attente. 9. Machine according to one of the preceding claims, wherein the identifiers of the row list of identifiers of the digital objects of the pending table are of rank lower than the rank of the identifier to which the table pending.
10. Machine selon l'une des revendications précédentes, dans laquelle le contrôleur est agencé pour agréger les données de vote du tableau en attente à la modification du pointeur de ce tableau. 10. Machine according to one of the preceding claims, wherein the controller is arranged to aggregate the voting data of the pending table to the modification of the pointer of this table.
11. Infrastructure de vote électronique comprenant plusieurs machines de vote homologues selon l'une des revendications précédentes. 11. Electronic voting infrastructure comprising several homologous voting machines according to one of the preceding claims.
12. Infrastructure selon la revendication 11 comprenant un serveur de mise en relation agencé pour, sur requête, retourner un jeu d'adresses correspondant à un sous-ensemble seulement des machines de vote homologues de l'infrastructure. 12. Infrastructure according to claim 11 comprising a connection server arranged for, on request, return a set of addresses corresponding to a subset only of voting machines homologous infrastructure.
13. Infrastructure selon la revendication 12, dans laquelle le jeu d'adresses est sélectionné aléatoirement par les adresses des machines de vote homologues. The infrastructure of claim 12, wherein the set of addresses is randomly selected by the addresses of the peer voting machines.
14. Procédé de vote électronique du type comprenant les étapes suivantes : 14. Electronic voting method of the type comprising the following steps:
- stocker une liste rangée d'identifiants, et au moins un tableau de données en attente avec un pointeur vers un identifiant de la liste rangée d'identifiants ;  storing a row of identifiers, and at least one table of pending data with a pointer to an identifier of the list of identifiers;
- émettre une requête à destination de machines de vote électronique homologues, la requête portant sur l'identifiant vers lequel pointe le tableau en attente,  - send a request to peer electronic voting machines, the query on the identifier to which the pending table points,
- traiter au moins un message en réponse en vérifiant une condition portant sur une comparaison d'un contenu dudit message aux identifiants de la liste rangée d'identifiants respectivement, et, le cas échéant, en complétant le tableau en attente avec des données du message relatives à un vote,  processing at least one message in response by verifying a condition relating to a comparison of a content of said message with the identifiers of the row of identifiers respectively, and, where appropriate, by completing the table waiting with data of the message relating to a vote,
- modifier conditionnellement le pointeur du tableau de données en attente vers un identifiant de la liste rangée de rang supérieur en fonction des données du tableau en attente. conditionally changing the pointer of the pending data table to an identifier of the higher ranked row list according to the data of the waiting table.
15. Procédé de vote électronique du type comprenant les étapes suivantes : 15. Electronic voting method of the type comprising the following steps:
- stocker une liste rangée d'identifiants, et au moins un tableau de données en attente avec un pointeur vers un identifiant de la liste rangée d'identifiants ; storing a row of identifiers, and at least one table of pending data with a pointer to an identifier of the list of identifiers;
- recevoir une requête d'une machine de vote électronique, la requête portant sur l'identifiant vers lequel pointe le tableau en attente,  receiving a request from an electronic voting machine, the request relating to the identifier to which the waiting table points,
- vérifier une condition portant sur une comparaison du contenu de la requête aux identifiants de la liste rangée d'identifiants, et, le cas échéant, construire un message en réponse avec l'identifiant de la liste vers lequel pointe le tableau en attente et certaines au moins des données du tableau en attente, - modifier conditionnellement le pointeur du tableau de données en attente vers un identifiant de la liste rangée de rang supérieur en fonction des données du tableau en attente. check a condition relating to a comparison of the content of the request with the identifiers of the row of identifiers, and, if necessary, construct a message in response with the identifier of the list to which the table on hold is pointing and certain at least data from the waiting table, conditionally changing the pointer of the pending data table to an identifier of the higher ranked row list according to the data of the waiting table.
PCT/FR2016/051523 2015-06-22 2016-06-22 Electronic voting machine and infrastructure comprising such a machine WO2016207542A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1555704A FR3037702B1 (en) 2015-06-22 2015-06-22 ELECTRONIC VOTING MACHINE AND INFRASTRUCTURE COMPRISING SUCH A MACHINE
FR1555704 2015-06-22

Publications (1)

Publication Number Publication Date
WO2016207542A1 true WO2016207542A1 (en) 2016-12-29

Family

ID=54545213

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2016/051523 WO2016207542A1 (en) 2015-06-22 2016-06-22 Electronic voting machine and infrastructure comprising such a machine

Country Status (2)

Country Link
FR (1) FR3037702B1 (en)
WO (1) WO2016207542A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11943331B2 (en) 2018-01-18 2024-03-26 Nchain Licensing Ag Computer-implemented decision making system and method

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090072031A1 (en) * 2007-09-13 2009-03-19 Cardone Richard J method for paper-free verifiable electronic voting
US20100025466A1 (en) * 2008-07-31 2010-02-04 International Business Machines Corporation Method and System for Verifying Election Results

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090072031A1 (en) * 2007-09-13 2009-03-19 Cardone Richard J method for paper-free verifiable electronic voting
US20100025466A1 (en) * 2008-07-31 2010-02-04 International Business Machines Corporation Method and System for Verifying Election Results

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11943331B2 (en) 2018-01-18 2024-03-26 Nchain Licensing Ag Computer-implemented decision making system and method

Also Published As

Publication number Publication date
FR3037702B1 (en) 2017-06-23
FR3037702A1 (en) 2016-12-23

Similar Documents

Publication Publication Date Title
EP2294776B1 (en) Method and system for user access to at least one service offered by at least one other user
WO2018131004A2 (en) Methods and systems for executing programs in secure environments
FR3058243A1 (en) METHOD FOR CONTROLLING IDENTITY OF A USER USING A PUBLIC DATABASE
FR2855691A1 (en) Hybrid peer to peer network central server for digital document distribution, has program with communication module sending message with document reference, address of system likely to contain document and access key, to client
CN106708858A (en) Information recommendation method and device
FR2948793A1 (en) SECURE METHOD OF RECONSTRUCTING A REFERENCE MEASUREMENT OF CONFIDENTIAL DATA FROM A BRUTE MEASUREMENT OF THIS DATA, IN PARTICULAR FOR THE GENERATION OF CRYPTOGRAPHIC KEYS
CA2778847A1 (en) Identification by means of checking a user's biometric data
WO2009141561A2 (en) Method of authenticating a radio tag by a radio reader
WO2016207542A1 (en) Electronic voting machine and infrastructure comprising such a machine
EP2286571A1 (en) Method and device for storing online data
FR2979044A1 (en) METHOD FOR MANAGING AND CONTROLLING DATA OF DIFFERENT FIELDS OF IDENTITY ORGANIZED IN THE ENHANCEMENT STRUCTURE
WO2019102120A1 (en) Methods and devices for enrolling and authenticating a user with a service
EP3903210A1 (en) Secure, tracked communication network
FR2858145A1 (en) User authentication method for IP transport network, involves calculating authentication data of user close to near service providers, inserting identification and authentication data in request, and transmitting them to access controller
Shakimov et al. Vis-à-Vis: Online social networking via virtual individual servers
WO2018029564A1 (en) System and method for authentication of a user of an application system by a central server, without using a password
EP3266148A1 (en) Device and method for administering a digital escrow server
Meessen et al. Long term data storage using peer-to-peer technology
US20230291698A1 (en) Enabling polls in an end-to-end encrypted messaging platform
EP3863219A1 (en) Method and device for assessing matching of sets of structured data protected by encryption
FR2845501A1 (en) Online voting system for elections uses voting server accessible to voters returning votes to internal server which is inaccessible to voters
FR2901381A1 (en) Digital personal information and data e.g. software, processing system, has sphere stations each with operating system having contact directory comprising unique preset denomination independent of stations and user and collecting user data
WO2020200709A1 (en) Method for validating a multiple flow for assigning energy or energy material
WO2022184726A1 (en) Method for enabling users to deploy smart contracts in a blockchain using a deployment platform
Khacef Trade-off betweew security and scalability in blockchain systems

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: 16744436

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16744436

Country of ref document: EP

Kind code of ref document: A1