Como funcionam os códigos QR?

Os códigos QR fazem parte do nosso dia a dia e podem ser encontrados em todo o lado, desde restaurantes, cartazes, bilhetes e até em pagamentos. Mas como é que estes pequenos quadrados conseguem armazenar e transmitir dados?

O código QR (em inglês, Quick Response) pode ser visto como uma evolução dos códigos de barras tradicionais: enquanto os códigos de barras utilizam uma dimensão para representar a informação através de barras e espaços, os códigos QR utilizam duas dimensões através de uma grelha de pequenos quadrados, chamados módulos.

Esta estrutura permite armazenar uma maior quantidade de informação numa área relativamente pequena, podendo representar texto, URL, contactos, informações de Wi-Fi, localizações ou dados utilizados em pagamentos.

Fonte: Labeljoy

Como é constituído um código QR?

A grelha que forma um código QR não é aleatória, com cada conjunto de módulos a ter uma função específica, contribuindo para que o código possa ser identificado, lido e descodificado corretamente:

Fonte: Karrach L, Pivarčiová E, Božek P. Identification of QR Code Perspective Distortion Based on Edge Directions and Edge Projections Analysis. Journal of Imaging. 2020; 6(7):67.

Entenda-se da imagem acima:

Como é que um código QR é lido?

Ao apontar a câmara do dispositivo para o código, este captura e processa a imagem, procurando de imediato os Finder Patterns para alinhar a perspetiva. Em seguida, o software analisa a grelha para determinar a posição dos restantes módulos e compensar possíveis distorções causadas pelo ângulo da foto.

A partir daí, os módulos são descodificados para extrair a informação. Caso a matriz apresente áreas danificadas ou obstruídas, o sistema recorre aos dados de redundância para recuperar o conteúdo em falta. Por fim, o resultado é processado e apresentado no ecrã.

Como funcionam mesmo danificados?

A tecnologia dos códigos QR consegue manter a funcionalidade mesmo quando parcialmente rasgada, suja ou ocultada, graças ao sistema de correção de erros Reed-Solomon. Existem quatro níveis de proteção ajustáveis aquando da criação do código:

Quanto maior for o nível de proteção escolhido, mais módulos são dedicados à redundância de dados, tornando o código visualmente mais denso, mas significativamente mais resistente a danos físicos.

Que versões de código QR existem?

No código QR existem 40 versões, numeradas de 1 a 40. A versão 1 é composta por 21 x 21 módulos, enquanto a versão 40 chega aos 177 x 177 módulos. À medida que a versão aumenta, também aumenta a quantidade de informação que pode ser armazenada. No entanto, a capacidade depende ainda do tipo de dados e do nível de correção de erros utilizado.

Fonte: Iliyasu, Abdullah. (2019). Cellular-Automated Protocol to Safeguard Confidentiality of QR Codes. IEEE Access. 7. 144451-144471.

Um código QR pode ser alterado depois de criado?

Existem dois tipos principais de código QR:

Códigos QR e Base45

Antes de ser convertida nos blocos pretos e brancos da grelha, a informação tem de ser codificada num formato eficiente. Uma das normas mais conhecidas para esta tarefa é o Base45, definido pela RFC 9285. Este esquema de codificação foi criado para otimizar o armazenamento de dados binários comprimidos, recorrendo a um conjunto restrito de 45 caracteres.

Por exemplo, na Europa, o Base45 foi a solução técnica escolhida para estruturar os dados do Certificado Digital COVID-19 da União Europeia, o que permitiu ler e validar ficheiros com assinatura digital de forma rápida através da câmara do telemóvel.

Os perigos dos códigos QR

Apesar de serem bastante úteis, os códigos QR também podem ser utilizados para fins maliciosos. Um código pode, por exemplo, direcionar para uma página falsa para roubar palavras-passe, dados bancários ou outras informações.

Por isso, é importante ter especial atenção a códigos QR encontrados em locais inesperados e confirmar o endereço da página antes de introduzir qualquer informação.

Saiba mais sobre este tipo de burla e os riscos associados:

✍️ Este artigo foi desenvolvido por João Rebolho para o Pplware.

Sair da versão móvel