Instituto de Tecnologia de Massachusetts. Curso de Aula nÂș 6.858. "Segurança de sistemas de computador". Nikolai Zeldovich, James Mickens. 2014 ano
Computer Systems Security Ă© um curso sobre o desenvolvimento e implementação de sistemas de computador seguros. As palestras abrangem modelos de ameaças, ataques que comprometem a segurança e tĂ©cnicas de segurança baseadas em trabalhos cientĂficos recentes. Os tĂłpicos incluem segurança do sistema operacional (SO), recursos, gerenciamento de fluxo de informaçÔes, segurança de idiomas, protocolos de rede, segurança de hardware e segurança de aplicativos da web.
Palestra 1: âIntrodução: modelos de ameaçasâ
Parte 1 /
Parte 2 /
Parte 3Palestra 2: âControle de ataques de hackersâ
Parte 1 /
Parte 2 /
Parte 3Aula 3: âEstouros de Buffer: ExploraçÔes e Proteçãoâ
Parte 1 /
Parte 2 /
Parte 3Palestra 4: âSeparação de PrivilĂ©giosâ
Parte 1 /
Parte 2 /
Parte 3Palestra 5: âDe onde vĂȘm os sistemas de segurança?â
Parte 1 /
Parte 2Palestra 6: âOportunidadesâ
Parte 1 /
Parte 2 /
Parte 3Palestra 7: âSandbox do Cliente Nativoâ
Parte 1 /
Parte 2 /
Parte 3Aula 8: âModelo de Segurança de Redeâ
Parte 1 /
Parte 2 /
Parte 3Aula 9: âSegurança de aplicativos da Webâ
Parte 1 /
Parte 2 /
Parte 3Palestra 10: âExecução SimbĂłlicaâ
Parte 1 /
Parte 2 /
Parte 3Aula 11: âLinguagem de Programação Ur / Webâ
Parte 1 /
Parte 2 /
Parte 3Aula 12: Segurança de rede
Parte 1 /
Parte 2 /
Parte 3Aula 13: âProtocolos de Redeâ
Parte 1 /
Parte 2 /
Parte 3Palestra 14: âSSL e HTTPSâ
Parte 1 /
Parte 2 /
Parte 3Palestra 15: âSoftware MĂ©dicoâ
Parte 1 /
Parte 2 /
Parte 3Palestra 16: âAtaques de Canal Lateralâ
Parte 1 /
Parte 2 /
Parte 3 Ok pessoal, vamos começar. EntĂŁo, hoje falaremos sobre ataques atravĂ©s de canais laterais, um problema comum inerente a todos os tipos de sistemas. Em um sentido amplo, ataques pelo canal lateral ocorrem em uma situação em que vocĂȘ nĂŁo acha que algumas informaçÔes sĂŁo capazes de revelar informaçÔes sobre o seu sistema.

Normalmente, vocĂȘ tem vĂĄrios componentes que estabelecem uma conexĂŁo entre o usuĂĄrio e o servidor. Ao mesmo tempo, vocĂȘ pensa que sabe tudo o que passa por esse fio conectando dois assinantes, conhece todos os bits que o usuĂĄrio e o servidor trocam entre si, e isso Ă© seguro. Mas muitas vezes acontece que algumas informaçÔes ainda sĂŁo divulgadas pelo usuĂĄrio ou servidor. O exemplo descrito na palestra de hoje descreve uma situação em que a sincronização de mensagens entre o usuĂĄrio e o servidor revela algumas informaçÔes adicionais que vocĂȘ nĂŁo conheceria, apenas observando o fluxo de bits entre esses assinantes.
De fato, existe uma classe muito mais ampla de canais laterais com a qual vocĂȘ pode se preocupar. As pessoas aprenderam sobre a aparĂȘncia dos canais laterais nos anos 40, quando descobriram que, se vocĂȘ começar a digitar caracteres em um teletipo, a eletrĂŽnica do teletipo começarĂĄ a emitir radiação de radiofrequĂȘncia. Nesse caso, vocĂȘ pode simplesmente colocar o osciloscĂłpio prĂłximo a ele e observar como a frequĂȘncia do sinal de rĂĄdio muda dependendo do sĂmbolo que o operador de teletipo imprime. Assim, a radiação de RF Ă© um exemplo clĂĄssico de um canal lateral que faz vocĂȘ se preocupar.
Existem muitos outros exemplos observados pelas pessoas, como o consumo de eletricidade. Este Ă© outro canal lateral com o qual vocĂȘ pode se preocupar, pois o computador utilizarĂĄ uma quantidade diferente de energia, dependendo do cĂĄlculo.

