A primeira vez que a maioria das pessoas encontra um código QR, elas o escaneiam sem pensar duas vezes. Funciona. Eles seguem em frente. Mas se você perguntasse como – como uma câmera de telefone pode olhar para um quadrado de pontos pretos e brancos e, em milissegundos, saber que codifica um URL, uma senha de Wi-Fi ou uma passagem de trem – a maioria das pessoas não teria ideia. Acredito que essa lacuna entre o uso de uma tecnologia e sua compreensão é onde todos os riscos de segurança interessantes se escondem.

Este guia explica o quadro completo: a engenharia que faz os códigos QR funcionarem, o sistema de correção de erros que os torna resilientes, os riscos de segurança que os tornam perigosos quando usados indevidamente e as escolhas práticas que fazem a diferença entre um código QR que funciona de maneira confiável e um que falha no pior momento possível.

O que é um código QR na verdade É

Um código QR (código de resposta rápida) é um código de barras de matriz bidimensional – uma grade de quadrados pretos e brancos que codifica dados tanto horizontal quanto verticalmente. Essa estrutura bidimensional é o que dá aos códigos QR sua vantagem dramática de armazenamento em relação aos códigos de barras unidimensionais tradicionais, que codificam dados apenas ao longo de um único eixo horizontal.

Um código de barras unidimensional como o UPC-A que você encontra em um produto de supermercado codifica cerca de 12 dígitos. Um código QR de tamanho físico equivalente pode conter até 7.089 caracteres numéricos, 4.296 caracteres alfanuméricos ou 2.953 bytes de dados binários. Isso é aproximadamente 300 vezes a capacidade de armazenamento no mesmo espaço físico.

A Denso Wave, uma subsidiária da Toyota, desenvolveu códigos QR em 1994 para rastrear peças de veículos na linha de montagem. O nome “Resposta Rápida” referia-se à velocidade de leitura – os códigos podiam ser lidos muito mais rápido do que os sistemas de código de barras existentes. Durante a primeira década de sua existência, os códigos QR foram quase exclusivamente uma ferramenta de logística industrial. Os smartphones que eventualmente os tornariam onipresentes ainda não existiam.

Os seis elementos estruturais de cada código QR

Cada código QR, independentemente do tamanho ou conteúdo, tem a mesma anatomia estrutural:

1. Finder Patterns

Os três quadrados grandes em três cantos do código (não no quarto canto - isso é deliberado). Isso permite que qualquer scanner identifique instantaneamente a presença, a orientação e o tamanho do código, independentemente do ângulo de visualização. Um scanner QR identifica esses três quadrados primeiro e depois calcula a geometria do restante do código a partir de suas posições.

2. Padrões de alinhamento

Quadrados menores que aparecem dentro da área de dados de códigos QR maiores. Eles ajudam o scanner a corrigir distorções de imagem — particularmente úteis quando um código é fotografado em ângulo, impresso em uma superfície curva ou levemente amassado. Códigos QR menores (versões 1–6) não possuem padrões de alinhamento; eles só são necessários quando a grade é grande o suficiente para que a distorção se torne um problema significativo.

3. Padrões de tempo

Linhas e colunas alternadas em preto e branco que conectam os padrões do localizador. Eles fornecem ao scanner uma grade de referência para trabalhar, ajudando-o a mapear corretamente a posição de cada módulo de dados, mesmo quando a imagem está ligeiramente distorcida ou em uma resolução onde os quadrados individuais não estão claramente definidos.

4. Informações de formato

Codificadas em faixas adjacentes aos padrões de localização, as informações de formato informam ao scanner qual nível de correção de erros está em uso e qual padrão de máscara de dados foi aplicado. Ele é armazenado duas vezes – uma em cada lado de cada padrão de localização – para que um código parcialmente obscurecido ainda possa ser decodificado corretamente.

5. Módulos de dados

