Passwd

最早加密办法:

  1. 找一个 固定长度 和 固定粗细的木棍
  2. 用布条上下绕圈包裹,类似发廊门口旋转的广告灯.
  3. 木棍外的布条上写字.
  4. 去掉木棍 , 平铺布条时,你就不知道写的内容了.

电脑的出现就是为了破解密码.

RSA 算法

对明文文件或者数据, 按照某种算法进行处理, 使其成为一段不可读的代码.

互联网把全世界连在一起, 为了能安全的运用互联网,只能选择数据加密和基于加密技术的 数字签名.

公开密钥 (非对称密钥):

     使用两个不同的密钥: 加密密钥 和 解密密钥

    加密密钥:             公开  也叫 公开密钥 简称 公钥

    解密密钥:             保密  也叫私有密钥 简称  私钥

                  某用户 用公开的加密密钥 加密的信息,只有用该用户的解密密钥 才能解密.

数字签名: (公钥数字签名 / 电子签章 )

是一种类似写在纸上的物理签名. 使用了 公钥加密领域的技术.

每个人都有一对钥匙, 一个只有本人知道(密钥),一个公开(公钥) 签名的时候用 密钥 ,验证签名的时候用 公钥.

公钥必须向 身分认证机构 注册,以防别人假冒你.

注册后 身份机构 给你发一数字证书. 对文件签名后 你把数字证书和加签名的文件 发给接受者. 接受者 向身份机构 求证 是否真的是用你的密钥加密的文件.

一套数字签名 通常定义 两种互补的运算 : (私钥)用于签名 (公钥)用于验证. 公钥和私钥是互补的, 也就是说 一个公钥只能配一个私钥.

签名: 文档 用签名者的私钥进行加密. 变成数字签名的数据. 验证: 数据签名的文档 用签名者的公钥进行解密 ,能解出来 就说明这个签字是那个签名者的.

数字签名 就是只有信息的发送者才能产生的 别人无法伪造的一段 数字串, 这段数字串 同时 也是对信息的发送者 信息真实性的 一个有效证明. 如果企业的数字文件被盗 坏人就能捆绑木马到官方的exe 程序, 后患无穷.

邮件的 数字签名是有 法律效力的! 数字签名 不是邮件最下面落款 名字.

是非对称密钥加密技术 与 数字摘要技术的应用

数字签名的文件的完整性 是很容易验证的 而且数字签名 具有不可抵赖性.

DSS: 数字签名标准 digital signature standard
美国政府 用来 定义 数字签名算法的 一种标准

XML数字签名: 对XML格式的数据 进行数字签名. 以保证 报文的完整性,不可否认性,以及提供身分认证信息.

NAS 美国国家安全局

DSA 数字签名算法 : 用数字通信形式 达到签名的功能,目的是证明 通信双方的身份,来保证通信的安全.

数据项: 是数据的基本单位, 一个数据元素 可以有多个数据项组成,数据项是数据 不可分割的最小单位.

Hash 函数 Hash 一般翻译做散列,也有直音译”哈希” 就是把任意长度的输入,通过 散列 算法 变成固定长度的输出,该输出就是散列值. 不同的输入可能会散列成相同的输出,但是 不可能从散列值来唯一的确定输入值.

好的hash算法 可以使得 两个不一样的文件 但是有相同的哈希值的 输入 不能通过算法实现.

Hash 算法: md5 和sha1 是目前最广泛的算法 都是以md4 为基础设计的. 将任意长度的二进制值 映射位 较短的 固定长度的二进制值. 短的值 就是 哈希值.

哈希值 是 一段数据唯一 且极其紧凑的数值表现形式. 要找到散列为同一值的两个不同的输入,原理上是不可能的,所以hash值 可以检测数据的完整性. 简单说 就是一种单向密码体制,从明文到密文的不可逆映射,只有加密过程,没有解密. 任意长度 经过变化 得到固定长度的输出.

也可以说 hash 就是 找到一种 数据内容和数据存放地址之间的 映射关系.

算法用途 文件完整性校验