Um exemplo de canal lateral Ă© o som, devido ao qual o vazamento de informaçÔes tambĂ©m Ă© possĂvel. Por exemplo, as pessoas ouvem a impressora e, com base nos sons que emitem, podem dizer quais caracteres sĂŁo impressos. Isso Ă© especialmente fĂĄcil para impressoras matriciais que produzem sons muito irritantes durante a impressĂŁo.
Em geral, isso Ă© algo para se pensar. Em uma palestra de segunda-feira, Kevin tambĂ©m mencionou alguns canais secundĂĄrios interessantes com os quais ele lida em sua pesquisa. Mas vamos ver o canal lateral especĂfico que David Bramley e Dan Bone estudaram. Em seu trabalho, publicado hĂĄ cerca de 10 anos, eles escrevem que foram capazes de extrair a chave criptogrĂĄfica do servidor da web Apache, medindo o tempo de respostas diferentes para vĂĄrios pacotes de entrada de um cliente hostil. Nesse caso em particular, eles âprocuravamâ uma chave criptogrĂĄfica. De fato, muitos ataques pelo canal lateral visam chaves criptogrĂĄficas em parte porque Ă© bastante difĂcil obter uma grande quantidade de dados atravĂ©s desse canal. E as chaves criptogrĂĄficas sĂŁo uma das situaçÔes em que um pequeno nĂșmero de bits Ă© gerado, ou seja, durante um ataque, os atacantes podem extrair de 200 a 256 bits de informação. Mas com base apenas nesses 200 bits, eles sĂŁo capazes de decifrar a chave criptogrĂĄfica desse servidor da web.
Se vocĂȘ estiver tentando acessar algum tipo de banco de dados cheio de nĂșmeros de previdĂȘncia social, precisarĂĄ âmesclarâ muitas informaçÔes nele. Ă por isso que a maioria dos ataques de canal lateral se concentra em obter pequenos segredos, como chaves criptogrĂĄficas ou senhas. Mas, em geral, isso se aplica a muitas outras situaçÔes.
Nos materiais das palestras, outra coisa interessante Ă© descrita - Ă© que tudo isso pode ser feito pela rede. VocĂȘ provavelmente percebeu que eles tinham que fazer muito trabalho cuidadoso para detectar essas menores diferenças nas informaçÔes de tempo. Cada solicitação enviada ao servidor diferia de outra solicitação por 1 a 2 microssegundos, que Ă© um perĂodo muito curto. Portanto, vocĂȘ deve ter muito cuidado, porque nossas redes nĂŁo nos permitem capturar uma diferença tĂŁo temporĂĄria e determinam que o servidor processou sua solicitação por 1 a 2 microssegundos mais do que deveria.

