< Return to Video

Block ciphers from PRGs(12 min)

  • 0:00 - 0:04
    Neste segmento perguntamos se podemos construir a partir de cifras de bloco simples
  • 0:04 - 0:09
    primitivos como pseudo geradores aleatórios. A resposta é sim. Então, para começar, vamos
  • 0:09 - 0:14
    perguntar se podemos construir pseudo funções aleatórias em vez de pseudo-aleatório
  • 0:14 - 0:19
    permutações de um gerador pseudo-aleatório. Podemos construir um PRF de um PRG?
  • 0:19 - 0:24
    Nosso objetivo final que é construir uma cifra de bloco que é um PRP. E nós vamos chegar
  • 0:24 - 0:29
    a que, no final. Ok, agora vamos construir um PRF. Então vamos começar com um PRG que
  • 0:29 - 0:35
    dobra suas entradas de modo as sementes para o PRG é um elemento em K ea saída é
  • 0:35 - 0:39
    , na verdade, dois elementos em K. Portanto, aqui temos um esquema do gerador, que
  • 0:39 - 0:44
    basicamente tem sua entrada de C e K, e saídas de dois elementos, em K, como sua saída.
  • 0:44 - 0:49
    E agora o que significa para essa pureza para ser seguro, lembre-se isto significa que
  • 0:49 - 0:53
    essencialmente a saída é indistinguível de um elemento aleatório
  • 0:53 - 0:58
    dentro de K quadrado Agora verifica-se que é muito fácil definir basicamente o que é
  • 0:58 - 1:03
    chamado uma PRF bit um a partir deste PRG. Então, o que é um pouco um PRF é basicamente um PRF
  • 1:03 - 1:08
    domínio que é apenas um bit. Ok, então é um PRF que só leva um pouco como
  • 1:08 - 1:13
    de entrada. Ok, ea forma como vamos fazê-lo é que vai dizer é se o X bit de entrada é zero
  • 1:13 - 1:19
    eu vou colocar a saída esquerda e se o bit de entrada X é um, então eu vou colocar o direito
  • 1:19 - 1:24
    saída do PRF. Ok, em símbolos, temos basicamente o que escrevi aqui. Agora
  • 1:24 - 1:29
    é simples para mostrar que, de facto, G é um PRG segura, então este bit PRF um é
  • 1:29 - 1:33
    , de facto, uma PRF seguro. Se você pensar nisso por um segundo, isso realmente não é
  • 1:33 - 1:38
    [inaudível]. É realmente apenas afirmando a mesma coisa duas vezes. Então eu vou deixá-lo por
  • 1:38 - 1:42
    você pensar sobre isso de forma breve e ver e se convencer de que de fato esta
  • 1:42 - 1:47
    teorema é verdadeiro. As verdadeiras questões é se podemos construir um PRF, que na verdade
  • 1:47 - 1:52
    tem um domínio que é maior do que um bit. Idealmente gostaríamos que o domínio para ser 128
  • 1:52 - 1:56
    bits, basta dizer que a [inaudível] tem. Então a questão é que podemos construir 128 bits PRS
  • 1:56 - 2:01
    a partir de um gerador pseudo-aleatório. Bem, então vamos ver se podemos fazer progressos. Assim, o
  • 2:01 - 2:06
    primeira coisa que vamos fazer é que nós vamos dizer, bem de novo, vamos começar com um PRG
  • 2:06 - 2:11
    , que duplica o seu contributo vamos ver se podemos construir um PRG que quadruplica suas entradas.
  • 2:11 - 2:16
    Ok? Assim, ele vai de K para K para o quarto em vez de K para K quadrado. Ok, então vamos
  • 2:16 - 2:21
    ver como fazer isso. Então, vamos começar com a nossa PRG original que apenas duplica a sua
  • 2:21 - 2:26
    entradas, agora lembrar que o facto de a sua é um PRG significa que a saída do
  • 2:26 - 2:31
    PRG é indistinguível de dois valores aleatórios em K. Bem, se a saída se parece
  • 2:31 - 2:36
    como dois valores aleatórios em K, podemos simplesmente aplicar o gerador de novo para os dois
  • 2:36 - 2:40
    saídas. Então, digamos que nós aplicamos o gerador de uma vez para a saída da esquerda, e
  • 2:40 - 2:45
    uma vez para as saídas de direitos. E nós vamos chamar a saída de que, este
  • 2:45 - 2:50
    quádruplo de elementos, que são, vão chamar isso de G1K. E eu escrevi em
  • 2:50 - 2:56
    símbolos que esse gerador faz, mas você pode ver, basicamente, a partir desta figura,
  • 2:56 - 3:01
    exatamente como funciona o gerador. Portanto, agora que temos um gerador de K a K para
  • 3:01 - 3:06
    quarta, Nós realmente obter um pouco PRF dois. Ou seja, o que vamos fazer é, vamos dizer,
  • 3:06 - 3:11
    dado dois bits, 000110 ou 11, vontades implica a saída do bloco apropriado que
  • 3:11 - 3:16
    saída de G1K. Ok, então agora podemos basicamente ter um PRF que leva quatro
  • 3:16 - 3:21
    entradas possíveis ao invés de apenas duas entradas possíveis como antes. Portanto, a questão
  • 3:21 - 3:26
    você deve estar me perguntando é porque é que este caso G1 seguro? Por que é um PRG seguro? Que
  • 3:26 - 3:31
    é por que isso é quadruplicar de saídas indistinguíveis de forma aleatória. E assim
  • 3:31 - 3:36
    vamos fazer uma prova rápida de isso, apenas vou fazer uma prova simples por imagens. Então aqui está
  • 3:36 - 3:40
    gerador nossa que queremos provar é seguro. E o que isso significa é que nós
  • 3:40 - 3:45
    quero argumentar que essa distribuição é indistinguível de um fordable aleatória
  • 3:45 - 3:49
    em K para a quarta. Ok então nosso objetivo é provar que esses dois são
  • 3:49 - 3:54
    indistinguíveis. Bem vamos fazer um passo de cada vez. Sabemos que o gerador
  • 3:54 - 3:58
    é um gerador de segura, portanto, de facto, a saída do primeiro nível é
  • 3:58 - 4:02
    indistinguível da aleatória. Em outras palavras, se se substituir o primeiro nível por
  • 4:02 - 4:07
    seqüências verdadeiramente aleatórias estes dois são verdadeiramente aleatórios colhidos na tecla de espaço, então não
  • 4:10 - 4:11
    adversário eficiente deve ser capaz de distinguir essas duas distribuições. Em
  • 4:11 - 4:16
    fato, se você pudesse distinguir estas duas distribuições, é fácil mostrar que você
  • 4:16 - 4:21
    iria quebrar o PRG original. Ok, mas essencialmente você ver que a razão pela qual podemos
  • 4:21 - 4:26
    fazer esta substituição, pode-se substituir a saída de G, com valores verdadeiramente aleatório, é
  • 4:26 - 4:31
    exatamente por causa da definição do PRG, que diz que o posto para fora do PRG é
  • 4:31 - 4:35
    indistinguível de forma aleatória, por isso pode muito bem colocar aleatório lá, e não
  • 4:35 - 4:40
    adversário eficiente pode distinguir os resultantes duas distribuições. Ok, até agora
  • 4:40 - 4:45
    tão bom, mas agora podemos fazer a mesma coisa de novo para o lado esquerdo. Em outro
  • 4:45 - 4:50
    palavras, podemos substituir estes dois pseudo saídas aleatórias, pelas saídas verdadeiramente aleatórios.
  • 4:50 - 4:54
    E novamente, pois o gerador G é seguro, eficiente nenhum adversário pode dizer
  • 4:54 - 4:58
    a diferença entre estas duas distribuições. Mas de maneira diferente, se um
  • 4:58 - 5:02
    adversário pode distinguir estas duas distribuições, então nós também daria uma
  • 5:02 - 5:07
    ataque ao gerador de G. E agora finalmente nós vamos fazer isso uma última vez. Estamos
  • 5:07 - 5:11
    vai substituir este par pseudo-aleatório por um par verdadeiramente aleatório, e baixo e eis que
  • 5:11 - 5:16
    obter a distribuição real de que nós estávamos gravando para, gostaríamos de obter uma distribuição
  • 5:16 - 5:20
    que é realmente feito de quatro blocos independentes. E agora temos provado isso
  • 5:20 - 5:23
    transição, basicamente, que estes dois indistinguíveis, estes dois
  • 5:23 - 5:27
    indistinguíveis, e estes dois indistinguíveis, e, portanto, estes dois
  • 5:27 - 5:31
    são indistinguíveis, que é o que queríamos provar. Ok então este é o tipo de
  • 5:31 - 5:36
    a idéia de alto nível para a prova, não é muito difícil fazer este rigoroso,
  • 5:36 - 5:40
    , mas eu só queria mostrar-lhe a intuição meio de como a prova funciona. Bem,
  • 5:40 - 5:44
    se fôssemos capazes de estender as saídas de geradores de uma vez, não há nada que impeça
  • 5:44 - 5:49
    nos de fazê-lo novamente por isso aqui é um gerador G1 que produz quatro elementos em
  • 5:49 - 5:53
    espaço a chave. E lembre-se a saída aqui é indistinguível do nosso aleatória
  • 5:53 - 5:58
    par quatro, que é o que acabamos de provar. E então não há nada que nos impede de
  • 5:58 - 6:02
    aplicando o gerador de novo. Então vamos dar o gerador de aplicá-la a este aleatório
  • 6:02 - 6:07
    procurando coisa e devemos ser capazes de obter essa coisa aleatória procurando. Este par mais
  • 6:07 - 6:12
    aqui que é aleatória procurando. E nós podemos fazer a mesma coisa novamente, e novamente, e
  • 6:12 - 6:16
    novamente. E agora, basicamente, nós construímos um novo gerador que produz elementos em K para
  • 6:16 - 6:21
    oitavo a, em oposição a K para a quarta. E mais uma vez a prova de segurança é muito
  • 6:21 - 6:26
    da mesma forma como o que acabei de mostrar, essencialmente, você alterar gradualmente a
  • 6:26 - 6:31
    saídas em saídas verdadeiramente aleatórios. Então nós mudar isso para um verdadeiramente aleatório
  • 6:31 - 6:35
    de saída, então este, em seguida, que, em seguida, este, em seguida, que e assim por diante e assim por diante. Até
  • 6:35 - 6:40
    finalmente temos algo que é verdadeiramente aleatório e, portanto, os dois originais
  • 6:40 - 6:44
    distribuições nós começamos com G2K e verdadeiramente aleatório são indistinguíveis. Ok,
  • 6:44 - 6:49
    tão longe tão bom. Portanto, agora temos um gerador que produz elementos em K para o oitavo.
  • 6:49 - 6:54
    Agora, se fizermos isso, basicamente, temos um bit PRF três. Em outras palavras, a zero, zero,
  • 6:54 - 6:59
    de zero esta PRF geraria este bloco, e assim por diante e assim por diante, até que um, um, um que
  • 6:59 - 7:03
    geraria este bloco. Agora, o interessante é que na verdade isso PRF
  • 7:03 - 7:08
    é fácil de calcular. Por exemplo, vamos supor que queremos para calcular a PRF no ponto
  • 7:08 - 7:12
    um zero um. Ok, é um pouco PRF três. Ok então um zero um. Como faríamos
  • 7:12 - 7:17
    que? Bem, basicamente, que iria começar a partir do original chave K. E agora gostaríamos de aplicar
  • 7:17 - 7:21
    G o gerador, mas nós só prestar atenção ao direito de saída G,
  • 7:21 - 7:25
    porque o primeiro bit é um. E então vamos aplicar o gerador de novo, mas nós
  • 7:25 - 7:30
    só prestar atenção para a esquerda da saída do gerador porque o
  • 7:30 - 7:34
    segundo bit é zero. E, então, se aplicaria o gerador de novo e só paga
  • 7:34 - 7:39
    atenção para as saídas da direita, porque o terceiro bit é um e que seria o
  • 7:39 - 7:43
    saída final. Certo, então você pode ver que, que nos levam a 101, e, de fato, porque
  • 7:43 - 7:47
    gerador [inaudível] é pseudo-aleatório, sabemos que, em particular, que,
  • 7:47 - 7:53
    esta saída aqui é pseudo-aleatório. Ok, então isso nos dá um pouco PRF três. Bem, se
  • 7:53 - 7:59
    ele trabalhou três vezes, não há nenhuma razão pela qual não podem trabalhar N vezes. E assim se
  • 7:59 - 8:04
    aplicar esta transformação mais uma vez, chegamos ao que é chamado de GGMPRF. GGM
  • 8:04 - 8:08
    estandes para Goldreich, Goldwasser e Micali estes são os inventores do
  • 8:08 - 8:13
    PRF isso e assim que funciona é o seguinte. Então, começamos com um gerador
  • 8:13 - 8:17
    apenas dobra suas saídas, e agora nós somos capazes de construir um PRF que atua em um grande
  • 8:17 - 8:22
    domínio principalmente um domínio de tamanho zero um para o N. ou N poderia ser tão grande como 128 ou mesmo
  • 8:22 - 8:27
    mais. Então vamos ver, vamos supor que nós estamos dando uma entrada em 01 para o N, deixe-me mostrar-lhe como
  • 8:27 - 8:31
    para avaliar a PRF. Bem, agora você deve realmente ter uma boa idéia de como
  • 8:31 - 8:35
    para fazê-lo. Essencialmente, nós começamos a partir da chave original e, em seguida, aplicamos o
  • 8:35 - 8:40
    gerador e tomamos a esquerda ou a direita dependendo do bit X0 e
  • 8:40 - 8:45
    , em seguida, chegamos à próxima chave, K1. E, então, aplicar o gerador de novo e nós
  • 8:45 - 8:49
    tomar à esquerda ou à direita dependendo X1 e chegamos à próxima chave. E
  • 8:49 - 8:55
    então fazer isso de novo e de novo, até que finalmente estamos a chegar à saída. Então, nós
  • 8:55 - 9:00
    ter processado todos os bits finais, e chegamos à saída desta função. E
  • 9:00 - 9:05
    , basicamente, podemos provar a segurança de novo muito bonito ao longo das mesmas linhas como fizemos
  • 9:05 - 9:10
    antes, e nós podemos mostrar que se G é um PRG seguro, então, de facto, temos um seguro
  • 9:10 - 9:15
    PRF, a 01 para o N, em um domínio muito grande. Então, isso é fantástico. Agora, temos
  • 9:15 - 9:19
    temos essencial, temos uma PRF que é comprovadamente seguro, assumindo que o
  • 9:19 - 9:23
    gerador subjacente é seguro, eo gerador é supostamente muito mais fácil
  • 9:23 - 9:28
    construir do que um PRF real. E, na verdade ele funciona em blocos que podem ser muito grandes, em
  • 9:28 - 9:33
    particular, 01 ao 128, que é o que precisávamos. Então você pode perguntar por que não é bem
  • 9:33 - 9:39
    coisa esta sendo usado na prática? E a razão é, que na verdade é bastante lento.
  • 9:39 - 9:45
    Então, imagine que ligar como um gerador que conecta o gerador de salsa. Então agora para
  • 9:45 - 9:50
    avaliar este PRF em um 128 entradas de bits, teríamos basicamente tem que executar o salsa
  • 9:50 - 9:56
    gerador 128 vezes. Uma vez por bit da entrada. Mas, então, teria um PRF
  • 9:56 - 10:02
    que é 128 vezes mais lenta do que a salsa original. E isso é muito, muito, muito mais lento
  • 10:02 - 10:06
    que o AES. AES é um PRF heurística. Mas, no entanto, é muito mais rápido, então o que nós
  • 10:06 - 10:11
    acabou de chegar aqui. E por isso mesmo que esta é uma construção muito elegante, ela não é usada
  • 10:11 - 10:15
    , na prática, para construir pseudo funções aleatórias, embora em uma semana estaremos
  • 10:15 - 10:19
    usando este tipo de construção para construir um mecanismo de integridade da mensagem. Assim, a última
  • 10:19 - 10:23
    passo, é basicamente agora que temos construído um PRF, as perguntas é se podemos
  • 10:23 - 10:28
    realmente construir a cifra de bloco. Em outras palavras, podemos realmente construir uma PRP seguro
  • 10:28 - 10:32
    a partir de um PRG seguro. Tudo o que fizemos até agora, não é reversível. Novamente, se você
  • 10:32 - 10:37
    olhar para essa construção aqui, não podemos decifrar, basicamente devido aos resultados finais.
  • 10:37 - 10:41
    Não é possível voltar atrás ou, pelo menos, não sabemos como voltar a, o
  • 10:41 - 10:45
    entradas originais. Então agora a questão de interesse é tão podemos realmente resolver o
  • 10:45 - 10:49
    problema que queria resolver inicialmente? Principalmente, podemos realmente construir uma cifra de bloco de
  • 10:49 - 10:54
    um PRG seguro? Tão mal deixá-lo pensar sobre isso por um segundo, e marcar a resposta. Assim
  • 10:54 - 10:58
    é claro que eu espero que todos disse que a resposta é sim e você já tem todos os
  • 10:58 - 11:02
    ingredientes para fazê-lo. Em particular, você já sabe como construir um PRF de um
  • 11:02 - 11:06
    gerador pseudo-aleatório. E nós dissemos que uma vez que temos um PRF que podemos ligá-lo na
  • 11:06 - 11:11
    construção Luby-Rackoff, que se você se lembra, é apenas Feistel um três-redonda.
  • 11:11 - 11:15
    Então nós dissemos que se você ligar um PRF seguro em um Feistel de três rounds, você recebe um
  • 11:15 - 11:19
    PRP seguro. Então, combinando estes dois, basicamente nos dá uma PRP seguro
  • 11:19 - 11:23
    a partir de um gerador pseudo-aleatório. E isto é provably assegurar enquanto o
  • 11:23 - 11:28
    gerador subjacente é segura. Portanto, é um belo resultado, mas infelizmente mais uma vez
  • 11:28 - 11:32
    ela não é usada na prática porque é consideravelmente mais lento que a heurística
  • 11:32 - 11:37
    construções como AES. Ok assim que este completa o nosso módulo sobre construção
  • 11:37 - 11:40
    pseudo permutações aleatórias e pseudo funções aleatórias. E, em seguida, no próximo
  • 11:40 - 11:44
    módulo nós vamos falar sobre como usar essas coisas para fazer a criptografia apropriada.
Title:
Block ciphers from PRGs(12 min)
Video Language:
English
erickshowplay added a translation

Portuguese, Brazilian subtitles

Revisions