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