Como resultado, nĂŁo ficou claro se esse ataque poderia ser organizado em uma rede muito âbarulhentaâ, pois as informaçÔes Ășteis deveriam ser separadas do nĂvel de ruĂdo. Esses caras foram os primeiros a mostrar que vocĂȘ realmente pode fazer isso em uma rede Ethernet com um servidor em uma extremidade da rede e um cliente na outra extremidade. Eles provaram que Ă© realmente possĂvel medir essas diferenças em parte pela mĂ©dia, em parte por outros truques.
O plano para o restante desta palestra Ă© o seguinte: primeiro, nos aprofundamos nos detalhes do algoritmo criptogrĂĄfico de chave pĂșblica da RSA que esses caras usaram. NĂŁo o avaliaremos do ponto de vista da segurança, mas veremos como ele Ă© implementado, porque Ă© a implementação do algoritmo que Ă© fundamental para o uso do canal lateral.
Bramley e Bone examinaram os vĂĄrios detalhes da implementação para entender quando certas coisas eram mais rĂĄpidas ou mais lentas. EntĂŁo, primeiro precisamos descobrir como o sistema de criptografia RSA Ă© implementado e, em seguida, voltaremos e descobriremos como atacar todas essas estruturas disponĂveis no RSA.
Vamos começar revisando o RSA em um nĂvel alto. O RSA Ă© um sistema de criptografia de chave pĂșblica bastante usado. Mencionamos esses caras algumas semanas atrĂĄs, quando conversamos sobre certificados. Agora vamos ver como ele realmente funciona.
Como regra, hĂĄ trĂȘs coisas com as quais vocĂȘ precisa se preocupar: geração de chaves, criptografia e descriptografia. No RSA, a maneira de criar uma chave Ă© selecionar 2 nĂșmeros inteiros primos grandes, denotĂĄ-los por peq. Em seu artigo, esses caras escrevem sobre peq cada um com um tamanho de 512 bits. Isso geralmente Ă© chamado de RSA de 1024 bits, porque o produto desses nĂșmeros primos Ă© um nĂșmero inteiro de 1000 bits. Atualmente, essa provavelmente nĂŁo Ă© uma boa opção para o tamanho da chave RSA, porque quebrĂĄ-la Ă© uma tarefa relativamente fĂĄcil para os invasores. Portanto, se hĂĄ dez anos, 1000 bits pareciam uma quantidade razoĂĄvel, hoje, ao criar um sistema, vocĂȘ deve escolher a chave RSA de 2000, 3000 ou mesmo 4000 bits. Portanto, o tamanho da chave RSA significa o tamanho desses nĂșmeros primos.
EntĂŁo, por conveniĂȘncia, falaremos sobre o nĂșmero n, que Ă© simplesmente o produto desses nĂșmeros primos n = pq, e esse nĂșmero Ă© chamado de mĂłdulo. Portanto, agora que sabemos como criar a chave, ou pelo menos parte dela, teremos que descobrir como criptografar e descriptografar as mensagens.

E a maneira como criptografamos e descriptografamos as mensagens se baseia no aumento do poder dos nĂșmeros no mĂłdulo n. Parece um pouco estranho, mas vamos descobrir isso em um segundo. Portanto, se vocĂȘ deseja criptografar a mensagem m, deve convertĂȘ-la em m
e pelo mod n. O valor de e Ă© um grau; em um segundo, descobriremos como escolhĂȘ-lo. Ă assim que vamos criptografar a mensagem.
Ou seja, apenas pegamos essa mensagem como um nĂșmero inteiro e aumentamos para uma potĂȘncia. Em um segundo, veremos por que isso funciona, mas, por enquanto, denotaremos toda essa mensagem criptografada com a letra C.
EntĂŁo, para decifrĂĄ-lo, precisamos encontrar outro expoente interessante d, que nos permita pegar a mensagem criptografada C, elevĂĄ-la Ă potĂȘncia d mĂłdulo e, como resultado, obter magicamente a mensagem descriptografada m.
Portanto, o princĂpio geral Ă© usar um expoente para criptografar uma mensagem e outro expoente para descriptografĂĄ-la.

Em suma, parece um pouco difĂcil entender como vamos apresentar esses dois nĂșmeros mĂĄgicos que, de alguma forma, nos devolvem a mensagem original. Mas se vocĂȘ observar como esse mĂłdulo n de exponenciação ou multiplicação funciona, vocĂȘ entenderĂĄ tudo.
Se pegarmos X e elevĂĄ-lo Ă potĂȘncia igual Ă função Ï de n, entĂŁo este serĂĄ 1 mĂłdulo n:
X
Ï (n) = 1 mod n
Essa função phi para nossa escolha particular de n Ă© bastante simples; Ă© igual a Ï = (p-1) (q-1).
EntĂŁo, o produto do expoente aberto e, que Ă© maior que 1, mas menor que Ï (n), pelo expoente secreto d, serĂĄ igual a:
ed = ÉÏ (n) +1, onde É Ă© uma constante.
Assim, Ă© possĂvel descriptografar corretamente a mensagem, pois existe um algoritmo bastante simples se vocĂȘ souber o valor de Ï (n) para calcular d levando em consideração e ou e levando em consideração d.
PĂșblico: 1 mĂłdulo n nĂŁo Ă© igual a 1?
Professor: sim, eu cometi um erro aqui, a igualdade deve ser assim:
X
Ï (n) mod n = 1 mod n, ou seja, o valor de X no grau da função "fi" de n mĂłdulo n Ă© igual ao mĂłdulo unidade n.
Isso basicamente significa que, para a RSA, temos que escolher algum valor e, que serĂĄ nosso valor de criptografia. EntĂŁo a partir de e vamos gerar d com base na fĂłrmula de = 1 mod Ï (n), portanto d = 1 / e mod Ï (n).

