Antes de comenzar con el material técnico , quiero darles un rápido resumen de que es la Criptografía y las diferentes áreas de la misma. De esta forma el centro de la criptografía es por supuesto la comunicación segura que esencialmente consiste de dos partes. La primera es el establecimiento de una clave segura y luego cómo nos comunicamos de forma segura una vez que tenemos una clave compartida. Ya dijimos que el establecimiento de una clave segura importa mucho a Alice y Bob para que se envien mensajes el uno al otro de tal forma que en el extremo de este protocolo, hay una clave compartida que ambos han aceptado, la clave compartida K, y mas alla de eso, es solo eso una clave compartida, de hecho Alice podria saber que ella esta hablando con Bob y Bob podria saber que el esta hablando con Alice. Pero un atacante primerizo que escuche esta conversación no tiene idea de cual es la clave compartida. Y veremos mas adelante en este curso como hacerlo. Ahora una vez que ellos tienen una clave compartida, ellos van a querer intercambiar mensajes de forma segura usando esta clave, y hablaremos de esquemas de encriptacion que nos permitiran hacerlo de tal forma que un atacante no se podria imaginar que mensajes se estan enviando de un lado para otro. Y es más un asaltante incluso no puede manipular indebidamente este tráfico sin ser detectado. En otras palabras, estos esquemas de código proveen tanto confidencialidad e integridad. Pero la criptografía hace mucho más, mucho mas que sólo esas dos cosas. Y quiero darles unos cuantos ejemplos de eso. Así el primer ejemplo que quiero darles es lo que se llama una firma digital. Así una firma digital , básicamente, es el análogo de una firma en el mundo físico. En el mundo físico, recuerden cuando firman un documento, esencialmente, ustedes escriben su firma en ese documento y su firma es siempre la misma. Ustedes siempre escriben la misma firma en todos los documentos que ustedes quieran firmar. En el mundo digital, esto no puede trabajar probablemente porque si el atacante obtiene un documento firmado por mí, él puede cortar y pegar mi firma sobre otro documento que yo no podría haber querido firmar.Y bien , no es simplemente posible en un mundo digital que mi firma sea la misma para todos los documentos que quiera firmar. Nosotros hablaremos de cómo construir firmas digitales en la segunda parte de este curso. Es realmente una primitiva muy interesante y veremos exactamente cómo hacerlo. Sólamante para darles un indicio, la forma en que la firma digital trabaja es básicamente haciendo la firma digital via una función del contenido que será firmado. Así un atacante que intente copiar mi firma desde un documento a otro no tendrá exito debido a la firma. En el nuevo documento no va a estar la función correcta en base a los datos en el nuevo documento, y como resultado, la firma no podrá verificarse. Y como dije veremos exactamente como construir firmas digitales mas adelante y sobre eso probaremos que esas construcciones son seguras. Otra aplicación de la criptografía que quiero mencionar, es la comunicación anónima. Así imagina a la usuaria Alice que quiere hablar de algo a traves de una servidor de chat con Bob. Y, si quizás quiere hablar acerca de una condición médica, y por eso quiere hacerlo anónimamente, de modo que el servidor de chat no sabe quien es ella en ese momento. Bien, hay un método estándard, llamado Mixnet, que permite a Alice comunicarse sobre el internet público con Bob. A traves de una secuencia de proxies de tal forma que al otro lado de la comunicación Bob no tiene idea de quien quiere hablarle. La forma de hacer este trabajo es que a medida que Alice envía sus mensajes a Bob a través de una secuencia de proxies, esos mensajes son encriptados. Y ellos son desencriptados apropiadamente de tal manera que Bob no tiene idea de con quíen esta hablando y los mismos proxies no saben que Alice esta hablando con Bob, o realmente quien esta hablando a quien de forma general. Una cosa interesante acerca de este canal de comunicación anónima es, que este es bi-direccional. En otras palabras, aún cuando Bob no tenga idea de con quien esta hablando, él aún así puede responder a Alice y Alice recibirá esos mensajes. Una vez que tenemos comunicación anónima, podemos construir otros mecanismos de privacidad. Y quiero darles un ejemplo de lo que es llamado dinero digital. Recuerden que en el mundo físico si yo tengo un dólar físico, puedo ir a la librería y comprar un libro y el comerciante puede no tener idea de quien soy. la pregunta es si podemos hacer lo mismo en el mundo digital en el mundo digital, basicamente, Alicia podria tener un dolar digital, una moneda de un dolar digital. Y ella podria querer gastar ese dolar en algo en un comercio en linea, quizas alguna librería en linea. Ahora, lo que nos gustaría hacer es que así sea cuando Alice gaste su moneda en la libreria, la libreria no tiene idea de quien es Alice. Nosotros brindamos el mismo anonimato que cuando usamos dinero fisico Ahora el problema es que en el mundo digital, Alice puede tomar la moneda que tuvo, esta moneda de un dolar, y antes de gastarlo, puede hacer copias de esta. y de repente en vez de tener solo una moneda ahora de repente tendra tres monedas de un dolar y todas ellas seran iguales por supuesto, y no hay nada que le impida tomar las replicas de las monedas y gastar con ellas otras mercaderias. La pregunta es como dar dinero digital anónimo? Pero al mismo tiempo, también prevenir el doble gasto de monedas de un dolar en diferentes comercios. En algún sentido existe una paradoja aquí donde el anonimato esta en conflicto con la seguridad porque si tenemos dinero anónimo no hay nada para impedir que Alice gaste el doble de monedas porque la moneda es anónima, no hay manera de saber si se cometio este fraude. Así que la pregunta es como resolver este conflicto. Y resulta que es totalmente factible. Y hablaremos de dinero digital anónimo más adelante. Sólo para darle una pista, voy a decir que la forma en que lo haremos, básicamente es asegurándose de que si Alicia gasta la moneda una vez, entonces nadie sabe quién es, pero si se pasa la moneda más de una vez. de repente, su identidad está totalmente expuesta y entonces podría ser objeto de todo tipo de problemas legales. Y así es como el dinero digital anónimo se trabaja en un alto nivel y vamos a ver cómo ponerlo en práctica más tarde en el curso. otras aplicaciones de criptografía usan protocolos más abstractos, pero. antes de hablar de resultados generales, deseo dar dos ejemplos. Así el primer ejemplo tiene que ver con los sistemas electorales. Aquí esta el problema de las elecciones Supongamos ... tenemos dos partidos, el partido cero y el partido uno. Y los electores votan por estos partidos. Por ejemplo, este elector pudo votar por el partido cero y otro elector por el partido uno. Y asi sucesivamente. En esta elección, el partido cero obtuvo tres votos y el partido dos obtuvo 2 votos. Entonces el ganador de esta elección, por supuesto es el partido cero. Pero pero generalmente, el ganador de la elección es el partido que recibe la mayoria de votos. Ahora, el problema de las elecciones es el siguiente. Los electores les gustaría de alguna manera computar la mayoria de los votos, pero hacerlo de una manera tal que nada es revelado acerca de los votos individuales. Ok? Así que la pregunta es como hacer eso? Y para ello, vamos a introducir un centro de eleccion que nos va a ayudar a calcular la mayoría, pero manteniendo los votos del contrario secretos. Y lo que las partidos van a hacer es que cada uno envíe sus votos cifrados al centro de elección de tal manera que al final de la elección, el centro de las elecciones es capaz de calcular y sacar un ganador de la elección. Sin embargo, aparte del ganador de la elección, nada es revelado de los votos individuales. Los votos individuales del contrario permanecerán completamente privados. Por supuesto, el centro de elecciones también va a verificar que este elector, por ejemplo, se le permita votar y que el votante sólo votara una vez. Pero aparte de esa información de las elecciones en el centro de elecciones en el resto del mundo supieran nada mas acerca del otro voto que el resultado de la eleccion. Así que esto es un ejemplo de un protocolo que implica seis partidos. En este caso, hay cinco votantes en un centro de elecciones. Estos partidos calculan entre ellos mismos. Y al final del cálculo, el resultado de la elección es conocido pero no es otra cosa que revelar las entradas individuales. Ahora un problema similar surge en el contexto de las subastas privadas. Así que en una subasta privada cada postor tiene su propia oferta. Y ahora supongamos que el mecanismo de subasta que está siendo utilizado es llamado subasta Vickrey donde la definición de una subasta Vickrey es que el ganador es el mejor postor. Pero la cantidades que el ganador paga es en realidad la segunda mejor oferta. Así que paga la segunda oferta más alta. ? OKay, por lo que este es un mecanismo de subasta estándar llamada subasta Vickrey. Y ahora lo que nos gustaría hacer es, básicamente permitir a los participantes calcular, averiguar quién es elmás alto postor y cuanto se supone que hay que pagar, pero aparte de eso, toda la otra información sobre las ofertas individuales deben permanecer en secreto. Así, por ejemplo, la cantidad real de que el mejor postor oferta debe permanecer en secreto. Lo único que debe convertirse en público es la segunda más alta oferta y la identidad del mejor postor. Así que de nuevo ahora, la forma en que vamos a hacerlo es vamos a introducir una centro de subasta en una forma similar. En esencia, todo el mundo enviarán sus ofertas encriptadas al centro de subasta . El centro de subasta calculara la identidad del ganador y de hecho el también calculara la segunda mejor oferta pero aparte de estos dos valores, nada más es revelado las ofertas individuales. Ahora bien, esto es en realidad un ejemplo de un problema mucho más general llamado secure multi-party computation. Permítanme explicarle de que trata secure multi-party computation. Así que aquí, básicamente de manera abstracta, los participantes tienen un secreto entradas a sí mismos. Así, en el caso de una elección, las entradas deberian ser los votos. En el caso de una subasta, la entradas serían las ofertas secretas. Y entonces lo que les gustaría hacer es calcular algún tipo de una función. De sus entradas De nuevo, en el caso de una elección, la función es una mayoría. En el caso de subasta, la función pasa a ser el el segundo más alto, mayor número entre los x 1 a x 4. Y la pregunta es, ¿cómo puede hacer eso, de tal manera que el valor de la la función es revelada, pero no es otra cosa que revelar acerca de los votos individuales? Así que permítanme enseñarles una especie de una muda, insegura forma de hacerlo. Lo que hacemos es introducir un partido de confianza. Y luego, autoridad de confianza básicamente recoge entradas individuales. Y un poco se compromete en mantener en secreto las entradas individuales, por lo que sólo sabría lo que son. Y entonces, se publica el valor de la función, al mundo. Por lo tanto, la idea ahora es que el valor de la función se hizo público, pero nada más se revela las entradas individuales. Pero, por supuesto, tienes la autoridad de confianza que se tiene que confiar, y si por alguna razón no es digno de confianza, entonces usted tiene un problema. Y así que, hay un teorema muy central en la [Inaudible] y en realidad es un hecho poco sorprendente . Que dice que cualquier cálculo que le gustaría hacer, cualquier función F que le gustaría calcular, que pueda calcular con una autoridad de confianza, también puedo hacerlo sin una autoridad de confianza. [Inaudible] de alto nivel a explicar lo que esto significa. Básicamente, lo que vamos a hacer, es vamos a deshacernos de la autoridad. Así que los partidos son en realidad no van a enviar sus entradas a la autoridad. Y, en hecho, no va a ser una autoridad en el sistema. En su lugar, lo que los partidos van a hacer, es que van a hablar entre sí usando algún protocolo. Tal que al final del protocolo de repente el valor de la función se da a conocer a todos. Y sin embargo, nada que no sea el valor de la función se ha revelado. En otras palabras, las entradas individuales se mantiene en secreto. Pero de nuevo no hay autoridad, hay sólo una forma para ellos de hablar el uno al otro de tal manera que la salida final se revela. Así este es un resultado bastante general, es una especie de un factor sorprendente, esto es en absoluto factible. Y, de hecho, que es y hacia el final de la clase que en realidad va a ver cómo hacer que esto suceda. Ahora, hay algunos aplicaciones de la criptografía que no puedo clasificar cualquier otra forma que decir que son puramente mágico. Permítanme dar a ustedes dos ejemplos de ello. Así, el primero es lo que se llama outsourcing privado. computation. Así que les voy a dar un ejemplo de una búsqueda de Google sólo para ilustrar el punto. Así que imagínate Alice tiene una consulta de búsqueda. Resulta que que quiere emitir. Resulta que existen esquemas de encriptación muy especiales de tal manera que Alice puede enviar un cifrado de su consulta a Google. Y entonces, debido a la propiedad del esquema de encriptación Google realmente puede calcular en los valores encriptados sin saber lo que los textos claramente son. Así que Google realmente puede ejecuta su algoritmo de búsqueda masiva en la consulta cifrada y recuperar en resultados cifrados. Muy bien. Google enviará los resultados cifrados de nuevo a Alice. Alice descifrará y luego recibirá los resultados. Pero la magia aquí es todo lo que Google vio sólo cifrados de las investigaciones de Alice y nada más. Y así, Google como resultado no tiene idea de lo que Alice acabo de buscar y Alice, sin embargo realmente aprendío, aprendío exactamente lo que ella quería aprender. Bueno por lo que, se trata de un tipo de magia de los esquemas de encriptación. Son bastante reciente, esto es sólo un nuevo desarrollo de aproximadamente dos o tres años atrás, que nos permite calcular en datos encriptados, a pesar de que en realidad no saben lo que hay dentro de la encriptación. Ahora, antes de salir corriendo y pensar acerca de esta implementación debos advertirle que esto en este momento es realmente sólo teoria, en el sentido de la ejecución de una búsqueda en Google el cifrado de datos es probable que tome unos mil millones de años. Pero, sin embargo, sólo el hecho de que esto es factible es realmente sorprendente, y es bastante útil para los cálculos relativamente simples. Así, de hecho, vamos a ver algunas aplicaciones de este mas adelante. La otra aplicación mágica que quiero enseñarles es lo que se llama zero knowledge. Y en particular, se los diré acerca de algo que se llama the zero knowledge proof of knowledge. Así que aquí. Bueno, lo que pasa es que hay un cierto número N, el que Alice lo sabe. Y la forma el número N se construyó como un producto de dos números primos grandes. Así que imagina aquí tenemos dos números primos, P y Q. Cada uno de ellos se puede pensar como 1000 dígitos. Y usted probablemente sabe que están multiplicandose con 2000 números de dos dígitos es bastante fácil. Pero si Les acabo de dar sus productos. Averiguar su factorización en números primos es en realidad muy difícil. Y, de hecho, vamos a utilizar el hecho de que factorizar es difícil para construir sistemas [inaudible] públicos en la segunda mitad del curso. Muy bien, así que Alice pasa a tener este número N, y ella también conoce la factorización de N. Ahora Bob sólo tiene el número N.en realidad no sabe la factorización. Ahora bien, el hecho mágico enthe zero knowledge proof of knowledge, es que Alice puede probar a Bob que ella sabe la factorización de N. Sí, en realidad puedes darle esta prueba a Bob, que Bob puede comprobar y convencerse de que Alice conoce la factorización de N, sin embargo Bob no aprende nada en absoluto. Acerca de los factores de P y Q, y esto es demostrable. Bob absolutamente no aprende nada en absoluto sobre los factores P y Q. Y la declaración en realidad es muy, muy general. Es no sólo de probar la factorización de N. De hecho, casi cualquier rompecabezas que quieran demostrar que sabes la respuesta , se puede demostrar que es su conocimiento. Así que si usted tiene un crucigrama que ha resuelto. Bueno, tal vez los crucigramas no es el mejor ejemplo. Pero si usted tiene un rompecabezas de Sudoku, por ejemplo, que desea demostrar que lo has resuelto, puede probar a Bob en una forma que, Bob quiere aprender nada en absoluto sobre la solución, y sin embargo Bob se convenció de que realmente tiene una solución a este rompecabezas. Muy bien. Esos son los tipos de aplicaciones mágicas. Y así, la última cosa que quiero decir es que la criptografía moderna es una ciencia muy rigurosa. Y de hecho, todos los concepto que vamos a describir va a seguir tres pasos muy rigurosos,de acuerdo, y vamos a ver a estos tres pasos una y otra vez y otra vez así que quiero explicar lo que son. Así que lo primero que vamos a hacer cuando se introduce una nueva primitiva como lo es una firma digital vamos a especificar con precisión lo que es el modelo de amenazas. Es decir, qué puede hacer un atacante para atacar a una firma digital y cuál es su objetivo en la forzar las firmas?.Bueno, por lo que vamos a definir exactamente que significa para una firma por ejemplo, para ser infalsificable.Infalsificable. Muy bien y me estoy dando firmas digitales solo como un ejemplo. Por cada primitiva que describimos vamos a definir con precisión lo que el modelo de amenazas es. A continuación, vamos a proponer una construcción y luego vamos a dar una prueba de que cualquier atacante que es capaz de atacar a la construcción bajo este modelo de amenaza. Que atacante también puede utilizarlos para resolver algunos que subyace problemas difíciles. Y como resultado, si el problema realmente es difícil, que en realidad demuestra que ningún atacante puede romper la construcción bajo el modelo de amenaza. Muy bien. Pero estos tres pasos son en realidad bastante importante. En el caso de firmas, vamos a definir lo que significa para una firma ser falsificable, entonces vamos a dar una construcción y, a luego por ejemplo vamos a decir que cualquiera que pueda romper nuestra construcción puede luego ser utilizada para decir factores enteros , que se cree que es un problema difícil. Bueno, por lo que vamos a seguir estos tres pasos en todo, y entonces usted verá cómo esto se ve aproximadamente. Bien, así que este es el final del segmento. Y a continuación, en el siguiente segmento vamos a hablar un poco sobre la historia de la criptografía.