《Python工程应用-网络信息安全》课件-chap1_第1页
《Python工程应用-网络信息安全》课件-chap1_第2页
《Python工程应用-网络信息安全》课件-chap1_第3页
《Python工程应用-网络信息安全》课件-chap1_第4页
《Python工程应用-网络信息安全》课件-chap1_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

chap.1概述网络信息安全网络信息安全概述Python语言简介

Python安全编程本章内容要点1.1网络信息安全概述

1.信息安全定义信息安全是指计算机信息系统的硬件、软件、网络及其系统中的数据受到保护,不受偶然的或者恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常地运行,确保信息服务不中断。所谓网络信息安全就是信息安全的一个子集或是专门话题,泛指围绕着与通信/计算机网络相关的信息安全问题展开的防护行为。网络信息安全绝非一个单纯、简单的问题,遍布于网络空间的各个部位,各个层面侧重不同。通常,将网络空间领域可划分为物理域、信息域、认知域和社会域,从网络空间安全的角度来看,物理域和信息域主要关注以信息技术为核心的网络基础设施安全及网络信息通信安全,而认知域和社会域则更关注以人为核心的认知文化等精神层面以及个人与集体相互作用的社会层面。因此,要确保网络信息安全,就必须顾及到以上所有层面的安全,这显然是一个复杂的系统工程。2.信息安全特征要理解网络信息安全,必须了解信息的基本安全特征。信息安全一般应具备五个特征(机密性、完整性、可用性、可控性、不可否认性(可审查性)),具体如图1-1所示。当信息及网络信息系统同时满足以上五个特征的安全要求,就可以认为是它们是安全的。信息安全特征的状态并不是一成不变的,而是随着安全对抗双方的此消彼长不断发生转化3.安全理论技术

网络信息安全理论所涉及的领域知识非常宽泛。宏观上讲,只要是与信息安全相关的技术都属于这个范畴,除了数学、通信、计算机等自然科学外,还涉及法律、心理学等社会科学。这些科学指导下的技术是达成网络安全的主要手段,具体来讲,在常见的信息系统中,可以采用的信息安全技术主要包括:密码技术、身份验证、访问控制、审计追踪、安全协议等。所谓信息安全程序设计技术就是基于计算机语言实现特定安全功能的编程活动。目前,几乎绝大多数编程语言均可以不同程度实现面向安全目的的开发,实现效果也不尽相同,1.3.2节将结合Python语言的特点介绍其安全编程实现的思路。由于网络信息安全技术是一个开放的话题,随着科学技术的不断发展,还有更多、更丰富的技术加入进来,不断形成“物理”(技术组合)和“化学”(交叉产生新质技术)变化,衍生出更新的技术。1.2Python语言简介1.2.1Python发展回顾

