版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、网络安全程序设计,本课程参考资料,必读书籍,必会工具,参考书,本课程对学生的要求,课程目的:在理解网络安全基本技术和原理、标准密码算法的基础上,提升网络安全编程实践能力,能进行Socket编程,学会使用流行的网络安全包CryptoAPI和OpenSSL进行网络安全编程。 课堂讲授+实验教学 课下实践(由于实验课时有限,需同学们课下花精力实践。) 平时成绩:考勤+课堂实验。 课程成绩:平时成绩(30%)和期末大作业(70%)。,本课程需具备的基础,网络安全基础知识 网络基本知识, TCP/IP协议, 安全威胁截获,篡改,抵赖,黑客攻击,病毒 安全需求-机密性,完整性,可用性,不可抵赖性。 密码学
2、基础 密码学基本概念,对称密码机制,公钥密码体制,密钥管理,消息鉴别与数字签名、数字证书与PKI的原理及应用。 主要的网络安全技术 安全扫描技术,网络安全协议,防火墙技术,入侵检测 主流编程语言 C, C+,第一章 概述-网络安全必要性,1. 技术层面 Internet已不再是计算机人员和军事部门进行科研的领域,而是变成了一个开发和使用信息资源的覆盖全球的信息海洋,覆盖了社会生活的方方面面,构成了一个信息社会的缩影。 安全性问题是困扰Internet用户发展的主要因素。计算机病毒、网络蠕虫的广泛传播,计算机网络黑客的恶意攻击,DDOS攻击的强大破坏力、网上窃密和犯罪的增多,使得网络安全性问题关
3、系到未来网络应用的深入发展。 随着云计算、新型通信网络出现,信息安全不断面临新挑战。,2. 社会层面 网络安全是一个关系到国家安全和社会稳定的重要问题。其重要性正随着全球信息化的步伐与日俱增。在我国,国家高度重视网络空间安全保障工作,网络信息安全上升至国家战略。 2013年11月12日 中国共产党中央国家安全委员会成立。 2014年2月2日中央网络安全和信息化领导小组成立,习近平指出网络安全和信息化是事关国家安全和国家发展、事关广大人民群众工作生活的重大战略问题。,2015年1月23日中共中央政治局召开会议,审议通过国家安全战略纲要,指出要做好各领域国家安全工作,大力推进国家安全各种保障能力建
4、设,把法治贯穿于维护国家安全的全过程。 2015年4月20日国家安全法(草案)二审稿增加了国家“建设国家网络与信息安全保障体系,提升网络与信息安全保护能力”、“维护国家网络空间主权”的规定。2015年7月1日,第十二届全国人民代表大会常务委员会第十五次会议通过新的国家安全法。,网络安全编程,网络安全本身理论性和实践性都很强,掌握了网络安全相关的基本概念、基本原理后可以运用到实际的工程中。 在实际应用中,需要针对实际应用环境开发一些特定应用程序以提供相应的安全服务,而这时掌握一些实用的网络安全编程工具就显得尤为重要。,几种常见网络安全开发包,1. CryptoAPI 2. OpenSSL 3.
5、Crypto+ 4. 网络数据包捕获开发包Libpcap和WinPcap, WireShark 5.网络入侵开发包 Libnids 6.防火墙开发包 Net 7.安全电子邮件开发包 Sendmail,网络安全程序设计的主要内容,网络安全程序设计的基础知识,具体包括:网络协议,操作系统,Socket编程以及Visual C+编程的核心技术。 根据密码学的经典算法,基于网络安全开发包Crypto,OpenSSL以及不使用网络安全开发包进行密码学编程。 网络扫描器的设计、防火墙和入侵检测系统设计。 应用系统安全编程,包括安全WEB程序设计和安全电子邮件编程。(根据课时可能进行调整。),网络安全程序设
6、计基础(一),1. 协议基础 - - OSI参考模型,OSI 7层模型数据传输,OSI 安全体系结构,TCP/IP模型,操作系统,1. Linux操作系统 2. Windows操作系统,网络安全组成 客户端安全,在客户端部分主要涉及具体用户使用网络的安全完全问题。例如,个人数据的安全性。用户把计算机连入网络后,其就是一个客户端。要保证个人数据的安全,需要建立良好的使用网络的习惯。还有一些比较常用的软件,例如文字处理软件、媒体播放器软件、电子邮件接收和阅读软件,也容易受到威胁。,网络安全组成服务器安全,服务器方面的安全性也至关重要,很多重要的数据都放在服务器里面。对于重要数据的保护则需要更加强大
7、的安全措施,例如使用专业的防火墙设备、入侵检测系统、安全扫描系统,针对特定服务器的保护系统。 最常用的客户端和服务器系统是Web 浏览器和Web 服务器系统,它们的安全性在网络安群内容中占据重要的地位,针对Web浏览器和Web服务器的攻击数量庞大,种类繁多,危害性也很大。,网络安全组成-网络设施安全,网络设施的安全保护重要的网络设备,例如路由器交换机等重要设备,防止由于故障例如停电以及其他自然灾害造成系统瘫痪、电源故障会造成设备断电,导致操作系统引导失败或数据信息丢失等。,套接字编程套接字概念,套接字(Socket)是用来实现主机和主机通信的一个接口,通过它可以完成主机间的通信操作,它屏蔽了底
8、层的协议,让用户能够实现各种类型的通信操作。它的出现,为网络应用程序的编写提供了极大的方便。它是网络通信中应用程序对应的进程和网络协议之间的接口。,进程与套接字,套接字是一个双向通信设备,可用于同一台主机上不同进程之间的通信,也可用于沟通位于不同主机的进程。套接字是所有进程间通信方法中唯一允许跨主机通信的方式。Internet 程序,如Te l n e t 、rlogin 、FTP 、talk 和万维网都是基于套接字的。,套接字主要参数,端口: 定义: 一种抽象的软件结构,应用程序通过系统调用与某端口建立连接后,传输层给该端口的数据都被相应的进程接收,相应的进程发给传输层的数据都通过该端口输出
9、 端口号: 一个整形标示符,来表示端口,取值为065535,1024以下的端口保留给预定义的服务 注意: TCP/IP传输层的两个协议TCP与UDP是完全独立的两个软件模块,因此各自端口独立,也就是说TCP/UDP可以拥有相同的端口号 IP 地址: 所谓IP地址就是给每个连接在Internet上的主机分配的一个32bit地址。按照TCP/IP协议规定,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节,套接字分类,(1)流套接字(SOCK_STREAM) 流套接字用于提供面向连接、可靠的数据传输服务。流套接字之所以能够实现可靠的数据服务,原因在于其使用了传输控制协议
10、,即TCP(The Transmission Control Protocol)协议。 (2)数据报套接字(SOCK_DGRAM) 数据报套接字提供了一种无连接的服务。数据报套接字使用UDP(User Datagram Protocol)协议进行数据的传输。由于数据报套接字不能保证数据传输的可靠性,对于有可能出现的数据丢失情况,需要在程序中做相应的处理。 (3)原始套接字(SOCK_RAW) 原始套接字(SOCKET_RAW)允许对较低层次的协议直接访问,比如IP、 ICMP协议,它常用于检验新的协议实现,或者访问现有服务中配置的新设备,,连接过程,客户机/服务器模式 在TCP/IP网络中两个
11、进程间的相互作用的主机模式是客户机/服务器模式(Client/Server model)。该模式的建立基于以下两点:1、非对等作用;2、通信完全是异步的。客户机/服务器模式在操作过程中采取的是主动请示方式: 首先服务器方要先启动,并根据请示提供相应服务:(过程如下) (1)打开一通信通道并告知本地主机,它愿意在某一个公认地址上接收客户请求。 (2)等待客户请求到达该端口。 (3)接收到重复服务请求,处理该请求并发送应答信号。 (4)返回第二步,等待另一客户请求 (5)关闭服务器。,客户方: (1)打开一通信通道,并连接到服务器所在主机的特定端口。 (2)向服务器发送服务请求报文,等待并接收应答
12、;继续提出请求 (3)请求结束后关闭通信通道并终止。 根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。,基本套接字,1. 创建套接字socket() 2. 指定本地地址bind() 3. 建立套接字连接connect()和accept() 4. 监听连接listen() 5. 数据传输send()与recv() 6. 多路复用select() 7. 关闭套接字closesocket(),WinSock编程相关函数 -Win32 API 相关套接字常用函数,1. 套接字版本协商 函数原型 int WSAStartup ( WO
13、RD wVersionRequested, LPWSADATA lpWSAData );,2.创建套接字,函数原型 SOCKET socket ( int af, int type, int protocol );,3.绑定端口(服务器),函数原型 int bind ( SOCKET s, const struct sockaddr FAR* name, int namelen );,4. 点分十进制转换成无符号长整形,函数原型 unsigned long inet_addr (const char FAR * cp ); 参数说明:cp 一个点分十进制的IP地址形式的字符串 返回值 一个对应
14、cp点分十进制的unsigned long类型的数值,5. 无符号长整形转换成点分十进制,函数原型 char FAR * inet_ntoa (struct in_addr in ); 参数说明in: 一个点分十进制的unsigned long类型的数值 返回值 一个对应in点分十进制的IP地址形式的字符串,6.主机字节顺序转换为网络字节顺序16位数值,函数原型 u_short htons (u_short hostshort ); 参数说明:hostshort一个以主机字节顺序表示的16位数值 返回值: 把一个u_short类型的值从主机字节顺序转换为网络字节顺序32位数值 函数原型 u_l
15、ong htonl (u_long hostlong ); 参数说明:hostlong:一个以主机字节顺序表示的32位数值 返回值: 把一个u_long类型的值从主机字节顺序转换为网络字节顺序,相关结构体及宏,struct WSAData WORD wVersion;/打算使用的Winsock版本号 WORD wHighVersion;/容纳的是现有的Winsock最高版本号,以高字节代表的是Winsock的副版本,低字节表示的是搞版本号 char szDescriptionWSADESCRIPTION_LEN+1; char szSystemStatusWSASYSSTATUS_LEN+1;
16、 /以下两个参数一般不设置它 unsigned short iMaxSockets;/同时最多可以打开多少套接字 unsigned short iMaxUdpDg;/数据报的最大长度 /同时最多可以打开套接字数目很大程度上和可用物理内存的多少有关 char FAR * lpVendorInfo; /这个参数Winsock实施方案有关的指定厂商信息预留的,任何一个Win32平台上都没有使用这个字段 ;,主要数据结构,地址结构 struct sockaddr unsigned short sa_family;/指定地址家族,对于TCP/IP协议的套接字,必须设置为AF_INET char sa_d
17、ata14;/ 仅仅表示要求一块内存分配区,启到占位作用,该区域中指定与协议相关的具体地址信息,由于实际要求的只是内存区,所以对于不同的协议家族,用不同的协议家族,用不同的结构来替换sockaddr ;,TCP/IP地址结构 struct sockaddr_in short sin_family;/指定地址家族,对于TCP/IP协议的套接字,必须设置为AF_INET unsigned short sin_port;/指定要分配给套接字的端口 struct in_addr sin_addr;/套接字的主机的IP地址 char sin_zero8;/一个填充占位符 ;/在TCP/IP编程中用这个结
18、构体来替换sockaddr结构体地址表示 struct in_addr union struct u_char s_b1,s_b2,s_b3,s_b4; S_un_b; struct u_short s_w1,s_w2; S_un_w; u_long S_addr; S_un; ;,(3)MAKEWORD宏 MAKEWORD(x,y) 作用:用于设置DWORD类型的版本号,x是高字节,y是低字节,基于消息套接字编程相关相关函数,1. 获得系统中安装的网络协议的相关信息 函数原型 int WSAEnumProtocols( LPINT lpiProtocols, LPWSAPROTOCOL_IN
19、FO lpProtocolBuffer, ILPDWORD lpdwBufferLength ),2. 注册网络事件 函数原型 int WSAAsyncSelect ( SOCKET s, HWND hWnd, unsigned int wMsg, long lEvent );,3. 创建套接字 函数原型 SOCKET WSASocket( int af, int type, int protocol, LPWSAPROTOCOL_INFO lpProtocolInfo, GROUP g, DWORD dwFlags );,MFC常用函数,初始化套接字 AfxSocketInit函数原型如下:
20、 BOOL AfxSocketInit(WSADATA* lpwsaData = NULL); 作用: MFC提供的创建套接字库的函数,TCP套接字相关函数,1. 监听请求(服务器) 函数原型 int listen ( SOCKET s, int backlog );,2.接收请求(服务器) 函数原型 SOCKET accept ( SOCKET s, struct sockaddr FAR* addr, int FAR* addrlen );,3.发送数据 函数原型 int send ( SOCKET s, const char FAR * buf, int len, int flags )
21、;,4.接收数据 函数原型 int recv ( SOCKET s, char FAR* buf, int len, int flags );,5.建立连接(客服端) 函数原型 int connect ( SOCKET s, const struct sockaddr FAR* name, int namelen );,UDP套接字相关函数,1.接收数据 函数原型 int recvfrom ( SOCKET s, char FAR* buf, int len, int flags, struct sockaddr FAR* from, int FAR* fromlen );,2.发送数据 函数
22、原型 int sendto ( SOCKET s, const char FAR * buf, int len, int flags, const struct sockaddr FAR * to, int tolen );,3.消息接收(基于消息机制) 函数原型 int WSARecvFrom( SOCKET s, LPWSABUF lpBuffers, DWORD dwBufferCount, LPDWORD lpNumberOfBytesRecvd, LPDWORD lpFlags, struct sockaddr FAR *lpFrom, LPINT lpFromlen, LPWSAOVERLAPPED lpOverlapped, LPWSAOVERLAPPED_COMPLETION_ROUTINE lpC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 信阳新县城镇公益性岗位招聘考试真题及答案
- 2025-2026年美业服务流程考核试卷
- 2026年北师大版高三物理选修3-1第九章原子核物理测试卷
- 2025-2026年陕西省北师大版高中化学选择性必修第11章化学计算习题
- 2025-2026年河北省人教版四年级英语下册第6单元语法练习题
- 储罐总体试验记录
- 2026年感悟信仰力量 勇担青春使命 - 中学长征主题教育讲话稿
- 山西省长治市第六中学校2025-2026学年七年级下学期7月期末考试语文试卷(含答案)
- 医疗机构门急诊医院感染管理标准(2026版)试题及答案
- 湖北省孝感市楚天协作体2026-2027学年高三上学期开学英语试题
- 2025-2026学年统编版七年级历史上册全册教案
- 第5课 古代希腊 课件(26张 内嵌视频)
- 金属尾矿综合利用专项规划(2026-2030年)
- 2026全球智能机器人行业市场深度分析及未来趋势与发展战略研究报告
- 向阳生长 向美而行-2026年秋季学期学校德育工作计划
- 新版2026年秋统编版小学道德与法治五年级上册(全册)教学设计
- 四年级语文上册阅读题18篇附答案2
- 2026-2030中国功率因数校正装置行业市场发展趋势与前景展望战略分析研究报告
- 护理心理与人文关怀
- (正式版)DB41∕T 1116-2015 《压力容器检验报告附图画法》
- DB53T 982.2-2020 林下中药材 三七生产技术规程 第2部分:林下种植
评论
0/150
提交评论