没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
1
序言
笔者在编写
USTC
信息安全实践课程的⼆级密码学讲义中,简要编写了
SageMath
的⼊门教程,主要针对
CTF
的
CRYPTO
类赛题的脚本的撰写。时间仓促,难免有所纰漏。后续会不定期更新该教程。
已同步更新⾄
Github
仓库:
https://github.com/tl2cents/SageMath-Concise-Tutorial
。
2
格理论基础
SageMath
(
System for Algebra and Geometry Experimentation
),是⼀个覆盖许多数学功能的应⽤软件,包
括代数、组合数学、图论、计算数学、数论、微积分和统计。尤其是数论上的许多算法,
sagemath
都集成了其实现
接⼜。
sagemath
本质上是以
python
编
程语言
为
基
础
的
数
学
应
用
软
件
,因此需要有⼀定的
python
基础和数论理论基
础。
在介绍
sagemath
的使⽤之前,我们先简要回顾⼀下基本数论以及介绍格理论的相关内容。
2.1
基本数论
SageMath
需要的基本数论理论和线性代数如下,为前置内容,此处不赘述:
有
限
域
有
限
域
的
阶
、
循
环群
模
多
项
式
环
离
散
对
数
矩
阵
的
秩
行
列式
线
性
子
空
间
(
线
性相关
)
2.2
格理论
2.2.1
格的定义
算法数论中常常遇到这样⼀个问题:它有连续与离散两种成分,⼀个典型的例⼦就是满⾜某些不等式的整数系之
寻求
,
具有这个性质的问题通常可以⽤格的算法理论来成功求解。标准地来说:
一个
格
是
欧
式
向量空
间的一个
离
散
子
群
。
回忆线性线性代数的基本内容:欧式向量空间是实数域 上的⼀个有限维向量空间 ,并且定义了内积。实数的
n
元组的全体构成了 上⼀个
n
维空间,实数坐标空间 就能认为是⼀个
n
维欧式空间。简单地说,⼆维欧式空间就是:
在线性代数⾥实数域上对
n
个
d
维线性⽆关向量 的线性组合(
线
性
子
空
间
)可以表⽰为:
2/21
⽽格的定义则将系数 是转到了整数域 上:
在此基础上我们给出 张成的线性⼦空间和⼆维格的形象化表⽰:
⼆维⼦空间,⼆维全平⾯:
⼆维格:
也就是上图⽅格中所有的格点,这也是为什么我们称这个空间为格空间,如下图
3/21
本教程中不涉及复杂的格理论,对于格,在
CTF
中最常⽤的就是形式是把它表⽰为矩阵形式,考虑⼀个
:
上的 矩 阵
CTF
中许多模⽅程的问题都可以转换到
M
的⾏向量 所张成的
n
维格空间
L
中进⾏求解。
2.2.2
最短向量问题(
Shortest Vector Problem
:
SVP
)
格中的最短向量问题,亦即齐次逼近问题,规范式的描述是:
SVP
问题
给定⼀个正秩格 ,模长映射为 ,寻求⼀个⾮零元素 使得模长 最⼩(尽可能地⼩)。
利⽤上⾯矩阵表⽰的形式来阐述就是,求 ,模长尽可能地⼩,即:
关于格的最⼩向量问题的最主要的理论成果是
Minkowski
定理
Minkowski
定理
每⼀个正秩
n
维格
L
皆包含⼀个⾮零元素
x
满⾜
:
其中 是格
L
对应矩阵的⾏列式。
然⽽,我们需要注意
Minkowski
定理是⾮构造性的,也就是我们知道其存在性,但是并没有有效的算法可以得到
上述
x
。为了解决格中的最短向量问题,我们介绍⼀个经典算法:
LLL
算法。
LLL
算
法
在格上找到⼀组基,满⾜如下效果
4/21
并且这组基具有如下性质:
LLL
算
法
很好的一个
性
质
是可以在多
项
式
时间
内找
到
符
合
上
述
条件
的一
组基
,并且在
sagemath
上有实现
接⼜。另外⼀个效果可能更好、参数设置过⼤时间复杂度达到指数级别的
SVP
求解算法是
BKZ
算
法
,多
数情况下利⽤
LLL
算法已经⾜够,这⾥不再详细介绍。
2.2.3
最近向量问题(
Closest Vector Problem
:
CVP
)
格的最近向量问题或称⾮齐次逼近问题规范化定义如下:
CVP
问题
在⼀个欧式向量空间 中给定⼀个格 ,以及⼀个元素 ,寻求 具有最⼩的可能距离 。
利⽤上⾯矩阵表⽰的形式来阐述就是,求 ,模长尽可能地⼩,即:
当然我们还可以在
CVP
上增加约束:
给定⼀个
Lattice
,与⼀个随机点 ,还有搜索距离 ,并且假设
,
,
CVP
问题是让我们找到⼀个合理
的格点
,
并且这个点到 的距离⼩于等于 。
简单来说就
寻
找
格
L
中
距
离
非格
点
x
最
近
的一个
格
点
y
,我们不过多介绍理论部分,这⾥给出⼀个
CVP
问题求解
的⼀个常⽤算法
Babai's nearest plane algorithm
:
Babai
算
法
输⼊秩为
n
的格
L
的⼀组基 和⼀个⽬标向量
t
,输出
CVP
问题的近似解
5/21
剩余20页未读,继续阅读
湯姆漢克
- 粉丝: 21
- 资源: 304
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0