Question:
Comment pourrais-je rendre les résultats d'un vote oui / non inaccessibles à moins qu'il ne soit unanime dans l'affirmative, sans tiers de confiance?
TheHansinator
2020-08-03 09:00:24 UTC
view on stackexchange narkive permalink

Une famille de N personnes (où N > = 3) sont membres d'une secte. Une suggestion est flottée anonymement parmi eux pour quitter la secte. Si, en fait, chaque personne nourrit secrètement le désir de partir, il serait préférable que la famille le sache afin qu'elle puisse être ouverte l'une avec l'autre et planifier sa sortie. Cependant, si ce n'est pas le cas, alors la famille ne voudrait pas connaître les résultats réels, afin d'éviter les combats internes et la chasse aux sorcières.

Par conséquent, existe-t-il un schéma par lequel, si tout le monde dans la famille vote oui , la famille le sait, mais tous les autres résultats (tous non , toute combinaison de oui et non ) sont indiscernables les uns des autres pour tous les membres de la famille?

Quelques remarques:

  • N doit être au moins 3 - N = 1 est trivial, et N = 2 est impossible, puisqu'un électeur oui peut connaître le vote de l'autre personne en fonction du résultat.
  • Le suggérant anonyme n'est pas important - il pourrait bien être quelqu'un en dehors de la famille, comme quelqu'un qui distribue de la propagande.
  • Il est important que tout non ne puisse être distingué du mélange oui et non - nous ne voulons pas que la famille découvre qu'il existe une sorte de schisme. Cependant, si ce résultat est impossible, je suis d'accord avec un résultat où tout résultat unanime est découvrable, mais tout vote mixte est impossible à distinguer.

Certaines choses que j'ai déjà essayées:

  • Bien sûr, cela peut être fait avec un tiers de confiance: ils communiquent tous leurs votes à une personne et le tiers annonce si tous les votes sont oui . Cependant, cette réponse ne me satisfait pas vraiment, car le tiers pourrait être compromis par un électeur zélé non (ou un autre membre de la secte) pour déterminer qui est le oui les votes sont. De plus, cette personne connaît les votes et peut, dans une situation de vote mixte, rencontrer les électeurs oui en privé pour les aider à s'échapper, ce que les électeurs non ne veulent pas merci de bien vouloir.
  • On peut utiliser un deuxième tiers pour anonymiser les votes - un parti (qui pourrait vraiment être juste un chapeau secoué) recueille les votes sans les lire et les envoie anonymement au deuxième parti, qui les lit et annonce le résultat. C'est la meilleure solution à laquelle je puisse penser, mais je pense toujours que je veux faire mieux que cela - après tout, dans un culte de colonie vivant, il n'y a probablement pas de tiers de confiance que vous puissiez trouver. J'aimerais trouver une solution qui utilise un tiers qui n'est pas nécessairement de confiance.
  • Cependant, je reconnais que vous avez besoin d'au moins quelque chose pour conserver des informations secrètes, car si vous travaillez avec un grand livre entièrement public, les participants pourraient alors faire des copies secrètes des informations et simuler l'effet de leurs votes, avant de soumettre leur vote réel. En particulier, si tous les participants votent oui mais que le dernier n'a pas encore voté, ils peuvent simuler un vote oui et découvrir que tout le monde a voté oui, mais ensuite eux-mêmes vote non - ils sont désormais seuls à connaître les votes oui de tous les autres, ce qui est un pouvoir que vous ne voudriez pas que l’électeur non restant ait.

MODIFIER: Après les commentaires de BlueRaja, je me rends compte que le concept de "tiers de confiance" n'est pas assez bien défini, et qu'à un certain niveau, j'ai probablement besoin d'un tiers de confiance au moins pour un état de maintien fiable. La clé est ce que je ferais confiance au tiers - par exemple, dans les premier et deuxième exemples de puces, je ne peux pas faire confiance à un tiers pour savoir qui a voté quoi, mais je peux lui faire confiance avec le contenu des votes. Idéalement, bien sûr, j'aimerais toujours pouvoir fonctionner sans un tiers de confiance, mais à défaut, j'aimerais minimiser ce que je dois faire confiance au tiers. (De plus, oui, un tiers peut inclure un objet ou une machine inanimée, du moment qu'il peut retenir toute quantité d'informations aux participants).

