\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{\sign}{\mathsf{Sign}}
\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: 15/06/2016}
{}{Tarea 6: 7/06/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 Tarea6} a más tardar el día Miércoles 15 de Junio 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 Realice la tarea por cuenta propia. Pero si usted utiliza material externo,  es obligaci\'on agregar las referencias correspondientes. Además usted debe escribir su propia solución. Es decir, usted debe tener la capacidad de responder preguntas con respecto a su solución}.

\section*{Problema 1 (15pts)}

Sea $\GG$ un grupo de orden primo $p$ donde DDH se cumple, 
y sea $H:\{0,1\}^*\rightarrow \ZZ_p$ un oráculo aleatorio. 
Demuestre como falsificar firmas en el siguiente esquema de firmas digitales:

\begin{itemize}
\item $\gen(1^\lambda)$: $x\sim \ZZ_p$, output $PK=g^x$, $SK = x$.
\item $\sign_{SK}(m)$: $k\sim \ZZ_p$, $e= H(m)$, $s = k - SK\cdot e$, output 
$\sigma = (g^k, s)$.
\item $\vrfy_{PK}(m,\sigma=\langle r,s\rangle):$ Output 1 si, y sólo si, $g^s\cdot PK^{H(m)} = g^k$
\end{itemize} 

\section*{Problema 2 (15pts)}

Proponga un protocolo para la demostración de conocimiento sin divulgación para el logaritmo discreto de un valor $y=g^x$ en un grupo en donde DLOG es computacionalmente difícil. Tanto el algoritmo verificador $V$ como el demostrador $P$ tienen que correr en tiempo polinomial. Demuestre que su protocolo cumple:

\begin{itemize}
\item Completeness: $\Pr[P(\GG,g,p,x)\leftrightarrow V(\GG,g,p,y=g^x) = 1]\geq 2/3$.
\item Soundness: Para todo PPT $P^*\Pr[P^*(\GG,g,p)\leftrightarrow V(y=g^x) = 1]\leq 1/3$.
\item Zero-Knowledge: Para todo PPT $V^*$ existe un simulador probabilístico de tiempo esperado polinomial tal que $\mathsf{view}_{V^*}^P\equiv S(\GG,g,p,y=g^x)$. Es decir, la vista de $V^*$ al interactuar con $P$ es simulable por un algoritmo efficiente que no tiene acceso al secreto $x$.
\end{itemize}


\section*{Problema 3 (15pts)}

En el protocolo de Yao para la evaluación segura de circuitos booleanos, cada compuerta $g$ con entradas $u,v$ y salida $w$ es codificada cifrando las llaves correspondientes a $w$ ($K_w^0, K_w^1$) con un cifrador simétrico utilizando las llaves correspondientes a los cables $u$ y $v$. Es decir, sea $g:\{0,1\}^2\rightarrow \{0,1\}$ la función que describe la compuerta booleana y sean $(K_u^0,K_u^1), (K_v^0,K_v^1)$ las posibles de llaves de entrada,  entonces cada una de las 4 filas $(g(0,0), g(0,1), g(1,0), g(1,1))$ de la compuerta es cifrada como 
 \begin{center}
 \begin{tabular}{|c|}
 \hline
 $\enc_{K_u^{0}||K_{v}^{0}}(K_w^{g(0, 0)})$\\
 \hline
 $\enc_{K_u^{0}||K_{v}^{1}}(K_w^{g(0, 1)})$\\
 \hline
 $\enc_{K_u^{1}||K_{v}^{0}}(K_w^{g(1, 0)})$\\
 \hline
 $\enc_{K_u^{1}||K_{v}^{1}}(K_w^{g(1, 1)})$\\
 \hline
 \end{tabular}
 \end{center}
 
 y luego la tabla es permutada.

Si el evaluador tiene las llaves $K_u^{b_u}$ y $K_v^{b_v}$, entonces puede decifrar la fila que contiene  $\enc_{K_u^{b_u}||K_{v}^{b_v}}(K_w^{g(b_u, b_v)})$. Sin embargo, el evaluador no sabe cual es la fila que corresponde a sus llaves, por lo que una opción es decifrar las 4 entradas y quedarse con la correcta. A continuación, veremos de qué manera el evaluador puede saber cuál de los 4 valores decifrados corresponde a $K^{g(b_u,b_v)}_w$, y cuales valores son ``basura''. Sea $\Pi=(\gen, \enc,\dec)$ un cifrador simétrico.

\begin{enumerate}

\item \textbf{9pts.} Proponga un cifrador simétrico $\Pi'=(\gen', \enc', \dec')$ tal que
$\forall m$
\begin{enumerate} 
\item $\dec'_{k}(\enc'_{k}(m)) = m$, pero  
\item $\forall k_1\neq k_2$ $\dec'_{k_2}(\enc'_{k_1}(m)) = \bot$. 

\end{enumerate}

Realize los supuestos necesarios sobre el espacio de textos planos y textos cifrados para el cifrador original $\Pi$.

\item \textbf{6pts.} Verdadero o falso, justifique informalmente su respuesta. El cifrador simétrico utilizado en YAO:

 \begin{itemize}
 \item Puede ser perfectamente secreto.
 \item Debe tener cifrados indistinguibles.
 \item Debe ser CPA-seguro.
 \end{itemize} 
\end{enumerate}


\section*{Problema 4 (15pts)}

Genere un par de llaves asimétricas GPG, y utilícelas para firmar el envío de su solución. La llave pública del profesor y ayudante
pueden ser encontradas en la página web del curso. Puede utilizar Thunderbird con Enigmail plugin.

Verifique las huellas de las llaves: 

\begin{tabular}{cc}
fkrell@gmail.com & {\small F16D 9606 3D2B 487D 965A A0D9 DFF2 4787 A7C2 1672}\\
jsnavar1@uc.cl & {\small 9DD8 9AC6 6A7C 9624 3732 15EA 98FE AD1A 2586 175B}
\end{tabular}

\end{document}
