协议
为了完成一项任务设计的一个步骤序列.
协议角色
仲裁协议
在可信任方担任仲裁者Trent的角色, 为通信双方Alice和Bob做担保.
裁决协议
作为仲裁协议的子协议, 在出现争端时给执行协议的参与者进行裁决.
自动执行协议
无须可信第三方就能保证公平的协议, 通常保证参与者的欺骗必被发现.
对协议攻击
攻击面是三个
- 密码算法
- 密码技术
- 协议本身
被动攻击: 窃听协议的部分或全部
主动攻击: 修改协议或者通信的信息
被动骗子(passive cheater): 遵守协议的参与者但是企图获取协议之外的信息
主动骗子(active cheater): 企图破坏协议达成欺骗目的的参与者
混合密码系统
用公开密钥密码保护和分发对称密码的密钥, 用对称密码保护通信信息.
通常用公钥密码对文件进行签名, 为了优化也可以引入单向散列函数进行先将长文件进行单向散列计算, 把得到的散列值进行公钥密码加密. 验证时也是验证散列值相同.
多重签名
两种方式
- Alice, Bob分别对同一文件签名, 验证方只需验证其中一者的签名
- Alice签名之后Bob再签名, 在验证Alice的签名之前只能先验证Bob的签名.
带加密的数字签名
基本思想是签名之后用对方的公钥进行加密. 也只有对方能够解密签名消息和验证.
重新发送攻击
对于加密和签名采用同一算法的协议存在的一种攻击方式. Mallory截获Alice发送给Bob的信息, 之后原封不动发送给Bob, 如果协议是自动化进行的, Bob用私钥解密然后用Mallory的公钥加密得到一串乱码, 但并不做甄别, 毫无感情地继续用私钥解密这串乱码再用Mallory的公钥加密之后把收据发送给Mallory. Mallory接下来只需要M私钥解密→B公钥加密→M私钥解密→A公钥加密就能恢复出Alice发送给Bob的明文.
防范重新发送攻击
- 用散列函数进行签名
- 每次操作采用不同密钥
- 每次操作采用不同算法
- 引入时间标记
反思
现在开密码学的坑, 感觉有点反复横跳的意思, 但是做毕业设计需要密码学的知识, 另外把现代密码学都跟进上应该不算啥坏事, 研究生课还有现代密码学的, 就当提前学吧.
今天开始一边学密码做数据安全, 一边学二进制安全, 肝帝模式, 肝就肝叭, 想起之前打游戏一天能肝15h, 搞安全又何尝不是一种游戏呢? 希望能不落下学习进度就行.