Les commentaires ne sont pas destinés à une discussion approfondie;cette conversation a été [déplacée vers le chat] (https://chat.stackexchange.com/rooms/111602/discussion-on-question-by-thehansinator-how-could-i-make-the-results-of-a-Oui Non).
24 réponses:
reed
2020-08-03 16:20:39 UTC
view on stackexchange narkive permalink

La théorie

Cela pourrait être implémenté de plusieurs manières, en appliquant le principe de idempotence^.

Vous voulez un système qui ne produit qu'un résultat (binaire 1) si toutes les entrées sont actives, c'est-à-dire que cela vous indique que tout le monde ne veut quitter la secte que si tout le monde a voté oui, sinon le système ne doit pas renvoyer aucune information (binaire 0). Il s'agit essentiellement d'une relation ET entre les entrées, comme le montre le tableau suivant (0 = non / faux, 1 = oui / vrai):

  Entrée: Vous voulez quitter la secte. : Tout le monde veut quitter la secte.0 0 0 | 0 0 0 1 | 00 1 0 | 00 1 1 | 01 0 0 | 01 0 1 | 01 1 0 | 01 1 1 | 1 --- > hourra, tout le monde veut partir, on peut en parler!  

Maintenant, ce n'est peut-être pas anodin à implémenter en toute sécurité, car vous avez besoin de quelque chose qui puisse compter (N- 1 ne sera pas suffisant pour déclencher le résultat, mais N le fera), et quelque chose qui est capable de compter pourrait également être capable de divulguer des informations sur le nombre de votes. Alors oublions cela, et réalisons que puisque vous avez en fait affaire à des bits d'information uniques (oui ou non, 0 ou 1), vous pourrez alors obtenir des informations précieuses si vous cochez simplement le contraire (non au lieu de oui , 0 au lieu de 1, etc.). Donc, si vous vérifiez s'ils veulent rester dans la secte au lieu de partir, et si vous vérifiez si au moins une personne veut rester au lieu de vérifier si elles veulent toutes partir, vous obtenez le tableau de vérité suivant où tous les 1 ont été remplacés avec 0 et vice versa:

  Entrée: Vous voulez rester dans la secte. Sortie: Quelqu'un veut rester.1 1 1 | 11 1 0 | 11 0 1 | 11 0 0 | 10 1 1 | 10 1 0 | 10 0 1 | 10 0 0 | 0 --- > hourra, personne ne veut rester, on peut en parler!  

Notez que nous avons maintenant une relation OU entre les entrées, ce qui, je pense, est plus facile à implémenter en toute sécurité, car vous avez juste besoin d'un système qui répond à n'importe quelle entrée exactement de la même manière. Un tel système serait idempotent: un vote suffit pour déclencher la sortie, et tout vote ultérieur n'aurait aucun effet. Maintenant, que pouvons-nous utiliser pour implémenter un tel système? Le système aurait besoin des fonctionnalités suivantes:

  • Il doit être approuvé par tout le monde. Il ne peut pas être construit ou acheté par un seul membre de la famille ou par quelqu'un d'autre. Je suppose donc que ce doit être quelque chose de très simple que tout le monde peut comprendre et avoir confiance. Pour éviter toute manipulation malveillante du système, il doit également être exploité sous la supervision de tous les membres.
  • Les électeurs ne doivent pas pouvoir vérifier la sortie avant la fin de l'expérience. Cela signifie que le vote ne doit renvoyer aucun retour d'information sur l'état actuel du système. Par exemple, souffler une bougie n'est pas sûr si vous pouvez la voir, sentir la chaleur ou sentir quoi que ce soit.

Le système

La solution la plus simple que je puisse pensez à quelque chose impliquant un appareil électronique avec un bouton idempotent, comme une télécommande pour changer de chaîne sur un téléviseur. Voici un exemple de configuration du système:

  • Obtenez un appareil avec un bouton idempotent. Il peut s'agir d'un téléviseur avec une télécommande, à condition de changer le canal N a toujours le même effet, peu importe le nombre de fois que vous le faites (idempotence). Ou tout ce que vous avez à la maison, comme un bouton pour ouvrir une porte (si l'ouverture d'une porte ouverte la laisse ouverte), etc. L'important est que tout le monde doit faire confiance au système, donc si vous voulez vraiment tout en toute sécurité, la famille pourrait envisager d'acheter un nouvel appareil (aller au centre commercial, tous ensemble, et acheter un appareil fiable).
  • Configurez le système en toute sécurité. Toute la famille doit être présente lors de la configuration du système, sinon le système pourrait être corrompu par celui qui l'a configuré. En général, toute la famille doit être présente et vérifier toutes les opérations du début à la fin de l'expérience (comme de l'achat du matériel à sa mise au rebut en toute sécurité).
  • Évitez tout type de les commentaires du système pendant le vote. Par exemple, pour changer de chaîne de télévision, le téléviseur et la télécommande peuvent se trouver sous une énorme couverture épaisse, et pour voter, vous devez glisser votre main sous la couverture. Mais le volume doit être coupé, et peut-être que vous feriez mieux d'activer de la musique en arrière-plan, suffisamment fort pour ne pas pouvoir entendre le bourdonnement ou le bruit du téléviseur. Vous voudrez peut-être même définir un délai entre un vote et le suivant, pour éviter de recevoir des commentaires de la chaleur possible de la télécommande causée par la main de l'électeur précédent.
  • Le processus de vote devrait être la même chose pour tout le monde. Pendant l'expérience, les autres membres doivent s'assurer que l'électeur ne triche pas (comme regarder sous la couverture, agir de façon étrange, etc.), afin que tout le monde soit présent pendant l'expérience. Il y a une durée relativement fixe pendant laquelle l'électeur doit pouvoir rester la main sous la couverture. Le glisser sous la couverture et le retirer immédiatement n'est pas considéré comme valide, car ce serait un vote NON évident et publiquement distinguable. De l'extérieur, chaque vote doit se ressembler à peu près.
  • Testez le système avant de l'utiliser pour le vrai test . Vous devez vous assurer que tout le monde comprend le processus, vote correctement et que le système réagit en conséquence. Toute la famille participe à plusieurs votes simulés pour tester le système (les votes simulés sont faux et connus du public, pas secrets).
  • À la fin, le système doit être démonté en toute sécurité. Tous les boutons ou pièces qui ont été touchés devront peut-être être nettoyés soigneusement pour éliminer les empreintes digitales. Si les membres de la famille ne font pas confiance au système après le vote, craignant que quelqu'un puisse en extraire des informations, toutes les parties du système devront peut-être être jetées.

Le vote

En supposant qu'ils aient choisi de mettre en œuvre le système de couverture télé à distance, voici ce qui se passe. "Ok tout le monde, la télé est allumée, la chaîne actuelle est 123. Si vous voulez rester dans la secte, changez-la en chaîne 0". Chaque membre à son tour glisse une main sous la couverture et soit change de chaîne (s'il veut rester dans la secte), soit fait semblant de le changer (s'il veut partir). A la fin, la couverture est enlevée et ... Channel 123! Alors personne ne veut rester dans la secte, hourra! ... ou ... Canal 0! Alors au moins un membre veut rester dans la secte! Ou peut-être tous, il n'y a aucun moyen de le savoir.

Notes finales

C'était amusant d'essayer de trouver une solution à ce problème, mais je considère cela plus comme une expérience de réflexion qu'une vraie question de sécurité. Le problème est que le modèle de menace est incomplet, car je ne pense pas que ce scénario puisse réellement avoir un sens dans une famille où tous les membres font partie d'une secte. Les membres de la secte sont par définition lavés de cerveau et paranoïaques. Ils peuvent même ne pas faire confiance à un magasin pour acheter un nouveau téléviseur ou une télécommande, pensant que quiconque qu’ils ne connaissent pas déjà (y compris les vendeurs) pourrait être des «ennemis». Il est certainement possible de mettre en place un système sans aucun appareil électronique, en utilisant uniquement des objets simples comme des bougies, des pots, de l'eau, des cordes, etc. Ce genre de choses peut être plus facile à faire confiance, par rapport à un appareil électronique en boîte noire, mais il pourrait aussi être plus difficile à faire fonctionner de manière fiable. Je me demande aussi: si un membre de la famille suggère qu'un vote est nécessaire, n'est-ce pas suspect? Pourquoi un membre de la secte voudrait-il savoir si tout le monde dans la famille veut partir? Il est fort probable que celui qui propose ce système soit celui qui veuille partir. Ou tout cela pourrait être un piège pour savoir qui veut partir.

En ce qui concerne le système TV, vous pouvez également supprimer / désactiver tous les boutons autres que le 0, pour un vrai choix binaire (pousser ou ne pas pousser) Sinon, les électeurs ont également l'option supplémentaire de "réinitialiser" en changeant la chaîne en 123.
_ "si un membre de la famille suggère qu'un vote est nécessaire, n'est-ce pas suspect?" _ C'est la faille dans la prémisse que je discute mentalement tout le temps.
Peut-être que la suggestion «votons» est * aussi * anonyme (par exemple, une note tapée apparaît sur le réfrigérateur de la cuisine pendant la nuit).Seules les personnes laissant les notes sauraient si les deux notes («Je pensais partir» et «Tenons un vote anonyme») étaient de la même personne ...
L'idempotence est vraiment la clé.Vous pouvez simplifier l'opération en quelque chose d'aussi simple que de verser de l'eau dans un seau fermé à l'aide d'un entonnoir.Si chaque individu peut choisir indépendamment la quantité d'eau à verser dans le seau, aucune information n'est révélée sur le niveau de remplissage du seau, au-delà du fait que le fond est humide (en supposant que le seau ne peut pas être altéré pendant le vote et ne le fait pas).émettre du bruit, etc.).
On pourrait également installer deux bols de riz, l'un teint en rouge à droite et l'autre en blanc à gauche, puis les mettre sous une couverture.Les électeurs doivent prendre quelques céréales dans le bol de droite et les mettre dans le bol de gauche s'ils veulent rester.Si le riz blanc reste exempt de grains rouges, tout le monde veut partir.
-1 Cette réponse s'appuie sur un tiers de confiance - un téléviseur, en qui nous avons confiance pour ne pas savoir de quelle télécommande provient le signal.Ce n'est pas parce que le tiers de confiance est couramment disponible et facilement fiable qu'il ne s'agit plus d'un tiers de confiance ...
Mettez une feuille de papier vierge et un tampon encreur à côté.S'il n'y a toujours pas de cachet sur le papier après 3 jours, nous partons tous.
@usul Cela fuit cependant des informations.Si vous y allez et voyez qu'il y a déjà un tampon, vous savez que quelqu'un d'autre veut partir.Vous pourriez peut-être configurer l'un de ces combos tampon / tampon encreur pour ne pouvoir tamponner qu'un seul emplacement, mais vous devrez alors en bloquer la vue et vous pourriez peut-être dire à quel point le tampon est sombre.
J'ai critiqué cela, parce que "simplement obtenir un appareil qui est programmé pour ne pas révéler les secrets et s'assurer que personne ne le démonte" n'est pas une réponse sérieuse à une question de cryptographie.Je pense que vous avez résolu une cryptographie efficace à clé publique - nous envoyons simplement un lecteur flash dans une boîte que tout le monde peut fermer, mais qui ne s'ouvre que si Alice entre son mot de passe!
@Michael: il ne doit pas être une suggestion d'une seule personne.Cela peut être quelque chose qui se produit spontanément et il n'y a personne qui a décidé de le faire.J'en ai beaucoup quand avec des amis et quand nous avons faim - d'une manière ou d'une autre, tout le monde va au restaurant X mais personne n'est considéré comme celui qui a "décidé" (cela inclut ceux qui voulaient aller à Y mais qui n'ont pas exprimé d'opposition de cordes)
@CaptainMan, le papier et le timbre indiqueraient que quelqu'un veut rester.Donc, pas de timbres après 3 jours, vous partez tous.Si à un moment donné quelqu'un veut rester, il fait un tampon et tout le monde reste, ne sachant pas qui a fait le tampon (sauf le tamponneur).
@JPhi1618 Dites que vous êtes la deuxième personne et qu'il y a un tampon ... Eh bien, vous savez qui a tamponné.Vous devez cacher qu'il y a un tampon ou non.
@CaptainMan, Oh, je viens de l'imaginer dans un espace commun pendant quelques jours au fur et à mesure que les gens vont et viennent, donc il n'y aurait pas d'ordre aux visites.Vous pouvez aller et venir 30 fois et enfin le tamponner.Je suppose que les autres pourraient regarder la région et vous voir, donc pas parfait, mais pourraient fonctionner à la rigueur.
@JPhi1618 ce n’est pas le but.Le fait est que si vous avez trois personnes Stayven, Stayuart et Goregory, alors si Stayven tamponne le papier, Stayuart saura qu'au moins une autre personne veut rester, donc ils savent que c'est 2/3 de rester et non 1/3.Ils sont les seuls à disposer de ces informations, mais il s’agit toujours d’une fuite.
Vous recherchez une porte XNOR
Les votes se font classiquement en mettant un morceau de papier dans une boîte à travers une fine ouverture.Cela peut également être fait ici: Mettez du papier = vous voulez rester, sinon non.Pour éviter de pouvoir compter les votes même à la fin, vous pouvez remplacer la feuille de papier par des confettis.Toutes ces solutions TV / eau /… sont assez compliquées.Mais ni l'un ni l'autre, ni ma solution ne résout un autre problème: quelqu'un qui veut rester ne peut tout simplement pas le faire et voter pour partir, puis espionner les autres qui font leurs préparatifs et divulguer cela à la secte.C'est un problème dans la question, pas dans les réponses.
SEJPM
2020-08-04 00:18:10 UTC
view on stackexchange narkive permalink

Cela ressemble à un cas classique pour le calcul multipartite cryptographiquement sécurisé .

La fonctionnalité à réaliser en utilisant SMPC serait une réduction d'arborescence AND qui nécessite N-1 AND porte et a une profondeur d'environ log_2 (N) ET portes avec chaque vote «oui» étant une entrée de vérité (1) dans le circuit et chaque «non» étant une entrée falsey (0).

La solution la plus simple pour cela serait probablement d'utiliser le protocole GMW SMPC qui permet à N-1 parties de travailler ensemble sans divulguer aucune information secrète. Il existe également une variante qui permet à N / 2 personnes au maximum de s'écarter du protocole.

Le déroulement de base du protocole est le suivant:

  1. Chaque partie a une entrée 1 bit et choisit N-1 bits aléatoires et calcule le XOR des bits aléatoires avec le bit d'entrée. Ensuite, un bit aléatoire est distribué à une autre partie chacun et le propriétaire conserve le XOR des bits aléatoires et des entrées.
  2. Ensuite, le circuit est évalué porte par porte, ce qui donne à chacun une part XOR-aléatoire de la valeur de sortie de cette porte. Les portes XOR peuvent être calculées localement en multipliant simplement les parts des valeurs d'entrée. Les portes ET nécessitent un protocole interactif, ce qui est un peu compliqué, je vous renvoie donc à l'article (formaté) pour cela: "Comment jouer à n'importe quel jeu mental" par Goldreich, Micali et Wigderson ( STOCS'87; PDF).
  3. À la fin (après que toutes les portes ont été évaluées), chacun diffuse sa part du bit de sortie afin que tout le monde puisse les XOR localement ensemble.

Dans l'ensemble, le protocole GMW ci-dessus nécessitera N * (N-1) / 2 1-sur-4 transferts oublieux de chaque partie, ce qui devrait être quelque peu efficacement calculable pour toute «famille» de taille raisonnable et pourrait même ne pas nécessiter de techniques sophistiquées comme OT Extension pour ce petit nombre de participants.

En ce qui concerne les logiciels, MP-SPDZ semble être un bon point de départ pour rechercher des implémentations (ainsi que la liste awesome-mpc). Notez cependant que vous y trouverez principalement des schémas plus avancés.

Cela semble probablement correct, mais j'ai du mal à suivre les étapes.Est-ce que le ET à l'étape 2 ne gâche pas le XOR à l'étape 3 _ (qui, si je comprends bien, est destiné à supprimer les bits aléatoires du calcul) _?
@BlueRaja-DannyPflughoeft L'idée de base pour les calculs de fin à l'étape 2 est que pour chaque porte, chaque partie a une part XOR de chaque entrée et à la fin du sous-protocole (non trivial) chaque partie a une part XOR de l'ANDdes deux entrées précédemment partagées par XOR.Pour clarifier cela, imaginez le cas à deux parties: A a L_A, R_A et B a L_B, R_B s.t.L_A XOR L_B = L et R_A XOR R_B = R. Le protocole permet maintenant à A d'obtenir O_A et B pour obtenir O_B s.t.O_A XOR O_B = L AND R. (le manque de LaTeX sur ce site est vraiment nul :()
user240587
2020-08-04 00:35:12 UTC
view on stackexchange narkive permalink

Une méthode très low-tech: donnez à chaque électeur une carte avec un trou percé à une extrémité, décalé du centre. Fabriquez un contenant qui contient les cartes et qui a un trou percé qui s'aligne avec le trou de la carte si elle était entrée face visible. Tout le monde vote en plaçant sa carte dans le conteneur face visible pour oui, face cachée pour non (avec la boîte correctement dissimulée pour empêcher quiconque de voir les votes eux-mêmes). Une tige est ensuite insérée à travers le trou du récipient. Si tout le monde a voté oui, la verge tombe. Si au moins une personne a voté non, la tige sera arrêtée.

C'est une bonne solution (+1).Il est important de trouver un moyen de jeter les cartes de vote en toute sécurité, de sorte que les votes eux-mêmes (et l'ordre dans lequel ils ont été empilés) ne soient pas connus.
J'utiliserais un tube, avec un bouchon en verre à la fin.Chaque personne reçoit un marbre clair (congé) et noir (séjour), Ils roulent chacun une bille dans le tube, sans regarder dedans, l'autre marbre est mis dans un sac .. Ensuite, un autre marbre clair est roulé dedans.Enfin une lumière brille à travers le tube.Si cela sort de l'autre côté, alors tous ont voté en congé.Le tube, le sac et les billes sont ensuite détruits.
Comment éviter que la boîte ne soit inspectée?Par exemple, j'aurais peut-être remarqué que Joe avait placé la première carte dans la boîte et vérifié la carte du bas pour voir comment Joe avait voté ...
@meriton la boîte pourrait être faite de carton et brûlée après le vote.Vous pouvez également remplir la boîte avec un certain nombre de cartes orientées «oui» à chaque extrémité pour qu'il soit difficile de déterminer qui dans l'ordre de vote a voté le premier «non».
https://en.wikipedia.org/wiki/Blackballing fait en fournissant à chaque électeur deux balles de couleurs différentes, toutes deux placées dans le dispositif de vote, ou une seule balle et un dispositif de vote avec tiroirs séparés, etc.
jez
2020-08-03 22:24:22 UTC
view on stackexchange narkive permalink

Il y a un chat dans une boîte avec une fiole de gaz toxique. Le flacon est fixé à un bouton (marqué «Non») qui libère le gaz. Juste à côté de ce bouton, il y a aussi un bouton factice qui fait un clic identique (marqué "Oui"). La boîte est insonorisée et vous ne pouvez pas y voir. La famille est assise devant. Les boutons sont à l'arrière. Chaque personne a un tour pour marcher derrière la boîte et appuyer sur un bouton. Quand tout le monde a eu son tour, le chat - et donc par extension le culte - est dans une superposition d'états. Réduisez-la en ouvrant la boîte ou, pour des résultats encore meilleurs: mettez des masques à gaz, puis ouvrez la boîte. Enfin, enterrez le chat ou dissolvez le culte, selon le cas. Dans ce dernier cas, utilisez une procédure de vote secondaire pour décider qui garde le chat.

Nous devrions utiliser un rat au lieu d'un chat, pour éviter l'impact sur les résultats des amoureux des chats ou de l'ASPCA.
LOL - J'adore la façon dont nous essayons de décider quel animal tuer, alors que vous pouvez simplement le changer en `` répand de la peinture '' ou autre.Définit +1 sur la réponse - c'est certainement la bonne façon applicable de résoudre le problème.
@Kevin J'avais tout un spiel écrit, à propos de chaque personne mettant un nombre arbitraire de gouttes d'encre dans un pot d'eau, et j'étais sur le point de me soumettre quand j'ai réalisé à quoi il était isomorphe.
Cet appareil est par définition un tiers de confiance
@BlueRaja-DannyPflughoeft pas dans le sens où l'OP s'inquiète: (1) il n'est pas compromis si nous permettons à tous les membres de la famille d'examiner le mécanisme et la procédure, de s'assurer que cela fonctionne comme prévu (analogie: cryptage open-source);et (2) la machine ne conserve aucune information sur qui / combien a appuyé sur le bouton «Non», donc ne peut pas être compromise à des fins de chasse aux sorcières.
Si nous allons permettre aux "appareils open-source" de ne pas être considérés comme des "tiers de confiance", alors la réponse est triviale et ne nécessite pas de tuer des chats: utilisez littéralement n'importe quelle machine à voter automatisée open-source.Mais selon la définition normale, tous ces appareils (y compris le vôtre) sont des tiers de confiance.
Et un système de vote tertiaire pour décider qui doit ouvrir la boîte, idéalement avec un masque à gaz * et * un gilet pare-balles.Pour citer Terry Pratchett, un chat dans une boîte a trois états possibles: vivant, mort et sanglant furieux.
Combien de chats la famille a-t-elle?Le processus doit être répétable
@bradbury9 Ils connaissent un gars qui connaît un gars.Tu veux un chat?Il peut te trouver un chat.
Le chat vote oui pour quitter ce culte!
Kevin
2020-08-04 00:29:29 UTC
view on stackexchange narkive permalink

C'est en fait un problème difficile! Voici donc ma solution papier et crayon, en essayant de la rendre aussi simple que possible.

  1. Chaque personne reçoit 3 bouts de papier. Ils écrivent secrètement un numéro à 2 chiffres différent sur chacun d'eux et les mettent face cachée devant eux.

  2. Chaque personne attrape 3 fiches d'autres personnes, idéalement non deux de la même personne.

  3. Chaque personne écrit la somme de ces 3 feuillets. S'ils souhaitent voter non, ils peuvent écrire un nombre supérieur au total réel. Allez-y et affichez cette information.

  4. Répétez l'étape 2, afin que chaque personne ait 3 nouveaux feuillets de papier.

  5. Chacun personne écrit ce que ces 3 feuillets ajoutent, mais cette fois garde leur somme face cachée. S'ils souhaitent voter non, ils doivent écrire un nombre inférieur au total réel. (Ceci est facultatif s'ils ont déjà fait un faux total à l'étape 3.)

  6. Chaque personne détruit les bouts de papier originaux devant elle. Tout ce qui reste après c'est la somme qu'ils ont faite à l'étape 3 et la somme qu'ils ont faite à l'étape 5.

  7. Tout le monde affiche ses sommes en même temps.

Toutes les sommes de l'étape 3 s'additionnent-elles à toutes les sommes de l'étape 7? Sinon, il y a au moins un vote «Non».

Pourquoi cela fonctionne-t-il?

Il n'y a pas de secret généré par un tiers. Aka, rien ne génère un grand prime ou quelque chose comme ça. Si `` quelque chose '' génère des informations, toutes les parties impliquées doivent lui faire confiance. Cela contourne cela, car le secret (quel est le total) est généré par toutes les parties impliquées, sans être quelque chose que l'un d'entre eux connaît.

Il n'y a pas de chaînage d'informations. Le travail de la personne B ne dépend pas de la sortie de quelqu'un d'autre. Ils ne peuvent pas utiliser leur contribution pour déterminer si la personne A ment.

Il n'y a aucun moyen de déterminer si le total de quelqu'un est légitime. S'ils disent «218», la seule façon de savoir si c'est un nombre possible est de savoir ce que disent tous les bouts de papier. Mais personne n’a vu tous les bouts de papier.

Mignonne.C'est comme concevoir un jeu de plateau "déserteur" impossible à gagner.
Dans quelle mesure cela dépend-il du caractère aléatoire et de la non-traçabilité des deux procédures de «saisie»?Si vous pouviez regarder et mémoriser qui a saisi quels feuillets et quand, cela vous donnerait-il des informations sur les votes des gens?
@jez - pas sûr, mais j'en doute.Je veux dire, si vous voyiez cette personne A attrapé des feuillets écrits par B, C et D - vous pourriez demander à B, C et D quelles sont les trois valeurs qu'ils ont écrites, puis l'utiliser pour déterminer si A mentait quand ils ont dit lele total était de «162».Mais vous vous fiez à B, C et D pour vous dire tous la vérité (et vous rappeler avec précision les trois numéros originaux qu'ils ont écrits.) Vous pourriez également demander à E, F et G - qui ont tous pris les feuillets de la personne A pour ledeuxième tour, mais vous êtes dans le même bateau: vous leur faites confiance pour tous vous dire la vérité et se souvenir avec précision.
Il convient également de noter: j'ai délibérément gardé le processus aussi simple / facile que possible à grok.Si j'essayais de rendre cela aussi résistant que possible, je suggérerais d'utiliser N-1 morceaux de papier.Donc, si la famille comptait 11 membres, ils auraient chacun 10 bouts de papier à remplir.De cette façon, la seule façon de déterminer si quelqu'un a menti ou non serait de faire confiance à tous les autres membres de la famille pour dire la vérité (au lieu de simplement avoir besoin de faire confiance 3.) Ce que vous pouvez déjà faire ("Avez-vous tous voté Oui? Alors Bob doit avoir voté non. ")
Cette information ne peut-elle pas divulguer si une seule personne vote "Non"?S'ils augmentent la somme de x à l'étape 3 et la diminuent de y à l'étape 5, alors les sommes finales sont différentes de (x + y).La personne qui a voté «non» saurait immédiatement qu'elle est la seule à voter de cette façon."J'ai la preuve que tout le monde dans ma famille veut trahir la secte!"ressemble à de mauvaises informations à fuir.
Une autre mise en garde: cela suppose également qu'ils peuvent tous effectuer des mathématiques de base ainsi que des compétences numériques, ce qui est plus un pari que d'essayer de faire défaut.Votre manque de confiance dans l'équipe a été signalé./ s
@RobWatts Ils additionnent des nombres différents.Personne ne sait qui a modifié les sommes, seulement qu'elles ont été modifiées.
@LorenPechtel - ce qu'il dit, c'est que si j'ai voté non et ajusté le premier total de 3 et le deuxième total de 5 ... si je vois la différence est de 8, je saurai que personne d'autre n'a manipulé les chiffres.Ce qui est un bon point, mais je ne suis pas sûr de la différence que cela fait par rapport à la question spécifique du PO (witchunts, etc.)
Il est peu probable, mais aussi possible que deux personnes ou plus fassent des mensonges compensatoires.
Tel qu'il est rédigé, ce protocole serait soumis à la collusion d'un groupe de personnes pour déterminer comment un tiers a voté sans avoir à être compté comme votant «oui» eux-mêmes.
@Kevin Bon point - vous pouvez déterminer si vous êtes le seul à ne pas voter.Les informations ne semblent pas trop utiles, cependant, dans ce cas, vous savez que vous n'avez pas d'alliés.
@LorenPechtel, malheureusement, la seule personne a des alliés - tout le reste de la secte.
@RobWatts Hein?La seule fuite que je vois, c'est lorsqu'une seule personne choisit de rester.Ils découvrent que tout le monde veut partir.Pas d'alliés.
@RobWatts - c'est un bon point.La personne qui sait "Je suis la seule personne qui veut rester ici" décide, "Heck avec ma famille, je vais tous les rapporter au Grand Wahoobah! J'ai une nouvelle famille maintenant, et ils m'aiment tous"
@supercat - c'est pourquoi j'ai ajouté ce commentaire - que si c'est une peur que vous avez, changez simplement «3» en «N-1».De cette façon, la seule façon dont vous pourriez déduire le vote d'un autre est si tout le monde se réunissait et faisait confiance aux déclarations des autres.
@Kevin: J'apprécie que vous essayiez d'aborder cela d'un point de vue mathématique / cryptographique, mais je pense qu'une solution robuste devrait générer une preuve indélébile que chaque personne a voté oui avant que quiconque puisse s'assurer que c'est le cas.Même si à la dernière étape quelqu'un essayait de changer d'avis, les autres participants finiraient par avoir la preuve qu'ils avaient auparavant voté oui.
Hagen von Eitzen
2020-08-03 19:17:58 UTC
view on stackexchange narkive permalink

Ustensiles requis: stylo et papier.


En groupe, choisissez un grand premier p.

Tout le monde choisit une paire secrète de nombres ai , bi avec a i b i ≡ 1 (mod p ). Par exemple, choisissez ai au hasard dans la plage 1… p - 1 et trouvez b i par l'algorithme euclidien étendu. Si ai ou bi est étrangement petit (disons, moins de la moitié du nombre de chiffres que p ), recommencez simplement avec une nouvelle valeur aléatoire. Ceux qui veulent répondre «non», choisissez à la fois ai et bi au hasard.

Maintenant, les numéros sont échangés: tout le monde donne son ai à son voisin de gauche, et reçoit un j de leur voisin de droite.

Tout le monde multiplie maintenant mod p leur paire de nombres maintenant détenue et annonce le résultat. Maintenant, les nombres annoncés sont multipliés mod p . Si tout le monde a voté "oui", le résultat final sera 1. Si un certain nombre d'entre eux votent "non", le résultat sera un nombre aléatoire et donc très probablement pas 1 (nous voudrons peut-être agrandir p pour augmenter la confiance).

Mais la personne à votre droite et la personne à votre gauche ne pourraient-elles pas collaborer pour déterminer si vous votiez «Oui»?Si nous nous inquiétons de la chasse aux sorcières, une personne ne pourrait-elle pas dire "Hé, je me méfie un peu de Bob. Il m'a donné ###### - qu'est-ce qu'il vous a donné? Voyons s'il a voté oui"
Ne pouvez-vous pas simplement jeter tous les nombres dans un chapeau pour qu'il n'y ait aucun moyen de retracer les numéros individuels jusqu'à une personne spécifique?
Supposons-nous que les membres de la secte ici effectuent ces calculs à la main?Si tel est le cas, y a-t-il quelque chose qui les empêcherait de simplement falsifier leurs calculs?Je dirais que nous voudrions leur demander de prouver leurs réponses à tous les autres membres.
@Kevin Bob ne donne qu'un seul numéro à une personne, son * a *.Il * reçoit * un numéro d'une personne différente
@securityOrange faisant la multiplication, puis mentir et donner un nombre aléatoire ne se distingue pas vraiment de simplement faire la multiplication avec un nombre aléatoire en premier lieu (c'est-à-dire simplement voter non).Bien sûr, il peut y avoir des canaux secondaires, si le non-votant effectif décide que faire la multiplication est trop dérangeant et donne simplement la réponse;)
@timuzhti - ah, j'ai raté il n'y avait pas de passe dans les deux sens.Mais c'est toujours le même problème.A qui Bob donne son numéro?Si Bob dit la vérité, il n'y a qu'un seul autre numéro qu'ils peuvent avoir (celui, multiplié par l'autre, c'est-à-dire mod = 1 par rapport à P.) Si cette personne collabore et demande: "Hé, quel numéro avez-vous donnéBob?"il devrait être trivial de savoir si Bob ment.
Je pense que votre schéma pourrait être considérablement simplifié (en particulier, en travaillant dans le groupe additif modulo un grand nombre arbitraire _m_ au lieu du groupe multiplicatif modulo _p_), mais il souffre également d'un défaut fondamental: un votant "non" peutou tout le monde n'a pas voté «oui».Et je ne vois aucun moyen de résoudre ce problème.
Vous m'avez perdu à "choisir un grand prime".(en réalité la réponse est bonne, je pense juste que puisque OP a fourni un contexte réel à la question (famille, culte, ...), la réponse devrait être compréhensible par le cousin majeur de l'art)
À noter: le vote de n'importe quel individu pourrait être découvert par la collaboration de leurs deux voisins;si j'ai écrit les nombres A et B, mon voisin de gauche apprend directement A et mon voisin de droite peut comprendre B en multipliant ce que je dis par l'inverse du nombre qu'ils m'ont donné.Si mes voisins voulaient briser le système et se faire confiance, ils pourraient travailler ensemble pour apprendre l'AB.
@timuzhti Je ne serais pas d'accord, car la variation selon laquelle mentir sur vos calculs pourrait annuler le vote.Par exemple, si N = 3 et qu'il y a eu 1 vote, et si 2 personnes sur 3 font la multiplication honnêtement à l'exception de la dernière, il y a 50% de chances que cette personne donne un oui et annule le résultat du vote.S'appuyer sur un seul vote négatif en fait un système fragile, donc une seule personne malhonnête - un seul général byzantin, dirons-nous: D - corrompt le résultat.Sais ce que je veux dire?:) Pensées?
@securityOrange Le chiffrement utilisé est fragile, oui, ce qui est honnêtement une bonne illustration de la raison pour laquelle vous ne devriez pas rouler le vôtre.À mon avis, cette réponse * essaie * d'utiliser / concevoir un chiffrement homomorphe qui, espérons-le, est réductible à la factorisation entière ou au log discret, et aussi au moins OW-CPA sinon IND-CPA (ce qui est difficilement impossible, RSA le fait), mais ne fonctionne pas tout à fait parce que dans le processus de simplification des choses, il a fini par utiliser la mauvaise fonction, ce qui se réduit à un problème facile!Les meilleurs chiffrements pour cela sont probabilistes par défaut, ils peuvent donc être IND-CPA tout en restant homomorphes.
securityOrange
2020-08-03 11:04:50 UTC
view on stackexchange narkive permalink

