目录
网络安全基本概念
拟人场景: Alice、Bob、Trudy
网络安全威胁
攻击者行为
攻击的一些方式和对策
映射
分组嗅探
IP欺骗
DOS拒绝服务
密码学基础
密码学(cryptography)术语
对称密钥加密
公开密钥加密
激活成功教程加密方法
传统加密方法
替代密码
换位(transpositions)密码
现代加密技术
流密码
分组密码
数据加密标准: DES
高级加密标准AES
公钥密码学、RSA加密
RSA的实际应用
身份认证(Authentication)
协议ap1.0
协议ap2.0
协议ap3.0
协议ap3.1
ap4.0
ap5.0
报文完整性
密码散列函数
散列函数算法
报文摘要(Message digests)
报文认证(验证报文的是否被篡改)
报文认证码MAC
数字签名
这一章节,讲攻击方式、加密方式、报文摘要可以学习,往后的数字签名就不用看了,越看越乱,看极客时间的https章节更清晰。
拒绝服务,让服务器没有足够的cpu或者带宽去工作
嗅探(Sniffers)一般是指使用嗅探器对数据流的数据截获与分组分析。嗅探(Sniffers)安装了嗅探器的计算机能够接收局域网中计算机发出的数据包,并对这些数据进行分析。以太网中是基于广播方式传送数据的,所有的物理信号都要经过主机节点。TCP/IP 协议栈中的应用协议大多数明文在网络上传输,明文数据可能会包含一些敏感信息(如账号、密码、银行卡号等)。使用嗅探工具后,计算机则能接收所有流经本地计算机的数据包,从而实现盗取敏感信息。由于嗅探器的隐蔽性好,只是被动接收数据,而不向外发送数据,所以在传输数据的过程中,难以觉察到有人监听。
以太网中是基于广播方式传送数据的,所有的物理信号都要经过主机节点。以太网交换机有自学习的过程,自学习中会泛洪,导致主机收到不属于自己的帧,所以嗅探有可能拿到其他主机的包
之前学过tcp三次握手,第一次握手服务端会分配资源,大量向服务器发送第一次握手让服务器耗尽资源,就是SYB攻击
构建僵尸网络控制一些主机,然后控制僵尸主机向目标主机攻击
有一种对策是SYN cookie,服务器在第一次握手不会建立资源,但返回的报文序号是 hash (源IP地址,目的IP地址, 源端口号,目的端口号,R)R是服务器端产生的数,如果第三次握手的序号正确、和之前给的报文序号一致才会分配资源。
密码学的最基本内容
很多加密算法是公共的,谁都知道,光靠算不不够,需要利用参数或规则加密
公钥是公开的,谁都可以知道,私钥是私密的,公钥加密、私钥解密。
统计分析:如一些字母组合是有出现概率的,通过概率去分析。
字母替代加密:知道字母的互相替代关系,就相当于激活成功教程了
凯撒密码:固定用该字母后面的第k个字母替代,替代关系是固定的,安全性很低。
单码替代:固定两个字母间的替代关系,a用m替代
多玛替代:两个a可能会被不同的字母替代。下面例子,第一个a用f替代,第二个a用t替代
先分成几组,每组有个置换规则,把iloveyou 分成两组,分别按照规则f置换
列置换:4列矩阵,规则(2,3,1,4)先输出2列、再3列..
解密,字符串长度除以4=3,新矩阵:3列,按照规则,把密文的第一串 3个字母ooo当做矩阵的第2行,第二串bvu当做矩阵的第三行...
用单次来代替秘钥,算法不变
z0z1z2可以是字节、或bit。用z对数据加密,加密方式是异或运算
分组秘钥加密的方式可能是前面的换位等等。
feistel加密很多轮
des加密的历史
把明文分组后,按置换表组合,比如第58组放到第一组
一轮DES加密过程:然后分成左右两部分,右边R作为下一轮的L,左边L经过函数f计算得到下一轮的R。继续循环。函数f会用到子秘钥,秘钥由最初的秘钥压缩变换而来,下一轮的秘钥跟本轮秘钥有关
des的安全隐患
对称密钥加密:
公开密钥加密:
不能根据公钥计算出私钥!
重要性质
rsa安全性
因为RSA计算量过大,实际应用中RSA和对称秘钥结合使用。在建立连接时,用RSA公钥加密,把对称秘钥传送给对方,下次发送数据时,双方使用对称秘钥进行加密解密,RSA只是为了传输对称秘钥。https就是这样
在网络中如何认证身份。
目标: Bob希望Alice“证明”她的身份
声明身份时,传递源IP地址,但有可能出现IP欺骗
声明时要求发送口令,即密码。
但有可能被嗅探破坏,Trudy 嗅探Alice 的分组(嗅探是Trudy拿到了Alice的分组,从中取出口令),,Trudy再根据口令和bob通信
为了防止嗅探,Alice把口令加密后再传输
但还有可能被 回放攻击。 回访就是Trudy记录了Alice分组,用这个分组发送给BOB,骗bob发送数据给Trudy
一次性随机数。假设双方有了共享秘钥,在收到口令后,Bob给Alice发个随机数R,Alice加密后发给Bob,但共享秘钥从哪来?说白了就是二次认证。
如果Alice发送了分组 提供了口令,trudy回放攻击记录了分组,但trudy不知道秘钥,所以无法加密。
Bob跟Alice索取公钥,然后互相发送数据。
越讲越糊涂,之前已经发送了一次口令,现在又要用秘钥证实对方身份。
这讲的有问题,首先公钥发送有可能被截取,其次Truedy完全可以把自己的公钥给Bob,反正trudy之前回放攻击了 口令分组。直接用https不就完了么,去ca认证证书就完了。
报文完整性不光是有没有被篡改,还包括身份认证、预防伪造、抵赖
以下是百度百科:
密码散列函数(Cryptographic hash function),又译为加密散列函数,是散列函数的一种。它被认为是一种单向函数,也就是说极其难以由散列函数输出的结果,回推输入的数据是什么。这样的单向函数被称为“现代密码学的驮马”。这种散列函数的输入数据,通常被称为消息(message),而它的输出结果,经常被称为消息摘要(message digest)或摘要(digest)。在信息安全中,有许多重要的应用,都使用了密码散列函数来实现,例如数字签名,消息认证码
java Object hashCode就是散列函数,散列值不同,原始值一定不同;散列值相同,原始值不一定相同
以下是课程:两个说法矛盾了,百科上散列值有可能相同,课程上说函数不允许散列值相同
用散列函数,这里就认为散列值不会相同
摘要保证防篡改,再加验证发送者身份。
把秘钥也用散列计算。前提是依赖于,双方已经共享了秘钥。
缺陷有可能出现伪造,伪造就是接受者不承认或者造假,看下一节
篡改可以用摘要搞定。
剩下的否认、伪造、冒充都是身份认证问题。
签名过程:
后面的内容还有CA,证书等。
从身份认证这块,看极客时间的更好,这里讲的太浅太乱。