本书以网络安全程序设计基础和主要技术为核心内容。重点介绍密码学编程,基于OpenSSL开发包的网络安全编程,网络扫描器设计,防火墙设与实现,入侵检测设计与实现以应用系统安全编程。
本书从网络空间安全的必要性以及对创新人才培养的需求出发,阐述网络安全程序设计的编程基础与核心技术,对每个技术的讲述包括基本概念、基本原理以及编程实例,将基础知识与编程实践结合,这对启发学生的思考以及提升动手能力是十分重要的。从而,更能深入理解每种安全机制的实质,也有助于学生理论联系实际地根据实际应用掌握网络安全编程技术。
前言
随着互联网应用的日益广泛,围绕网络信息的获取、使用、传输引发的安全问题越来越显得重要,网络空间安全也上升为国家战略,实践能力是网络空间安全创新人才培养的核心之一。本书是为高等学校的本科生、研究生提供的网络安全程序设计教材。网络空间安全涉及数学、计算机科学与技术、信息与通信工程等多个学科,已形成了一个相对独立的教学和研究领域。网络安全程序设计对学生的要求相对比较高,需要高级语言编程、操作系统、计算机网络、密码学与信息安全等基础知识以及一些工具软件的应用。本书从网络空间安全的必要性以及对创新人才培养的需求出发,阐述网络安全程序设计的编程基础与核心技术,对每个技术的讲述包括基本概念、基本原理及编程实例,将基础知识与编程实践结合,这对启发学生的思考以及提升动手能力是十分重要的。从而学生更能深入理解每种安全机制的实质,也有助于学生理论联系实际地根据实际应用掌握网络安全编程技术。全书共8章。第1章概要介绍网络空间安全的必要性、网络空间安全对人才培养的新要求以及网络安全程序设计相关知识; 第2章介绍网络安全编程基础,包括Socket编程以及VC 网络安全编程; 第3章阐述密码学基础知识,基于经典密码算法的安全编程实例; 在此基础上,第4章讲述基于网络安全开发包OpenSSL的编程实践; 第5章介绍网络扫描器的设计,包括ICMP扫描、TCP扫描、木马扫描等基本原理与编程实现; 第6章介绍了防火墙技术以及基于包过滤技术的防火墙实现; 第7章介绍入侵检测系统原理、技术与实现; 第8章介绍两种实际应用系统编程,包括基于OpenSSL的安全Web服务器设计实现及安全电子邮件编程。本书的建议学时为48学时,其中课堂讲解部分为24学时,上机实验24学时。根据各专业的不同教学需求,以上学时安排和内容可根据实际需要进行调整。本书由李红娇担任主编与统稿工作,李晋国、李婧担任副主编。李红娇负责编写第1~4章。第5章和第6章内容由李婧负责编写,第7章和第8章内容由李晋国负责编写。许智、陈晶晶、郭政伟参与了本书的编辑及程序代码调试工作。本书由上海电力学院顾春华教授主审。本教材编写得到了上海市信息安全管理重点实验室开放课题(编号AGK2015005)以及上海市科委地方能力建设项目(No.15110500700)资助。在编写过程中,也参考了一批技术文献、著作、教材及网络资源,为本书的编写奠定了宝贵的基础,在此一并表示衷心的感谢。由于编者水平有限,书中难免有疏漏和不足之处,恳请专家和读者批评指正。编者2016年12月于上海
目录
第1章绪论
1.1网络空间安全的必要性
1.1.1技术层面
1.1.2网络安全与国家战略
1.2网络空间安全学科研究的主要内容
1.3网络空间安全对人才培养的新要求
1.3.1我国网络空间安全面临的形势
1.3.2网络空间安全一级学科
1.3.3网络空间安全创新人才培养体系
1.4网络安全程序设计基础知识
1.4.1网络协议
1.4.2操作系统
1.4.3网络安全组成
1.4.4网络安全开发包
1.5本书内容安排
小结
思考题
第2章网络安全编程基础
2.1套接字编程
2.1.1套接字概念
2.1.2连接过程
2.1.3基本套接字
2.1.4典型过程图
2.2WinSock编程相关函数
2.2.1Win32 API 相关套接字常用函数
2.2.2基于消息套接字编程相关函数
2.2.3MFC常用函数
2.2.4TCP套接字相关函数
2.2.5UDP套接字相关函数
2.2.6编写套接字通信
2.3Visual C 网络安全编程
2.3.1获取系统实时信息
2.3.2进程处理
2.3.3线程处理
2.3.4定时器处理
2.3.5注册表处理
2.3.6获取网络接口信息
小结
思考题
第3章密码学编程
3.1密码学基本概念
3.1.1对称密码
3.1.2公钥密码
3.1.3哈希函数
3.1.4数字签名
3.1.5随机数与伪随机数
3.2基于SHA1算法的文件完整性校验
3.2.1SHA1算法
3.2.2基于SHA1的文件完整性检验
3.3基于RSA算法实现数据加解密
3.3.1RSA算法原理
3.3.2基于RSA算法实现数据加解密
小结
思考题
第4章基于OpenSSL的网络安全编程
4.1OpenSSL 概述
4.1.1背景技术
4.1.2OpenSSL的特点
4.1.3OpenSSL的功能
4.1.4OpenSSL支持的算法
4.1.5OpenSSL应用程序
4.1.6OpenSSL的Engine机制
4.1.7OpenSSL安装方法
4.2OpenSSL EVP编程
4.2.1概述
4.2.2源码结构
4.2.3对称算法以及base64编码编程
4.2.4公钥算法编程
4.2.5哈希摘要算法
4.2.6消息鉴别码HMAC
4.2.7签名和验证算法
小结
思考题
第5章网络扫描器设计
5.1基本知识
5.1.1端口
5.1.2端口扫描
5.2ICMP扫描
5.2.1ICMP协议
5.2.2ICMP扫描过程
5.3TCP扫描
5.3.1TCP协议
5.3.2TCP扫描过程
5.3.3TCP扫描分类
5.4UDP扫描
5.5木马扫描
5.6漏洞扫描
5.6.1漏洞扫描技术
5.6.2漏洞扫描分类及技术
5.7实例编程端口扫描实现
5.7.1ICMP扫描实现
5.7.2TCP扫描实现
5.7.3UDP扫描实现
5.7.4木马扫描实现
5.7.5隐秘扫描实现
小结
思考题
第6章防火墙设计与实现
6.1防火墙技术
6.1.1防火墙概念
6.1.2防火墙的技术原理
6.1.3防火墙的应用
6.1.4防火墙的局限性
6.2实例编程实现包过滤防火墙
6.2.1基于协议的数据包过滤实现
6.2.2基于源IP地址的数据包过滤实现
6.2.3基于TCP通信目的端口过滤实现
6.2.4包过滤防火墙的编程实现
小结
思考题
第7章入侵检测模型设计与实现
7.1入侵检测技术
7.1.1入侵检测的基本原理
7.1.2入侵检测的主要分析模型和方法
7.1.3入侵检测系统的体系结构
7.1.4入侵检测系统的发展
7.2实例编程基于KDD数据集及KMeans建立入侵检测模型
7.2.1KDD CUP 99数据集
7.2.2KMeans算法原理
7.2.3KMeans算法代码实现
小结
思考题
第8章应用系统安全编程
8.1基于OpenSSL的安全Web服务器程序
8.1.1基础知识
8.1.2基于OpenSSL的安全Web编程实现
8.2安全电子邮件编程
8.2.1基础知识
8.2.2编程训练实现安全电子邮件传输
小结
思考题
参考文献