现代密码学常用符号总结

Posted Max1z

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了现代密码学常用符号总结相关的知识,希望对你有一定的参考价值。

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

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

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

符号风格

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

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

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

主要符号总结

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

运算符

二元运算符

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

概率与取样

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

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

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

常用记号

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

算法记号

对称密码算法

名称符号含义 LaTeX \\LaTeX LATEX命令使用情景
密钥 K K K对称密码算法的密钥K对称密码算法中双方共享一密钥
密钥生成 G e n ( 1 λ ) \\mathrmGen(1^\\lambda) Gen(1λ)根据安全参数 λ \\lambda λ生成算法密钥\\mathrmGen(1^\\lambda)许多对称密码算法的第一步
加密 E n c \\mathsfEnc Enc将明文加密为密文\\mathsfEnc对称加密算法的主要步骤
解密 D e c \\mathsfDec Dec将密文解密为明文\\mathsfDec对称加密算法的主要步骤
消息认证码生成 M a c \\mathsfMac Mac根据对称密钥生成某条消息对应的消息认证码\\mathsfMacHMAC等MAC算法
消息认证码验证 V r f y \\mathsfVrfy Vrfy根据对称密钥验证某个消息认证码是否正确\\mathsfVrfyHMAC等MAC算法

公钥密码算法

名称符号含义 LaTeX \\LaTeX LATEX命令使用情景
公钥 P k \\mathsfPk Pk可公开的密钥\\mathsfPk公钥算法, PKI等
私钥 S k \\mathsfSk Sk与公钥对应的需要秘密保存的私钥\\mathsfSk公钥算法
密钥生成 G e n ( 1 λ ) \\mathsfGen(1^\\lambda) Gen(1λ)根据安全参数 λ \\lambda λ生成一对公私钥\\mathsfGen(1^\\lambda)公钥算法
公钥加密 E n c ( P k , ⋅ ) \\mathsfEnc(\\mathsfPk, \\cdot) Enc(Pk,)计算某一事件的概率\\mathrmPr加密只有私钥拥有方才能解密的信息
私钥解密 D e c ( S k , ⋅ ) \\mathsfDec(\\mathsfSk, \\cdot) Dec(Sk,)离散数学中集合的概念\\left\\\\cdots\\right\\
私钥签名 S i g n ( S k , ⋅ ) \\mathsfSign(\\mathsfSk, \\cdot) Sign(Sk,)在安全参数 λ \\lambda λ的多项式级别下的极小量\\varepsilon可证明安全的敌手优势说明
公钥验签 V r f y ( P k , ⋅ ) \\mathsfVrfy(\\mathsfPk, \\cdot) Vrfy(Pk,)在安全参数 λ \\lambda λ的多项式级别下的极小量\\varepsilon
采样函数 S a m p \\mathsfSamp Samp均匀选取集合中的元素\\mathsfSamp单向置换
逆置换 I n v \\mathsfInv Inv拥有陷门信息后的高效逆置换算法\\mathsfInv基于陷门置换的公钥加密

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

密码学哈希

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

模糊提取器

名称符号含义 LaTeX \\LaTeX LATEX命令
初始化 i n i t ( 1 λ ) \\mathsfinit(1^\\lambda) init(1λ)生成公开模糊提取器的公开参数 p p \\mathsfpp pp\\mathsfinit(1^\\lambda)
生成字符串 G e n ( p p , w ; r ) \\mathsfGen(\\mathsfpp,w;r) Gen(pp,w;r)根据 p p \\mathsfpp pp,元素 w \\mathsfw w与随机性 r \\mathsfr r生成字符串 R R R与公开的帮助字符串 P P P\\mathsfGen(\\mathsfpp,w;r)
提取字符串 R e p ( p p , w ′ ; P ) \\mathsfRep(\\mathsfpp,w\\prime;P) Rep(pp,w;P)根据 p p \\mathsfpp pp,相近元素 w ′ \\mathsfw\\prime w与帮助字符串 P P P还原字符串 R R R\\mathsfRep(\\mathsfpp,w\\prime;P)

哈希证明系统

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

名称符号含义 LaTeX \\LaTeX LATEX命令
生成哈希密钥 H a s h K G ( p p ) \\mathsfHashKG(\\mathsfpp) HashKG(pp)根据语言系统的参数 p p \\mathsfpp pp生成哈希密钥 h k hk hk\\mathsfHashKG(\\mathsfpp)
派生投影密钥 P r o j K G ( h k , p p , x ) \\mathsfProjKG(hk,\\mathsfpp,x) ProjKG(hk,pp,x

Mybatis 特殊符号(大于,小于,不等于)及常用函数总结

1. 使用场景

因为我们在日常代码Mybatis 动态拼接语句时候经常使用到 大于(>,>=)、小于(<,<=)、不等于(<> ,!=)符号。由于此符号包含了尖括号,Mybatis使用的 *.xml文件格式。于是
需要之内尖括号进行相关的转义或者使用 CDATA 区段。

2、实现方式

2.1、转义特殊符号方式

注释:严格地讲,在 XML 中仅有字符 “<“和”&” 是非法的。省略号、引号和大于号是合法的,但是把它们替换为实体引用是个好的习惯。

mapper文件写法:
select * form tablenme t where t.code <> 1

2.2、使用 CDATA 区段

所有 XML 文档中的文本均会被解析器解析。只有 CDATA 区段(CDATA section)中的文本会被解析器忽略。

大于等于 <![CDATA[ >= ]]>  
小于等于 <![CDATA[ <= ]]> 
不等于<![CDATA[ <> ]]>

mapper文件写法:

select t.* form tablenme t where t.code <![CDATA[<>]]> 1

3、Mybatis if 判断等于一个字符串

当传入的type的值为note 的时候,if判断内的sql也不会执行。

<if test="type=='note'">  
    and status = 0   
</if>

mybatis是使用的OGNL表达式来进行解析的,在OGNL的表达式中,'note’会被解析成字符,因为java是强类型的,char 和 一个String 会导致不等。所以if标签中的sql不会被解析。

需要解决这个问题,只需要把代码修改成:

<if test='type=="note"'>  //注意是双引号,不是单引号!!!
    and status = 0   
</if> 

4、mysql二进制转成字符串

SELECT  cast(fieldName as CHAR)  FROM tablename

以上是关于现代密码学常用符号总结的主要内容,如果未能解决你的问题,请参考以下文章

现代密码学-密码学概论与基本知识

现代密码学介绍(一)

华为机试题 HJ87密码强度等级

华为机试题 HJ87密码强度等级

关于密码安全

古典密码学总结及代码实现

(c)2006-2024 SYSTEM All Rights Reserved IT常识