本文将总结现代密码学 (Modern Cryptography) 中的常见数学符号, 了解以下预备知识可以极大增加本文的阅读体验:

  • 离散数学, 线性代数与概率论三门课程中的主要数学记号及其含义 ?
  • 现代密码学是一门什么样的学科 ?
  • LaTeX\LaTeXLATE​X的基本用法与常见数学符号命令有哪些 ?

在阅读密码学相关的论文时会遇到各类符号, 即使有的论文命名法和符号风格不同, 但在符号使用规律上基本都保持一致. 因此, 本文将持续性地总结记录现代密码学中的常见符号和表示法, 方便查阅参考, 并还会结合LaTeX\LaTeXLATE​X相关命令给出示例和一些实用技巧.

符号风格

密码学中涉及符号的风格与使用规范遵循一般的数学公式表示规范, 而这些规定通常是约定俗成的. 具体而言有:

  • 斜体表示: 如x,m,nx,m,nx,m,n, X,Y,ZX, Y, ZX,Y,Z等斜体形式通常用于表示变量 (variable), 如第iii个正整数是nnn; 如果遇到斜体加粗, 则一般表示的是某个随机变量或随机样本.
  • 正体表示: 如X,Y\mathsf{X},\mathsf{Y}X,Y等正体形式通常用于表示矩阵或某种变换 (transform).
  • 花体表示: E\mathcal{E}E, X\mathcal{X}X等花体形式通常表示集合概念, 因此有时会有 x∈Xx\in \mathcal{X}x∈X.
  • 空心表示: R\mathbb{R}R, Q\mathbb{Q}Q等空心形式通常表示空间, 等, 这些符号表示的范围通常是比花体和正体表示都要大的.
  • LaTeX\LaTeXLATE​X特殊字体: 在实际的论文写作中,某些特殊符号或者术语样式需要用到LaTeX\LaTeXLATE​X中的各类字体样式命令,常见命令如 \textit, \textsf, \texttt, \mathsf等。 更多信息可以参阅刘海洋老师的《LaTeX入门》第二章.

在了解上述常见符号风格后, 即使在论文中遇到没见过而且作者似乎也没解释的记号, 也可以通过记号的书写风格来结合上下文推测这一记号的大致特点.

主要符号总结

下面我们将从三个方面总结现代密码学中的主要符号, 首先就是最基础也是最常见的各种运算符了.

运算符

二元运算符

名称 符号 含义 LaTeX\LaTeXLATE​X命令 使用情景
异或 ⊕\oplus⊕ 01串 (或两数) 之间的异或操作 \oplus One Time Pad
连接 ∣∣||∣∣ 顺序连接两个串 || 将两个串拼接后输入一个算法
组合作用 ∘\circ∘ 两个函数作用的"组合" \circ 密码理论分析, 白盒密码, 同态
代数运算 ⋅\cdot⋅, +++ (模) 乘, (模) 加 \cdot, + 代数运算, RSA等公钥密码算法
移位 <<,>><<,>><<,>> 将一个数的二进制向左或向右移动若干位 <<,>> 各类算法(如MD5, SM4)的底层运算

概率与取样

在现代密码学涉及的基础知识中, 概率论是很重要的一环. 在密码算法的可证明安全中, 概率论与随机过程的相关知识更是充当了核心角色. 因此,虽然有些符号并非运算符, 但为了方便也将在本处一并进行介绍.

名称 符号 含义 LaTeX\LaTeXLATE​X命令 使用情景
采样 ←\leftarrow← 从某一集合中采样出某个样本 \leftarrow 生成某一元素进行后续操作
随机采样 ←$\stackrel{\$}{\leftarrow}←$ 从某一集合中随机采样出某个样本 \stackrel{\$}{\leftarrow} 生成随机数
概率 Pr\mathrm{Pr}Pr 计算某一事件的概率 \mathrm{Pr} 衡量可证明安全中的各类事件发生的概率
集合 {⋯}\left\{\cdots\right\}{⋯} 离散数学中集合的概念 \left\{\cdots\right\} 各类密码算法与协议
概率分布 ∼\sim∼ 变量服从概率分布 \sim 基于格的算法与困难问题中的变量分布特征
可忽略概率 ϵ\epsilonϵ 在安全参数λ\lambdaλ的多项式级别下的极小量 \varepsilon 可证明安全的敌手优势说明
期望 EEE 计算某一随机变量或者分布的数学期望 E 基于格的算法证明中的相关计算