C'est une question vraiment cool et intéressante. J'aime vraiment ça.

Donc, je pense que nous devrions commencer par décomposer ce que vous essayez de faire de la manière la plus abstraite possible en théorie de l'information. Voici ce que je comprends:

  • N > 3 nœuds d'un groupe communiquent entre eux.
  • Ils transmettent soit un 0 ou un 1 , un oui ou un non.
  • Nous allons prendre toutes les entrées, puis ET les. En d'autres termes, nous ne nous soucions pas du résultat à moins que tout soit un 1 ; si ce n'est pas tout 1 , c'est 0 . (Si vous n'êtes pas très familier avec les portes logiques, cela peut être intéressant.)
  • La transmission de chaque nœud doit être inconnue de tous les autres nœuds.

La question devient alors de savoir dans quelle mesure la solution devrait être technique. Une solution plus technique, avec une seule technique low-tech, rend cela assez simple:

  1. Tous les nœuds attestent de leur identité en personne, et chaque nœud produit une paire de clés publique-privée et donne leurs clés publiques à un serveur centralisé.
  2. Ils transmettent ensuite leurs votes au serveur centralisé, qui les déchiffre à l'aide de leurs clés publiques.
  3. Le serveur effectue un ET et renvoie le résultat.

Si nous voulions essayer de le rendre moins technologique, je pense que nous voudrions opter pour des solutions plus étranges. En voici une qui me vient à l'esprit:

  • Du matériel soluble est placé dans un récipient, avec un peu d'eau. Chacun à son tour y verse un produit chimique, les yeux bandés et retient sa respiration, avec un bruit de fond important.
  • Ils choisissent soit l'eau pour oui, soit un acide incolore et inodore pour non. L'acide est suffisamment fort pour dissoudre les matériaux dans une quantité considérable de solvant, au fil du temps.
  • Après avoir déversé leurs votes, la configuration reste intacte pendant un certain temps. Ce montant est déterminé en trouvant le temps nécessaire pour dissoudre visiblement l'objet, compte tenu d'un résultat de vote de N - 1 votes négatifs.
  • Une fois le temps déterminé écoulé, tous les membres voient les résultats, séparément (afin d'éviter d'exprimer des réactions), puis convergent pour discuter des résultats.

