I QR Code sono presenti in moltissimi ambiti della vita quotidiana, dai menu dei ristoranti ai pagamenti digitali, dai biglietti elettronici alle confezioni dei prodotti. Basta inquadrare con la fotocamera di uno smartphone un piccolo quadrato formato da moduli bianchi e neri per accedere rapidamente a un sito web, visualizzare un’informazione o avviare un’operazione digitale.
Il termine QR Code deriva dall’inglese Quick Response Code, cioè “codice a risposta rapida”, e identifica una particolare tipologia di codice a barre bidimensionale capace di contenere una quantità di informazioni superiore rispetto ai tradizionali codici a barre lineari.
La loro diffusione ha contribuito a creare un collegamento immediato tra oggetti, documenti e ambienti fisici e servizi digitali. Un QR Code stampato su un manifesto può, per esempio, indirizzare a una pagina web, mentre quello presente su un biglietto può contenere le informazioni necessarie per verificarne la validità.
La semplicità di utilizzo non significa che i QR Code siano privi di rischi. Poiché possono contenere collegamenti verso risorse online, si possono sfruttare per condurre l’utente verso pagine fraudolente, tentativi di phishing o altri contenuti malevoli.
Che cosa sono i QR Code
Un QR Code è un codice a barre bidimensionale progettato per memorizzare informazioni in una matrice costituita da piccoli elementi quadrati, chiamati moduli. A differenza dei codici a barre tradizionali, che rappresentano le informazioni principalmente lungo una sola dimensione, il QR Code utilizza sia la dimensione orizzontale sia quella verticale.
Questa caratteristica permette di memorizzare una quantità considerevole di dati all’interno di uno spazio relativamente ridotto. Le informazioni possono essere rappresentate sotto forma di testo, numeri, dati binari o, molto frequentemente, di un indirizzo web.
Il codice può essere acquisito attraverso una fotocamera e interpretato da un’applicazione in grado di riconoscere la particolare disposizione dei moduli. Il dispositivo ricostruisce quindi le informazioni contenute nel codice e permette di eseguire l’operazione associata.
Il QR Code non contiene necessariamente una pagina web. Può contenere direttamente informazioni oppure un collegamento che rimanda a una risorsa esterna. Questa distinzione diventa particolarmente importante dal punto di vista della sicurezza.
Storia dei QR Code
I QR Code sono stati sviluppati in Giappone negli anni Novanta dalla società Denso Wave, inizialmente per rispondere alle esigenze dell’industria automobilistica. L’obiettivo era realizzare un sistema capace di identificare rapidamente componenti e prodotti durante i processi industriali.
Rispetto ai codici a barre tradizionali, il nuovo sistema offriva una maggiore capacità di memorizzazione e poteva essere letto più rapidamente. La tecnologia venne successivamente resa disponibile per un utilizzo più ampio e, con la diffusione degli smartphone dotati di fotocamera, i QR Code iniziarono a trovare applicazione in numerosi settori.
La loro diffusione è cresciuta ulteriormente con la progressiva digitalizzazione dei servizi e con l’affermazione dei pagamenti elettronici e delle applicazioni mobili.
Come funziona un QR Code
Il funzionamento di un QR Code si basa sulla trasformazione di un insieme di informazioni in una matrice bidimensionale di moduli, cioè piccoli elementi quadrati che possono essere neri o bianchi.
Il processo può essere suddiviso in diverse fasi: codifica dei dati, costruzione della matrice, acquisizione dell’immagine e decodifica delle informazioni. Queste operazioni avvengono in tempi molto brevi, tanto che l’utente percepisce generalmente il processo come una semplice scansione effettuata con la fotocamera dello smartphone.
Dalla informazione alla matrice
Il primo passaggio consiste nel trasformare l’informazione che si desidera memorizzare in una sequenza di dati che possa essere rappresentata all’interno della matrice. Un QR Code può contenere, per esempio, un indirizzo web, una stringa di testo, un numero di telefono, dati di contatto o altre informazioni codificate.
I dati sono convertiti secondo specifiche modalità previste dallo standard del sistema di codifica e successivamente organizzati in blocchi. A questi dati sono aggiunte informazioni necessarie per consentire al lettore di individuare correttamente la struttura del codice e interpretarne il contenuto.
La quantità di dati che è possibile inserire dipende dalle dimensioni del QR Code e dal tipo di informazione utilizzata. All’aumentare della quantità di dati cresce infatti il numero di moduli necessari per rappresentarli e, di conseguenza, aumenta la dimensione della matrice.
Costruzione del QR Code
Una volta elaborati i dati, questi sono inseriti nella matrice insieme agli elementi necessari per consentire la corretta lettura del codice. I moduli bianchi e neri non sono quindi disposti casualmente: ogni elemento della struttura svolge una funzione specifica.
I tre grandi quadrati che normalmente si osservano in prossimità di tre angoli del codice sono chiamati finder pattern. Il loro compito è permettere al dispositivo di riconoscere rapidamente la presenza del QR Code, determinarne la posizione e stabilirne l’orientamento.
Sono presenti anche altri elementi destinati alla sincronizzazione e all’allineamento. Questi consentono al sistema di interpretare correttamente la griglia anche quando il codice è fotografato da una certa angolazione oppure quando la superficie sulla quale è stampato presenta leggere deformazioni.
Una parte della matrice è infine occupata dai dati e dalle informazioni utilizzate per la loro gestione. Il risultato è il caratteristico quadrato composto da centinaia o migliaia di piccoli moduli.
Scansione con lo smartphone
Quando l’utente inquadra un QR Code con la fotocamera, il dispositivo acquisisce un’immagine della scena. Il software deve innanzitutto individuare il QR Code all’interno dell’immagine, distinguendolo dagli altri elementi presenti nell’ambiente.
Il sistema riconosce i caratteristici finder pattern utilizzando la loro posizione per determinare la geometria del codice. Se il QR Code è inclinato o appare con una certa prospettiva, il software può effettuare le necessarie correzioni geometriche per ricostruire correttamente la matrice.
Successivamente sono analizzati i moduli che costituiscono il codice. Il lettore determina quali elementi rappresentano valori binari e ricostruisce progressivamente la sequenza di dati contenuta nella matrice.
Questa fase è resa possibile anche dalla presenza di informazioni di formato e di sincronizzazione, che aiutano il dispositivo a interpretare correttamente la struttura del codice.
Dalla matrice all’informazione
Dopo aver ricostruito i dati, il software procede alla loro decodifica. Se il QR Code contiene del semplice testo, questo è restituito direttamente all’utente. Se contiene un indirizzo web, invece, il dispositivo lo riconosce come URL e può proporre l’apertura del relativo sito.
La scansione e l’apertura del contenuto sono due operazioni concettualmente diverse. Il QR Code può essere letto correttamente anche quando l’informazione contenuta al suo interno conduce a una risorsa non affidabile.
Per esempio, un QR Code può contenere un URL apparentemente legittimo ma indirizzare a una pagina contraffatta. Questo aspetto è particolarmente importante per la sicurezza informatica e costituisce uno dei motivi per cui i QR Code possono essere sfruttati nelle campagne di phishing e quishing.
Il ruolo della correzione degli errori
Un elemento fondamentale del funzionamento dei QR Code è la possibilità di recuperare i dati anche quando una parte della matrice è danneggiata, sporca o parzialmente coperta.
Per ottenere questo risultato sono inseriti dati ridondanti attraverso sistemi di correzione degli errori basati sui codici Reed-Solomon. Il lettore può utilizzare queste informazioni aggiuntive per ricostruire i dati mancanti o alterati.
Lo standard prevede diversi livelli di correzione degli errori. Un livello maggiore aumenta la quantità di informazioni ridondanti e quindi la capacità del codice di essere letto anche in condizioni non ottimali, ma riduce lo spazio disponibile per i dati originali.
Questa caratteristica contribuisce alla robustezza dei QR Code e spiega perché un codice possa rimanere leggibile anche quando una parte della sua superficie non è perfettamente integra.
Nel complesso si può vedere il funzionamento di un QR Code come un processo che trasforma un’informazione digitale in una struttura grafica e successivamente compie il percorso inverso: dall’informazione alla matrice e dalla matrice nuovamente all’informazione.
La struttura di un QR Code
A prima vista, un codice a matrice può sembrare una semplice composizione di quadrati bianchi e neri disposti apparentemente in modo casuale. In realtà, la matrice segue una struttura precisa, nella quale ogni elemento svolge una funzione specifica. Alcune parti permettono al dispositivo di riconoscere il codice e determinarne l’orientamento, altre facilitano la sincronizzazione e l’allineamento, mentre una porzione della matrice contiene effettivamente le informazioni codificate.
La struttura complessiva dipende dalla versione del QR Code utilizzata: all’aumentare della versione aumenta il numero di moduli disponibili e, di conseguenza, la quantità di dati che è possibile memorizzare.
I moduli e la matrice
L’unità fondamentale di un QR Code è il modulo, cioè ciascun piccolo quadrato che costituisce la matrice. I moduli possono assumere principalmente due valori, rappresentati graficamente dal bianco e dal nero, e vengono organizzati secondo una griglia quadrata.
La dimensione della matrice non è sempre la stessa. I QR Code sono organizzati in diverse versioni, dalla versione 1, costituita da 21 × 21 moduli, fino alla versione 40, che raggiunge 177 × 177 moduli.
L’aumento delle dimensioni permette di rappresentare una quantità maggiore di informazioni. Tuttavia, una maggiore densità di dati richiede anche una matrice più grande e può rendere più importante una buona qualità dell’immagine o della stampa.
Finder pattern
Uno degli elementi più facilmente riconoscibili sono i tre grandi quadrati situati generalmente negli angoli superiore sinistro, superiore destro e inferiore sinistro del QR Code detti finder pattern o pattern di ricerca.
La loro funzione principale è consentire al dispositivo di individuare rapidamente il QR Code all’interno dell’immagine e determinarne l’orientamento. La particolare configurazione concentrica dei moduli permette al software di riconoscere questi pattern anche quando il codice viene fotografato da una certa distanza o con una diversa angolazione.
Grazie alla presenza dei tre finder pattern, il lettore può stabilire quale sia la posizione del codice e correggere eventuali variazioni prospettiche prima di procedere alla decodifica.
Timing pattern e alignment pattern
Tra gli elementi strutturali del QR Code troviamo anche il timing pattern, costituito da una successione alternata di moduli chiari e scuri. È collocato lungo determinate righe e colonne della matrice e ha il compito di aiutare il lettore a individuare la posizione dei singoli moduli e a mantenere correttamente la sincronizzazione della griglia.
Un’altra componente importante è rappresentata dagli alignment pattern, piccoli schemi quadrati utilizzati per migliorare la precisione della lettura. Sono particolarmente importanti nei QR Code di dimensioni maggiori, nei quali la matrice può essere soggetta a deformazioni prospettiche.
Gli alignment pattern consentono al sistema di correggere meglio la geometria del codice, facilitando la lettura anche quando l’elemento grafico è stampato su superfici leggermente curve o viene acquisito con un’inclinazione.
Quiet zone
Intorno alla matrice deve essere presente una zona libera chiamata quiet zone, o zona di rispetto. Si tratta di uno spazio privo di moduli che separa visivamente il QR Code dall’ambiente circostante.
La quiet zone è importante perché permette al sistema di distinguere più facilmente il codice dagli elementi presenti intorno ad esso. Se questa zona viene eliminata o occupata da immagini, testo o altri elementi grafici, il riconoscimento può diventare più difficile.
Per questo motivo, anche quando il QR Code viene personalizzato graficamente, è necessario evitare di compromettere la sua struttura fondamentale e mantenere sufficientemente libera l’area circostante.
Area dei dati e informazioni di formato
La parte restante della matrice è utilizzata in larga misura per rappresentare i dati effettivamente contenuti nel QR Code. Questi sono distribuiti secondo regole definite dallo standard e accompagnati da informazioni aggiuntive necessarie alla corretta interpretazione.
Sono presenti, inoltre, specifiche aree che contengono le informazioni di formato, utilizzate dal lettore per conoscere determinati parametri del codice, tra cui il livello di correzione degli errori e la maschera applicata ai dati.
La mascheratura è necessaria per evitare configurazioni di moduli che potrebbero rendere più difficile il riconoscimento del codice. Durante la decodifica, il lettore identifica la maschera utilizzata e la applica inversamente per ricostruire correttamente i dati originali.
Correzione degli errori nella struttura
Una caratteristica fondamentale della struttura è la presenza di dati ridondanti destinati alla correzione degli errori. Questi dati non rappresentano direttamente l’informazione inserita dall’utente, ma permettono di recuperarla quando una parte della matrice non è perfettamente leggibile.
La correzione degli errori utilizza il codice Reed-Solomon dovuto a Irving S. Reed e Gustave Solomon che prevede quattro livelli: L, M, Q e H. Il livello H offre la maggiore capacità di recupero degli errori, mentre il livello L utilizza una quantità inferiore di dati ridondanti.
La scelta del livello rappresenta quindi un compromesso tra quantità di dati memorizzabili e robustezza del codice. Un QR Code con un elevato livello di correzione può continuare a essere decodificato anche quando una parte della sua superficie è danneggiata o oscurata.
Nel complesso, la struttura di un QR Code è il risultato dell’integrazione di numerosi elementi con funzioni differenti. Finder pattern, timing pattern, alignment pattern, quiet zone, informazioni di formato, dati e codici di correzione degli errori cooperano per rendere possibile una lettura rapida e affidabile della matrice.
Informazioni nel QR Code
Un QR Code può contenere differenti tipologie di informazioni. Tra gli utilizzi più comuni troviamo gli indirizzi web, che rappresentano probabilmente l’impiego più diffuso, ma è possibile memorizzare anche testo, numeri di telefono, indirizzi e-mail e informazioni di contatto.
I QR Code possono inoltre contenere dati utilizzati per configurare una connessione Wi-Fi, informazioni geografiche, dati relativi a biglietti elettronici e altre informazioni strutturate.
In molti casi il codice non contiene direttamente una grande quantità di dati, ma un semplice URL. In questo modo il QR Code funziona come una sorta di ponte tra il mondo fisico e una risorsa digitale.
Come si legge un QR Code
La lettura di un QR Code avviene oggi generalmente attraverso la fotocamera dello smartphone. I dispositivi moderni sono spesso in grado di riconoscere automaticamente il codice senza richiedere l’installazione di applicazioni specifiche.
Una volta riconosciuto il codice, il dispositivo mostra l’informazione contenuta oppure propone un’azione, come l’apertura di una pagina web, l’aggiunta di un contatto o la connessione a una rete.
La semplicità della procedura ha rappresentato uno dei principali fattori della diffusione dei QR Code: l’utente non deve digitare manualmente l’informazione, ma può accedervi attraverso una semplice scansione.
I principali utilizzi dei QR Code
I codici QR sono oggi utilizzati in numerosi settori. Nel commercio possono essere presenti sulle confezioni dei prodotti per fornire informazioni aggiuntive, collegare il consumatore a una pagina web o consentire di verificare determinati dati.
Nel settore della ristorazione vengono frequentemente utilizzati per permettere l’accesso ai menu digitali, mentre nei trasporti possono essere integrati in biglietti elettronici e sistemi di controllo degli accessi.
Un’altra importante applicazione riguarda i pagamenti digitali, nei quali il codice QR può contenere le informazioni necessarie per avviare una transazione attraverso un’applicazione compatibile.
Anche musei, istituzioni culturali e strutture turistiche possono utilizzare QR Code per fornire informazioni aggiuntive su opere, monumenti e luoghi di interesse.
QR Code e autenticazione
Si possono utilizzare i QR Code in alcuni sistemi di autenticazione e verifica dell’identità digitale. In determinati servizi, per esempio, la scansione di un codice consente di associare un dispositivo a un account oppure di trasferire informazioni necessarie per completare una procedura di accesso.
Questo utilizzo può essere collegato ai sistemi di autenticazione a due fattori (2FA), nei quali si utilizza un secondo elemento per aumentare la sicurezza dell’accesso a un servizio.
Si possono usare i QR Code in procedure che coinvolgono codici temporanei. In questo contesto è interessante il collegamento con i codici OTP (One-Time Password), cioè password monouso utilizzate per autenticare un utente o autorizzare determinate operazioni.
QR Code, passkey e autenticazione digitale
L’evoluzione dei sistemi di autenticazione sta portando alla diffusione di tecnologie che riducono la dipendenza dalle password tradizionali. Tra queste rientrano le passkey, basate su tecniche crittografiche e progettate per rendere l’autenticazione più sicura e semplice per l’utente.
Anche i QR Code possono comparire in alcuni flussi di autenticazione, soprattutto quando è necessario stabilire una relazione tra dispositivi diversi. Il QR Code, in questo caso, non costituisce necessariamente il meccanismo di sicurezza principale, ma può rappresentare un mezzo pratico per trasferire o associare determinate informazioni.
QR Code e sicurezza informatica
Il fatto che un QR Code possa contenere un URL introduce un possibile problema di sicurezza. L’utente può infatti vedere soltanto la matrice grafica e non conoscere immediatamente la destinazione effettiva del collegamento.
Un QR Code contraffatto può essere utilizzato per indirizzare verso una pagina che imita quella di una banca, di un servizio online o di un’altra organizzazione legittima, con l’obiettivo di ottenere credenziali o altre informazioni.
Si tratta di un meccanismo che presenta numerose analogie con il phishing, nel quale l’attaccante cerca di indurre la vittima a interagire con una risorsa fraudolenta.
Per comprendere meglio queste tecniche è utile approfondire il funzionamento del phishing e le principali modalità con cui vengono realizzati gli attacchi basati sull’ingegneria sociale.
Che cos’è il quishing
L’utilizzo fraudolento ha portato alla diffusione del termine quishing, formato dall’unione di QR e phishing.
Il quishing consiste nell’utilizzare un QR Code come strumento per indirizzare la vittima verso una risorsa malevola o una pagina progettata per sottrarre informazioni. Il codice può essere distribuito attraverso e-mail, messaggi, manifesti, volantini oppure sovrapposto a QR Code legittimi.
Il principale elemento di interesse dal punto di vista della sicurezza è quindi che il QR Code non è di per sé una tecnologia malevola. Il rischio dipende dalle informazioni che contiene e, soprattutto, dalla destinazione alla quale conduce.
Il quishing rappresenta pertanto un’evoluzione delle tecniche di phishing in un contesto nel quale l’interazione tra mondo fisico e digitale diventa sempre più frequente.
Come utilizzare i QR Code in sicurezza
Prima di scansionare un QR Code è opportuno considerare la sua provenienza e il contesto nel quale viene presentato. Un codice collocato in un ambiente pubblico, per esempio, potrebbe essere stato manipolato o sostituito.
Dopo la scansione è importante controllare l’indirizzo web visualizzato prima di procedere, soprattutto quando viene richiesto di inserire credenziali, dati personali o informazioni finanziarie.
È inoltre consigliabile evitare di fornire informazioni sensibili dopo aver seguito un collegamento di cui non si conosce con certezza l’origine.
Queste precauzioni sono particolarmente importanti quando il QR Code è utilizzato in procedure di autenticazione, pagamenti o accesso a servizi online.