当然, 在数学中还有很多其他常见的二元运算符 (例如线性代数, 抽象代数中的一大堆记号), 此处我们只介绍密码学中常用的符号及其在密码学中的用途. 如其他需要补充说明, 欢迎分享你的建议 !

常用记号

除了常用的运算符外, 在阅读各类密码学的论文时, 最令人头疼的想必是各类繁杂的数学记号了. 但好在各个记号在不同论文中的写法基本都是统一的, 只是花样众多, 令人眼烦, 我们通常只需要在第一次遇见的时候记住就可以了.

算法记号

对称密码算法

名称 符号 含义 LaTeX\LaTeXLATE​X命令 使用情景
密钥 KKK 对称密码算法的密钥 K 对称密码算法中双方共享一密钥
密钥生成 Gen(1λ)\mathrm{Gen}(1^{\lambda})Gen(1λ) 根据安全参数λ\lambdaλ生成算法密钥 \mathrm{Gen}(1^{\lambda}) 许多对称密码算法的第一步
加密 Enc\mathsf{Enc}Enc 将明文加密为密文 \mathsf{Enc} 对称加密算法的主要步骤
解密 Dec\mathsf{Dec}Dec 将密文解密为明文 \mathsf{Dec} 对称加密算法的主要步骤
消息认证码生成 Mac\mathsf{Mac}Mac 根据对称密钥生成某条消息对应的消息认证码 \mathsf{Mac} HMAC等MAC算法
消息认证码验证 Vrfy\mathsf{Vrfy}Vrfy 根据对称密钥验证某个消息认证码是否正确 \mathsf{Vrfy} HMAC等MAC算法

公钥密码算法

名称 符号 含义 LaTeX\LaTeXLATE​X命令 使用情景
公钥 Pk\mathsf{Pk}Pk 可公开的密钥 \mathsf{Pk} 公钥算法, PKI等
私钥 Sk\mathsf{Sk}Sk 与公钥对应的需要秘密保存的私钥 \mathsf{Sk} 公钥算法
密钥生成 Gen(1λ)\mathsf{Gen}(1^{\lambda})Gen(1λ) 根据安全参数λ\lambdaλ生成一对公私钥 \mathsf{Gen}(1^{\lambda}) 公钥算法
公钥加密 Enc(Pk,⋅)\mathsf{Enc}(\mathsf{Pk}, \cdot)Enc(Pk,⋅) 计算某一事件的概率 \mathrm{Pr} 加密只有私钥拥有方才能解密的信息
私钥解密 Dec(Sk,⋅)\mathsf{Dec}(\mathsf{Sk}, \cdot)Dec(Sk,⋅) 离散数学中集合的概念 \left\{\cdots\right\}
私钥签名 Sign(Sk,⋅)\mathsf{Sign}(\mathsf{Sk}, \cdot)Sign(Sk,⋅) 在安全参数λ\lambdaλ的多项式级别下的极小量 \varepsilon 可证明安全的敌手优势说明
公钥验签 Vrfy(Pk,⋅)\mathsf{Vrfy}(\mathsf{Pk}, \cdot)Vrfy(Pk,⋅) 在安全参数λ\lambdaλ的多项式级别下的极小量 \varepsilon
采样函数 Samp\mathsf{Samp}Samp 均匀选取集合中的元素 \mathsf{Samp} 单向置换
逆置换 Inv\mathsf{Inv}Inv 拥有陷门信息后的高效逆置换算法 \mathsf{Inv} 基于陷门置换的公钥加密

