密码知识点总结 第1篇
说明某一范围内的整数可通过它的一组剩余类数来重构c;这组剩余类数是对该整数用一组两两互素的整数取模得到的。 具体解法分下面三步: 1、找出三个数:从3和5的公倍数中找出被7除余1的最小数15c;从3和7的公倍数中找出被5除余1 的最小数21c;最后从5和7的公倍数中找出除3余1的最小数70。 2、用15乘以2(2为最终结果除以7的余数)c;用21乘以3(3为最终结果除以5的余数)c;同理c;用70乘以2(2为最终结果除以3的余数)c;然后把三个乘积相加15∗2+21∗3+70∗215∗2+21∗3+70∗2得到和233。 3、用233除以3、5、7的最小公倍数105c;得到余数23c;这个余数23就是符合条件的最小数。
密码知识点总结 第2篇
SSL(安全套接层)Secure Socket Layer:定义了一组多个连接共享的密码安全参数。用以保障在Internet上数据传输安全,利用数据加密(Encryption)技术,可确保数据在网络上的传输过程中不会被截取及窃听。它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。 SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。 提供服务 1)认证用户和服务器,确保数据发送到正确的客户机和服务器; 2)加密数据以防止数据中途被窃取; 3)维护数据的完整性,确保数据在传输过程中不被改变。(机密性:SSL协议使用密钥加密通信数据。可靠性:服务器和客户都会被认证,客户的认证是可选的。完整性:SSL协议会对传送的数据进行完整性检查。)
密码知识点总结 第3篇
在一个分布式环境中,用于服务器与用户之间的相互认证的协议。 解决方案:在一个分布式的Client/Server体系机构中,引入一个可信任的第三方(Kerberos服务器),让其提供认证服务;采用共享密钥加密技术。(与其他认证不同的是Kerberos仅仅依赖于对称加密体制而未使用公钥加密体制)
1、对称算法DES/AES/RC4/3DES特点、安全特性与适用场合; 特点: DES:对称算法,分组加密,分组大小为64bit,密钥大小为56bit,Feistel结构密钥短,加密简单,速度快 AES:对称算法,分组加密,分组大小128bit,典型密钥128、192、256bit,非Feistel结构 RC4:对称算法,流加密,密钥长度可变,但需要安全传递密钥 3DES:使用了DES原有模块,使用三个DES密钥,保护了投资,但是慢,64位分组也太小。根据密钥产生伪随机子密钥,明文与伪随机子密钥异或即加密,密文与伪随机子密钥异或即解密。 安全性: DES:密钥空间太小,不能经受蛮力攻击,在穷举攻击下较为脆弱;S盒设计很关键,DES的Sbox太小,是人工的 AES:抵抗已知的攻击方法,代码紧凑结构简单速度快,硬件实现简单,安全 RC4:需要安全传递密钥,安全性比较高,虽然没有严谨的论证,但看上去分组密码更加安全。 3DES:使用了三个DES密钥,密码空间大大增大,避免被蛮力破解,是高强度加密算法。比des更安全 应用场合: DES:适用于大量加密数据,对一般个人用户仍然安全,但关键场合已经不再适用。 AES: 适用场合广泛(数字签名 文档加密 商业领域)应用空间还不及DES,需要时间发展。 RC4:是一种广泛应用的流密码应用于SSL WEP协议 3DES:在DES基础上进行上层延伸,提高了安全性且保护了资本,应用于PGP、S/MIME、Molila
2、RSA原理与计算,给p、q、e、c求d和m; a)随意选择两个素数p和q,p不等于q, b)计算n=pq。 c)根据欧拉函数,求得r= (p-1)(q-1) 欧拉函数 d)选择一个小于 r 的整数 e,求得 e 关于模 r 的模反元素,命名为d。(模反元素存在,当且仅当e与r互质) e)(d,n)为公钥,(e,n)为私钥
3、公钥算法的用途,从加密(传递会话密钥)到签名; 公钥算法采用公钥和私钥两个密钥,如果利用公钥进行加密,而用私钥解密,这种场景属于数据保护。 而如果利用私钥加密,利用公钥解密,可以用作签名和验证。 公钥加密算法又称为非对称算法,原因是需要用一个密钥加密数据,而用另一个密钥来解密数据。对于每个通信会话,这两个密钥应该都是唯一的。不过,尽管非对称算法具有此项要求,但在实践中,非对称密钥通常却有较长的生存期。 再来看一个例子 双方(小红和小明)可以按照下列方式使用公钥加密: 首先,小红生成一个公钥/私钥对。如果小明想要给小红发送一条加密的消息,他将向她索要她的公钥。小红通过非安全网络将她的公钥发送给小明,小明接着使用该密钥加密消息。小明将加密的消息发送给小红,而小红使用她的私钥解密该消息。如果小明通过非安全信道(例如公共网络)接收小红的密钥,则小明可能会受到“中间人”攻击。因此,小明必须与小红验证他收到的公钥副本是否正确。 但是,在传输小红的公钥期间,未经授权的代理可能会截获该密钥。而且,同一代理可能截获来自小明的加密消息。但是,该代理无法用公钥解密该消息。该消息只能用小红的私钥解密,而该私钥并没有被传输。小红不使用她的私钥加密给小明的答复消息,原因是任何具有公钥的人都可以解密该消息。如果小红想要将消息发送回小明,她将向小明索要他的公钥并使用该公钥加密她的消息。然后,小明使用与他相关联的私钥来解密该消息。 在此方案中,小红和小明使用公钥(非对称)加密来传输私钥(对称),并对其会话的其余部分使用私钥加密。 RSA 允许同时进行加密和签名,但 DSA 只能用于签名,Diffie-Hellman 只能用于生成密钥。通常情况下,公钥算法比私钥算法具有更多的使用限制。 注意:证书从本质上说是一种特殊的公钥加密手段,特殊之处在于它可以存储在机器上,并且可以导出文件进行传递。
4、数字签名的用途 公钥算法还可用于构成数字签名。数字签名验证发送方的身份(如果您信任发送方的公钥)并帮助保护数据的完整性。 为了使用公钥加密对消息进行数字签名,小红首先将哈希算法应用于该消息以创建消息摘要。该消息摘要是数据的紧凑且唯一的表示形式。然后,小红用她的私钥加密该消息摘要以创建她的个人签名。在收到消息和签名时,小明使用小红的公钥解密签名以恢复消息摘要,并使用与小红所使用的相同的哈希算法来散列消息。如果小明计算的消息摘要与从小红那里收到的消息摘要完全一致,小明就可以确定该消息来自私钥的持有人,并且数据未被修改过。如果小明相信小红是私钥的持有人,则他将知道该消息来自小红。 由于发送方的公钥为大家所共知,并且它通常包含在数字签名格式中,因此任何人都可以验证签名。此方法不保守消息的机密;若要使消息保密,还必须对消息进行加密。
5、Hash函数的特性与用途; HASH主要用于信息安全领域中加密算法,它把一些不同长度的信息转化成杂乱的128位的编码里,叫做HASH值. 也可以说,hash就是找到一种数据内容和数据存放地址之间的映射关系。Hash算法在信息安全方面的应用主要体现在以下的3个方面: 1)文件校验 MD5 Hash算法的_数字指纹_特性,使它成为目前应用最广泛的一种文件完整性校验和(Checksum)算法,不少Unix系统有提供计算md5 checksum的命令。 2)数字签名 Hash 算法也是现代密码体系中的一个重要组成部分。由于非对称算法的运算速度较慢,所以在数字签名协议中,单向散列函数扮演了一个重要的角色。对 Hash 值,又称_数字摘要_进行数字签名,在统计上可以认为与对文件本身进行数字签名是等效的。 3)鉴权协议 如下的鉴权协议又被称作_挑战–认证模式:在传输信道是可被侦听,但不可被篡改的情况下,这是一种简单而安全的方法。 4).用于提供消息认证功能 5).用于产生单向口令文件 6).用于入侵检测和病毒检测 7).用于构建随机函数(PRF)或用做伪随机数发生器(PRNG) 8)给明文增加结构特征以保护密文 9)产生MAC(HMAC) 10)从口令衍生密钥
特性: 单向性:对于给定h,找出x极其困难 抗冲突性: 弱抗碰撞特性:对于给定y,找出x满足H(x)=H(y)极其困难。 强抗碰撞特性(生日攻击):找出x、y满足H(x)=H(y)极其困难。
若有碰撞,则意味着数字签名容易被伪造、欺骗
6、随机数的特性与用途; 特性:均匀分布性,独立性,不可预测性,可伸缩性,一致性
用途: 1.在统计学的不同技术中需要使用随机数。 2.实际生活中,这些随机数起着很大的作用。 3.在密码学中,可以用于生成密钥。 4.在RSA密码中关键是如何有效选取一个大素数,而在这个大素数的选取过程中,先必须产生一个大的随机的奇数,然后再来检验其是否为素数。。 5.数字水印中的应用。 6.一次性口令中的应用。
7、以PGP为代表的邮件/文件的加密交换/存储方案;
PGP(pretty good privacy) 是一个完整的电子邮件安全软件包,包括加密、鉴别、电子签名和压缩等技术。PGP 并没有使用什么新的概念,它只是将现有的一些算法如 MD5,RSA,以及 IDEA 等综合在一起而已。 数字签名: PGP提供的数字签名服务包括哈希编码或 消息摘要的使用,签名算法以及公钥加密算法。它提供了对发送方的身份验证。 保密性: PGP通过使用常规的加密算法,对将要传送的消 息或在本地存储的文件进行加密,在PGP中每个常规密钥只使用一次,会话密钥和消息绑定在一起进行传送,为了保护会话密钥,还要用接收方的公钥对其进行加密。 压缩: 在默认情况下,PGP在数字签名服务和保密性服务之间提供压缩服务,首先对消息进行签名,然后进行压缩,最后再对压缩消息加密。 基数64转换: 为了达到签名、加密及压缩的目的 ,PGP使用了称为基数64转换的方案。在该方案中,每3个二进制数据组被映射为4个ASCII字符,同时也使用了循环冗 余校验来检测传送中的错误,基数64转换作为对二进制PGP消息的包装,用于在一些非二进制通道。
8、破解口令的方法 1.键盘截获破解 通常作为必备功能被包含在一些木马之中,原理是在操作系统应用层对用户的键盘输入消息进行截获。 2.暴力攻击破解 即所谓的穷举攻击,原理是按照字母与数字的顺序穷举所有可能的测试用口令,然后使用组合好的口令进行测试,失败则重新进行口令组合和测试。 3.字典攻击破解 引入了常用口令字典这一概念,事先将常用的口令构造成字典文件,然后用字典文件中的每一条口令去尝试匹配口令。 4.网络嗅探截获 由于诸如FTP、HTTP等协议在网络中使用明文传输,针对这些协议截获的数据包,可以从中直接提取出用于认证的用户名和口令。 5. 利用操作系统的弱点和漏洞 如Windows NT的UNICODE漏洞,用解密算法破解程序来破译系统口令文件,从而获得系统的全部口令。
9、口令破解的防范 为了提高口令的安全性,在设置口令时要让口令满足一些安全策略,具体包括: 至少包含8个字符;大小写字母、数字和符号的组合;不包含姓名、用户名或常用单词;不与其他人共享;定期更换密码。
10、文件加密存储,360密盘、truecrypt、ntfs的文件夹绿色加密、bitlock等机制与原理; 文件加密存储是一种根据要求在操作系统层自动地对写入存储介质的数据进行加密的技术。按加密途径可分为两类: 一类是WINDOWS系统自带的文件加密功能,一类是采用加密算法实现的商业化加密软件。 360密盘将计算机磁盘中的部分区域进行加密,并生成一张“360密盘”,存放在360密盘中的所有文件将自动加密,经过身份验证后才能打开360密盘。360密盘使用高强度加密128位AES高强度加密算法,破解密码需要10万年。 TrueCrypt不需要生成任何文件即可在硬盘上建立虚拟磁盘,用户可以按照盘符进行访问,所有虚拟磁盘上的文件都被自动加密,需要通过密码来进行访问。TrueCrypt 提供多种加密算法,包括:AES-256, Blowfish (448-bit key), CAST5, Serpent, Triple DES, and Twofish。 加密文件系统 (EFS) 提供一种核心文件加密技术,正如设置其他任何属性(如只读、压缩或隐藏)一样,通过为文件夹和文件设置加密属性,可以对文件夹或文件进行加密和解密。加密后文件夹内的文件名字都是绿色的。 BitLocker驱动器加密通过加密Windows操作系统卷上存储的所有数据可以更好地保护计算机中的数据。BitLocker使用TPM帮助保护Windows操作系统和用户数据,并帮助确保计算机即使在无人参与、丢失或被盗的情况下也不会被篡改。
11、考虑这3个应用:电商及网银、无纸化办公、QQ。有哪些安全问题和需求、目前是怎么做得,该怎么注意安全,该怎么改进或解决。 电商及网银:交易过程的安全性。目前,除了加密技术以外,身份认证技术是保证电子商务安全不可缺少的又一重要技术手段。认证的实现包括数字签名技术、数字证书技术和数字时间戳技术等。 无纸化办公:在很多单位,很多信息都通过明文的方式进行传输,非常容易被截获。加强数字身份认证,使用加_输协议和权限控制,对接入系统用户进行严格的监控和管理。有重要和机密数据的存储设备要进行保密处理,如禁止拷贝等设置,每台操作机固定IP地址,严格控制管理员权限,对操作员和管理员的操作要留下清晰日志以备有问题时追查原因。 QQ:账号密码安全问题。用户可以将自己的常用手机号码设置成为安全手机。系统会在与该安全手机对应的帐号出现安全敏感操作如:修改密码、查询帐户、大量增删好友等的情况下,发送短信到用户的安全手机提示,让用户确认是否为本人操作。同时,安全手机也可以用来修改QQ密码。
12、网银u盾和动态口令牌,原理或机制上有啥区别? U盾: ① 全称:USB-KEY数字证书; ② USB-KEY 中内置了智能芯片; ③ USB-key有专用安全区来保存证书私钥; ④ USB-KEY证书私钥不能导出,因此备份的文件无法使用,其安全性高于浏览器证书; ⑤ 客户使用时需要安装 USB-KEY 驱动程序,USB-KEY 证书需要高于证书的成本; ⑥ USB-KEY 证书容易随身携带。 网银动态口令: ① 网银动态口令是由电子银行口令卡随机生成的一串数字; ② 电子银行口令卡是工行最新推出的电子银行安全工具,是保护客户资金不受损失而设置的又一道防线; ③ 也就是说客户只要保管好客户手中的口令卡,就不会有资金损失,即使客户不慎外泄了登录卡号和登录密码,只要保管好客户手中的口令卡,使登录卡号、登录密码、口令卡不被同一个人获取,就能够保证客户资金的安全,从而让客户更加安全、放心地使用电子银行。
13、那些泄漏案例引发的思考。素材:用户名、口令、邮箱、qq库、开房记录、云中照片、12306、CSDN、tianya、Ashley-Madison,以及传说但是后来未经证实的163的5亿邮箱等。对于这些泄漏案例,你可以猜测、分析其泄漏的途径和机制. 泄露途径有: (1)黑客利用网站存在的安全漏洞入侵网站,盗取用户数据库。 举例:由于携程用于处理用户支付的安全支付服务器接口存在调试功能,将用户支付的记录用文本保存了下来。同时因为保存支付日志的服务器未做校严格的基线安全配置,存在目录遍历漏洞,导致所有支付过程中的调试信息可被任意骇客读取。携程官方给出的评论是说在调试过程中间,有两小时左右用户的支付信息是被明文保存在服务器上的,这就为黑客攻击提供了机会。 (2)网站内部工作人员倒卖用户信息 (3)通过撞库攻击,窃取用户数据。 当然,最关键的还是加强安全意识,建立并执行完善的安全策略,在系统建设过程中就充分考虑网络安全、应用系统自身的安全功能、应用系统开发过程安全、操作系统安全、数据库安全、管理制度等方面,建立一个可执行且完整的安全策略和安全体系。
14、网络信息安全面临的问题 1.网络协议和软件的安全存在缺陷 2. 黑客攻击手段多样化 3.计算机病毒的入侵
15、应对网络信息安全所存在的问题的措施 1、提高公司内部相关人员的安全意识,充分发挥已有安全设备的作用; 2、要加强应用系统的安全 3、加强服务器、数据库的安全, 4、培养高水平的安全管理队伍 5、对数据进行加密和备份处理 6、加强防毒、防黑的安全措施 7、完善信息安全政策与法规
16、对称密码算法的基本要素:substitution和transposition是什么;现代对称算法的基本特点和元素。 代换(替代):明文元素映射为密文元素 置换:把明文元素重排 5个基本元素:明文、密文、密钥、加密算法、解密算法 特征:运算类型:代换、置换 密钥:对称密钥非对称密钥、密钥空间的大小 处理明文的方法:分组算法、流算法 基本原则:算法公开、密钥的随机性
17、如何达成对称密钥 1)通过安全的信道传输 2)可信第三方分发 3)分布式计算
18、设计流密码要考虑的因素: ①加密序列的周期要长 ②密钥流应尽可能接近真正随机数流的特征 ③伪随机数发生器的输出受输入密钥的调节
19、公钥密码体制的应用 ①加密/解密:发送方用接收方的公钥对消息进行加密。 ②数字签名:发送方用其私钥对消息“签名”,签名可通过对整条消息加密或对消息的一个小的数据块加密来产生,其中该小数据块是整体整条消息的函数。 ③密钥交换:通信双方交换会话密钥。
20、为得到安全算法,公钥密码体制应满足那些要求 ①公/密钥的产生在计算上是容易的 (密钥生成) ②已知公钥和待加密信息,发送方产生相应密文在计算上是容易的(加密) ③接收方使用其私钥对接收的密文解密以恢复明文在计算是容易的(解密) ④已知公钥,攻击者要确定私钥在计算上是不可行的(公钥->私钥) ⑤已知公钥和密文,攻击者要恢复明文在计算上是不可行的
21、构造MAC的方法: 第一种是将密码学hash函数以某种方式和密钥捆绑起来。 第二种是使用对称分组密码,将可变长度的输入转为固定长度的输出。
22、网络通信可能受到的攻击: ①泄密: 将消息透漏给没有合法秘密钥的任何人或程序。 ②传输分析: 分析通信双方的通信模式 ③伪装: 欺诈源向网络中插入一条消息 ④内容修改: 对消息内容的修改,包括插入、删除、转换和修改。 ⑤顺序修改: 对通信双方消息顺序的修改,包括插入、删除和重 ⑥计时修改: 对消息的延时和重放。 ⑦发送方否认: 发送方否认发送过某消息 ⑧接收方否认: 接收方否认接收到某消息
23、扩展的Euclid算法 算法描述:给定整数a,b该法计算出gcd(a,b)以及x,y。满足:ax+by=d=gcd(a,b),对于给定的整数a,b,ax+by的最小整数等于gcd(a,b)。 算法过程:
24、在GF§中求乘法逆元: 如果gcd(a,b)=1,那么b有模a的乘法逆元。使用扩展的Euclid算法来计算,得出的y即为所求。
25、数字签名的特征: ①它必须能够验证签名者、签名日期和时间 ②它必须能够认证被签的消息内容 ③签名应能有第三方仲裁,以解决争议
26、数字证书和数字签名的差别: 数字证书是由权威机构--CA证书授权(Certificate Authority)中心发行的,能提供在Internet上进行身份验证的一种权威性电子文档,人们可以在互联网交往中用它来证明自己的身份和识别对方的身份。 数字签名是一种认证机制,它使得消息的发送方可以添加一个起签名作用的码字。通过计算消息的Hash值并用发送方的密钥加密Hash值来获得签名。消息保证了消息的来源和完整性。
27、https和http的区别: 一、https协议需要到CA申请证书,一般免费证书很少,需要交费。 二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加_输协议。 三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。 四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加_输、身份认证的网络协议,比http协议安全。
28、公钥体系、对称加密体系、MAC、HASH、数字签名在认证上的作用、特点。 认证可以分为身份认证和消息来源认证。 身份认证一般使用使用CA(证书授权中心),CA用到了数字签名,而数字签名一般使用公钥算法; 消息认证则使用MAC,MAC在工业实现中一般先把消息hash到固定长度再计算认证码,而hash函数的实现中可能使用到了对称加密算法。另外Kerberos协议使用对称加密算法实现了消息来源认证。
29、对称密码和公钥密码的区别 ①密钥上,对称密码加解密使用相同的密钥,而公钥密码则使用发送方产生的两个密钥分别加解密; ②算法上,对称密码主要是使用代替和置换这两种加密技术;而公钥算法则是使用数学方法来进行加密。 ③安全性要求: 对称密码:密钥必须保密;没有密钥,解密不可行;知道算法和若干密文不足以确定密钥 公钥密码:两个密钥之一必须保密;无解密密钥,解密不可行;知道算法和其中一个密钥以及若干密文不能确定另一个密钥
30、防止重放攻击方法 ①序列号:对于每一个用于认证交互的消息附上一个序列号,新的消息只有其序列号满足适当的顺序时才会被接收,但是这种方法要求每一方都跟踪记录与其交互的通信双方的最新序列号,开销很大。 ②时间戳:只有当消息包含一个时间戳时,接收方才接收消息。该时间戳有接收方进行判断,要接近于接收方所知的当前时间。该方法要求不同参与者之间的时钟是同步的,且不适合于面向连接。 ③挑战/应答:A想要一个来自B的新消息,首先发给B一个临时交互号(询问),并要求后面从B接收的消息(回复)包含正确的临时交互号。这种方法不适合于无连接。
31、Kerberos协议过程、安全行可行性分析。 ①用户想要获取访问某一应用服务器的许可证时,先以明文方式向认证服务器AS发出请求,要求获得访问TGS的许可证。 ②AS以证书(credential)作为响应,证书包括访问TGS的许可证和用户与TGS间的会话密钥。会话密钥以用户的密钥加密后传输。 ③用户解密得到TGS的响应,然后利用TGS的许可证向TGS申请应用服务器的许可证,该申请包括TGS的许可证和一个带有时间戳的认证符(authenticator)。认证符以用户与TGS间的会话密钥加密。 ④TGS从许可证中取出会话密钥、解密认证符,验证认证符中时间戳的有效性,从而确定用户的请求是否合法。TGS确认用户的合法性后,生成所要求的应用服务器的许可证,许可证中含有新产生的用户与应用服务器之间的会话密钥。TGS将应用服务器的许可证和会话密钥传回到用户。 ⑤用户向应用服务器提交应用服务器的许可证和用户新产生的带时间戳的认证符(认证符以用户与应用服务器之间的会话密钥加密)。 ⑥应用服务器从许可证中取出会话密钥、解密认证符,取出时间戳并检验有效性。然后向用户返回一个带时间戳的认证符,该认证符以用户与应用服务器之间的会话密钥进行加密。据此,用户可以验证应用服务器的合法性。
密码知识点总结 第4篇
(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。 由于DES在穷举攻击下较弱,故使用三重DES增加复杂性(3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。),其中可以用三个(56bit)密钥进行三重加密,也可以用两个密钥进行三重加密。 加密定义:C=E(K1,D(K2,E(K1,P)))或者C=E(K3,D(K2,E(K1,P)))。能有效提升密码破解难度。应用于PGP。比DES算法密钥长,更安全可靠。优点是能继续使用原有的DES软硬件模块,保护了投资;缺点是速度慢,而且64位分组显得太小是DES向AES过渡的加密算法.
密码知识点总结 第5篇
利用现有的hash函数,加入密钥作为输入,用作mac的生成,就是HMAC。 HMAC是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code),HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。把HASH值和一个Key结合起来既能用当前的HASH函数,又易升级为新的HASH函数,并能保持和散列函数一样安全性。简单,并易进行密码学分析。利用hash函数从报文和密钥产生MAC码,先计算特征,再把特征加密,或直接把散列函数和key结合得MAC。
密码知识点总结 第6篇
ElGamal算法c;是一种较为常见的加密算法c;它是基于1984年提出的公钥密码体制和椭圆曲线加密体系。既能用于数据加密也能用于数字签名c;其安全性依赖于计算有限域上离散对数这一难题。在加密过程中c;生成的密文长度是明文的两倍c;且每次加密后都会在密文中生成一个随机数Kc;在密码中主要应用离散对数问题的几个性质:求解离散对数(可能)是困难的c;而其逆运算指数运算可以应用平方-乘的方法有效地计算。也就是说c;在适当的群G中c;指数函数是单向函数。 缺点是需要随机数c;密文长度加倍。
密码知识点总结 第7篇
高级加密标准,是一种对称、分组密码算法,用以取代DES的商业应用。分组长度为128位,被分为4*4字节矩阵处理(这个矩阵又称为“体(state)”,其初值就是一个明文区块),密钥长度为128、192、256位,未使用Feistel结构,每轮由四个单独的运算,字节替代、置换、有限域上的算数、与密钥的异或。 AES的所有运算都是在8为位的字节上进行的。加密和解密算法的输入是一个128为分组。AES加密过程是在一个4×4的字节矩阵上运作。 是下一代的加密算法标准,速度快,安全级别高,可抗已知攻击代码紧凑,速度够快,适合软硬件实现,结构简单。
密码知识点总结 第8篇
DES和AES五种工作模式之一,密文分组链接模式,这种模式下加密算法的输入是当前的明文组和上一个密文组的异或,而使用的密钥是相同的,这就相当于将所有的明文组链接起来了,加密算法的每次输入与本明文组没有固定的关系,因此,若有重复的明文组,加密后就看不出来了。并且,CBC模式如果最后的分组不是完整的分组,则需要填充至b位的满分组。解密时,每个密文分组分别进行解密,再与上一块密文异或就可以恢复成明文。 优点:避免明密对应,可用作认证。缺点:不能并行加密随机存取。等待缓冲区满8bit,否则需要做padding。 典型应用于普通目的的面向分组的传输和认证。
密码知识点总结 第9篇
初始向量c;是和密文具有相同长度的数据分组。 IV必须为收发双方共享c;但第三方不能预测c;可以先用ECB加密IV然后在发送。 在有线等效保密(WEP)协议中c;IV是用来和密钥组合成密钥种子c;作为RC4算法的输入c;来产生加密字节流对数据进行加密的。标准的64比特WEP使用40比特的钥匙接上24比特的初向量(Initialization Vectorc;IV) 成为 RC4 用的钥匙。 特别地c;对于任意的给定明文c;在IV产生之前c;不能预测和本明文相关联的IV。为了最大程度的安全c;IV不能不经授权而修改。
密码知识点总结 第10篇
说明某一范围内的整数可通过它的一组剩余类数来重构,这组剩余类数是对该整数用一组两两互素的整数取模得到的。 具体解法分下面三步: 1、找出三个数:从3和5的公倍数中找出被7除余1的最小数15,从3和7的公倍数中找出被5除余1 的最小数21,最后从5和7的公倍数中找出除3余1的最小数70。 2、用15乘以2(2为最终结果除以7的余数),用21乘以3(3为最终结果除以5的余数),同理,用70乘以2(2为最终结果除以3的余数),然后把三个乘积相加15∗2+21∗3+70∗215∗2+21∗3+70∗2得到和233。 3、用233除以3、5、7的最小公倍数105,得到余数23,这个余数23就是符合条件的最小数。
密码知识点总结 第11篇
线性反馈移位寄存器是流密码中常用技术之一。线性反馈移位寄存器(LFSR)是内测试电路中最基本的标准模块结构,既用作伪随机测试码产生器,也作为压缩测试结果数据的特征分析器。由一系列D触发器及少量异或元件组成。一个N位的LFSR能够在重复之前产生2^N-1位长的伪随机序列。 (线性反馈移位寄存器(linear feedback shift register, LFSR)是指:给定前一状态的输出,将该输出的线性函数再用作输入的移位寄存器。异或运算是最常见的单比特线性函数:对寄存器的某些位进行异或操作后作为输入,再对寄存器中的各比特进行整体移位。
密码知识点总结 第12篇
分布式拒绝服务攻击,通过大量合法的请求占用大量网络资源,以达到瘫痪网络的目的。借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力. 最基本的DoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应. 通常,攻击者使用一个偷窃帐号将DDoS主控程序安装在一个计算机上,在一个设定的时间主控程序将与大量代理程序通讯,代理程序已经被安装在网络上的许多计算机上。代理程序收到指令时就发动攻击。利用客户/服务器技术,主控程序能在几秒钟内激活成百上千次代理程序的运行。 在信息安全的三要素——“保密性”、“完整性”和“可用性”中,DoS(Denial of Service),即拒绝服务攻击,针对的目标正是“可用性”。该攻击方式利用目标系统网络服务功能缺陷或者直接消耗其系统资源,使得该目标系统无法提供正常的服务。 随着计算机与网络技术的发展,计算机的处理能力迅速增长,内存大大增加,同时也出现了千兆级别的网络,这使得DoS攻击的困难程度加大了-目标对恶意攻击包的_消化能力_加强了不少。这时候分布式的拒绝服务攻击手段(DDoS)就应运而生了。DDoS就是利用更多的傀儡机(肉鸡)来发起进攻,以比从前更大的规模来进攻受害者。
密码知识点总结 第13篇
“Internet 协议安全性 (IPSeC)”是一种开放标准的框架结构c;通过使用加密的安全服务以确保在 Internet 协议 (Ip) 网络上进行保密而安全的通讯。是安全联网的长期方向。它通过端对端的安全性来提供主动的保护以防止专用网络与 Internet 的攻击。在通信中c;只有发送方和接收方才是唯一必须了解 IPSec 保护的计算机。 IPSec是一组IP安全协议集。IPSec定义了在网际层使用的安全服务c;其功能包括数据加密、对网络单元的访问控制、数据源地址验证、数据完整性检查和防止重放攻击。 IPSec的安全服务要求支持共享密钥完成认证和/或保密c;并且手工输入密钥的方式是必须要支持的c;其目的是要保证IPSec协议的互操作性。当然c;手工输入密钥方式的扩展能力很差c;因此在IPSec协议中引入了一个密钥管理协议c;称Internet密钥交换协议——IKEc;该协议可以动态认证IPSec对等体c;协商安全服务c;并自动生成共享密钥。 能够实现ip分组的完整性c;加密和认证服务。
密码知识点总结 第14篇
分布式拒绝服务攻击c;通过大量合法的请求占用大量网络资源c;以达到瘫痪网络的目的。借助于客户/服务器技术c;将多个计算机联合起来作为攻击平台c;对一个或多个目标发动DDoS攻击c;从而成倍地提高拒绝服务攻击的威力. 最基本的DoS攻击就是利用合理的服务请求来占用过多的服务资源c;从而使合法用户无法得到服务的响应. 通常c;攻击者使用一个偷窃帐号将DDoS主控程序安装在一个计算机上c;在一个设定的时间主控程序将与大量代理程序通讯c;代理程序已经被安装在网络上的许多计算机上。代理程序收到指令时就发动攻击。利用客户/服务器技术c;主控程序能在几秒钟内激活成百上千次代理程序的运行。 在信息安全的三要素——“保密性”、“完整性”和“可用性”中c;DoS(Denial of service)c;即拒绝服务攻击c;针对的目标正是“可用性”。该攻击方式利用目标系统网络服务功能缺陷或者直接消耗其系统资源c;使得该目标系统无法提供正常的服务。 随着计算机与网络技术的发展c;计算机的处理能力迅速增长c;内存大大增加c;同时也出现了千兆级别的网络c;这使得DoS攻击的困难程度加大了-目标对恶意攻击包的_消化能力_加强了不少。这时候分布式的拒绝服务攻击手段(DDoS)就应运而生了。DDoS就是利用更多的傀儡机(肉鸡)来发起进攻c;以比从前更大的规模来进攻受害者。
密码知识点总结 第15篇
虚拟专用网络:用户连接一台VPN服务器c;服务器再访问用户想要访问的节点或局域网c;其中的传输都是加密的c;因此这样级就可以认为数据是在一条专用的数据链路上进行安全传输。 VPN的功能是:在公用网络上建立专用网络c;进行加密通讯。在企业网络中有广泛应用。VPN网关通过对数据包的加密和数据包目标地址的转换实现远程访问。VPN有多种分类方式c;主要是按协议进行分类。VPN可通过服务器、硬件、软件等多种方式实现。VPN属于远程访问技术c;简单地说就是利用公用网络架设专用网络。 (为了保证数据安全c;VPN服务器和客户机之间的通讯数据都进行了加密处理。有了数据加密c;就可以认为数据是在一条专用的数据链路上进行安全传输c;就如同专门架设了一个专用网络一样c;但实际上VPN使用的是互联网上的公用链路c;因此VPN称为虚拟专用网络c;其实质上就是利用加密技术在公网上封装出一个数据通讯隧道。)
密码知识点总结 第16篇
一种加/解密算法c;其将输入的明文划分为固定长度的块(即分组)c;对每个分组做相同的加/解密处理c;输出一个等长的密文分组c;Feistel结构是其主要使用的结构。典型的分组大小为64位和128位。 分组密码算法实际上就是密钥控制下c;通过某个置换来实现对明文分组的加密变换。 为了保证密码算法的安全强度c;分组密码算法必须满足一下要求:分组长度足够大、密钥量足够大、密码变换足够复杂。
密码知识点总结 第17篇
(Hyper Text Transfer Protocol over Secure Socket Layer)安全套接字层超文本传输协议,是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。。HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加_输数据的密码信息。TLS握手过程中如果有任何错误,都会使加密连接断开,从而阻止了隐私信息的传输。HTTPS非常的安全,现在的支付页面都使用HTTPS。
密码知识点总结 第18篇
指的是利用数字签名技术将用户的真实身份和用户的公开密钥进行有效绑定而形成的数字身份证明。X509标准是数字证书规范的标准。就是互联网通讯中标志通讯各方身份信息的一串数字c;提供了一种在Internet上验证通信实体身份的方式c;数字证书不是数字身份证c;而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个签名)。数字证书是一种权威性的电子文档c;它是由CA机构发行的c;人们可以在网上用它来识别对方的身份。 证书主要内容:用户公钥c;持有人和签发人的信息c;用途c;有效期限c;签名等。 证书在需要通信时临时交换c;并用CA的公钥验证。有了经CA签名保证的用户公钥c;则可进行下一步的身份验证和交换会话密钥等。
密码知识点总结 第19篇
又称为证书授证(Certificate Authority)中心,作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。(证书管理机构) 每个用户自己产生一对公钥和私钥,并把公钥提交给CA申请证书。CA以某种可靠的方法核对申请人的身份及其公钥,并用自己的私钥签发证书。 CA中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。 CA机构的数字签名使得攻击者不能伪造和篡改证书。它负责产生、分配并管理所有参与网上交易的个体所需的数字证书,因此是安全电子交易的核心环节。
密码知识点总结 第20篇
对称加密速度较快,所以一般加解密数据都用对称算法。而其密钥的分发管理通过非对称加密来保证。因为非对称加密(公钥)算法无需对密钥进行管理。 DH(Diffie-Hellman )密钥协商算法属于公钥加密算法,为了解决密钥配送的问题,双方就某次通信达成密钥的统一。
密码知识点总结 第21篇
(Secure Hash Algorithm 1)是使用最广泛的hash算法的一种,建立在MD4只上,输出为160位hash值。安全哈希算法主要适用于数字签名标准里面定义的数字签名算法。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。 特性:1不可以从消息摘要中复原信息;2两个不同的消息不会产生同样的消息摘要(但会有1x10 ^ 48分之一的机率出现相同的消息摘要,一般使用时忽略)。
密码知识点总结 第22篇
一种流加密算法,每次加密一字节的明文,用K生成随机数与明文做异或;通过设计合适的伪随机数发生器,当密钥长度相当时,流密码可以与分组密码一样安全。 密钥长度可变(核心S盒长度任意,但一般为256字节。)该算法的速度可以达到DES加密的10倍左右,且具有很高级别的非线性。 被用于SSL/TLS(安全套接字协议/传输层安全协议)标准。也应用于作为标准一部分的WEP(Wired Equivalent Privacy)协议。算法包括初始化算法(KSA)和伪随机子密码生成算法(PRGA)。
密码知识点总结 第23篇
DES和AES五种工作模式之一c;电码本模式c;是分组密码的一种最基本的工作模式。 直接利用加密算法分别对分组数据组加密。它一次处理一组明文分块c;每次使用相同的密钥加密。适合于数据较少的情况c;最重要的特征是一段消息中若有几个相同的明文组c;那么密文也将出现几个相同的密文组。 优点:并行加密c;随机存取。缺点:相同明文分组对应相同密文分组c;暴露统计规律。 应用于单个数据的安全传输(比如一个加密密钥)。
密码知识点总结 第24篇
服务器主循环为每一个连接创建一个定时器,并对每个连接进行定时。另外,利用升序时间链表容器将所有定时器串联起来,若主循环接收到定时通知,则在链表中依次执行定时任务处理函数。
怎么通知主循环?
利用alarm函数周期性地触发SIGALRM信号,SIGALRM信号处理函数利用管道通知主循环(注意,本项目的超时信号通过管道传输,管道的读端挂载到epoll上面,将信号对应的处理逻辑放在程序主循环中,由主循环执行。)
1.添加的尾节点时间复杂度为O(n),是因为本项目的逻辑是先从头遍历新定时器在链表的位置,如果位置恰好在最后,才插入在尾节点后,所以是O(n)。
2.删除的复杂度都是O(1),因为这里的删除都是已知目标定时器在链表相应位置的删除。(看可知,函数遍历升序链表容器,根据超时时间,删除对应的到期的定时器)
添加在尾节点的时间复杂度可以优化:在添加新的定时器的时候,除了检测新定时器是否在小于头节点定时器的时间外,再检测新定时器是否在大于尾节点定时器的时间,都不符合再使用常规插入。
本项目中时用优先级队列priority_queue实现最小堆,在主线程中轮询处理超时事件。定时器回调函数所做的工作:从epoll上删除用户文件描述符,关闭用户的文件描述符,用户数量-1。定时器使用绝对时间作为超时值,这里alarm设置为5秒,连接超时为15秒。
时间复杂度:
添加:O(log(n))
删除:O(1)
优化:将所有定时器中超时时间最小的一个定时器的超时值作为alarm函数的定时值。这样,一旦定时任务处理函数tick()被调用,超时时间最小的定时器必然到期,我们就可以在tick 函数中处理该定时器。然后,再次从剩余的定时器中找出超时时间最小的一个(堆),并将这段最小时间设置为下一次alarm函数的定时值。如此反复,就实现了较为精确的定时。
密码知识点总结 第25篇
Feistel建议使用乘积密码的概念来逼近理想分组密码。Feistel密码交替使用代替和置换来进行加密解密。 加密算法的输入是最长为2w位的明文分组和密钥k。明文分组被分为等长的两部分:和。这两半数据经过n轮迭代后组合成密文分组。第i轮迭代的输入和来自上轮迭代的输出;而输入的子密钥是由整个密钥K推导出的。 每轮迭代都有相同的结构:代替作用在数据的左半部分,这种代替是通过轮函数F作用于数据右半部分后,与左半部分进行异或来完成的。代替之后,交换数据的左右两半完成置换。 它的具体实现依赖于以下参数和特征: 分组长度:分组长度越长意味着安全性越高,但是会降低加、解密的速度。这种安全性的增加来自更好的扩散性。传统上,64位的分组长度比较合理,在分组密码设计里很常用。 密钥长度:密钥较长同样意味着安全性较高,但会降低加、解密的速度。这种安全性的增加来自更好的抗穷尽攻击能力和更好的混淆性。现在一般认为64位的密钥还不够。通常使用的密钥长度是128位。 迭代轮数:Feistel密码的本质在于单轮不能提供足够的安全性而多轮加密可取得很高的安全性。迭代轮数的典型值是16。 子密钥产生算法:子密钥产生越复杂,密码分析就越困难。 轮函数F:同样,轮函数越复杂,抗攻击的能力就越强。
密码知识点总结 第26篇
ElGamal算法,是一种较为常见的加密算法,它是基于1984年提出的公钥密码体制和椭圆曲线加密体系。既能用于数据加密也能用于数字签名,其安全性依赖于计算有限域上离散对数这一难题。在加密过程中,生成的密文长度是明文的两倍,且每次加密后都会在密文中生成一个随机数K,在密码中主要应用离散对数问题的几个性质:求解离散对数(可能)是困难的,而其逆运算指数运算可以应用平方-乘的方法有效地计算。也就是说,在适当的群G中,指数函数是单向函数。 缺点是需要随机数,密文长度加倍。
密码知识点总结 第27篇
即数据加密标准,是使用最广泛的对称加密算法,速度较快,适用于加密大量数据的场合。是一种使用密钥加密的块算法。使用Feistel结构。 DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥.在实际使用中,实际上只使用了密钥中的56位,这样才更具有安全性;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。 先将输入明文分为两组,密钥也分为两组,每组经过表置换后与密钥的一组做异或,将之后的结果输入S盒,与另一组明文做异或后为第一组加密的结果。 密钥长度为56位,分组长度64位。依赖密钥易受穷举搜索法攻击。 加密时明文经过初始置换、16轮相同函数作用、32位互换和逆初始置换三个阶段,其密钥则经过循环左移和第二次置换选择生成子密钥参与到加密中。解密过程与加密过程使用相同算法,但子密钥使用次序相反。
密码知识点总结 第28篇
是一个基于RSA公钥加密体系的邮件加密软件。可以用它对邮件保密以防止非授权者阅读c;它还能对邮件加上数字签名从而使收信人可以确认邮件的发送者c;并能确信邮件没有被篡改。 它可以提供一种安全的通讯方式c;而事先并不需要任何保密的渠道用来传递密匙。 它采用了一种RSA和传统加密的杂合算法c;用于数字签名的邮件文摘算法c;加密前压缩等c;还有一个良好的人机工程设计。 它的功能强大c;有很快的速度。而且它的源代码是免费的。
密码知识点总结 第29篇
DES和AES五种工作模式之一,电码本模式,是分组密码的一种最基本的工作模式。 直接利用加密算法分别对分组数据组加密。它一次处理一组明文分块,每次使用相同的密钥加密。适合于数据较少的情况,最重要的特征是一段消息中若有几个相同的明文组,那么密文也将出现几个相同的密文组。 优点:并行加密,随机存取。缺点:相同明文分组对应相同密文分组,暴露统计规律。 应用于单个数据的安全传输(比如一个加密密钥)。
密码知识点总结 第30篇
PSCS(The Public-Key Cryptography Standards)基于口令的加密标准c;描述了由口令生成的密钥来加密位串的方法。(PKCS)是由美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准c;其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议。 PKCS#5:描述一种利用从口令派生出来的安全密钥加密字符串的方法。使用MD2或MD5 从口令中派生密钥c;并采用DES-CBC模式加密。主要用于加密从一个计算机传送到另一个计算机的私人密钥c;不能用于加密消息。 PKCS#1:定义RSA公开密钥算法加密和签名机制c;主要用于组织PKCS#7中所描述的数字签名和数字信封。 PKCS#3:定义Diffie-Hellman密钥交换协议。
密码知识点总结 第31篇
(1)半同步/半异步模式(异步接收数据,同步处理数据)
这里的同步异步是:按顺序依次执行程序就是同步,当程序的执行是由信号,中断等驱动执行,则为异步。
半异步:异步处理I/O事件,就是客户端向服务器端的请求的接收,是通过异步线程进行处理的,来请求触发处理,将请求插入到请求队列中,使用Round Robin算法轮流选取工作线程来处理请求对象。
半同步:是指同步处理请求数据,异步线程接收完请求之后会封装一下插入队列,工作线程就依次同步从队列中取出请求对象进行处理。
半同步/半反应堆:它是半同步/半异步模式的变体,它核心在于,主线程充当异步线程,只负责监听客户端请求以及向内核注册读写事件,这和前面的Reactor(反应堆)事件处理模型类似,所以这样称呼。
它的进阶就是使用模拟的proactor事件模型,主线程除了监听,还负责了数据的读写。
但是!上面这种半反应堆模式的一个问题就是,因为有了请求队列,每次工作线程处理队列请求都需要加锁,白白消耗CPU;另一方面如果任务很多,工作线程很少,就会造成客户端响应速度变慢。
高效的半同步/半异步模式:解决办法就是取消任务队列,直接由主线程将各个客户端请求派发给各个工作线程,后期每个工作线程都持续响应同一个请求带来的读写。
(2)领导者/追随者模式(一个领导者,一群追随者)
任意时间点,仅有一个领导者线程监听,其它线程都是追随者,监听到请求后,领导者线程首先选出新的领导者,再处理请求,然后循环往复。如果没有新的领导者,处理完事件可以重新变成领导者。
分为三部分:
1. 句柄集:负责监听I/O事件,并把事件报告给领导者线程,每一个句柄相当于一个文件描述符。
2. 线程集:所工作线程的管理者,保证其中的线程每一时间都处于领导者、processing、追随者三者之一。
3. 事件处理器和具体的事件处理器:里面包含回调函数。具体的事件处理器可以重写回调函数。
对应《Linux高性能服务器编程》P127 – P130
Reactor:
主线程往epoll内核上注册socket读事件EPOLLIN,主线程调用epoll_wait等待socket上有数据可读,当socket上有数据可读的时候,主线程把socket可读事件放入请求队列。睡眠在请求队列上的某个工作线程被唤醒,处理客户请求,然后往epoll内核上注册socket写请求事件EPOLLOUT。主线程调用epoll_wait等待写请求事件,当有事件可写的时候,主线程把socket可写事件放入请求队列。睡眠在请求队列上的工作线程被唤醒,处理客户请求。
Proactor:
主线程调用aio_read函数向内核注册socket上的读完成事件,并告诉内核用户读缓冲区的位置,以及读完成后如何通知应用程序,主线程继续处理其他逻辑,当socket上的数据被读入用户缓冲区后,通过信号告知应用程序数据已经可以使用。应用程序预先定义好的信号处理函数选择一个工作线程来处理客户请求。工作线程处理完客户请求之后调用aio_write函数向内核注册socket写完成事件,并告诉内核写缓冲区的位置,以及写完成时如何通知应用程序。主线程处理其他逻辑。当用户缓存区的数据被写入socket之后内核向应用程序发送一个信号,以通知应用程序数据已经发送完毕。应用程序预先定义的数据处理函数就会完成工作。
reactor模式:同步阻塞I/O模式,注册对应读写事件处理器,等待事件发生进而调用事件处理器处理事件。 proactor模式:异步I/O模式。
Reactor和Proactor模式的主要区别就是真正的读取和写入操作是有谁来完成的,Reactor中需要应用程序自己读取或者写入数据,Proactor模式中,应用程序不需要进行实际读写过程。
Reactor:非阻塞同步网络模型,可以理解为:来了事件我通知你,你来处理
Proactor:异步网络模型,可以理解为:来了事件我来处理,处理完了我通知你。
理论上:Proactor比Reactor效率要高一些。
模拟Proactor模式
使用同步I/O方式模拟出Proactor模式的原理是:主线程执行数据读写操作,读写完成之后,主线程向工作线程通知这一“完成事件”。那么从工作线程的角度来看,它们就直接获得了数据读写的结果,接下来要做的只是对读写的结果进行逻辑处理。
使用同步I/O模型(仍以epoll_wait为例)模拟出Proactor模式的工作流程如下:
下面是重点:
读就绪事件:当有事件到来,epoll_wait()单纯通知主线程有事件来了,主线程把事件放入请求队列。应用程序利用工作线程通过read()等函数把数据从内核缓冲区读到用户缓冲区。
读完成事件:有事件来了,主线程往内核注册这个读事件(就是告诉内核注意了一会要读数据)。注册了之后,主线程就去干其他事情,内核就自动会负责将数据从内核缓冲区放到用户缓冲区。不用用户程序管。
而对于用reactor模式模拟的proactor模式来说,之前proactor是用主线程调用aio_read函数向内核注册读事件,这里它主线程使用epoll向内核注册读事件。但是这里内核不会负责将数据从内核读到用户缓冲区,最后还是要靠主线程也就是用户程序read()函数等负责将内核数据循环读到用户缓冲区。对于工作线程来说,收到的都是已读完成的数据,模拟就体现在这里。
有人可能会问
他们都是通过主线程调用不同函数进行注册,然后一个注册之后可以直接内核负责数据从内核到用户。另一个注册之后好像没啥用,那注册还有什么用?直接主线程循环读取然后封装放请求队列不就行了么?
不对,如果数据一直没来,直接进行循环读取就会持续在这里发生阻塞,这就是同步IO的特点,所以一定要注册一下然后等通知,这样就可以避免长期阻塞等候数据。
ET模式
缺点:应用层业务逻辑复杂,容易遗漏事件,很难用好。
优点:相对LT模式效率比较高。一触发立即处理事件。
LT模式:
优点:编程更符合用户直觉,业务层逻辑更简单。
缺点:效率比ET低。
什么时候用ET,什么时候用LT?
LT适用于并发量小的情况,ET适用于并发量大的情况。ET在通知用户之后,就会将fd从就绪链表中删除,而LT不会,它会一直保留,这就会导致随着fd增多,就绪链表越大,每次都要从头开始遍历找到对应的fd,所以并发量越大效率越低。ET因为会删除所以效率比较高。
怎么解决LT的缺点?
LT模式下,可写状态的fd会一直触发事件,该怎么处理这个问题
方法1:每次要写数据时,将fd绑定EPOLLOUT事件,写完后将fd同EPOLLOUT从epoll中移除。
方法2:方法1中每次写数据都要操作epoll。如果数据量很少,socket很容易将数据发送出去。可以考虑改成:数据量很少时直接send,数据量很多时在采用方法1。
触发LT模式后,读一次还是循环读?
读一次。
为什么ET模式下一定要设置非阻塞?
因为ET模式下是无限循环读,直到出现错误为EAGAIN或者EWOULDBLOCK,这两个错误表示socket为空,不用再读了,然后就停止循环了,如果是阻塞,循环读在socket为空的时候就会阻塞到那里,主线程的read()函数一旦阻塞,当再有其他监听事件过来就没办法读了,给其他事情造成了影响,所以必须要设置为非阻塞。
参考链接:
密码知识点总结 第32篇
服务器通常处理3类事件:I/O事件,信号,定时器,两种高效的事件处理模式:Reactor、Proactor。
项目使用了Reactor,WebServer类中的dealWithRead() / delWithWrite()主线程负责监听文件描述符上是否有读/写事件产生,工作线程负责读写数据,接受新连接,业务处理。
proactor:主线程负责接受新连接、数据读写操作,工作线程负责业务逻辑(处理客户请求)。
1.读取客户端发送的数据:利用主从状态机模式,主状态机解析报文数据(正在分析请求行CHECK_STATE_REQUESTLINE,正在分析请求头CHECK_STATE_HEADER,正在分析请求内容CHECK_STATE_CONTENT),从状态机判断数据行的完整性(读取到完整行LINE_OK,行出错LINE_BAD,行数据不完整LINE_OPEN)。switch模拟状态机。读完数据后向客户端回写状态:1xx, 2xx, 3xx, 4xx, 5xx。
2.向客户端写数据:例如发送文件,使用writev,以顺序iov[0],iov[1]至iov[iovcnt-1]从缓冲区中聚集输出数据。项目中,申请了2个iov,其中iov[0]为存储报文状态行的缓冲区,iov[1]指向资源文件指针。当报文消息报头较小时,第一次传输后,需要更新m_iv[1].iov_base = 0,iov_len,m_iv[0].iov_len = 0,只传输文件,不用传输响应消息头。每次传输后都要更新下次传输的文件起始位置和长度。
密码知识点总结 第33篇
参考公众号
数据库登录分为:1.载入数据表,2.提取用户名和密码 ,3.注册和登录校验 ,4.页面跳转
1.载入数据表就是把数据库的数据通过map容器传到服务器上。
2.当从浏览器上输入用户的用户名和密码后,浏览器会一个post请求报文,服务器通过解析请求报文的消息体,解析出账号密码。
3.根据解析出的账号密码,与map容器中保存账号密码进行对比校验,相符则成功登陆。注册账号时,同样将输入的账号密码与数据库已经存储的账号名进行对比校验,防止出现相同的账号名。如果不相同就加入数据库。
4.当输入的账号密码与数据库的数据成功匹配,就将浏览器跳转到对应的界面。
Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。
Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。
如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。
session会话机制是一种服务器端机制,它使用类似于哈希表(可能还有哈希表)的结构来保存信息。cookies会话机制:cookie是服务器存储在本地计算机上的小块文本,并随每个请求发送到同一服务器。 Web服务器使用HTTP标头将cookie发送到客户端。在客户端终端,浏览器解析cookie并将其保存为本地文件,该文件自动将来自同一服务器的任何请求绑定到这些cookie。
cookie和session的对比
Cookie session
浏览器 服务器
不安全 安全
不占用服务器,性能高 占用服务器,性能低
存储空间小 存储空间大
哈希表结构存储信息 本地计算机上的小块文件
1.数据结构的优化:为了保证数据库的一致性和完整性,在逻辑设计的时候往往会设计过多的表间关联,尽可能的降低数据的冗余。
2.数据查询的优化:保证在实现功能的基础上,尽量减少对数据库的访问次数;通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担;能够分开的操作尽量分开处理,提高每次的响应速度;在数据窗口使用SQL时,尽量把使用的索引放在选择的首列;算法的结构尽量简单;
3.对算法那的优化:尽量避免使用游标,因为游标的效率较差,如果游标操作的数据超过1万行,那么就应该考虑改写。使用基于游标的方法或临时表方法之前,应先寻找基于集的解决方案来解决问题,基于集的方法通常更有效。
4.建立高效的索引:创建索引一般有以下两个目的:维护被索引列的唯一性和提供快速访问表中数据的策略。大型数据库有两种索引即簇索引和非簇索引,一个没有簇索引的表是按堆结构存储数据,所有的数据均添加在表的尾部,而建立了簇索引的表,其数据在物理上会按照簇索引键的顺序存储,一个表只允许有一个簇索引
参考:
和redis的数据库类型
mysql是关系型数据库,主要用于存放持久化数据,将数据存储在硬盘中,读取速度较慢。
redis是NOSQL,即非关系型数据库,也是缓存数据库,即将数据存储在缓存中,缓存的读取速度快,能够大大的提高运行效率,但是保存时间有限。
的运行机制
mysql作为持久化存储的关系型数据库,相对薄弱的地方在于每次请求访问数据库时,都存在着I/O操作,如果反复频繁的访问数据库。第一:会在反复链接数据库上花费大量时间,从而导致运行效率过慢;第二:反复的访问数据库也会导致数据库的负载过高,那么此时缓存的概念就衍生了出来。
3.缓存
缓存就是数据交换的缓冲区(cache),当浏览器执行请求时,首先会对在缓存中进行查找,如果存在,就获取;否则就访问数据库。缓存的好处就是读取速度快
数据库
redis数据库就是一款缓存数据库,用于存储使用频繁的数据,这样减少访问数据库的次数,提高运行效率。
和mysql的区别总结
(1)类型上
从类型上来说,mysql是关系型数据库,redis是缓存数据库
(2)作用上
mysql用于持久化的存储数据到硬盘,功能强大,但是速度较慢
redis用于存储使用较为频繁的数据到缓存中,读取速度快
(3)需求上
mysql和redis因为需求的不同,一般都是配合使用。
密码知识点总结 第34篇
Message Digest Algorithm 5 (消息摘要算法第五版)为计算机安全领域广泛使用的一种散列(hash)函数,用于确保信息传输完整一致。MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被_压缩_成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串) 常用的一种hash函数之一,输出128bit,内部处理以512bit为单位,另一个常用的hash算法是SHA1. MD5算法具有以下特点:1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。2、容易计算:从原数据计算出MD5值很容易。3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据是非常困难的。(5、输入任意长度输出128比特。)
密码知识点总结 第35篇
Diffie-Hellman密钥交换协议/算法是一种安全协议。是一种确保共享KEY安全穿越不安全网络的方法。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道建立起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。这个机制的巧妙在于需要安全通信的双方可以用这个方法确定对称密钥。然后可以用这个密钥进行加密和解密。 但是注意c;这个密钥交换协议/算法只能用于密钥的交换c;而不能进行消息的加密和解密。双方确定要用的密钥后c;要使用其他对称密钥操作加密算法实际加密和解密消息。
密码知识点总结 第36篇
“盐值,在这个值是由系统随机生成的,并且只有系统知道。是用来修改口令散列的随机数据串。 所谓加Salt,就是加点“佐料”。当用户首次提供密码时(通常是注册时),由系统自动往这个密码里加一些“Salt值”,这个值是由系统随机生成的,并且只有系统知道。然后再散列。而当用户登录时,系统为用户提供的代码撒上同样的“Salt值”,然后散列,再比较散列值,已确定密码是否正确。 Salt值增加了字典攻击的复杂性,防止攻击者使用字典单词来检验整个系统。这样,即便两个用户使用了同一个密码,由于系统为它们生成的salt值不同,他们的散列值也是不同的。即便黑客可以通过自己的密码和自己生成的散列值来找具有特定密码的用户,但这个几率太小了(密码和salt值都得和黑客使用的一样才行)。
密码知识点总结 第37篇
又称为证书授证(Certificate Authority)中心c;作为电子商务交易中受信任的第三方c;承担公钥体系中公钥的合法性检验的责任。(证书管理机构) 每个用户自己产生一对公钥和私钥c;并把公钥提交给CA申请证书。CA以某种可靠的方法核对申请人的身份及其公钥c;并用自己的私钥签发证书。 CA中心为每个使用公开密钥的用户发放一个数字证书c;数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。 CA机构的数字签名使得攻击者不能伪造和篡改证书。它负责产生、分配并管理所有参与网上交易的个体所需的数字证书c;因此是安全电子交易的核心环节。
密码知识点总结 第38篇
使用两个密钥来进行加密和解密,这两个密钥分别是公钥和私钥。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。非对称加密使用一对密钥,一个用来加密,一个用来解密,公开的一个为公钥,自己保存的一个为私钥。 公钥/密钥对中公开的部分 私钥/密钥对中非公开的部分
密码知识点总结 第39篇
“Internet 协议安全性 (IPSec)”是一种开放标准的框架结构,通过使用加密的安全服务以确保在 Internet 协议 (IP) 网络上进行保密而安全的通讯。是安全联网的长期方向。它通过端对端的安全性来提供主动的保护以防止专用网络与 Internet 的攻击。在通信中,只有发送方和接收方才是唯一必须了解 IPSec 保护的计算机。 IPSec是一组IP安全协议集。IPSec定义了在网际层使用的安全服务,其功能包括数据加密、对网络单元的访问控制、数据源地址验证、数据完整性检查和防止重放攻击。 IPSec的安全服务要求支持共享密钥完成认证和/或保密,并且手工输入密钥的方式是必须要支持的,其目的是要保证IPSec协议的互操作性。当然,手工输入密钥方式的扩展能力很差,因此在IPSec协议中引入了一个密钥管理协议,称Internet密钥交换协议——IKE,该协议可以动态认证IPSec对等体,协商安全服务,并自动生成共享密钥。 能够实现ip分组的完整性,加密和认证服务。