La prova di informazioni è stata creata prima che venga rilasciata

2

Ho pensato al seguente caso d'uso: alcune istituzioni vogliono organizzare le scommesse su un risultato che è di propria scelta. La timeline è la seguente:

  1. L'organizzazione sceglie il risultato al momento T. Le scommesse sono aperte su quale sia il risultato.
  2. All'istante T + N, la decisione presa dall'istituto al tempo T viene risolta, risolvendo le scommesse.

Ad esempio, possiamo immaginare un canale televisivo che ospita una piattaforma di gioco su quali personaggi moriranno nella prossima stagione, che è già stato scritto ma non ancora trasmesso.

Il problema è trovare un modo per dimostrare che le informazioni rilasciate al momento T + N sono state effettivamente scelte, e non modificate da allora, tempo T. Ovviamente, senza rilasciare le informazioni stesse a time T. Ciò garantisce, in particolare, che l'organizzazione non può scegliere retroattivamente il risultato per trarre profitto in qualche modo dalla tendenza delle scommesse.

La mia proposta è la seguente:

  1. All'istante T, l'organizzazione sceglie una chiave casuale che mantiene segreta. Calcola un HMAC del risultato con la chiave segreta e lo pubblica.

  2. All'istante in cui T + N, l'organizzazione pubblica sia l'esito che la chiave segreta.

Le persone possono verificare che l'HMAC sia corretto, ed è assicurato che l'esito pubblicato sia effettivamente quello scelto al tempo T perché sarebbe .

Questo suono è corretto? Soprattutto l'ultima parte in grassetto? Mi sembra che questo sia fondamentalmente equivalente a un attacco preimage sulla funzione hash con un prefisso noto per il preimage?

    
posta WeirdQuestionsPoppingInMyHead 15.10.2018 - 15:38
fonte

1 risposta

2

Come al solito, esiste già una vasta gamma di soluzioni per questo particolare problema.

Estratto si chiama schema di impegno . WikiPedia cita Oded Goldreich con questa citazione per una breve spiegazione:

[A commitment scheme] allows one to commit to a chosen value (or chosen statement) while keeping it hidden to others, with the ability to reveal the committed value later.

Esistono varie forme o implementazioni di questo: uno comunemente usato (ad esempio da WikiLeaks ) sono i cosiddetti hash pre-impegno. Questi hash sono checksum (md5, sha256, ..) di file crittografati. Gli individui possono scaricare i file ma non possono aprirli finché il distributore del file non fornisce la password. In questo modo il distributore è - come dice Goldreich - in grado di impegnarsi in un valore pur mantenendo nascosto.

    
risposta data 15.10.2018 - 16:01
fonte

Leggi altre domande sui tag