值得一提的是, 公钥算法发展至今有很多种类, 也有很多高阶方案, 如门限加密, 秘密共享, 同态加密, 可搜索加密和函数加密等等. 不同的高阶方案也衍生出了各自的算法符号范式, 诸如Trap\mathsf{Trap}Trap, Index\mathsf{Index}Index等等. 由于这些零散记号和方案本身的特点紧密相关, 并非是公钥方案的共性操作. 故此处就不作进一步介绍.

密码学哈希

名称 符号 含义 LaTeX\LaTeXLATE​X命令 使用情景
计算哈希摘要 HHH 从某一集合中采样出某个样本 \leftarrow 生成某一元素进行后续操作
带密钥的哈希 H(K,⋅)H(K, \cdot)H(K,⋅), HK(⋅)H_{K}(\cdot)HK​(⋅) 从某一集合中随机采样出某个样本 H(K, \cdot), H_{K}(\cdot) HMAC

模糊提取器

名称 符号 含义 LaTeX\LaTeXLATE​X命令
初始化 init(1λ)\mathsf{init}(1^{\lambda})init(1λ) 生成公开模糊提取器的公开参数pp\mathsf{pp}pp \mathsf{init}(1^{\lambda})
生成字符串 Gen(pp,w;r)\mathsf{Gen}(\mathsf{pp,w;r})Gen(pp,w;r) 根据pp\mathsf{pp}pp,元素w\mathsf{w}w与随机性r\mathsf{r}r生成字符串RRR与公开的帮助字符串PPP \mathsf{Gen}(\mathsf{pp,w;r})
提取字符串 Rep(pp,w′;P)\mathsf{Rep}(\mathsf{pp,w\prime;}P)Rep(pp,w′;P) 根据pp\mathsf{pp}pp,相近元素w′\mathsf{w\prime}w′与帮助字符串PPP还原字符串RRR \mathsf{Rep}(\mathsf{pp,w\prime;}P)

哈希证明系统

一般的哈希证明系统通常是一个非交互的零知识系统, 此处主要指的是Smooth Projective Hash Proof System (SPHFs)

名称 符号 含义 LaTeX\LaTeXLATE​X命令
生成哈希密钥 HashKG(pp)\mathsf{HashKG}(\mathsf{pp})HashKG(pp) 根据语言系统的参数pp\mathsf{pp}pp生成哈希密钥hkhkhk \mathsf{HashKG}(\mathsf{pp})
派生投影密钥 ProjKG(hk,pp,x)\mathsf{ProjKG}(hk,\mathsf{pp},x)ProjKG(hk,pp,x) 根据语言xxx, pp\mathsf{pp}pp与哈希密钥hkhkhk派生出投影密钥hphphp \mathsf{ProjKG}(hk,\mathsf{pp},x)
计算哈希 Hash(hk,pp,x)\mathsf{Hash}(hk,\mathsf{pp},x)Hash(hk,pp,x) 根据语言xxx, pp\mathsf{pp}pp与哈希密钥hkhkhk计算哈希值HHH \mathsf{Hash}(hk,\mathsf{pp},x)
计算投影哈希 ProjHash(hp,pp,x,w)\mathsf{ProjHash}(hp,\mathsf{pp},x,w)ProjHash(hp,pp,x,w) 根据语言xxx, pp\mathsf{pp}pp与派生密钥hphphp和一个证据www计算出投影哈希值pHpHpH \mathsf{ProjHash}(hp,\mathsf{pp},x,w)

可证明安全记号

名称 符号 含义 LaTeX\LaTeXLATE​X命令 使用情景
敌手 A\mathcal{A}A 可证明安全中试图解决攻破方案的假想攻击者 \mathcal{A} A\mathcal{A}A 尝试攻破加密算法的不可区分性
挑战者 C\mathcal{C}C 可证明安全中试图解决困难问题的挑战者 \mathcal{C} C\mathcal{C}C 尝试解决大整数分解问题
Oracle O\mathcal{O}O 经抽象后的证明过程中可被查询的预言机 \mathcal{O} 算法的加解密部分被抽象为了O\mathcal{O}O供A\mathcal{A}A或C\mathcal{C}C提交明密文查询
标志 bad\mathsf{bad}bad 用来指示证明过程中某些事件的发生 \mathsf{bad} 当加密得到的密文产生了碰撞时, 是一个bad\mathsf{bad}bad事件
证明游戏 Game\mathsf{Game}Game 为安全性证明定义的挑战者与敌手的交互模型 \mathsf{Game} 定义A\mathcal{A}A与O\mathcal{O}O的若干次选择明文查询是一个Game\mathsf{Game}Game

其他常用符号

在密码算法中还有一些常用的符号, 如对字符串数据的一些操作. 如有其他常用符号也欢迎大家补充.

名称 符号 含义 LaTeX\LaTeXLATE​X命令 使用情景
字符串长度 ∣s∣|s|∣s∣ 得到字符串sss的长度 \left|s\right| 密码算法输入
全0字符串 0n0^{n}0n nnn-bit 长的全0字符串 0^{n}
全1字符串 1n1^{n}1n nnn-bit 长的全1字符串 1^{n}
字符串分块 ∣∣s∣∣l||s||_{l}∣∣s∣∣l​ 将字符串sss分为lll块, 每块长度为⌈∣s∣l⌉\lceil \frac{|s|}{l} \rceil⌈l∣s∣​⌉ bit ||s||_{l} 对分组算法中的每一块进行加解密

量子密码算法符号

在量子密码算法中会涉及很多量子力学的操作与符号, 而这些符号其实都遵循着狄拉克记号法, 也就是所谓的Bra-ket notation. 不过在我们第一次遇到量子密码算法时, 看到这些符号依然会头大, 下面初步总结了一些常用记号方便检索.

注意, 量子密码算法都是在一个或若干个希尔伯特空间 (H\mathcal{H}H) 中的, 此时算法的状态会被抽象为一个H\mathcal{H}H中的状态矢量ψ\psiψ, 因此这部分的操作与符号有些和线性代数也是通用的.

名称 符号 含义 LaTeX\LaTeXLATE​X命令
右矢 ∣ψ⟩|\psi \rangle∣ψ⟩ 可理解为线性空间中的某个向量 | \psi \rangle
左矢 ⟨ψ∣\langle \psi |⟨ψ∣ 某个右矢对应的共轭矢量 \langle \psi |
矢量间的内积 ⟨a∣b⟩\langle a | b \rangle⟨a∣b⟩ 两矢量间进行内积运算 \langle a | b \rangle
矢量间的外积 ∣a⟩⟨b∣|a\rangle \langle b |∣a⟩⟨b∣ 两矢量间进行外积运算 |a\rangle \langle b |
张量积 ⊗\otimes⊗ 希尔伯特空间的张量积, 如H1⊗H2\mathcal{H_{1}}\otimes \mathcal{H_{2}}H1​⊗H2​形成一个组合系统 \otimes
共轭转置 U†U^{\dag}U† 矩阵的共轭转置, 被用来描述H\mathcal{H}H上的幺正变换 U^{\dag}
概率坍缩 ∣⟨a∣ψ⟩∣2|\langle a | \psi \rangle|^{2}∣⟨a∣ψ⟩∣2 经过某一量子系统变换后, 从叠加态ψ\psiψ观测到状态aaa的概率 |\langle a | \psi \rangle|^{2}
状态叠加 ∑∣ai⟩\sum |a_{i}\rangle∑∣ai​⟩ 将若干个状态∣ai⟩|a_{i}\rangle∣ai​⟩进行叠加得到叠加态 \sum |a_{i}\rangle
量子Oracle变换 O∣x⟩\mathbf{O}|x\rangleO∣x⟩ 在量子Oracle中对矢量∣x⟩|x\rangle∣x⟩进行变换得到∣x+O(x)⟩|x+O(x)\rangle∣x+O(x)⟩ \mathbf{O}|x\rangle