数字签名 由于 用非对称算法 运算速度慢,所以也可以用hash值 (也叫 数字摘要) 进行数字签名.

文件可以被别人窃听 但是不能被更改.

Md4 : message dagest 4

适用 32位字长的处理器 用高速软件实现. 基于32位操作系统来实现的.

Md5 :

对md4的改进 ,对输入以512位分组, 其输出是4个32位字的级联. 比md4复杂,速度要慢,在抗分析 和抗差分表现好.

Sha1 :

散列值: hash function. 将一个很大的 文件 映射成很小的 函数?

重放攻击: repaly attacks

攻击者 发送一个 目的主机以及接受过的包,来达到欺骗系统的目的. 主要用于 身份认证过程,破坏认证的正确性.

为了抵御这种攻击,现在的身分认证 一般采用 挑战应答(challenge /response)方式 用户 申请登录 发起 挑战值 并用md5 计算出相应的应答值 发送给服务器. 服务器也用md5计算出应答值 应答值一样的话就建立链接.

监听http 截获的敏感数据 大多存放在cookie 中, 有时候可以 轻松的复杂别人的cookie 直接获得 相应的权限.

加密 可以防止别人破解 但是防止不了 repaly attacks 黑客只要 重复 发送你的加密文件.就能破坏身份认证等. 这种攻击 可以改变消息去向, 发送给指定的接收人,

防御方案:

时间戳: 时戳;代表当前时刻的数字. 基本思想; 服务器 接受一个消息 :当且仅当 这个消息 包含一个对服务器而言 足够接近当前时刻的时戳. 原理- replay attacks 需要时间, 这个时间会有点久. 要求; 通信各方的 计算机 时钟 要保持同步. 处理方式:设置大小适当的时间间隔(时间窗) 越大越能包容网络传输的延时, 越小越防重放攻击.

2,序号 通信双方 通过消息中的序列号 来保持消息的 新鲜性. 要求;双方 事先协商一个初始的序列号之后的通信 协商递增方法.

3,提问与应答 客户给服务器 发送一个随机数x, 要求服务器应答消息中 包含f(x) f()是双方事先约好的一个简单函数. 客户通过 服务器回的 f(x)值 判定 消息是不是重放攻击.

会话劫持?

劫持 分两种: 被动劫持:在后台监听双方会话的数据流,从中获得敏感数据 主动劫持:将会话当中的某台主机 踢 下线,由 攻击者取代 并 接管会话.

Tcp 会话劫持: 如果要劫持一些 不可靠的协议,那么将轻而易举.因为它们没有提供认证措施. 而 tcp 被誉为可靠协议. 这个是重点讨论的.

根据TCP/IP 的规定:使用tcp协议通讯 需要提供 两段序列号. 协议 使用者两段序列号 来保证 通信安全. TCP/IP 根据 时间或者线性的产生这些 序列号. 通讯过程中 双方的序列号是相互依赖的,这也是为什么 tcp协议是可靠的传输协议,
所以 劫持的关键是这些序列号, 攻击者可以采取 嗅探技术获得序列号.

tcp

每一个数据包中 都有两段序列号. 分别是 SEQ 当前数据包 第一个字节的序号. ACK 期望收到对方数据包中的第一个字节的序号.

假如 双方要进行一次连接.

服务器: server S_SEQ:将要发送的下一个字节的序号 S_ACK:将要接收的下一个字节的序号 S_WIND:接收窗口

客户端:client C_SEQ:将要发送的下一个字节的序号 C_ACK:将要接收的下一个字节的序号 C_WIND:接收窗口

它们之间的关系 必须符合 下面的逻辑关系,否则 数据包会被丢弃 并返回一个ack包(包含 期望的 序列号)

C_ACK <= C_SEQ <= C_ACK + C_WIND S_ACK <= S_SEQ <= S_ACK + S_WIND

很大的缺点就是: 当收到一个 不期望的数据包后, 返回一个想要的ack包 然而这个包也不是另一端需要的 就恶性循环 产生 ack 风暴 storm

