Uma convenção infeliz no 1º dígito de controlo do cartão de cidadão

O cartão de cidadão é um documento com o qual o cidadão assegura, perante terceiros, a sua identidade. Os mecanismos de segurança incorporados nos números do cartão garantem a fiabilidade da identificação com um grau de certeza elevado. Porém, os algoritmos que controlam a autenticidade de tais números em certas situações são falíveis, sendo por isso legítimo questionarmo-nos sobre a sua veracidade.


O número de documento de um cartão de cidadão é um código alfanumérico composto por um número de identificação civil (NIC) de 8 dígitos coincidente com o número do antigo bilhete de identidade, um dígito de controlo do NIC, dois carateres e um dígito de controlo do número de documento.


Por exemplo, na Figura 1 o algarismo 1 é o dígito de controlo do NIC e o algarismo 3 é o dígito de controlo do número de documento.


O algoritmo que valida o NIC é o mesmo do sistema ISBN (International Standard Book Number, que em português significa “Número Padrão Internacional do Livro”) recorre a uma aritmética módulo 11 e consiste nas seguintes etapas:


i) aglutinar o dígito de controlo ao NIC (que no exemplo é o 1, dando origem a 304641761);


ii) multiplicar os dígitos do número obtido em i) pela ordem das suas posições, contadas da direita para a esquerda (ex:1×1+6×2+7×3+1×4+4×5+5×6+4×7+0×8+3×9);


iii) calcular a soma dos valores obtidos em ii) e verificar se é múltipla de 11.


Façamos o teste para o NIC 30464176 acima apresentado:


1×1+6×2+7×3+1×4+ 4×5+5×6+4×7+0×8+ 3×9(*)=143=13× 11.


Como a soma obtida é um múltiplo de 11, este NIC pode efetivamente pertencer a algum cidadão. De notar que o dígito de controlo é o menor número que adicionado à expressão (*) resulta num múltiplo de 11. Neste exemplo, o 1 foi o menor número que somado à expressão deu origem a 143, ou seja um múltiplo de 11 (143=13×11). De um modo geral, um número inteiro pode ser transformado num múltiplo de 11 por adição de um número natural não superior a 10. Assim, existem NICs para os quais a soma correspondente à expressão (*) deve ser acrescida do número 10, o que é inviável por exigir dois dígitos para a sua escrita. O facto do sistema decimal ser constituído pelos símbolos 0,1,2, …, 9, impossibilita a representação do número 10 com um só símbolo, por isso convencionou-se identificar os números 0 e 10 com o símbolo 0. Esta convenção retirou eficiência ao sistema na deteção de erros. Sem esta ambivalência, o algoritmo usado permitiria detetar os erros mais comuns, a saber: erros singulares (alteração de um qualquer dígito) e erros de transposição (troca de dois dígitos).


Apesar do Ministério da Justiça ter conhecimento desta falha, ela mantém-se no cartão de cidadão. No entanto, para garantir maior robustez no processo de controlo de autenticidade do documento foi introduzido um algoritmo adicional, de que falaremos numa próxima edição.


Figura 1: NIC 30464176 do número de documento

Edite Cordeiro e Ilda Reis (Instituto Politécnico de Bragança) - 2013-05-02 14:32:27