由于我对量子力学的相关概念也不是非常熟悉, 上述记号如有错误欢迎大家指出, 也欢迎大家补充其他常见的量子密码方案记号.

LaTeX宏包 cryptocode 的使用

cryptocode是一个专门为了密码学研究者提供的LaTeX\LaTeXLATE​X宏包, 而且这一宏包已经默认加入了texlive2022中, 使用时无需额外安装, 只需要\usepackage[your_options]{cryptocode}就能引入. 而且这个宏包的文档非常全面, 基本可以做到即查即用. 这里就拾人牙慧, 简单介绍几个最常用的命令.

常用符号

上文提到的很多运算符号, 其实已经都在cryptocode中封装好了, 尤其是一些呈现方式简单, 但LaTeX\LaTeXLATE​X命令复杂的运算, 可以用cryptocode提供的更容易记忆和使用的短命令.

名称 cryptocode命令 等价LaTeX\LaTeXLATE​X命令
随机采样 \sample \leftarrow
标志 \bad \mathsf{bad}
0-1集合 \bin \left\{0, 1\right\}
概率 \prob \mathsf{Pr}
敌手优势 \advantage \mathsf{Adv}
密钥生成 \kgen \mathsf{KGen}

上述这些符号只是cryptocode封装的很小一部分, 官方说明文档中会有更多描述.

算法

在密码学论文中, 除了那些常见符号外, 还会需要用LaTeX\LaTeXLATE​X的algorithm环境呈现算法方案. 而在cryptocode中则可以直接用procedureblock, 效果如下图所示.

而对应的LaTeX\LaTeXLATE​X代码也更为简洁, 无需像原来algorithm包那样写过多不必要的关键字.

\procedureblock {$\indcpa_\enc^\adv(\secpar)$}{
b \sample \ bin \\
(\pk, \sk) \sample \kgen(\secparam) \\
(m_0, m_1)  \sample \adv(\secparam ,\pk, c)\\
c \sample \enc(\pk ,m_b)\\
b' \sample \adv(\secparam, \pk, c)\\
\pcreturn b = b’
}

Game-based 安全证明

一篇理论密码方案论文的核心就是它的安全性证明了, 而在写一些game-based proof 时, 我们常常需要借助 bad\mathsf{bad}bad 等符号标注出一个game里有利于敌手的那些事件. 要表达这样一件事, 一般需借助table环境以及一些文本样式命令. 然而, cryptocode也提供了这方面的封装, 如下图所示.

此外, 除了最基本的这种game-based proof外, 它还提供了game hopping, reduction等的命令封装, 这能极大地减少密码学研究者在撰写论文时的麻烦.

密码协议

在密码学中还有很多协议(Protocol)相关的工作,而对于我个人而言,通过drawio等工具画协议图还是有些繁琐了,而且如果数学公式较多的话在校对和排版上都存在着不少缺陷; 而原生tikz的作图效果很漂亮,但学习和使用成本太高。

而在cryptocode中,可以同样使用procedureblock命令与缩进指令 (tabbing) \>方便地通呈现一个密码协议,如下图所示。

总结

本文总结了传统密码学与量子密码方案中的常见记号与对应的LaTeX\LaTeXLATE​X代码, 以缓解记忆密码学论文中繁琐符号含义所带来的烦躁心情

现代密码学常用符号总结相关推荐

  1. 格密码学常用符号公式Latex转换

    1表达关系 逻辑或 ∨ \vee ∨:\vee 包含: 箭头: 等价 ⇔ \Leftrightarrow ⇔ \Leftrightarrow s ⟵ $ D s\stackrel{\$}{\longl ...

  2. CTF|密码学常用网站超详细汇总

    CTF之密码学常用网站汇总 CTF中那些脑洞大开的编码和加密 https://www.tuicool.com/articles/2E3INnm 一篇文章彻底弄懂Base64编码原理 https://b ...

  3. 【五线谱】五线谱的常用符号 ( 花连谱号 | 高音谱号 | 低音谱号 | 休止符 | 小节线 )

    文章目录 一.五线谱的常用符号 1.花连谱号 2.高音谱号 3.低音谱号 4.休止符 5.小节线 一.五线谱的常用符号 下图是常见的五线谱 , 下面开始介绍五线谱的重要元素 ; 1.花连谱号 上述五线 ...

  4. c语言常用符号与英文,C语言常用符号与英文(7页)-原创力文档

    C语言常用符号与英文 c语言的符号含义 main() {int w=4,x=3,y=2,z=1; printf("%d\n"): 优质解答 举例: a=1; b=2; a>b ...

  5. 常用数据验证正则表达式释义(附:正则表达式常用符号)

    正则表达式,要想完全掌握,几乎是不可能的.而且,正则表达式,也并不是万能的,很多情况,并不能做倒完全的匹配.如果我们仅仅是做网站,在数据验证.简单查询的时候使用,我们只需要掌握几个常用的验证表达式,并 ...

  6. 密码学常用的算法填充模式_密码学的操作模式

    密码学常用的算法填充模式 Modes of operation of a block cipher are procedural rules for a generic block cipher. T ...

  7. 1. 批处理常用符号详解:

    1. 批处理常用符号详解: -------------------------------------------- 1.@ 一般在它之后紧跟一条命令或一条语句,则此命令或语句本身在执行的时候不会显示 ...

  8. latexkatex@常用符号@符号手写识别

    文章目录 katex/latex_常用符号 ref 手写识别latex符号

  9. C与C++中的常用符号与标点用法详解及实例

    C与C++中的常用符号与标点符号有:"+"."-"."*". "/"."%"."& ...

  10. LaTeX 公式常用符号与常见问题解决

    在 Latex 中,行内公式使用 $ 公式内容 $:行间公式使用 $$ 公式内容 $$ 或者 \begin{equation} 数学符号 LaTex 数学符号大全 条件独立和不独立符号 条件独立符号: ...

最新文章

  1. luasocket 安装记录 (FS1.6)
  2. Cisco呼吁Arista停止在美国销售产品
  3. 服务不支持 chkconfig 的解决方法
  4. FLASHBACK实施笔记
  5. 我看team work
  6. virtualbox中文技术文档_随笔--西门子STEP7中如何寻找技术文档
  7. NHibernate+MySql (erro 解决方法)
  8. linux云管理,教程|云帮手部署Linux公有云管理系统
  9. git 提交修改到github上
  10. SAP Hybris Commerce启用customer coupon的前提条件
  11. python redis 性能测试台_Redis性能测试
  12. Java计算文件MD5值(支持大文件)
  13. linux tar 打包.压缩.解压缩 命令说明
  14. 几个北大和南开学霸公众号,值得学习
  15. 情境领导模式(权变)
  16. gird布局解决 最后一行数量不对布局问题
  17. 在微型计算机中1mb等于多少字节,1MB等于多少字节?
  18. 阿里云物联网平台总结
  19. 墨者_密码学加解密实训(摩斯密码第1题)
  20. 270、出界的路径数

热门文章

  1. 柔性传感器——多源信息融合
  2. 路由器自适应算法OSPF和RIP协议(通俗理解)
  3. luogu P1375 小猫
  4. Mac版网易云音乐打不开
  5. Redis 介绍-- Redis 3.0 官方文档的翻译版
  6. php三极管导通条件,关于NPN三极管的导通条件分析
  7. 计算机论文2002,自动化仪表杂志|论文|流速仪信号计算机采集系统的设计2002年9月(2)...
  8. 电动车的蓄电池与锂电池
  9. js中new一个对象的过程
  10. poi实现多个excel合并成一个excel