Tcp 会话 劫持过程:

Http 会话劫持 web 应用程序 通过2种方式 来判断和跟踪不同的用户 :

cookie : 小甜饼. 当你浏览网站时候,cookie 会帮你把 你在网站上打的字,或者 一些选择(网页背景颜色? / 网页缩放?) .都记录下来. 下次访问该站,服务器会先看看cookie 里面的信息. 网站为了辨别用户身份,而储存在本地计算机上经过加密的数据,

由服务器生产,发送给User-Agent (一般是浏览器) 浏览器会将cookie的 key/value 保存到 某个文件内, 下次 请求 同一网站 就发送这个cookie 给服务器.服务器会读取cookie 里面的信息, 判断 用户是不是要重新登录等等.

过期时间很长. 针对cookie 的攻击 一般是 盗取用户cookie 然后伪造cookie 冒充该用户.

session(会话型cookie) 存在与服务器,随着 会话的注销 就失效 也就是很快过期, 所以很难利用, 相比cookie 认证安全点.

最典型功能:

判定注册用户是否以及登录网站,(下次免登录)

更重要的是,网站可以利用 cookies 跟踪用户访问网站的习惯. 什么时间访问 访问了哪些页面, 每个网页的停留时间, 一方面 可以提供 个性化服务,另一方面 可以作为了解用户行为的工具, 对网站经营有一定的参考价值. 把你感兴趣的东西 调到首页.

还要购物车,同一家网站 不同的页面,  这些选择的商品都会写入cookies . 付款时用到.

生存周期, cookie在生成时候 就被指定一个 expire 值 这个就是生存周期, 超出这个周期 cookie就会被清楚, 如果设置成0 那么 关闭浏览器就清除cookie

每个浏览器都有各自的独立空间 存放cookie 因为cookie 同样包含计算机和浏览器的信息.

其实cookie 很危及用户隐私. 用户访问网站, 这些网站包含 了一种叫做网页臭虫的图片,该图片透明,且只有一个像素大小(以便隐藏), 它们的作用是将所有访问过此页面的计算机写入cookie。而后,电子商务网站将读取这些cookie信息,并寻找写入这些cookie的网站, 随即发送包含了针对这个网站的相关产品广告的垃圾邮件给这些高级人员。

因为广告有针对性 ,一旦用户点击 有人就能从电商那得到报酬, 继续维系那些网站的生存.

脚本攻击: Cookie 没病毒那么危险,但也包含 敏感信息: 用户名 计算机名字 浏览器版本.

一般的脚本攻击 都素利用网站漏洞 在网站页面植入 脚本代码/或者 引用第三方脚本代码, 受到攻击时候 被植入的脚本会 读取当前站点的所有cookie内容,并上传给黑客.

防止办法: 设置cookie 不能被脚本读取. 对cookie 进行加密 ,在加密前加时间戳 保证每次加密后的密文都不一样 防止重放攻击.

Cookie 是小量信息,网络服务器产生 存储在网络浏览器上. 利用了网页代码中的 http 头信息传递的,每次网页请求 都可以伴随cookie

多数网页编程语言都支持cookie javascript vbscript delphi asp sql php c# 等等 大体上 先创建一个cookie对象 object 利用函数对cookie 赋值 读取 写入 等,

cookie欺骗, 通常cookie是加密的 被人窃取人家也看不懂,但是人家只要把cookie 提交给服务器 就能冒充你了.

要收集别人的cookie 很任意的,只要 编写一段代码 放你的网站里面,别人点你的网站 别人的cookie 就能被你收集了.

只能 尽量在论坛不用重要的密码, 不使用自动保存密码? 尽量不登录不了解底细的网站.

