0%

Crypto学习总结

前言:

​ 上学期临近期末开始,我开了一个密码学的坑,(其实暑假就说要学密码学,但一直没咋动就是=-=一定是我太忙了对!)看的是Dan Boneh的密码学网课。差不多在开学一周将这个课程看完了,并且做了Course上的CodeTest和Exam。收益还是蛮多的,比如hgame出了题目233333。现在还差一个finalexam没做=-=由于前段时间天天摸鱼,没啥时间去搞了。今天摸鱼结束,寻思着要不做个整理,于是就用了四个小时,草草刷了一遍全部的课程,并将一些概念整理了一遍。这里不会涉及太细致的东西,只是类似于课堂笔记而已233

内容:

  • 完备安全定义: 对一个特定的密文,它由明文空间中任意一个明文加密而来的概率相等。但是这很难实现,若要使这个条件成立,即key的长度至少要和密文长度相等。引申出流密码的概念。
  • PRG: pseudorandom generator. PRG({0, 1}^s) -> {0, 1}^n
  • PRG随机性的定义: 知道前n-1位的值,知道下一位值的概率为一个可忽略的值。
  • 流密码:PRG(key) xor Cipher
  • PRP(pseudorandom permutation)(K,X) -> X, PRF(pseudorandom function)(K,X) -> Y
  • 常见的PRP: AES,DES
  • 简述AES流程:将key通过key_expansion出11个key,前十轮都做一次ByteSub, ShiftRow 以及MixColumn, 再与key做xor.最后一轮没有MixColunmn, 而是直接与key做xor
  • 语义安全:定义一个挑战,传入两个不同的message,服务端传回E(message),如果是语义安全的,那么对于挑战者来说,adv应为0。
  • ECB模式:对于每一组都做一个相同的PRP,ECB模式不符合语义安全,且adv为1
  • CPA安全:即在语义安全的定义上多了两点:
    • message可以相同
    • 查询次数可以为多次
  • CBC模式:给定IV, 每一组的加密结果作为下一组的IV,其符合CPA安全(IV不可预测)
  • CTR模式:给定IV,做一个PRF(key, IV),结果值与message做xor
  • MAC:由两个func定义而来。S(k, m) -> t和V(k, m, t) -> True/False
  • MAC安全:定义一个挑战,传入n个不同的message,服务端传回MAC(message),最后,挑战者要传入一对正确的(M,t)。要求为最后的M与之前任意的message不同。
  • CCA安全:在CPA安全的定义上,多了两点:
    • 服务端不仅会加密明文,还会解密你给定的密文。
    • 给定的密文与之前加密明文的返回应不相同。
  • Merkle Puzzles:不凭借第三方,通过对称密码学完成的交换密钥体制。简单来说,就是利用一个PRP(puzzle # xi||Ki,ki),ki在一个可爆破的范围内,然后Alice发送i个puzzle给Bob,Bob从puzzle中任意选一个,通过爆破k获得xi与Ki,再将xi发回Alice。随后,Alice就可以根据xi找到Ki(因为xi与Ki都是Alice生成的),Ki就成了双方的密钥。对于攻击者(中间人)来说,破解时间为O(n^2)。但是这种方法太不实用了。
  • Diffle-Hellman:(g^a)^b == (g^b)^a mod p。安全取决为:已知g ^ a 和 g ^ b,能否算出(g ^ a) ^ b(best solotion:O^1/3)
  • 数论知识跳过
  • 陷门函数:(G, F, F^-1)
    • G:生成一对(PK, SK)
    • F: (m, PK) -> S
    • F^-1:(S, SK) -> m

写在最后

​ 算是初步入门了一下密码学吧=-=但是我感觉现在的密码学水平只是相当于一个开发人员需要掌握的密码学知识,至于说安全人员需要掌握的密码学知识可比我现在的水平高多了。菜鸡还需要不断努力。但密码学深入也太可怕了…有生之年估计深不进去。平常打打CTF(的送分密码学),偶尔心情愉悦看看数论(并不)应该就是我能做到的最高水平了233。但话说回来我还真只会一点点数论,啥时候面向CTF学一波数论?(开坑预警)

​ 想来一开始想学密码学,一是逆向中经常见到密码学相关,想着学完是不是就可以有很大的进步了,而且作为二进制手(是的我才不把自己定义成re手哼,因为我不会re嘻嘻嘻),密码学,PWN,re都应该有所涉及。二来是密码学要断层了都=-=hgame要是没人出题就太真实了,就跟着辉神的大旗走了。现在回头看,要是要对前者有较大帮助,密码学要更深入才有可能,不然用途不大。而且Dan Boneh的这个课程其实还是从蛮高层的思维去讲的,所以帮助并不大。但多学点东西总不坏。后者算是圆满完成任务了吧?反正学弟未来可期2333

​ 那我也要加油了!