|
Criptografia
Definição:
É
o ato de alterar uma mensagem para esconder o significado desta.
Algoritmos de Criptografia:
Definição:
“É uma função matemática utilizada para cifrar e decifrar um determinado
dado.”
Os
primeiros algoritmos criptográficos desenvolvidos aplicavam uma função
matemática, repetidamente, a um dado para cifrá-lo.
Para tornar os algoritmos de criptografia mais robustos criou-se o conceito de
chave criptográfica.
Os algoritmos de criptografia podem ser utilizados para:
-
Autenticação:
garante que o emissor de uma mensagem, ou usuário, é quem clama ser.
Desta maneira evita-se que um invasor se mascare como um emissor ou
usuário válido.
-
Integridade:
garante que os dados não foram alterados durante a transmissão ou por um
outro usuário de um sistema. Desta maneira pode detectar se um arquivo ou
dado foi modificado sem a devida autorização do proprietário deste.
-
Não-repudiação:
garante que um emissor de uma mensagem não será capaz de negar que tenha
enviado uma determinada mensagem.
A segurança de um algoritmo criptográfico depende do
tamanho da chave e do algoritmo utilizado.
Tipos de algoritmos:
Utilizam uma única chave para criptografar e
decifrar os dados, como já foi dito anteriormente. São aplicados
principalmente para garantir a confidencialidade dos dados pois somente o
proprietário da chave será capaz de decifrar os dados. Por exemplo, este
poderia ser aplicado na criptografia de dados de uma base de dados,
criptografia de arquivos em um sistema com múltiplos usuários garantindo
que o dado permanecerá confidencial. Uma outra utilização seria na
criptografia de dados em um canal de comunicação, como por exemplo na
transferência de dados entre duas máquinas através da internet,
entretanto os usuários nos extremos do canal de comunicação deverão
previamente conhecer a chave privada antes de trocarem dados e neste caso a
divulgação da chave privada pode comprometer a segurança do esquema
criptográfico. Exemplos de implementações deste tipo de algoritmo: DES
(Data Encryption Standard), Blowfish, TwoFish.
Utiliza duas chaves, uma para criptografar os
dados (chamada de chave publica) e outra para decifrar os dados (chamada de
chave privada). Neste caso a chave pública é divulgada enquanto que a
chave privada permanece secreta. Esta técnica é muito utilizada para o
envio de mensagens onde se deseja que somente o destinatário, portador da
chave privada, consiga ler a mensagem. O emissor da mensagem utiliza a chave
pública para criptografar a mensagem e a envia, quando o receptor receber a
mensagem utilizará a chave privada para decifrar a mensagem. Este esquema
provê a confidencialidade dos dados e também autenticação pois somente o
proprietário da chave privada será capaz de decifrar a mensagem. Nestes
algoritmos um dado que é criptografado com uma chave só poderá ser
decifrado com a utilização da outra chave e vice-versa. Exemplos de
implementações deste tipo de algoritmo: RSA, ElGamal, DSS (Digital
Signature Standard).
"São funções que, para uma string digital de tamanho
qualquer, calculam um identificador digital confiável de tamanho fixo,
usualmente de 16 ou 20 bytes”.
Qualquer alteração da string original, por menor que seja, irá gerar uma
alteração significativa no valor do “hash” correspondente
Deve ser impossível gerar intencionalmente uma string digital, diferente da
original, que resulte no mesmo valor “hash”.
Possui a mesma função de uma
assinatura convencional, ou seja, garante a autenticidade de um documento e
também evita a repudiação pela pessoa que o assinou. Este esquema
utiliza funções hash e algoritmos de chave pública. Funciona da
seguinte maneira: o autor de uma mensagem aplica uma função hash na
mensagem e assim obtém um valor hash para esta; em seguida, criptografa
o valor hash obtido utilizando uma chave privada, adiciona-o ao documento
e o envia. O receptor da mensagem, ao recebê-la, irá fazer a validação da
assinatura digital, o que consiste em decifrar a mensagem com a sua chave
pública, obtendo assim o valor hash do documento; depois disto, basta
calcular novamente o valor hash da mensagem e compará-lo com o valor
obtido. No caso de serem idênticos, está validada a autenticidade da mensagem
e do seu emissor; caso contrário, não. Neste esquema, garante-se a integridade
da mensagem, a autenticidade e a não-repudiação da mesma. Exemplos de
implementações deste tipo de algoritmo: RSA, DSS.
São documentos digitais que
garantem que uma chave pública, relativa a uma assinatura digital, pertença a
uma determinada entidade ou pessoa.
Este certificado é emitido e revogado por uma organização chamada Autoridade
Certificadora (Certification Authority – CA) que irá associar a chave
pública à identidade de uma pessoa através de dados como: endereço,
telefone, carteira de identidade.
Os certificados podem ser os seguintes:
- certificados certificação de autoridades
- certificados de servidores
- certificados pessoais
- certificados para distribuição de software
Problemas definidos:
-
Chaves privadas não
são pessoas: as assinaturas digitais e certificados
podem ser utilizados para provar a identidade de pessoas, mas por si só
não são provas de identidade. O que se garante com estes é que uma
pessoa, organização ou programa tem acesso a uma chave privada que casa
com uma chave pública assinada por um CA. A forma de garantir a
identidade seria garantindo que as chaves fossem geradas aleatoriamente e
só fossem utilizadas pelo próprio dono. Entretanto, como as chaves
privadas são armazenadas em computadores pessoais e não existe garantia de
que uma pessoa que não o proprietário irá se apoderar da chave privada.
-
Nomes distintos não
são pessoas: mesmo garantindo a proteção da chave
privada, não se estabelece a confiança na estrutura de chave pública,
pois um certificado digital só garante que existe uma pessoa que registrou
uma chave pública em um dado CA, o que não implica que esta pessoa seja
quem declara ser. Isto se deve ao fato de não existir nenhuma garantia que
o CA não esteja falsificando certificados digitais ou sendo pouco
criteriosa na concessão destes.
-
Repetição de nomes:
existem muitos nomes iguais e, por conta disto, o certificado precisa conter
informações adicionais para poder diferenciar pessoas com nomes
idênticos. Entretanto, estas informações adicionais podem não ser do
conhecimento de uma pessoa que esteja tentando obter um certificado digital
para validar uma assinatura digital.
-
Os certificados
digitais ainda não dizem o suficiente: os
certificados digitais utilizados atualmente na Internet não possuem
informações suficientes que permitam identificar univocamente uma pessoa,
como por exemplo: foto, idade, sexo, impressões digitais. Entretanto, mesmo
que estas informações venham a estar presentes em certificados digitais
não existe nenhuma garantia de não sejam divulgadas sem o consentimento do
usuário, devido à má fé das pessoas que podem obter os certificados
digitais e também devido à possibilidade dos computadores do CA serem
invadidos e estes invasores terem acesso a estas informações.
-
Os protocolos de
certificação atuais não permitem a disponibilização seletiva de
informações: uma solução para amenizar o problema
do item anterior seria a disponibilização de informações relevantes a
uma determinada operação. Isto ajudaria a diminuir a possibilidade de
divulgação de informações não autorizadas. Entretanto, os protocolos
atuais não suportam esta funcionalidade e a única forma de se obter uma
disponibilização seletiva de informações seria utilizando diversos
certificados digitais.
-
As chaves privadas
podem ser emprestadas ou roubadas: as chaves privadas,
da mesma forma que passwords, podem ser emprestadas ou roubadas e,
conseqüentemente, utilizadas por outras pessoas que não os proprietários.
Solução futura:
Uma solução, ainda em estudo,
para a criptografia perfeita seria a criptografia quântica, descendo ao
subsolo da polarização dos fótons; mas, ao mesmo tempo, os computadores
quânticos ainda são apenas projetos.
|