• Flash的代码隐患 Flash中有一个getURL()函数,Flash可以利用这个函数自动打开指定的网页。因此它可能把你引向一个包含恶意代码的网站。打个比方,当你在自己电脑上欣赏精美的Flash动画时,动画帧里的代码可能已经悄悄地连上网,并打开了一个极小的包含有特殊代码的页面。这个页面可以收集你的Cookie、也可以做一些其他的事情,比如在你的机器上种植木马甚至格式化你的硬盘等等。对于Flash的这种行为,网站是无法禁止的,因为这是Flash文件的内部行为。我们所能做到的,如果是在本地浏览尽量打开防火墙,如果防火墙提示的向外发送的数据包并不为你知悉,最好禁止。如果是在Internet上欣赏,最好找一些知名的大网站。

此外,我们使用了Cookie的一些属性来限定该Cookie的使用。例如Domain属性能够在浏览器端对Cookie发送进行限定,具体到上面的例子,该Cookie只能传送到指定的服务器上,而决不会跑到其他的Web站点上去。Expires属性则指定了该Cookie保存的时间期限,例如上面的Cookie在浏览器上只保存到1999年3月1日1秒。当然,如果浏览器上Cookie 太多,超过了系统所允许的范围,浏览器将自动对它进行删除。至于属性Path,用来指定Cookie将被发送到服务器的哪一个目录路径下。 说明:浏览器创建了一个Cookie后,对于每一个针对该网站的请求,都会在Header中带着这个Cookie;不过,对于其他网站的请求Cookie是绝对不会跟着发送的。而且浏览器会这样一直发送,直到Cookie过期为止。

带失效时间的: SetCookie(“WithExpire”,”Expire in 1 hour”,time()+3600);//3600秒=1小时

