网络安全程序设计第一讲_第1页
网络安全程序设计第一讲_第2页
网络安全程序设计第一讲_第3页
网络安全程序设计第一讲_第4页
网络安全程序设计第一讲_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

网络安全程序设计,上海电力学院计算机科学与技术学院,本课程参考资料,必读书籍,必会工具,参考书,本课程对学生的要求,课程目的:在理解网络安全基本技术和原理、标准密码算法的基础上,提升网络安全编程实践能力,能进行Socket编程,学会使用流行的网络安全包CryptoAPI和OpenSSL进行网络安全编程。课堂讲授+实验教学课下实践(由于实验课时有限,需同学们课下花精力实践。)平时成绩:考勤+课堂实验。课程成绩:平时成绩(30%)和期末大作业(70%)。,本课程需具备的基础,网络安全基础知识网络基本知识,TCP/IP协议,安全威胁截获,篡改,抵赖,黑客攻击,病毒安全需求-机密性,完整性,可用性,不可抵赖性。密码学基础密码学基本概念,对称密码机制,公钥密码体制,密钥管理,消息鉴别与数字签名、数字证书与PKI的原理及应用。主要的网络安全技术安全扫描技术,网络安全协议,防火墙技术,入侵检测主流编程语言C,C+,第一章概述-网络安全必要性,1.技术层面Internet已不再是计算机人员和军事部门进行科研的领域,而是变成了一个开发和使用信息资源的覆盖全球的信息海洋,覆盖了社会生活的方方面面,构成了一个信息社会的缩影。安全性问题是困扰Internet用户发展的主要因素。计算机病毒、网络蠕虫的广泛传播,计算机网络黑客的恶意攻击,DDOS攻击的强大破坏力、网上窃密和犯罪的增多,使得网络安全性问题关系到未来网络应用的深入发展。随着云计算、新型通信网络出现,信息安全不断面临新挑战。,2.社会层面网络安全是一个关系到国家安全和社会稳定的重要问题。其重要性正随着全球信息化的步伐与日俱增。在我国,国家高度重视网络空间安全保障工作,网络信息安全上升至国家战略。2013年11月12日中国共产党中央国家安全委员会成立。2014年2月2日中央网络安全和信息化领导小组成立,习近平指出网络安全和信息化是事关国家安全和国家发展、事关广大人民群众工作生活的重大战略问题。,2015年1月23日中共中央政治局召开会议,审议通过国家安全战略纲要,指出要做好各领域国家安全工作,大力推进国家安全各种保障能力建设,把法治贯穿于维护国家安全的全过程。2015年4月20日国家安全法(草案)二审稿增加了国家“建设国家网络与信息安全保障体系,提升网络与信息安全保护能力”、“维护国家网络空间主权”的规定。2015年7月1日,第十二届全国人民代表大会常务委员会第十五次会议通过新的国家安全法。,网络安全编程,网络安全本身理论性和实践性都很强,掌握了网络安全相关的基本概念、基本原理后可以运用到实际的工程中。在实际应用中,需要针对实际应用环境开发一些特定应用程序以提供相应的安全服务,而这时掌握一些实用的网络安全编程工具就显得尤为重要。,几种常见网络安全开发包,1.CryptoAPI2.OpenSSL3.Crypto+4.网络数据包捕获开发包Libpcap和WinPcap,WireShark5.网络入侵开发包Libnids6.防火墙开发包NetFileter7.安全电子邮件开发包Sendmail,网络安全程序设计的主要内容,网络安全程序设计的基础知识,具体包括:网络协议,操作系统,Socket编程以及VisualC+编程的核心技术。根据密码学的经典算法,基于网络安全开发包Crypto,OpenSSL以及不使用网络安全开发包进行密码学编程。网络扫描器的设计、防火墙和入侵检测系统设计。应用系统安全编程,包括安全WEB程序设计和安全电子邮件编程。(根据课时可能进行调整。),网络安全程序设计基础(一),1.协议基础-OSI参考模型,OSI7层模型数据传输,OSI安全体系结构,TCP/IP模型,操作系统,1.Linux操作系统2.Windows操作系统,网络安全组成客户端安全,在客户端部分主要涉及具体用户使用网络的安全完全问题。例如,个人数据的安全性。用户把计算机连入网络后,其就是一个客户端。要保证个人数据的安全,需要建立良好的使用网络的习惯。还有一些比较常用的软件,例如文字处理软件、媒体播放器软件、电子邮件接收和阅读软件,也容易受到威胁。,网络安全组成服务器安全,服务器方面的安全性也至关重要,很多重要的数据都放在服务器里面。对于重要数据的保护则需要更加强大的安全措施,例如使用专业的防火墙设备、入侵检测系统、安全扫描系统,针对特定服务器的保护系统。最常用的客户端和服务器系统是Web浏览器和Web服务器系统,它们的安全性在网络安群内容中占据重要的地位,针对Web浏览器和Web服务器的攻击数量庞大,种类繁多,危害性也很大。,网络安全组成-网络设施安全,网络设施的安全保护重要的网络设备,例如路由器交换机等重要设备,防止由于故障例如停电以及其他自然灾害造成系统瘫痪、电源故障会造成设备断电,导致操作系统引导失败或数据信息丢失等。,套接字编程套接字概念,套接字(Socket)是用来实现主机和主机通信的一个接口,通过它可以完成主机间的通信操作,它屏蔽了底层的协议,让用户能够实现各种类型的通信操作。它的出现,为网络应用程序的编写提供了极大的方便。它是网络通信中应用程序对应的进程和网络协议之间的接口。,进程与套接字,套接字是一个双向通信设备,可用于同一台主机上不同进程之间的通信,也可用于沟通位于不同主机的进程。套接字是所有进程间通信方法中唯一允许跨主机通信的方式。Internet程序,如Telnet、rlogin、FTP、talk和万维网都是基于套接字的。,套接字主要参数,端口:定义:一种抽象的软件结构,应用程序通过系统调用与某端口建立连接后,传输层给该端口的数据都被相应的进程接收,相应的进程发给传输层的数据都通过该端口输出端口号:一个整形标示符,来表示端口,取值为065535,1024以下的端口保留给预定义的服务注意:TCP/IP传输层的两个协议TCP与UDP是完全独立的两个软件模块,因此各自端口独立,也就是说TCP/UDP可以拥有相同的端口号IP地址:所谓IP地址就是给每个连接在Internet上的主机分配的一个32bit地址。按照TCP/IP协议规定,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节,套接字分类,(1)流套接字(SOCK_STREAM)流套接字用于提供面向连接、可靠的数据传输服务。流套接字之所以能够实现可靠的数据服务,原因在于其使用了传输控制协议,即TCP(TheTransmissionControlProtocol)协议。(2)数据报套接字(SOCK_DGRAM)数据报套接字提供了一种无连接的服务。数据报套接字使用UDP(UserDatagramProtocol)协议进行数据的传输。由于数据报套接字不能保证数据传输的可靠性,对于有可能出现的数据丢失情况,需要在程序中做相应的处理。(3)原始套接字(SOCK_RAW)原始套接字(SOCKET_RAW)允许对较低层次的协议直接访问,比如IP、ICMP协议,它常用于检验新的协议实现,或者访问现有服务中配置的新设备,,连接过程,客户机/服务器模式在TCP/IP网络中两个进程间的相互作用的主机模式是客户机/服务器模式(Client/Servermodel)。该模式的建立基于以下两点:1、非对等作用;2、通信完全是异步的。客户机/服务器模式在操作过程中采取的是主动请示方式:首先服务器方要先启动,并根据请示提供相应服务:(过程如下)(1)打开一通信通道并告知本地主机,它愿意在某一个公认地址上接收客户请求。(2)等待客户请求到达该端口。(3)接收到重复服务请求,处理该请求并发送应答信号。(4)返回第二步,等待另一客户请求(5)关闭服务器。,客户方:(1)打开一通信通道,并连接到服务器所在主机的特定端口。(2)向服务器发送服务请求报文,等待并接收应答;继续提出请求(3)请求结束后关闭通信通道并终止。根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。,基本套接字,1.创建套接字socket()2.指定本地地址bind()3.建立套接字连接connect()和accept()4.监听连接listen()5.数据传输send()与recv()6.多路复用select()7.关闭套接字closesocket(),WinSock编程相关函数-Win32API相关套接字常用函数,1.套接字版本协商函数原型intWSAStartup(WORDwVersionRequested,LPWSADATAlpWSAData);,2.创建套接字,函数原型SOCKETsocket(intaf,inttype,intprotocol);,3.绑定端口(服务器),函数原型intbind(SOCKETs,conststructsockaddrFAR*name,intnamelen);,4.点分十进制转换成无符号长整形,函数原型unsignedlonginet_addr(constcharFAR*cp);参数说明:cp一个点分十进制的IP地址形式的字符串返回值一个对应cp点分十进制的unsignedlong类型的数值,5.无符号长整形转换成点分十进制,函数原型charFAR*inet_ntoa(structin_addrin);参数说明in:一个点分十进制的unsignedlong类型的数值返回值一个对应in点分十进制的IP地址形式的字符串,6.主机字节顺序转换为网络字节顺序16位数值,函数原型u_shorthtons(u_shorthostshort);参数说明:hostshort一个以主机字节顺序表示的16位数值返回值:把一个u_short类型的值从主机字节顺序转换为网络字节顺序32位数值函数原型u_longhtonl(u_longhostlong);参数说明:hostlong:一个以主机字节顺序表示的32位数值返回值:把一个u_long类型的值从主机字节顺序转换为网络字节顺序,相关结构体及宏,structWSADataWORDwVersion;/打算使用的Winsock版本号WORDwHighVersion;/容纳的是现有的Winsock最高版本号,以高字节代表的是Winsock的副版本,低字节表示的是搞版本号charszDescriptionWSADESCRIPTION_LEN+1;charszSystemStatusWSASYSSTATUS_LEN+1;/以下两个参数一般不设置它unsignedshortiMaxSockets;/同时最多可以打开多少套接字unsignedshortiMaxUdpDg;/数据报的最大长度/同时最多可以打开套接字数目很大程度上和可用物理内存的多少有关charFAR*lpVendorInfo;/这个参数Winsock实施方案有关的指定厂商信息预留的,任何一个Win32平台上都没有使用这个字段;,主要数据结构,地址结构structsockaddrunsignedshortsa_family;/指定地址家族,对于TCP/IP协议的套接字,必须设置为AF_INETcharsa_data14;/仅仅表示要求一块内存分配区,启到占位作用,该区域中指定与协议相关的具体地址信息,由于实际要求的只是内存区,所以对于不同的协议家族,用不同的协议家族,用不同的结构来替换sockaddr;,TCP/IP地址结构structsockaddr_inshortsin_family;/指定地址家族,对于TCP/IP协议的套接字,必须设置为AF_INETunsignedshortsin_port;/指定要分配给套接字的端口structin_addrsin_addr;/套接字的主机的IP地址charsin_zero8;/一个填充占位符;/在TCP/IP编程中用这个结构体来替换sockaddr结构体地址表示structin_addrunionstructu_chars_b1,s_b2,s_b3,s_b4;S_un_b;structu_shorts_w1,s_w2;S_un_w;u_longS_addr;S_un;,(3)MAKEWORD宏MAKEWORD(x,y)作用:用于设置DWORD类型的版本号,x是高字节,y是低字节,基于消息套接字编程相关相关函数,1.获得系统中安装的网络协议的相关信息函数原型intWSAEnumProtocols(LPINTlpiProtocols,LPWSAPROTOCOL_INFOlpProtocolBuffer,ILPDWORDlpdwBufferLength),2.注册网络事件函数原型intWSAAsyncSelect(SOCKETs,HWNDhWnd,unsignedintwMsg,longlEvent);,3.创建套接字函数原型SOCKETWSASocket(intaf,inttype,intprotocol,LPWSAPROTOCOL_INFOlpProtocolInfo,GROUPg,DWORDdwFlags);,MFC常用函数,初始化套接字AfxSocketInit函数原型如下:BOOLAfxSocketInit(WSADATA*lpwsaData=NULL);作用:MFC提供的创建套接字库的函数,TCP套接字相关函数,1.监听请求(服务器)函数原型intlisten(SOCKETs,intbacklog);,2.接收请求(服务器)函数原型SOCKETaccept(SOCKETs,structsockaddrFAR*addr,intFAR*addrlen);,3.发送数据函数原型intsend(SOCKETs,constcharFAR*buf,intlen,intflags);,4.接收数据函数原型intrecv(SOCKETs,charFAR*buf,intlen,intflags);,5.建立连接(客服端)函数原型intconnect(SOCKETs,conststructsockaddrFAR*name,intnamelen);,UDP套接字相关函数,1.接收数据函数原型intrecvfrom(SOCKETs,charFAR*buf,intlen,intflags,structsockaddrFAR*from,intFAR*fromlen);,2.发送数据函数原型intsendto(SOCKETs,constcharFAR*buf,intlen,intflags,conststructsockaddrFAR*to,inttolen);,3.消息接收(基于消息机制)函数原型intWSARecvFrom(SOCKETs,LPWSABUFlpBuffers,DWORDdwBufferCount,LPDWORDlpNumberOfBytesRecvd,LPDWORDlpFlags,structsockaddrFAR*lpFrom,LPINTlpFromlen,LPWSAOVERLAPPEDlpOverlapped,LPWSAOVERL

温馨提示

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

评论

0/150

提交评论