Python语言诞生于20世纪90年代初,目前已被广泛应用计算机程序设计的各个领域之中。Python的创始人是荷兰人吉多·范罗苏姆(GuidovanRossum)。早在1989年,Guido在阿姆斯特丹,为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,并作为ABC语言的一种继承。这种编程语言之所以选中Python(大蟒蛇的意思)作为名字,主要是取自于Guido所喜爱的英国20世纪70年代首播的电视喜剧《蒙提.派森的飞行马戏团》(MontyPython'sFlyingCircus)的剧名。

Python在发展初期并未引起人们的注意,甚至到了Python2于2000年10月16日发布时,也没有引起人们的热捧。但是,自从2004年以后这一情况开始发生逆转。当Python3于2008年12月3日发布时,Python迅速得到普及,并于2011年1月正式被TIOBE编程语言排行榜评为2010年度语言。正如本书开篇所述,到了2020年10月,经过29年的发展,Python首次超过了Java,成为全球第二受欢迎的编程语言,距离首位的C语言也仅仅只相差4个百分点。这也是Tiobe指数近20年的历史上,首次出现Java和C语言不是两大顶级语言的情况。显而易见,现在Python已经步入最受欢迎的程序设计语言的行列。Python语言的成功源于其简洁性、易读性以及可扩展性。尤其是,在国外用Python做科学计算的研究机构日益增多,一些知名大学已经采用Python来教授程序设计课程,使其得以快速普及开来。此外,越来越多的开源科学计算软件包,都提供了Python的调用接口,例如:著名的计算机视觉库OpenCV、三维可视化库VTK、医学图像处理库ITK等等,这也加速了Python的普及。目前基于Python专用的科学计算扩展库则更是不胜枚举,其中包括十分经典的科学计算扩展库:NumPy、SciPy和matplotlib等,均可为Python提供了快速数组处理、数值运算以及绘图功能。

Python编程的前景也被认为是十分广阔的,Python语言及其众多的扩展库所构成的开发生态,十分适合工程技术、科研人员处理实验数据、制作图表,甚至开发科学计算应用程序。1.2.2Python工作原理

1.Python工作过程

Python是一种解释型语言,依赖解释器工作。解释器工作于程序代码与计算机硬件之间的软件逻辑层。Python解释器的工作模式如图1-2所示。由图1-2可知,当写好Python代码后,将其导入Python解释器后,将会执行两个步骤:第一步:把源代码编译成字节码编译后的字节码是特定于Python的一种表现形式,它不是二进制的机器码,需要进一步编译才能被机器执行,这也是Python代码无法运行的像C/C++一样快的原因。如果Python进程在机器上拥有写入权限,那么它将把程序的字节码保存为一个以.pyc为扩展名的文件,如果Python无法在机器上写入字节码,那么字节码将会在内存中生成并在程序结束时自动丢弃。在构建程序的时候,若给Python赋予计算机的写权限,这样只要源代码没有改变,生成的.pyc文件就可以重复利用,从而提高执行效率。第二步:把编译好的字节码转发到PVM中置于运行时状态

PVM是PythonVirtualMachine的简称,它是Python的运行引擎,因此是Python系统的一部分,它迭代运行上步编译形成的字节码指令,是一个大循环、一个接一个地完成字节码操作。在Python中PVM的概念与解释器通常不做区分,并有多种备选项。基于上述这种工作机制,就不难理解Python之所以能够体现出的简单、便捷特性。2.Python解释器实现方式

Python解释器实现不止一种,常用的有:CPython、AnacondaPython、Jython、IronPython和PyPy等。

(1)CPythonCPython是一种标准实现,是由C语言编写的,它是大多数Linux和MacOS机器预装的Python解释器,也是所有Python解释器中运行较快、最完整、最健全的。

(2)AnacondaPythonAnaconda源自Anaconda公司设计(原名为ContinuumAnalytics),其设计目标在于服务那些需要由商业供应商提供支持且具备企业支持服务的Python开发者。AnacondaPython的主要用例包括:数学、统计学、工程、数据分析、机器学习以及其他相关应用。

(3)JythonJython是一种Python语言的替代实现方式,其目的是为了与Java编程语言集成,Jython包含了Java类,这些类编译Python源代码、形成Java字节码,并将得到的字节码映射到Java虚拟机(JVM)上。因为Jython要比CPython慢而且也不够健壮,它往往看作是一个主要面向寻找Java代码前端脚本语言的Java开发者的工具。(4)IronPythonIronPython设计的目的是让Python程序可以与Windows平台上的.NET框架以及与之对应的Linux的上开源的Mono编写成的应用集成。

(5)PyPyPyPy属于CPython解释器的替代品,其利用即时(JIT)编译以加速Python程序的执行。根据实际执行的任务情况,其性能提升可能非常显著。PyPyJIT将Python代码编译为机器语言,从而带来平均7.7倍于CPython的运行速度。在某些特定任务中,其提速效果能够达到50倍。PyPy一般更适用于处理“纯”Python应用程序。由于PyPy会模拟CPython的原生二进制接口,因此在处理包含C库接口的Python软件包时,其表现并不理想。本书主要采用的是Cpython和AnacondaPython解释器(安装详见2.1.2节)1.2.3Python特点分析

Python作为工程实践的语言,选择使用之前需要了解其优缺点。1.Python的优点Python的优点包括以下几个方面。

(1)简单:Python遵循“简单、优雅、明确”的设计哲学,并且各个版本能够始终如一的秉承这一传统。

(2)高级:Python是一种高级语言,相对于C语言牺牲了性能而提升了编程人员的效率。它使得程序员可以不用关注底层细节,把精力全部放在编程上。

(3)面向对象:Python既支持面向过程,也支持面向对象。

(4)可扩展:Python可以通过C、C++语言为python编写扩充模块。(5)免费和开源:Python是FLOSS(自由/开放源码软件)之一,允许自由的发布软件的备份、阅读和修改其源代码、将其一部分自由地用于新的自由软件中。

(6)边编译边执行:Python是解释型语言,支持边编译边执行。

(7)可移植:Python能运行在不同的平台上。

(8)丰富的库:Python拥有许多功能丰富的库,尤其是众多的第三方库。

(9)可嵌入性:Python可以嵌入到C、C++等多种其它语言中,为其提供脚本功能。2.Python的缺点

Python的缺点是必须正视的问题,要充分考虑设计的需求趋利避害,具体包括如下方面。

(1)速度慢:Python程序比Java、C、C++等程序的运行效率都要慢。

(2)源代码加密困难:不像编译型语言的源程序会被编译成目标程序,Python直接运行源程序,因此对源代码加密比较困难。

(3)不支持底层操作:进行计算机底层操作的支持能力有限,需要借助于其它语言或第三方库(Ctypes等)。

Python的缺点也是其设计者力求改进的重要方向,相信在未来会有很大程度的改进。3.Python安全编程优势

综合评判Python,不难发现这种语言的优缺点都很明显,但是其在安全编程的优势还是被广泛接受的,究其原因可以概括为以下几个方面:

(1)综合能力良好网络安全本身就是一项综合、复杂体系性工作,涉及到几乎信息可达的所有位置,因此想要对信息安全进行全面实现,就需要一种综合性强的语言,而Python因其能够整合不同的工具而被喻为“胶水语言”,且包装能力、可组合性、可嵌入性都很好,可以把各种复杂性包装在Python模块里,完全匹配这种需求。进一步,由于在Python内部采用虚拟环境技术,对开发项目进行了沙箱隔离,也排除了相同软件不同版本冲突的困扰,工具综合的考虑也更加全面。

(2)数据分析优势显著

Python对于密集型的信息安全数据处理大有裨益。Python在数据分析和交互、探索性计算以及数据可视化等方面都显得比较活跃,这就是Python作为数据分析的原因之一,Python拥有numpy、matplotlib、scikit-learn、pandas、ipython等工具在科学计算方面十分有优势,尤其是pandas,在处理中型数据方面可以说是无与伦比的,已经成为数据分析中流砥柱的分析工具。(3)智能计算能力突出面对未来信息安全涌现的新问题,诸如:认证识别的模式匹配、入侵检测的特征分析、自动化漏洞挖掘的规则推理、图像文本数据的语义理解等核心问题,已经不是单纯依靠一门语言就可以解决的问题了,都需要智能技术的支持。展望智能技术的发展未来,根据李开复博士提出的“AI红利三段论”,认为未来的智能必将是“大众智能”,并预测95%甚至更多的AI技术人员,都将是不具有非常专业编程能力的AI工程师、应用工程师和AI工具用户。正因为如此,Python所秉承的“做到简单而严谨、易用而专业”宗旨,完全迎合了这种发展趋势。目前,人们已经可以清晰地看出Python作为智能技术天选之子的未来。因此,信息安全选择Python语言,倒不如说是信息安全对未来智能时代的拥抱。其实,Python在很早以前就已经被黑客所青睐。很多知名的黑客工具、入侵系统框架都是由Python开发的,比如:Metasploit、Fuzzing框架Sulley、交互式数据包处理程序Scapy等,基于这些框架黑客还可以很容易地扩展出自己的工具。之所以安全人员开始选择Python,就好像战场上的战士丢掉自己手中尚好的武器,而捡起敌人丢弃的武器,就是对敌人“武器”最好的肯定。1.3Python安全编程1.3.1安全应用程序分类

在进行安全编程之前,需要明确安全应用的分类。按照信息安全特征,目前常见的安全应用程序可以5划分五类。(1)机密性应用,包括:密码应用(加密)、数字水印(阈下通信应用),这种应用有时处于安全体系的最内核,因此需要较高的操作权限。

(2)完整性应用,包括:密码应用(数字签名、哈希)、数字水印(易碎型),由于这种应用会将数据暴露于开放环境,因此并不需要内核级权限。

(3)可用性应用,包括:网络扫描、渗透测试、防病毒、主机安全管理,对于确保系统核心可用性的应用,需要内核权限。

(4)不可抵赖性应用,包括:密码应用(数字签名)、网络实体识别与认证、网络安全取证、区块链,除了对核心数据的保护外,不必需内核权限。

(5)可控性应用,包括:入侵检测、防火墙、网闸、漏洞挖掘、内容安全,对于底层的保护需要内核权限。上述分类之间并不严格独立,存在交叉、联合。1.3.2Python安全编程思路

Python安全编程涉及信息安全的信息域、认知域和社会域,图1-3是现有安全技术在计算机网络系统分布的示意图,包括了:密码技术、认证与识别、VPN、数字水印、区块链、网络扫描与流量分析、防火墙、入侵检测、漏洞挖掘、主机安全、安全审计与取证、内容安全、渗透测试等多项,Python可以直接或间接地实现其中的绝大部分。在Windows平台上,这些安全应用的Python开发可以分别采用如下方法。1.密码技术密码是信息安全系统最内核的保护。由于Python在数据操作方面简洁明快,且并不失强大,所以几乎所有的密码算法都可以在Python中的以实现。无论是古典密码算法,还是基于现代数学难题的公钥密码,都有Python实现方案,常见的DES、RSA、哈希方法实现如下。

(1)利用pyDes模块可以提供DES加密等。

(2)利用Crypto.PublicKey.RSA和RSA模块提供生成公钥、私钥和RSA加密的功能。

(3)利用Hashlib模块可以提供常用的摘要算法如MD5、SHA1等。密码应用开发本书将在第三章进行介绍。由于Python是一种解释型语言,因此运行效率较差,虽然可以实现密码应用,但是必须对工程工作的实时性要求进行评估(如流密码)。并且,如果实现内核层加密,还需要借助于扩展和嵌入方法。2.区块链

区块链是近些年来兴起的新的信息模型和网络交易系统技术,具有可以改变人类社会结构的巨大潜力。Python可以实现从区块、挖矿、钱包、通信到网站等所有区块链需求,开发方法如下。

(1)利用hashlib模块的SHA256实现工作量证明和挖矿。

(2)利用json和hashlib模块实现交易与区块的记录。

(3)利用rpc模块实现网络通信和节点功能。本书将在第四章进行介绍。3.数字水印版权保护是信息隐藏技术中的水印技术所试图解决的一个重要问题,这与密码学是一个完全不同的范畴。水印总体可以分为空间域和变换域的算法,Python通过第三方的工具库可以实现LSB、DCT、DWT等图像变换处理,渐次实现水印保护,典型应用开发如下。

(1)利用CV2模块进行LSB位平面数据替换。

(2)利用CV2、numpy模块实现DCT算法嵌入水印。

(3)利用CV2、Pywt、numpy模块实现DWT算法嵌入水印。本书将在第五章进行介绍。4.识别与认证

Python可以实现密码学的许多功能,包括公钥密码的实现,因此也兼具继承了密码认证的能力。此外,随着就Python生物特征识别的工具库的兴起,Python人脸识别和声纹识别(或说话人识别)类的技术也经常得到应用,典型应用开发如下。

(1)利用Hashlib、random模块实现挑战响应口令认证。

(2)利用Dlib的FaceRecognition模块实现基于人脸的识别认证。

(3)利用Librosa、sidekit等语音特征分析模块实现说话人识别认证。本书将在第六章进行介绍。5.主机安全主机系统是网络中信息和信息处理最为集中的部分,也是黑客攻击的重点之一。Python可以实现主机运维、恶意软件分析、漏洞发现与挖掘。

(1)主机运维可以采用Psutil库、Popen、PIPE、pywin32、paramiko、fabric与pexpect库,等对主机运行状态进行监控,然后通过分析发现异常,进而执行主机的安全隔离、告警、处置等。

(2)Python支持采用静态分析、动态分析两种手段对恶意软件进行分析,静态分析利用PEfile、IDA、clamAV等工具在软件未运行的状态下,分析程序是否存在恶意特征,动态分析利用Volatility开源内存取证框架、Windbg工具、Olldbg工具、以及沙箱对得到运行的软件进行恶意行为分析。

(3)漏洞挖掘发现系统或协议的漏洞,确保保护对象的可用性。Windows平台上很多工具都提供对软件的动静态调试,进而实现漏洞挖掘的Fuzzing和代码逆向跟踪,典型挖掘包括:采用PyEmu对恶意软件进行分析、采用ImmuityDebugger的Python脚本辅助PoC编写和二进制文件逆向、采用IDAPython插件的Python脚本进行自定义软件分析、采用PyDbg的x86指令仿真器Python脚本实现Fuzzing测试器等。本书将在第七章进行介绍。6.网络安全网络连接主机,也是黑客攻击的重点。为了实现网络的安全防护,可以采用网络嗅探、网络扫描、防火墙、入侵检测手段。Python本身自带socket模块,可以实现TCP和UDP网络交互,并且在第三方库的支持下也可以实现网络数据包的构造,因此支持主机活动性、端口和漏洞的扫描,典型应用开发思路如下。

(1)利用pylibpcap、pycapy、pypcap、impacket、scapy等库对网络中的数据实施嗅探。

(2)采用socket原始套接字模式或scapy构造ICMP数据包可以实现ICMP扫射主机扫描;采用socket流套接字或数据报套接字实现TCP全连接以及UDP的端口扫描,socket原始套接字模式或scapy实现半连接端口扫描;基于已知漏洞模板,采用json和requests模块实现目标主机的网络漏洞扫描。

(3)Python由于工作的权限级别太低,无法直接完成涉及防火墙的内核操作,但可以通过修改已有的防7火墙的配置表实现防火墙的功能,如:修改iptables实现Linux防火墙操作。

(4)与防火墙类似,可以通过修改已有的入侵检测系统(snort、pytbull等)的配置表实现入侵检测的功能,由于入侵检测系统更加侧重于数据分析,因此机器学习的方法非常适合于对入侵行为的分析,可以采用sklearn、Tensorflow等工具实施深度入侵分析。上述防病毒、防火墙、主机管控、网闸等方面的网络安全软件,需要内核级操作权限,因此对于扩展对象要求很高,目前这类成熟的Python开发平台还不多见。现有少量的Python在这些应用方面,更多发挥的是提高操作效率的作用。本书将在第八章进行介绍。7.内容安全内容安全能够屏蔽违规文本、图片、音频、视频等传播色情、低俗内容等不良信息(亦可用于舆情监控)。内容安全一般可以分为:文本、语音、图像的内容安全。由于Python可以实现良好的自然语言处理功能,因此可以对基于自然语言的文本数据进行过滤,实现内容安全(如果经过语音文本转换,这种技术也可以对语音数据内容实施过滤),开发方法如下。

(1)基于NLTK工具包,进行自然语言分析。

(2)基于Gensim工具包从文档中自励提取语义。

(3)基于Jieba实现中文分词工具和词性标注。

(4)联合keras、librosa、scipy、sklearn、sounddevice、tensorflow实现语音文字的转换。图像语义理解方面,Python内容安全也取得了很多进展,但目前还不十分成熟,本书将在第九章进行介绍。8

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论