当前位置:龙翔文秘网 > 专题范文 > 教案设计 >

《计算机网络安全》课程的安全编程设计

| 浏览次数:

摘要:网络信息传输安全要求保证信息的身份认证性、完整性、机密性,主要通过TCP/IP上增加安全协议实现,具有一定的安全开发能力可以让开发者的网络应用系统更安全,也是高层次网络安全人员应该具有的能力。该文通过协作完成基于CryptoAPI和OpenSSL安全库的开发项目,提高学生对安全协议的理解。

关键词:CryptoAPI;OpenSSL;安全协议

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2014)23-5421-03

1 安全基础

计算机网络安全涉及计算机和网络,综合给出其定义:“保护计算机网络系统中的硬件、软件及其数据不受偶然或恶意原因而遭到破坏、更改、泄露,保障系统连续可靠地正常运行,网络服务不中断”,也即满足安全三元组认证性、完整性、机密性,以及不可否认性、抗抵赖性。信息遭受侵害的原因主要有两大方面,计算机系统技术和网络传输技术,对于计算机系统来说,各种系统内资源访问,共享是系统可用、高效的基础,但是又可能被恶意代码利用,如各种木马、病毒等;对于传输通信来说,会发生诸如信息窃听、篡改、重放、假冒等攻击,很大原因是由于TCP/IP协议本身的漏洞引起,而当前应用又必须建立在TCP/IP协议基础之上,可以采取协议各层次上加入身份认证防止假冒、完整性验证防止篡改、数字签名抗抵赖、加密防止窃听等。在实际的应用当中,一般采用防火墙、入侵检测系统、病毒检测技术等提高网络系统的安全性,采用SSL安全协议,IPSec安全协议,PKI公钥基础设施,PGP电子邮件安全等安全协议来提升TCP/IP协议的安全性。

2 教学现状

在网络安全的教学过程中,安全相关概念,基本原理,安全服务和机制的介绍,信息安全密码学基础,安全管理,安全配置等内容占据了课程大量的课时,对于课时不是足够多的学校,网络安全课程涉及的编程内容较少或者干脆不涉及,专门开设安全编程课程的高校较少。本校安全相关课程有信息安全基础和计算机网络安全两门课程,因此可以在计算机网络安全课程中对安全编程进行一些了解与实践。

从技术上来说,安全问题主要由系统和网络引起,因此针对安全的编程也可以分为两大类型,针对系统的安全编程可归结为恶意代码及其防治,主要内容包括系统编程,注册表操作,日志记录分析,操作系统,系统软件安全等内容,如缓冲区溢出,病毒,远程控制技术,浏览器安全等;针对网络传输安全的编程主要基于密码学与安全协议进行,目前开发趋于标准化,对于关注应用的人员来说可以从底层算法解脱出来,掌握一些实用的安全编程工具对提高安全编程能力显得很重要。

即使对于不从事开发工作的人,通过学习安全编程提高安全能力,也是很有好处的,使用工具过于浮浅,难以深入了解,难以跟上技术变化,而且工具的深入应用也需要扎实的基础,只是学习原理又显得有些枯燥和抽象。通过在已有库的基础上,手工组合模块或集成式的开发,可以加深对基本原理的理解,又不用花费大量时间精力于底层算法,适合于各种编程基础的学习者。

3 常见安全开发包

网络安全开发包的种类很多,实现功能也千差万别,下面介绍一些常见的网络安全开发包:

1) CryptoAPI: Microsoft提供的加密应用程序接口(Cryptography API),可以方便地在应用程序中加入强大的加密功能,而不必考虑基本的算法。CryptoAPI共有五部分组成:简单消息函数(Simplified Message Functions)、低层消息函数(Low-level Message Functions)、基本加密函数(Base Cryptographic Functions)、证书编解码函数(Certificate Encode/Decode Functions)和证书库管理函数(Certificate Store Functions)。其中前三者可用于对敏感信息进行加密或签名处理,可保证网络传输信息的私有性;后两者通过对证书的使用,可保证网络信息交流中的认证性。