Existem alguns algoritmos euclidianos que vocĂȘ pode usar efetivamente para esse cĂĄlculo. Mas, para fazer isso, vocĂȘ deve saber isso Ï (n), que requer fatoração, ou seja, a fatoração do nosso nĂșmero n nos fatores peq.
Portanto, o RSA Ă© um sistema em que a chave pĂșblica Ă© um par: o expoente de criptografia e e o nĂșmero n, e o par d e n Ă© uma chave privada que Ă© mantida em segredo. Assim, qualquer pessoa pode aumentar o poder de criptografĂĄ-lo para vocĂȘ. Mas somente vocĂȘ conhece esse valor de d e, portanto, pode descriptografar a mensagem. E atĂ© vocĂȘ conhecer a fatoração desses fatores P e Q, ou N, igual ao produto de P e Q, vocĂȘ nĂŁo sabe o que Ï = (p-1) (q-1) Ă©.

Como resultado, calcular esse valor de d Ă© uma tarefa bastante difĂcil. Ă disso que trata o algoritmo RSA de alto nĂvel.
Agora que nos familiarizamos com os princĂpios da RSA, quero me debruçar sobre duas coisas. Existem truques sobre como usĂĄ-lo corretamente e existem armadilhas que surgem ao usĂĄ-lo. Existem vĂĄrias maneiras de implementar cĂłdigo para essa exponenciação e fazĂȘ-lo de forma eficiente. Essa Ă© uma tarefa bastante extraordinĂĄria, porque estamos lidando com nĂșmeros inteiros de 1000 bits, para os quais vocĂȘ nĂŁo pode simplesmente executar a instrução de multiplicação. Provavelmente levarĂĄ muito tempo para concluir essas operaçÔes.
Portanto, a primeira coisa que quero mencionar sĂŁo as vĂĄrias armadilhas da RSA. Um deles Ă© a multiplicatividade. Suponha que tenhamos 2 mensagens: m
0 e m
1 . Vou criptografĂĄ-los, transformando m
0 em m
0 e mod n, e m1 em m
1 e mod n. Um possĂvel problema, ou melhor, nĂŁo necessariamente um problema, mas uma surpresa desagradĂĄvel para alguĂ©m que usa RSA Ă© que Ă© muito fĂĄcil criptografar o produto m
0 por m
1 , porque vocĂȘ simplesmente multiplica esses 2 dĂgitos: m
0 e mod n * m
1 e mod n.

