Uma assinatura digital é um jeito de garantir que um documento eletrônico (e-mails, planilhas, arquivos de texto, etc.) seja autêntico. Autêntico significa que você sabe quem o criou e que ele não sofreu qualquer alteração desde que foi criado.

As assinaturas digitais confiam em certos tipos de criptografia para garantir a autenticação. Criptografia é o processo de tomar todos os dados que um computador envia para outro e codificá-los num formato que somente o outro computador seja capaz de decodificar. Autenticação é o processo de verificar se a informação vem de uma fonte confiável. Esses dois processos trabalham lado a lado nas assinaturas digitais.

Existem várias maneiras de autenticar uma pessoa ou uma informação em um computador.

 

  • Senha: a utilização de um nome de usuário e a senha é a forma mais comum de autenticação. Você digita seu nome e a senha quando solicitados pelo computador. Ele verifica esse par com um arquivo seguro para confirmar. Se o nome ou a senha não combinarem, o acesso é bloqueado.
  • Soma de controle: provavelmente um dos métodos mais antigos de verificar se os dados estão corretos, a soma de controle também controla a autenticação, já que uma soma de controle inválida sugere que os dados foram comprometidos de alguma maneira. Uma soma de controle é determinada em uma de duas maneiras. Vamos supor que a soma de um pacote é de 1 byte, o que significa que ela pode ter um valor máximo de 255. Se a soma dos outros bytes do pacote for de 255 ou menos, então a soma de controle contém o valor exato. Todavia, se a soma dos outros bytes for maior que 255, então a soma de controle será o restante do valor total após ele ser dividido por 256. Veja esse exemplo:

    Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7 Byte 8 Soma de controle total
    212 232 54 135 244 15 179 80 1.151 127

    Dividindo 1.151 por 256 o resultado é 4.496 (arredondado para 4)
    Multiplique 4 X 256 que é igual a 1024
    1151 menos 1024 é igual a 127

     

  • CRC (Cyclic Redundancy Check) ou Checagem de Redundância Cíclica: CRCs são similares ao conceito das somas de controle, mas eles usam divisões polinomiais para determinar os seus valores, que são geralmente de 16 ou 32 bits. O bom do CRC é a sua precisão. Se um único bit estiver incorreto, o valor do CRC não combinará. Ambos, a soma de controle e o CRC, são bons em prevenir erros aleatórios de transmissão, mas oferecem pouca proteção contra um ataque intencional aos seus dados. A técnica de criptografia abaixo é muito mais segura.

     

  • Criptografia com chave privada: chave privada significa que cada computador possui uma chave secreta (código) que pode ser utilizado para criptografar um pacote de informação antes de ele ser enviado pela rede a outro computador. A chave privada requer que você conheça quais computadores falarão uns com os outros e então, instala a chave em cada um deles. A criptografia com chave privada é essencialmente o mesmo que um código secreto que cada um dos computadores precisa conhecer para decodificar a informação. O código libera a chave para decodificar a mensagem. Pense nisso como criar uma mensagem codificada para enviar a um amigo onde cada letra é substituída pela segunda letra que vem depois. Assim, "A" torna-se "C" e "B" torna-se "D". Já contamos a um amigo de confiança que o código é "Deslocar por 2". Nosso amigo recebe a mensagem e a decodifica. Qualquer outro que ver a mensagem só enxergará bobagem.

     

  • Criptografia com chave pública: criptografia com chave pública utiliza uma combinação de chave privada com chave pública. A chave privada é conhecida somente por seu computador, ao passo que a chave pública é dada a seu computador por qualquer outro que queira se comunicar de forma segura com ele. Para decodificar uma mensagem criptografada, um computador precisa usar a chave pública, oferecida pelo computador que a originou, e sua própria chave privada.

    A chave é baseada em um valor de revisão. É um valor computado de um número de inserção básico usando um algoritmo. O importante sobre um valor de revisão é que é quase impossível derivar o valor de inserção original sem conhecer os dados usados para criar o valor de revisão. Aqui está um exemplo simples:

    Número de inserção Algoritmo Valor de revisão
    10667 Número de inserção x 143 1525381

    Você pode perceber o quão difícil seria determinar que o valor de 1525381 veio da multiplicação de 10667 e 143. Mas, se você soubesse que o multiplicador é 143, então seria fácil calcular o valor de 10667. A criptografia com chave pública é muito mais complexa do que esse exemplo, mas essa é a idéia básica. As chaves públicas geralmente usam algoritmos complexos e valores de revisão muito grandes para a criptografia: números com 40-bit ou até 128-bit. Um número com 128-bit tem 2 combinações diferentes possíveis de 128. É a mesma quantidade de combinações em comparação com as moléculas de água existentes em 2,7 milhões de piscinas olímpicas. Até a menor gotícula de água possui bilhões e bilhões de moléculas!

     

  • Certificados digitais: implementar a criptografia com chave pública em larga escala, como um servidor seguro de rede precisa, requer uma proposta diferente. É aí que entram os certificados digitais. Um certificado digital é essencialmente uma informação que diz que o servidor de rede é confiável por uma fonte independente conhecida como Autoridade de Certificado. A Autoridade de Certificado age como a intermediária, na qual ambos os computadores confiam. Ela confirma que cada computador é, de fato, o que eles dizem ser e então, libera as chaves públicas de cada computador para o outro.

O Digital Signature Standard (DSS) ou Padrão de Assinatura Digital é baseado em um método de criptografia com chave pública que utiliza o Digital Signature Algorithm (DSA) ou Algoritmo de Assinatura Digital. DSS é o formato das assinaturas digitais apoiado pelo governo dos EUA. O algoritmo DSA consiste de uma chave privada que somente o criador do documento (assinante) conhece e de uma chave pública. A chave pública possui quatro partes que você pode conhecer melhor nesta página (em inglês).

Mais links interessantes (em inglês)