2) OpenSSL: OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。SSL协议提供的安全信道有三个特性:保密性、完整性、安全验证。Apache使用它加密HTTPS,OpenSSH使用它加密SSH,它是一个多用途的、跨平台的密码工具。OpenSSL采用C语言作为开发语言,这使得OpenSSL具有优秀的跨平台性能,OpenSSL支持Linux、Windows、BSD、Mac、VMS等平台,这使得OpenSSL应用广泛。OpenSSL整个软件包大概可以分成三个主要的功能部分:SSL协议库、命令行应用程序以及密码算法库,其中算法使用了EVP封装了加密算法,提供统一的接口,大大提高了开发效率和代码的可重用性能。

3) CryptoAPI++: 采用标准C++编写而成,实现了多种公开密钥加密算法、对称加密算法、数字签名算法、信息摘要算法以及其它相关算法,适用于常用的操作系统和开发平台,实现功能比CryptoAPI少一些。

4) Cryptix: Sun公司发布的采用java语言的关于JCE(Java Cryptography Extension)的开放源码的API实现

5) 网络数据包捕获开发包Libpcap和Winpcap: libpcap是unix/linux平台下的网络数据包捕获函数包,大多数网络监控软件都以它为基础,Winpcap是libpcap的Windows版本。

6) Libnids: Libnids是一个用于网络入侵检测开发的专业编程接口,它使用了Libpcap所以它具有捕获数据包的功能。同时,Libnids提供了TCP数据流重组功能,所以对于分析基于TCP协议的各种协议Libnids都能胜任.Libnids还提供了对IP分片进行重组的功能,以及端口扫描检测和异常数据包检测功能。

由于本校没有专门的网络安全编程课,没有足够的课时,因此只能选取其中的一些内容教学。信息传输安全的机密性、认证性、验证性是非常重要的概念,也是其它安全协议和安全服务的基础,因此选取了应用广泛的CryptoAPI和OpenSSL作为我们的研究对象,它们包含内容丰富,功能强大。

4 教学实际情况

在本校实际的教学过程中,本部分内容采用小组协作的方式完成编程项目。要求采用CryptoAPI或OpenSSL开发一个局域网内的通信系统,基本功能包括聊天短信息的发送和文件的传送,要求使用CryptoAPI或OpenSSL安全库函数进行开发,使用各种加解密算法,能保证信息的完整性、机密性、认证性,提供密钥分发与管理,证书的颁发等功能。每三人一个小组,要提交完整的项目文档、开发日志,提供源码及可执行程序,周期为三周时间,不专门占用课时,利用课余时间,同时还要求选择CryptoAPI的小组和选择OpenSSL的小组结成友好小组,完成本组的同时,需要向合作组介绍自己的工作内容,相互讨论工程计划,使得完成一个工程的同时,对另一种技术也有较多了解,开发日志和讨论内容等也作为重要的评价依据,加强对项目过程的控制。各小组的成果集中演示,组员自评,小组互评,教师点评等多种评价结合,极大提高学生的参与度。

Windows下进行OpenSSL编程的主要步骤:

1) 安装ActivePerl-5.8.6.811-MSWin32-x86-122208.msi。阅读openssl开发包中的install.w32 、编译openssl;

2) 熟悉OpenSSL编程接口,编写通信的server和client端,功能包括信息传输和安全算法的应用;

3) 将所需要的文件放到源代码目录,调试并运行程序,验证进行安全通信的过程及身份认证方式

对于CryptoAPI编程,最终效果和OpenSSL类似,也是提供一个server端和Client端实现安全通信,主要步骤:

1) 获取CSP句柄

2) 创建公私密钥对,包括签名、会话密钥、传输会话密钥用到的密钥对。

3) 加解密,对数据进行各种处理,包括数字信封,数字签名等。

