Buscar

APS 2 Semestre Criptografia

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

UNIVERSIDADE PAULISTA – UNIP
CIÊNCIAS DA COMPUTAÇÃO
BRUNO OLIVEIRA DE FARIA – C085IG-4
ATIVIDADE PRÁTICA SUPERVISIONADA – APS
AS TÉCNICAS CRIPTOGRÁFICAS, CONCEITOS, USOS E APLICAÇÕES
São Paulo
2020
ÍNDICE
* OBJETIVO DO TRABALHO.....................................................................................03
* INTRODUÇÃO.........................................................................................................03
* CRIPTOGRAFIA (CONCEITOS GERAIS)...............................................................05
* TÉCNICAS CRIPTOGRÁFICAS MAIS UTILIZADAS E CONHECIDAS............................................................................................................08
* DISSERTAÇÃO.......................................................................................................13
.
* COMO ULTILIZAR O PROGRAMA.........................................................................19
* RELATÓRIO COM AS LINHAS DE CÓDIGO.........................................................20
* BIBLIOGRAFIA........................................................................................................31
“As técnicas criptográficas, conceitos, usos e aplicações”.
Objetivo do trabalho
Este trabalho tem como objetivo ampliar o nosso conhecimento sobre a criptografia, trazendo informações importantes no processo de nossa aprendizagem, contribuindo para a continuidade do curso de Ciência da Computação.
O envio e o recebimento de mensagens privadas é uma necessidade antiga e por centenas de anos foi desenvolvida. Com o surgimento da internet a criptografia foi se tornando cada vez mais fundamental para que o emissor e o receptor tenham acesso a tais informações. 
Desenvolvemos este trabalho a partir da história da criptografia, apresentando os aspectos mais importantes e seus tipos de chaves (Simétricas e Assimétricas).
Introdução.
As diferentes maneiras de garantir segurança da informação e proteger redes de computadores estão baseadas na aplicação de técnicas de criptografia.
Nos últimos anos, é possível observar um crescimento no uso de meios de comunicação, em
especial da Internet, para acessar os mais diferentes serviços dos mais distintos locais. Hoje em dia, é possível consultar extratos bancários, realizar depósitos e transferências de dinheiro, efetuar compras com cartões de créditos a partir de um computador, ou mesmo de um telefone celular conectado a Internet. Da mesma forma, em busca de agilidade e de economia, as empresas utilizam a Internet como uma ferramenta fundamental para o envio e recebimento de informações, comunicação entre filiais etc. A consequência imediata disso é que, cada vez mais, informações sensíveis e confidencias são armazenadas em computadores e transmitidas pela Internet, o que os torna alvo em potencial para uma nova modalidade de crime, o cibernético.
A segurança de computadores surge então como uma necessidade no mundo atual da Internet, tratando de prevenir o acesso não-autorizado a recursos e informações mantidos em computadores. Além desse aspecto, a segurança de computadores se preocupa em manter a integridade das informações e dos sistemas computacionais e de sua disponibilidade para acessos autorizados a qualquer momento. Um incidente de segurança, comumente denominado de ataque, é qualquer tipo de ação que vise a afetar a correta operação de um sistema de computação pela alteração de seu funcionamento, dos dados que possui, ou por acessos indevidos a recursos e aos próprios dados do sistema. Os ataques são classificados em dois grandes grupos: passivos e ativos. Um ataque passivo é aquele em que se deseja obter um acesso 
indevido a uma informação, mas que não afeta o funcionamento do sistema como um todo. Já o objetivo principal de um ataque ativo é alterar ou prejudicar o funcionamento normal do sistema.
Em ambientes de redes de computadores, um ataque passivo é tipicamente
realizado pela observação ou monitoração das transmissões de dados. Com base nas informações capturadas pode-se ter acesso a informações não-autorizadas como, por exemplo, senhas de acesso. De posse dessas senhas, é possível executar uma série de ações indevidas, como mandar e-mails se passando por certa pessoa, acessar indevidamente um computador ou mesmo realizar ações criminosas, como acessar uma conta bancária alheia. Como exemplo de ataques ativos pode-se citar vírus e vermes, que são códigos executáveis que podem corromper arquivos, controlar aplicações, instalar bombas lógicas, cavalos de tróia ou programas backdoor. 
A área de segurança tornou-se um ponto fundamental em redes de computadores em nossa atualidade. Pelo amplo aspecto dos problemas de segurança, diz-se que eles são alvos de estudo e implementação do que genericamente se denomina segurança da informação.
A segurança da informação deve garantir quatro propriedades: confidencialidade, integridade, disponibilidade e autenticidade. A confidencialidade implica que uma informação só pode ser acessada por quem detém um determinado nível de privilégio ou autorização. A propriedade da integridade significa que uma informação só pode ser modificada por quem tem a devida autorização para fazê-lo, isto é, deve-se prover a capacidade de garantir que uma informação não seja modificada por terceiros não-autorizados. Por modificação, neste caso, entende-se a troca ou alteração de valores, remoção, escrita de novos valores ou a criação de novos campos. Uma informação deve estar disponível sempre que uma parte autorizada necessitar consultá-la. Essa é a propriedade de disponibilidade, a qual implica a definição de mecanismos alternativos de armazenamento ou de acesso à informação, e a proteção física e lógica dolocal de armazenamento para que a informação esteja disponível sempre que necessário. Por último, a propriedade de autenticidade visa a garantir que as partes envolvidas sejam realmente quem elas dizem ser, ou seja, é preciso garantir a identificação das partes.
A criptografia é a técnica que permite a obtenção das propriedades de confidencialidade, integridade e autenticidade. A disponibilidade é normalmente garantida pela proteção dos recursos que mantém a informação pela combinação de várias técnicas, entre elas a própria criptografia, cópias de segurança (backups), servidores e rotas redundantes, firewall, proxies etc.
Criptografia (conceitos gerais).
A criptografia é o conceito fundamental empregado em segurança de redes de computadores para prover confidencialidade, autenticidade e integridade das informações. Na realidade, a criptografia por si só é uma ciência bastante complexa, fundamentada em conhecimentos de matemática, e que tem sido utilizada pela humanidade há muitos séculos.
A palavra criptografia vem do grego e significa escrito (graphos) secreta (crypto), o que denota a sua origem: registrar uma informação utilizando uma serie de regras e convenções de tal forma que, sem o conhecimento dessas, é impossível de compreender a informação. Essencialmente, esse procedimento é realizado tomando-se a mensagem original, denominada de texto em claro (plaintext, em inglês) e, a partir da aplicação de um conjunto de regras, transformá-la em um texto codificado ou cifrado (ciphertext, em inglês). Essa transformação corresponde à etapa de encriptação. 
A mensagem cifrada é então enviada até o seu destino passando por um meio não-confiável. O destino, de posse das regras de transformação, realiza a operação contrária, a decriptação do texto cifrado, obtendoassim a mensagem original. Lembrando sua aplicação original de muitos séculos atrás, se uma mensagem cifrada caísse em mãos inimigas ou chegasse a pessoas não-autorizadas, essas não teriam acesso à informação por desconhecerem as regras utilizadas na transformação. 
A utilização da criptografia para garantir a confidencialidade de uma informação pode ser decomposta em três elementos básicos, além da própria informação: método de encriptar, método de decriptar e chave. Os métodos utilizadospara encriptar e para decriptar são comumente denominados de algoritmos de cifragem e decifração. O algoritmo de cifragem recebe como dados de entrada uma chave de cifragem e a informação (texto em claro) a ser cifrada e fornece como saída o texto cifrado. O algoritmo de decifração, por sua vez, recebe como entrada uma chave de decifração e o texto cifrado e obtém a informação.
Na prática, os algoritmos de cifragem e de decifração são de conhecimento público.
A garantia da confidencialidade da informação reside no conhecimento da chave
de cifragem e decifração, ou seja, é o conhecimento dessas chaves o segredo a ser protegido. É justamente em função da chave de cifragem que os métodos de criptografia são classificados em duas categorias: chave simétrica e chave assimétrica. Outro ponto importante é o algoritmo ou função, empregado na cifragem e decifração do texto codificado. 
História
Antigamente, a cifragem era utilizada na troca de mensagens, sobretudo em assuntos ligados à guerra (no intuito de o inimigo não descobrir a estratégia do emissor da mensagem, caso se apoderasse dela), ao amor (para que os segredos amorosos não fossem descobertos pelos familiares) e à diplomacia (para que facções rivais não estragassem os planos de acordos diplomáticos entre nações). Oprimeiro uso documentado da criptografia foi em torno de 1900 a.c., no Egito, quando um escriba usou hieróglifos fora do padrão numa inscrição.
Entre 600 a.c. e 500 a.c., os hebreus utilizavam a cifra de substituição simples (de fácil reversão e fazendo uso de cifragem dupla para obter o texto original), sendo monoalfabético e monogrâmica (os caracteres são trocados um a um por outros), e com ela escreveram o Livro de Jeremias.
O chamado "Codificador de Júlio César" ou "Cifra de César" que apresentava uma das técnicas mais clássicas de criptografia, é um exemplo de substituição que, simplesmente, substitui as letras do alfabeto avançando três casas. O autor da cifragem trocava cada letra por outra situada a três posições à frente no alfabeto. Segundo o autor, esse algoritmo foi responsável por enganar muitos inimigos do Império Romano; no entanto, após ter sido descoberta a chave, como todas, perdeu sua funcionalidade.
Em 1586, destacam-se os estudos de Blaise de Vigenère que constituíram um método muito interessante; é a cifra de Vigenère que utiliza a substituição de letras. Tal processo consiste na seqüência de várias cifras (como as de César) com diferentes valores de deslocamento alfanumérico. A partir desse período, Renascença, a criptologia começou a ser seriamente estudada no Ocidente e, assim, diversas técnicas foram utilizadas e os antigos códigos monoalfabéticos foram, aos poucos, sendo substituídos por polialfabéticos.
Dos anos 700 a 1200, são relatados incríveis estudos estatísticos, em que se destacam expoentes como al-Khalil, al-Kindi, Ibn Dunainir e Ibn Adlan, que marcaram sua época. Na Idade Média, a civilização árabe-islâmica contribuiu muito para os processos criptográficos, sobretudo quanto à criptoanálise (análise dacodificação, a procura de padrões que identificassem mensagens camufladas por códigos).
Na Idade Moderna, merecem destaque o holandês Kerckhoff e o alemão Kasiski. Modernamente, em 1918, Arthur Scherbius desenvolveu uma máquina de criptografia chamada Enigma, utilizada amplamente pela marinha de guerra alemã em 1926, como a principal forma de comunicação.
Em 1928, o exército alemão construiu uma versão conhecida como "Enigma G", que tinha como garantidor de segurança a troca periódica mensal de suas chaves. Essa máquina tinha como diferencial ser elétrico-mecânica, funcionando com três (inicialmente) a oito rotores. Aparentava ser uma máquina de escrever, mas quando o usuário pressionava uma tecla, o rotor da esquerda avançava uma posição, provocando a rotação dos demais rotores à direita, sendo que esse movimento dos rotores gerava diferentes combinações de encriptação.
Assim, a codificação da mensagem pelas máquinas "Enigma" era de muito difícil decodificação, uma vez que, para isso, era necessário ter outra máquina dessas e saber qual a chave (esquema) utilizada para realizar a codificação.
A Colossus surgiu do esforço de engenharia reversa das forças aliadas em decriptar as mensagens da marinha e do exército alemão, só logrando efetivo êxito após se ter conseguido uma máquina Enigma alemã (furtada). Tais equipamentos foram, inicialmente, desenvolvidos como máquinas de decriptação, mas depois passaram a codificar mensagens das forças aliadas.
Depois, surgiram outras máquinas fisicamente semelhantes à Enigma (pareciam com antigas máquinas de escrever), porém foram aperfeiçoadas de forma a dificultar o mais possível a decriptação por quem não as possuísse.
Devido aos esforços de guerra, a criptografia passou a ser largamente utilizada. Em1948, Claude Elwood Shannon desenvolveu a Teoria Matemática da Comunicação, que permitiu grandes desenvolvimentos nos padrões de criptografia e na criptoanálise.
Durante a chamada "Guerra Fria", entre Estados Unidos e União Soviética, foram criados e utilizados diversos métodos a fim de esconder mensagens a respeito de estratégias e operações, criptografadas com diferentes métodos e chaves.
Além dos avanços da criptografia, a criptoanálise se desenvolveu muito com os esforços de se descobrir padrões e chaves, além da diversidade dos canais de propagação das mensagens criptografadas. Desses esforços, surgiram diversos tipos de criptografia, tais como por chave simétrica, por chave assimétrica, por hash e até a chamada criptografia quântica, que se encontra, hoje, em desenvolvimento.
Atualmente, a criptografia é amplamente utilizada na WEB, em segurança a fim de autenticar os usuários para lhes fornecer acesso, na proteção de transações financeiras e em comunicação.
Técnicas criptográficas mais utilizadas e conhecidas
Criptografia de Chave Simétrica
Criptografia digital já era usada secretamente desde 1949 por militares e governos. Em meados da década de 1970 a IBM inventou o padrão DES (Data Encription Standard) de criptografia, que passou a ser largamente utilizado até os dias de hoje. A partir daí tudo mudou.
Como exemplo de seu funcionamento, se a Paula quer enviar uma mensagem secreta para Tatiana, ela deve fazer isso:·.
Mensagem + ChaveSimétrica = MensagemCriptografada
Então MensagemCriptografada é enviada para Tatiana por uma rede aberta, que para lê-la terá que fazer o seguinte:
MensagemCriptografada + ChaveSimétrica = Mensagem
Uma analogia a essas equações seria como se ambas trocassem caixas que abrem e fecham com uma chave (achave simétrica), que contém cartas secretas. Para a Tatiana abrir a caixa da Paula, terá que usar uma cópia da chave que a última usou para fechá-la.
O que representamos pela soma (+) é na verdade o algoritmo de cifragem (ou o mecanismo da fechadura) que criptografa e descriptografa a mensagem. Hoje em dia, esses algoritmos tem geralmente seu código fonte aberto, e isso ajudou-os a se tornarem mais seguros ainda, pois foram limpos e revisados ao longo dos anos por muitas pessoas ao redor do mundo.
A Chave Simétrica é uma seqüencia de bits e é ela que define o nível de segurança da comunicação. Ela deve ser sempre secreta. Chama-se simétrica porque todos os interessados em se comunicar devem ter uma cópia da mesma chave.
O DES com chave de 56 bits pode ser quebrado (MensagemCriptografada pode ser lida sem se conhecer a chave), e outros cifradores de chave simétrica (symmetric-key, ou private-key) mais modernos surgiram, como 3DES, AES, IDEA, etc.
O maior problema da criptografia de chave simétrica é como o remetente envia a chave secreta ao destinatário através de uma rede aberta (e teoricamente insegura). Se um intruso descobri-la, poderá ler todas as mensagens trocadas. Mais ainda, comprometerá a comunicação entre todo o conjunto de pessoas que confiavam nessa chave.
Criptografia de Chave Pública
Esses problemas foram eliminados em 1976 quando Whitfield Diffie e Martin Hellman trouxeram a tona os conceitos da criptografia de chave públicatambém conhecida por criptografia por par de chaves ou de chave assimétrica. Trata-se de uma revolução no campo das comunicações, tão radical quanto é o motor a combustão para o campo de transportes. Eles descobriram fórmulas matemáticas que permitem que cada usuário tenha um par de chaves de criptografia matematicamenterelacionadas, uma privada e outra pública, sendo a última, como o próprio nome diz, publicamente disponível para qualquer pessoa. Essas fórmulas têm a impressionante característica de o que for criptografado com uma chave, só pode ser descriptografado com seu par. Então, no nosso exemplo, Paula agora enviaria uma mensagem para Tatiana da seguinte maneira:
Mensagem + ChavePública(Tatiana) = MensagemCriptografada
E Tatiana leria a mensagem assim:
MensagemCriptografada + ChavePrivada(Tatiana) = Mensagem
E Tatiana responderia para Paula da mesma forma:
Resposta + ChavePública(Paula) = RespostaCriptografada
Ou seja, uma mensagem criptografada com a chave pública de uma, só pode ser descriptografada com a chave privada da mesma, então a primeira pode ser livremente disponibilizada na Internet. E se a chave privada da Paula for roubada, somente as mensagens para a Paula estariam comprometidas.
O cifrador de chave pública tido como mais confiável é o RSA (iniciais de Rivest, Shamir e Adleman, seus criadores).
Criptografia assimétrica permitiu ainda outras inovações revolucionárias: se Tatiana quer publicar um documento e garantir sua autenticidade, pode fazer:
Documento + ChavePrivada(Tatiana) = DocumentoCriptografado
Se um leitor conseguir descriptografar este documento com a chave pública da Tatiana significa que ele foi criptografado com a chave privada da Tatiana, que somente ela tem a posse, o que significa que somente a Tatiana poderia te-lo publicado. Nasce assim a assinatura digital.
Infraestrutura para Chaves Públicas
O PGP (Pretty Good Privacy) foi o primeiro sistema de segurança que ofereceu criptografia de chave pública e assinatura digital de qualidade para as massas. Ficou tão popular que virou o padrão OpenPGP e posteriormente recebeu váriasimplementações livres. É largamente usado até hoje, principalmente em troca de e-mails. Sua popularização exigiu que houvesse uma forma para as pessoas 
encontrarem as chaves públicas de outras pessoas, que muitas vezes nem eram conhecidas pelas primeiras. No começo dos tempos do PGP, haviam sites onde as pessoas publicavam suas chaves públicas para as outras encontrarem. Talvez esta foi a forma mais rudimentar de PKI ou Public Key Infrastructure. PKI é um conjunto de ferramentas que uma comunidade usa justamente para a classificação, busca e integridade de suas chaves públicas. É um conjunto de ideias e não um padrão nem um produto. Conceitos de PKI estão hoje totalmente integrados em produtos de colaboração como o Lotus Notes da IBM, e seu uso são transparentes ao usuário.
Certificados Digitais
Como Tatiana pode ter certeza que a chave pública de Paula que ela tem em mãos, e que está prestes a usar para enviar uma mensagem segura, é realmente de Paula? Outra pessoa, agindo de má fé, pode ter criado uma chave aleatória e publicando-a como sendo da Paula. Podemos colocar isso de outra forma: como posso ter certeza que estou acessando realmente o site de meu banco e não um site impostor que quer roubar minha senha, e meu dinheiro? Não gostaria de confiar em meus olhos só porque o site realmente se parece com o de meu banco. Haveria alguma forma mais confiável para garantir isso ?
Em 1996, a Netscape, fabricante do famoso browser, atacou este problema juntando o que havia de melhor em criptografia de chave pública, PKI (através do padrão X.509), mais parcerias com entidades confiáveis, e inventou o protocolo SSL (Secure Socket Layer ou TLS, seu sucessor), e foi graças a este passo que a Internet tomou um rumo de plataforma comercialmente viável para negócios, e mudou o mundo.
Para eu mandar minha senha com segurança ao site do banco, e poder movimentar minha conta, o site precisa primeiro me enviar sua chave pública, que vem assinada digitalmente por uma outra instituição de grande credibilidade. Em linhas gerais, os fabricantes de browsers (Mozilla, Microsoft, etc) instalam em seus produtos, na fábrica, os certificados digitais dessas entidades, que são usadas para verificar a autenticidade da chave pública e identidade do site do banco. Este, por sua vez, teve que passar por um processo burocrático junto a essa entidade certificadora, provando ser quem diz ser, para obter o certificado.
O SSL descomplicou essa malha de credibilidade, reduzindo o número de instituições em quem podemos confiar, distribuindo essa confiança por todos os sites que adquirirem um certificado SSL.
Na prática, funciona assim:
1. Acesso pela primeira vez o site de uma empresa que parece ser idônea.
2. Ele pede o número de meu cartão de crédito.
3. Se meu browser não reclamou da segurança desse site, posso confiar nele porque...
4....o site usa um certificado emitido por uma entidade que eu confio.
Pode-se verificar os certificados que o fabricante do browser instalou, acessando suas configurações de segurança. Você vai encontrar lá entidades como VeriSign, Thawte, Equifax, GeoTrust, Visa, entre outros.
Segurança Real da Criptografia
Quanto maior for a chave de criptografia (número de bits) mais difícil é atacar um sistema criptográfico. Outros fatores influenciam na segurança, como a cultura em torno de manter bem guardadas as chaves privadas, qualidade dos algoritmos do cifrador, etc. Este último aspecto é muito importante, e tem se estabilizado num bom nível alto, porque esses algoritmos tem sido produzidos num modelo de softwarelivre, o que permite várias boas mentes auditá-los e corrigir falhas ou métodos matemáticos ruins.
A segurança real de qualquer esquema de criptografia não foi comprovada. Significa que, teoricamente, qualquer um que tiver muito recurso computacional disponível pode usá-lo para quebrar uma mensagem criptografada. Teoricamente. Porque estaríamos falando de centenas de computadores interconectados trabalhando para esse fim. Na prática, hoje isso é intangível, e basta usar bons produtos de criptografia (de preferência os baseados em software livre), com boas práticas de administração, e teremos criptografia realmente segura a nossa disposição.
Dissertação
Criptografia de chave simétrica
A criptografia simétrica é caracterizada por utilizar uma única chave para os procedimentos de cifragem e decifração; ou seja, elas são idênticas. Nesse caso, o remetente e o destinatário devem possuir a mesma chave, ou seja, seu conhecimento é compartilhado e deve ser mantido em segredo por ambos. Devido a essa característica, esse método também é denominado de criptografia de chave secreta. Tipicamente, a função de decifração é a função inversa da cifragem; por exemplo, se a cifragem é feita multiplicando-se a informação por um valor (chave), a decifração é feita dividindo-se o texto cifrado por esse mesmo valor.
Os algoritmos de chave simétrica são geralmente menos custosos computacionalmente do que os algoritmos de chave assimétrica. Na prática, isto significa que um algoritmo de chave assimétrica de qualidade pode ser centenas ou milhares de vezes mais lento do que um algoritmo de chave simétrica de qualidade equivalente.
Este sistema é tanto ou mais seguro quanto o for a própria chave e o meio em que ela foi dada a conhecer a ambos interlocutores — é comum a chaveestar guardada num local que se “pensa” ser seguro.
Umas das principais aplicações e sistemas que a utilizam são:
- DES (Data Encryption Standard): criado pela IBM em 1977, DES é tipo de cifra em bloco, ou seja, um algoritmo que toma uma string de tamanho fixo de um texto plano e a transforma, através de uma série de complicadas operações, em um texto cifrado de mesmo tamanho. No caso do DES, o tamanho do bloco é 64 bits. DES também usa uma chave para personalizar a transformação, de modo que a descriptografia somente seria possível, teoricamente, por aqueles que conhecem a chave particularutilizada para criptografar. A chave consiste nominalmente de 64 bits, porém somente 56 deles. 
São realmente utilizados pelo algoritmo. Os oito bits restantes são utilizados para verificar a paridade e depois são descartados, portanto o tamanho efetivo da chave é de 56 bits, e assim é citado o tamanho de sua chave. Isso corresponde a 72 quartilhoes de combinações. É um valor absurdamente alto, mas não para um computador potente. Em 1997, esse algoritmo foi quebrado por técnicas de "força bruta" (tentativa e erro) em um desafio promovido na internet.
- IDEA (International Data Encryption Algorithm): criado em 1991 por James Massey e Xuejia Lai, o IDEA é um algoritmo que faz uso de chaves de 128 bits e que tem uma estrutura semelhante ao DES. Sua implementação em software é mais fácil do que a implementação deste último;
Como uma cifra de bloco, também é simétrica. O algoritmo foi concebido como um substituto para o Data Encryption Standard (DES). IDEA é uma pequena revisão de uma cifra anterior, PES (Proposta Encryption Standard); idéia era originalmente chamado IPES (Improved PES).
A cifra foi concebida no âmbito de um contrato de investigação com a FundaçãoHasler, que se tornou parte da Ascom-Tech AG. A cifra é patenteada em vários países, mas está disponível gratuitamente para uso não-comercial. O nome "IDEA" também é uma marca registrada. As patentes expiram em 2010-2011. Hoje, a IDEA é licenciada em todos os países onde é patenteada pela MediaCrypt. IDEA foi utilizado em Pretty Good Privacy (PGP) v2.0, e foi incorporada após a cifra original utilizada na v1.0, BassOmatic, mostrar-se insegura. IDEA é um algoritmo opcional no padrão OpenPGP.
O algoritmo é usado tanto para a cifragem quanto para a decifração e, como outras cifras de bloco, usa a confusão e a difusão para produzir o texto cifrado. A filosofia que norteou este projeto foi "misturar operações de grupos algébricos diferentes".··.
- RC (Ron's Code ou Rivest Cipher): criado por Ron Rivest na empresa RSA Data Security, esse algoritmo é muito utilizado em e-mails e faz uso de chaves que vão de 8 a 1024 bits. Possui várias versões: RC2, RC4, RC5 e RC6. Essencialmente, cada versão difere da outra por trabalhar com chaves maiores.
-AES(Advanced Encryption Standard (AES ou Padrão de Criptografia Avançada, em português): o também conhecido por Rijndael, é uma cifra de bloco adotada como padrão de criptografia pelo governo dos Estados Unidos. Espera-se que seja utilizado em todo o mundo e analisada extensivamente, assim como foi seu predecessor, o Data Encryption Standard (DES). O AES foi anunciado pelo NIST (Instituto Nacional de Padrões e Tecnologia dos EUA) como U.S. FIPS PUB (FIPS 197) em 26 de Novembro de 2001, depois de 5 anos de um processo de padronização. Tornou-se um padrão efetivo em 26 de Maio de 2002. Em 2006, o AES já é um dos algoritmos mais populares usados para criptografia de chave simétrica.
Nota-se que o processo decriptografia por chave assimétrica é muito mais complexo do que o processo por chaves simétricas de forma que aquele requer muito maior poder computacional e maior tempo para cifragem/decifragem. 
A criptografia assimétrica é caracterizada por empregar para a cifragem e a decifração duas chaves distintas: uma chave pública e uma chave privada (secreta). Essa característica é a origem do termo assimétrico desse método, já que uma chave é usada para cifrar e outra chave distinta para decifrar. Assim, utilizando criptografia de chave assimétrica, cada parte envolvida na troca de informação deve ter seu próprio par de chaves pública e privada, que são geradas de tal forma que uma informação cifrada com a chave pública só pode ser decifrada com a chave privada correspondente e, similarmente, uma informação cifrada com a chave privada só é decifrada pela chave pública associada.
O algoritmo de chave pública normalmente empregado é aquele definido em 1997 pelos pesquisadores Ron Rivest, Adi Shamir e Leonard Adleman, mais comumente conhecido por RSA. No RSA, as chaves pública e privada são definidas por dois pares de números e são relacionadas por uma função matemática baseada na fatoração desses números.
Na criptografia assimétrica, cada parte envolvida na troca de informações deve possuir seu próprio par de chaves. A chave pública, como seu próprio nome indica, é de conhecimento geral, sendo livremente distribuída e divulgada. A chave privada, por sua vez é conhecida apenas pelo seu proprietário. Essa característica resulta em duas vantagens em relação à criptografia simétrica. A primeira vantagem é a redução da quantidade de chaves necessárias para n partes comunicarem entre si, já que cada parte utiliza seu par de chaves independentemente de quem é seucorrespondente. A segunda vantagem é em relação à divulgação e conhecimento das chaves entre as partes envolvidas. Por definição, a chave privada não é divulgada nem conhecida pelos demais; já a chave pública, justamente por ser pública, é livremente distribuída.
A criptografia de chave pública, no entanto, também apresenta desvantagens. A primeira delas, e a mais importante, é que a chave pública e a chave privada são matematicamente relacionadas de forma a prover a característica de que o que é cifrado por uma é decifrado apenas pela outra. Ainda, a partir do conhecimento de uma delas (a chave pública), deve ser praticamente inviável descobrir a outra (a chave privada). Esses dois pontos levam a uma complexidade bastante grande em seu algoritmo, o que, por sua vez, representa um custo computacional importante nos procedimentos de cifragem e decifração de uma informação. Na prática, isso se traduz em evitar o uso de criptografia assimétrica para grandes quantidades de informação.
A segunda desvantagem da criptografia de chave pública é garantir que uma chave pública realmente pertence ao correspondente com o qual se deseja comunicar. Essa preocupação é oriunda do fato que alguém mal-intencionado poderia se passar por um dos pares de uma comunicação.··.
Com relação a segurança nota-se que no método por criptografia simétrica há um risco muito grande de a sua chave ser descoberta no momento em que você a estiver informando para o destinatário da mensagem, o que não ocorre com a criptografia por chave assimétrica. Devido ao custo computacional ser grande demais ao usar chaves assimétricas, há alguns algoritmos que utilizam-se deste método de criptografia apenas para enviar uma chave simétrica para o cliente no início da comunicação e a partir daí toda comunicação será feita apenas com a cifragem por chave simétrica.
Se tivermos que escolher entre criptografia simétrica e assimétrica devemos escolher utilizar as duas, em um modelo denominado híbrido de forma a aproveitar a agilidade do algoritmo simétrico para crifrar a mensagem em si e também a segurança  do algoritmo assimétrico, embora lento, para implementar a distribuição de chaves.
A vantagem da criptografia de chave simétrica é a sua simplicidade, o que reduz sua complexidade computacional para as operações de cifragem e decifração, embora ela apresente duas desvantagens importantes. A primeira é 
que o remetente e o destinatário devem conhecer a chave secreta, o que 
implica um problema: como divulgar o valor da chave entre os interessados sem comprometer seu sigilo. Por exemplo, imagine que em uma repartição, ou em um departamento, existam dez pessoas que trocam informações sigilosas entre si. Ou existe uma chave única que é de conhecimento de todas as dez pessoas – o que certamente não contribui para que ela seja realmente secreta – ou é necessário haver uma chave para cada par de usuários. Essa segunda hipótese implica a existência de n*(n-1)/2 chaves para n usuários, o que , para o exemplo em questão, resulta em 45 chaves (n=10). A segunda desvantagem é praticamente uma conseqüência da primeira: a maneira de gerenciar e compartilhar as chaves para cada par de usuários garantindo seu segredo dos demais, considerando-se ainda, potencialmente, uma quantidade importante de chaves.
A desvantagem dos algoritmosde chave simétrica é a exigência de uma chave secreta compartilhada, com uma cópia em cada extremidade. As chaves estão sujeitas à descoberta potencial por um adversário criptográfico, por isso necessitam ser mudadas freqüentemente e mantidas seguras durante adistribuição e no serviço. 
Essa exigência de escolher, distribuir e armazenar chaves sem erro e sem perda, é conhecida como “gerenciamento de chave”.
A fim de garantir a comunicação segura entre toda uma população de n pessoas, um total de chaves são necessárias. Freqüentemente os algoritmos assimétricos são muito mais lentos, são usados no início de uma sessão para distribuir chaves simétricas, então os algoritmos de chave simétrica mais elevados aumentam sua velocidade. Os mesmos problemas de distribuição de chave de confiança existem ainda no nível assimétrico, mas são um tanto mais tratáveis. Entretanto, a chave simétrica é gerada quase sempre em tempo real. Os algoritmos de chave simétrica não podem ser usados para finalidades de autenticação. Para finalidades de autenticação, geralmente são usadas funções de hash, por exemplo MD5.
Como utilizar o programa :
1 criar uma pasta chamada cript no diretorio c: 
2 dentro desta pasta criar 3 pastas chamadas arquivos_gerados, arquivos_recebidos ,arquivos_originais .
3 abrindo o executável , tem as opções
Menu principal , 
1 para criptografar ,2 receber arquivos ou descriptografar,3 sair 
1.menu, para criptografar digite a opção 1, escreva o texto a ser criptografado ou opção 2 para pegar um aquivo de texto já pronto ,3 para voltar ao menu principal,
1.1 menu após escrever o texto aperte enter, o texto sera criptografado , e ira para a pasta arquivos_gerados
Caso queira descriptografar copie o aquivo gerado 
2 menu para descriptografar digite a opção 2 e aperte enter , copie o arquivo da pasta arquivo gerado , aperte enter e cole na pasta arquivos recebidos que ira abrir , após aperte enter e o arquivo será descriptografado 
Relatorio com as linhas do codigo 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Configuração da Chave para criptografia
char CHAVE[]="AbCd";
int TAM_CHAVE=strlen(CHAVE);
//----------------------------------------
// Vetor de entrada do texto a ser criptografado
char TEXTO[100000];
int TAM_TEXTO=100000;
//----------------------------------------------
int TEXTO_CRIPT[100000];
bool Criptografar(){
 int CHAVE_int;
 for(int i=0; i< strlen(TEXTO) ; i++){
 TEXTO_CRIPT[i]=TEXTO[i];
 }
//printf("\n -- %d -- \n",TEXTO_CRIPT[9]);
 for(int aux=0; aux < strlen(TEXTO) ; ){
 for(int i=0;i<TAM_CHAVE; i++){
 //TEXTO_CRIPT[aux] = TEXTO_CRIPT[aux] * CHAVE[i];
 CHAVE_int = CHAVE[i];
 TEXTO_CRIPT[aux] *= CHAVE_int;
 aux++;
 }
 }
//printf("\n -- %d -- \n",TEXTO_CRIPT[9]);
return true;
}
bool Descriptografar(){
 FILE *arquivo;
 int valor;
 int pos_chave;
int pos_texto;
 arquivo = fopen("c:\\cript\\arquivos_recebidos\\criptografado.txt","r");
 if(arquivo==NULL){
 return false;
 }
 pos_chave=0;
 pos_texto=0;
 while(!feof(arquivo)){
 fscanf(arquivo,"%d",&valor);
 valor /= CHAVE[pos_chave];
 //valor = valor / CHAVE[pos_chave];
 TEXTO[pos_texto] = (char)valor;
 pos_texto++;
 if(pos_chave==TAM_CHAVE-1){
 pos_chave=0;
 }else{
 pos_chave++;
 }
 }
 fclose(arquivo);
 return true;
}
// ----------------------------------------- Menus
void Recebe_texto(char tipo[]){
 char aux[TAM_TEXTO];
 char pause;
 bool ok;
 FILE *arquivo;
 char palavra[100];
 if(strcmp(tipo,"msg")==0){
 printf("\n\nReceber texto para criptografar");
 printf("\n\nDigite o texto: ");
 gets(aux);
 if( strlen(aux) <= TAM_TEXTO){
 strcpy(TEXTO,aux);
 printf("\n\nTexto recebido com sucesso!");
 printf("\n\nCriptografando texto...\n\n");
 ok=true;
 }else{
 printf("\n\nErro!\nTamanho do texto excede o limite de caracteres\n\n");
 ok=false;
 system("pause");
 }
 }else if(strcmp(tipo,"arquivo")==0){
 printf("\n\nInstrucoes para importar um arquivo de texto:");
 printf("\n\n 1 - Renomeie o arquivo para 'original.txt'");
 printf("\n\n 2 - Copie o arquivo para a pasta que sera aberta a seguir");
 printf("\n\n 3 - Feche o explorador e retorne a aplicacao");
 printf("\n\n\n Pressione Enter para abrir a pasta");
 scanf("%c",&pause);
 setbuf(stdin,NULL);
 system("explorer c:\\cript\\arquivos_originais\\");
 printf("\n\nPressione enter apos colar o arquivo na pasta...\n");
 scanf("%c",&pause);
 setbuf(stdin,NULL);
 printf("\n\nImportando arquivo...\n\n");
 arquivo = fopen("c:\\cript\\arquivos_originais\\original.txt","r");
 if(arquivo==NULL){
 printf("\n\nErro ao abrir o arquivo...\n\n");
 }else{
 while(!feof(arquivo)){
 fscanf(arquivo,"%s",palavra);
 strcat(aux," ");
 strcat(aux,palavra);
 }
 fclose(arquivo);
 if( strlen(aux) <= TAM_TEXTO){
 strcpy(TEXTO,aux);
 printf("\n\nTexto recebido com sucesso!");
 printf("\n\nCriptografando texto...\n\n");
 ok=true;
 }else{
 printf("\n\nErro!\nTamanho do texto excede o limite de caracteres\n\n");
 ok=false;
 system("pause");
 }
 }
 }else{
 printf("\n\nErro ao receber texto\n\n");
 }
 if(ok){
 if(Criptografar()){
 printf("\n\nTexto criptografado com sucesso!");
 arquivo = fopen("c:\\cript\\arquivos_gerados\\criptografado.txt","wt");
 if(arquivo==NULL){
 printf("\n\nErro ao criar o arquivo...\n\n");
 }else{
 for(int i=0; i < strlen(TEXTO); i++){
 fprintf(arquivo,"%d ",TEXTO_CRIPT[i]);
 }
 }
 fclose(arquivo);
 printf("\n\nPressione enter para abrir a pasta do arquivo gerado!\n");
 scanf("%c",&pause);
 setbuf(stdin,NULL);
 system("explorer c:\\cript\\arquivos_gerados\\");
 }else{
 printf("\n\nNao foi possivel criptografar o texto!\n\n");
 }
 }
}
void Receber_Arquivo_cript(){
 char pause;
 printf("\n\nInstrucoes para importar um arquivo criptografado:");
 printf("\n\n 1 - Renomeie o arquivo para 'criptografado.txt'");
 printf("\n\n 2 - Copie o arquivo para a pasta que sera aberta a seguir");
 printf("\n\n 3 - Feche o explorador e retorne a aplicacao");
 printf("\n\n\n Pressione Enter para abrir a pasta");
 scanf("%c",&pause);
 setbuf(stdin,NULL);
 system("explorer c:\\cript\\arquivos_recebidos\\");
 printf("\n\nPressione enter apos colar o arquivo na pasta...\n");
 scanf("%c",&pause);
 setbuf(stdin,NULL);
 printf("\n\nImportando arquivo...\n\n");
 if( Descriptografar() ){
 printf("\n Arquivo descriptografado com sucesso!\n");
 system("pause");
 system("cls");
 printf("\n%s\n\n",TEXTO);
 system("pause");
 }else{
 printf("\n Nao foi possivel descriptografar o arquivo!\n\n");
 system("pause");
 }
}
void Menu_Criptografar(){
 int opcao;
 printf("\n\tCriptografia de dados");
 printf("\n\n Criptografar texto ou arquivo");
 printf("\n\n\n 1 - Digitar texto");
 printf("\n\n 2 - Importar arquivo de texto (txt)");
 printf("\n\n 3 - Voltar ao menu principal");
 printf("\n\n Informe a opcao desejada: ");
 scanf("%d",&opcao);
 setbuf(stdin,NULL);
 switch(opcao){
 case 1:
 system("cls");
 Recebe_texto("msg");
 break;
 case 2:
 system("cls");
 Recebe_texto("arquivo");
 break;
 case 3:
 break;
 default:
 printf("Opcao invalida! Tentenovamente...");
 }
}
void Menu(){
 int opcao;
 while(1){
 system("cls");
 printf("\n\tCriptografia de dados");
 printf("\n\n 1 - Criptografar texto ou arquivo");
 printf("\n\n 2 - Receber arquivo");
 printf("\n\n 3 - Sair");
 printf("\n\n Informe a opcao desejada: ");
 scanf("%d",&opcao);
 setbuf(stdin,NULL);
 switch(opcao){
 case 1:
 system("cls");
 Menu_Criptografar();
 break;
 case 2:
 system("cls");
 Receber_Arquivo_cript();
 break;
 case 3:
 printf("\nFinalizando...\n\n");
 system("pause");
 exit(0);
 break;
 default:
 printf("Opcao invalida! Tente novamente...");
 }
 }
}
//-----------------------------------------------
int main(){
 Menu();
 return 0;
}
BIBLIOGRAFIA
CRIPTOGRAFIA CONCEITOS GERAIS
* http://pt.wikipedia.org/wiki/Criptografia
autor avi alkalay-
* http://avi.alkalay.net/articlefiles/criptografia/cripto.pdf
TÉCNICAS CRIPTOGRÁFICAS MAIS UTILIZADAS E CONHECIDAS
*http://www.frameworkpinhao.pr.gov.br/arquivos/File/Apostila_Certificacao_Digital_TEC.pdf
* http://www.iti.gov.br/twiki/pub/Certificacao/CartilhasCd/brochura01.pdf
* http://www.infowester.com/criptografia.php
* http://pedrogalvaojunior.wordpress.com/2007/11/16/diferencas-entre-chaves-simetrica-e-assimetrica-para-criptografia/
* http://blog.welrbraga.eti.br/?p=540
* http://pt.wikipedia.org/wiki/Algoritmo_de_chave_sim%C3%A9trica
* Série livros didáticos informática UFRGS – Redes de Computadores
* Redes de Computadores e a Internet – 5ª Edição – Kurose e Ross
e

Outros materiais