Usando un semplice pass di 5 caratteri per evento vs. QR / codice a barre

4

Ho intenzione di fare un sistema di "ticketing", in cui un utente comprerebbe un "biglietto del tour" online. La parte su cui sono perplesso è: dopo aver acquistato, quale meccanismo utilizzare per verificare il ticket?

Ho visto come piattaforme come EventBrite, TicketMaster e usano codici QR o codici a barre. Ma penso che per qualcosa come i miei tour (dove non mi aspetto più di 1000 persone alla volta), è eccessivo. Perché non usare solo una semplice combinazione di 5 lettere, con 26 ^ 5 combinazioni, come GFTLH? C'è qualche svantaggio nel fare questo da una prospettiva di sicurezza rispetto a un codice a barre?

L'unica ragione per cui vedo queste piattaforme utilizzando QR / codici a barre è la mole di biglietti (milioni di loro vendono). L'uso di un semplice codice di 5 caratteri offre alcuni vantaggi come:

a) Più grande% di persone sarà in grado di verificare il codice. Anche le persone con telefoni stupidi, potrei creare un sistema in cui si limitano a inviare il codice SMS e ricevere un SMS in risposta se il codice è valido.

b) Poiché il codice è più "portatile" (chiunque con un pezzo di penna può scriverlo), ci sono opzioni come: Creare carte stampate con un segnaposto per il codice, e solo avere le istruzioni di acquisto / riempimento sul carta. Questo è impossibile da fare con un codice QR (ed è molto ingombrante con un codice a barre). Quindi, in pratica, potrei quindi distribuire quelle carte in vari luoghi. È come "il tuo segnaposto è possibile attivare online quando vuoi".

Ma i miei dubbi erano, c'è qualche svantaggio dal punto di vista della sicurezza, considerando questi fattori? È un po 'strano per me, non ho visto nessuna piattaforma di bigliettazione (anche quella ospitata da sé) utilizzare questo sistema, usano tutti i codici di ticket / QR di uso e le frasi di comodo.

    
posta anemaria20 01.09.2018 - 23:16
fonte

3 risposte

1

Se c'è qualche vantaggio nel rompere il tuo sistema, qualcuno prima o poi romperà il tuo sistema.

Non c'è una grande differenza tra la generazione e la gestione di codici a 5 cifre contro codici a 64 cifre. Quindi andare con 5 o 64 è la stessa quantità di lavoro. La principale differenza è la difficoltà di bruteforcing di 5 o 64 cifre.

Potresti creare una struttura del genere: TICKET_ID:EV_ID:CHECK

Dove, ad esempio, TICKETID è di 8 caratteri, EV_ID è di 3 caratteri e CHECK è di 5 caratteri, con 16 byte totali. CHECK deve essere calcolato utilizzando una firma digitale e troncando il risultato alle prime 5 cifre. Puoi fare tutto maiuscole ed evitare di usare i numeri 0 e 1, e maiuscole O e I, perché sono facilmente scambiabili l'uno con l'altro con determinati tipi di carattere.

Quindi il ticket ABCDE456AAA23F78 sarebbe:

ID ticket: ABCDE456

ID evento: AAA

Verifica: 23F78

Quando si generano i nuovi ticket, è necessario inserire l'ID ticket e l'ID evento e firmare digitalmente il risultato. Quando si controlla la validità, non solo eseguire l'hash e verificare. È necessario verificare se l'ID del ticket è lungo esattamente 8 caratteri, l'ID evento è lungo 3 caratteri esatti, quindi hash e controllo. Verificare se sono presenti anche i caratteri evitati. Facendo questo, la probabilità di una collisione si abbassa.

Upsides:

  • Piccolo QR-Code
  • 16 cifre sono facili da scrivere
  • Caratteri di confusione rimossi
  • I telefoni stupidi possono controllare la validità
  • Difficile da falsificare
  • Il controllo del codice può essere eseguito offline, con una piccola pagina HTML basata su Javascript

Lo svantaggio principale è la piccola lunghezza di controllo. 5 cifre non è molto difficile da decifrare, ma puoi aumentare questa dimensione fino a una firma a 64 byte completa.

Utilizzando questo schema puoi creare circa 33 milioni di biglietti per evento e creare 10 eventi a settimana per i prossimi 63 anni senza utilizzare tutti gli ID evento.

    
risposta data 02.09.2018 - 00:17
fonte
1

Sono d'accordo con la risposta di ThoriumBR e vorrei solo affrontare la "prospettiva della sicurezza".

Cinque lettere, 26 caratteri ciascuna, ti danno il numero totale di combinazioni 12M (11,881,376). Questo potrebbe sembrare un numero elevato. Tuttavia, se qualcuno scrive un raschietto che cerca di forzare i tuoi codici con 50 connessioni simultanee e esegue dieci istanze di tale raschiatore, prova 500 codici al secondo e passerà attraverso TUTTI i tuoi codici in meno di 7 ore. E il raschietto 10x50 è disponibile per quasi tutti.

Ovviamente questo potrebbe essere neutralizzato con altri mezzi (ad esempio captcha), ma questo crea altri problemi, in particolare l'usabilità.

    
risposta data 02.09.2018 - 08:06
fonte
1

La prima cosa da considerare è se questa è una redenzione solo online, o se hai degli umani che si registrano a un cancello. Un sistema online può essere sottoposto a una forza bruta attaccato da milioni di macchine, ma le persone non permetteranno a un cliente di ripetere milioni di tentativi.

Nel caso di un sistema umano, è possibile impostare la dimensione minima in base al rischio che si è disposti a prendere: in genere un falsificatore di biglietti non rischierà per una possibilità 1: 1000. Quindi, se stai emettendo 1000 biglietti, il tuo spazio numerico sarà 1000 * 1000, o 1 milione (6 cifre).

Se provi a comprimerlo a 4 o 5 caratteri usando una combinazione di cifre / testo, devi pensare agli umani che lo usano e all'ambiente in cui si troveranno. Non renderlo case sensitive. Stampa i biglietti in lettere maiuscole in maiuscolo. Non consentire simboli confusi / ambigui: eliminare la lettera I e le cifre 1, 0 e o, B e 8, ecc. O renderle uguali. Se i bigliettoni sono in un teatro buio, questo diventa ancora più importante. Se i clienti stampano i loro pass per casa, un ambiente umido / bagnato causerà la stampa. E potresti voler scansionare i tuoi codici generati con un rilevatore di parolacce.

Da notare che i codici a barre non rendono nulla di sicuro. Esistono solo per facilitare l'inserimento dei dati. Poiché un codice QR può fornire molti byte di dati in modo accurato e rapido, può trasferire carichi utili più grandi; ma sono facili da copiare indipendentemente dalle loro dimensioni.

Le cifre di controllo sono facoltative, ma considerale per l'immissione di più di 5 cifre.

Se i possessori di biglietti utilizzano un'app per telefono per inserire i codici, considera anche che una tastiera alfa è più piccola e più difficile da digitare con precisione rispetto a un tastierino numerico a 10 cifre. I codici a 7 cifre potrebbero essere più veloci di 5 lettere e quasi certamente più veloci di un codice alfanumerico misto a 5 caratteri.

    
risposta data 03.09.2018 - 03:11
fonte

Leggi altre domande sui tag