\documentclass[11pt]{article}
\usepackage{lmodern}
\usepackage{xspace}
\usepackage[protrusion=true,expansion=true]{microtype}
\usepackage{amssymb}
\usepackage{amsfonts}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{latexsym}
\usepackage[center]{subfigure}
\usepackage{epsfig}
\usepackage{hyperref}

% Inline bibliographies
\usepackage{filecontents}
% Algorithm environment
\usepackage{algorithmicx,algpseudocode,  algorithm}
% Diagrams and figures in TikZ
\usepackage{tikz}
\usepackage[spanish]{babel}
\usepackage[utf8]{inputenc}
\usepackage{url}

\newtheorem{theorem}{Teorema}
\newtheorem{lemma}[theorem]{Lema}
\newtheorem{fact}[theorem]{Hecho}
\newtheorem{definition}[theorem]{Definición}
\newtheorem{corollary}[theorem]{Corolario}
\newtheorem{proposition}[theorem]{Proposición}
%\newtheorem{claim}[theorem]{Claim}
\newtheorem{conjecture}[theorem]{Conjectura}
\newtheorem{observation}[theorem]{Observación}
\newtheorem{assumption}[theorem]{Supuesto}
%\newtheorem{example}[theorem]{Ejemplo}

\newcommand{\gen}{\mathsf{Gen}}
\newcommand{\enc}{\mathsf{Enc}}
\newcommand{\dec}{\mathsf{Dec}}
\newcommand{\mac}{\mathsf{Mac}}
\newcommand{\vrfy}{\mathsf{Vrfy}}
\newcommand{\mcd}{\mathsf{mcd}}
\newcommand{\hash}{\mathsf{Hash}}

\newcommand{\NN}{\mathbb{N}}
\newcommand{\ZZ}{\mathbb{Z}}
\newcommand{\GG}{\mathbb{G}}
\newcommand{\HH}{\mathbb{H}}
\newcommand{\la}{\langle}
\newcommand{\ra}{\rangle}
\newcommand{\calA}{\mathcal{A}}
\newcommand{\calB}{\mathcal{B}}
\newcommand{\calC}{\mathcal{C}}
\newcommand{\calD}{\mathcal{D}}
\newcommand{\calE}{\mathcal{E}}
\newcommand{\calG}{\mathcal{G}}
\newcommand{\calH}{\mathcal{H}}
\newcommand{\calI}{\mathcal{I}}
\newcommand{\calJ}{\mathcal{J}}
\newcommand{\calK}{\mathcal{K}}
\newcommand{\calL}{\mathcal{L}}
\newcommand{\calM}{\mathcal{M}}
\newcommand{\calN}{\mathcal{N}}
\newcommand{\calO}{\mathcal{O}}
\newcommand{\calP}{\mathcal{P}}
\newcommand{\calQ}{\mathcal{Q}}
\newcommand{\calR}{\mathcal{R}}
\newcommand{\calS}{\mathcal{S}}
\newcommand{\calT}{\mathcal{T}}
\newcommand{\calU}{\mathcal{U}}
\newcommand{\calV}{\mathcal{V}}
\newcommand{\calW}{\mathcal{W}}
\newcommand{\calX}{\mathcal{X}}
\newcommand{\calY}{\mathcal{Y}}
\newcommand{\calZ}{\mathcal{Z}}

