关于QQ、网银、大师、360等讨论题,你们有谁整理出答案来了 hmac是用hash函数做mac的技术
就是分解n啊,不分解n比分解n更难
大家都知道溢出现象一不小心就会发生,所以微软和VC做了预先准
备,在临时变量之间设置了缓冲隔离带,万一有溢出,尽可能避免影响到别人,也尽早尽量发现,在debug模式下才有此举,在release模式下隔离带就没有饿了。
缓冲区:
网银安全;
1、Ssl加密,https
2、输入银行账号和密码时的控件:特殊机制
3、对抗口令监听的软件(硬件对抗不了)
4、开通网银时的那句话来鉴别这不是钓鱼网
5、手机交易吗
6、U盾
7、有没有可能网站不存口令
8若是不可能,存了口令,认证期间不要在网上传,传的时候hash一
下,传hash值,用随机数挑战,随机数和口令hash。
9、网银ssl加密后给服务器
登陆方面。
重新设你的密保,复杂一点的,QQ密码 也复杂一点,
QQ盗号从单纯的“偷窥”、“键盘钩子”木马、“屏幕快照”木马,
到聊天记录监视和“网络钓鱼”
输入账号密码的时候可能网吧里面就双黑色的眼睛正盯着你的键盘
可能电脑里面还有你看不到的“眼睛”也监控着你的键盘,然后把获取的账号信息发送出去,而这类木马占了QQ盗号木马的99%以上。
将账号密码加密,QQ账号密码信息本地存放,无须注册。不用注册的
方式比较安全,不用担心信息在传递过程中出现问题
在加密通道中输入QQ账号密码后自动删除所有临时信息
注意电脑系统的清洁
检测键盘钩子程序和木马
以及打开的qq是不是按照目录下的qq.exe
聊天时可以进行身份认证 确定和你聊天的确实是那个人 所以现在比较高级的就是用二维码登陆⊙.⊙
手机确认一下
使用qq交换文件的话,服务器会不会有记录?
QQ加密外挂
Pkcs5
密钥分发:
1,公钥 CA
2:对称密钥 diffie hellman
文件加密的惨剧:
360加密:
无纸化办公:
单表统计规律:
文件共享
密码学和网络信息安全能帮助我们干什么 通信安全
偷听和保密
分组网络的存储-转发
假冒和抵赖
无纸化支持
办公和电子商务活动
签章、支付安全和抵赖问题
数字签名
系统安全
漏洞、病毒等问题
系统访问安全体现
恶意代码 病毒、木马、攻击程序
数据驱动
黑客
攻击破坏(漏洞,引诱)
未授权使用
系统和软件漏洞
NOS
系统软件
系统安全手段
硬件、NOS、系统软件
防火墙
软件、硬件
身份认证
访问控制和授权
kerberos
审计/入侵检测
LOG,IDS
网络管理员
关于签名
手写签名 数字签名 纸版文件 数字文件 手写签名 数字小文件 同一页纸 如何绑定 必须的特性: 不可伪造
不可重用
不可改变
不可抵赖
四种技术手段 加密
鉴别/数字签名 身份
消息来源和真实性 防抵赖
签名和验证 完整性
校验
网络安全模型 系统安全
病毒、木马、漏洞、黑客、攻击等
防火墙、信息过滤和入侵监测等
传输安全
加密防信息泄密
鉴别和认证:消息来源、身份核认、防抵赖等 完整性
* 密码学
加密算法、鉴别和签名算法、安全协议等 * 安全系统
互操作、部署、运行、监控等
密码分析学
目标:恢复密钥或明文
唯密文攻击
只有一些密文
已知明文攻击
知道一些过去的(明文及其密文)作参考和启发 选择密文攻击
有一台解密机(能解密选择的密文) 选择明文攻击
缴获有一台加密机(还能加密选择的明文)
Feistel参数特性
分组大小
密钥大小
循环次数
一般仅几轮是不够的,得十几轮才好,如16轮 子钥产生算法
越复杂越好
轮函数Round
关键
其他考虑
速度(尤其是软件实现的速度)
便于分析(使用简洁的结构)
不是Feistel结构的
AES、IDEA
* 绝大数分组密码属于或类似Feistel结构 多轮
每轮有XOR(或能恢复的操作)
轮函数
DES
参数
Feistel体制分组密码
分组大小 64bit,密钥大小 56bit,轮数 16轮
S-Boxes
对DES的争议集中在
密钥空间太小 Key space
从Lucifer的2^128降到DES的2^56
DES Challenge III, 22 hours 15 minutes
S盒 S-Boxes
S盒的设计准则?
陷门? trapdoors by NSA (?)
“Form surprise to suspicion”
从惊喜(甚至能够抵御很后来才发现的各种攻击)
到怀疑(n年前就如此厉害的NSA现在究竟有多厉害)
DES总结
DES算法对个人用户仍值得信赖
DES算法本身没有大的缺陷
对DES攻击方法复杂度为2^47
DES使用的2^56密钥空间不够大,蛮力攻击目前已能够奏效 (DES
Challenges III),所以关键场合不能使用了
DES已经不再是推荐标准
DES还是AES,或者RC4、RC5、IDEA、BF
Free/Open
DES模块仍广泛存在
保护和延续DES投资
对DES的改造
使用现存的软件硬件在强度上提高
AES(=Rijndael)算法
基本参数
分组大小128bits,被分为4组×4字节处理 密钥典型128、192、256bits
非Feistel结构
设计出发点
安全,抵抗已知的攻击方法
代码紧凑,速度够快,适合软硬件实现 结构简单/简明/简
对称算法的应用:
7.1 密码功能的设置
7.2 传输保密性
7.3 密钥分配
7.4 随机数 ↓ ↓ ↓
7.a 案例分析
随机数的用途
用做会话密钥 [需保密]
用来产生公钥 [需保密]
如产生RSA密钥时素数p和q
鉴别方案中用来避免重放攻击 nonce [不需保密] 每次使用不同的随机数
很多挑战-应答协议里的挑战值 [不需保密] salt in /etc/passwd etc [不需保密]
*
非对称算法
? 密钥:K =(Kd ,Ke )
? 加密:E (P ,Ke )= C
解密:D (C ,Kd )= P
要求:从Ke Kd
安全不仅依赖于密钥的保密,也依赖于随机数的质量 Kd 称为私钥,Ke 称为公钥
公钥加密算法:
加密(如果有人要给该用户A发送消息P) 他先获得该用户的公开钥Ke
加密
?
传输
? 解密
? D(C,Kd)=P C = E(P,Ke)
除非拥有Kd ,象该用户A ,否则不能解开
RSA算法参数建立:
找素数
选取两个512bit的随机素数p,q
计算模n 和Euler 函数φ(n)
n =pq
φ(n)=(p-1)(q-1)
找ed≡1 mod φ(n)
选取数e ,用扩展Euclid 算法求数d
? 发布
? 发布(e,n) ,这是公钥ke
d 保密,(d, n) 是私钥 kd
RSA加解密:
?加密
明文分组m 做为整数须小于n
解密
? m = cd mod n
RSA的正确性
证明
依据Euler 定理,在mod n 的含义下
?
? cd=(me)d=med
c = me mod n mod n =mkφ(n)+1
mod n =(mφ(n))km1 mod n
=m mod n // 据Euler定理
RSA计算实例:
选p=7,q=17
则n=pq=119
且φ(n)=(p-1)(q-1)=6×16=96
取e=5
则d=77 (5×77 =385 =4×96 +1≡1 mod 96) 公钥(5 ,119 ),私钥(77 ,119 )
? 加密m =19
则c =me mod n= 195 mod 119 = 66 mod 119
? 解密c =66
m =cd mod n = 6677mod 119 =19 mod 119 程序功能:
用p和q为素数,则n=pq且f(n)=(p-1)(q-1)
e为加密指数, 则求得解密指数d满足ed=1 mod f(n) 加密明文x,则得密文y=x^e mod n
解密密文y,则得解密明文x2=y^d mod n 注意:e必须和fn互素
用法:pqex <p> <q> <e> <x>
p 和q 都是素数
?e 和(p-1)(q-1) 互素
?x 小于pq
模幂乘:
97221 % 2003 (都在模2003意义下) 97221 = 97128+64+16+8+4+1
= 97128 9764 9716 978 974 971
?
? 依次计算971 、 972 、 974 、 978 、 一直平方下去即可,并保持模2003 如果某次方在1 式出现,则累乘
? 累积开始是1
* 乘法次数O(log2Y)
攻击RSA 9716… 97128
枚举
枚举所有可能明文m,用e加密和c比较
枚举所有可能的私钥d(已知明文)
数学方法
? 分解n=pq ,就可以计算φ(n) ,就可从e 求得d
? 不分解n ,而直接求φ(n), 再求d
? 不求φ(n) ,直接求d
对RSA的理解
形式简单,易于理解,研究深入支持广泛
既能用来加密,可以用来加密回话密钥,又可签名
它的对称性使它可以可以用来加/解密,同时也可以用来做签名/验证。
安全性的模糊(疑为等价于因子分解的难度)
随机素数产生并不容易
运算量大,速度受局限,尤其在嵌入式设备中
对称短发和公钥算法的比较
安全性
速度
典型相差1000倍
密钥管理
? 对称算法需要额外安全信道
? 公钥:证书中心CA
混合密码体制
? 公钥算法用于签名和认证
? 用公钥算法传输会话密钥
? 用会话密钥/ 对称算法加密批量(bulk) 数据
?
公钥算法太慢
公钥的分配方法:
临时索要公钥/自由的扩散/PGP的公钥环
2. 公开的目录服务(在线方式)
3. 公钥授权(在线中心方式)
4. 通过证书中心CA(离线中心方式
公钥授权:在线中心
有在线中心帮助的公钥交换
A 以带时间戳的信息向中心请求B 的当前公钥
? 中心用私钥PRauth签署的消息回复A,包括:
原始请求和原始时间戳,B 的公钥PUb,
A 用B 的公钥加密:将自己的身份IDa 和会话标识号N1包含
在加密的消息里
B 也如法取得A 的公钥
B 用A 的公钥加密:N1 和N2
A 用B 的公钥加密N2 ,以最后确认会话
在线中心容易成为单点故障和性能瓶颈
Certificate Authentication
CA是受信任的权威机构,有一对公钥私钥。
每个用户自己产生一对公钥和私钥,并把公钥提交给CA申请证书。 CA以某种可靠的方式核对申请人的身份及其公钥,并用自己的私钥
“签发”证书。
证书主要内容:用户公钥,持有人和签发人的信息,用途,有效期间,
签名等。
证书在需要通信时临时交换,并用CA的公钥验证。
有了经CA签名保证的用户公钥,则可进行下一步的身份验证和交换
会话密钥等。
Diffie-Hellman密钥
目的:使两用户能安全的交换密码,以便在后续的通信中用改密码对消息加密
算法的有效性是建立在计算离散对数是很困难这件事的基础上 步骤
随机
交换y
算k
选取大素数q 和它的一个生成元g ,这些参数公开
A选择随机数Xa,B选择随机数Xb
A 计算Ya =g^Xa mod q ,B 计算Yb =g^Xb mod q
交换Ya ,Yb
A 计算K =Yb^Xa mod q ,B 计算K' =Ya^Xb mod q
事实上,K =K'
举例 q=97,g=5
A选Xa=36,B选Xb=58,则 Ya=5^36%97=50,Yb=5^58%97=44 交换50,44 A算K=44^36%97=75,B算K’=50^58%97=75 分析(别人怎么计算K?)
别人看到了Ya和Yb,但需要计算Xa或Xb,即要算离散对数 Ya=g^Xa mod q,或Yb=g^Xb mod q
.b ElGamal加密
准备
1素数p,Zp*中本原元g,公开参数
2私钥a,公钥b=ga mod p
加密
1对明文1<=m<=p-1,选随机数k
2密文(c1, c2)
c1=gk mod p, c2=mbk mod p
解密
1m=c2 (c1a)-1=mbk ((gk)a)-1
=m(ga)k (g-ka) =m mod p
C2和c1a 先求模再相处
ElGamal加密基于离散对数难题
缺点
需要随机数
密文长度加倍
背景循环群: 从Zp* 到EC 点加群
认证和加密不同。
消息认证是验证消息完整性的一种机制,能发现对消息的篡改或假
冒。
使用对称算法可产生消息鉴别码MAC
使用公钥算法可对消息进行签名
身份认证是鉴别通信对方的身份是否属实。
Hash函数是一个单向的消息摘要函数,在产生MAC、签名中有重要
用途。
认证函数:
对称加密
2. 公钥加密 3. 消息认证码(MAC) 4. 散列函数(Hash)
认证需要给密文添加结构特征
公钥加密认证方法:
A可以先使用自己的私钥加密消息(这是数字签名),再用B的公钥加
密,这样可以提供认证。
亦需要给明文消息添加结构特征
消息认证码mac
利用密钥来生成一个固定长度的短数据块,并将该数据附在消息之后 (假定双方共享密钥)
发送方利用密钥从明文产生一个固定长度的短数据块(MAC),和消息
一起传输。
接收方考察是否一致,以判断MAC和/或消息是否被改动过。
MAC:CBC模式最后一个分组
MAC函数
计算明文M在密钥K的作用下的特征码
M || MAC(M, K)
? 验证时,判断明文M 和MAC 码是否一致
HMACK:带key的HASH函数
利用HASH函数从报文和密钥产生MAC码
先计算特征,再把特征加密的思想,或
直接把散列函数和Key结合得MAC
HMAC = HashKey(Message) 一种实现,比如
HMAC = Hash(Key || Message)
HMACK的含义和用途
HASH函数定义:
对于任意给定的报文,产生固定长度的摘要信息是消息认证的一种变
形,输入是大小可变的消息M,输出固定大小的散列码H(M),与MAC不同,HACH并不使用密钥,它仅是输入消息的函数,是所有消息位的函数。
Hash函数强调单向性和抗冲突特性
单向性质:给定h ,要找x 使H(x) =h 是困难的
? 弱抗碰撞特性:
? 对于给定的y ,找x ,使H(x) =H(y) 是困难的
? 强抗碰撞特性(生日攻击):
?* 如果碰撞则意味着数字签名容易被伪造/欺骗
Hash函数的用途总结下先
Hash函数的用途总结下先
给明文增加结构特征以保护密文
产生MAC码(HMAC) 找x 和y ,使H(x) =H(y) 是困难的
数字签名前HASH代表参与
从口令衍生密钥
挑战-应答认证协议中
也用来产生随机数
PKCS5用口令到K
数字签名:
是一种认证机制,使得消息的产生者可以添加一个起签名作用的码
字。通过计算消息的散列值并用产生者的私钥加密散列值来生成签名。签名保证了消息的来源个完整性。
两种模式:
1私钥签名:
输入 报文明文、私钥 m^d = s
输出 报文明文、报文密文(签名) (m, s)
验证
不可伪造
不可改变
2散列签名
讨论 s^e =? M
私钥(其实是公钥)的管理: 和身份绑定、更新等 签名过程太慢: 启用散列函数
改进
? 对报文的散列值用私钥加密得到和n 等宽的签名值 使用证书的鉴别过程:例如ssl
A要和B通信,A要弄清楚B是否是他所期望的真的B
A->B:A向B请求证书
A<-B:B的证书
A :A检查B的证书是否是A所信任的中心签发的 A->B:A给B一个随机报文,让B签个名来看看
B :B签名,在签名之前可施加自己的影响成分 A<-B:B的签名
A :检验是否通过了B的证书里的公钥的验证