第一届Sakana战队密码学交流会
Date:
杂谈
- sakana缺密码学选手(23年).
- sakana战队的成立时间比较短, 对密码学方向掌握能力没有其他战队丰富;
- 学习以现代密码与量子计算为主;
- 密码学是一门越学越往前看的方向(pwn方向在学习中反而会往底层走).
- 战队维护文档, sagemath可以在阿里云镜像安装或archwsl直装;
浅聊密码学
古典密码学
现代密码学
注:现代密码学不代表是现在最前沿的东西, 在这里只是对一个阶段的密码学的统称
现代密码学有什么用
使用ssh进行连接用到了rsa算法.
区块链的货币加密(零知识证明)
类型
对称加密:
- rsa
- ecc
- elgamal
流/块加密:
- cbc
- IDEA (国际数据加密算法)
护网考点:
- AES(shiro721)
- DES(shiro550)
关于模运算
模运算的一些基本公式:
为什么在进行elgamal题目时会出现问题:
膜反并非简单的先求-1次方再取模, 可以参见invmod函数
xor
可逆性: 任意a xor b = c, 有b xor c = a, c xor a = b …..
rsa
rsa在日常生活中常见
- 某游戏厂商被共模攻击(相同的d造成问题)
- ssh连接服务器(大部分使用rsa)
- rsa在ctf里面也算样板戏
入门容易,工具广泛
格基归约(LLL)
ecc
攻击手段:
- p = n特异曲线(smart攻击)
- n可分解(Pohlig-Hellman)
后量子密码时代
量子计算机的来历
- 解决摩尔定律的挤牙膏问题
- 一些基本物理问题在足够微观的情况不适用
- 薛定谔的猫: 电子不只有0和1的状态
量子编程在做什么
参考<量子计算与量子信息(10周年版)>,作者:Michael A. Nielsen (个人总结的东西, 可能有问题, 欢迎指出) 通信密码不分家
香农和一堆前沿学者, 忘记叫什么了.
量子编程与密码学
- 抗量子密码进展.
- 据现在验证, 量子编程可以实现快速爆破rsa(CTF, 不记得是不是还可以搞ecc了).
入坑算法
solovay-strassen测试算法证明了量子计算机可以判断一个数是否为素数
import random
def jacobi(a, n):
if n % 2 == 0:
return None
a = a % n
t = 1
while a != 0:
while a % 2 == 0:
a /= 2
r = n % 8
if r == 3 or r == 5:
t = -t
a, n = n, a
if a % 4 == n % 4 == 3:
t = -t
a %= n
if n == 1:
return t
else:
return 0
def solovay_strassen(n, k=10):
if n == 2:
return True
if n % 2 == 0:
return False
for i in range(k):
a = random.randint(2, n - 1)
x = jacobi(a, n)
y = pow(a, (n - 1) / 2, n)
if x == None or y != x % n:
return False
return True
print(solovay_strassen())
学习推荐
- 量子编程基础数据推荐
- 试用推荐:IBM(但是不让国人使用, 见仁见智)
未来方向
密码学很有前景(暴论)
通信协议
- tcp
- udp
- telnet
- smtp
- ftp
- https
- ssh
- …
socket编程
ctf出题中, 密码学方向出题(nc类型题目)需要对socket有一定了解.
linux安全问题
- 经典题目, 给我们对于密码学的学习提供了新的思路.
- openssh