前言
本人跨专业考研上岸网络空间安全专业,本科期间除了C语言外完全0基础,为了研究生期间跟得上学校进度,开启自学之路。在知乎上找了找经验,买了本《深入浅出密码学》开始入门密码学。看了不到两章,就被用到的整数环、mod运算给难住了,遂又开始补习密码学所需要的数学基础。为了保持自己的学习动力和加强记忆,开始随学习进度更新学习笔记和个人理解。
Tip
课程为哈尔滨工业大学韩琦老师所讲的信息安全数学基础课程,笔记也是本人所做该课程的随堂笔记。文章中包含个人为方便记忆所做的个人理解,因本人水平有限,疏漏或理解错误在所难免,欢迎批评指正!
四、近世代数
这一章基于前三章定义的数学概念及其性质,开始系统地学习近代的密码学标准或数学原理。首先是基于有限域的多项式表示法所表示的高级加密数据标准(AES),其定义如下:
多项式或字节表示的加法和乘法如下例所示:
需要注意的是,课上并没有给出乘法的字节表示,自己推算了一下发现由于是在有限域内的乘法,不同于一般的二进制乘法,不会产生进位,这样才是正确的结果。
字节的按模移位通过定义倍乘函数来实现:
而且类似于按模乘法,按模移位也不同于一般的移位操作:
例一的结果恰好是原字节左移一位得到的,可能会对按模移位产生误解。例二中,若是普通的左移应是00100110,但按模移位给出的结果则为:00111101,所以利用倍乘函数移位时还是应按照概念按步骤计算。
关于椭圆曲线,与韦尔斯特拉斯方程有关:
定义域k上的椭圆曲线如下:
值得注意的是,对椭圆曲线可以有更深层次的认识:
仔细研究一下椭圆曲线的定义:域k上的点集E称为域k上的椭圆曲线,即表明E实际上是一个集合,对于集合我们已经很熟悉了,通过定义集合上的运算法则和单位元等就可以组成群、环、域等。类似的,定义E上加法:
这是一个很几何的定义,我们来看两个图例,分别对应了P、Q同点或不同点的情况:
对于E上加法,有如下性质(本来想尝试证明的,发现需要很强的几何能力,实在搞不出来。鉴于只是一个基础课程,记住并且会用就行。):
对于蓝字的解释,回想一下群定义时的概念:
性质5使得E满足G1,性质2对应满足G2,将O视为单位元后,性质4满足G3,性质3满足G4。即三元组(E,⊕,O)满足G1,G2,G3,G4构成交换群。
看完几何上的结果,椭圆曲线的数学表示为:
以上均是椭圆曲线得理论结果,但密码学领域实际使用的椭圆曲线则较为简单:
定义后的第一个问题就是如何求点集(或称椭圆曲线)Ep(a,b)?
则点集上的加法定义为:
接着就是具体算法的介绍了: