Forzare un comportamento onesto


9

Come puoi forzare una parte a essere onesta (obbedire alle regole del protocollo)?

Ho visto alcuni meccanismi come impegni, prove ecc., Ma semplicemente non sembrano risolvere l'intero problema. Mi sembra che la struttura della progettazione del protocollo e tali meccanismi debbano fare il lavoro. Qualcuno ha una buona classificazione di quello.
Modifica
Quando si progettano protocolli sicuri, se si obbliga una parte a essere onesta, la progettazione sarebbe molto più semplice anche se questa applicazione ha i suoi vantaggi. Durante la progettazione di protocolli sicuri, i progettisti presumono qualcosa che non mi sembra realistico, ad esempio per assumere tutte le parti oneste nel peggiore dei casi o assumendo l'onestà del server che mantiene i dati dell'utente. Ma quando si guarda alla progettazione di protocolli in modelli più rigorosi, raramente si vedono tali ipotesi (almeno non l'ho visto - studio principalmente protocolli suQuadro UC di Canetti che penso non sia ancora del tutto formalizzato). Mi chiedevo, c'è una buona classificazione dei modi in cui puoi forzare una parte a essere onesta o c'è qualche compilatore che può convertire il protocollo di input in uno con parti oneste?
Ora spiegherò perché penso che questo semplicemente non faccia il lavoro sebbene possa sembrare irrilevante. Quando si progettano protocolli nel framework UC, che beneficia del paradigma ideale / reale, ogni collegamento di comunicazione nel modello ideale viene autenticato, il che non è vero nel modello reale. Quindi i progettisti di protocolli cercano metodi alternativi per implementare questo canale attraverso l'assunzione di PKI o un CRS (Common Reference String). Ma quando si progettano protocolli di autenticazione, supporre che i canali autenticati sia sbagliato. Supponiamo che stiamo progettando un protocollo di autenticazione nel framework UC, c'è un attacco in cui l'avversario forgia l'identità di una parte, ma a causa dell'assunzione di collegamenti autenticati nel modello ideale questo attacco non è ipotizzato in questo framework! Puoi fare riferimento aModellazione di attacchi interni a protocolli di scambio di chiavi di gruppo . Si può notare che Canetti nel suo lavoro fondamentale Le nozioni universalmente compostabili di scambio di chiavi e canali sicuri menzionano una precedente nozione di sicurezza chiamata SK-Security che è semplicemente sufficiente per garantire la sicurezza dei protocolli di autenticazione. In qualche modo confessa (affermando che questa è la questione della tecnicità) che la definizione di UC in questo contesto è troppo restrittiva e fornisce una variante rilassata chiamata oracolo di non informazione (che mi ha confuso, perché non ho visto questo modello di sicurezza da nessuna parte , Non posso associare questo modello di sicurezza a nessun altro modello di sicurezza, probabilmente la mia mancanza di conoscenza: D).

[Come nota a margine, puoi quasi avere qualsiasi protocollo Sk-secure convertito in un protocollo UC sicuro indipendentemente dal tempo del simulatore. Ad esempio, puoi semplicemente rimuovere le firme dei messaggi e far simulare in modo fittizio l'intera interazione. Vedi Scambio di chiavi per gruppi di contributori universalmente compostabili come prova! Supponiamo ora che questo sia un protocollo di scambio di chiavi di gruppo con polinomialmente molte parti, quale sarebbe l'efficienza del simulatore ?? Questa è l'origine della mia altra domanda in questo forum .]

Comunque, a causa della mancanza di impegno nel modello semplice (rispetto a UC), ho cercato altri mezzi per rendere sicuro il protocollo semplicemente aggirando la necessità di quel rilassamento. Questa idea è molto semplice nella mia mente e mi è venuta in mente solo dopo aver studiato l'ultimo schema di impegno di canetti nel modello semplice: Durezza adattiva e Sicurezza componibile nel modello normale da Assunti standard .
A proposito, non cerco prove a conoscenza zero perché a causa di motivi che non conosco, ogni volta che qualcuno ha usato uno di loro in un protocollo simultaneo (su framework UC), gli altri hanno menzionato il protocollo come inefficiente (potrebbe essere a causa del riavvolgimento del simulatore).


2
Puoi dare un'occhiata a questo: wisdom.weizmann.ac.il/~oded/gmw2.html . In quel documento, le parti disoneste sono costrette ad agire onestamente dimostrando (a conoscenza zero) di aver seguito il protocollo nel passaggio precedente.
MS Dousti,

4
Penso che "forzare un comportamento onesto" sia una possibile definizione per la crittografia moderna (che è molto più che nascondere informazioni). In tal caso, ogni sottoarea della crittografia può essere considerata come un approccio a tale domanda.
Marc,

Stavo per scrivere la stessa cosa di Marc. (A proposito, le prove interattive o persino la definizione di NP possono anche essere viste come "forzare un comportamento onesto" sul prover, anche se di solito non sono considerate protocolli crittografici.) La domanda è molto ampia e sembra che ci sia nessun modo unico per applicare un comportamento onesto in varie situazioni.
Tsuyoshi Ito,

1
Cosa intendi esattamente con "ma semplicemente non sembrano risolvere l'intero problema?" Potresti essere più specifico?
Alon Rosen,

@Sadeq: vedi l'ultimo paragrafo! @Marc & Tsuyoshi lto: consultare la sezione Modifica. può essere d'aiuto.
Yasser Sobhdel,

Risposte:


6

Purtroppo, non puoi forzare le persone a fare ciò che il protocollo dice che dovrebbero fare.

Anche le persone ben intenzionate che intendevano seguire il protocollo ogni tanto commettono errori.

Sembra che ci siano almeno 3 approcci:

  • teoria delle criptovalute: supponiamo che gli agenti "buoni" seguano sempre il protocollo, mentre gli agenti "dannosi" cercano di sovvertire il protocollo. Progetta il protocollo crittografico in modo tale che gli agenti buoni ottengano ciò di cui hanno bisogno, mentre gli agenti dannosi non ottengono nulla.
  • teoria dei giochi: supponiamo che ogni agente cerchi solo il proprio interesse individuale. Usa il design del meccanismo per massimizzare il beneficio totale per tutti.
  • rete distribuita a tolleranza d'errore: supponiamo che ogni agente commetta un errore occasionale e un po 'di agenti bot emettono molti messaggi maliziosi. Rileva e isola i nodi bot fino a quando non vengono corretti; utilizzare il rilevamento e la correzione degli errori (EDAC) per correggere l'errore occasionale; utilizzare protocolli convergenti che alla fine si sistemano in uno stato utile, indipendentemente dalle informazioni errate iniziali memorizzate nelle tabelle di routing.

progettazione del meccanismo Nella teoria dei giochi, progettare una situazione (come l'impostazione delle regole di un'asta) in modo tale che le persone che cercano egoisticamente solo i propri interessi individuali finiscono per fare ciò che il designer vuole che facciano è chiamato "design del meccanismo" . In particolare, usando la teoria dell'implementazione , le situazioni possono essere progettate in modo tale che il risultato finale massimizzi il beneficio totale per tutti, evitando situazioni mal progettate come la "tragedia dei beni comuni" o il "dilemma del prigioniero" in cui accadono cose che non sono in nessuno interesse a lungo termine.

Alcuni dei processi più robusti sono progettati per essere compatibili con gli incentivi .

La teoria del gioco generalmente presuppone che tutti gli agenti rilevanti siano "razionali". Nella teoria dei giochi, "razionale" significa che un agente preferisce alcuni risultati ad altri risultati, è disposto e in grado di cambiare le sue azioni in un modo che si aspetta (date le informazioni a sua disposizione) si tradurrà in un risultato più preferito (il suo stretto interesse personale), ed è abbastanza intelligente da rendersi conto che altri agenti razionali agiranno in modo simile per cercare di ottenere il risultato più preferito tra tutti i possibili risultati che potrebbero derivare da quella scelta di azione.

Un progettista può temporaneamente supporre che tutte le persone agiscano solo in base al proprio interesse personale. Tale ipotesi semplifica la progettazione di una situazione utilizzando la teoria dell'implementazione. Tuttavia, una volta terminato il progetto, non importa se le persone agiscono secondo il loro stretto interesse personale (" Homo economicus ") o se sono altruiste e vogliono massimizzare il beneficio netto totale per tutti - in un situazione ben progettata, entrambi i tipi di persone fanno esattamente le stesse scelte e il risultato finale massimizza il beneficio totale per tutti.

protocolli convergenti

Quando si progetta un protocollo di routing , ciascun nodo della rete invia messaggi ai propri vicini trasmettendo informazioni su quali altri nodi sono raggiungibili da quel nodo.

Purtroppo, a volte questi messaggi hanno errori. Peggio ancora, a volte un nodo non è configurato correttamente ed emette molti messaggi fuorvianti e forse persino maliziosi.

Anche se noi umani sappiamo che il messaggio potrebbe essere errato, in genere progettiamo il protocollo in modo che un nodo correttamente funzionante si fidi di ogni messaggio e memorizzi le informazioni nella sua tabella di routing e prenda le sue decisioni come se credesse che le informazioni siano del tutto vere.

Una volta che un essere umano spegne un nodo danneggiato (o lo disconnette dalla rete), in genere progettiamo il protocollo per passare rapidamente buone informazioni per eliminare le informazioni corrotte e convergere così rapidamente su uno stato utile.

approcci combinati

La progettazione di meccanismi algoritmici sembra tentare di combinare l'approccio di rete tollerante ai guasti e l'approccio del meccanismo di teoria dei giochi.

@Yoichi Hirai e Aaron, grazie per aver sottolineato alcuni tentativi interessanti di combinare teoria dei giochi e crittografia.


4

Joe Halpern ha una diapositiva su questo argomento. http://games2009.dimi.uniud.it/Halpern.pdf

Si tratta di dare incentivi alle parti affinché seguano un protocollo. Tali meccanismi richiedono la razionalità delle parti e gli argomenti si basano sulla teoria dei giochi.


1
Ecco un documento correlato da abbinare alle slide: theory.stanford.edu/~vteague/STOC04.pdf - Questo approccio non "forza" le persone a seguire il protocollo, ma cerca di progettare il protocollo per incentivare le persone a desiderare fare così. Naturalmente, per fare questo, devi fare alcune ipotesi su cosa vogliono fare esattamente le persone che seguono il protocollo ...
Aaron Roth,

se possibile, potresti spiegare cosa significa "razionale" in questo contesto? per esempio significa aderenza a un insieme globale di assiomi sottostante? o significa che le parti coinvolte condividono lo stesso insieme di assiomi sottostanti? la prima spiegazione mi sembra assurda in qualsiasi scenario del mondo reale, poiché gli individui spesso hanno motivazioni sottostanti selvaggiamente diverse e quindi ci si può aspettare che trattino gli "incentivi" in modi molto diversi.
s8soj3o289,

@blackkettle: un giocatore razionale massimizza (l'aspettativa di) una funzione di utilità. per la ragione che fai notare, è sempre difficile trovare gli assiomi giusti che le utility devono soddisfare. ma proviamo sempre per l'insieme minimo di assiomi. qualsiasi buon libro di microeconomia andrebbe nel dettaglio di questo problema
Sasho Nikolov,

@blackkettle: a proposito del documento di Halpern: presume che le parti nel protocollo (condivisione segreta) preferiscano conoscere il segreto per non conoscerlo, e preferiscono che meno parti piuttosto che altre parti conoscano il segreto. anche la nozione di equilibrio che usa è l'equilibrio di Nash rispetto a strategie non dominate (cioè un giocatore non giocherebbe una strategia se un altro è sempre almeno altrettanto buono; inoltre, fintanto che altri giocatori non cambiano le loro strategie e la sua strategia attuale non è peggio di ogni altra, non lo cambierebbe neanche).
Sasho Nikolov,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.