经过两期的教学过程,学生普遍反映课程视野得到开阔,对网络安全的认识也得到了提高,本以为网络安全就是优化网络结构,配置防火墙、入侵检测系统,通过各种安全工具检测安全漏洞等内容,没想到还有一个广阔的领域存在,本部分的技术也很适合嵌入到各种网络应用系统中,网络安全已经上升为国家战略。当然也有一些存在的不足,比如有的项目组安全处理的过程不够透明密钥的处理不是软件自动完成,需要使用者进行一些指令的执行或者用户交互选择,给用户的使用造成困扰;还有一些小组组完成了短消息或文件的处理及发送,而没有同时完成二种功能;密钥管理随意化,开发进度控制不够严格等,这些问题还有待于进一步规范化。

5 总结

安全编程可以算是传统计算机网络安全课程的补充内容,其开发与普通的网络应用程序有明显差别,学生通过查阅资料、讨论等方式协作完成一个有应用价值的安全开发项目,极大促进了他们的学习热情,提高了探索式学习的能力,同时加深了对安全协议的理解,当然也提升了编程能力,还丰富了网络安全课程的课程形式。同时,还有助于学生对陌生内容的恐惧感的消除,不少同学从该领域完全不熟,对名词都感到陌生,经过努力完成了一个实用的工具,增强了面对未知领域的信心。作为一名网络管理员或者网络安全员,不能满足于各种工具的使用和设备的配置,还应该对原理、开发有一定了解。

参考文献:

[1] 陈卓,阮鸥,沈剑.网络安全编程与实践[M].长沙:国防工业出版社,2008,8.

[2] 陈波,张碧云.基于OpenSSL的C/S安全通信[J].计算机安全与维护,2007,8.

[3] 裴照君,段哲民,王海涛.基于Microsoft CryptoAPI框架下的数据安全通信系统开发[J].微型电脑应用 2008,10.

[4] 敷彦铭,陈攀.以实验为中心的网络安全课程教学改革探索[J].软件导刊,2012,6.

[5] 周敏.计算机网络安全实验教学改革[J].实验技术与管理 ,2013,6.

[6] 袁素春,王育民.李纲OpenSSL程序设计[J].计算机安全,2005,10.


推荐访问:网络安全 编程 课程 计算机 设计

热门排行

学习十九届六中全会精神主题班会教案

学习十九届六中全会精神主题班会教案一、班会主题学习十九届六中全会精神二、班会背景01年11月8至11日,中国共产党第十九届中央委员会第六次全体会议(简称:十...

基于HOLT芯片的1553B总线通信接口的设计

摘要:MIL-STD-1553B是一种具有高可靠传输特性的总线协议,在航空航天等领域占据着十分重要的

基于MATLAB,GUI坐标转换软件设计与实现

【摘要】MATLAB软件是以矩阵为单位进行数据的运算与处理,MATLAB的程序设计过程中,对象的句柄

基于Verilog HDL的DDS设计与仿真

摘要:详细阐述利用QuartusⅡ实现DDS(直接数字频率合成器)模块的方法和步骤。首先分析DDS的

小学六年级语文《表里生物》教案

《表里的生物》主要讲了小时候的“我”认为能发出声音的都是活物,表现了童年的“我”对事物有着强烈的好奇心,是个善于观察、爱思考的孩子。下面是小编为大家整...

农业局廉政党课暨主题教育活动党课教案

农业局廉政党课暨主题教育活动党课教案农业局廉政党课暨主题教育活动党课教案发表时间:011-7-710:13:为“讲党性、重品行、作表率”主题教育活动的廉政党课教案农...

民族纹样在金属材料器械中的设计与应用

【关键词】民族纹样;金属材料;设计;应用我国民族纹样和图案的发展历史非常悠久,是我国劳动人民在长期实

大相对孔径非制冷红外光学系统无热化设计

打开文本图片集摘要:针对当前军工红外成像仪器小型化及宽温度适应性的需要,采用光学被动式无热化方法对8

党课教案,党史【精选推荐】

党课教案》简介:各位老师,各位同学,下午好,首先非常的感谢各位党员老师能在百忙当中来听我的党课,同时也欢迎业余党校的《党课教案》正文开始>>各位老师,各...

霍尔效应教案设计

教学目的:1 使学生理解掌握霍尔效应的内容;2 通过霍尔效应的教学过程,使学生初步了解科学研究的方法