En fin de compte, quel que soit le rôle joué par les ordinateurs dans le choix, la réponse est préserver la confidentialité et l'intégrité dans un environnement de transmission qui abandonne la confidentialité si les transmissions passent une porte AND . La solution eau-acide est l'une des nombreuses solutions possibles, mais à mon avis, elle fait toujours le travail.

Excellente question! C'était vraiment amusant d'y penser. Si j'ai manqué l'une des contraintes que vous avez déjà mentionnées, collez-la dans un commentaire et je la réviserai.

Edit: au départ, j'ai dit que l'eau était "non" et l'acide était "oui". Cela aurait dû être l'inverse. Merci de l'avoir signalé, @TripeHound.

J'aime la solution chimique, et il pourrait y avoir une solution simple avec des produits chimiques changeant de couleur en fonction d'un léger changement de pH.Si oui, il suffit d'ajouter de l'eau et non d'ajouter une solution qui modifie légèrement le pH, oui et non peuvent être inodores et incolores.La bouteille utilisée comme urne peut être peinte, de sorte que les résultats ne sont révélés qu'après l'avoir versée hors de la bouteille.
Il est dommage que les scientifiques comme les chimistes soient moins susceptibles de rejoindre une secte religieuse.:)
Votre non = eau, oui = acide n'est-il pas dans le mauvais sens?Ma lecture est que l'acide dissout le matériau (s'il se dissout dans l'eau, puisqu'il commence dans l'eau, il se dissoudra toujours).Par conséquent, si _quelqu'un_ dit "oui" (= acide), même si tous les autres disent "non", le matériau se dissoudra (après un temps suffisant).Si non = acide, alors si _au moins une personne_ dit "non", le matériau se dissout: il ne restera que si tous disent "oui" (c'est-à-dire que tous ajoutent de l'eau).Ou ai-je manqué quelque chose?Une solution ingénieuse (?) En tout cas!
Ces deux exemples font appel à des tiers de confiance (dans le second cas, le "tiers" est le produit chimique auquel nous faisons confiance pour se comporter comme prévu)
@TripeHound Vous avez raison!J'ai fait une erreur.Merci d'avoir fait remarquer cela!Oui, le vote négatif devrait être l’acide et le vote positif devrait être l’eau.Vraiment, la combinaison acide / eau peut être n'importe quoi: l'important est la bonne idempotence, comme le mentionne jez.Le "oui" devrait être la réponse idempotente, de sorte que, par défaut, nous n'avons aucun effet;le "non" doit être fortement non idempotent.
@EsaJokinen Je suis tout à fait d'accord - plutôt que d'être un acide, vous pourriez aussi en faire une couleur.Je pensais à ce sujet aussi.Je pense que ça marche?Mais en pratique, mesurer la quantité de colorant dans l'eau peut être difficile, à moins que vous ne regardiez des particules de pigment par million ou quelque chose du genre, alors que si vous dissolvez un objet, vous pouvez mesurer un changement de volume ou quelque chose de similaire.(Assurez-vous simplement qu'il est gorgé d'eau lorsque vous mesurez le volume la première fois.) Que pensez-vous?
@BlueRaja-DannyPflughoeft Je ne suis pas d'accord.Tant que tous les membres de la secte se procurent le produit chimique ensemble, je pense que ce n'est pas du tout un tiers.Quelles sont vos pensées?
@securityOrange: Non, je ne parlais pas de la coloration de l'eau, mais des ** indicateurs de pH ** qui changeront complètement la couleur après un certain seuil d'ions hydronium (H3O +) ou hydrogène (H +).Voir [la solution complète comme réponse] (https://security.stackexchange.com/a/236622/70406).
Vous avez oublié l'étape importante consistant à verser une quantité égale de l'autre liquide dans un récipient séparé ou dans le drain.De cette façon, personne ne peut regarder les volumes réduits de liquides entre les réponses et déterminer comment quelqu'un a voté.
Qmppu842
2020-08-03 18:33:00 UTC
view on stackexchange narkive permalink

Je ne peux pas commenter car je suis novice.
Pour ajouter / commenter les réponses @reeds et @securityOranges:
Cela semble pouvoir être facilement fait avec des commutateurs comme option semi low tech.

Faire un circuit tel que:
Batterie à basculer pour passer à passer à led retour à batterie.
Ensuite, on peut même construire et démontrer son fonctionnement équitable devant tous les participants.
Les fils pourraient être aussi longs que nécessaire.
Des lumières / LED pourraient même être ajoutées à côté de chaque interrupteur.
Je donnerais probablement aux gens une boîte en carton pour qu'ils se tiennent la main tout en étant dans la même pièce .

Les boutons peuvent être utilisés pour s'assurer que même si le système est physiquement volé pendant les votes, ils reviennent à leur état d'origine assez rapidement pour qu'aucune information ne puisse être obtenue.
Ensuite, juste les gens pour regarder l'horloge et tout le monde votera pendant ~ 10 secondes lorsque l'horloge atteint une certaine heure.

Edit: Je construis une démonstration de ceci:
https://imgur.com/a/kb6XQe6

En bref:
1. and 3. button being pressed, No blue LED

Au-dessus de deux des trois boutons sont enfoncés mais pas de lumière. Ci-dessous, tous les trois boutons sont enfoncés et donc la lumière est venue. All the buttons being pressed, blue LED

Et voici, espérons-le, une image pour effacer les connexions entre les composants: Connections explained

1, 2 et 3: De la batterie au premier bouton
4, 5 et 6: Boutons
7, 8, 9 et 10: connexion à la résistance
11: la résistance
12: la LED
13: Connexion retour à "Battery"

J'ai utilisé Arduino comme batterie mais j'aurais pu être n'importe quelle autre méthode pour fournir de l'énergie à la led.

Une amélioration est de combiner cela avec un circuit de verrouillage déclenché par une minuterie afin que les résultats du vote soient échantillonnés exactement une fois.Sinon, quelqu'un peut potentiellement tester s'il était le seul vote dissident en basculant son vote pendant que la sortie est affichée.
@DanBryant Pas besoin même de ça, un fusible qui saute plus ou moins instantanément lorsque le courant est connecté suffit.
Je pense que vous pensez toujours à un niveau trop élevé. J'ai fait une démonstration physique de ce travail avec toutes les combinaisons montrées pour le plaisir. [Ici, dans cette galerie https://imgur.com/a/kb6XQe6[https://imgur.com/a/kb6XQe6) que vous devriez pouvoir voir, je l'ai démo.
Cet appareil est par définition un tiers de confiance
@BlueRaja-DannyPflughoeft Pouvez-vous expliquer? Je ne parviens pas à raisonner moi-même comment ou quelle partie a besoin de la confiance d'un tiers.
Un "tiers de confiance" n'a pas besoin d'être une personne, il peut s'agir d'un appareil dont nous faisons confiance pour être sécurisé et anonyme.Dans cette réponse, cet appareil est un circuit personnalisé créé par vous.
Mais le fait est que c'est si simple que cela peut être fait devant les électeurs. Les électeurs peuvent l'examiner et ils pourraient en construire autant qu'ils le souhaitent pour ajouter de la redondance. Ils pourraient même construire chacun le leur et les tester séparément et les presser tous en même temps.
@Qmppu842.Je veux dire, en quelque sorte.Pour être honnête, si vous me tendiez cet appareil, ma première pensée serait "Attendez, comment puis-je savoir si le câblage est tel qu'il m'a été décrit?"Et je jouais avec, essayant tous les boutons, et serais heureux un peu ... jusqu'à ce que je me dise "Attends, comment savoir qu'il n'y a pas un Nième bouton caché qui modifie le comportement de l'appareil?"Je veux dire, si j'étais suffisamment compétent, je pourrais peut-être examiner l'appareil, retracer tout son fonctionnement interne et lui faire entièrement confiance ... mais à part cela, je n'aurais aucune garantie que le résultat final étaitvrai.
@Qmppu842: La simplicité de création du tiers de confiance n'a pas d'importance.C'est toujours un tiers de confiance.
Esa Jokinen
2020-08-04 11:31:58 UTC
view on stackexchange narkive permalink

Cela améliore la pensée de securityOrange, mais sous une forme plus fiable sans attendre.

Solution chimique utilisant un indicateur de pH

Regardons différents indicateurs de pH, des composés chimiques halochromiques c'est-à-dire des composés qui réagissent à l'acidité ou à la basicité de la solution en changeant de couleur. Cette image corrigée du blog EduMission montre quelques exemples, et un graphique plus complet et précis est disponible sur Wikimedia.

enter image description here

Comme nous ne voulons pas nous blesser en mélangeant ces solutions, il est préférable de choisir des composés où la transition est suffisamment nette pour être clairement remarquée, comme la thymolphtaléine qui est bleu au-dessus de pH 10,5 et incolore au-dessous de 9,3. La phénolphtaléine n'est pas aussi bonne, car elle redevient incolore au-dessus du pH 10. De plus, une mesure trop précise du pH donnerait des informations sur le décompte des voix.

Cela fonctionne pour de très grands groupes, car le L'échelle de pH est logarithmique: ajouter 1 gramme d'hydroxyde de sodium dans 60 litres d'eau donne un pH de 10,6!

Mode de vote:

  1. Préparez par exemple Solution d'hydroxyde de sodium pour voter non . Si vous ajoutez par exemple 0,4 gramme d'hydroxyde de sodium pour 0,4 litre d'eau, vous obtenez une solution avec un pH de 12,4.

  2. Ayez un flacon de eau pour oui votes (pH sept). Les deux liquides sont incolores et impossibles à distinguer à l'œil nu. Par conséquent, il est important que les solutions soient préparées avec les autres.

  3. Chacun à son tour prend une pipette pleine de l'une ou l'autre solution et la verse dans un troisième flacon; appelons cela une solution pour les urnes . Il est important d'utiliser une pipette suffisamment petite par rapport aux tailles des flacons pour que la hauteur de la surface ne donne aucune indication sur la solution déjà utilisée.

  4. Pour compter les votes , déposez la thymolphtaléine dans la solution des urnes.

    Si elle devient bleue, au moins quelqu'un a voté contre. Voyons à nouveau comment la nature logarithmique du pH affecte si 10 personnes votent avec cette solution. La zone grise montre la plage de transition de la thymolphtaléine où nous ne pouvons pas dire avec certitude quelle serait la couleur.

    pH as a function of casted no votes

  5. Pour vérifier les résultats, vous pouvez ajouter de la thymolphtaléine dans les deux solutions d'origine pour vous assurer qu'elle fonctionne comme prévu. Après cela, mélangez le tout pour éviter une mesure plus précise du pH ou des volumes par la suite, car cela peut révéler le décompte exact des votes.

Il s'agit simplement d'une implémentation à base chimique du schéma "[blackball] (https://en.wikipedia.org/wiki/Blackballing)".
Non ce n'est pas.Le système de blackball préserve le décompte des votes, et ce problème consistait à ** cacher le décompte des votes ** dans toutes les autres situations, mais lorsque tout le monde a voté oui.
Phil
2020-08-04 17:45:46 UTC
view on stackexchange narkive permalink

Avec des articles ménagers: tout le monde prépare un verre d'eau, distillée serait mieux. Si vous voulez voter non, dissolvez toute quantité de sel dans votre verre. Tout le monde doit remuer son verre pour éviter que le mouvement d'agitation ne soit une révélation.

Combinez simultanément les verres d'eau dans une casserole. Les verres seront immergés dans un bol d'eau pour éviter que les gouttes ne remontent jusqu'à l'électeur. Faites bouillir l'eau, s'il y a un résidu de sel, ce n'était pas un vote oui à l'unanimité.

Le problème est que l'électeur actuel (plus il est loin dans la ligne de vote, mieux c'est) peut vérifier (en échantillonnant l'eau) si quelqu'un a déjà voté "sel" ou non.
Après avoir été remplie d'eau mais avant l'ajout de sel, la casserole est à la vue du public.Tous les participants peuvent regarder le plateau et attaquer quiconque tente d'effectuer un échantillonnage non autorisé.
@Woj J'avais prévu que les verres soient versés dans la casserole en même temps.Mis à jour pour clarifier.
Il s'agit simplement d'une version à base de sel du schéma "[blackball] (https://en.wikipedia.org/wiki/Blackballing)".
@schroeder avec blackball, vous pouvez ensuite compter combien de boules noires ont été lancées, ce qui enfreint les exigences.Avec ce schéma, vous ne pouvez jamais dire combien de personnes ont mis du sel.
Vous supposez un rapport de 1: 1 de balles aux électeurs.
@schroeder même sans un rapport 1: 1 de balles, si je mets x balles noires, je peux déduire si quelqu'un d'autre a voté avec moi s'il y a> x balles noires.Potentiellement, si un électeur de mon programme pesait avec précision le sel au préalable et pesait avec précision le résidu après, il pourrait faire une déduction similaire, mais cela pourrait être évité de manière triviale en lavant la casserole avant que quiconque n'ait la possibilité de la peser.
Nick Bonilla
2020-08-03 21:16:29 UTC
view on stackexchange narkive permalink

Utilisez des couches de cryptage, où chaque membre de la famille possède une clé pour une seule des couches.

enter image description here

Étape 1: Cryptage

Au début d'un vote, demandez à un membre de la famille de crypter un message simple qui dit "Oui, nous voulons tous partir". Après que la première personne crypte le message avec une clé privée qu'elle vient de générer, la première personne l'envoie par e-mail à un autre membre de la famille pour crypter à nouveau le message déjà crypté avec sa propre clé privée, puis le transmet jusqu'à ce que tous les membres de la famille a ajouté une couche de cryptage. Cela fournit un "oignon" de cryptage, chaque membre de la famille ayant ajouté une couche de cryptage au message.

Étape 2: Décryptage

Lors du vote, les membres envoient leur clé privée réelle ou fausse. Si des faux sont fournis, le message ne peut pas être décrypté.

Ce n'est que lorsque tous les membres de la famille se sont mutuellement fourni leur vraie clé, ils peuvent tous décrypter toutes les couches du message chiffré.

Étape 3: Vote futur

Si la famille décide de tenir un autre vote l'année prochaine, elle devra trouver de nouvelles clés privées pour elle-même et recommencer le processus depuis le début.

Je pense que cela fonctionne à condition que la fausse clé privée conduit à un décryptage incorrect plutôt qu'à un décryptage échoué.De cette façon, le groupe ne verra pas quelle clé n'a pas pu déchiffrer.
En effet.Il semble qu'un schéma symétrique, comme celui qui ressemble à un pad ponctuel (XOR avec octets aléatoires), pourrait avoir le même effet mais être moins traçable.
Je ne suis pas sûr que cela fonctionne.La personne B a accès à deux données: ce que la personne A lui a envoyé et ce que tout le monde dit que sont ses clés.Ainsi, la personne B peut déterminer ce que la personne A a voté (vérifiez simplement: les données qui leur ont été données sont-elles déchiffrables avec ce que A a dit plus tard que leur clé était?)et B ont tous deux déclaré que leurs clés l'étaient.Si A et B votent tous les deux Oui, C devrait être capable de déchiffrer les données.Sinon, l'un d'eux (ou les deux) a voté non.
C'est de loin la meilleure réponse jusqu'à présent _ (la plupart des autres s'appuient sur des tiers de confiance qu'ils ont déguisés en téléviseurs ou en produits chimiques) _, mais cela pose encore quelques problèmes.Le plus flagrant est ce qu'@Kevin mentioned:, l'avant-dernière personne saura ce que la dernière personne a voté.Je pense que cela peut être résolu en demandant à tout le monde de faire un deuxième cycle de cryptage.L'autre problème est que c'est [répudiable] (https://en.wikipedia.org/wiki/Non-repudiation) _ (quelqu'un qui a voté «oui» peut prouver qu'il a voté oui) _.
décrypter le message avec la clé réelle ou fausse conduit à la fois à du charabia, comme @niemiro l'a déclaré.
@NickBonilla - nous ne parlons pas de déchiffrer le message original / final - mais l '* entrée * d'une personne spécifique.Disons qu'il y a 4 personnes: Alice, Bob, Charlie et Diane, et elles chiffrent dans cet ordre.Alice crypte un message et le remet à Bob.Plus tard, Alice va dire à tout le monde sa clé de cryptage - donc à ce moment-là, Bob sait comment Alice a voté (alias, son entrée était-elle déchiffrable par la clé d'Alice?) De même, quand Bob remet à Charlie la deuxième couche de l'oignon, Charlie estplus tard, je vais découvrir ce qu'Alice et Bob avaient pour les clés, et savoir s'ils ont tous les deux voté oui.
Étant donné que le cryptage / décryptage de chacune des couches dépend de la précédente, comment vous assurez-vous que la bonne clé est appliquée?Vous gardez une trace de l'ordre des votes?
bta
2020-08-04 01:31:29 UTC
view on stackexchange narkive permalink

Essayer de garder cela aussi bas que possible.

  • Tout le monde reçoit deux petites pastilles, une BB en acier et une pastille en plastique airsoft (taille égale mais composition différente).
  • À l'intérieur de l'isoloir se trouvent deux emplacements, l'un intitulé «Vote» et l'autre intitulé «Rejeter». Chaque fente mène à un sac opaque. Ni les sacs ni leur contenu ne peuvent être observés directement.
  • Le sac "Vote" est pré-rempli de plusieurs pastilles en plastique, et le sac "Discard" est pré-rempli de plusieurs pastilles d'acier.
  • Si l'électeur veut partir , il placera sa pastille en plastique dans la case "Vote". S'ils veulent rester , ils placent leur pastille d'acier dans la case "Vote". La pastille restante est placée dans l'emplacement "Rejeter".
  • Une fois que tout le monde a voté, les sacs sont testés avec un aimant aux terres rares. Si le sac «Vote» est attiré par l'aimant, il contient au moins une pastille d'acier (donc au moins une personne a voté pour rester). S'il n'est pas attiré par l'aimant, alors tout le monde a voté pour partir.
  • Le sac "Rejeter" est le groupe témoin. Puisqu'il était pré-rempli de pastilles d'acier, il devrait toujours être attiré par l'aimant quel que soit le vote.
  • Une fois le résultat déterminé, chaque électeur visite l'isoloir une dernière fois. Lors de ce dernier voyage, ils peuvent placer n'importe quel nombre de pastilles de l'un ou l'autre type dans l'un ou l'autre (ou les deux) emplacements.

Cela devrait garder le vote anonyme et introuvable. Les jetons de vote ne contiennent aucune information traçable telle que l'écriture manuscrite, et l'électeur les utilise tous les deux quel que soit son choix. Un espion ne peut pas déterminer votre vote en écoutant le son de la pastille parce qu'il n'y a aucun moyen de savoir quel sac l'électeur a utilisé en premier. L'aimant vous permet de tester la présence d'un vote de «séjour» sans examiner directement les votes eux-mêmes. Le dernier voyage dans l'isoloir ajoute suffisamment de bruit aléatoire aux données pour que le décompte initial du vote soit complètement irrécupérable par celui qui démolit l'isoloir.

La seule information qui fuit du processus est la force de l'attraction entre l'aimant et le contenu du sac. Une attraction plus faible signifie moins de votes «restants». Il s'agit d'un niveau de fuite acceptable pour plusieurs raisons. Premièrement, la force d'attraction n'est pas quelque chose que les humains peuvent quantifier sans équipement spécial. Peut-être plus important encore, la force d'attraction variera considérablement en fonction de la façon dont les pastilles sont disposées dans le sac (c'est-à-dire, une traction plus forte lorsque plus près de l'aimant). Cette imprévisibilité devrait ajouter une marge d'erreur suffisamment grande à toute estimation du décompte des voix pour rendre ces suppositions sans valeur.

L'inconvénient est que cette procédure peut fonctionner pour une famille mais pourrait être délicate si le nombre d'électeurs augmente également grand. Une seule pastille de métal mélangée à un grand nombre de pastilles de plastique pourrait être manquée à moins que vous n'ayez un aimant déraisonnablement puissant.

Il s'agit d'une variante très complexe du schéma "[blackball] (https://en.wikipedia.org/wiki/Blackballing)".
@schroeder - C'est l'idée de base.La complexité supplémentaire est juste là pour fournir l'anonymat demandé et le masquage des totaux de vote.
thieupepijn
2020-08-04 03:26:48 UTC
view on stackexchange narkive permalink

Je pense que ce problème peut être résolu de la manière low-tech simple suivante. Donnez à chaque électeur deux pierres, une pierre lourde qui signifie oui et une pierre légère qui signifie non. Le vote se fait en plaçant une de vos roches dans un objet flottant. L'objet ne coule que lorsque tous les électeurs mettent leur lourde pierre (oui) dans l'objet flottant.

Vous auriez besoin de rendre les roches visuellement identiques (ou quelqu'un connaîtrait le statut du vote jusqu'à présent).Ensuite, vous devez bloquer l'objet flottant pour que la submersion ne change pas (donnant un indice sur les votes précédents).Ensuite, l'électeur ne doit pas pouvoir toucher la configuration, sinon il pourrait vérifier les poids et avoir une idée des votes jusqu'à présent.
Enfin la submersion basée sur tous les poids présents pour immerger l'objet est compliquée à faire: si vous avez une petite différence entre les poids, vous devez être extrêmement précis avec le système (seule une petite différence déclenchera la submersion).Si les différences sont importantes, plusieurs objets légers peuvent égaler un objet lourd.
Ou donnez simplement à chacun un bidon identique et deux poids, 1 kg et 3 kg.Chacun place discrètement l'un des poids dans son bidon puis tout le monde se rassemble et les place sur un côté d'un jeu d'échelle.Une fois que chacun a placé son bidon, placez un poids de 3n - e kg pour un petit e de l'autre côté.Déterminez le résultat.Retirer le poids de 3n kg puis permettre à chaque participant de retirer son bidon.
Ceci est simplement une variante du schéma "[blackball] (https://en.wikipedia.org/wiki/Blackballing)".
@Schroeder Je ne pense pas que ce soit une variante du schéma de blackball.Dans le schéma du blackball, le nombre (exact) de votes positifs et négatifs est connu.Quelque chose que l'OP ne veut explicitement pas.
HiddenWindshield
2020-08-04 04:43:02 UTC
view on stackexchange narkive permalink

Procurez-vous du contreplaqué, de petites boules de feutre (ou d'autres balles douces et non bruyantes) qui ne se distinguent pas les unes des autres, et des vis à bois. Construisez une boîte avec deux trous à l'avant, l'un marqué «Leave» et l'autre marqué «Stay». Il doit être difficile à démonter pour éviter toute altération, alors ne lésinez pas sur les vis. Chaque trou mène à une rampe qui déposera une balle dans le fond de la boîte, cependant, le trou «Stay» a une encoche de la taille d'une balle. Fixez la boîte au mur (pour empêcher quiconque de l'incliner). Installez une «cabine de vote» de feuilles ou quelque chose autour d'elle pour empêcher quiconque de voir le vote d'une autre personne, et limitez le temps que chaque personne passe dans la cabine à juste assez longtemps pour mettre sa balle dans un trou.

Si quelqu'un met sa balle dans le trou "Stay", cette balle tombera dans l'encoche. Toute balle de l'électeur "Stay" suivante roulera au-dessus de l'encoche (semblable à la bille jaune dans cette vidéo; quelques réglages peuvent être nécessaires pour s'assurer que d'autres balles roulent comme elles sont censées le faire) et tomber dans le bas, comme pour les votes «Leave». Une fois que tout le monde a eu la chance de voter, démontez la boîte et voyez s'il y a une boule dans l'encoche.

Ceci est simplement une variante du schéma "[blackball] (https://en.wikipedia.org/wiki/Blackballing)".
@schroeder Dans le vote au blackball, tout le monde peut voir le nombre de votes négatifs.Le PO exigeait que personne ne puisse savoir combien de personnes ont voté contre, mais seulement si au moins une personne a voté contre.
Vous supposez un ratio de 1: 1 d'électeurs aux balles.
@schroeder, le système de blackball divulgue des informations si une seule personne a voté pour rester - elle sait combien de balles noires elle a introduites, donc si elle en voit beaucoup, elle sait qu'elle est la seule à avoir voté non.Cette solution évite intelligemment ce problème.
Dietrich Epp
2020-08-04 22:41:13 UTC
view on stackexchange narkive permalink

Cela peut être réduit au problème des cryptographes à manger.

Le protocole est relativement simple.

  1. Obtenez des dés pour générant des nombres uniformes compris entre 0..M-1.

  2. Disposez tout le monde dans un cercle, de sorte qu'ils soient à côté de deux personnes: une à gauche et une à la droite.

  3. Chacun rencontre ses partenaires et génère un secret partagé, un nombre uniforme compris entre 0..M-1. Chaque personne se retrouve avec deux secrets partagés car elle est associée à deux personnes.

  4. Chacun part tout seul et génère un secret personnel, également un numéro uniforme dans la plage 0 ..M-1.

  5. Chacun soumet un numéro sur une feuille de papier.

    • S'ils votent, restent , ils soumettent leur numéro secret personnel.

    • S'ils votent rester, ils soumettent le secret gauche moins le droit secret, modulo M. réduit

  6. Tous les votes sont additionnés et réduits modulo M. Si tout le monde voté pour rester, alors le résultat est 0, puisque tous les secrets partagés apparaîtront une fois positifs et une fois négatifs. Si quelqu'un a voté pour partir, le résultat est un nombre aléatoire uniforme compris entre 0..M-1.

Donc,

  • Si tous les participants votent «quitter», le résultat sera «quitter».

  • Si un participant vote «rester», le résultat sera «partir» avec probabilité 1 / M et "rester" dans le cas contraire.

«partir» ne pas garantir que tout le monde veut partir n'est pas une bonne solution.Il serait utilisable dans l'autre sens - si «rester» avait une chance d'être généré par un vote «quitter», mais «quitter» signifiait toujours que tout le monde veut partir.
@RobWatts: C'est une analyse incorrecte.Tous les systèmes physiques ont une probabilité non nulle de produire un résultat incorrect - il est donc * toujours * possible d'avoir un faux résultat de «congé», quelle que soit la technique que vous utilisez.Cette solution n'est pas différente, mais elle vous oblige à quantifier votre tolérance pour un résultat erroné à l'avance en choisissant M.
Je ne suis pas d'accord avec votre tristesse sur la question.Votre réponse a autant de problèmes avec la production d'un résultat incorrect (les gens peuvent toujours faire une erreur lors du calcul), vous avez donc ce niveau d'erreur * en plus * de la probabilité 1 / M de l'échec du système lui-même.En fait, à mesure que M augmente, le risque d'erreur humaine augmente, de sorte que les efforts pour réduire la tolérance d'erreur pourraient en fait aggraver la situation.
@RobWatts: Problème trivial avec des solutions triviales: vous exécutez le vote plusieurs fois.Tous les systèmes ont ce problème, tous les systèmes ont cette solution.Il n'y a rien dans cette ligne de discussion qui soit spécifique à ma réponse.
Artimithe55
2020-08-04 00:41:48 UTC
view on stackexchange narkive permalink

Ce que vous demandez, c'est un système qui génère V = v (1) AND v (2) AND ... AND v (n) v (i) est le vote binaire de la même personne. Selon la loi DeMorgan, V = NOT W W = w (1) OU w (2) OU ... OU w (n) et w (i ) = PAS v (i) . Par conséquent, nous pouvons reformuler la question pour être plus simple. Nous recherchons uniquement un système capable de répondre si:

Sur les N personnes qui ont voté, ont voté au moins un Non?

Cela suit l'intuition ; si vous avez besoin du consentement unanime, dès qu'une personne s'y oppose, le reste des votes n'a pas d'importance. Ou en d'autres termes, vous demandez un système de veto anonyme.

Cela peut être mis en œuvre de plusieurs manières.

  • Un bouton-poussoir électronique (étiqueté "appuyez pour rester en culte ") dans une pièce fermée. Le système démarre à l'état 0 et le fait d'appuyer sur le bouton passe à l'état 1. Une fois que tout le monde a eu l'occasion d'entrer dans la pièce et d'appuyer secrètement sur le bouton, l'appareil est examiné pour voir si quelqu'un l'a fait.
  • A variation sur ce qui précède: un bouton B à l'intérieur de la pièce qui ne ferme que le circuit, et un S à l'extérieur de la pièce où tout le monde peut voir. Les deux sont câblés à une lumière qui ne s'allume que si les deux boutons sont enfoncés. Au début, S est désactivé et B n'est pas enfoncé. Tout le monde regarde S pour s'assurer qu'il n'est pas touché prématurément, et entre dans la salle pour se relayer pour éventuellement appuyer sur B. Une fois que tout le monde a terminé, ils retournent S ensemble pour voir si B a été pressé pendant le vote. Vous pouvez même avoir plusieurs salles, chacune avec son propre B connecté au même appareil, de sorte que le vote puisse avoir lieu simultanément - de cette façon, il n'est pas possible de conspirer contre un électeur et de retourner S juste après avoir voté.
  • Une version mécanique en forme de boîte avec un marquage au milieu de l'intérieur. Un petit morceau de papier est placé exactement sur le marqueur et la boîte est verrouillée. Chaque électeur a la possibilité d'aller dans une pièce fermée et de secouer la boîte. Une fois que tout le monde a terminé, la boîte est ouverte pour voir si le papier a bougé.
  • Une version plus robuste de ce qui précède, avec de nombreux papiers noir et blanc disposés en deux piles bien ordonnées (secouer la boîte les mélangerait ).
Une variante facile à réaliser: prenez une canette de bière.Chaque personne entre dans la pièce à son tour et secoue la canette de bière si elle veut voter non.À la fin, ouvrez la canette de bière.Si ça pulvérise partout, quelqu'un a voté non.Sinon, c'est oui à l'unanimité.
@KenShirriff Haha, c'est un bon!Bien que vous puissiez annuler le pétillement des canettes qui ont été secouées afin qu'elles ne débordent pas lorsqu'elles sont ouvertes, si quelqu'un connaît le truc, il peut opposer son veto.
J'aime l'idée de secouer la boîte, mais comment empêcher les gens de (A) ouvrir la boîte quand c'est leur tour et (B) d'entendre le son de la boîte trembler?
@shieldgenerator7 {A} Sceau inviolable;et / ou verrouillez la boîte et la clé est visible à l'extérieur pendant le vote.{B} Avoir une boîte alternative pour secouer avec un contenu uniforme.Arti: Alternative au papier (ou à la bière): Deux couches de sable de couleur différente.Vous ne pouvez pas défaire le sable.
jez
2020-08-04 09:38:36 UTC
view on stackexchange narkive permalink

Commencez par un texte en clair identifiable: Rupture. Ce n'est pas vous, c'est nous tous.

Chaque personne génère un motif de bits aléatoire (pavé unique) et le garde secret. Faites passer le message autour de la table, chaque personne XOR -ing avec son bloc-notes unique. La personne qui vous suit sera la seule à voir votre sortie.

Lorsque vous reviendrez au début du cercle, recommencez dans le même ordre. Cette fois, si vous voulez voter "oui", XOR le message avec le même modèle que vous avez utilisé auparavant. Si vous voulez voter "non", utilisez un modèle différent généré aléatoirement (encore une fois, gardez-le secret).

À la fin du deuxième circuit, obéissez au message résultant : soit rompre, soit sdfljhsdfhgvsladfj. Dans ce dernier cas, personne ne saura combien d'électeurs "non" sont responsables de ne pas avoir déchiffré le message.

Ceci est très similaire à la réponse de Nick Bonilla, sauf que les clés ne sont généralement pas partagées. Si les membres de la famille sont de A à Z: Bob sera en mesure de comparer la première sortie d'Alice avec le texte brut original, et pourra ainsi déduire le premier secret d'Alice, mais ne saura pas si c'était le même que le deuxième secret d'Alice (seulement Zach connaît la deuxième entrée d'Alice). Yolanda pourra comparer le message public final avec sa propre deuxième sortie, et pourra ainsi déduire le deuxième secret de Zach, mais elle ne saura pas si c'était le même que le premier secret de Zach (seule Alice a vu la première sortie de Zach). Dans le cas de N = 3 , Bob et Yolanda sont la même personne, mais je ne suis pas sûr que cela l'aide.

Et quand Charlie demande à Alice quelle chaîne de bits elle a remise à Bob la deuxième fois?Cette solution ne fonctionne que s'il n'y a pas de collaboration entre les parties, ce qui n'est pas une contrainte que vous pouvez facilement assumer.
@Sneftel - Oui, c'est un problème avec beaucoup de solutions de «chaînage» ici.Si Bob reçoit une contribution d'Alice, ce n'est essentiellement pas privé - parce que n'importe qui peut demander à Alice ce qu'elle lui a donné.
Oui, des combinaisons de personnes peuvent se liguer contre des individus.Cela pourrait être amélioré en rendant les gens anonymes (tout le monde se réunit dans l'antichambre, enfile ses robes et masques de culte identiques, se déplace un peu, puis file dans la salle de vote).Mais alors, le mécanisme d’anonymisation est un TTP (que nous ne pouvons en fait pas éviter strictement - même les bouts de papier face cachée sont un TTP).
Aussi, je dirais que nous devons supposer * une * limitation quelque part sur la capacité de conférer post-hoc.Sinon, c'est trivialement insoluble: un électeur «non» peut simplement demander à tous les autres électeurs «non» de s'identifier, ce qui conduit à la même objection que OP a signalée à N = 2, mais pour tous les N.
@Kevin mais chaque fois que vous essayez de vous conférer, vous ne savez pas si la réponse que vous obtenez est véridique
David Schwartz
2020-08-04 01:04:57 UTC
view on stackexchange narkive permalink
  1. Appelez le nombre de personnes N.
  2. Chaque personne reçoit un numéro de 1 à N.
  3. Chaque personne crée un polynôme d'ordre N aléatoire dont Y- L'ordonnée à l'origine est nulle si elle souhaite voter OUI ou dont l'ordonnée à l'origine est supérieure à zéro si elle souhaite voter NON.
  4. Chaque personne résout l'équation de son polynôme pour les points discrets de X = 1 à X = N.
  5. Chaque personne transmet la solution pour chaque valeur entière de X de 1 à N à la personne avec ce numéro attribué correspondant.
  6. Chaque personne additionne tous les numéros qui lui sont attribués et divulgue le somme.
  7. Les sommes divulguées résultantes sont utilisées comme solutions à un polynôme d'ordre N passant par les points correspondants.
  8. L'ordonnée à l'origine de ce polynôme résultant est calculée en utilisant l'interpolation de Lagrange . (Ou toute autre méthode pratique si N est petit.)
  9. Si l’interception Y est égale à zéro, le résultat est OUI. Sinon, c'est NON.

Cela fonctionne parce que la somme de n'importe quel nombre de polynômes avec une ordonnée à l'origine nulle est un polynôme avec une interception Y de zéro. Aucune combinaison de participants moins que tous n'a assez de points sur n'importe quel polynôme pour déterminer son ordonnée à l'origine mais de la courbe finale résultante parce que chacun divulgue son point de somme sur celui-là.

Vous avez besoin de N points sur un Polynôme d'ordre N pour déterminer son ordonnée à l'origine. Le seul polynôme sur lequel un groupe plus petit que tous les participants a N points est le polynôme somme final résultant. Donc, seule son ordonnée à l'origine peut être déterminée par un sous-ensemble du groupe inférieur à tous.

Essayons un exemple avec trois personnes. Nous utiliserons Alice, Bob et Charlie. Nous aurons seulement Bob voter NON. Chacun choisira un polynôme aléatoire qui nécessite trois points à résoudre dont l'ordonnée à l'origine est zéro pour OUI et non nul pour NON.

Alice a 1. Elle vote OUI. Son polynôme est Y = 3 (X ^ 2) - 2 X
Bob est 2. Il vote NON. Son polynôme est Y = 2 (X ^ 2) + X + 1
Charlie est 3. Il vote OUI. Son polynôme est Y = 3 (X ^ 2) - X

Notez que Bob a un terme "+1" depuis qu'il a voté NON. Tout le monde n'a pas un tel terme, donc leurs courbes ont une interception Y de zéro.

Alice résout maintenant son polynôme aux points 1, 2 et 3.
Elle se donne un 1, Bob un 8, et Charlie un 21.

Bob résout maintenant son polynôme aux points 1, 2 et 3.
Il donne à Alice un 4, lui-même un 11 et Charlie un 22.

Charlie résout maintenant son polynôme aux points 1, 2 et 3.
Il donne à Alice un 2, Bob un 10 et à lui-même un 24.

Ils dévoilent chacun maintenant leurs sommes .
Alice calcule 1 + 4 + 2 et divulgue 7.
Bob calcule 8 + 11 + 10 et divulgue 29.
Charlie calcule 21 + 22 + 24 et divulgue 67.

Ils doivent maintenant résoudre la courbe qui passe par les points (1,7), (2,29) et (3,67) pour voir quelle est son ordonnée à l'origine. La solution est Y = 8 (X ^ 2) - 2 (X) + 1.

Vous remarquerez que cette équation est la somme des équations choisies. Et il a un "+ 1" à la fin à cause du vote de Bob. Ainsi, le résultat est NON, comme requis. Mais personne à part Bob ne peut dire à qui la courbe avait ce "+ 1" (à moins que tout le monde conspire contre lui).

Il s'agit d'une légère variante de l'algorithme JZSS (Joint Zero Secret Sharing). Voir M. Ben-Or, S. Goldwasser et A. Wigderson, Completeness Theorems for Noncryptographic Fault-Tolerant Distributed Computations, Proceedings of the 20th ACM Symposium on the Theory of Computing, pages 1-10, 1988.

Comment les joueurs peuvent-ils vérifier qu'aucun acteur malveillant n'a choisi une interception y négative?Supposons que je sois sûr que Joe veut partir et que son numéro préféré est 13. Si je saisis -13, je peux annuler son vote.Ou supposons que je veuille empêcher le décompte en entrant -1000.Que feront les joueurs si la somme est négative?
De plus, révéler la somme des entrées permet également à chacun de calculer la somme des entrées des * autres * joueurs, ce qui peut fuir des informations.En particulier, si un seul joueur a voté positif, il apprendra qu'il était le seul.
@meriton Si tout le monde fait ce qu'il est censé faire et que personne ne veut partir, le résultat sera nul.Si quelqu'un fait ce qu'il n'est pas censé faire ou si quelqu'un veut partir, les résultats ne seront pas nuls.Vraisemblablement, les personnes qui ne veulent pas partir suivront les instructions.Vous avez raison de dire que tout le monde sauf n'importe quel électeur peut divulguer comment cet électeur unique a voté.Mais c'est vrai quoi qu'il arrive et aucun algorithme ne peut l'empêcher.Si tout le monde, sauf vous, reste et que le résultat final est un départ, tout le monde peut, en travaillant ensemble, savoir que vous avez voté pour quitter puisque vous êtes le seul à ne pas conspirer.
Je pense que vous avez mal compris ma deuxième préoccupation.Je ne crains pas que tout le monde, en travaillant ensemble, puisse apprendre ce qu'un joueur a voté.Je crains qu’un joueur qui vote «rester» puisse déterminer s’il était le seul à voter «rester», divulguant ainsi des informations qui n’auraient pas pu être déduites de la décision globale prise (que le joueur savait être «rester» indépendammentce que les autres ont voté).Dans le cas des cultistes, j'imagine que cela finirait très mal si un cultiste découvrait que tout le monde était prêt à partir ...
Un joueur qui vote ne peut pas déterminer combien d'autres joueurs ont voté qui restent ou non.La seule courbe sur laquelle ils ont suffisamment de points est la courbe de somme.Ils peuvent soustraire leur propre vote, mais une personne qui vote reste peut toujours le faire.Si le résultat est resté, tout le monde a voté reste.Si c'est la permission, quelqu'un d'autre a voté pour la permission.Peut-être que vous craignez que quelqu'un qui vote le congé puisse dire s'il a été le seul à voter pour le congé?(Cela peut être corrigé, mais cela rend l'algorithme beaucoup plus complexe.)
Si le résultat est resté, au moins une personne doit avoir voté.Cela n'implique pas que tout le monde a!
@meriton La terminologie reste / congé peut me prêter à confusion.Tenons-nous en oui / non.Oui doit être unanime.Le seul cas intéressant est celui où le résultat final est non, sinon tout le monde sait que tout le monde a voté oui de toute façon.Quand il y a un non, la seule chose qui fuit, c'est que quelqu'un qui a voté non peut dire s'il était le seul non à voter ou non en soustrayant sa courbe de la courbe résultante.Rien d'autre ne fuit.Oui, les électeurs ne peuvent pas dire combien il y a eu de votes non, seulement qu'il y en a eu au moins un.Aucun électeur ne peut dire qui d'autre a voté non, simplement s'il y a eu au moins un autre non.
Exactement, et cette fuite est tout à fait le problème pour nos sectateurs, car un électeur non pourrait apprendre qu'il n'y a pas eu d'autre vote contre, c'est-à-dire que tout le monde a voté oui!En termes cultistes, cela signifie qu'un cultiste qui veut rester apprend que tout le monde veut partir!
Laissez-nous [continuer cette discussion dans le chat] (https://chat.stackexchange.com/rooms/111429/discussion-between-david-schwartz-and-meriton).
CSM
2020-08-04 16:38:24 UTC
view on stackexchange narkive permalink

Il y a deux sacs en tissu vides et une balance à pan. Le premier sac représente comment ils veulent voter, le second comme un chèque.

Chaque personne reçoit deux disques d'argile ou de bois de poids légèrement différent. Le disque le plus lourd représente le congé. Ils placent le disque pour leur vote dans un sac et l'autre dans l'autre sac. Ensuite, le sac est vérifié par rapport à un poids. La casserole sera juste équilibrée si tous les votes sont pour la permission, mais restera complètement baissée si même un est pour rester.

Si nécessaire, les deux sacs peuvent être pondérés ensemble contre un autre poids pour s'assurer qu'il n'y a pas eu de sottise.

Une fois le vote vérifié, les deux sacs sont détruits dans un incendie.

Ceci est identique à la réponse «rock» ci-dessus.
Renan
2020-08-05 00:08:34 UTC
view on stackexchange narkive permalink

Je me suis inspiré de la réponse de Qmppu852, je vais essayer de la simplifier:

Procurez-vous un générateur et un câble très long, 10 mètres (soit ~ 30 pieds ) devrait faire l'affaire.

Construisez plusieurs contrôleurs, un pour chaque membre de la famille. Chaque contrôleur aura deux boutons: l'un est un mannequin, qui ne fait rien. L'autre bouton est destiné à fermer le circuit. Les deux boutons sont visiblement marqués pour que tout le monde sache lequel est lequel.

Épissez les contrôleurs sur le câble. Comme ils sont tous connectés en série au générateur, le circuit n'est fermé que pendant que tous les boutons non factices sont enfoncés simultanément.

À l'heure du vote, tout le monde s'assoit sur un cercle. Chaque membre de la famille tient une manette sur le dos et appuie sur un bouton. De cette façon, tout le monde verra que tout le monde appuie sur un bouton, mais personne ne sait sur quels boutons les autres appuient. Chaque individu sait seulement sur quel bouton il appuie.

Si tout le monde appuie sur le bouton non factice de sa manette, le circuit se ferme. Vous pouvez connecter une ampoule ou un buzzer sur le circuit afin qu'ils puissent voir s'il s'allume. Mais je pense que c'est plus amusant si le générateur donne environ 50V et que les contrôleurs ne sont pas isolants. Si tout le monde vote oui, alors tout le monde est secoué.

Si quelqu'un vote non, le circuit ne se ferme pas. Mais personne ne sait qui vote pour non. Pour rendre encore plus difficile la connaissance du vote de tout le monde, ils pourraient porter des gants pour ne pas laisser d'empreintes digitales sur les boutons. Ou ils peuvent appuyer sur les deux boutons avant le vote, avant d'activer le générateur, pour laisser une empreinte digitale sur les deux boutons.

Loren Pechtel
2020-08-06 00:25:48 UTC
view on stackexchange narkive permalink

Prenez une simple calculatrice, entrez un nombre. Placez-le dans une boîte rigide avec un trou sur le bouton transparent. Mettez le tout dans une autre boîte avec une ouverture sur le côté et un morceau de tissu drapé sur l'ouverture.

Tout le monde atteint la boîte extérieure et pousse quelque chose - le bouton clair pour voter non, n'importe quel autre place pour voter oui. Un observateur peut être capable de discerner le mouvement musculaire de la pression, mais il ne peut certainement pas dire si vous êtes réellement sur le bouton.

Retirez la calculatrice, examinez-la. S'il y a encore un nombre, vous avez un oui unanime.

shieldgenerator7
2020-08-04 19:52:19 UTC
view on stackexchange narkive permalink

Faites une petite partie de téléphone. Mais avec des chiffres.

Faites asseoir les gens en cercle et demandez à une personne de commencer. Ils choisissent un nombre aléatoire entre 1 et 1000 et le gardent secret. Puis ils chuchotent ce chiffre à l'oreille de la personne à leur gauche. Ensuite, cette personne ajoute 1 à ce nombre si «non», et elle ajoute 100 ce nombre si «oui». Cette personne chuchote ensuite le nouveau numéro à la personne à sa gauche. Cela continue en cercle, faisant 2-3 "tours" autour du groupe. La dernière personne à recevoir un numéro le garde secret.

Personne ne connaît le numéro de départ sauf la première personne, mais ils savent quel numéro ils ont dit à la personne à leur gauche. Si le chiffre 1 et le chiffre 10 du nombre qu'ils ont dit et le numéro qu'ils ont reçu quand il est revenu sont les mêmes, alors ils savent que tout le monde a voté oui. Si ce n'est pas la même chose, alors ils savent qu'au moins une personne a voté non.

L'important est que parce qu'ils ne connaissent pas le numéro de départ et qu'il n'y a pas de fin définitive à la boucle, ils ne Je ne sais pas qui a voté avec quel nombre. Tout le monde sait maintenant si le vote est unanime, mais personne ne sait qui a voté quoi.

EDIT: Au lieu d'ajouter 100 pour oui et d'ajouter 1 pour non, choisissez un nombre aléatoire entre 1 et 5. Si vous votez oui , multipliez-le par 100. Si vous votez non, multipliez-le par 1. Ajoutez ensuite ce nombre au total cumulé et transmettez le total cumulé à la personne suivante. Cela résout le problème de la divulgation du nombre de personnes qui ont voté oui ou non.

Cela laisse échapper le nombre de votes, comme si le nombre revient 501 plus grand que lors du premier tour, cela signifie qu'une personne a voté non.
@BlakeWalsh je savais qu'il y avait un problème avec ma réponse.merci de me l'avoir signalé.Je vais penser à un moyen de l'améliorer.
@BlakeWalsh Je pense avoir résolu le problème
Toby Smith
2020-08-06 15:48:01 UTC
view on stackexchange narkive permalink

Construisez un récipient qui peut contenir du liquide mais qui ne peut être facilement observé sans altération évidente. Quelque chose comme un bidon de carburant opaque auquel est attaché une buse.

Tout le monde a la possibilité d'ajouter un liquide clair au contenant.

Tout le monde vote en pouvant soit en ajouter colorant rouge, ou versez un peu de colorant rouge dans le drain.

À la fin, le récipient est ouvert et le contenu est révélé. S'il contient une quantité quelconque de colorant rouge, le vote n'a pas été unanime.

c'est exactement la même chose que la réponse "sel" ci-dessus
Terry Maurel
2020-08-03 21:59:50 UTC
view on stackexchange narkive permalink

Problème intéressant. Faible technologie: un tiers donne à chaque électeur deux morceaux de papier identiques: l'un avec «oui» dactylographié, l'autre avec «non» (ou un autre symbole, 1/0, y / n, etc.) est la fin de l'implication de tiers. Ils s'ajournent dans une zone privée où ils peuvent secrètement sélectionner une feuille de papier avec la réponse souhaitée. Tous reviennent et placent simultanément leur vote dans l'urne qui est secouée pour randomiser.

Bien qu'en théorie, il puisse être possible de déterminer la source du vote de la minorité, même au point d'échantillonnage ADN du papier, dans le monde réel, même les plus paranoïaques ont des limites pratiques et des méthodes de contrôle - par exemple brûler les bulletins après le décompte.

Technique moyenne: câbler un relais / bascule en série avec un interrupteur «tally» qui complètera un circuit pour allumer un voyant ou un indicateur similaire. Il n'y a qu'un seul bouton de vote, caché du bouton de décompte (par exemple dans une autre pièce, boîte, etc.), le bouton de décompte est public donc il ne peut pas être touché sans témoin.

Une fois que tout le monde a une occasion privée de appuyez (ou pas) sur le bouton de vote, puis ensemble ils basculent l'interrupteur qui complètera le circuit si le relais / bascule était déclenché. En d'autres termes, basculer le commutateur de décompte ne termine le circuit que si le bouton de vote a été enfoncé par quelqu'un. Parce que le vote est privé, il n'y a qu'un seul bouton et il fonctionne sur un seul point du circuit (c'est-à-dire le relais ou la bascule, qui ne peut être déclenchée qu'une seule fois), il n'y a pas de retraçage vers qui a déclenché le vote.

Votre suggestion low tech est simplement une version papier du schéma "[blackball] (https://en.wikipedia.org/wiki/Blackballing)".Et il n'y a pas besoin d'une tierce partie.Votre version Medium Tech est la même.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 4.0 sous laquelle il est distribué.
Loading...