111
Universidade de Brasília Instituto de Ciências Exatas Departamento de Ciência da Computação

Um problema de escala na distribuição de chaves públicas e ...bdm.unb.br/bitstream/10483/19809/1/2017_IvanMenezesSena_tcc.pdf · Um problema de escala na distribuição de chaves

Embed Size (px)

Citation preview

  • Universidade de BrasliaInstituto de Cincias Exatas

    Departamento de Cincia da Computao

    Um problema de escala na distribuio de chavespblicas e seu impacto na ICP Brasil

    Ivan Menezes Sena

    Monograa apresentada como requisito parcial

    para concluso do Bacharelado em Cincia da Computao

    Orientador

    Prof. Dr. Pedro A. D. Rezende

    Braslia

    2017

  • Universidade de Braslia UnB

    Instituto de Cincias Exatas

    Departamento de Cincia da Computao

    Bacharelado em Cincia da Computao

    Coordenador: Prof. Dr. Rodrigo Bonifcio de Almeida

    Banca examinadora composta por:

    Prof. Dr. Pedro A. D. Rezende (Orientador) CIC/UnB

    Prof. Dr. Jan Mendonca Correa CIC/UnB

    Prof. Dr. Edison Ishikawa CIC/UnB

    CIP Catalogao Internacional na Publicao

    Sena, Ivan Menezes.

    Um problema de escala na distribuio de chaves pblicas e seu impacto

    na ICP Brasil / Ivan Menezes Sena. Braslia : UnB, 2017.

    219 p. : il. ; 29,5 cm.

    Monograa (Graduao) Universidade de Braslia, Braslia, 2017.

    1. Criptograa assimtrica, 2. algoritmo RSA, 3. chave privada,

    4. chave pblica, 5. primos grandes, 6. ICP-Brasil, 7. MP 2200-2,

    8. entropia, 9. gerao de primos aleatrios, 10. ITI, 11. teste de

    Lenstra, 12. biblioteca GMP, 13. fastGCD

    CDU 004

    Endereo: Universidade de Braslia

    Campus Universitrio Darcy Ribeiro Asa Norte

    CEP 70910-900

    BrasliaDF Brasil

  • Universidade de BrasliaInstituto de Cincias Exatas

    Departamento de Cincia da Computao

    Um problema de escala na distribuio de chavespblicas e seu impacto na ICP Brasil

    Ivan Menezes Sena

    Monograa apresentada como requisito parcial

    para concluso do Bacharelado em Cincia da Computao

    Prof. Dr. Pedro A. D. Rezende (Orientador)

    CIC/UnB

    Prof. Dr. Jan Mendonca Correa Prof. Dr. Edison Ishikawa

    CIC/UnB CIC/UnB

    Prof. Dr. Rodrigo Bonifcio de Almeida

    Coordenador do Bacharelado em Cincia da Computao

    Braslia, 29 de novembro de 2017

  • Dedicatria

    Dedico esta conquista aos meus amados pais Frederico Arajo Sena e Maria de

    Ftima Menezes Sena, minha estimada irm Pmela Menezes Sena Ferreira e meus

    dois queridos sobrinhos Eduardo Sena L. Ferreira e Maria Vitria Sena Ferreira.

    i

  • Agradecimentos

    Universidade de Braslia, por me proporcionar a oportunidade de estudar e apren-

    der com mestres, doutores e graduados das mais diversas reas das cincias. Sou grato

    cada membro do corpo docente, direo e a administrao dessa instituio de

    ensino.

    professora Germana Menezes da Nobrega, por todo auxlio e esforo empregados

    no meu regresso para a Universidade de Braslia.

    Ao professor Pedro Antnio Dourado de Rezende, alm de toda pacincia e apoio

    durante a produo deste trabalho, suas aulas em Segurana de Dados me permitiram

    encontrar o meu lugar na Cincia da Computao.

    Ao meu psiclogo, Thiago Cardoso Costa, por me auxiliar durante o meu perodo

    afastado da universidade e por me proporcionar as ferramentas didticas necessrias

    para o meu sucesso acadmico e prossional.

    Ao meu colega Gabriel Gomes Gaspar por toda ajuda prestada durante as etapas

    iniciais deste trabalho.

    Aos meus amigos Lucas Alem Martins e Fernanda Moraes, pela viso e reviso

    jurdica que serviram de apoio ao desenvolvimento deste trabalho.

    minha me Maria de Ftima Menezes Sena e minha irm Pmela Menezes Sena

    Ferreira, por todo auxlio e tempo empreendidos na reviso ortogrca deste trabalho.

    minha famlia, por sempre me apoiar e sempre estar presente.

    Aos meus amigos de infncia, por nunca me deixaram duvidar das minhas capaci-

    dades.

    Aos meus companheiros de farda, os Tubares do Cerrado, por me motivarem a ser

    melhor todos os dias.

    ii

  • Resumo

    O presente Trabalho de Graduao aborda um problema que surge na relao entre

    a funo semiolgica de irrefutabilidade de assinaturas digitais, e o desequilbrio de

    riscos e responsabilidades legais imposto a signatrios pelo regime da ICP-BR. Anali-

    samos a relao lgica entre as premissas de inviolabilidade dessas assinaturas, e um

    nvel adequado de entropia no processo de gerao de nmeros primos que compem

    chaves criptogrcas, sob condies de uso em larga escala do algoritmo RSA. Mos-

    tramos a implementao de um algoritmo estado-da-arte que relativiza tais premissas,

    pelo mtodo indireto que permite derivar uma chave privada RSA a partir da chave

    pblica correspondente, mediante fatorao do mdulo desse par de chaves via clcu-

    los amostrais de MDCs. Revelamos os resultados da execuo desse algoritmo em um

    ambiente preparado para realizar teste de robustez em importantes acervos de chaves

    pblicas, com vistas ao acervo das chaves certicadas no regime da ICP-BR. Desenvol-

    vemos e apresentamos uma aplicao para teste de robustez de chaves pblicas RSA

    individuais, voltada para o usurio comum. Expomos todas as tentativas frustradas

    de contactar ou engajar o ITI (Instituto Nacional de Tecnologia da Informao) e,

    luz do recente caso paralelo na Estnia em que 750 mil certicados digitais foram

    revogados devido deteco de correspondente vulnerabilidade , tambm motivos que

    supomos plausveis para o desinteresse das autoridades responsveis pela ICP-BR na

    cooperao originalmente proposta para este Trabalho.

    Palavras-chave: Criptograa assimtrica, algoritmo RSA, chave privada, chave p-

    blica, primos grandes, ICP-Brasil, MP 2200-2, entropia, gerao de primos aleatrios,

    ITI, teste de Lenstra, biblioteca GMP, fastGCD

    iii

  • Abstract

    The present work examines a problem that arises from the relationship between the

    semiological irrefutability function of digital signatures and unbalances among risks and

    responsibilities imposed upon signatories under Brazil's ocial PKI regime (ICP-BR).

    We analyze the logical relation between digital signature's premises for inviolability

    and an adequate level of entropy for the process of generating pseudorandom prime

    integers to compose cryptographic keys, under conditions of widespread use of the

    RSA algorithm. We show an implementation of a state-of-the-art algorithm which

    relativizes these premises, through the indirect method that allows for the derivation

    of a RSA private key from the corresponding public key, upon factoring of the key

    pair's module through the sampling calculations of GCDs. We reveal the results from

    executing said algorithm on a setup prepared for testing robustness of important public

    key collections, aiming for the collection of RSA public keys certied under the ICP-

    BR regime. We expose all frustrated attempts to engage the National Institute of

    Information Technology (ITI) and, given the recent parallel case in Estonia where

    750 thousand digital certicates were revoked due to detection of the corresponding

    vulnerability , also the motives we deem plausible for the unconcern and aloofness of

    ICP-BR authorities regarding the cooperation originally proposed for this work.

    Keywords: Asymmetric cryptography, RSA algorithm, private key, public Key, big

    prime numbers, ICP-Brasil, MP 2200-2, entropy, generic prime number generation,

    ITI, Lenstra test, GMP library, fastGCD

    iv

  • Sumrio

    1 Introduo 1

    1.1 Apresentao de termos e conceitos . . . . . . . . . . . . . . . . . . . . 1

    1.2 A equivalncia entre fsico e virtual . . . . . . . . . . . . . . . . . . . . 5

    1.3 O problema jurdico da funo semiolgica . . . . . . . . . . . . . . . . 6

    1.4 O teste de Lenstra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    1.5 A possibilidade realista de violao da primeira premissa de conana . 10

    1.6 Motivao e caminho percorrido . . . . . . . . . . . . . . . . . . . . . . 11

    2 Raiz do Problema 13

    2.1 Identicando a raiz do problema . . . . . . . . . . . . . . . . . . . . . . 13

    2.1.1 O RSA (isoladamente) robusto? . . . . . . . . . . . . . . . . . 14

    2.1.2 Intervalos entre nmeros primos . . . . . . . . . . . . . . . . . . 15

    2.1.3 A raz da vulnerabilidade . . . . . . . . . . . . . . . . . . . . . . 17

    3 Um problema ou vrios? 19

    3.1 Anlise dos possveis problemas . . . . . . . . . . . . . . . . . . . . . . 19

    3.2 Anlise do perl dos primos em mdulos fatorados . . . . . . . . . . . . 21

    3.2.1 Gerao de primos na biblioteca OpenSSL . . . . . . . . . . . . 22

    3.2.2 Gerao de primos no necessariamente seguros na biblioteca

    OpenSSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    3.3 Onde e quando o OpenSSL utiliza geradores pseudorandmicos com

    baixa entropia? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    v

  • 4 Geradores Pseudorandomicos no Kernel LINUX 27

    4.1 Propriedades de um gerador pseudorandmico seguro . . . . . . . . . 28

    4.1.1 Estrutura dos PRNGs random e urandom no Linux . . . . . . . 28

    4.1.2 Outputs dos repositrios . . . . . . . . . . . . . . . . . . . . . . 29

    4.1.3 Adio ao contador de entropia . . . . . . . . . . . . . . . . . . 30

    4.1.4 Atualizao dos repositrios . . . . . . . . . . . . . . . . . . . . 31

    4.1.5 Extrao de Bits aleatrios dos repositrios secundrio e urandom 31

    4.2 Fragilidades no LRNG . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    4.2.1 Ataque de criptoanlise na propriedade 1. no LRNG . . . . . . 33

    4.2.2 Ataque na gerao de Entropia do reservatrio primrio . . . . . 34

    4.3 Consideraes Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

    5 Entendendo o algoritmo implementado por Halderman 36

    5.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

    5.1.1 rvore de Multiplicao . . . . . . . . . . . . . . . . . . . . . . 39

    5.1.2 rvore de Restos . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    5.1.3 Mximo Divisor Comum . . . . . . . . . . . . . . . . . . . . . . 41

    6 Metodologia 42

    6.1 O setup para o FastGCD . . . . . . . . . . . . . . . . . . . . . . . . . . 43

    6.1.1 Biblioteca GMP . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    6.1.2 Base de mdulos RSA . . . . . . . . . . . . . . . . . . . . . . . 45

    6.2 Resultados do fastGCD . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

    6.2.1 Coleta de mdulos no repositrio da EFF . . . . . . . . . . . . . 46

    6.2.2 Colises, tempos de execuo e erros . . . . . . . . . . . . . . . 47

    6.3 A motivao para a ferramenta Chave Fraca GUI . . . . . . . . . . . . 48

    6.4 Manual Chave Fraca GUI . . . . . . . . . . . . . . . . . . . . . . . . . 48

    7 ICP-Brasil 54

    vi

  • 7.1 Alguns termos Jurdicos . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    7.1.1 nus da Prova . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    7.1.2 Medida Provisria . . . . . . . . . . . . . . . . . . . . . . . . . 55

    7.1.3 Autarquia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    7.1.4 F Pblica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    7.1.5 Prova Diablica . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    7.2 Sobre a MP 2200 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    7.3 Desequilbrio de riscos e responsabilidades . . . . . . . . . . . . . . . . 58

    7.3.1 Certicados de uso geral . . . . . . . . . . . . . . . . . . . . . . 58

    7.3.2 Risco vinculado a chave de uso geral . . . . . . . . . . . . . . . 59

    7.4 Inverso do nus da prova . . . . . . . . . . . . . . . . . . . . . . . . . 61

    7.4.1 A iniciativa privada e o seu interesse na ICP-Brasil . . . . . . . 62

    7.4.2 O problema da inverso do nus da prova . . . . . . . . . . . . 63

    8 Consideraes Finais 65

    8.1 O caso da Estnia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

    8.2 Concluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

    Referncias 72

    A Algoritmo responsvel pelo teste de robustez 76

    B Algoritmo responsvel pelo calculo da Chave Privada 80

    C Algoritmo responsvel por encriptar uma mensagem 82

    D Ofcio encaminhado para o ITI 84

    E E-mail enviado ao Doutor Ricardo Custdio no dia 05 de Julho 88

    F Despacho encaminhado para assessoria da GRT 90

    vii

  • G A reunio que nunca aconteceu 92

    H Regulamentao da Criptograa de Curvas Elpticas Brainpool para

    gerao de Chaves Assimtricas no mbito da ICP-BRASIL 96

    viii

  • Lista de Figuras

    4.1 esquema PRNG [26] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    4.2 Extrao de bits aleatrios da funo TGFSR [26] . . . . . . . . . . . . 32

    5.1 rvore de multiplicao [34] dos mdulos para fatorao . . . . . . . . 40

    5.2 rvore de restos [34] dos mdulos utilizada para encontrar a existncia

    de um divisor comum a dois mdulos distintos . . . . . . . . . . . . . 40

    6.1 Teste de coliso entre Chave Pblica e coleo de mdulos RSA em

    hexadecimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    6.2 Resultado do teste de coliso entre Chave Pblica e coleo de mdulos

    RSA em hexadecimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    6.3 Calculo do expoente da Chave Privada . . . . . . . . . . . . . . . . . . 51

    6.4 Prova dos nove. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

    ix

  • Captulo 1

    Introduo

    Em segurana nas comunicaes, possvel observar que a busca por mtodos para

    se estabelecer transmisses consideradas seguras entre dois agentes um problema

    circular, do tipo metaforicamente conhecido em linguagem popular como de ovo-e-

    galinha. Tal metfora, assim empregada para ilustrar esta busca, se refere ao uso da

    criptograa para proteger sigilo ou integridade de mensagens ou documentos durante

    transmisses digitais (seja atravs do tempo, ou do espao). Pois tal uso requer trans-

    misso j protegida (no mnimo, com integridade) da chave criptogrca que antes

    encripta ou que depois autentica tais mensagens ou documentos. Este trabalho tema-

    tiza um problema relacionado gerncia de chaves criptogrcas, que expe nuanas

    dessa metfora. Mais precisamente, um problema que surge com o uso disseminado

    de protocolos projetados para viabilizar a distribuio e gesto de chaves pblicas em

    larga escala, operando sob o escopo de uma constelao de regras de natureza jurdica.

    1.1 Apresentao de termos e conceitos

    Antes de prosseguir com a introduo ao tema, necessrio uma breve apresentao

    de determinados termos, aos quais atribuiremos sentido tcnico especco, adequado

    correta interpretao do contedo deste trabalho. O primeiro termo que utilizaremos

    com uma acepo tcnica especca, de extrema relevncia para nossa abordagem,

    conana. Conana deve ser aqui entendida como aquilo que essencial para um

    canal de comunicao e que no pode ser transferido da fonte para o destino atravs

    deste canal1. Aquilo que essencial para que a informao supostamente transmitida

    faa sentido, ou seja, produza algum signicado coerente com a situao cognitiva do

    1

  • receptor da transmisso.

    O segundo termo que usaremos com acepo especca premissas de conana [5].

    Premissas de conana so as condies ou requisitos para operao adequada dos me-

    canismos escolhidos para a proteo desejada. Exemplos incluem condies e requisitos

    relacionados implementao, instalao e operao de determinado algoritmo crip-

    togrco, de senha ou de chaves, garantia de origem de material criptogrco, canal

    utilizvel para transmisses de inicializao destes, etc. Com tais denies, podemos

    abordar com mais clareza os processos de distribuio e gesto de chaves criptogrcas,

    com foco em chaves pblicas.

    O terceiro termo a denir, assinatura digital. Assinatura digital um esquema

    criptogrco criado para tornar possvel a validao de origem e de integridade de

    mensagens e documentos em meio digital, de forma objetiva [2]; Ou seja, de forma

    que possa ser tecnicamente sustentada, no domnio jurdico, como oponvel a terceiros.

    Em essncia, a assinatura digital busca prover as mesmas funes semiolgicas2 que a

    assinatura de punho desempenha como meio de prova. A saber: inforjabilidade, invio-

    labilidade, irrecuperabilidade e irrefutabilidade3. A inforjabilidade remete conana

    do vericador na identicao de autoria, ou seja, na identicao correta do autor da

    assinatura. A conana do vericador na integridade do contedo expresso no docu-

    mento, vinculado manifestao da vontade do signatrio se for o caso, corresponde

    inviolabilidade. A irrecuperabilidade a convico de ambos, vericador e signatrio,

    de que a assinatura lavrada sobre um documento no pode ser reutilizada em outro

    documento, sem permitir deteco da manobra. Por m, a irrefutabilidade, conceito

    tcnico que, no domnio do Direito, ganha o nome de irretratabilidade: refere-se con-

    ana do vericador na inviabilidade tcnica de negao da autoria da assinatura pelo

    1 Conana no pode ser forada (Gerk). Assim, quando um agente sente-se obrigado a agir como

    se conasse noutro, tal situao indica potencial conito de interesses, modelvel pelas distintas

    percepes da extenso da conana que ambos presumem do contexto, isto , pelas diferenas

    entre a conana que um agente presume ser demandada de si pelo outro, e a oferecida de si

    para o outro, relativamente ao assunto em tela e em expectativa a esse agir (ou ao no-agir).

    A denio de Conana aqui adotada foi originalmente proposta por Edward Gerk no artigo

    Toward Real-World models of Trust, disponvel em http://mcwg.org/mcg-mirror/trustdef.htm

    2

  • signatrio4.

    A eccia do esquema de assinatura digital decorre, e portanto depende, de trs

    premissas de conana:

    1. Somente o titular de um par de chaves criptogrcas assimtricas pblica e

    privada deve controlar o uso de sua chave privada.

    2. A titularidade de uma chave pblica, usada para vericar assinaturas digitais do

    titular, ou para cifrar transmisses sigilosas destinadas a este, deve ser conavel-

    mente conhecida pelo vericador ou remetente.

    3. O titular manifesta, ou pode manifestar, sua vontade no contedo de documentos

    assinados com sua chave privada.

    A terceira premissa requer no s que a interpretao dos formatos digitais de docu-

    mentos assinados seja invariante entre as interfaces computacionais utilizadas na lavra

    da assinatura e na vericao da mesma, mas tambm que os respectivos ambientes

    computacionais estejam sadios, isto , livres de contaminao por programas maliciosos

    capazes de violar a caracterstica wysiwyg5dessas interfaces, durante tais operaes.

    J a segunda premissa conana na titularidade de uma chave pblica tem sua

    demanda atendida, quando esta precisa superar problemas de escala, por protocolos de

    certicao digital, onde as premissas de sigilo e de integridade (de chaves privadas e

    de chaves pblicas, respectivamente) so transformadas em autenticao recursiva com

    2 Na teoria linguistica cognitiva, conforme desenvolvida por Ronald Langacker por exemplo, a lin-

    guagem desempenha uma funo semiolgica, que permite conceituaes a serem simbolizadas

    por ilocues e gestos, associada a uma funo interativa, que envolve comunicao, manipu-

    lao, expressividade e comunho social ([29], pg 14). No caso especco aqui citado, estamos

    nos referindo conceituao de prova de autoria e/ou de manifestao de vontade, conforme a

    acepo doutrinria no Direito, expressa em documento eletronico que interage com atores atra-

    vs de passos expressos por ilocues e gestos de um esquema de autenticao criptogrca

    (assinatura digital como procedimento), onde a autoria e/ou a manifestao da vontade de um

    signatrio simbolizada por componente descrito como autenticador criptogrco (assinatura

    digital como objeto).

    3 Aos nveis qualitativos considerados equiparveis ou superiores aos do mtodo da assinatura de

    punho como meio de prova de autoria, ou de eccia probante para manifestao da vontade, na

    jurisprudncia do direito processual.

    4 Essa traduo da quarta funo semiolgica (irrefutabilidade -> irretratabilidade), entre os

    domnios tcnico e jurdico, tenta evitar ambiguidade com outro conceito jurdico, o qual antes

    negaria ao acusado o direito de sequer postular sua negao de autoria.

    3

  • validao objetiva (da origem e integridade) de documentos que titulam e transportam

    chaves pblicas, conhecidos como certicados digitais, os quais podem assim formar

    encadeamentos conhecidos pelo ambguo nome de cadeias de conana6.

    Um protocolo de certicao para certicados digitais de chave pblica regido por

    relaes envolvendo entidade certicadora, titulares de pares de chaves assimtricas,

    documentos eletrnicos contendo dados obrigatrios, e usurios desses documentos. A

    integridade e a titularidade de uma chave pblica atestada, em documento eletrnico

    de formato especco conhecido abreviadamente por certicado digital, mediante va-

    lidao completa de uma cadeia de conana (ver nota6) nele terminada. Para isso,

    essencial que o formato desses documentos represente duas relaes: a primeira, entre

    a chave pblica nele contida, e a titularidade do par formado por esta chave pblica e

    sua correspondente chave privada (no contida no certicado), via identicao deste

    titular; e a segunda, entre uma identicao da entidade certicadora, e uma assina-

    tura digital desta no certicado, que nele representa o ato de sua emisso. Assim, tais

    certicados servem no s para identicar o titular de um par de chaves cuja chave

    pblica nele transportada, mas tambm como meio para distribuio desta chave

    pblica.

    Mediante a validao completa de uma correspondente cadeia, os usurios desses

    certicados podem ento inferir que a respectiva chave privada controlada pelo titular

    identicado no certicado. Controle este que se presume exclusivo caso a primeira

    premissa de conana esteja valendo para esse titular e chave privada, mas premissa

    esta que nenhum certicado com tal estrutura ter como atestar (como na metfora

    aludida inicialmente).

    Dos dados contidos em tais certicados, so portanto obrigatrios os seguintes:

    chave pblica, identicao do titular desta chave, identicao da entidade que emitiu

    5 Acrnimo de what you see is what you get, referente ao pressuposto de que o que est sendo

    processado (a nvel binrio) corresponde elmente ao que est sendo mostrado na interface de

    usurio (na tela ou impressora).

    6 Ambguo no sentido em que a conana inspirada por tais cadeias, a saber, conana na titulari-

    dade e integridade das chaves contidas nos certicados encadeados, decorre no apenas como o

    nome pode dar a entender do mero encadeamento, isto , da chave pblica em cada certicado

    na cadeia ser aquela que serve para validar a assinatura no certicado seguinte (e portanto, para

    validar a titularidade da chave transportada neste). Ela tambm decorre, e portanto depende

    tambm, da validao de todas essas assinaturas e, crucialmente, das trs premissas de conana

    estarem valendo para a chave pblica no certicado que inicia tal cadeia, conhecido por isso como

    certicado-raiz.

    4

  • o certicado, e assinatura digital desta no certicado. E dentre os dados teis, porm

    no obrigatrios em formatos-padro como o X.509 [19], podemos citar os que informam

    sobre o uso que o titular pretende para este seu par de chaves (no subcampo userNotice

    do campo policyQualifyer da extenso certicatePolicies), sobre possvel revogao

    antecipada do certicado (na extenso CRLDistributtionPoints), dentre outros.

    1.2 A equivalncia entre fsico e virtual

    No Brasil, com a assinatura (de punho) da Medida Provisria 2200 pelo Presidente

    da Repblica em junho de 2001, eventualmente reeditada em verso atualmente vigente

    a MP 2200-2 , foi instituda a Infraestrutura de Chaves Pblicas Brasileira (ICP-

    BR), regime normativo tcnico-jurdico ao qual se refere o primeiro pargrafo desta

    Introduo. Dentre seus dispositivos vigentes, o regime da ICP-BR estabelece que

    as cadeias de conana sob seu escopo jurdico devem seguir o padro X.509 com

    hierarquia nica, no sentido de que qualquer certicado autoreferenciado7 que seja

    raiz ltima (ver nota6) para tais cadeias, deva ter como titular uma nica entidade,

    nomeada Autoridade Certicadora Raiz da ICP-BR [22]. Conforme o mesmo regime,

    tal entidade primria operada pelo Instituto Nacional de Tecnologia da Informao

    (ITI), que tambm responsvel pelo credenciamento e descredenciamento das demais

    certicadoras participantes (cujos certicados podem compor cadeias na ICP-BR), pela

    superviso das operaes destas, e pela auditoria de processos pertinentes.

    Tendo j explicado como uma cadeia de certicados operada no processo de vali-

    dao destes6, resta explicar como formada no processo de emisso. A Certicadora

    Raiz, que tambm chamada primria, responsvel pela emisso dos certicados

    das entidades certicadoras cujos certicados ocupam posio imediatamente inferior

    nessas cadeias de conana, e assim por diante. As certicadoras no primrias, tam-

    bm chamadas intermedirias, tm a responsabilidade de emitir, distribuir, renovar,

    revogar e gerenciar certicados digitais de certicadoras em posio abaixo da sua, ou

    de clientes nais. Cabe observar que o padro X.509 estabelece uma espcie de reserva

    de mercado para certicao, no sentido em que os certicados de clientes nais devem

    car, nas aplicaes aderentes ao padro, desabilitados a vericar assinaturas em outros

    certicados X.509 (habilitados, portanto, a vericar assinaturas apenas em documen-

    tos que no sejam certicados X.509), e os de certicadoras no primrias, passveis

    7 Frequentemente chamados de autoassinados, termo ainda mais perigosamente ambguo por dar

    a entender que so capazes de atestar sua prpria integridade.

    5

  • de limites para a posio que possam ocupar em cadeias de conana (atravs da

    extenso CerticateBasicConstraints)

    Ainda, para cuidar da coleta e validao de dados de entrada para certicados

    de clientes nais, dados que iro identicar tais clientes como titulares das respecti-

    vas chaves, ou coletar dados para pedidos de revogao antecipada de certicados j

    emitidos e ainda vlidos, e validao de tais pedidos quanto a legitimidade, o regime

    normativo da ICP-BR estabelece tambm as chamadas autoridades de registro, que

    interfaceiam com as certicadoras intermedirias para tal nalidade. As autoridades

    de registro devem, ou deveriam, tambm operar sob credenciamento e superviso da

    entidade primria da ICP-BR, ou seja, da Certicadora Raiz operada pelo ITI em sua

    capacidade scalizatria.

    1.3 O problema jurdico da funo semiolgica

    Aps essa breve introduo aos protocolos de certicao como instrumentos de

    suporte distribuio e gesto de chaves pblicas, estamos aptos a descrever o pro-

    blema que ser abordado neste trabalho. Tal problema surge na relao entre a funo

    semiolgica de irrefutabilidade (no domnio jurdico, irretratabilidade) de assinaturas

    digitais, e o seu fundamento terico, que inviabilidade tcnica de se obter, com custo

    cabvel, a chave privada a partir da correspondente chave pblica. No domnio tcnico,

    essa inviabilidade que podemos chamar de premissa de assimetria a caracterstica

    que classica o correspondente algoritmo criptogrco como assimtrico, caso ela seja

    infervel para qualquer par de chaves til ao algoritmo.

    Para oferecer garantias dessa inviabilidade, ou seja, garantias de que qualquer chave

    pblica certicada possui tal caracterstica (de assimetria), garantias estas que o escopo

    jurdico da ICP-BR decreta sucientes, para o Direito Civil, pelo disposto no 2o do art.

    10o da MP 2200-2, o regime da ICPBR estabelece normas adicionais, de cunho tcnico

    correspondente, com diversas especicaes e parmetros para algoritmos, como por

    exemplo o RSA (que se tornou padro de fato), softwares e hardwares homologveis,

    tanto para gerao como para uso de pares de chaves sob tal regime.

    O problema peculiar ICP-BR, quando comparada a outras iniciativas do gnero8

    , surge da citada presuno de sucincia jurdica, insculpida no 2o, Art. 10o da MP

    2200-2[17]. Se um agente oportunista puder gerar, com custo cabvel, a chave privada

    correspondente a uma chave pblica a partir desta, o titular deste par de chaves estar

    6

  • exposto a srios riscos e problemas de carter jurdico, de difcil soluo no mbito da

    ICP-BR. Ento, para que a implcita hiptese de eccia dessas regras e padres tenha

    real valor, necessrio que se analise:

    num primeiro crivo, os mtodos conhecidos para se obter chaves privadas a partirda correspondente chave pblica;

    num segundo crivo, em mais detalhes, aqueles cuja viabilidade tcnica possa sermensurada por meios empricos, com distintas distribuies de probabilidade;

    E num terceiro crivo, avaliar se dentre estes existe algum mtodo cuja viabilidade,mensurada em algum sentido prtico e sob condies realistas, ponha em cheque

    a base terica para tal presuno de sucincia jurdica, sob algum princpio juris

    doutrinrio.

    A hiptese de existncia de um tal mtodo, e se ele poderia ser usado para robustecer

    ao invs de vulnerar o arcabouo tcnico-jurdico da ICP-BR, aqui tematizada

    como problema a ser abordado nesse trabalho.

    1.4 O teste de Lenstra

    No caso do algoritmo-padro RSA [3], podemos reduzir a vericao dessa hiptese,

    aqui tematizada, ao exame dos mtodos conhecidos para se encontrar os fatores do

    mdulo de um par de chaves que no caso geral (de mdulos regulares) so dois

    nmeros primos a partir da chave pblica do par. No primeiro crivo, os mtodos

    diretos mais ecientes dentre os atualmente conhecidos como o de fatorao pelo

    algoritmo NFS [31], que tem complexidade exponencial na ordem da raiz cbica do

    mdulo , so os que tem sido usados para balizar parmetros tcnicos referentes

    gerao de chaves, em estudos como o de Loebenberger [32] e em normas tcnicas

    como as da ICP-BR aludidas acima.

    Porm, a partir de 2012 surgiram novos mtodos alternativos, indiretos e potenci-

    almente mais ecientes que os diretos, candidatos ao segundo crivo. Esses mtodos se

    tornaram pblicos quando Arjen Lenstra e co-autores os propuseram, em um artigo

    8 Iniciativas de amalgamar regimes tcnico (administrativo) e jurdico (algum ramo do Direito vi-

    gente) objetivando ordenar a virtualizao de prticas sociais que possam fazer uso de criptograa

    assimtrica, em um regime integrado que geralmente se designa por ICP (ou a correspondente

    sigla em ingls, PKI Public Key Infrastructure)

    7

  • cientco publicado em fevereiro daquele ano. O contedo desse artigo foi intensamente

    debatido, entre autores e interessados, num dos principais congressos cientcos sobre

    Criptograa, dois meses depois9. Tais mtodos empregam tcnicas estatsticas para

    testes empricos, que na prova de conceito daquele artigo expuseram fragilidades em

    um dos pilares da terceira premissa de conana da assinatura digital: a saber, o de

    que os componentes que geram chaves devem estar sadios.

    Essas tcnicas assim aplicadas buscam medir a entropia mdia de geradores de

    chaves numa amostra de chaves pblicas adequadamente dimensionada, colhida dentre

    as que j foram distribudas para uso. No caso de chaves RSA, por meio de um

    clculo exaustivo porm relativamente simples: o do mximo divisor comum (MDC)

    entre mdulos da amostra. Caso esse teste encontre ndice de colises, na forma de

    ocorrncias de primo comum a mais de um mdulo, signicativamente maior que ndices

    esperados [31], ou seja, teoricamente estimados pela mxima entropia dos geradores, ou

    noutras palavras, estimados pela premissa de que os primos selecionados para compor

    cada mdulo devam ser gerados aleatoriamente10, um tal resultado pe em dvida a

    validade da terceira premissa de conana nos ambientes de origem da amostra testada.

    A prova de conceito desta tcnica, publicada por Lenstra et. al. em 2012, encontrou

    ndices de colises de primos muitas ordens de grandeza maior que os ndices espera-

    dos11, mas ela tinha duas srias limitaes. A primeira, no fato das caractersticas

    da amostra utilizada terem sido minimamente divulgadas, dicultando a anlise das

    possveis causas para os ndices de colises encontrados terem sido inesperadamente

    to altos. E a segunda, no custo computacional desconhecido, concentrado no algo-

    ritmo para clculo dos MDCs, onde a tcnica mais simples conhecida de varredura

    dos possveis pares de mdulos na amostra para clculo direto entre dois mdulos

    tem complexidade quadrtica, o que inviabilizaria (devido ao custo computacional ex-

    cessivo para se encontrar colises) essa tcnica como base para mtodos replicveis e

    escalveis, portanto, qualicveis ao terceiro crivo da hiptese tematizada.

    9 RSA Conference 2012, conforme noticiado em https://www.networkworld.com/article/

    2186408/security/alleged-rsa-crypto-flaw-hotly-debated.html

    10 Mais precisamente, de forma pseudo-aleatria (por se tratar de evento em ambiente computacional

    determinstico), o que equivale a dizer, com entropia mensurvel mxima.

    11 Na amostra inicialmente coletada, com 6.6 milhes de certicados X.509 e chaves PGP contendo

    mdulos RSA, mais de 270 mil (4,3%) compartilhavam mdulos, possivelmente entre distintos

    titulares, vulnerveis assim a ataques de personicao. Dos 12.934 que puderam ser fatorados

    por terem primo comum com algum outro mdulo, afetando 21419 certicados ou chaves PGP,

    727 eram de chaves oriundas de cercados-raiz.

    8

    https://www.networkworld.com/article/2186408/security/alleged-rsa-crypto-flaw-hotly-debated.htmlhttps://www.networkworld.com/article/2186408/security/alleged-rsa-crypto-flaw-hotly-debated.html

  • Porm, ainda em 2012, Ilya Mironov, pesquisador da empresa Microsoft, aplicando

    o mtodo indireto inaugurado por Lenstra, publicou no seu blog Windows in Theory

    um relatrio em duas partes descrevendo estudo similar, sobre fatorao de mdulos,

    que ele havia conduzido com seus colaboradores [35]. Esse relatrio analisa com mais

    profundidade a amostra testada em seu estudo, bem como as possveis causas dos

    altos ndices de colises tambm encontrados. E descreve o estado-da-arte para clculo

    de MDCs de uma quantidade qualquer de mdulos (entre os quais os fatores comuns

    devem ser raros), baseado em resultados anteriores de D Stehl & P. Zimmerman, T.

    Jebelean e D. Bernstein [20], o qual teria sido usado para os testes nesse estudo.

    E nalmente, seis meses depois, Alex Halderman, um dos mais importantes e desta-

    cados pesquisadores em segurana computacional em atividade, junto com co-autores,

    publicou um artigo [27] descrevendo outro estudo similar, onde o algoritmo eciente

    para clculo de MDCs descrito por Mironov implementado, e como esse algoritmo

    pode compor testes que detectam colises de primos comuns entre mdulos na amostra.

    A amostra de Halderman, que parece ser a maior at hoje j testada (com cerca de 24

    milhes de chaves), foi coletada com ajuda de um crawler na Internet, onde foram en-

    contrados ndices de colises de primos tambm muito acima do esperado, equivalentes

    aos encontrados no estudo pioneiro de Lenstra e no segundo estudo de Mironov.

    Cabe aqui ressaltar o detalhe que distingue o trabalho de Halderman dos dois ante-

    riores, que tambm empregam mtodos indiretos ecazes para se obter chaves privadas

    de chaves pblicas. Em um dos Apndices do seu artigo, Halderman publicou, com

    licena livre, o cdigo fonte do algoritmo FastGCD, de complexidade quasilinear12,

    usado para calculo de MDCs entre mdulos RSA amostrados para os testes em seu

    estudo. Com isso, os mtodos indiretos para se testar a premissa de assimetria em

    pares de chaves13 baseados na tcnica proposta por Lenstra, nalmente atingiram n-

    vel de qualicao ao terceiro crivo (descrito no m da seo 1.3) da hiptese aqui

    tematizada, como pretendemos mostrar ao longo deste trabalho.

    12 Ordem de complexidade temporal O(n(log10n)2log10log10n)[14]

    13 Premissa de inviabilidade, com custo cabvel, para se obter a chave privada a partir da corres-

    pondente chave pblica

    9

  • 1.5 A possibilidade realista de violao da primeira

    premissa de conana

    Comeando pela seguinte observao: com a soluo eciente para teste de coliso

    de primos disponibilizada por Halderman, atingimos um limiar indito, na possibilidade

    estatisticamente signicativa (para encontrar colises), pois proporcional inclusive em

    custo computacional ao tamanho da amostra, de violao da primeira premissa de

    conana para assinaturas digitais. Possibilidade realista, ante os ndices encontrados

    em testes j publicados14, e violao que se propaga s demais premissas: a primeira

    premissa falha a partir do momento em que um agente A consegue gerar a chave pri-

    vada de um agente B, quando ento o controle de B sobre sua chave privada deixa de

    ser exclusivo. Como B no tem mais controle exclusivo sobre sua chave privada, no

    possvel conar na titularidade de sua chave pblica, assim como no se pode presu-

    mir que B manifesta ou pode manifestar sua vontade no contedo de um documento

    assinado com sua chave privada. Tudo isso sem que B que sabendo, se a inteno de

    A for de fraud-lo ou prejudic-lo, com o desao do nus da prova pendurado em B

    pela corrente jurdica do 2o do art. 10o da MP 2200-2[17].

    Como parte desse trabalho, implementamos uma ferramenta de teste, por mtodo

    indireto, baseada no FastGCD de Halderman, com a qual pretendamos testar amostras

    de chaves pblicas coletadas de certicados digitais emitidos sob o escopo jurdico da

    ICP-BR, para avaliar se esto ou no expostas mesma vulnerabilidade encontrada nos

    trs estudos j citados, em forma de ndice de colises de primos inesperadamente alto.

    Aps implementada a ferramenta, ela foi submetida a uma fase preparatria, em que

    rodamos um teste preliminar, destinado a avaliar os limites prticos da implementao

    no ambiente em que foi instalada, e a coletar dados sobre sua performance nesse ambi-

    ente. Esse teste preliminar foi executado sobre a maior amostra de chaves pblicas que

    pudemos coletar, contendo as chaves pblicas RSA encontradas em um repositrio de

    certicados X.509 disponibilizado pelo projeto SSL Obervatory15 da ONG Electronic

    Frontier Foundation (EFF).

    Nesse teste preliminar, foi tambm encontrado ndice de colises de primos inespe-

    radamente alto, tambm equivalente aos encontrados nos testes publicados por Halder-

    man, Mironov e Lenstra. O que contribui para sustentar a hiptese de vulnerabilidade

    14 ndices que variam entre aproximadamente 0.5 e 1.2% de mdulos fatorveis, em amostras que

    vo de 6 a 24 milhes de chaves RSA, em 3 estudos publicados antes deste.

    15 https://www.eff.org/observatory

    10

    https://www.eff.org/observatory

  • generalizada no uso do RSA em larga escala , de causa ainda especulativa, manifesta

    em termos de ndices de colises de primos inesperadamente altos e semelhantes em

    amostragens independentes.

    Podemos supor que nossa amostra ao menos parcialmente independente das de

    Halderman e de Lenstra pois as chaves pblicas que coletamos estavam em certicados

    quase todos j expirados ao tempo em que o repositrio da EFF foi acessado, com data

    de gravao anterior da coleta de certicados pelo crawler de ambos (em 2012), os

    quais coletaram certicados que via de regra ainda eram vlidos estando em uso na

    web. Dados colhidos com a execuo desse teste preliminar, inclusive sobre limites do

    ambiente em que a ferramenta foi instalada, e sobre sua performance nesse ambiente

    durante a execuo desse teste, esto registrados em captulos nais.

    1.6 Motivao e caminho percorrido

    A inteno inicial com este projeto era a de executar testes, ou disponibilizar a

    ferramenta para testes, com amostras do repositrio das chaves pblicas de certicados

    j emitidos sob o regime da ICP-BR. Em 2015 o repositrio completo seria, em tese16,

    duas vezes maior que a amostra utilizada na fase preparatria, e trs vezes menor do

    que a amostra testada por Halderman. Porm, no logramos xito em vrias tentativas

    de obter acesso, seja ao repositrio da ICP-BR, ou mesmo a uma parte signicativa

    dele, seja ao efetivo custodiante desse repositrio, apesar do que determina o Art. 5

    da MP 2200-217.

    A estratgia de coleta de uma parte signicativa desse repositrio por crawling na

    Internet no funcionaria para este caso porque a grande maioria dos certicados gerados

    no regime da ICP-BR se destinam a assinatura digital de documentos, e no a servios

    on-line (como por exemplo, via SSL), e portanto, a grande maioria desses certicados

    no precisa car, e por isso no se encontra, on-line. Por uma leitura tcnica do conceito

    de gesto referida nesse Art. 5, dispositivo que est em uma norma legal equiparvel

    a Lei federal, a responsabilidade pela gerncia de todos os certicados emitidos sob o

    11

  • regime da ICP-BR, caberia sua Certicadora Raiz, incorporada pelo ITI.

    Os termos em que foram dirigidas propostas ao ITI, seja para disponibilizao do

    repositrio visando a execuo de testes no ambiente em que foi implementada a ferra-

    menta, seja para disponibilizao da mesma visando execuo de testes em ambiente

    controlado pelo custodiante do repositrio, buscando encontrar uma forma em que a

    modalidade acordada para testes pudesse ser empregada, junto com providncias ca-

    bveis, para robustecer, ao invs de vulnerar, o arcabouo tcnico-jurdico da ICP-BR

    por exemplo, com revogao por motivos tcnicos dos certicados que colidirem

    durante testes , esto tambm aqui registrados, em cpias de documentos includas

    como anexos.

    Em consequncia desta indisponibilidade, numa situao em que sequer tivemos

    resposta do custodiante legal, nem mesmo para informar se o repositrio dos certicados

    da ICP-BR existe ou no, adaptamos a ferramenta para testes individuais com qualquer

    chave pblica RSA, contra a amostra de mdulos contida no repositrio que foi nela

    integrado, e inicializado com os mdulos das chaves disponibilizadas no repositrio da

    EFF em certicados j expirados. A ferramenta permite a opo de prova dos nove,

    de deduo da correspondente chave privada se o mdulo da chave pblica testada

    apresentar coliso com algum mdulo do repositrio.

    16 Nmero aproximado de certicados ento j emitidos, conforme o diretor da Associao de Au-

    toridades de Registro da ICP-BR, Nivaldo Cleto. A declarao citada est disponvel no vdeo

    https://www.youtube.com/watch?v=L-TWnc2zvBc , no tempo 28:50, do painel: Privacidade,

    Segurana, Criptograa e Identidade digital - Tendncias , no Frum de Privacidade do CGI-BR,

    em 2016.

    17 Descrita na seo 7.2 e analisada nas consideraes nais

    12

    https://www.youtube.com/watch?v=L-TWnc2zvBc

  • Captulo 2

    Raiz do Problema

    2.1 Identicando a raiz do problema

    Neste captulo, vamos averiguar a natureza de uma das vulnerabilidades expostas

    nos trs estudos citados, representada por ndice inesperadamente alto de colises de

    primos entre mdulos RSA, com diagnstico mais plausvel de causa na insucincia

    de entropia para o processo de gerao de chaves em ambientes de origem da amostra.

    Tal suspeita principal foi dissecada num desses estudos, o de Mironov, enquanto com

    Halderman, tais estudos se tornaram replicveis e escalveis, a partir da livre disponi-

    bilizao do algoritmo quasilinear implementado para teste de colises de primos entre

    mdulos, validando assim tambm a hiptese tematizada nessa monograa, onde tal

    vulnerabilidade ganha status de problema para protocolos de certicao digital. Pro-

    blema tcnico de segurana, pois no cenrio atual esses protocolos vm sendo usados,

    em larga escala, com chaves RSA.

    J no domnio jurdico, o risco decorrente dessa vulnerabilidade (ou de seu corres-

    pondente problema de segurana) o de falha nas premissas de conana para uso de

    chaves criptogrcas certicadas. Risco que passa a ser bem maior que o teoricamente

    estimvel por avaliaes isoladas, mediante a existncia de procedimento computaci-

    onal violador replicvel e de eccia escalvel, que ultrapassa em muitas ordens de

    grandeza essas estimativas, tornando-as irreais. Mais precisamente, mediante tcnica

    indireta de se fatorar o mdulo de uma chave pblica calculando-se MDCs entre m-

    dulos, para da derivar a chave privada correspondente, caso o mdulo desta chave

    pblica venha a colidir com outro de uma coleo, agregada seja para testes, seja para

    um tal procedimento visando violao dessas premissas.

    13

  • necessrio ento que perguntemos como o mtodo indireto implementado e vali-

    dado nos trs estudos citados foi capaz de expor uma vulnerabilidade que se transforma

    em problema de segurana para protocolos de certicao. Existe uma grande quan-

    tidade de possveis explicaes para a ocorrncia de ndices inesperadamente altos de

    colises de primos nesses estudos, conrmado agora tambm em nosso teste prelimi-

    nar, mas neste captulo abordaremos apenas trs dentre as mais provveis explicaes,

    de natureza tcnica, tomando como principal referncia o estudo publicado por Miro-

    nov [35],

    Analisaremos primeiramente a conabilidade do prprio algoritmo RSA. O tama-

    nho dos mdulos utilizados para gerao de chaves para esse algoritmo pode variar e

    essa variao poderia, aparentemente, contribuir para elevar o ndice de colises numa

    amostra que contenha mdulos de tamanhos variados. Em seguida, ser analisada a

    possvel relevncia da variao de tamanho dos intervalos entre primos consecutivos

    entre os nmeros inteiros ordenados. E por m, a questo relacionada insero de

    entropia no processo que seleciona nmeros primos para compor mdulos, atravs do

    uso de geradores pseudorandmicos (PRNGs).

    2.1.1 O RSA (isoladamente) robusto?

    Pode-se culpar o algoritmo criptogrco RSA em si? Como ser que a quantidade

    de primos gerados para compor mdulos em eventos independentes e de tamanhos

    variados, aumenta a probabilidade de um primo se repetir em diferentes mdulos, e

    portanto, de se envolver em colises? Um mdulo RSA um produto de primos, via

    de regra dois1, os quais neste caso so recomendados serem de tamanho igual. De

    tamanhos iguais, esses dois primos devem ter ento metade do tamanho do mdulo

    RSA. O tamanho do mdulo parmetro independente na gerao de chaves. Con-

    sequentemente, nas amostras coletadas para os estudos citados aparecem mdulos de

    tamanhos variados. Nessas amostras, a grande maioria dos mdulos tinha entre 1024

    bits e 2048 bits, e quase sempre em um desses dois tamanhos2. Ao passo que, nos

    1 Para mdulos ditos regulares. Cabe aqui observar que, dentre os trs estudos citados, apenas

    o estudo pioneiro de Lenstra mencionou a possibilidade de mdulos no regulares ocorrerem na

    amostra, ao notar que eram regulares todos os mdulos aderentes aos padres para chaves RSA

    que foram fatorados mediante coliso (conforme nota de rodap 4 em [30])

    2 No primeiro teste do estudo pioneiro de Lenstra, por exemplo, 73,9% dos mdulos tinham 1024

    bits, e 21,7% tinham 2048 (mais de 95% com um desses dois tamanhos). Ao passo que, dentre

    as colises encontradas, a porcentagem representativa foi maior entre os menores (de 1024 bits).

    14

  • testes de coliso, a grande maioria dos mdulos fatorados tinha 1024 bits, com pelo

    menos um fator primo de at 512 bits. Avaliando supercialmente, pode-se imaginar

    que mdulos de tamanho pequeno teriam implicao na ocorrncia de altos ndices de

    coliso. Ento, concentremo-nos por enquanto neles.

    A densidade de nmeros primos de 512 bits aproximadamente 1/ln(2512) 1/350.O que signica que a probabilidade de se escolher um nmero primo no intervalo de 1 at

    2512 de aproximadamente 0.285% e o nmero total de primos nesse intervalo maior

    do que 2503. Para alcanarmos uma probabilidade de pelo menos 50% de se observar

    uma coliso entre primos escolhidos, de maneira puramente aleatria, no intervalo

    entre 2502 at 2503, seria necessrio (pelo paradoxo do aniversrio3) a gerao de 2250

    nmeros primos, quantidade 1065 vezes maior que a quantidade mdia envolvida nas

    amostras estudadas (1010 mdulos), cujo teste pelo MDC produziu dezenas de milhares

    de colises. Devido a essa quase incomensurvel disparidade, pode-se concluir no s

    que a diferena entre tamanhos de mdulos na amostra, entre 1024 e 2048 bits por

    exemplo, irrelevante para a anlise desejada, como tambm possvel concluir que

    colises devidas densidade de nmeros primos no intervalo dos menores pode ser

    ignorada.

    2.1.2 Intervalos entre nmeros primos

    Examinemos um algoritmo tpico para selecionar nmeros primos:

    1. Gerar um nmero mpar randmico r de tamanho t bits;

    2. Se r for primo, retorna r e para;

    3. r r + 2, volte para o passo 2.

    Onde a expresso booleana no passo 2 acima um teste por um mtodo de Monte-

    Carlo4 para detectar nmeros primos, calculando-se nmeros de Jacobi de uma srie

    aleatria entre os resduos do candidato r (como por exemplo, o teste de Miller-Rabin).

    No lao externo do algoritmo acima, os nmeros compostos da sequncia vo sendo

    descartados at que se alcance um que passe no teste de primalidade.

    3 Princpio de contagem combinatria que ganha o nome de um exemplo simples mas antiintuitivo

    de sua aplicao . Vide https://pt.wikipedia.org/wiki/Paradoxo_do_anivers%C3%A1rio

    4 Mtodo para construir uma classe de algoritmos que calculam probabilidades baseadas em uma

    srie de amostragens aleatrias,...([38] Pg. 18)

    15

    https://pt.wikipedia.org/wiki/Paradoxo_do_anivers%C3%A1rio

  • Considerando os candidatos r aptos a passar no teste por serem primos, sabemos

    que a distribuio desses no uniforme, j que depende no s (estatisticamente) da

    densidade de primos no intervalo delimitado pelo tamanho t escolhido, mas tambm

    da distribuio precisa dos primos nesse intervalo. Assim, qualquer primo de tamanho

    t selecionvel por um algoritmo desse tipo com probabilidade tambm proporcional

    ao tamanho do intervalo que o separa do primo antecessor (supondo a inicializao de

    r puramente aleatria).

    Teria essa no uniformidade dos intervalos entre primos algum efeito signicativo

    no ndice de colises de primos entre mdulos, encontrados nos testes?

    Para uma estimativa desse efeito, consideremos o seguinte: Seja p1, p2, . . . , pm, onde

    pm so os primeiros m primos. A probabilidade do i-simo nmero primo ser escolhido

    ser:(pi pi1)

    pm.

    Chamemos essa distribuio de q. A probabilidade de duas amostras independentesdessa distribuio colidirem, conforme descrita por Mironov, dada por:

    Pra,bq[a = b] =mi=1

    Pra,bq[a = pi].P ra,bq[b = pi] =mi=1

    (pi pi1)2

    p2m

    Dada a probabilidade de uma nica coliso, o nmero esperado de colises entre n

    amostras independentes e puramente aleatrias sobre q (n2

    )n2/2 vezes maior (por

    aproximao linear). Se os primos estivessem distribudos uniformemente entre os n-

    meros inteiros ordenados, ento a probabilidade de coliso seria 1/m e, para garantir

    que a quantidade esperada de colises seja de pelo menos 1, o nmero de amostras n

    deve ter tamanho mnimo de2m (o limite do paradoxo do aniversrio3). Porm, pri-

    mos consecutivos no se encontram uniformemente espaados entre os nmeros inteiros

    ordenados, e intervalos relativamente grandes ocorrem.

    O matemtico Atle Selberg provou [18], usando a hiptese de Riemann [21], a

    melhor cota (condicional) superior temporal conhecida para o calculo da soma

    mi=1

    (pi pi1)2

    pi O(log3 pm)

    16

  • o que se traduz no seguinte limite para probabilidade de coliso:

    Pra,bq[a = b] = O(log3 pmpm

    ) = O(log2m log log3m

    m)

    visto que:

    pm m logm.

    O limite de Selberg signica que o efeito de espaamentos irregulares entre primos

    consecutivos pode aumentar assintoticamente por um fator de ordem

    O(log2m log log3m)

    comparado ao caso simplicado (de espaamento uniforme entre primos). Assim, exa-

    minando essa quota sublinear, possvel concluir que o espaamento no uniforme

    entre primos consecutivos insuciente para explicar a discrepncia em vrias ordens

    de grandeza entre os ndices encontrados em testes de coliso nas amostas estudadas,

    e os ndices teoricamente estimados com tal simplicao (que considera intervalos

    uniformes entre primos consecutivos).

    2.1.3 A raz da vulnerabilidade

    Observamos at aqui que a probabilidade de coliso de primos devida ao tamanho

    da amostra de mdulos, ou devida variao nos tamanhos dos mdulos, ou devida ao

    espaamento irregular entre dois primos consecutivos dentre os inteiros ordenados, no

    causa signicativa para o ndice de colises encontrado estar tantas ordens de grandeza

    acima do esperado, quando se considera as caractersticas do RSA como algoritmo

    isolado. Qual seria ento o real motivo para os ndices de coliso encontrados com

    testes de MDC entre mdulos RSA em amostras reais?

    Resta ento considerar a terceira hiptese: a saber, a de que os resultados desses

    testes reais, comparados aos ndices de coliso teoricamente antecipveis, esto indi-

    cando baixa entropia na gerao de chaves em ambientes de origem da amostra. O

    que apontaria falhas de projeto ou de implementao, ou erros de programao, nos

    softwares que geram as chaves, e no falha matemtica em estimativas de ndices espe-

    rados ou no algoritmo RSA. Ou seja: uma sutil, porm catastrca, diferena prtica

    real entre o pseudorandmico e o puramente randmico.

    Se houver falha sistemtica ou aleatoriedade insuciente na inicializao da fonte de

    17

  • entropia que, na etapa de gerao de chaves, inicia o processo para seleo dos nmeros

    primos que iro compor o mdulo da chave, ento duas chamadas independentes a essa

    fonte podero resultar em outputs com ndice inesperadamente alto de bits coincidentes,

    em cujo caso esses bits de inicializao randmica (pseudorandomica) em instncias

    independentes poderiam propagar coincidncias, e convergi-las para eventuais colises

    ao longo do processo de gerao descrito acima, at a seleo de um mesmo primo.

    18

  • Captulo 3

    Um problema ou vrios?

    3.1 Anlise dos possveis problemas

    A hiptese de existncia de mtodo indireto que pode expor vulnerabilidades no

    arcabouo tcnico-jurdico da ICP-BR foi conrmada pela divulgao dos trs estudos

    estatsticos citados, que utilizam, dentre outros recursos, algoritmo quasilinear para

    fatorao (via MDC) de mdulos de chaves RSA. A parte desses estudos relativa

    vulnerabilidade explorvel por fatorao de mdulos foi validada neste trabalho, pelo

    teste preliminar realizado como etapa preparatria.

    Dentro do que propomos nele tematizar, caberia ento, na etapa seguinte deste

    trabalho, analisar como esse mtodo e seus resultados podem ser utilizados para defesa,

    para robustecer ao invs de vulnerar, no s o arcabouo normativo da ICP-BR, mas

    tambm os protocolos de certicao disseminados na Internet, em ICPs sob outros

    regimes normativos.

    Com respeito parte validada neste trabalho, se a mais provvel causa (inicialmente

    analisada no captulo anterior) para ndices inesperadamente altos de colises que

    viabilizam ataques probabilsticos por fatorao de mdulos de chaves pblicas est na

    m escolha da fonte de entropia em processos que geram primos para compor mdulos

    de chaves RSA, ento deve ser possvel rastrear e identicar as bibliotecas ou programas

    que implementam cdigo ou especicao contendo falhas. Nessa tarefa, o primeiro

    desao seria localizar um ou mais geradores de primos ruins ou perigosos no

    sentido de suspeitos de conterem implementaes falhas disponveis no mercado.

    Nesse desao, a questo inicial a responder : Seria possvel identicar geradores

    ruins ou perigosos a partir da amostragem, ou seja, examinando-se apenas as chaves e

    19

  • certicados que as transportam para a amostra nos testes realizados? Sem a colabora-

    o ou participao do responsvel legal pela gesto do repositrio de certicados da

    ICP-BR, no foi possvel avanar nas etapas seguintes originalmente planejadas para

    este trabalho. Nem o ser em trabalhos futuros, considerando-se o perl de uso de

    certicados sob o regime da ICP-BR (descrito no segundo pargrafo da seo 1.6),

    e o contexto de indisponibilidade, tanto desse repositrio quanto da colaborao ou

    participao do responsvel legal por ele, at aqui absolutas.

    Quanto s demais vulnerabilidades encontrveis pelo mtodo indireto aqui descrito,

    h uma outra, de implicaes jurdicas em regimes como o da ICP-BR potencialmente

    mais graves que as decorrentes do risco de fatorao de mdulos via MDC, aqui abor-

    dada. A saber, a ocorrncia de chaves ou de mdulos1 RSA repetidos em mais de um

    certicado, se os titulares no forem o mesmo. No estudo de Lenstra, por exemplo,

    cerca de 4,3% dos 6.185.228 certicados X.509 amostrados tinham mdulo ou chave

    pblica iguais ao de outro certicado, onde o risco correspondente2 no pde ser avali-

    ado no contexto da amostragem, exigindo cautela e discrio adicionais no tratamento

    e custdia da amostra coletada.

    Diante da deliberada e absoluta indisponibilidade, at o momento de concluso

    deste trabalho, de uma amostragem signicativa para testes no contexto normativo da

    ICP-BR, cabe ento restringir esse captulo ao que podemos alcanar. Encerrando-o

    com um resumo abrangente da investigao conduzida em estudos j citados, relativa

    ao desao tcnico posto pela vulnerabilidade aqui abordada. A saber, o desao de

    identicar geradores ruins ou perigosos a partir da amostragem disponvel. O resumo

    abaixo, extrado do estudo de Mironov, til no sentido em que poderia nos servir

    como roteiro ou modelo para o contexto da ICP-BR, ou poder nos servir em trabalho

    futuro, em caso de eventual disponibilidade til.

    1 Mdulo e expoente da chave pblica repetidos entre certicados implica repetio tambm da

    respectiva chave privada, em cujo caso o risco para titulares distintos o de personicao,

    se um deles vier a saber desta repetio. Repetio apenas do mdulo muito improvvel,

    pois expoentes de chaves pblicas RSA no costumam variar muito: nos mais de 6 milhes

    de certicados X.509 coletados por Lenstra, por exemplo, 98,49% usavam o mesmo expoente

    (65537), e 99,99% usavam um dentre os nove mais comuns. Se apenas o mdulo for repetido,

    com exponentes para a chave pblica distintos, o risco se reduz a apenas o de vazamento quando

    ambas chaves pblicas forem usadas para cifrar uma mesma mensagem.

    2 O risco quando os titulares de chaves ou mdulos duplicados no so o mesmo, ou no represen-

    tarem a mesma entidade, descrito na nota de rodap anterior.

    20

  • 3.2 Anlise do perl dos primos em mdulos fatora-

    dos

    Os mdulos fatorados por Mironov [27] foram classicados em dois grandes grupos:

    o primeiro grupo, tambm detectado por Haldeman3, formado por mdulos gerados

    por dispositivo de hardware fornecido por um nico fabricante; enquanto o segundo,

    formado por mdulos cujos certicados ou fatores primos apresentam pouco em comum,

    em termos de dados que permitiriam identicar diretamente o gerador. razovel

    supor que essas classicaes preliminares podem tambm ter usado metadados de

    conexes, coletados pelo crawler que gerou parte da amostra utilizada nos estudos

    de Lenstra e de Haldeman, cujos correspondentes no existem no repositrio da EFF

    utilizado em nossa etapa preparatria. O estudo de Mironov [35], que tenta renar sua

    classicao preliminar, comea apelidando o grupo menor de Zoo.

    Uma bateria de testes realizada por Mironov, descrita em seu artigo, detectou,

    dentre vrias curiosidades, esta: para cada um dos menores primos mpares q, s um

    por cento em mdia dos fatores dos 3046 mdulos no grupo Zoo tem resduo 1modq.

    O padro criptogrco ANSI 9.31 especica primos fortes4 para compor mdulos RSA,

    mas primos fortes so muito onerosos de se encontrar. Ento, muitas implementaes

    permitem que se opte por seleo de primos que atendem parcialmente essa condio, os

    chamados primos seguros5(menos onerosos), ou nenhuma (menos ainda). A seleo

    pseudoaleatria de primos fortes p no impediria uma distribuio estatstica normal

    de fatores q pequenos6 para os p 1, mas a seleo de primos seguros, sim. Todavia,uma outra caracterstica detectada no grupo Zoo contraria a observao acima como

    explicao: dentre os p que fatoram esses mdulos, a maioria no de primos seguros.

    Ento, o que explica essa quase completa escassez de fatores primos pequenos para os

    p 1 no grupo Zoo?

    Mironov identica ento essa escassez quase completa de resduos 1modq (para

    q = 3, q = 5, q = 7, etc) entre os fatores dos mdulos no grupo Zoo como uma

    espcie de impresso digital (ngerprint), ou trao especco, do gerador de primos

    implementado em uma determinada biblioteca criptogrca, cuja utilizao larga-

    3 Conforme descrito na seo 3.2 do estudo publicado por Haldeman.

    4 Um primo p dito forte (strong) se p 1 e p + 1 tiverem ambos pelo menos um fator primogrande.

    5 Um primo p dito seguro (safe) se p = 2q + 1 onde q tambm primo.

    6 Ou seja, que p tenha resduo 1modq para q = 3, q = 5, q = 7, etc.

    21

  • mente disseminada entre aplicaes que fazem uso do algoritmo RSA na Internet. E

    explica, conforme a seo abaixo.

    3.2.1 Gerao de primos na biblioteca OpenSSL

    Para analisar o procedimento que estaria produzindo esse trao especco ao gerar

    primos, implementado na biblioteca identicada por Mironov como principal suspeita

    pelas colises no grupo Zoo, replicamos dois pseudocdigos que ele inclui para sua

    anlise. O primeiro pseudocdigo, ele arma corresponder a um algoritmo perfeita-

    mente razovel para selecionar primos classicados como seguros, no qual lhe parece

    estar baseado o segundo, que codica o supracitado procedimento na respectiva bibli-

    oteca do OpenSSL.

    1. Gerar um nmero randmico r de tamanho n (bits);

    2. enquanto r ou (r 1) so divisveis por qualquer p2 p2048;

    3. r r + 2;

    4. usar o teste de Miller-Rabin [36] para checar se (r 1)/2 primo,seno v para o passo 1;

    5. usar o teste de Miller-Rabin para checar se r primo, seno v para

    o passo 1;

    6. retorna r como output (primo).

    (obs.: a biblioteca OpenSSL contm uma tabela embutida em seu cdigo com os pri-

    meiros 2048 nmeros primos, referidos aqui por p1 p2048)

    3.2.2 Gerao de primos no necessariamente seguros na bibli-

    oteca OpenSSL

    Para mdulos RSA que no necessitam de primos classicados como seguros, a

    biblioteca OpenSSL aplica o seguinte procedimento para gerar um nmero primo:

    1. Gerar um nmero randmico r de tamanho n bits;

    2. enquanto r ou (r 1) forem divisveis por qualquer p2 p2048 ;

    22

  • 3. r r + 2;

    4. usar o teste de Miller-Rabin para checar se r primo, seno ir para

    o passo 1;

    5. retorna r como output (primo).

    Mironov salienta que, neste procedimento, apenas teria sido retirado o terceiro

    passo do algoritmo anterior. O segundo passo se manteve inalterado7 (apesar de apa-

    rente falta de justicativa aqui), o que explica a distribuio peculiar de fatores primos

    dos mdulos no grupo Zoo, para os quais so rarssimas as ocorrncias de resduos

    1mod3, 1mod5, , 1mod17863, mas onde os primos ditos seguros so minoria. Outrodetalhe destacado por Mironov como importante, o de que a seleo peculiar de pri-

    mos com essa propriedade no representa vulnerabilidade para a respectiva biblioteca,

    apenas uma espcie de trao caracterstico, originado pelo cdigo especco que dela

    gera tais primos.

    Explicando: um primo qualquer de 512 bits ter essa propriedade com probabili-

    dade dada por2048i=2

    pi 1pm

    7, 5% [35] no caso de primos de 512 bits. Isso quer dizer

    que o procedimento utilizado para gerar primos no necessariamente seguros na biblio-

    teca OpenSSL computa funo simblica de contradomnio menor do que a coleo de

    primos que poderiam ser selecionados sem o crivo dessa propriedade. Reduzido, por

    exemplo, para 7,5% com primos de 512 bits. Todavia, essa reduo dos selecionveis

    no suciente para causar, sozinha, aumento sensvel na probabilidade de colises8.

    Nem para facilitar, heuristicamente, a fatorao de mdulos RSA com um algoritmo

    especial, que seria efetivo apenas para uma parcela irrisria de mdulos9.

    Assim, esse trao caracterstico, originado no segundo passo do pseudocdigo refe-

    rente ao procedimento para gerar primos no necessariamente seguros que se encontra

    na respectiva biblioteca do OpenSSL, levou Mironov a concluir, com alto grau de cer-

    teza, que 96,72% dos mdulos no grupo Zoo de sua amostra foram gerados por esta

    biblioteca. Concluso que, apesar de derivada de um raciocnio probabilstico, no

    pode ser estendida aos demais mdulos que colidiram na sua amostra.

    7 Nessa observao, precedida da adjetivao perfeitamente razovel ao apresentar o pseudocdigo

    anterior, Mironov d a entender (mas sem explicar) que considera o segundo passo justicado no

    primeiro algoritmo, talvez por razes de performance, mas no no segundo procedimento.

    8 Tendo em vista as probabilidades calculadas na primeira subseo do captulo anterior.

    9 Por exemplo, para 0.05625% dos mdulos de 1024 bits.

    23

  • Mironov descarta tambm a mesma origem para os mdulos no primeiro grupo,

    identicado como oriundo de um nico produtor de hardware. Assim como Haldeman,

    em sua publicao Mironov no revela a identidade desse produtor. Apenas arma

    que, pelas evidncias encontradas, ele pde concluir que o software utilizado para gerar

    primos so de natureza distinta nos dois grupos. E conclui apontando um grande

    vilo, responsvel no segundo grupo por essa vulnerabilidade exposta com o mtodo

    indireto inaugurado por Lenstra: a existncia de dispositivos (e sistemas) que falham

    na inicializao adequada de geradores pseudorandmicos.

    Voltamos agora um passo, ao desao sendo abordado nesse captulo, que o de

    rastrear e identicar bibliotecas ou programas que implementam cdigo ou especica-

    o contendo falhas capazes de explicar ndices inesperadamente altos de colises de

    primos entre mdulos amostrados. Podemos reetir sobre o que encontramos, resu-

    mido acima, nos trs estudos citados. O estudo pioneiro optou por relegar tal desao

    ou no divulgar detalhes10, enquanto os outros dois descrevem uma classicao pre-

    liminar, onde os mdulos fatorados se dividem em dois grupos, com o grupo maior

    rastrevel a um nico fornecedor de dispositivo de hardware. Este fornecedor teria sido

    noticado a respeito, mas sua identicao no divulgada. E um desses dois estudos,

    publicado no blog Windows on theory em maio de 2012, rastreia o grupo menor, por

    um trao caracterstico comum entre os primos encontrados nas respectivas fatoraes,

    identicando a origem de quase todos biblioteca que gera chaves RSA no software

    OpenSSL.

    Esse rastreamento do grupo menor termina ento com uma anlise sobre a natureza

    da falha encontrada na biblioteca identicada. Seria uma falha de implementao, e no

    de especicao do software, apesar da peculiaridade dessa especicao (que permitiiu

    o rastreamento), em evitar fatores pequenos nos antecessores dos primos selecionveis,

    reduzindo assim o escopo para seleo de primos. Com tal falha classicada como

    de implementao, e no de especicao, o rastreamento da causa de ndices inespe-

    radamente altos de colises de primos entre mdulos amostrados prossegue. Agora,

    nos contextos onde tal biblioteca empregada, ou seja, nos ambientes computacio-

    nais em que ela integrada e inicializada para gerar chaves RSA, em aplicaes que

    disponibilizam ou utilizam as correspondentes chaves pblicas (amostrveis) on-line.

    10 Conforme se depreende da nota de rodap 7 em Lenstra[30]

    24

  • 3.3 Onde e quando o OpenSSL utiliza geradores pseu-

    dorandmicos com baixa entropia?

    No mesmo estudo, o investigador comenta a prtica comum de dispositivos gerarem

    certicados de chave pblica como parte da sequncia de inicializao. De fato, e no

    s: tambm aplicaes que rodam em background, os geram durante a sequncia de

    boot do sistema onde foram instaladas, quando inicializadas pela primeira vez. Nesses

    casos, a menos que o gerador pseudorandmico utilizado para alimentar a gerao de

    chaves receba uma semente inicializadora de uma fonte de entropia suciente, o seu

    output ser previsvel, de escopo inadequado ou xo. Em que situaes isso ocorre?

    Assunto para o captulo seguinte, onde prosseguiremos com essa anlise, exami-

    nando geradores pseudorandomicos que podem ser livremente analisados. Especica-

    mente, os geradores pseudorandomicos especicados na arquitetura POSIX que so

    nativos nos sistemas operacionais mais difundidos do mesmo regime de produo de

    software onde nasce o OpenSSL, que o de desenvolvimento colaborativo e licenci-

    amento permissivo (FOSS). Antes, porm, oferecemos uma reexo sobre essa trilha

    investigativa, no contexto deste captulo e do prximo.

    Para rastrear com sucesso o trao caracterstico encontrado em fatores primos no

    grupo menor de sua amostra de mdulos com colises, e mais importante, para publicar

    sem reservas o que quisesse sobre sua investigao bem sucedida com tal grupo, Mironov

    precisou contar com um recurso essencial. A saber, a disponibilidade irrestrita do

    cdigo fonte de uma potencial suspeita. E para seu sucesso, inclusive em convencer-nos,

    ele contou com o fato da sua principal suspeita disp-lo: uma biblioteca criptogrca

    amplamente difudida, produzida e distribuda com licena livre.

    Mas quanto ao grupo maior? De origem identicada presumivelmente com bem

    mais facilidade a um nico fornecedor, sobre o qual nada nos dado saber? Nem sobre

    sua identidade, nem da sua reao postura tica dos investigadores, que optaram por

    responsible disclosure11? E para o nosso sucesso, em aprender como as ICPs devem

    evoluir aps expostas a novas vulnerabilidades com o mtodo indireto, nem que seja

    por nossas escolhas? Nada. Assim como acerca da monopolista ICP-BR, at aqui,

    nada. Problema tambm, mas este, de causa em conito de interesses no jogo de poder

    11 Modelo para priorizar critrios relativos divulgao de vulnerabilidades descobertas em

    softwares e produtos computacionais: ver https://en.wikipedia.org/wiki/Responsible_

    disclosure

    25

    https://en.wikipedia.org/wiki/Responsible_disclosurehttps://en.wikipedia.org/wiki/Responsible_disclosure

  • que se sobrepe a questes tcnicas. Problema grave, pois conana na acepo aqui

    denida no pode ser imposta, seja por poder legislativo, nanceiro ou blico.

    Ao encerrar este captulo com tal reexo, a inteno permitir-nos interpretaes

    construtivas para o contexto tematizado neste trabalho. O regime de licenciamento

    permissivo, que essencial trilha investigativa a ser prosseguida no captulo prximo,

    permite no apenas uso e redistribuio do software licenciado, mas tambm seu es-

    tudo, tambm para modicaes e adaptaes, recompilaes e testes realistas com

    o correspondente cdigo fonte. Inclusive contribuies de correes ao mantenedor, e

    redistribuies de variantes, onde todos podem aprender com a descoberta de erros e

    tentativas de corrigir falhas. Prerrogativas vedadas nos produtos, ofuscados por design,

    e aos clientes da empresa para quem trabalha o desbravador dessa trilha aqui (Mironov

    trabalha para a Microsoft). Sigamos ento, na trilha do aprendizado (tcnico) possvel.

    26

  • Captulo 4

    Geradores Pseudorandomicos no

    Kernel LINUX

    Nmeros e sequncias binrias com propriedades mensurveis de aleatoriedade de-

    sempenham um papel crtico e importante na criptograa computacional moderna.

    Algoritmos como One-Time-Pad, DES, RC4, RSA etc, e protocolos como os das crip-

    tomoedas1, tm sua robustez diretamente relacionada com a implementao adequada

    dos geradores de nmeros com tais propriedades [28].

    Qualquer denio formal de aleatoriedade, porm, corre o risco de ser entendida

    como paradoxal2, razo pela qual as que se pretendem srias costumam ser dadas em

    discursos ou contextos loscos. Para a Computao, que opera com circuitos eletr-

    nicos e dispositivos programveis via de regra determinsticos, mas onde o conceito

    inevitvel e se torna cada vez mais importante, a sada trabalhar com uma noo me-

    nos ambiciosa de aleatoriedade, restrita s suas propriedades diretamente mensurveis.

    Renunciando-se, por exemplo, tentativa de se cercar ou buscar garantir propriedades

    imensurveis ou de mensurao imprecisa, como a irreprodutibilidade por exemplo.

    Circuitos ou dispositivos programveis concebidos para gerar sequncias binrias

    com propriedades diretamente mensurveis de aleatoriedade so por isso chamados de

    geradores de sequncias pseudoaleatrias, ou mais frequentemente, geradores de nme-

    ros pseudorandmicos, ou abreviadamente, geradores pseudorandmicos, comumente

    designados pelo correspondente acrnimo em ingls: PRNGs.

    1 Essenciais na implementao de conceitos fundamentais, como por exemplo o de Proof of Work

    2 Como denir um padro para a propriedade de no se seguir nenhum padro?

    27

  • O objetivo deste captulo prosseguir na trilha investigativa resumida ao nal do

    captulo anterior, explorando os geradores pseudorandmicos padronizados na arquite-

    tura POSIX3, disponibilizados em verses de ncleos de sistemas operacionais como o

    desenvolvido e mantido pela fundao Linux. Especicamente, vamos analisar as fun-

    es random e urandom do kernel Linux, em busca de suas fragilidades operacionais.

    4.1 Propriedades de um gerador pseudorandmico se-

    guro

    Uma lista das caractersticas externas de um gerador pseudorandomico ideal pode

    ser encontrada, por exemplo, em[10]:

    1. Um adversrio que descubra o estado atual do gerador no pode aprender nada

    sobre as sadas geradas previamente.

    2. Um adversrio que descubra o estado atual do gerador no pode aprender nada

    sobre as sadas futuras desse gerador.

    3. Um gerador inicializado com os mesmos tipos de entrada j utilizadas em al-

    gum momento, deve produzir uma sequncia de bits sem qualquer relao com a

    sequncia produzida anteriormente.

    4.1.1 Estrutura dos PRNGs random e urandom no Linux

    A estrutura dos geradores PRNG no Linux formada por trs processos assncronos[26].

    No primeiro processo, o sistema operacional coleta dados variados de eventos no kernel.

    O segundo processo denido pela alimentao do repositrio de entropia (reposit-

    rio primrio), utilizando uma funo de mistura. O terceiro processo ocorre quando

    bits em ordem aleatria so solicitados. Nesse processo o output gerado, seguido da

    atualizao do repositrio primrio. A gura 4.1 descreve o uxo de bytes no gerador

    pseudorandmico.

    A coleta de entropia subproduto dos eventos originados no kernel pelo teclado,

    pelo mouse, por interrupes do sistema e por acessos ao disco. Quando um evento

    3 Padro de portabilidade e interoperabilidade para sistemas operacionais (ver, por exemplo,

    https://pt.wikipedia.org/wiki/POSIX)

    28

    https://pt.wikipedia.org/wiki/POSIX

  • Figura 4.1: esquema PRNG [26]

    desses ocorre, duas palavras de 32-bits so usadas como entrada no repositrio primrio,

    via processo de mistura. A primeira palavra codica o tempo medido em jies4 ou em

    ciclos granulares de CPU. A segunda palavra codica o tipo de evento correspondente.

    Como estamos tratando de processos assncronos para a alimentao dos reposit-

    rios, o repositrio secundrio s recebe dados a partir do momento em que o valor de

    entropia do repositrio primrio se torna mximo, isto , quando o contador de entro-

    pia deste atinge o valor 4096. Quando o repositrio secundrio atinge a sua entropia

    mxima, o processo no repositrio primrio retomado. O processo de adio ao con-

    tador de entropia5 determinado por um clculo da estimativa de entropia entrante

    no respectivo repositrio.

    4.1.2 Outputs dos repositrios

    Existem somente trs outputs gerados pelos repositrios presentes na estrutura dos

    geradores PRNG no Linux . A extrao de bits do repositrio primrio ocorre somente

    quando o repositrio secundrio ou o repositrio urandom no tm entropia suciente e

    precisam ser realimentados. A extrao de bits de urandom ocorre quando um processo

    4 Unidade que corresponde ao nmero de milissegundos de diferena no tempo de relgio em que

    o evento ocorreu, e o tempo em que o sistema foi inicializado.

    5 No sentido de medida de incerteza quanto previsibilidade habilitada pelo contexto, na forma

    denida pela Teoria Matemtica da Informao de Claude Shannon

    29

  • de usurio ou do kernel pede uma quantidade qualquer de bits aleatrios pela chamada

    /dev/urandom ou get-random-bytes, respectivamente. A extrao de bits do repositrio

    secundrio ocorre quando um usurio usa a chamada /dev/random.

    O processo de extrao de entropia (ou seja, de dados aleatrios) ocorre em trs

    etapas.

    1. Extrao de bits aleatrios como sada;

    2. Decremento do contador de entropia do respectivo repositrio relativo

    sada (na etapa 1);

    3. Atualizao do contedo presente no repositrio, envolvendo o hashing

    do contedo dos repositrios utilizando SHA-1 e a adio dos

    resultados nos repositrios.

    Cada processo citado acima ser abordado com maior detalhamento nas sees

    posteriores.

    A principal diferena entre os PRNG em /dev/random e em /dev/urandom est

    no fato de que, caso o contador de entropia do repositrio secundrio seja menor do

    que a quantidade de bits solicitados, a operao de extrao de bits bloqueada e o

    estado do repositrio realimentado com novos dados extrados do repositrio primrio.

    Enquanto com odev/urandom esse bloqueio no ocorre, e a atualizao de entropia no

    repositrio urandom s ocorre aps o m de todo o processo de sada de dados.

    4.1.3 Adio ao contador de entropia

    A quantidade de entropia adicionada a um contador estimada a partir da diferena

    de tempo de um evento para outro, sem levar em conta o tipo de evento capturado.

    Mesmo eventos que adicionam zero a esse contador, tm importncia na atualizao

    do estado do gerador. importante ressaltar que o evento de escrita em disco a partir

    de um processo de usurio tem valor zero para o clculo da estimativa de entropia. O

    contador tem seu valor decrementado em n, quando n bits so extrados do repositrio.

    Quando a extrao resultado de uma transferncia entre repositrios, esse valor n

    adicionado ao contador do repositrio destinatrio.

    30

  • 4.1.4 Atualizao dos repositrios

    O mecanismo para atualizao dos repositrios baseado em TGFSR (Twisted

    Generalized Feedback Shift Register). A principal vantagem do uso dessa tcnica de

    prover perodo (rbita) mximo para qualquer semente inicial no nula, propriedade

    necessria ao objetivo de entropia mxima do PRNG. O perodo mximo de uma

    TGFSR com estado de 128 words pode chegar at 2(12832) 1. Entropia adicionadaa cada atualizao de estado ou sada de dados. O algoritmo de add(pool,j,g) utilizado

    para adio de entropia, onde a varivel pool um vetor de bits de 32 ou 128 palavras,

    j o ndice do vetor, e g a nova palavra a ser adicionada no repositrio.

    So utilizados dois polinmios irredutveis no TGFSR de atualizaco dos reposit-

    rios. O polinnio

    x128 + x103 + x76 + x51 + x25 + x1 + 1

    utilizado para realimentar o repositrio primrio, e o polinmio

    x32 + x26 + x20 + x14 + x7 + x1 + 1

    utilizado para realimentar tanto o repositrio secundrio quanto o repositrio do

    PRNG urandom. As potncias que ocorrem nos polinmios indicam os ndices dos

    bits em g que sero operados pela funo xor com os bits nos respectivos ndices no

    parmetro j.

    A adio de entropia no LRNG (Linux Random Number Generator) pode ser

    entendida como uma atualizao na semente a cada interao. O TGFSR pode ser

    analisado como uma funo que encripta o input da entropia.. Essa atualizao de

    semente altera as propriedades estruturais dos TGFSR, a ponto de no mais ser possvel

    presumir que o perodo mximo associado ao respectivo polinmio continue valendo

    nesse contexto de operao, pois cada processo passa assim a computar uma funo

    simblica que no mais corresponde a funo algbrica linear sobre o estado inicial.

    4.1.5 Extrao de Bits aleatrios dos repositrios secundrio e

    urandom

    Extrair bits aleatrios de um repositrio no uma operao trivial [1]. Tal opera-

    o envolve o hashing dos bits extrados, modicao do estado atual do repositrio,

    e subtrao no correspondente contador de entropia pelo nmero de bits extrados. A

    31

  • Figura 4.2: Extrao de bits aleatrios da funo TGFSR [26]

    extrao de bits de um tal repositrio realizada em blocos de 10 bytes. O algoritmo

    aplica a funo de hash SHA-1 em 16 palavras do repositrio, chama a funo de adi-

    o do TGFSR, na forma: add( pool, j , SHA-1(pool[0...15])), e o valor resultante da

    funo de adio escrito na posio j. Em seguida, aplica-se uma variante da funo

    SHA-1 a SHA-1'6 na metade direita do repositrio e o resultado adicionado as

    posies j 1 e j 2. Por m, aplica-se SHA-1` s 16 palavras anteriores ao j 2. Agura 4.2 apresenta um diagrama ilustrativo do referido algortimo de extrao.

    Os resultados das operaes de hashing e folding so utilizados em uma funo de

    dobra (ou folding7) que gera um output de 10 bytes. O resultado ento colocado em

    um buer e o processo de realimentao desse buer se repete at o buer atingir a

    quantidade de bits solicitada pelo processo de usurio ou do kernel. Caso o processo

    solicitado a fornecer bits aleatrios gere mais bits do que o necessrio, esses bits so-

    bressalentes so utilizados no processo de atualizao do repositrio de onde a extrao

    solicitada ocorreu.

    6 A funo SHA-1` uma variao de SHA-1, onde as 5 ltimas words (ou 10 ltimos bytes) do

    repositrio so alteradas a cada iterao passada da extrao de bits. Essa alterao na funo

    de hashing importante para aumentar o custo de ataques de criptoanlise ao algoritmo

    7 Input : W0,W1,W2,W3,W4; Output : W0 W3,W1 W4,W20...15 W216...31

    32

  • 4.2 Fragilidades no LRNG

    Nesta seo, abordamos formas de ataque ao LRNG descritas na literatura especia-

    lizada, considerando a premissa de que estimativas da complexidade desses ataques, em

    termos de custo computacional, servem de aproximao s estimativas empricas para

    perda de entropia por falhas correspondentes na inicializao de geradores de primos,

    descritas no captulo anterior como principais suspeitas por colises entre mdulos ge-

    rados com o OpenSSL, em contextos onde a biblioteca geradora opera sobre plataforma

    GNU/Linux.

    4.2.1 Ataque de criptoanlise na propriedade 1. no LRNG

    O primeiro tipo de ataque a ser analisado aqui o ataque de criptoanlise sobre a

    propriedade ideal 1. (descrita na Seo 4.1), referente premissa de imprevisibilidade

    de um estado passado, a partir de um estado presente que venha a se tornar conhecido

    pelo atacante. Observamos que o output extrado de um repositrio calculado como

    o ltimo estado do algoritmo de extrao. Ou seja, a extrao computada aps a

    atualizao do estado deste mesmo repositrio. Este fato implica que se o estado de

    um repositrio em um tempo t conhecido, ento possvel descobrir quais dados

    foram extrados daquele repositrio durante sua ltima transio de estado (em outras

    palavras, possvel descobrir o output que foi computado na transio do tempo t 1para o tempo t). Dessa forma, qualquer atacante que consiga observar o estado do

    LRNG em algum instante, pode computar o ltimo output do LRNG.

    O ataque por criptoanlise tem sua eccia ligada realimentao dos repositrios

    secundrio e urandom. Caso ocorra a realimentao do repositrio, a aleatoriedade dos

    novos dados diculta a possibilidade do atacante prever o estado atual do repositrio

    alvo. Dessa forma, o ataque por criptoanlise melhor empregado contra o repositrio

    urandom, que no bloqueia a operao de extrao de dados quando o seu contador de

    entropia atinge valor menor do que a quantidade de bits solicitados.

    Caso o ataque se inicie em um instante onde o contador de entropia do repositrio

    secundrio esteja alto e a entropia adicionada ao reservatrio primrio seja previsvel,

    o ataque de criptoanlise tambm pode ser relevante contra o repositrio secundrio.

    J sabemos que possvel encontrar um estado(t 1) e a sada desse estado a partirde um estado(t) conhecido. De forma anloga, chegamos concluso que possvel

    encontrar os estados: estado(t 2), estado(t 3), . . . , estado(0) (onde 0 simboliza

    33

  • o momento em que a ltima realimentao do repositrio ocorreu) e suas respectivas

    sadas.

    Este fato pode estar associado, em tese, s situaes onde estados relativamente

    prximos nessas sequncias, ocorrendo em eventos independentes mas de natureza si-

    milar (por exemplo, durante o boot de plataformas distintas porm do mesmo modelo

    e congurao), acabem por induzir dois geradores de primos a eventualmente sele-

    cionarem o mesmo primo. Onde sadas distintas do LRNG alimentam instncias de

    inicializao nos respectivos geradores, distintas mas que ocorrem no mesmo intervalo

    entre dois primos consecutivos selecionveis. Efeito colateral que tende a recorrer,

    devido previsibilidade da sequncia de estados a partir do momento zero de um

    mesmo evento de boot (em plataformas distintas). Efeito que se amplicaria se os

    intervalos entre primos selecionveis estiverem despropositadamente esticados, como

    caracterizado pela peculiaridade do gerador de primos no necessariamente seguros do

    OpenSSL descrita por Mironov.

    4.2.2 Ataque na gerao de Entropia do reservatrio primrio

    Um atacante pode inuenciar diretamente a alimentao do repositrio secundrio.

    Quando o contador de entropia no repositrio primrio est cheio, entropia adicionada

    diretamente ao repositrio secundrio. Esse uxo de coleta de entropia e