密码学的游戏证明

密码学的游戏证明

加密游戏示例

在密码学中,许多安全定义(IND-CPA、IND-CCA 等)都表示为对手和挑战者之间的博弈。是否有现有的包或简单的方法来实现这种效果?

答案1

这应该可以帮你搞定大部分事情。这是一堆杂乱无章的东西。如需进一步了解,请随时询问。(注意:我保留了\lextlinearrow和的原始定义\rextlinearrow,但重新定义了它们。原始定义使用的是覆盖文本,\tiny而不是正常的字体大小。)

\documentclass{article}
\parskip 1ex
\usepackage{amssymb}
\usepackage{verbatimbox}
\usepackage{multirow}
\usepackage{scalerel}

\newcommand{\extline}{$\scriptsize$-$\normalsize$\!}
\newcommand{\lextlineend}{$\scriptsize$\lhd\!$\normalsize$}
\newcommand{\rextlineend}{$\scriptsize\rule{.1ex}{0ex}$\rhd$\normalsize$}

\newcounter{index}

\newcommand\extlines[1]{%
  \setcounter{index}{0}%
  \whiledo {\value{index}< #1}
  {\addtocounter{index}{1}\extline}
}

\newcommand\rextlinearrow[2]{$
  \setbox0\hbox{$\extlines{#2}\rextlineend$}%
  \tiny$%
  \!\!\!\!\begin{array}{c}%
  \mathrm{#1}\\%
  \usebox0%
  \end{array}%
  $\normalsize$\!\!%
}

\newcommand\lextlinearrow[2]{$
  \setbox0\hbox{$\lextlineend\extlines{#2}$}%
  \tiny%
  $%
  \!\!\!\!\begin{array}{c}%
  \mathrm{#1}\\%
  \usebox0%
  \end{array}%
  $\normalsize$\!\!%
}

\renewcommand\lextlinearrow[2]{%
  \setbox0\hbox{$\lextlineend\extlines{#2}$}%
  \shortstack{$\mathrm{#1}$\\\addvbuffer[-.7ex -.3ex]{\usebox0}}%
}

\renewcommand\rextlinearrow[2]{%
  \setbox0\hbox{$\extlines{#2}\rextlineend$}%
  \shortstack{$\mathrm{#1}$\\\addvbuffer[-.7ex -.3ex]{\usebox0}}%
}

\begin{document}
\noindent


\begin{tabular}{clc}
{\large Challenger} & & {\large Adversary}\\
picks random k and &&\\
picks random b$\in$\{0,1\}&&\\
\multirow{2}{*}{\addvbuffer[1.1ex]{Repeat n times}\scaleto{\{}{7ex}}&
   \lextlinearrow{P_i}{26} &\\
& \rextlinearrow{\mathbf{E}_k[P_i]}{26} &\\
& \lextlinearrow{M_0, M_1}{26} & picks M$_0$, M$_1$ of equal length \\
& \rextlinearrow{C = \mathbf{E}_k[M_b]}{26} &\\
& \lextlinearrow{b' \in \{0,1\}}{26} &\\
& Attacker wins game if b = b'&
\end{tabular}

\end{document}

在此处输入图片描述

没有 \xrightrightarrow[a]{b}?如何将文字放在波浪箭头上?讨论我是如何想到使用文本而不是可扩展符号的。然而,我实际上更喜欢我目前使用\shortstack更好的方法,即使它是从基线开始构建的,而不是垂直居中结果。

相关内容