Tous les systèmes de vote doivent reposer sur l'intégrité et la transparence pour être efficaces. À première vue, la blockchain semble être la plate-forme idéale pour construire ces systèmes. En fait, le vote sans autorisation a été adopté par de nombreuses organisations décentralisées pour exprimer une volonté collective, souvent dans le contexte de l'exercice d'un pouvoir financier important ou de l'ajustement de paramètres de protocole clés. Cependant, le vote en chaîne présente certains inconvénients et les problèmes de confidentialité n'ont pas été pleinement explorés pour les systèmes de vote Web3, ce qui a eu un impact négatif. Dans la plupart des protocoles de vote en chaîne utilisés aujourd'hui, les bulletins de vote et les résultats du vote sont entièrement publics. L'absence de protection de la vie privée signifie que les résultats du vote sont susceptibles d'être manipulés, tout en conduisant à des incitations incohérentes pour les électeurs, pouvant conduire à des résultats antidémocratiques.
À cette fin, nous lançons Cicada : une nouvelle bibliothèque Solidity open source qui exploite des énigmes temporelles et des preuves sans connaissance pour le vote privé en chaîne. Par rapport aux systèmes existants, Cicada possède des propriétés de confidentialité uniques, minimise la dépendance à la confiance et est également très efficace sur le réseau principal Ethereum.
Dans cet article, nous examinons l'état actuel de la confidentialité des votes et fournissons une introduction de haut niveau sur le fonctionnement de Cicada (des preuves formelles suivront). Nous encourageons également les développeurs à se diriger vers le référentiel GitHub pour plus de détails - Cicada peut être ajusté et étendu de manière flexible pour différents schémas de vote et fonctionnalités. Nous sommes impatients de travailler avec la communauté pour explorer ces possibilités ensemble.
Vue d'ensemble de la confidentialité des votes
Dans tout système de vote (en chaîne ou autre), nous devons prendre en compte de nombreux niveaux de confidentialité différents. La divulgation des bulletins de vote individuels, le décompte des voix en cours et l'identité des électeurs affectent tous les électeurs de différentes manières. Les propriétés de confidentialité souhaitées varient d'un vote à l'autre, mais en voici quelques-unes qui sont souvent abordées dans la littérature sur la cryptographie et les sciences sociales :
· Confidentialité des bulletins de vote : le vote secret, également connu sous le nom de "vote australien", est un moyen de protéger la vie privée des électeurs individuels dans les systèmes de vote du monde réel et de réduire la corruption et la coercition (sur la chaîne Dans l'environnement ci-dessus, nous peut nécessiter un mécanisme plus puissant que le vote secret, voir "pas de reçu" ci-dessous pour plus de détails). La confidentialité des votes peut également réduire le biais de désirabilité sociale - les gens sont moins susceptibles de voter en fonction de ce que les autres pensent de leurs choix.
· Confidentialité du décompte des voix : de nombreux systèmes de vote masquent le décompte des voix en cours, c'est-à-dire le nombre de votes reçus par chaque option, pendant le vote des électeurs afin d'éviter tout impact sur la participation et les incitations des électeurs. Nous avons vu cela se produire dans le monde réel : par exemple, les sénateurs américains qui votent plus tard sont plus susceptibles de s'aligner sur leur parti que les sénateurs qui votent plus tôt. Dans le vote pondéré par jetons sur la chaîne, les baleines géantes peuvent maintenir leur faux sentiment de sécurité en gardant leurs adversaires en tête (certaines personnes peuvent être trop paresseuses pour voter parce qu'elles pensent que ces personnes gagneront de toute façon), puis voter pour elles-mêmes au vote au dernier moment pour déterminer le résultat.
· Anonymat de l'électeur : dans de nombreux systèmes de vote du monde réel, votre vote reste privé, mais le fait que vous ayez voté ou non est souvent connu des autres. Cela pourrait servir de protection contre la fraude électorale, puisque la publication des registres de qui a voté permettrait aux gens de vérifier si quelqu'un a voté en leur nom. En chaîne, cependant, nous pouvons utiliser des primitives cryptographiques pour empêcher la fraude électorale tout en préservant l'anonymat - par exemple, en utilisant un sémaphore, vous pouvez prouver en toute connaissance de cause que vous êtes un électeur éligible et que vous n'avez pas encore voté.
· Non recevabilité : les électeurs ne doivent pas fournir de « reçu » de leur bulletin de vote à un tiers pour prouver comment leur vote a été exprimé en faveur de quelqu'un, ce qui pourrait entraîner la vente du bulletin de vote. La résistance à la coercition est une autre propriété étroitement liée, empêchant quelqu'un d'être contraint de voter d'une certaine manière. Ces propriétés sont particulièrement attrayantes dans un environnement décentralisé, où le pouvoir de vote peut devenir liquide grâce à un marché des contrats intelligents. Malheureusement, ces propriétés sont très difficiles à obtenir. En effet, Juels et al soulignent que ces propriétés sont impossibles à atteindre dans un environnement sans autorisation sans matériel de confiance.
Cicada se concentre sur la confidentialité du décompte continu des votes, cependant (comme nous en discuterons plus tard), il peut être utilisé conjointement avec des preuves d'appartenance à un groupe sans connaissance pour l'anonymat des électeurs et la confidentialité des votes.
### Cicada : Confidentialité du dépouillement des votes à l'aide de casse-tête homomorphes
Pour assurer la confidentialité du comptage continu des votes, Cicada emprunte des primitives cryptographiques qui n'ont jamais été (à notre connaissance) utilisées en chaîne.
Premièrement, le casse-tête à verrouillage temporel (Rivest, Shamir, Wagner, 1996) est un casse-tête cryptographique dont les secrets ne peuvent être révélés qu'après qu'une période de temps prédéterminée s'est écoulée - plus précisément, uniquement en exécutant de manière répétée un certain nombre de calculs non parallélisables. utilisé pour résoudre des énigmes. Les puzzles Timelock sont utiles dans le contexte du vote pour la confidentialité du décompte des votes en cours : les utilisateurs peuvent soumettre leurs votes sous forme de puzzles Timelock, afin que leurs votes restent privés pendant le processus de vote, mais qu'ils soient accessibles après la divulgation du vote. Contrairement à la plupart des autres structures de vote privées, cela permet d'assurer la confidentialité du dépouillement sans compter sur les agences statistiques (telles que les agents électoraux qui comptent les bulletins papier ou numériques), le chiffrement de seuil (plusieurs parties de confiance doivent coopérer pour déchiffrer un message) ou toute autre partie de confiance. : n'importe qui peut résoudre le puzzle du timelock pour s'assurer que le résultat est révélé après le vote.
Deuxièmement, le puzzle timelock homomorphe (Malavolta Thyagarajan, 2019) a la propriété supplémentaire que certains calculs peuvent être effectués sur des valeurs cryptées avec la connaissance de la clé secrète, le décryptage du puzzle ou l'utilisation d'une porte dérobée. En particulier, le puzzle linéaire homomorphique timelock nous permet de combiner des puzzles ensemble pour générer un nouveau puzzle qui contient la somme des valeurs secrètes des puzzles originaux.
Comme le soulignent les auteurs de l'article, les puzzles linéaires homomorphes à verrouillage temporel sont particulièrement adaptés au vote privé : les votes peuvent être encodés sous forme de puzzles, et ils peuvent être combinés de manière homomorphe pour obtenir des puzzles codant les statistiques finales. Cela signifie qu'un seul calcul est nécessaire pour révéler le décompte final, plutôt que de résoudre un puzzle unique pour chaque vote.
#### Nouveau système : efficacité et compromis
Pour un système de vote qui peut être pratiquement appliqué en chaîne, plusieurs facteurs doivent être pris en compte. Premièrement, un attaquant pourrait tenter de manipuler les résultats du vote en soumettant des bulletins de vote mal codés. Par exemple, nous pourrions nous attendre à ce que le puzzle timelock de chaque scrutin code une valeur booléenne : "1" pour la résolution votée et "0" pour contre. Un ardent partisan pourrait essayer d'utiliser un code comme "100" pour augmenter son pouvoir de vote effectif.
Nous pouvons empêcher cette attaque en exigeant que les électeurs soumettent une preuve de connaissance zéro en plus de soumettre le bulletin de vote lui-même. Cependant, les preuves à connaissance nulle peuvent être coûteuses en calcul - pour maintenir le coût de la participation des électeurs aussi bas que possible, les preuves doivent être (1) calculées efficacement côté client et (2) vérifiées efficacement sur la chaîne.
Pour rendre la preuve aussi efficace que possible, nous utilisons un protocole sigma personnalisé. Il s'agit d'une preuve à connaissance nulle conçue pour des relations algébriques spécifiques, et non d'un système de preuve général. Cela accélère considérablement les temps de preuve : sur un ordinateur portable standard, il ne faut que 14 millisecondes pour générer une preuve de validité de bulletin en Python.
Bien que le processus de vérification de ce protocole sigma soit conceptuellement simple, il nécessite en fait plusieurs grandes opérations exponentielles modulo. Le schéma homomorphe linéaire de Malavolta et Thyagarajan utilise le cryptage Paillier, donc ces opérations exponentielles seront effectuées modulo un certain module RSA N^2. Pour un N raisonnablement grand, ces opérations d'exponentiation sont rédhibitoires sur la plupart des chaînes EVM (nécessitant des millions de gaz). Pour réduire ce coût, Cicada utilise à la place l'exposant ElGamal, qui fournit toujours un homomorphisme additif, mais opère sur un module plus petit (N au lieu de N^2).
L'un des inconvénients de l'utilisation d'ElGamal est qu'il nécessite des logarithmes discrets exhaustifs pour décrypter les statistiques (notez que cela est fait hors chaîne et efficacement vérifié en chaîne). Par conséquent, il ne doit être utilisé que si le décompte final attendu est relativement faible (par exemple, moins de 2 ^ 32, environ 4,3 millions de votes). Dans le schéma original basé sur Paillier, il peut être déchiffré efficacement quelle que soit la taille des statistiques.
Le choix du module RSA N implique également des compromis. Notre méthode utilise un module de 1024 bits pour améliorer l'efficacité du gaz. Bien que cela soit bien au-dessus du module RSA maximal pour la factorisation (qui est de 829 bits), il est inférieur à la taille de 2048 bits généralement recommandée pour le chiffrement ou la signature RSA. Dans notre application, cependant, nous n'avons pas besoin de sécurité à long terme : une fois l'élection terminée, il n'y a aucun risque si le futur N est factorisé. Après l'expiration du délai, il est raisonnable d'utiliser un module relativement petit, en supposant que les statistiques et les votes deviendront publics. (Cela peut également être facilement mis à jour à l'avenir si l'algorithme de factorisation s'améliore.)
Anonymat et éligibilité des électeurs
Comme mentionné ci-dessus, Cicada fournit une confidentialité continue du décompte des votes - un puzzle de verrouillage du temps garde les décomptes secrets pendant le vote. Cependant, chaque scrutin est aussi un casse-tête chronométré, crypté selon les mêmes paramètres publics. Cela signifie que tout comme les statistiques peuvent être décryptées (en effectuant les calculs nécessaires), chaque vote peut l'être également.
En d'autres termes, Cicada garantit uniquement le secret des bulletins de vote lors du vote. Si un observateur curieux veut déchiffrer le bulletin de vote d'un électeur particulier, il peut également le faire après la fermeture des bureaux de vote. Le coût de décryptage d'un bulletin de vote est le même que le coût de décryptage du décompte final, donc le décryptage complet d'un bulletin de vote avec n électeurs nécessite O (n) travail. Cependant, tous ces votes peuvent être décryptés en parallèle (en supposant qu'il y ait suffisamment d'ordinateurs) dans un processus qui prend le même temps que le décryptage du décompte final.
Pour certains sondages, cela peut ne pas être idéal. Bien que nous soyons satisfaits de la confidentialité temporaire du décompte des votes, nous souhaiterions peut-être avoir une confidentialité permanente des votes. Pour y parvenir, nous pouvons combiner Cicada avec un protocole d'éligibilité des électeurs anonymes via une preuve d'appartenance à un groupe sans aucune connaissance. De cette façon, même si les bulletins de vote sont déclassifiés, cela ne révélera que comment quelqu'un a voté, ce qui est déjà révélé dans le décompte.
Dans notre référentiel, nous fournissons un exemple de contrat qui utilise Semaphore pour l'anonymat des électeurs. Notez que le contrat Cicada lui-même ne fait aucune hypothèse sur la détermination ou l'application de l'éligibilité des électeurs. En particulier, vous pouvez remplacer Semaphore par Semacaulk ou ZK Proof of State.
Agence de comptage des votes
L'un de nos premiers objectifs lors de la conception de Cicada était d'éviter de dépendre d'agences de comptage des votes : de nombreux votes privés nécessitent une agence de comptage semi-fiable (ou un comité coopérant via un calcul multipartite sécurisé) qui reçoit et agrège les votes. Dans le contexte de la blockchain, cela signifie que ces schémas ne peuvent pas être mis en œuvre uniquement via des contrats intelligents, mais nécessitent une certaine intervention humaine et de la confiance.
Dans la plupart des régimes, les agences statistiques sont dignes de confiance en termes d'intégrité (elles ne peuvent pas manipuler le décompte des voix), mais elles doivent également rester actives - si elles sont hors ligne, les résultats finaux ne peuvent pas être calculés et les résultats des votes bloqués indéfiniment. Dans certains systèmes, on fait également confiance aux agences statistiques pour préserver la confidentialité. Autrement dit, ils connaissent le vote de chaque électeur, mais publient les résultats sans révéler cette information.
Alors que les agences statistiques sont raisonnables (et nécessaires) dans de nombreux scénarios du monde réel, elles ne sont pas idéales dans le contexte des blockchains, où notre objectif est de minimiser la confiance et d'assurer la résistance à la censure.
Conclusion
Cicada explore de nombreuses directions dans le domaine de la confidentialité des votes en chaîne et complète les recherches en cours menées par d'autres groupes. Comme mentionné ci-dessus, Cicada complète les technologies d'adhésion à des groupes anonymes telles que Semaphore, la preuve de stockage ZK et les nullificateurs à limitation de débit. Cicada peut également être combiné avec le vérificateur de preuve optimiste proposé par l'équipe Nouns Vortex pour réduire la charge de gaz des électeurs.
En outre, nous avons la possibilité de régler Cicada pour prendre en charge différents schémas de vote (par exemple, vote pondéré, vote quadratique), alors que des schémas plus complexes peuvent être coûteux en calcul pour le réseau principal Ethereum, ils peuvent être réalisables sur les réseaux de couche 2 de. Dans cet esprit, nous accueillons toutes les suggestions pour l'orientation future de Cicada.
Voir l'original
Le contenu est fourni à titre de référence uniquement, il ne s'agit pas d'une sollicitation ou d'une offre. Aucun conseil en investissement, fiscalité ou juridique n'est fourni. Consultez l'Avertissement pour plus de détails sur les risques.
Cigale : vote privé en chaîne via Timelock Puzzles et ZK
Tous les systèmes de vote doivent reposer sur l'intégrité et la transparence pour être efficaces. À première vue, la blockchain semble être la plate-forme idéale pour construire ces systèmes. En fait, le vote sans autorisation a été adopté par de nombreuses organisations décentralisées pour exprimer une volonté collective, souvent dans le contexte de l'exercice d'un pouvoir financier important ou de l'ajustement de paramètres de protocole clés. Cependant, le vote en chaîne présente certains inconvénients et les problèmes de confidentialité n'ont pas été pleinement explorés pour les systèmes de vote Web3, ce qui a eu un impact négatif. Dans la plupart des protocoles de vote en chaîne utilisés aujourd'hui, les bulletins de vote et les résultats du vote sont entièrement publics. L'absence de protection de la vie privée signifie que les résultats du vote sont susceptibles d'être manipulés, tout en conduisant à des incitations incohérentes pour les électeurs, pouvant conduire à des résultats antidémocratiques.
À cette fin, nous lançons Cicada : une nouvelle bibliothèque Solidity open source qui exploite des énigmes temporelles et des preuves sans connaissance pour le vote privé en chaîne. Par rapport aux systèmes existants, Cicada possède des propriétés de confidentialité uniques, minimise la dépendance à la confiance et est également très efficace sur le réseau principal Ethereum.
Dans cet article, nous examinons l'état actuel de la confidentialité des votes et fournissons une introduction de haut niveau sur le fonctionnement de Cicada (des preuves formelles suivront). Nous encourageons également les développeurs à se diriger vers le référentiel GitHub pour plus de détails - Cicada peut être ajusté et étendu de manière flexible pour différents schémas de vote et fonctionnalités. Nous sommes impatients de travailler avec la communauté pour explorer ces possibilités ensemble.
Vue d'ensemble de la confidentialité des votes
Dans tout système de vote (en chaîne ou autre), nous devons prendre en compte de nombreux niveaux de confidentialité différents. La divulgation des bulletins de vote individuels, le décompte des voix en cours et l'identité des électeurs affectent tous les électeurs de différentes manières. Les propriétés de confidentialité souhaitées varient d'un vote à l'autre, mais en voici quelques-unes qui sont souvent abordées dans la littérature sur la cryptographie et les sciences sociales :
· Confidentialité des bulletins de vote : le vote secret, également connu sous le nom de "vote australien", est un moyen de protéger la vie privée des électeurs individuels dans les systèmes de vote du monde réel et de réduire la corruption et la coercition (sur la chaîne Dans l'environnement ci-dessus, nous peut nécessiter un mécanisme plus puissant que le vote secret, voir "pas de reçu" ci-dessous pour plus de détails). La confidentialité des votes peut également réduire le biais de désirabilité sociale - les gens sont moins susceptibles de voter en fonction de ce que les autres pensent de leurs choix.
· Confidentialité du décompte des voix : de nombreux systèmes de vote masquent le décompte des voix en cours, c'est-à-dire le nombre de votes reçus par chaque option, pendant le vote des électeurs afin d'éviter tout impact sur la participation et les incitations des électeurs. Nous avons vu cela se produire dans le monde réel : par exemple, les sénateurs américains qui votent plus tard sont plus susceptibles de s'aligner sur leur parti que les sénateurs qui votent plus tôt. Dans le vote pondéré par jetons sur la chaîne, les baleines géantes peuvent maintenir leur faux sentiment de sécurité en gardant leurs adversaires en tête (certaines personnes peuvent être trop paresseuses pour voter parce qu'elles pensent que ces personnes gagneront de toute façon), puis voter pour elles-mêmes au vote au dernier moment pour déterminer le résultat.
· Anonymat de l'électeur : dans de nombreux systèmes de vote du monde réel, votre vote reste privé, mais le fait que vous ayez voté ou non est souvent connu des autres. Cela pourrait servir de protection contre la fraude électorale, puisque la publication des registres de qui a voté permettrait aux gens de vérifier si quelqu'un a voté en leur nom. En chaîne, cependant, nous pouvons utiliser des primitives cryptographiques pour empêcher la fraude électorale tout en préservant l'anonymat - par exemple, en utilisant un sémaphore, vous pouvez prouver en toute connaissance de cause que vous êtes un électeur éligible et que vous n'avez pas encore voté.
· Non recevabilité : les électeurs ne doivent pas fournir de « reçu » de leur bulletin de vote à un tiers pour prouver comment leur vote a été exprimé en faveur de quelqu'un, ce qui pourrait entraîner la vente du bulletin de vote. La résistance à la coercition est une autre propriété étroitement liée, empêchant quelqu'un d'être contraint de voter d'une certaine manière. Ces propriétés sont particulièrement attrayantes dans un environnement décentralisé, où le pouvoir de vote peut devenir liquide grâce à un marché des contrats intelligents. Malheureusement, ces propriétés sont très difficiles à obtenir. En effet, Juels et al soulignent que ces propriétés sont impossibles à atteindre dans un environnement sans autorisation sans matériel de confiance.
Cicada se concentre sur la confidentialité du décompte continu des votes, cependant (comme nous en discuterons plus tard), il peut être utilisé conjointement avec des preuves d'appartenance à un groupe sans connaissance pour l'anonymat des électeurs et la confidentialité des votes.
### Cicada : Confidentialité du dépouillement des votes à l'aide de casse-tête homomorphes
Pour assurer la confidentialité du comptage continu des votes, Cicada emprunte des primitives cryptographiques qui n'ont jamais été (à notre connaissance) utilisées en chaîne.
Premièrement, le casse-tête à verrouillage temporel (Rivest, Shamir, Wagner, 1996) est un casse-tête cryptographique dont les secrets ne peuvent être révélés qu'après qu'une période de temps prédéterminée s'est écoulée - plus précisément, uniquement en exécutant de manière répétée un certain nombre de calculs non parallélisables. utilisé pour résoudre des énigmes. Les puzzles Timelock sont utiles dans le contexte du vote pour la confidentialité du décompte des votes en cours : les utilisateurs peuvent soumettre leurs votes sous forme de puzzles Timelock, afin que leurs votes restent privés pendant le processus de vote, mais qu'ils soient accessibles après la divulgation du vote. Contrairement à la plupart des autres structures de vote privées, cela permet d'assurer la confidentialité du dépouillement sans compter sur les agences statistiques (telles que les agents électoraux qui comptent les bulletins papier ou numériques), le chiffrement de seuil (plusieurs parties de confiance doivent coopérer pour déchiffrer un message) ou toute autre partie de confiance. : n'importe qui peut résoudre le puzzle du timelock pour s'assurer que le résultat est révélé après le vote.
Deuxièmement, le puzzle timelock homomorphe (Malavolta Thyagarajan, 2019) a la propriété supplémentaire que certains calculs peuvent être effectués sur des valeurs cryptées avec la connaissance de la clé secrète, le décryptage du puzzle ou l'utilisation d'une porte dérobée. En particulier, le puzzle linéaire homomorphique timelock nous permet de combiner des puzzles ensemble pour générer un nouveau puzzle qui contient la somme des valeurs secrètes des puzzles originaux.
Comme le soulignent les auteurs de l'article, les puzzles linéaires homomorphes à verrouillage temporel sont particulièrement adaptés au vote privé : les votes peuvent être encodés sous forme de puzzles, et ils peuvent être combinés de manière homomorphe pour obtenir des puzzles codant les statistiques finales. Cela signifie qu'un seul calcul est nécessaire pour révéler le décompte final, plutôt que de résoudre un puzzle unique pour chaque vote.
#### Nouveau système : efficacité et compromis
Pour un système de vote qui peut être pratiquement appliqué en chaîne, plusieurs facteurs doivent être pris en compte. Premièrement, un attaquant pourrait tenter de manipuler les résultats du vote en soumettant des bulletins de vote mal codés. Par exemple, nous pourrions nous attendre à ce que le puzzle timelock de chaque scrutin code une valeur booléenne : "1" pour la résolution votée et "0" pour contre. Un ardent partisan pourrait essayer d'utiliser un code comme "100" pour augmenter son pouvoir de vote effectif.
Nous pouvons empêcher cette attaque en exigeant que les électeurs soumettent une preuve de connaissance zéro en plus de soumettre le bulletin de vote lui-même. Cependant, les preuves à connaissance nulle peuvent être coûteuses en calcul - pour maintenir le coût de la participation des électeurs aussi bas que possible, les preuves doivent être (1) calculées efficacement côté client et (2) vérifiées efficacement sur la chaîne.
Pour rendre la preuve aussi efficace que possible, nous utilisons un protocole sigma personnalisé. Il s'agit d'une preuve à connaissance nulle conçue pour des relations algébriques spécifiques, et non d'un système de preuve général. Cela accélère considérablement les temps de preuve : sur un ordinateur portable standard, il ne faut que 14 millisecondes pour générer une preuve de validité de bulletin en Python.
Bien que le processus de vérification de ce protocole sigma soit conceptuellement simple, il nécessite en fait plusieurs grandes opérations exponentielles modulo. Le schéma homomorphe linéaire de Malavolta et Thyagarajan utilise le cryptage Paillier, donc ces opérations exponentielles seront effectuées modulo un certain module RSA N^2. Pour un N raisonnablement grand, ces opérations d'exponentiation sont rédhibitoires sur la plupart des chaînes EVM (nécessitant des millions de gaz). Pour réduire ce coût, Cicada utilise à la place l'exposant ElGamal, qui fournit toujours un homomorphisme additif, mais opère sur un module plus petit (N au lieu de N^2).
L'un des inconvénients de l'utilisation d'ElGamal est qu'il nécessite des logarithmes discrets exhaustifs pour décrypter les statistiques (notez que cela est fait hors chaîne et efficacement vérifié en chaîne). Par conséquent, il ne doit être utilisé que si le décompte final attendu est relativement faible (par exemple, moins de 2 ^ 32, environ 4,3 millions de votes). Dans le schéma original basé sur Paillier, il peut être déchiffré efficacement quelle que soit la taille des statistiques.
Le choix du module RSA N implique également des compromis. Notre méthode utilise un module de 1024 bits pour améliorer l'efficacité du gaz. Bien que cela soit bien au-dessus du module RSA maximal pour la factorisation (qui est de 829 bits), il est inférieur à la taille de 2048 bits généralement recommandée pour le chiffrement ou la signature RSA. Dans notre application, cependant, nous n'avons pas besoin de sécurité à long terme : une fois l'élection terminée, il n'y a aucun risque si le futur N est factorisé. Après l'expiration du délai, il est raisonnable d'utiliser un module relativement petit, en supposant que les statistiques et les votes deviendront publics. (Cela peut également être facilement mis à jour à l'avenir si l'algorithme de factorisation s'améliore.)
Anonymat et éligibilité des électeurs
Comme mentionné ci-dessus, Cicada fournit une confidentialité continue du décompte des votes - un puzzle de verrouillage du temps garde les décomptes secrets pendant le vote. Cependant, chaque scrutin est aussi un casse-tête chronométré, crypté selon les mêmes paramètres publics. Cela signifie que tout comme les statistiques peuvent être décryptées (en effectuant les calculs nécessaires), chaque vote peut l'être également.
En d'autres termes, Cicada garantit uniquement le secret des bulletins de vote lors du vote. Si un observateur curieux veut déchiffrer le bulletin de vote d'un électeur particulier, il peut également le faire après la fermeture des bureaux de vote. Le coût de décryptage d'un bulletin de vote est le même que le coût de décryptage du décompte final, donc le décryptage complet d'un bulletin de vote avec n électeurs nécessite O (n) travail. Cependant, tous ces votes peuvent être décryptés en parallèle (en supposant qu'il y ait suffisamment d'ordinateurs) dans un processus qui prend le même temps que le décryptage du décompte final.
Pour certains sondages, cela peut ne pas être idéal. Bien que nous soyons satisfaits de la confidentialité temporaire du décompte des votes, nous souhaiterions peut-être avoir une confidentialité permanente des votes. Pour y parvenir, nous pouvons combiner Cicada avec un protocole d'éligibilité des électeurs anonymes via une preuve d'appartenance à un groupe sans aucune connaissance. De cette façon, même si les bulletins de vote sont déclassifiés, cela ne révélera que comment quelqu'un a voté, ce qui est déjà révélé dans le décompte.
Dans notre référentiel, nous fournissons un exemple de contrat qui utilise Semaphore pour l'anonymat des électeurs. Notez que le contrat Cicada lui-même ne fait aucune hypothèse sur la détermination ou l'application de l'éligibilité des électeurs. En particulier, vous pouvez remplacer Semaphore par Semacaulk ou ZK Proof of State.
Agence de comptage des votes
L'un de nos premiers objectifs lors de la conception de Cicada était d'éviter de dépendre d'agences de comptage des votes : de nombreux votes privés nécessitent une agence de comptage semi-fiable (ou un comité coopérant via un calcul multipartite sécurisé) qui reçoit et agrège les votes. Dans le contexte de la blockchain, cela signifie que ces schémas ne peuvent pas être mis en œuvre uniquement via des contrats intelligents, mais nécessitent une certaine intervention humaine et de la confiance.
Dans la plupart des régimes, les agences statistiques sont dignes de confiance en termes d'intégrité (elles ne peuvent pas manipuler le décompte des voix), mais elles doivent également rester actives - si elles sont hors ligne, les résultats finaux ne peuvent pas être calculés et les résultats des votes bloqués indéfiniment. Dans certains systèmes, on fait également confiance aux agences statistiques pour préserver la confidentialité. Autrement dit, ils connaissent le vote de chaque électeur, mais publient les résultats sans révéler cette information.
Alors que les agences statistiques sont raisonnables (et nécessaires) dans de nombreux scénarios du monde réel, elles ne sont pas idéales dans le contexte des blockchains, où notre objectif est de minimiser la confiance et d'assurer la résistance à la censure.
Conclusion
Cicada explore de nombreuses directions dans le domaine de la confidentialité des votes en chaîne et complète les recherches en cours menées par d'autres groupes. Comme mentionné ci-dessus, Cicada complète les technologies d'adhésion à des groupes anonymes telles que Semaphore, la preuve de stockage ZK et les nullificateurs à limitation de débit. Cicada peut également être combiné avec le vérificateur de preuve optimiste proposé par l'équipe Nouns Vortex pour réduire la charge de gaz des électeurs.
En outre, nous avons la possibilité de régler Cicada pour prendre en charge différents schémas de vote (par exemple, vote pondéré, vote quadratique), alors que des schémas plus complexes peuvent être coûteux en calcul pour le réseau principal Ethereum, ils peuvent être réalisables sur les réseaux de couche 2 de. Dans cet esprit, nous accueillons toutes les suggestions pour l'orientation future de Cicada.