Se vocĂȘ multiplicĂĄ-los, vocĂȘ terminarĂĄ com o produto (m
0 m
1 )
e mĂłdulo n. Esta Ă© a criptografia correta com o uso simplificado do RSA para o valor m
0 m
1 . No momento, esse nĂŁo Ă© um grande problema, porque vocĂȘ pode simplesmente criar essa mensagem criptografada, mas nĂŁo pode descriptografĂĄ-la. No entanto, Ă© possĂvel que um sistema comum permita descriptografar mensagens especĂficas. Ou seja, se permitir descriptografar a mensagem que vocĂȘ criou, talvez seguindo o caminho inverso, vocĂȘ possa descobrir quais sĂŁo essas mensagens m
0 e m
1 .
Esse fato nĂŁo deve ser ignorado, pois afeta vĂĄrios protocolos usando o RSA. HĂĄ uma propriedade que usaremos como mecanismo de defesa no final de nossa palestra.
A segunda armadilha, ou propriedade da RSA, Ă qual vocĂȘ deve prestar atenção Ă© o determinismo ou determinabilidade. Na implementação elementar descrita anteriormente, se vocĂȘ pegar a mensagem me criptografĂĄ-la, transformando-a em m
e mod n, essa Ă© uma função determinĂstica da mensagem. Portanto, se vocĂȘ criptografar novamente, obterĂĄ exatamente a mesma criptografia.
Essa nĂŁo Ă© uma propriedade desejĂĄvel, porque se vejo que vocĂȘ estĂĄ enviando alguma mensagem criptografada usando o RSA e quero saber o que Ă©, pode ser difĂcil descriptografĂĄ-la. Mas posso tentar coisas diferentes, pelo que vejo que vocĂȘ estĂĄ enviando esta mensagem.
EntĂŁo eu vou criptografĂĄ-lo e ver se vocĂȘ obtĂ©m o mesmo texto criptografado. E se assim for, entĂŁo vou descobrir que vocĂȘ criptografou. Porque tudo o que preciso para criptografar uma mensagem Ă© uma chave pĂșblica acessĂvel ao pĂșblico, que Ă© um par de nĂșmeros (n, e).
Portanto, isso nĂŁo Ă© tĂŁo bom e talvez vocĂȘ precise ter cuidado com essa propriedade ao usar o RSA. Assim, Ă© difĂcil usar primitivos desse tipo diretamente.

Na pråtica, para evitar problemas semelhantes com o RSA, as pessoas codificam a mensagem de uma certa maneira antes da criptografia. Em vez de elevar diretamente uma mensagem a um poder, eles pegam algum tipo de função de mensagem e o elevam a um módulo de poder:
(f (m))
e mod n.
Essa função f, usada hoje em dia, é chamada OAEP - Criptografia assimétrica ideal com adição. Isso é algo codificado com duas propriedades interessantes.
Em primeiro lugar, traz aleatoriedade. VocĂȘ pode pensar em f (m) como gerando uma mensagem de 1000 bits que vocĂȘ irĂĄ criptografar. Parte desta mensagem serĂĄ sua mensagem aqui no meio deste retĂąngulo. Obviamente, vocĂȘ pode recuperĂĄ-lo ao descriptografar. Portanto, hĂĄ duas coisas interessantes que vocĂȘ deseja fazer: Ă direita, vocĂȘ coloca algum tipo de aleatoriedade, o valor de r. Isso significa que, se vocĂȘ criptografar uma mensagem vĂĄrias vezes, obterĂĄ resultados diferentes a cada vez, para que a criptografia nĂŁo seja mais determinada.
Para superar essa propriedade multiplicativa e outros tipos de problemas, Ă esquerda vocĂȘ tem um pad pad, que Ă© uma sequĂȘncia do tipo 1 0 1 0 1 0. VocĂȘ pode escolher uma sequĂȘncia melhor, mas, grosso modo, esse Ă© algum tipo de sequĂȘncia previsĂvel, que vocĂȘ insere aqui e sempre que descriptografa a mensagem, verifique se essa sequĂȘncia ainda estĂĄ lĂĄ. A multiplicidade destruirĂĄ esses bits, e entĂŁo ficarĂĄ claro para vocĂȘ que alguĂ©m estragou sua mensagem e a descartou. Se esses bits permanecerem no lugar, isso prova que ninguĂ©m falsificou sua mensagem e vocĂȘ pode recebĂȘ-la, pois ela foi criptografada corretamente por alguĂ©m.
PĂșblico: se um invasor sabe qual Ă© o valor do bloco, ele pode definir 1 no final da sequĂȘncia e multiplicar esse valor?
Professor: sim, talvez. Isso Ă© um pouco complicado, porque essa aleatoriedade r continuarĂĄ. Portanto, o design especĂfico desta OAEP Ă© um pouco mais complicado do que o que descrevi. Mas imagine que se trata de uma multiplicação inteira e nĂŁo bit a bit, a aleatoriedade se estende ainda mais, para que vocĂȘ possa criar um esquema OAEP no qual isso nĂŁo acontecerĂĄ.
Acontece que vocĂȘ nĂŁo deve usar essa matemĂĄtica RSA diretamente, na prĂĄtica, vocĂȘ deve usar algum tipo de biblioteca que implemente todas essas coisas para vocĂȘ da maneira correta e use-a como um parĂąmetro de criptografia e descriptografia.
No entanto, os detalhes discutidos acima serão importantes para nós, pois estamos realmente tentando descobrir como interromper ou atacar a implementação existente do RSA.
Em particular, o ataque descrito no artigo da palestra aproveitarĂĄ o fato de o servidor estar prestes a testar esse complemento de preenchimento quando receber a mensagem. Portanto, Ă© assim que consideraremos o tempo que levarĂĄ para o servidor descriptografar. Vamos enviar uma mensagem cuidadosamente construĂda, mas ela nĂŁo Ă© criada a partir da mensagem real me de sua criptografia. Vamos criar um valor inteiro criptografado completo.
O servidor tentarĂĄ descriptografĂĄ-lo e obterĂĄ algum tipo de absurdo, com o qual o teclado provavelmente nĂŁo serĂĄ emparelhado, e o servidor rejeitarĂĄ imediatamente essa mensagem. , , , , : RSA, , . , . , .
, , RSA. , , , . , , , 1000 . e .

