Criptografia, a explicação detalhada

Discussão em 'Noticias/Informações' iniciado por JeRp, Setembro 17, 2007.

  1. JeRp

    JeRp Old School

    Introdução

    O surpreendente crescimento da Internet agitou empresas e consumidores com sua promessa de mudar a maneira que vivemos e trabalhamos. Mas a maior preocupação ainda remete-se a sua segurança, especialmente quando envolve o envio de informações sigilosas.

    Convenhamos, há sempre várias informações que não gostaríamos que outras pessoas soubessem, tais como:

    * informações do cartão de crédito
    * CPF
    * correspondência privada
    * detalhes pessoais
    * informações sigilosas sobre a empresa
    * informações sobre a conta bancária

    A segurança de informações é provida, em computadores e na internet, por uma série de diferentes métodos. Um método de segurança simples, mas funcional, é manter informações sigilosas somente em mídias de armazenamento portátil, como disquetes. Mas as formas mais populares de segurança dependem da criptografia, processo que codifica a informação de tal maneira que somente a pessoa (ou o computador) com a chave pode decodificá-la.

    Sistemas de criptografia
    A criptografia não é algo novo - a novidade é sua aplicação em computadores. Antes da era digital, os maiores usuários da criptografia eram os governos, particularmente para finalidades militares. A existência de mensagens codificadas foi verificada desde a época do Império Romano. Mas a maior parte da criptografia utilizada hoje se baseia em computadores, simplesmente porque um código baseado em seres humanos é muito fácil de ser decodificado por um computador.

    A maioria dos sistemas de criptografia de computadores pertence a uma destas categorias:

    * criptografia de chave simétrica
    * criptografia de chave pública

    Chave simétrica
    Na criptografia de chave simétrica, cada computador possui uma chave secreta (código) que ele pode utilizar para criptografar um pacote de informações antes que ele seja enviado pela rede a um outro computador. A chave simétrica exige que você saiba quais computadores irão se comunicar, de forma que seja possível instalar a chave em cada um deles. A criptografia de chave simétrica é basicamente o mesmo que um código secreto que cada um dos computadores precisa saber a fim de decodificar as informações. O código fornece a chave para decodificar a mensagem. Pense assim: você cria uma mensagem codificada para enviar a um amigo, nela cada letra é substituída pela letra que está duas posições abaixo no alfabeto. Assim, "A" se torna "C," e "B" se torna "D". Você já informou ao seu amigo de confiança que o código é "deslocamento em 2 posições". Seu amigo recebe a mensagem e a decodifica. Qualquer outra pessoa que olhar esta mensagem verá somente um emaranhado de letras sem sentido.

    Chave pública
    A criptografia de chave pública utiliza a combinação de uma chave privada e uma chave pública. A chave privada só é conhecida pelo seu computador, enquanto que a chave pública é dada por seu computador a todo computador que queira comunicar-se de forma segura com ele. Para decodificar uma mensagem criptografada, um computador deve usar a chave pública, fornecida pelo computador de origem, e sua própria chave privada. Uma utilidade bem popular de criptografia de chave pública é chamada de Pretty Good Privacy (PGP - “ótima privacidade”) e permite que você criptografe quase qualquer coisa.



    Para implementar a criptografia de chave pública em larga escala, um servidor web seguro requer uma abordagem diferente. Aí entram os certificados digitais. Um certificado digital é basicamente um pedaço de informação que diz que o servidor web é considerado confiável por uma fonte independente, conhecida como Autoridade Certificadora. A Autoridade Certificadora age como um intermediário em quem ambos os computadores confiam. Ela confirma que cada um é de fato quem diz ser e fornece, então, as chaves públicas de um computador ao outro.

    Chave pública: SSL
    Uma implementação popular da criptografia de chave-pública é o Secure Sockets Layer (SSL). Originalmente desenvolvida pela Netscape, o SSL é um protocolo de segurança utilizado por navegadores de Internet e servidores web para transmitir informações sigilosas. O SSL tornou-se parte de um protocolo geral de segurança conhecido como Transport Layer Security (TLS).

    [​IMG]
    Procure pelo "s" após o "http" no endereço sempre que estiver prestes a enviar informações sigilosas, como o número do cartão de crédito, em um formulário na internet.

    Em seu navegador é possível saber quando você está utilizando um protocolo de segurança, como o TLS, de algumas maneiras diferentes. Você perceberá que o "http" na linha do endereço estará substituído por "https", e deve aparecer um pequeno cadeado na barra de status na parte de baixo da janela do navegador.

    [​IMG]
    O símbolo do cadeado avisa que você está utilizando criptografia

    A criptografia de chave pública envolve muito processamento, portanto, a maioria dos sistemas utiliza uma combinação da chave pública e simétrica. Quando dois computadores iniciam uma sessão segura, um computador cria uma chave simétrica e a envia ao outro usando a criptografia de chave pública. Os dois computadores podem então se comunicar utilizando a criptografia de chave simétrica. Uma vez que a sessão é terminada, cada computador descarta a chave utilizada naquela sessão. Todas as sessões adicionais requerem que uma nova chave simétrica seja criada e que o processo seja repetido.

    Algoritmos de espalhamento
    A chave, na criptografia de chave pública, é baseada em um hash value. Esse é um valor que é calculado a partir de um número de entrada baixo utilizando um algoritmo de espalhamento. Basicamente, esse valor é um sumário dos valores de origem. O importante sobre esses hash value é que se torne quase impossível derivar o número original de entrada sem conhecer os dados utilizados para criá-lo.

    Número de entrada Algoritmo de espalhamento Hash value
    10.667 # input x 143 1.525.381


    Você pode observar como seria difícil determinar que o valor 1.525.381 veio da multiplicação de 10.667 por 143. Mas se você soubesse que o multiplicador era 143, então seria muito fácil calcular o valor 10.667. A criptografia de chave pública é na realidade muito mais complexa do que esse exemplo, mas essa é a idéia básica.

    As chaves públicas geralmente utilizam algoritmos complexos e hash value muito grandes para criptografia, incluindo números de 40 bits ou até mesmo de 128 bits. Um número de 128 bits possui cerca de 2 elevado a 128 combinações ou (3.402.823.669.209.384.634.633.746.074. 300.000.000.000.000.000.000.000.000.000.000.000.000) diferentes combinações possíveis. Isso seria como tentar encontrar um específico grão de areia no Deserto do Saara.

    Autenticação
    Como apontado anteriormente, a criptografia é o processo que codifica todos os dados que um computador está enviando a outro, de tal forma que somente o outro computador possa decodificá-lo. Um outro processo, a autenticação, é utilizado para verificar que as informações são originárias de uma fonte confiável. Basicamente, se a informação for "autêntica", você sabe quem a criou e que ela não foi alterada de nenhuma forma desde que a pessoa a criou. Esses dois processos, criptografia e autenticação, funcionam juntos de maneira a criar um ambiente seguro.

    Há diversas maneiras de autenticar uma pessoa ou uma informação em um computador:

    * Senha - a utilização de um nome de usuário e de uma senha representa a maneira mais comum de autenticação. Você digita seu nome e sua senha quando solicitado pelo computador. Ele os compara a um arquivo seguro para confirmação. Caso o nome ou a senha não sejam compatíveis, você não obtém o acesso.
    * Cartões de acesso (em inglês) - esses sistemas podem variar de um simples cartão com uma tira magnética, similar a um cartão de crédito, aos sofisticados smart cards (cartões inteligentes) que possuem um chip de computador embutido.
    * Assinaturas digitais - uma assinatura digital é basicamente uma maneira de se assegurar que um documento eletrônico (e-mail, planilha eletrônica, arquivo de texto) seja autêntico. O Digital Signature Standard (DSS) - é baseado em um tipo de método de criptografia de chave pública que utiliza o Digital Signature Algorithm (DAS). O DSS é o formato para assinaturas digitais que foi endossado pelo governo americano. O algoritmo DSA consiste de uma chave privada, conhecida apenas pelo emissor do documento (o signatário), e uma chave pública que tem quatro partes. Se qualquer coisa estiver alterada no documento depois que a assinatura digital for anexada a ele, o valor, ao qual a assinatura digital faz a comparação, é alterado, resultando assim em uma assinatura inválida.

    Recentemente, formas mais sofisticadas de autenticação começaram a surgir nos computadores domésticos e de empresas. A maioria desses novos sistemas utiliza alguma forma de biometria para realizar a autenticação. A biometria utiliza informações biológicas para verificar a identidade. Os métodos biométricos de autenticação incluem:

    * leitura de impressão digital
    * leitura de retina
    * leitura facial
    * identificação de voz

    Verificando a integridade de dados
    Uma outra necessidade de segurança em informática é assegurar-se de que os dados não foram corrompidos durante a transmissão ou a criptografia. Existem duas maneiras mais usuais de se fazer isso:

    * Checksum (valor de verificação) - provavelmente um dos métodos mais antigos de se assegurar de que os dados estão corretos. O checksum fornece também uma forma de autenticação, já que um checksum inválido sugere que os dados foram comprometidos de alguma forma. Um checksum pode ser determinado de duas maneiras. Digamos que checksum de um pacote possui 1 byte. Um byte é composto de 8 bits e cada bit pode estar em dois estados, levando a um total de 256 (28 ) combinações possíveis. Como a primeira combinação é igual a zero, um byte pode ter um valor máximo de 255.
    o se a soma dos outros bytes no pacote a ser verificado for menor ou igual a 255, então o checksum contém aquele valor exato
    o se a soma dos outros bytes for maior que 255, então o checksum é o restante do valor total após ter sido dividido por 256

    Vejamos um exemplo de cálculo de checksum:

    Byte 1 = 212
    Byte 2 = 232
    Byte 3 = 54
    Byte 4 = 135
    Byte 5 = 244
    Byte 6 = 15
    Byte 7 = 179
    Byte 8 = 80
    Total = 1.151
    Checksum = 127


    * 1.151 / 256 = 4,496 (arredondando-se para 4)
    * 4 x 256 = 1.024
    * 1.151 - 1.024 = 127


    * Cyclic Redundancy Check (CRC) - os CRCs possuem uma concepção semelhante ao checksum, mas utilizam a divisão polinomial para determinar o valor do CRC, que geralmente é de 16 ou 32 bits. A vantagem do CRC é que ele é muito preciso. Se um único bit estiver incorreto, o valor do CRC estará correto. Tanto o checksum quanto o CRC são bons para prevenir erros esporádicos na transmissão, mas fornecem pouca proteção a um ataque intencional aos seus dados. As técnicas de criptografia de chaves simétricas e chaves públicas são muito mais seguras.

    Todos esses diferentes processos se combinam, oferecendo a você as ferramentas necessárias para assegurar que as informações que envia ou recebe pela Internet estão seguras. Na realidade, enviar informações por uma rede de computadores é normalmente muito mais seguro do que enviar de qualquer outra maneira. Os telefones, em especial os telefones sem fio, são suscetíveis a interceptação, particularmente por pessoas de mau caráter com rádio escutas. A postagem via correio tradicional e outros meios físicos freqüentemente passam por várias mãos antes de chegar ao seu destino, aumentando as chances de ser corrompida. Entender a encriptação, e simplesmente certificar-se de que todas as informações sigilosas que você envia pela Internet estão seguras (lembre-se dos "https" e do símbolo do cadeado), pode deixá-lo muito mais despreocupado.
     
LMPC