È possibile garantire una transazione tra due peer contro gli exploit di interruzione?

2

Facciamo un esempio eclatante di questo:

Alice e Bob vogliono clonare un Pokemon.

Istituiscono uno scambio tra i loro dispositivi console. Il dispositivo di Alice invia una copia dei dati al dispositivo di Bob, quindi il dispositivo di Bob invia una loro copia ad Alice. Mentre ogni dispositivo inizia a salvare i risultati, Alice spegne il suo dispositivo impedendone il salvataggio. Bob no. Bob ora ha i Pokemon di Alice e Alice ne ha ancora una copia sul suo dispositivo.

Supponiamo di provare a impostare un bit sporco prima di iniziare il trasferimento e di ripristinare le modifiche alla prossima accensione se il trasferimento non è stato completato. Neanche sembra funzionare. Dopo che entrambe le parti sono state completate, inviano riconoscimenti di completamento l'una all'altra, Alice semplicemente deve spegnere il dispositivo mentre Bob riceve ed elabora il riconoscimento. Bob ottiene il clone, lo stato del database di Alice torna al precedente.

Mi sembra incredibile che sia incredibilmente difficile assicurare che due pari pari senza alcun mediatore possano sincronizzarsi su un singolo pezzo di dati se entrambi sono a rischio di interruzione della comunicazione strategicamente impiegati al momento giusto. Ma è impossibile?

    
posta Searinox 17.12.2016 - 20:17
fonte

1 risposta

1

La situazione che descrivi presuppone che sia Alice che Bob non hanno il pieno controllo del dispositivo e del software perché altrimenti Alice potrebbe utilizzare un software modificato che impedisce l'eliminazione del Pokemon locale.
Se questa ipotesi è vera, cioè che Alice non può manomettere il dispositivo e il software, è possibile eseguire il trasferimento in più passaggi:

  1. Alice crea una chiave casuale e crittografa il Pokemon
  2. Alice invia il Pokemon crittografato a Bob ma non ancora la chiave. Alice attende conferma che Bob ha ricevuto il Pokemon crittografato.
  3. Alice cancella il Pokemon locale.
  4. Alice invia la chiave di crittografia a Bob fino a quando non ottiene una conferma. Bob conferma dopo una decifrazione riuscita. Solo dopo la conferma entrambi distruggono la chiave non più necessaria.

Se l'ipotesi iniziale non è corretta, cioè se Alice può effettivamente modificare il software che ha il controllo dello scambio, allora hai bisogno di un servizio esterno dove tutte le parti possono verificare chi possiede un Pokemon specifico ora. Anche se questo non renderà impossibile imbrogliare, può essere usato per scoprire se un Pokemon è usato da qualcuno che non lo possiede. Come indicato in un commento, Bitcoin è un modo per eseguire tale servizio.

    
risposta data 17.12.2016 - 21:27
fonte

Leggi altre domande sui tag