第一篇:密码学技术读书笔记
关于密码学技术读书笔记
一.密码学的介绍
密码学(在西欧语文中,源于希腊语kryptós“隐藏的”,和gráphein“书写”)是研究如何隐密地传递信息的学科。在现代特别指对信息以及其传输的数学性研究,常被认为是数学和计算机科学的分支,和信息论也密切相关。著名的密码学者Ron Rivest解释道:“密码学是关于如何在敌人存在的环境中通讯”,自工程学的角度,这相当于密码学与纯数学的异同。密码学是信息安全等相关议题,如认证、访问控制的核心。密码学的首要目的是隐藏信息的涵义,并不是隐藏信息的存在。密码学也促进了计算机科学,特别是在于电脑与网络安全所使用的技术,如访问控制与信息的机密性。密码学已被应用在日常生活:包括自动柜员机的芯片卡、电脑使用者存取密码、电子商务等等。
密码是通信双方按约定的法则进行信息特殊变换的一种重要保密手段。依照这些法则,变明文为密文,称为加密变换;变密文为明文,称为脱密变换。密码在早期仅对文字或数码进行加、脱密变换,随着通信技术的发展,对语音、图像、数据等都可实施加、脱密变换。二.密码学的发展历史
密码学的发展历程大致经历了三个阶段:古代加密方法、古典密码和近代密码。1.古代加密方法(手工阶段)
古代加密方法大约起源于公元前440年出现在古希腊战争中的隐写术。当时为了安全传送军事情报,奴隶主剃光奴隶的头发,将情报写在奴隶的光头上,待头发长长后将奴隶送到另一个部落,再次剃光头发,原有的信息复现出来,从而实现这两个部落之间的秘密通信。
公元前400年,斯巴达人就发明了“塞塔式密码”,即把长条纸螺旋形地斜绕在一个多棱棒上,将文字沿棒的水平方向从左到右书写,写一个字旋转一下,写完一行再另起一行从左到右写,直到写完。解下来后,纸条上的文字消息杂乱无章、无法理解,这就是密文,但将它绕在另一个同等尺寸的棒子上后,就能看到原始的消息。这是最早的密码技术。
我国古代也早有以藏头诗、藏尾诗、漏格诗及绘画等形式,将要表达的真正意思或“密语”隐藏在诗文或画卷中特定位置的记载。2.古典密码(机械阶段)
古典密码的加密方法一般是文字置换,使用手工或机械变换的方式实现。古典密码系统已经初步体现出近代密码系统的雏形,它比古代加密方法复杂,其变化较小。古典密码的代表密码体制主要有:单表代替密码、多表代替密码及转轮密码。3.近代密码(计算机阶段)
密码形成一门新的学科是在20世纪70年代,这是受计算机科学蓬勃发展刺激和推动的结果。快速电子计算机和现代数学方法一方面为加密技术提供了新的概念和工具,另一方面也给破译者提供了有力武器。
第二篇:密码学学习心得
“密码学”学习心得
密码可破!人类的智慧不可能造成这样的密码,使得人类本身的才智即使运用得当也无法破开它!
———爱伦·坡所
在我们的生活中有许多的秘密和隐私,我们不想让其他人知道,更不想让他们去广泛传播或者使用。对于我们来说,这些私密是至关重要的,它记载了我们个人的重要信息,其他人不需要知道,也没有必要知道。为了防止秘密泄露,我们当然就会设置密码,保护我们的信息安全。更有甚者去设置密保,以防密码丢失后能够及时找回。密码”一词对人们来说并不陌生,人们可以举出许多有关使用密码的例子。现代的密码已经比古代有了长远的发展,并逐渐形成一门科学,吸引着越来越多的人们为之奋斗。
一、密码学的定义
密码学是研究信息加密、解密和破密的科学,含密码编码学和密码分析学。密码技术是信息安全的核心技术。随着现代计算机技术的飞速发展,密码技术正在不断向更多其他领域渗透。它是集数学、计算机科学、电子与通信等诸多学科于一身的交叉学科。使用密码技术不仅可以保证信息的机密性,而且可以保证信息的完整性和确证性,防止信息被篡改、伪造和假冒。目前密码的核心课题主要是在结合具体的网络环境、提高运算效率的基础上,针对各种主动攻击行为,研究各种可证安全体制。
密码学的加密技术使得即使敏感信息被窃取,窃取者也无法获取信息的内容;认证性可以实体身份的验证。以上思想是密码技术在信息安全方面所起作用的具体表现。密码学是保障信息安全的核心;密码技术是保护信息安全的主要手段。本文主要讲述了密码的基本原理,设计思路,分析方法以及密码学的最新研究进展等内容
密码学主要包括两个分支,即密码编码学和密码分析学。密码编码学对信息进行编码以实现信息隐藏,其主要目的是寻求保护信息保密性和认证性的方法;密码分析学是研究分析破译密码的学科,其主要目的是研究加密消息的破译和消息的伪造。密码技术的基本思想是对消息做秘密变换,变换的算法即称为密码算法。密码编码学主要研究对信息进行变换,以保护信息在传递过程中不被敌方窃取、解读和利用的方法,而密码分析学则于密码编码学相反,它主要研究如何分析和破译密码。这两者之间既相互对立又相互促进。密码的基本思想是对机密信息进行伪装。
二、密码学的发展历程
密码学的发展历程大致经历了三个阶段:古代加密方法、古典密码和近代密码。
1.古代加密方法(手工阶段)
源于应用的无穷需求总是推动技术发明和进步的直接动力。存于石刻或史书中的记载表明,许多古代文明,包括埃及人、希伯来人、亚述人都在实践中逐步发明了密码系统。从某种意义上说,战争是科学技术进步的催化剂。人类自从有了战争,就面临着通信安全的需求,密码技术源远流长。
古代加密方法大约起源于公元前440年出现在古希腊战争中的隐写术。当时为了安全传送军事情报,奴隶主剃光奴隶的头发,将情报写在奴隶的光头上,待头发长长后将奴隶送到另一个部落,再次剃光头发,原有的信息复现出来,从而实现这两个部落之间的秘密通信。
我国古代也早有以藏头诗、藏尾诗、漏格诗及绘画等形式,将要表达的真正意思或“密语”隐藏在诗文或画卷中特定位置的记载,一般人只注意诗或画的表面意境,而不会去注意或很难发现隐藏其中的“话外之音”。
比如:我画蓝江水悠悠,爱晚亭枫叶愁。秋月溶溶照佛寺,香烟袅袅绕轻楼 2.古典密码(机械阶段)
古典密码的加密方法一般是文字置换,使用手工或机械变换的方式实现。古典密码系统已经初步体现出近代密码系统的雏形,它比古代加密方法复杂,其变化较小。古典密码的代表密码体制主要有:单表代替密码、多表代替密码及转轮密码。3.近代密码(计算机阶段)
密码形成一门新的学科是在20世纪70年代,这是受计算机科学蓬勃发展刺激和推动的结果。快速电子计算机和现代数学方法一方面为加密技术提供了新的概念和工具,另一方面也给破译者提供了有力武器。计算机和电子学时代的到来给密码设计者带来了前所未有的自由,他们可以轻易地摆脱原先用铅笔和纸进行手工设计时易犯的错误,也不用再面对用电子机械方式实现的密码机的高额费用。总之,利用电子计算机可以设计出更为复杂的密码系统
20世纪中叶以前, 由于条件所限, 密码技术的保密性基于加密算法的秘密, 因此称之为古典密码体制或受限的密码算法。尽管古典密码体制受到当时历史条件的限制, 没有涉及非常高深或者复杂的理论, 但在其漫长的发展演化过程中, 已经充分表现出了现代密码学的两大基本思想一“ 代替” 和“换位” , 而且还将数学的方法引人到密码分析和研究中。这为后来密码学成为系统的学科以及相关学科的发展莫定了坚实的基础。
密码学真正成为科学是在19世纪末和20世纪初期,由于军事、数学、通讯等相关技术的发展,特别是两次世界大战中对军事信息保密传递和破获敌方信息的需求,密码学得到了空前的发展,并广泛的用于军事情报部门的决策.小结
从以上密码学的发展历史可以看出,整个密码学的发展过程是从简单到复杂,从不完美到完美,从具有单一功能到具有多种功能的过程。这是符合历史发展规律和人类对客观事物的认识规律的。而且也可以看出密码学的发展受到其它学科如数学、计算机科学的极大促动。这说明,在科学的发展进程中,各个学科互相推动,互相联系,乃至互相渗透,其结果是不断涌现出新的交叉学科,从而达到人类对事物更深的认识。从密码学的发展中还可以看出,任何一门学科如果具有广泛的应用基础,那么这个学科就能从中汲取发展动力,就会有进一步发展的基础。
我们这个社会已进入了信息时代,随着数据库技术和计算机网络应用的不断深入,信息的安全传输也有着广阔的应用前景。虽然密码可以追溯到古代,但密码作为一门学科还非常年轻,还有着更进一步的发展要求。
三、密码学的基础知识
密码学(Cryptogra phy),现代准确的术语为“密码编制学”,简称“编密学”,与之相对的专门研究如何破解密码的学问称之为“密码分析学”。密码学是主要研究通信安全和保密的学科,密码编码学主要研究对信息进行变换,以保护信息在传递过程中不被敌方窃取、解读和利用的方法,而密码分析学则于密码编码学相反,它主要研究如何分析和破译密码。这两者之间既相互对立又相互促进。密码的基本思想是对机密信息进行伪装。一个密码系统完成如下伪装:加密者对需要进行伪装机密信息(明文)进行伪装进行变换(加密变换),得到另外一种看起来似乎与原有信息不相关的表示(密文),如果合法者(接收者)获得了伪装后的信息,那么他可以通过事先约定的密钥,从得到的信息中分析得到原有的机密信息(解密变换),而如果不合法的用户(密码分析者)试图从这种伪装后信息中分析得到原有的机密信息,那么,要么这种分析过程根本是不可能的,要么代价过于巨大,以至于无法进行。
在计算机出现以前,密码学的算法主要是通过字符之间代替或易位实现的,我们称这些密码体制为古典密码。其中包括:易位密码、代替密码(单表代替密码、多表代替密码等)。这些密码算法大都十分简单,现在已经很少在实际应用中使用了。由于密码学是涉及数学、通讯、计算机等相关学科的知识,就我们现有的知识水平而言,只能初步研究古典密码学的基本原理和方法。但是对古典密码学的研究,对于理解、构造和分析现代实用的密码都是很有帮助。以下介绍我们所研究的古典密码学。
小结
像绝大多数领域的科学知识一样,密码学在完整的科学体系建立起来之前,古典密码学仅限于一些简单代替和置换算法,当然,这代替和置换如果经过了几次算法的加密就会一样复杂多变,而现代的算法经过科学体系的整理与发展,更加的完善一些复杂算法的应用和各种应用协议的产生。而由于网络的出现以及发展,未来的密码学也必定向这个方向发展。例如网络签名,网上银行的安全,个人邮件信息的保护,都很迫切需要密码学的支持,推动密码学的发展.四、密码学的作用
现代密码学研究信息从发端到收端的安全传输和安全存储,是研究“知己知彼”的一门科学。其核心是密码编码学和密码分析学。前者致力于建立难以被敌方或对手攻破的安全密码体制,即“知己”;后者则力图破译敌方或对手已有的密码体制,即“知彼”。人类有记载的通信密码始于公元前400年。古希腊人是置换密码的发明者。1881年世界上的第一个电话保密专利出现。电报、无线电的发明使密码学成为通信领域中不可回避的研究课题。
1.用来加密保护信息
利用密码变换将明文变换成只有合法者才能恢复的密文,这是密码的最基本功能。信息的加密保护包括传输信息和存储信息两方面,后者解决起来难度更大。
2.采用数字证书来进行身份鉴别
数字证书就是网络通讯中标志通讯各方身份信息的一系列数据,是网络正常运行所必须的。现在一般采用交互式询问回答,在询问和回答过程中采用密码加密,特别是采用密码技术的带CPU的职能卡,安全性好,在电子商务系统中,所有参与活动的实体都需要用数字证书来表明自己的身份,数字证书从某种角度上说就是“电子身份证”。3.数字指纹
在数字签名中有重要作用的“报文摘要”算法,即生成报文“数字指纹”的方法,近年来备受关注,构成了现代密码学的一个重要侧面。4.采用密码技术对发送信息进行验证
为防止传输和存储的消息被有意或无意的篡改,采用密码技术对消息进行运算生成消息的验证码,附在消息之后发出或信息一起存储,对信息进行验证,它在票房防伪中有重要作用。5.利用数字签名来完成最终协议
在信息时代,电子数据的收发使我们过去所依赖的个人特征都将被数字代替,数字签名的作用有两点,一是因为自己的签名难以否认,从而确定了文件已签署这一事实;二是因为签名不易仿冒,从而确定了文件时真的这一事实。
五、密码学的前景
量子密码学
量子密码体系采用量子态作为信息载体,经由量子通道在合法的用户之间传送密钥。量子密码的安全性由量子力学原理所保证。所谓绝对安全性是指:即使在窃听者可能拥有极高的智商、可能采用最高明的窃听措施、可能使用最先进的测量手段,密钥的传送仍然是安全的。通常,窃听者采用截获密钥的方法有两类:一种方法是通过对携带信息的量子态进行测量,从其测量的结果来提取密钥的信息。但是,量子力学的基本原理告诉我们,对量子态的测量会引起波函数塌缩,本质上改变量子态的性质,发送者和接受者通过信息校验就会发现他们的通讯被窃听,因为这种窃听方式必然会留下具有明显量子测量特征的痕迹,合法用户之间便因此终止正在进行的通讯。第二种方法则是避开直接的量子测量,采用具有复制功能的装置,先截获和复制传送信息的量子态。然后,窃听者再将原来的量子态传送给要接受密钥的合法用户,留下复制的量子态可供窃听者测量分析,以窃取信息。这样,窃听原则上不会留下任何痕迹。但是,由量子相干性决定的量子不可克隆定理告诉人们,任何物理上允许的量子复制装置都不可能克隆出与输入态完全一样的量子态来。这一重要的量子物理效应,确保了窃听者不会完整地复制出传送信息的量子态。因而,第二种窃听方法也无法成功。量子密码术原则上提供了不可破译、不可窃听和大容量的保密通讯体系。
现代密码学与计算机技术、电子通信技术紧密相关。在这一阶段,密码理论蓬勃发展,密码算法设计与分析互相促进,出现了大量的密码算法和各种攻击方法。而且如今“密码学”不仅用于国家军事安全上,而且更多的集中在实际生活中。如在生活中,为防止别人查阅你的文件,可将文件加密;为防止窃取你的钱
财,可在银行账户上设置密码等。随着科学技术的发展和信息保密的需求,密码学的应用将融人到人们的日常生活中。基于密码学有着坚实的应用基础,可以相信,密码学一定能不断地发展,不断地完善,从而会给全人类提供更加安全的各种服务,让我们祝福这一天的到来吧!
随着科学技术的迅猛发展,人们对信息安全和保密的重要性认识不断提高,在信息安全中起着举足轻重作用的密码学也就成为信息安全中不可或缺的重要部分。在今天,密码学仍然是信息技术非常重要的组成部分,它还在多个方面发挥着重要作用。比如对于用户的认证,对于信息的认证,信息的安全以及存储的安全等,但这些对于密码学而言,它需要同其他组件配合,比如管理软件等。密码学是和技术相关。作为一项技术本身有演进的需要,同时还要适应跟它相配合的技术组件发展的需要,要适应用户的新需求以及其他的新应用。密码学同信息技术所包括的组件一样,一直在发展变化中,这就需要我们要不断地发展密码学,使密码学能够适应其他应用的需求,同其他技术的进步齐头并进。信息安全有着众多基础研究的领域,这些基础研究构成了密码学的基础,也构成了通信、安全软件等系统的基础。当我们在实施一个工程项目的时候,不能仅靠一个细分领域技术就能把这个项目完成。
六、学习密码学的感悟
1.密码学家的人生价值
密码学家,也许不为人知。但他们的工作却在我们的生活中发挥 着巨大的作用。他们在现代社会中有着不可替代的作用。有人认为密码学家就像一个黑客,但他们有着本质的不同。黑客是盗取密码保护的信息以获取利益,而密码学家从事的是基础理论研究,是为了评估密码算法的安全性,找到其漏洞,以设计出更安全的密码算法。
我觉得,对于密码学家来说,其实有两重意义上的生命:一是生物意义上的生命,二是学术意义上的生命。两种生命往往并不同步。有的人,生物意义上的生命还活着,学术意义上的生命已经死了。这种情况在我们周围越来越常见。目前充斥着大量名为成果,实为名利敲门砖的所谓学术,没有任何新意和创见,前脚迈出印刷厂,后脚就进造纸厂,白耗费了财力,还增加了环境污染。有的人,生物意义上的生命死了,学术意义上的生命还活着。我想,密码学家就是这样的一类人,他们的研究成果,大到保卫国家,小到维护个人的利益,我想这是他们人生价值的最好体现。
2.总结与体会
密码学充满了神秘性,让我对她产生了浓厚的兴趣和好奇。最近的这次人类战争中,即二战,认识到密码和情报是一件事情。而在当代密码学跟数学,计算机只是一个大背景,因为信息将会以网络为媒介,所以现代密码学更多的是以数字化的信息而非纸质为研究对象。所以密码学归根结底是数学问题,计算能力是数学的一个方面,高性能的计算机可以成为国力的象征,分析情报就是一方面。数学研究等一些自然基础学科的研究才是国家实力的坚定的基石,才是一个自然科学的学生的理想所在。数学研究很广泛,而密码学涉及很有限,大多与计算机学科相关,如离散数学。从数学的分类包括:数论、近世代数、矩阵论、域论,以及其它结合较为紧密地理论:信息论、编码论、量子学、混沌论。
密码学还有许许多多这样的问题。当前,密码学发展面临着挑战和机遇。计算机网络通信技术的发展和信息时代的到来,给密码学提供了前所未有的发展机遇。在密码理论、密码技术、密码保障、密码管理等方面进行创造性思维,去开辟密码学发展的新纪元才是我们的追求。
北京科技大学
班级: 计1102
姓名:杨勇 学号: 41155047
第三篇:密码学课程设计报告
课 程 设 计 报 告
题目: 密码学课程设计
课程名称: 密码学课程设计
专业班级: 信安1904班
学 号: U201912177
姓 名: 段帅杰
指导教师: 路松峰老师
报告日期: 2021/10/12
教师评语:
分数:
网络空间安全学院
目录
一、设计过程 1
1.1 SPN实现 1
1.2线性分析 2
1.3差分分析 3
1.4 SPN增强 4
1.5 RSA参数计算 5
1.6模重复平方 6
1.7中国剩余定理 7
1.8 PKCS7 8
1.9彩虹表 9
二、实验心得 10
三、对课程设计内容和过程的建议 11
一、设计过程
1.1 SPN实现
(1)设计内容
按照课本给出的的S盒和P盒以及密钥编排方案来实现分组密码SPN加解密。有两个输入,分别是32比特的密钥和16比特的明文。要正确输出密文和对明文最后一比特取反解密得到的明文。加密过程主要包括三个部分:代换,置换和轮密钥异或。
(2)设计过程
算法所注意的问题:加密与解密主要在于密钥编排顺序不同,算法过程基本相同。最后一轮没有经过P盒。
解决这道题最直接的思路就是开数组及进行运算,但这样显然速度不够快。后来摒弃这种做法,采用位运算,速度快了不少而且这种做法方便快读快写的程序实现。但还是有几个数据点过不了oj,后面打了一个65536的表,将时间提高至1100ms左右。最后采用了快写才将时间稳定在700ms左右。
(3)小结
采用打表的方式程序速度确实有提高,但是程序很臃肿。程序中还有些算术运算并没有转换为位运算。
图1-1 SPN实现oj结果图示
1.2线性分析
(1)设计内容
线性分析是一种已知明文的分析方法,基于S盒逼近,需要大量的明密文对。oj上给了8000对明密文对。并且只对最后一轮子密钥进行分析。在密钥生成算法固定的情况下,获得最后一轮子密钥可以为分析别的密钥提供可能。遍历可能的密钥空间并进行计数,结束后正确的密钥计数值接近1/2±ϵ,并且应该在一定范围内对计数值较大的可能密钥进行验证。
(2)设计过程
首先使用书中给出的线性分析链,分析出第5轮第2、4部分的密钥。再选择新的偏差较大的线性分析链,在第2、4部分密钥已知的基础上分析出第1、3部分的密钥。接着在已知起始密钥低16位的基础上,穷举高16位密钥对给出的8000个明密文对进行验证。由于在加密过程中进行了5轮的S代换和P置换,其实相同明文在不同密钥下得到相同密文的概率极低,因此并没有验证8000个明密文对是否对应,而仅验证了3个判断密钥是否合适。
程序有两层主循环,第一层主循环遍历可能的第5轮第2、4部分密钥,第二层在已知第5轮第2、4部分密钥的基础上生成并遍历可能的第5轮第1、3部分密钥,同时穷举高16位密钥并进行验证。
(3)小结
为了提高速度,程序中同样采用了打表。但是在oj上仍然差了300ms,最后是开启了03优化才能全部通过(开启这个优化通过oj,算不上很完美)。
#pragma GCC optimize(3,”Ofast“,”inline“)
图1-2 线性分析oj结果图示
1.3差分分析
(1)设计内容
实验目的是实现对SPN网络的差分密码分析。差分密码与线性密码分析相似。主要区别在于它将两个输入的异或与其相对应的两个输出的异或相比较,是一种选择明文攻击。差分攻击的基础是一个非均匀的输出分布。和线性分析进行类似的计数操作并在计数值一定范围内对密钥进行验证。
(2)设计过程
首先使用书中给出的差分链分析出第5轮第2、4部分的密钥。再选择新的差分链分析出第5轮第1、3部分密钥,然后穷举高16位密钥情况,并验证密钥正确性。
与线性分析不同的是,由于差分分析中可以找到一条第5轮仅包含第1、3部分且偏差很大的差分链,因此不需要在已知第5轮第2、4部分的基础上进行差分分析,也因此减小了部分时间开销。
代码实现流程为:快速读入数据并存入数组中;根据已有的明密文对分别对第5轮第2、4部分和第1、3部分进行差分分析,记录每一种密钥对应的count值。在一定范围内遍历第5轮第2、4部分和第1、3部分密钥,穷举高16位密钥并验证正确性,得到正确密钥后快速输出密钥。
(3)小结
程序提交oj的时候最后一个测试点偶尔会出现超时的情况。
图1-3 差分分析oj结果图示
1.4 SPN增强
(1)设计内容
对原始SPN进行改进,自定义密钥长度,分组长度,S盒,P盒等信息,对输入比特流进行加密使输出能够通过oj的随机数检测标准。
(2)设计过程
相比于之前的SPN,做了些改动。采用CBC模式,随便设置一个初始向量,并且将密钥增加到128位,SPN加密长度增加到64位,使用自定义的P盒。这样才通过了随机性检测。
(3)小结
这道题不像之前的题目卡时间那么难受,虽然安全性相比于最初的SPN有所提高,但是真正应用的话,安全性还是不行。
图1-4 SPN增强oj结果图示
1.5 RSA参数计算
(1)设计内容
实验目的是自己利用gmp库提供的大整数基本运算来实现求逆和最大公因数,输出RSA参数d,并检查RSA参数的合法性。
(2)设计过程
首先是利用vcpkg在主机vs2019上搭建好了运行环境。实现了素性检测,gcd的求解以及求逆等过程。主要遇到的问题是在验证安全性上,判断参数是否正确。首先e不能太小,主要为了提高计算的难度;p和q间隔不能太小;p-1和q-1不能太光滑,即gcd(p-1,q-1)应该比较小,经过询问和验证,这个值大概在20以内。
(3)小结
这个实验主要熟悉了gmp库提供的大整数相关的基本函数运算。比较麻烦的是需要自己摸索测试方法,探索p和q的间隔,(p-1)和(q-1)的最大公因数大小等。在运行速度上倒是没遇到什么大问题。
图1-5 RSA参数计算oj结果图示
1.6模重复平方
(1)设计内容
实验目的是利用gmp库提供的加法,减法,乘法,模运算等基本运算来自己实现expmod(a,e,n)。
(2)设计过程
这道题逐步计算就行,需要注意的是递归或者普通的循环是行不通的。为了加快运行速度,要尽量减少循环次数。
(3)小结
这道题主要还是gmp库提供的函数的应用。
图1-6模重复平方 oj结果图示
1.7中国剩余定理
(1)设计内容
实验内容:正确计算c^d(modpq)。利用1.5中的求逆运算从加密密钥e计算解密密钥d。
利用1.6中实现的模幂运算和中国剩余定理计算c^d(modpq)。
(2)设计过程
这道题主题要是与前面两题的结合,使用p,q并运用中国剩余定理解密。为了加快速度解决的问题:
1.避免重复计算,用变量将不会改变的值保存好,避免不必要的计算。
2.在求解模幂时,将解密指数d模除以p-1和q-1,加速计算。
(3)小结
虽然经过改进,运行时间有所提高,但是最后一个测试点还是压着边过的。
图1-7中国剩余定理oj结果图示
1.8 PKCS7
(1)设计内容
PKCS#7是PKI中用于消息加密的语法标准。可以用于给拥有公钥的用户发加密邮件、传送加密文件等。实验目的是解开PKCS#7包装,获取明文消息。
(2)设计过程
这道题首先是查找PKCS#7的相关知识,了解它的用途。算是对上学期所学知识的综合应用的一个实例。然后利用openssl库提供相关的函数进行解密。
(3)小结
这道题时间并不是问题。还是比较轻松的。
图1-8 PKCS7 oj结果图示
1.9彩虹表
(1)设计内容
有一些链头和链尾,每条链从链头开始,依次调用了10000次SHA1和R函数得到链尾。
实验目的是从这些链中找到SHA1值对应的口令。
(2)设计过程
在程序中定义了UnitSHA1函数来寻找SHA1,通过findstr函数判断是否恰当。为了加快运行速度,程序中同样采用了快读快写以及位运算等。
(3)小结
这道题虽然时间限制提高至2000ms,但最后有几个测试点还是开了03优化才过的。
图1-9 彩虹表oj结果图示
二、实验心得
这次试验包含了SPN加解密及其分析,RSA参数,模重复平方,中国剩余定理,PKCS7,彩虹表等九个实验的内容。在实验过程中,要到了许许多多的问题。主要有以下几点:
SPN的位运算,最初因为对位运算不够熟悉并没有想着用位运算来实现SPN的加解密,多走了很多弯路。
密码分析问题,线性分析和差分分析否需要自己依据原理来找到最理想的链,而且需要先对概念原理有个清楚的认知,这就迫使我再次回顾密码学课本和网课上的知识点。
运行时间问题,为了缩短运行时间,采取了很多办法。比如打表,快读快写,在某些不改变的变量前面加const,在常用的变量前加register,算术运算转变为位运算等等。实在过不了的开启了02,03优化。
第三方库的安装与链接,在采用了许多方法无果后,采用了vcpkg库管理工具实现了gmp,gmssl,openssl等的安装与链接,减少了许多配置的麻烦。
密码学课程知识的回顾,过了一个暑假,部分密码学的细节知识有所遗忘,为了完成这次实验,需要重新学习一遍。这种回顾知识的机会自高中结束以来很少有了。上学期主要进行理论学习,这次试验弥补了实践的缺失。
总的来说,这次课设给我留下了深刻印象。自己写的代码不能正常运时的焦虑感是做其他实验没有的。大部分问题都要重新回顾之前的密码学知识。通过网上搜索相关概念,询问老师和同学解决。有些细节问题也会与同学交流讨论。这次实验让自己对密码学的认识和自己的编程能力上升了一个台阶。
希望能够在完成人数适当的时候进行一次讲解,这样可以让没有方向的同学知道如何着手,也可以让已经完成的同学进行思路的比对,有所改进。小范围讨论和统一讲解同样重要。
希望oj上的时间增加一点,因为时间而卡在一道题上过不去的滋味并不好受。而且实验是在锻炼我们的思考问题和实践的能力。如果时间太少的话,就只能参考别人的思路来缩短运行速度,同质化严重。不利于学生独立思考,写出各种各样的程序。我们写的程序最终也不会进行应用,更重要的是锻炼,纠结于几百毫秒反而降低了学生的热情。
在课设结束后发出参考样例方便有需要的同学进行改进。
希望实验课能越来越好,通过实验来吸引更多对密码学有兴趣的人。
第四篇:现代密码学 学习心得
密码学(Cryptology)一词源自希腊语“krypto's”及“logos”两词,意思为“隐藏”及“消息”。它是研究信息系统安全保密的科学。其目的为两人在不安全的信道上进行通信而不被破译者理解他们通信的内容。
从几千年前到1949年,密码学还没有成为一门真正的科学,而是一门艺术。密码学专家常常是凭自己的直觉和信念来进行密码设计,而对密码的分析也多基于密码分析者(即破译者)的直觉和经验来进行的。1949年,美国数学家、信息论的创始人 Shannon, Claude Elwood 发表了《保密系统的信息理论》一文,它标志着密码学阶段的开始。同时以这篇文章为标志的信息论为对称密钥密码系统建立了理论基础,从此密码学成为一门科学。由于保密的需要,这时人们基本上看不到关于密码学的文献和资料,平常人们是接触不到密码的。1967年Kahn出版了一本叫做《破译者》的小说,使人们知道了密码学。20 世纪70年代初期,IBM发表了有关密码学的几篇技术报告,从而使更多的人了解了密码学的存在。但科学理论的产生并没有使密码学失去艺术的一面,如今,密码学仍是一门具有艺术性的科学。1976年,Diffie和 Hellman 发表了《密码学的新方向》一文,他们首次证明了在发送端和接收端不需要传输密钥的保密通信的可能性,从而开创了公钥密码学的新纪元。该文章也成了区分古典密码和现代密码的标志。1977年,美国的数据加密标准(DES)公布。这两件事情导致了对密码学的空前研究。从这时候起,开始对密码在民用方面进行研究,密码才开始充分发挥它的商用价值和社会价值,人们才开始能够接触到密码学。这种转变也促使了密码学的空前发展。
最早的加密技术,当属凯撒加密法了。秘密金轮,就是加解密的硬件设备可以公用,可以大量生产,以降低硬件加解密设备的生产与购置成本。破译和加密技术从来就是共存的,彼此牵制,彼此推进。错综复杂的加解密演算法都是为了能够超越人力执行能力而不断演变的。Kerckhoffs原则、Shannon的完美安全性、DES算法、Rijndael算法……<
文章大致翻译:
一、摘要:随着远程通信的发展,特别是计算机网络的发展,密码学面临着两大难题:⒈可靠密钥的传输通道问题。⒉如何提供与手写签名等效的认证体系。为了解决这些问题,文中提出了公钥密码算法和公钥分配算法,并且把公钥密码算法经过变换成为一个单向认证算法,来解决有效认证问题。此外还讨论了密码学中各种问题之间的相互关系,陷门问题,计算复杂性问题,最后回顾了密码学发展的历史。
二、常规密码体系:这一部分主要介绍了密码学的一些基本知识,如密钥、加密、解密,算法的无条件安全与计算性安全,三种攻击法,即唯密文攻击、已知明文攻击、选择明文攻击。需要指出的是,本文给出了密码学的一个定义:研究解决保密和认证这两类安全问题的“数学”方法的学科。还有一点需要指出的是,根据Shannon的理论:无条件安全的算法是存在的,但由于其密钥过长而不实用,这也是发展计算上安全的算法的原因。
三、公钥密码学:公钥密码学主要包括两部分:公钥密码算法和公钥分配算法。公钥密码算法是指定义在有限信息空间{M}上的,基于算法{Ek }和{Dk }的可逆变换
Ek:{M}-> {M}
Dk:{M}-> {M}
满足下列条件:
⑴对任给K∈{K},Ek是Dk的互逆变换
⑵对任意的K∈{K}和M∈{M},用Ek和Dk进行加密和解密是
容易计算的⑶对几乎所有的K∈{K},从Ek推出Dk在计算上是不可行的⑷对任意的K∈{K},从K计算Ek和Dk是可行的这里K是用以产生Ek和Dk的随机数。性质⑶保证了可公开Ek而不损害Dk的安全性,这样才保证了公钥密码算法的安全性。
以加密二值n维向量为例,加密算法是乘一个n×n可逆矩阵,解密则乘其逆矩阵,所需运算时间为n。此可逆矩阵可通过对单位矩阵做一系列的行和列的初等变换得到,而其逆矩阵是经过逆序的行和列的逆变换得到。但是矩阵求逆只需要n的时间,密码分析者用时与正常解密用时之比是n。虽然这个例子并不实用,但对解释公钥密码算法是有用的。一个更实用的方法是利用机器语言的难懂性,把加密算法编译成机器语言公布,而解密算法保密,分析者要理解机器语言的全部运算过程是很困难的,所以要破解是困难的,当然此算法必须足够的复杂以免通过输入和输出对来破解。
公钥分配算法是基于求对数再取模计算上的困难。令q是一个素数,在有限域GF(q)上任取q,计算Y= a*mod(q),其中a是GF(q)上的一个固定基元。则 X= log 【Y*mod(q)】。a
不难得出由X计算Y是较容易的,约需要计算2×log2q次乘法;然而从Y得出X是困难的,x
32因为需q/2次运算。这样对每一个用户,从[1,2,„,q-1]中随机的选一个q,计算出Yi=a* mod q,并将Yi公布,Xi保密。那么当用户i和j通信时,使用Kij=a
公共密钥。此密钥用户i通过j公布的Yj 得到,即Kij= YjXiXiXj Xi*mod q作为他们的XiXj *mod q=(a)*mod q= aXjXi *mod q得到。用户j的计算同理。对于第三方要获得此密钥就必须计算,而这在计算上是不可行的,从而达到了在公共信道上分配私钥的效果。
四、单向认证:现有的认证体系只能保证不被第三方冒名顶替,但不能解决发送者和接收者之间的冲突,为此引入单向函数的概念,即对定义域中的任意x,f(x)是容易计算的,但对几乎所有的值域中的y,求满足y= f(x)的x在计算上是不可行的。例如已知多项式p(x)和x,求y =p(x)是容易的,但若已知y 求出x 是困难的。值得注意的是,这里的计算上不可逆与数学中的不可逆是完全不同的(数学上的不可逆可能是有多个原像)。
公钥密码算法可用来产生一个真正的单向认证体系。当用户A要发信息M给用户B时,他用其保密的解密密钥解密“M”并传给B,B收到时用A公布的加密密钥 “加密”此消息从而得到信息M。因为解密密钥是保密的,只有A发送的消息才具有这样的性质,从而确认此信息来源于A,也就建立了一个单向认证体系。
Leslie Lamport 还提出另一种单向信息认证方法,它是应用在k维二值空间上的单向函数f到其自身的映射来实现的。若发送者发送N比特的信息m,他要产生2N个随机k维二值向量x1,X1,x2,X2,„„xn , Xn ,并保密,随后把这些向量在f下的像y1,Y1,y2,Y2,„„yn , Yn,发送给接收者。当发送信息m=(m1,m2 ,„,mN)时,m1=0发送x1,m1 =1发送X1,依次类推。接收者把收到的信息用f映射之,若为y1则 m1=0,Y1则m1 =1,如此下去便得到了m。由于函数f的单向性,接收者无法从y推出x,因此就无法改动接收到的任何收据。当然在N比较大时这种方法的额外开销是很大的,为此有必要引入单向映射g,用来把N比特的信息映射成n比特(n约为50),但这里要求g有比一般的单向函数更强的性质。
五、问题的相关性和陷门:
⒈一个对已知明文攻击安全的密码算法能产生一个单向函数。设 :{P}->{K}是这样的一个算法,取P=P0。考虑映射f:{K}->{C}定义为f(x)=Sx(P0),则f是一个单向函数,因为要由f(x)得到x和已知明文攻击是等价的(即已知P=P0和SK(P0)求不出K)。Evans还提出过另一种方法,他用的映射是
f(x)=Sx(X),这增加了破解的难度,但这个单向函数却破坏了对已知明文攻击安全的要求。⒉一个公钥密码算法可用来产生一个单向认证体系。这一点在(四)中已经讨论过了。⒊一个陷门密码算法可用来产生一个公钥分配算法。所谓陷门密码算法是指只有知道陷
门信息才能正确还原明文,不掌握陷门信息要破解出明文在计算上是不可行的。比如A要和B建立公共私钥,A任选一个密钥,用B公布的含有陷门信息的加密密钥加密之,并将密文发送给B,B由保密的陷门信息解密得到此密钥,于是A和B建立了公共的私钥。不难发现公钥密码算法是一个陷门单向函数。
六、计算复杂度:现代密码算法的安全性是基于计算上的不可行性,因此就有必要对计算复杂度进行研究。在确定型图灵机上可用多项式时间求解的问题定义为P类复杂度,在非确定型图灵上可用多项式时间求解的问题定义为NP类复杂度,显然NP包括P。Karp还定义了一个NP完全集,即如果NP完全集中的任何一个问题属于P 类,则NP中的所有问题都属于P。现在大多数的加密算法用的是NP完全集中的问题。关于密码分析的难度有如下定理:一个加密和解密算法若是能在P时间内完成的,那么密码分析的难度不会大于NP时间。
七、历史回顾:
密码学的发展经历了早期的加密过程保密,到60年代对明文攻击安全的算法,到现在算法公开的基于计算复杂度的算法,可见其发展趋势是秘密性越来越弱的。并且随着许多曾经被证明为安全的算法被相继攻破,密码安全性的分析也经历了早期的纯数学证明到后来的密码分析攻击,再到计算复杂度分析。这里还有一个有趣的现象就是密码分析方法大多是由专业人事发现的,而密码算法则主要是由非专业人员提出的。
对于这篇经典之作,我的认知显得很是粗陋。要想真正读通这篇巨作,恐怕自己还需要修炼些时日。但是,加密解密已经渗入到如今这个电子化信息化的生活中来,又无时无刻不在感受着密码学带来的快感。
信息安全技术作为一门综合学科,它涉及信息论、计算机科学和密码学等多方面知识,研究计算机系统和通信网络内信息的保护方法以实现系统内信息的安全、保密、真实和完整。21世纪是信息时代,信息的传递在人们日常生活中变得非常重要。如:电子商务,电子邮件,电子政务,银行证券等,无时无刻不在影响着人们的生活。这样信息安全问题也就成了最重要的问题之一。在信息交换中,“安全”是相对的,而“不安全”是绝对的,随着社会的发展和技术的进步,信息安全标准不断提升,因此信息安全问题永远是一个全新的问题。信息安全的核心是密码技术。如今,计算机网络环境下信息的保密性、完整性、可用性和抗抵赖性,都需要采用密码技术来解决。公钥密码在信息安全中担负起密钥协商、数字签名、消息认证等重要角色,已成为最核心的密码。
Diffie和Hellman的经典算法,影响直至今日,各种新兴算法的形成、多次地被引用。
经典犹在,密码学新的开拓仍旧在继续,仍旧令人期待。
第五篇:密码学大作业NMAP
Nmap的学习与使用
赵彦喆
3110102884
信通1106 一:Nmap扫描原理:
1网络扫描软件Nmap
(1)简介
Nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪 服务运行在那些连接端,并且推断哪个操作系统计算机运行(这是亦称 fingerprinting)。它 是网络管理员必用的软件之一,以及用以评估网络系统保安。
正如大多数工具被用于网络安全的工具,nmap也是不少黑客及骇客(又称脚本小孩)爱用的工具。系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器,但 是黑客会利用nmap来搜集目标电脑的网络设定,从而计划攻击的方法。Nmap常被跟 评估系统漏洞软件Nessus 混为一谈。Nmap以隐秘的手法,避开闯入检测系统的监视,并尽可能不影响目标系统的日常操作。
(2)描述
nmap运行通常会得到被扫描主机端口的列表。nmap总会给出well known端口的服务 名(如果可能)、端口号、状态和协议等信息。每个端口的状态有:open、filtered、unfiltered。open状态意味着目标主机能够在这个端口使用accept()系统调用接受连接。filtered状态表示:防火墙、包过滤和其它的网络安全软件掩盖了这个端口,禁止nmap探测其是否打开。unfiltered表示:这个端口关闭,并且没有防火墙/包过滤软件来隔离nmap的探测企图。通常情况下,端口的状态基本都是unfiltered状态,只有在大多数被扫描的端口处于filtered状态下,才会显示处于unfiltered状态的端口。根据使用的功能选项,nmap也可以报告远程主机的下列特征:使用的操作系统、TCP序列、运行绑定到每个端口上的应用程序的用户名、DNS名、主机地址是否是欺骗地址、以及其它一些东西。(3)Nmap所识别的6个端口状态。1.open(开放的)应用程序正在该端口接收TCP 连接或者UDP报文。发现这一点常常是端口扫描的主要 目标。安全意识强的人们知道每个开放的端口都是攻击的入口。攻击者或者入侵测试者想要发现开放的端口。而管理员则试图关闭它们或者用防火墙保护它们以免妨碍了合法用户。非安全扫描可能对开放的端口也感兴趣,因为它们显示了网络上那些服务可供使用。2.closed(关闭的)关闭的端口对于Nmap也是可访问的(它接受Nmap的探测报文并作出响应),但没有应 用程序在其上监听。它们可以显示该IP地址上(主机发现,或者ping扫描)的主机正在运行up 也对部分操作系统探测有所帮助。3.filtered(被过滤的)由于包过滤阻止探测报文到达端口,Nmap无法确定该端口是否开放。过滤可能来自专 业的防火墙设备,路由器规则或者主机上的软件防火墙。4.unfiltered(未被过滤的)未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭。只有用于映射 防火墙规则集的ACK扫描才会把端口分类到这种状态。用其它类型的扫描如窗口扫描,SYN扫描,或者FIN扫描来扫描未被过滤的端口可以帮助确定端口是否开放。
5.open|filtered(开放或者被过滤的)当无法确定端口是开放还是被过滤的,Namp就把该端口划分成这种状态。开放的端口 不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃了探测报文或者它引发的 任何响应。因此Nmap无法确定该端口是开放的还是被过滤的。UDP,IP协议,FIN,Null和Xmas扫描可能把端口归入此类。6.closed|filtered(关闭或者被过滤的)该状态用于Nmap不能确定端口是关闭的还是被过滤的。它只可能出现在IPID Idle扫描 中。
2语法
Nmap的语法相当简单.Nmap的不同选项和-s标志组成了不同的扫描类型,比如:一个 Ping-scan命令就是“-sP”.在确定了目标主机和网络之后,即可进行扫描.如果以root来运行Nmap,Nmap的功能会大大的增强,因为超级用户可以创建便于Nmap利用的定制数据包。一般语法格式:nmap [Scan Type(s)] [Options]
3基本扫描类型
可以使用nmap-h快速列出功能选项的列表。-sT TCP connect()扫描:这是最基本的TCP扫描方式。connect()是一种系统调用,由操作系统提供,用来打开一个连接。如果目标端口有程序监听,connect()就会成功返回,否则这个端口是不可达的。这项技术最大的优点是,你勿需root权限。任何UNIX用户都可以自由使用这个系统调用。这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息。
-sS TCP同步扫描(TCP SYN):因为不必全部打开一个TCP连接,所以这项技术通常称为半开 扫描(half-open)。你可以发出一个TCP同步包(SYN),然后等待回应。如果对方返回SYN|ACK(响应)包就表示目标端口正在监听;如果返回RST数据包,就表示目标端口没有监听程序;如果收到一个SYN|ACK包,源主机就会马上发出一个RST(复位)数据包断开和目标主机的连接。这项技术最大的好处是,很少有系统能够把这记入系统日志。
-sP ping扫描:若只是想知道此时网络上哪些主机正在运行。通过向你指定的网络内的每个 IP地址发送ICMP echo请求数据包,nmap就可以完成这项任务,如果主机正在运行就会作出响应。在默认的情况下nmap也能够向80端口发送TCP ack包,如果你收到一个RST包,就表示主机正在运行。nmap使用的第三种技术是:发送一个SYN包,然后等待一个RST或者SYN/ACK包。对于非root用户,nmap使用connect()方法。在默认的情况下(root用户),nmap并行使用ICMP和ACK技术。实际上,nmap在任何情况下都会进行ping扫描,只有目标主机处于运行状态,才会进行后续的扫描。如果只是想知道目标主机是否运行,而不想进行其它扫描,才会用到这个选项。
-sU UDP扫描:如果想知道在某台主机上提供哪些UDP(用户数据报协议,RFC768)服务,可以 使用这种扫描方法。nmap首先向目标主机的每个端口发出一个0字节的UDP包,如果收到端口不可达的ICMP消息,端口就是关闭的,否则我们就假设它是打开的。
4通用选项
这些内容不是必需的,但是很有用。-Pn 在扫描之前,不必ping主机。有些网络的防火墙不允许ICMP echo请求穿过,使用这 个选项可以对这些网络进行扫描。
-O 这个选项激活对TCP/IP指纹特征(fingerprinting)的扫描,获得远程主机的标志。换句话 说,nmap使用一些技术检测目标主机操作系统网络协议栈的特征。nmap使用这些信息建立远程主机的指纹特征,把它和已知的操作系统指纹特征数据库做比较,就可以知道目标主机操作系统的类型。
-v 冗余模式。它会给出扫描过程中的详细信息。使用这个选项,可以得到事半功倍的效果。使用-d选项可以得到更加详细的信息。
-h 快速参考选项。-p <端口范围> 这个选项让你选择要进行扫描的端口号的范围。例如,-p 23表示:只扫描目标主机的 23号端口。-p 20-30,139,60000-表示:扫描20到30号端口,139号端口以及所有大于60000的端口。在默认情况下,nmap扫描从1到1024号以及nmap-services文件(如果使用RPM软件包,一般在/usr/share/nmap/目录中)中定义的端口列表。
-F 快速扫描模式,只扫描在nmap-services文件中列出的端口。显然比扫描所有65535个 端口要快。
5目标设定
在nmap的所有参数中,只有目标参数是必须给出的。其最简单的形式是在命令行直接 输入一个主机名或者一个IP地址。如果你希望扫描某个IP地址的一个子网,你可以在主机名或者IP地址的后面加上/掩码。掩码在0(扫描整个网络)到32(只扫描这个主机)。使用/24扫描C类地址,/16扫描B 类地址。
除此之外,nmap还有更加强大的表示方式让你更加灵活地指定IP地址。例如,如果要 扫描这个B类网络128.210.*.*,你可以使用下面三种方式来指定这些地址:128.210.*.*、128.21-.0-255.0-255或者128.210.0.0/16这三种形式是等价的。
二:安装Nmap: 在网上搜索Nmap下载,我是在太平洋游戏网上下载的,安装时一路点击确定即可。
三:使用Nmap软件实现网络扫描:
1、使用不同扫描指令扫描在线主机,并记录端口信息:
确定端口状况: 如果直接针对某台计算的IP地址或域名进行扫描,那么Nmap对该主机进行主机发现过程和端口扫描。该方式执行迅速,可以用于确定端口的开放状况。命令形式: nmap targethost 可以确定目标主机在线情况及端口基本状况。
完整全面的扫描:
如果希望对某台主机进行完整全面的扫描,那么可以使用nmap内置的-A选项。使用了 改选项,nmap对目标主机进行主机发现、端口扫描、应用程序与版本侦测、操作系统 侦测及调用默认NSE脚本扫描。
命令形式:
nmap –T4 –A –v targethost
其中-A选项用于使用进攻性(Aggressive)方式扫描;-T4指定扫描过程使用的时序(Timing),总有6个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS 检测并屏蔽掉,在网络通讯状况良好的情况推荐使用T4;-v表示显示冗余(verbosity)信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态。
隐蔽扫描
从图中可以看到,共扫描了10.13.83.110的1000个tcp端口,发现有998个filtered ports,0个closed ports,并列出了2个open ports,并可以知道这些服务的状态和采用的协议。如端口22提供的是ssh服务,采用tcp协议。
端口扫描
扫描结果和TCP SYN scan相同。但是耗时却是TCP SYN scan的7倍,这是因为TCP connect scan是调用connect()函数来打开一个链接,效率较低,而TCP SYN scan不必全部打开一个tcp连接,只是发出一个TCP同步包(SYN),然后等待回应。如果对方返回SYN|ACK(响应)包就表示目标端口正在监听;如果返回RST数据包,就表示目标端口没有监听程序;如果收到一个SYN|ACK包,源主机就会马上发出一个RST(复位)数据包断开和目标主机的连接。
Ping扫描
Ping扫描并没有进行端口扫描,因此不能得到端口信息和系统信息,只知道有在IP地址段。
TCP ACK扫描:
扫描1000个端口,其中998个被过滤掉。这种ACK扫描是向特定的端口发送ACK包(使用随机的应答/序列号)。如果返回一个RST包,这个端口就标记为unfiltered状态。如果什么都没有返回,或者返回一个不可达ICMP消息,这个端口就归入filtered类。
TCP Window扫描
对滑动窗口的扫描:这项高级扫描技术非常类似于ACK扫描,除了它有时可以检测到处于打开状态的端口,因此扫描结果和ACK扫描相同。
2、扫描目标主机的支持协议状况与防火墙状态
IP协议扫描允许你判断目标主机支持哪些IP协议,从结果可以看到共扫描了258个端口,发现被扫描主机支持4种IP协议,其中只有端口1处于open状态。
3、设置不同指令参数进行扫描
采用Quick scan模式
-F(快速(有限的端口)扫描)-T(设置时间模板)
-v(提高输出信息的详细度)
-p(只扫描指定的端口)
Intense scan(激烈扫描模式)
traceroute(路由跟踪)
4、扫描目标主机的操作系统类型
扫描到ip地址为10.13.83.110的目标主机的细节信息,可知,该主机现在为up状态,总共扫描端口1002个,其中有999个被过滤掉,0个端口状态为closed,3个端口状态为open。能获得该主机的IP地址,但是不能获得MAC地址,能知道系统的版本为Linux 2.6.32-3.6,运行时间为291743,最近启动时间为2014.6.16 15:34:41
心得体会:
通过这次大作业,我学会了使用各种Nmap的指令来了解主机的各种状况,收获良多,希望以后的教学中还可以多一些这样的大作业。
思考题:
请问有哪些方法可以防御黑客的Nmap扫描?
1)
禁用Guest帐号。有很多入侵都是通过这个帐号进一步获得管理员密码或者权限的。Win7用户以管理员方式登录,然后打开控制面板,用户账户和家庭安全,添加或删除用户账户,点击Guest来宾账户,然后就是关闭来宾账户,这样guest就被禁用了。
2)
停止共享。Windows 2000安装好之后,系统会创建一些隐藏的共享。点击开始→运行→cmd,然后在命令行方式下键入命令“net share”就可以查看它们。网上有很多关于IPC入侵的文章,都利用了默认共享连接。要禁止这些共享,打开控制面板→管理工具→计算机管理→共享文件夹→共享,在相应的共享文件夹上按右键,点“停止共享”就行了。3)
关闭不必要的服务,如Terminal Services、IIS(如果你没有用自己的机器作Web服务器的话)、RAS(远程访问服务)等。打开控制面板→管理工具→计算机管理→服务和应用程序→服务,看见没用的就关掉。
4)
禁止建立空连接。在默认的情况下,任何用户都可以通过空连接连上服务器,枚举帐号并猜测密码。有以下两种方法:
(1)修改注册表:HKEY_Local_MachineSystemCurrent-ControlSetControlLSA下,将DWORD值RestrictAnonymous的键值改成1。
(2)
修改Windows 7的本地安全策略: 开始--搜索“运行”--secpol.msc,打 开“本地安全策略”。设置“本地安全策略→本地策略→选项”中的RestrictAnonymous(匿名连接的额外限制)为“不容许枚举SAM账号和共享”。
5)如果开放了Web服务,还需要对IIS服务进行安全配置:
(1)更改Web服务主目录。右键单击“默认Web站点→属性→主目录→本地路径”,将“本地路径”指向其他目录。
(2)删除原默认安装的Inetpub目录。(3)
删除以下虚拟目录: _vti_bin、IISSamples、Scripts、IIShelp、IISAdmin、IIShelp、MSADC。
(4)删除不必要的IIS扩展名映射。方法是:右键单击“默认Web站点→属性→主目录→配置”,打开应用程序窗口,去掉不必要的应用程序映射。如不用到其他映射,只保留.asp、.asa即可。
(5)备份IIS配置。可使用IIS的备份功能,将设定好的IIS配置全部备份下来,这样就可以随时恢复IIS的安全配置。
请画出黑客使用Nmap进行网络扫描的可能流程。
(1)选择目标主机target.example.com或未知的一大段ip地址。
(2)使用nmap-v target.example.com命令对目标主机或网络上所有的保留TCP进行一次扫描
(3)使用nmap-sS-O target.example.com/24,开始一次SYN的半开扫描,针对的目标是target.example.com所在的C类子网,还试图确定在目标上运行的是什么操作系统。
(4)寻找存在漏洞的目标主机,一旦发现了有漏洞的目标,接下来就是对监听端口的扫描。(5)通过某种方式与目标主机建立连接,查找登录信息。
(6)获得目标主机的用户信息,并使用合适的工具软件登录,至此黑客成功入侵。