O conteúdo codificado real, espalhado pela grade restante em um padrão específico em zigue-zague. Os dados são codificados em um dos quatro modos – numérico (o mais eficiente para números), alfanumérico (letras, números e um pequeno conjunto de símbolos), binário (qualquer dado de byte, incluindo URLs) ou kanji (codificação de caracteres japoneses). A maioria dos códigos QR usados ​​na vida cotidiana usam o modo binário, e é por isso que eles podem codificar qualquer URL, independentemente dos caracteres que ela contenha.

6. Zona Silenciosa

A borda branca em branco ao redor de todo o código. Não é decorativo – é estruturalmente necessário. Sem ele, um scanner não pode determinar onde termina o código e começa o conteúdo ao redor. O mínimo exigido é de quatro larguras de módulo em todos os lados. Muitos códigos QR mal implementados - especialmente aqueles impressos com margens insuficientes - falham porque esta zona tranquila não é respeitada.

Correção de erros Reed-Solomon: por que códigos QR danificados ainda funcionam

Esta é a parte da engenharia de códigos QR que considero genuinamente impressionante. Os códigos QR usam a correção de erros Reed-Solomon, o mesmo algoritmo matemático que a NASA desenvolveu para comunicações no espaço profundo, onde um sinal pode viajar bilhões de quilômetros e chegar corrompido por interferência cósmica.

Existem quatro níveis de correção de erros:

  • Nível L (Baixo) — recupera até 7% das palavras-código. Produz o menor código QR para uma determinada carga de dados.
  • Nível M (Médio) — recupera até 15%. O padrão sensato de uso geral.
  • Nível Q (quartil) — recupera até 25%. Melhor para códigos que podem ficar parcialmente obscurecidos durante o uso.
  • Nível H (Alto) — recupera até 30%. A escolha padrão quando você deseja sobrepor um logotipo ao código.

A implicação prática: você pode destruir fisicamente ou cobrir até 30% de um código QR — com um logotipo, uma mancha, um arranhão ou dano deliberado — e ele ainda será digitalizado corretamente. Este não é um recurso adicionado posteriormente; ele é incorporado ao padrão original. É também por isso que os códigos QR de marca funcionam. Quando uma empresa incorpora seu logotipo no centro de um código QR, ela está deliberadamente “danificando” o código e confiando na correção de erros de nível H para reconstruir os dados ausentes. O scanner vê o logotipo como uma região corrompida e o preenche usando os dados redundantes armazenados nos módulos adjacentes.

PHP_CTA_PLACEHOLDER

Como uma câmera de telefone realmente lê um código QR

O processo de digitalização que parece instantâneo para você é, na verdade, um pipeline de processamento de imagem preciso e de vários estágios que é executado em frações de segundo:

  1. Captura de imagem — A câmera captura quadros continuamente. O software do scanner analisa cada quadro, procurando estruturas de código QR.
  2. Binarização — A imagem é convertida em preto e branco puro usando limite adaptativo. Isso elimina variações de iluminação, contraste e sombra que, de outra forma, tornariam o código ilegível.
  3. Detecção de padrão do Finder — O algoritmo procura a proporção característica 1:1:3:1:1 dos módulos dark:light:dark:light:dark que define um padrão de busca. Encontrar três deles na relação geométrica correta confirma a presença de um código QR.
  4. Correção de perspectiva — Usando as posições dos padrões de localização (e padrões de alinhamento para códigos maiores), o software calcula uma matriz de transformação para nivelar a imagem distorcida em uma grade quadrada.
  5. Amostragem de módulo — Cada posição da grade é amostrada para determinar se é um módulo escuro ou claro, construindo uma matriz binária de todo o código.
  6. Decodificação de formato — Os módulos de informações de formato são lidos para determinar o nível de correção de erros e a máscara de dados.
  7. Remoção da máscara de dados — Os códigos QR aplicam um dos oito padrões de mascaramento de dados para evitar grandes áreas uniformes (que são mais difíceis de digitalizar de forma confiável). A máscara é invertida antes da decodificação.
  8. Correção de erros Reed-Solomon — Quaisquer palavras-código corrompidas são identificadas e corrigidas.
  9. Decodificação de dados — Os dados binários corrigidos são convertidos na saída final: um URL, uma sequência de texto, um cartão de contato ou o que quer que o código contenha.