创建 Cookie setcookie() 函数用于设置 cookie。[9]  注释:setcookie() 函数必须位于 <html> 标签之前。 语法: setcookie(name, value, expire, path, domain); 在下面的例子中,我们将创建名为 “user” 的 cookie,并为它赋值 “Alex Porter”。我们也规定了此 cookie 在一小时后过期: 1 <?php 2 setcookie(“user”,”AlexPorter”,time()+3600); 3 ?> 4   5 <html> 6 ….. 注释:在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码。(为防止 URL 编码,请使用 setrawcookie() 取而代之。) 取回 Cookie 值 PHP 的 $_COOKIE 变量用于取回 cookie 的值。[9]  在下面的实例中,我们取回了名为 “user” 的 cookie 的值,并把它显示在了页面上: 1 <?php 2 //Printacookie 3 echo$_COOKIE[“user”]; 4   5 //Awaytoviewallcookies 6 print_r($_COOKIE); 7 ?> 在下面的实例中,我们使用 isset() 函数来确认是否已设置了 cookie: 1 <html> 2 <body> 3   4 <?php 5 if(isset($_COOKIE[“user”])) 6 echo”Welcome”.$_COOKIE[“user”].”!
”; 7 else 8 echo”Welcomeguest!
”; 9 ?> 10   11 </body> 12 </html> 删除 Cookie 当删除 cookie 时,您应当使过期日期变更为过去的时间点。[9]  删除的实例: 1 <?php 2 //settheexpirationdatetoonehourago 3 setcookie(“user”,”“,time()-3600); 4 ?> 12JavaScript Cookies编辑 创建和存储 cookie[10]  在这个例子中我们要创建一个存储访问者名字的 cookie。当访问者首次访问网站时,他们会被要求填写姓名。名字会存储于 cookie 中。当访问者再次访问网站时,他们就会收到欢迎词。 首先,我们会创建一个可在 cookie 变量中存储访问者姓名的函数: 1 functionsetCookie(c_name,value,expiredays) 2   3 { 4   5 varexdate=newDate() 6   7 exdate.setDate(exdate.getDate()+expiredays) 8   9 document.cookie=c_name+”=”+escape(value)+ 10   11 ((expiredays==null)?””:”;expires=”+exdate.toGMTString()) 12   13 } 上面这个函数中的参数存有 cookie 的名称、值以及过期天数。 在上面的函数中,我们首先将天数转换为有效的日期,然后,我们将 cookie 名称、值及其过期日期存入 document.cookie 对象。 之后,我们要创建另一个函数来检查是否已设置 cookie: 1 functiongetCookie(c_name) 2   3 { 4   5 if(document.cookie.length>0) 6   7 { 8   9 c_start=document.cookie.indexOf(c_name+”=”) 10   11 if(c_start!=-1) 12   13 { 14   15   16 c_start=c_start+c_name.length+1 17   18 c_end=document.cookie.indexOf(“;”,c_start) 19   20 if(c_end==-1) 21 c_end=document.cookie.length 22   23   24 returnunescape(document.cookie.substring(c_start,c_end)) 25   26 } 27   28 } 29   30 return”” 31   32 } 上面的函数首先会检查 document.cookie 对象中是否存有 cookie。假如 document.cookie 对象存有某些 cookie,那么会继续检查我们指定的 cookie 是否已储存。如果找到了我们要的 cookie,就返回值,否则返回空字符串。 最后,我们要创建一个函数,这个函数的作用是:如果 cookie 已设置,则显示欢迎词,否则显示提示框来要求用户输入名字。 1 functioncheckCookie() 2   3 { 4   5 username=getCookie(‘username’) 6   7 if(username!=null&&username!=””) 8   9 {alert(‘Welcomeagain’+username+’!’)} 10   11 else 12   13 { 14   15 username=prompt(‘Pleaseenteryourname:’,””) 16   17 if(username!=null&&username!=””) 18   19 { 20   21 setCookie(‘username’,username,365) 22   23 } 24   25 } 26   27 } 这是所有的代码: 1 <html> 2   3 <head> 4   5 <scripttype=”text/javascript”>6  7 functiongetCookie(c_name)8  9 {10  11 if(document.cookie.length>0)12  13 {14  15 c_start=document.cookie.indexOf(c_name+”=”)16  17 if(c_start!=-1)18  19 {20  21  22 c_start=c_start+c_name.length+123  24 c_end=document.cookie.indexOf(“;”,c_start)25  26 if(c_end==-1)27 c_end=document.cookie.length28  29  30 returnunescape(document.cookie.substring(c_start,c_end))31  32 }33  34 }35  36 return”“37  38 }39  40  41 functionsetCookie(c_name,value,expiredays)42  43 {44  45 varexdate=newDate()46  47 exdate.setDate(exdate.getDate()+expiredays)48  49 document.cookie=c_name+”=”+escape(value)+50  51 ((expiredays==null)?””:”;expires=”+exdate.toGMTString())52  53 }54  55  56 functioncheckCookie()57  58 {59  60 username=getCookie(‘username’)61  62 if(username!=null&&username!=”“)63  64 {alert(‘Welcomeagain’+username+’!’)}65  66 else67  68 {69  70 username=prompt(‘Pleaseenteryourname:’,”“)71  72 if(username!=null&&username!=”“)73  74 {75  76 setCookie(‘username’,username,365)77  78 }79  80 }81  82 }83  84 </script> 85   86 </head> 87   88   89 <bodyonLoad=”checkCookie()”> 90   91 </body> 92   93 </html> 13在jsp中编辑 jsp中使用cookie完成状态管理: cookie也算http消息报头的一部分,它的作用有以下方面: 一 记录访客的某些信息。例如可以利用cookie记录用户光临的网页次数,或者访客曾经输入过的信息。某些网站可以自动记录用户上次登录的用户名,用的就是cookie。 二 页面之间传递变量。浏览器并不会保存当前页面上任何变量的信息,当页面被关闭时,页面上的所有变量信息将随之消失。 使用举例 在jsp中创建简单的cookie: String cookiename=”visitTimes”; Cookie cookie=new Cookie(cookiename,”1”);

  1. setMaxAge(10*60);//设置cookie存活期
  2. addCookie(cookie);//将cookie写入客户端 在jsp中处理cookie数据的常用方法: getDomain();返回cookie的域名. getMaxAge();返回cookie的存活时间 getName();返回cookie的名字 getPath();返回cookie适用的路径 getSecure();如果浏览器通过安全协议发送Cookie将返回true值,如果浏览器使用标准协议刚返回false值 getValue();返回cookie的值 getVersion();返回cookie所遵从的协议版本setComment(String purpose);设置cookie的注释 setPath(String url);设置Cookie的适用路径 setSecure(Boolean flag);设置浏览器是否仅仅使用安全协议来发送cookie,例如使用Https或ssl setValue(String newvalue);cookie创建后设置一个新的值 setVersion(int v);设置cookie所遵从的协议版本.

