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:
- Finder Patterns: os três grandes quadrados nos cantos permitem localizar o código QR e determinar a sua orientação.
- Timing Patterns: sequências de módulos alternados que ajudam a determinar a posição de cada módulo.
- Alignment Patterns: pequenos padrões que ajudam a manter a leitura correta quando o código QR está inclinado ou deformado.
- Format Information: contém informações sobre o formato do código QR, incluindo o nível de correção de erros utilizado.
- Data: zona onde são armazenados os dados que o código QR pretende transmitir.
- Quiet Zone: margem branca à volta do código QR que facilita a sua deteção e ajuda a distingui-lo do fundo.
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:
- Nível L (Low): recupera até 7% dos dados (menos proteção, mais espaço disponível para os dados);
- Nível M (Medium): recupera até 15% dos dados;
- Nível Q (Quartile): recupera até 25% dos dados;
- Nível H (High): recupera até 30% dos dados (maior proteção, menos espaço disponível para os dados).
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:
- Estáticos, nos quais a informação fica diretamente gravada no código. Uma alteração implica criar um novo código.
- Dinâmicos, nos quais o código encaminha para um endereço que pode ser alterado posteriormente. Assim, o código QR mantém-se igual, mas o destino pode mudar.
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.

