Em um smartphone moderno com uma câmera decente e QR Scanner AI, todo esse processo normalmente leva menos de 200 milissegundos. Com pouca iluminação ou com um código danificado, o software executa passagens adicionais – ajustando parâmetros de exposição, tentando diferentes limites de binarização – o que pode adicionar mais um ou dois segundos. Um scanner bem projetado como qrscanner.akstool.com lida com esses casos extremos automaticamente.

O problema de segurança sobre o qual ninguém fala o suficiente

Aqui está a verdade incômoda sobre os códigos QR: eles se tornaram um excelente vetor de ataque para phishing, e a maioria das pessoas não tem ideia. A técnica é chamada de "quishing" (phishing de código QR) e funciona precisamente porque os códigos QR são opacos — você não pode ler o que eles codificam antes de digitalizá-los.

Um código QR malicioso parece idêntico a um código legítimo. Um invasor pode imprimir um adesivo com seu código malicioso e colocá-lo sobre um código QR legítimo – em um parquímetro, mesa de restaurante, pôster de check-in de hospital ou entrada de local de concerto. A vítima verifica o que acredita ser o código oficial e é redirecionada para uma página de phishing, download de malware ou portal de pagamento falso.

A escala desse problema aumentou significativamente desde 2020, quando os códigos QR se tornaram o mecanismo padrão de interação sem contato em uma grande variedade de locais. De acordo com pesquisadores de segurança cibernética, ataques de phishing de QR aumentaram mais de 400% entre 2021 e 2023.

Um scanner que prioriza a privacidade, como o QR Scanner AI, atenua isso ao:

  • Exibir o URL decodificado antes de qualquer ação do navegador ser realizada, dando a você a oportunidade de inspecionar o domínio
  • Processando tudo no dispositivo — nenhum conteúdo da verificação é transmitido para servidores externos onde poderia ser registrado
  • Não armazenar histórico de verificação em qualquer back-end de nuvem que possa ser violado

A pergunta certa a ser feita a qualquer scanner QR não é "ele digitaliza rapidamente?" mas "o que acontece com meus dados digitalizados?" Um scanner que registra cada URL que você verifica e o associa à sua identidade é, na verdade, uma ferramenta de vigilância.

Casos de uso de negócios: em que os códigos QR são realmente bons

Nem todos os casos de uso de códigos QR são criados iguais. Alguns são excelentes. Alguns estão equivocados. Depois de anos vendo ambos, aqui está minha avaliação honesta:

Genuinamente útil:

  • Compartilhamento de Wi-Fi — Um código QR de Wi-Fi é realmente melhor do que uma senha em quase todas as situações. Os convidados não precisam digitar uma senha complexa, você não precisa dizê-la em voz alta em um espaço público e pode regenerar o código se alterar a senha. Veja como gerar um com QR Scanner AI.
  • Cartões de contato (vCards) — Gerar um código QR que codifique suas informações de contato é muito mais confiável do que esperar que alguém transcreva corretamente um número de telefone de um cartão de visita. Uma digitalização salva o contato diretamente no telefone.
  • Check-in do evento — Os códigos QR funcionam bem como prova de identidade ou confirmação de reserva em situações de alto rendimento. Um scanner lê o código; um back-end o valida. Rápido, escalonável e com taxas de erro decentes.
  • Informações do produto — Vincular um produto físico a uma página digital detalhada, manual do usuário ou tutorial em vídeo é um caso de uso legítimo e fácil de usar.