自1993年Cookie诞生以来,其就拥有专属性原则,即A网站存放在Cookie中的用户信息,B网站是没有权限直接获取的。但是,一些第三方广告联盟的代码使用范围很广。这就造成用户在A网站搜索了一个关键字,用户继续访问B网站,由于B网站也使用了同一家的第三方广告代码,这个代码可以从Cookie中获取用户在A网站的搜索行为,进而展示更精准的推广广告。比如搜索“糖尿病”等关键词,再访问其联盟网站,页面会立刻出现糖尿病治疗广告。如果并未事先告之,经用户同意,此做法有对隐私构成侵犯的嫌疑。这个还处在灰色地带。

有一定联系性规律性密码

例子:

有人曾破如此一个WPA-PSK 密码IX1V7051242. 如果你不了解这个密码的背景你肯能会觉得很神奇,这么强的密码也能破。 这样的密码是在西班牙的tele2 这样的AP 上有, 而且这样AP_ESSID 里都有tele2 字段。

这样的密码后面的8 位是相同的有真正的密码只有四位。四位密码其密码空间很小很容易被字典攻击出来。这个也是AP的默认密码。所以这个密码被破解是因为AP本身产生的随机密码就是个弱密码。是AP的厂家自己降低了安全性的做法。例如有一些餐厅.酒店.事业单位.等等.SSID总会改成名字的拼音.密码当然是跟ssid相关的.最常见的就是这个单位的电话号码!

密码分析 - 2

CSS 样式表 很多html标签能改变文本外观. 这些标签可以分为两类: 基于内容的样式 content-based style 物理样式 physical style CSS 级联样式表 网页上有三种 使用方法 1外部样式表: 里面添加 一个样式 被很多网页 使用,外部样式表是理想的选择. 这样可以通过更改一个css文件 来 改变整个网站的外观 2内部样式表: 里面添加 当 单个文件需要特别的样式时,可以用内部样式表. 可以在 head 里面 通过 3内联样式表: 里面 具体标签后面添加参数 个别元素需要用导特殊的样式时, 可以直接在html标签后面跟css参数来修改文本格式 This is a paragraph 怎么在文本里面应用样式呢 代码里面 输入 里面的内容都是p的css定义的格式 输入 里面的内容都是h2的css定义的格式 css 选择器 1 标记选择器 先定义样式标记 再段落前面加标记 2类别选择器 新建css的时候 .xujian.css 名称前面要有个.的 必须 再html → class 下面选择新建的类 3id 选择器 新建id.css #xujian.css html下面 选择id id只能用一次! css 美化: 所有边框的设置 最好用css 而不是一个个单独去修改 css以后修改很方便 不然的话很麻烦 登陆框 个性化 输入那里只留一条线 而不是一个框 也是css 里面 边框控制 实线 上下左右只留下的一根就好了 css 嵌套 一句话之内 如果有两个字特别的字体 1 可以代码里面直接加代码 比如 这里面的字就变斜体了 2 需要嵌套 嵌套id或者类都可以 head 下面 定义 #abc em 颜色红色 body下面 吾问无为谓哇哇哇哇哇哇哇哇 结果 上面的一行 哇变红色 下面的一行不变色 如果上面 head下面只定义 em 没有定义#abc em 那么 下面两行的哇 都会变红色. css 继承 两个层 大的和小的 大层的css属性会自动给小的. css 应用 内嵌式: head里面定义 推荐2 行内式: html 单行定义 推荐3 链接式: 链接定义(适应多个网站) 推荐1 单独保存.css 以后还能调用 优先级 行内>内嵌>链接 总体用链接布局 一般用内嵌 个别用行内 网页背景 推荐用css