, . , 1000 . 1000- , 1000 1000 n, . RSA , .
4 , . , . , CRT. . . , , , , [ = a
1 ] mod p [ = a
2 ] mod q, q â , .

, [ =
1 ] mod pq.
1 , .
1 , mod pq a
1 a
2 mod p q.
, ? , , n, p q.

, mod pq, mod p mod q. , , mod pq. , ? , , ?
: , ?
: , , , . , p q, n 1000 , p q 500 , . , , â , , . â . , , . 1000 512 , 2 . , 4 . [ = a
1 ] mod p [ = a
2 ] mod q , 4 . 2 RSA , .
, .
, Sliding windows, « ». . , .

, - , 500 , mod p mod q, d. c d? , c d . d , 500, . , , . , « ». .
c
2x , : (c
x )
2 :
c
2x = (c
x )
2c
2x , 2 , cx, . , , c
2x+1 :
c
2x+1 = (c
x )
2 x
.
, , , . , , , . , .
« », ? , . , , « » c
2x+1 = (c
x )
2 x .
, , , â , c
2x+1 c
2x , c. , , . , .

, :
1
3
7
...
31
. , , , .
,
32x+y , 5 , 32- ,
y .
32 . , , , , c . «» .
29:00
Curso MIT "Segurança de sistemas de computadores". Aula 16: Ataques pelo canal lateral, parte 2A versĂŁo completa do curso estĂĄ disponĂvel aqui .Obrigado por ficar conosco. VocĂȘ gosta dos nossos artigos? Deseja ver materiais mais interessantes? Ajude-nos fazendo um pedido ou recomendando a seus amigos, um
desconto de 30% para os usuĂĄrios da Habr em um anĂĄlogo exclusivo de servidores bĂĄsicos que inventamos para vocĂȘ: Toda a verdade sobre o VPS (KVM) E5-2650 v4 (6 nĂșcleos) 10GB DDR4 240GB SSD 1Gbps de US $ 20 ou como dividir o servidor? (as opçÔes estĂŁo disponĂveis com RAID1 e RAID10, atĂ© 24 nĂșcleos e atĂ© 40GB DDR4).
VPS (KVM) E5-2650 v4 (6 nĂșcleos) 10 GB DDR4 240 GB SSD de 1 Gbps atĂ© dezembro de graça quando pagar por um perĂodo de seis meses, vocĂȘ pode fazer o pedido aqui .Dell R730xd 2 vezes mais barato? Somente nĂłs temos
2 TVs Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 a partir de US $ 249 na Holanda e nos EUA! Leia sobre
Como criar um prédio de infraestrutura. classe usando servidores Dell R730xd E5-2650 v4 custando 9.000 euros por um centavo?