Muitas vezes mal orientado:

  • Códigos QR em outdoors — Exigir que alguém retire seu telefone com segurança, desbloqueie-o, abra uma câmera e leia um código a 60 mph não é uma experiência de usuário bem projetada.
  • Códigos QR em e-mail — Se alguém estiver lendo seu e-mail no telefone, não será possível escanear um código QR com o mesmo dispositivo. E se eles estiverem em um desktop, o atrito é maior do que um link.
  • Códigos QR como substitutos da usabilidade — Colocar um código QR em algo porque você não tem espaço para informações não é o mesmo que um bom design.
php echo inline_tool_cta('qr-scanner', 'QR Scanner AI', 'https://play.google.com/store/apps/details?id=com.akstool.qr.scanner', 'Gere códigos QR para Wi-Fi, vCards, URLs e muito mais — diretamente do QR Scanner AI. Sem marcas d'água. Sem limites de tamanho. Gratuito.'); ?

O que faz um código QR realmente funcionar na impressão

Gerar um código QR é trivial. Gerar um que seja digitalizado de forma confiável em um cartão de visita, uma etiqueta de produto ou um pôster de grande formato — isso requer um pouco mais de reflexão.

  • Use SVG para PNG digital de alta resolução para impressão. Um PNG de 300×300 pixels parecerá aceitável na tela, mas será pixelizado e potencialmente impossível de ser digitalizado quando impresso em 3cm × 3cm. Obtenha um SVG (formato vetorial) para uso de impressão; ele é dimensionado sem perda de qualidade.
  • O tamanho mínimo é 2 cm × 2 cm. Abaixo disso, a maioria das câmeras de telefone tem dificuldade para capturar detalhes suficientes para uma decodificação confiável, especialmente em condições de iluminação padrão.
  • Módulos escuros sobre fundo claro. Este é o padrão. A inversão para branco em escuro pode funcionar, mas reduz a confiabilidade. Algumas implementações de scanner não oferecem suporte e os requisitos de contraste são mais rígidos.
  • Mantenha a zona silenciosa. Quatro larguras de módulo de espaço em branco ao redor de todos os quatro lados. Não dois. Nenhum. Quatro.
  • Teste antes de imprimir. Digitalize seu código QR com três aplicativos diferentes em dois telefones diferentes antes de iniciar uma grande tiragem. O que funciona no seu telefone pode não funcionar no de outra pessoa.
  • Use o Nível H de correção de erros ao adicionar um logotipo. Se você quiser colocar um logotipo no centro (o que bloqueará alguns módulos), o Nível H oferece a tolerância máxima de reconstrução de dados de 30%.

Os códigos QR se estabilizaram como infraestrutura. Eles não são mais uma novidade e não vão desaparecer. Algumas tendências merecem destaque:

Códigos QR dinâmicos — códigos que codificam um URL de redirecionamento em vez do destino final, permitindo que o destino seja alterado sem reimprimir o código — tornaram-se uma prática padrão para casos de uso de marketing. O código sempre aponta para o mesmo URL curto; o destino desse URL pode ser atualizado em tempo real.

Códigos QR em pagamentos — já dominantes na China (WeChat Pay, Alipay) e na Índia (UPI), os pagamentos baseados em QR estão gradualmente ganhando terreno no Reino Unido por meio de esquemas como o Pingit do Barclays e várias integrações de PDV sem contato.

Análise de segurança — à medida que os ataques de extinção aumentam, há uma pressão crescente sobre os aplicativos de scanner para implementar verificações de segurança de domínio. Espere que isso se torne uma expectativa de recurso padrão em vez de um diferencial.

Para obter os conselhos mais atualizados sobre segurança de código QR, consulte nosso guia sobre riscos de segurança de código QR que você deve conhecer. Para criar e ler códigos QR no Android, o QR Scanner AI continua sendo nossa ferramenta recomendada.

Explore a categoria QR Codes completa para ver mais guias ou navegue no blog para ver os artigos mais recentes.