\newcommand{\experiment}[4]{
%{\begin{figure}[tbp]
{\begin{figure}[h!]
\begin{center}
\fbox{
\small
\hbox{
\begin{minipage}{.90\columnwidth}
{\bf #1}
\bigskip

#4

\end{minipage}
}
}
%\if\full
\vspace{-3pt}
\caption{\label{#3}#2}%\fi
\end{center}
\end{figure}
%\vspace{-10pt}
} }


\newcommand{\handout}[5]{
   \noindent
   \begin{center}
   \framebox{
      \vbox{
    \parbox[t]{4in} {\bf #1 } \vspace{3mm}  {\hfill \bf #2 }
       \vspace{2mm}
       \hbox to 6.00in { {\Large \hfill #5  \hfill} }
       \vspace{1mm}
       \hbox to 6.00in { {\it #3 \hfill #4} }
      }
   }
   \end{center}
   \vspace*{1mm}
}

% compact lists, and handy shortcuts for items
\usepackage[shortlabels]{enumitem}

\begin{document}

\handout{Criptografía y Seguridad Computacional}{2016-01}
{Entrega: 18/05/2016}
{}{Tarea 4: 5/05/2016}

\thispagestyle{plain}


\section*{Reglas}

Las tareas se pueden discutir de a 2 personas. Sin embargo, cada estudiante tiene la obligación de escribir su propia solución.
La entrega de la tarea se realiza mediante correo electrónico a \texttt{fkrell@gmail.com}, y con copia a \texttt{jsnavar1@uc.cl}, con el asunto 
\texttt{[cripto] Entrega Tarea4} a más tardar el día Miercoles 18 de Mayo de 2016 a las 23:59. Cada estudiante sólo puede asumir que su tarea ha sido correctamente entregada si recibe confirmación del profesor o del ayudante. Usted debe entregar un archivo formato PDF generado en \LaTeX. Para su conveniencia puede usar el template en la página web del curso. 

{\Large Si utiliza referencias, es obligaci\'on agregarlas al final de su soluci\'on}.

\section*{Problema 1 (15pts)}
Sea $N, e, d$, generados por $\mathsf{GenRSA}$.
Imagine que utilizamos el siguiente padding para el cifrador RSA: con input $m$, se retorna 
$0x00||r||0x00||m$, en donde $r$ tiene largo $||N||/2-16$ y el largo de $m$ es exactamente $||N||/2$.  

 \begin{enumerate}
 
 \item {\bf 10pts}. Demuestre que RSA usando este padding no es CCA seguro (es decir, el adversario  puede distinguir entre el cifrado 2 mensajes $m_0$ y $m_1$ si tiene acceso al oráculo de descifrado). Hint: Dado el texto cifrado $c=\enc_{pk}(m_b)$, multiplique $c$ por una constante elegida cuidadosamente, y espere que que el oráculo no arroje ''error de padding``.

 \item {\bf 5pts}. ¿Por qué su ataque no es posible en el esquema de padding visto en clases?

\end{enumerate}

\newpage

\section*{Problema 2 (10pts)}
Sea $H=(\gen, \hash)$ una función de hash definida como:
\begin{itemize}
\item $\gen(1^\lambda): \GG,q,g\gets\calG(1^\lambda)$, con $q=|\GG|$ primos, 
$a,b\stackrel{\$}{\gets}\ZZ_q$ y retorna $s=\langle q,g, a,b\rangle$.
\item $\hash^s(x_1,x_2,x_3)$: retorna $g^{x_1}\cdot g^{a\cdot x_2}\cdot g^{b\cdot x_3}$
\end{itemize}

Demuestre que si existe un algoritmo PPT $\calA$ que encuentra colisiones en $H$, entonces existe un algoritmo PPT que distingue si $T$ es uniforme en $\GG$ o es $g^{ab}$ dado el siguiente input

\[q, g,g^a, g^b, g^{a^2}, g^{b^2}, T\]

con $q=|\GG|$ primo, $g$ un generador para $\GG$, y $a,b$ uniformes en $\ZZ_q$.
(Similar a DDH, pero además el distinguidor tiene acceseo a $g^{a^2}$ y $g^{b^2}$).

\section*{Problema 3 (20pts)}

En este problema vamos a demostrar que el supuesto DDH no se cumple en el grupo $\ZZ_p^*$ ($p$ primo). Sea $\mathsf{RC}=\{x | x=y^2 \mod p,~ y\in \ZZ^*_p\}$. Es decir, $\mathsf{RC}$, es el conjunto de residuos cuadrados de $\ZZ_p^*$ (elementos que son el cuadrado de algún otro).

\begin{enumerate}
\item {\bf 5pts}. Demuestre que $\mathsf{RC}$ es un subgrupo de $\ZZ_p^*$ bajo la misma operación (es un grupo, y además es subconjunto de $\ZZ_p^*$).

\item {\bf 5pts}. Describa un algoritmo de tiempo polinomial para saber si un elemento $y$, pertenece a $\mathsf{RC}$.

\item {\bf 10pts}. Construya un algoritmo PPT que quiebre DDH en $\ZZ_p^*$. Es decir, dado un generador $g$ para $\ZZ_p^*$, $g^a$, $g^b$ y $T$, construya un algoritmo que decida si $T=g^{ab}$, o $T$ es uniforme en $\ZZ_p^*$. Hint: utilize el algoritmo del problema 3.2.

\end{enumerate}

\newpage

\section*{Problema 4 (15pts)}

Se ha visto en clases que si el supuesto DDH se cumple para un grupo $\GG$, con generador $g$ y orden $q$, entonces existe un protocolo de intercambio de llaves para 2 participantes (la llave final es $g^{a\cdot b}$, en donde un participante elige $a$ y el otro elige $b$, ambos uniformemente distribuídos en $\ZZ_q$).

Imagine que, además de $\GG$, existe un grupo $\GG_T$ con generador $g_t$ y una función computable en tiempo polinomial $e:\GG\times\GG\rightarrow \GG_T$, tal que 

\begin{itemize}
\item $e(h_1^a, h_2^b) = e(h_1,h_2)^{a\cdot b}$ para todo $h_1,h_2\in \GG$ (bilineal)
\item $e(g,g) = g_t$ (no degenerado)
\end{itemize}

\begin{enumerate}

\item {\bf 5pts}. Demuestre que el supuesto DDH no se cumple en $\GG$.

\item {\bf 5pts}. Proponga un protocolo de intercambio de llaves para 3 participantes en donde el output de los participantes es un elemento en $\GG_T$ (asumma que a pesar de que DDH no se cumple en $\GG$, DLog sigue siendo un supuesto razonable).

\item {\bf 5pts}. Extienda el supuesto DDH para este nuevo protocolo. Hint: ¿Qué elemento hay que agregarle al input del distinguidor? ¿Cuál es la forma de $T$ cuando no es uniformemente aleatorio?

\end{enumerate}

\section*{Problema 5 (Opcional)}

Este es un problema de investigación. Busque applicaciones criptográficas adicionales de los mapeos bilineales (bilinear maps o parings en inglés) vistos en el problema 4.

\end{document}
