密码学
1.RSA算法
取两个大质数p、q;
计算公共模数n=p*q;
计算n的欧拉函数f(n)=(p-1)*(q-1);
任取公钥e大于1小于f(n)且与f(n)互质;
根据ed mod f(n) =1算出私钥d;
公钥(e,n) C=M^e mod n;
私钥(d,n) M=C^d mod n;
RSA大于等于124bit比较安全。
2.对称加密算法与非对称加密算法区别与优缺点
对称加密与非对称加密的主要区别在于密钥的个数。
对称加密,双方用相同密钥,加密速度快、高效、适用于大量数据的加密场景 ,但是无法解决密钥管理、无法确认消息来源。
非对称加密,公钥私钥,能提供身份验证、数字签名,但是加密速度慢、算法复杂。
3. HASH算法和SHA-1算法?
hash算法就是一个散列函数对于输入的变长信息产生一个定长的散列码。
即已知c好求散列值,但由散列值不好求c。
SHA-1 secure hash algorithm 安全哈希算法
补1再补0 直到L mod 512=448,后64位存长度不参与运算。
MD-5 输出128bit
SHA-1报文最长2^ 64 80轮运算 输出160 bit
SHA-256 输出256 bit
SHA-512 输出512 bit
4. 分组加密算法与序列加密算法区别
分组加密每次处理特定长度的快数据,输出定长密文。扩散性好,插入敏感,但处理速度慢。
序列加密/流加密对数据流进行连续处理,明密文长度相同。速度快,低错误传播 但扩散性差,插入不敏感。
5. 分组加密算法有哪些工作模式
EC电码本
CBC 密文传输连接
CFB 密文反馈
OFB 输出反馈
计数器
6.加密攻击有哪些工作模式/威胁模型?
唯密文攻击 只知道密文或密文的一部分 ,可通过统计学方法破密。
已知明文攻击 同一密钥的几个明-密文对
选择明文攻击 攻击者可选明文获得密文
选择密文攻击 攻击者可选密文获得明文
7.AES/DES加密
DES data encryption standard 对称密码 分组密码/块加密
IP置换 16轮迭代 IP逆置换 64bit/块 密钥64bit
每64位
先进行IP置换,64位分成左右两个32位部分
在密钥的参与下进行16轮迭代,48E扩展、与密钥异或、32S压缩等
16轮后,左右两部分交换并连接,再进行逆置换。
AES advanced encryption standard 对称密码 分组密码/块加密
AES 128bit/块 密钥每多64位多两轮 128-10 192-12 256-14
先进行一次明文与子密钥矩阵异或初始变换,
再进行 9轮运算,具体是字节代换,行列变换、轮密钥加密等,
最后进行一次最终轮变换(无列变换)。
8.数字签名
主要是防止抵赖、认证、防篡改的技术,一般先hash处理。
私钥加密 公钥解密
9.密码学攻击
主动攻击
在主动攻击中,攻击者尝试修改信息。 由于修改,由于可见性,可以容易地检测到这种攻击。比如重放、篡改等。
被动攻击
在被动攻击中,攻击者尝试获取信息而不修改信息。 因此,这些类型的攻击很难进行攻击,因为在数据中看不到任何干预迹象。比如窃听等。
10.密码学安全性
密码学中的安全性可以分为两种:理论安全性与计算安全性。
理论安全性:当攻击者拥有无限时间和资源还是不能破译密码时,称其为理论安全,也叫做无条件安全。
计算安全性:如果一个密码算法在给定时间和资源内无法被攻破,则称其为计算安全的。
评估某密码算法的安全性,我们一般会通过数学证明得到。
在密码学中其被称为可证明安全性,它可以证明某个密码方案至少和解决另一个已知的困难问题是同等困难的,只要困难问题仍然存在,那么方案就是安全的,这种证明方式被称为规约,其来自复杂性理论。
安全性证明根据其所使用的困难问题的类型,可以分为两种:与数学问题相关、与密码问题相关。
与数学问题相关如rsa大数分解,破解这类方案至少与解决一些数学难题一样困难。
与密码问题相关,这类方案是与另一个密码方案比较,并证明只有破解第一个密码方案时,才能破解第二个密码方案。对称密码的安全性证明常用这种方式。
11.MAC消息认证码 message authentication code
是一种确认完整性并进行认证的技术。
通过消息认证码可以确认自己收到的消息是否就是发送者的本意,也就是说可以判断消息是否被篡改,是否有人伪装成发送者发送了这条消息。
消息认证码的输入包括任意长度的消息和一个发送者与接收者之间的共享密钥。输出固定长度的数据,输出的数据就是 MAC 值。
消息认证码是一种与密钥相关联的单向散列函数。
单向散列函数保证消息的一致性,完整性,没有被篡改。
消息认证码保证消息的一致性,完整性,没有被篡改,并且不存在中间人伪装。
数字签名保证消息的一致性,完整性,没有被篡改,并且不存在中间人伪装,并且能防止抵赖。
12.重放攻击
窃听者不直接破解消息认证码,而是把它保存起来,反复利用,这种攻击就叫做重放攻击(replay attack)。
防止重放攻击的3种方法:
- 加入序列号
- 加入时间戳
- 加入随机数
13.生日攻击
生日攻击不是真实的一个攻击,而是一种概率的结果。生日攻击是以概率论中的生日问题为数据基础的一种密码学攻击方法。
如果一个房间里有23个或23个以上的人,那么至少有两个人的生日相同的概率要大于50%。对于60人以上,这种概率要大于99%。70人为99%,严格意义上,这并不是一个悖论,称之为悖论是由于跟人们的常识相悖。
所以由生日悖论结论可以看出来:产生哈希冲突所需的输入样本数量,远低于所有可能哈希值的全集数量。
14.信息熵
香农在信息论中提出了信息熵的概念
熵是表示随机变量不确定性的度量
从直观上,信息熵越大,变量包含的信息量越大,变量的不确定性也越大。
15.哈希碰撞
两个不同的输入,经过哈希算法后,得到了同样的哈希值,就叫做哈希碰撞。
产生原因:
一个空间较大的集合(输入)通过哈希算法映射到一个空间较小的集合(哈希值),必然会造成多个输入映射到一个哈希值上。
避免方法:
避免哈希碰撞的主要手段是,根据输入集合的数量级,选取输出合适哈希值长度的哈希函数,将哈希碰撞的概率降为“几乎不可能”
16.拓展长度攻击
在密码学和计算机安全中,长度扩展攻击(Length extension attacks)是指一种针对特定加密散列函数的攻击手段。
md5(secret+padding+追加字符串)
信数基础综合问题
1.群环域
2.域的特征
把域F的加法单位元记为0 ,乘法单位元记为1 ,如果存在正整数p ,使得下式成立:
1+1+1+....+1=p*1=0
就把最小的满足要求的p称为域 的特征。
例如素域F7的特征就是7 。
如果域F的元素1的特征为无限,就称F的特征为0。
例如有理数域Q的特征就是0 。
域的特征只可能是0或素数。