APP下载

基于任务驱动的网络安全身份认证案例教学研究与实施

2020-10-14王凤英周玫仇乐贾立鹏姜倩玉

网络安全技术与应用 2020年10期
关键词:口令身份案例

◆王凤英 周玫 仇乐 贾立鹏 姜倩玉

基于任务驱动的网络安全身份认证案例教学研究与实施

◆王凤英1周玫2仇乐3贾立鹏1姜倩玉1

(1. 山东理工大学 山东 255000;2.淄博高新区实验中学 山东 255088;3.淄博职业学院 山东 255314)

网络安全课程对理论和应用都有很高的要求,在有限的时间内完成教学目标要求,对教和学都提出了挑战。这门课的许多任务复杂度高,学生独立完成难度很大。针对这类问题,基于任务驱动,教师在案例进行的每一个环节进行适度提示,起到引领的作用。教师从案例分析、方案设计,到实施,既给学生一定的启示,又留有独立思考的空间。教师在每个环节提示程度的把握,要综合考量学生的学业水平,以提升学生分析问题、解决问题的能力为目标。本文以Web系统基于用户知道什么的身份认证为例,兼顾可实现性、可使用性、安全性等特点,实现抗重放攻击、字典攻击等安全身份认证。

安全身份认证;抗重放攻击;抗字典攻击;任务驱动;教学案例

1 引言

高校的网络安全课程课时少、任务重,对理论和实践应用都有很高的要求。每个关键知识点,在现实中都能找到具体应用,与现实应用密切结合。在有限的时间内完成教学目标要求,对教和学都提出了挑战,采用传统的授课方式很难解决实际的教学条件和教学目标之间的矛盾[1]。

2020年上半年,在新冠病毒肆虐下,线上教学大行其道,任务驱动式案例教学大有用武之地。基于任务驱动的案例教学,就是先有任务目标,在任务目标驱动下,以案例的形式,完成知识传授的过程[2-3]。

由于网络安全课的许多任务复杂度高,学生独立完成难度很大;或者有些任务,看起来复杂度不高,但学生真正实施起来,会出现考虑问题不周全、安全强度不够、无从下手等问题。针对这些问题,在任务驱动下,教师在案例进行的每一个环节进行适度提示,起到引导和引领的作用[4]。一步步从分析问题、设计方案,到实施方案,既给学生一定的启示,又留有独立思考的空间。案例教学中,教师既不能取而代之,也不能让学生难以企及。教师在案例教学的每个环节,都要综合考量学生的学业水平,以提升学生分析问题、解决问题的能力为导向,把握提示程度的深浅。本文以Web系统的身份认证为任务驱动,兼顾可实现性、可使用性、安全性等特点,以基于用户知道什么为前提条件,结合HASH函数、验证码、salt盐值等,实现抗重放攻击、字典攻击等安全身份认证的案例教学。

2 身份认证基础知识

在有安全需求的Web信息系统中,身份认证是系统的基本要求,也是Web系统的第一道安全防线,是防范入侵的门户。身份认证有多种方式,其安全强度也不尽相同,具体可归结为4类:(1)用户知道什么(预先知道),(2)用户拥有什么(拥有物件),(3)用户是什么(用户本身的特征)、(4)用户的数字证书。这四种身份认证方式各具特色、各有千秋。(1)用户知道什么,可以是预先设置的口令等;(2)用户拥有什么,可以是USB key等硬件;(3)用户是什么,是一种基于生物特征的身份认证,像指纹、虹膜、人脸等;(4)数字证书则由一个可信的第三方签发[5]。

考虑安全性、易实现等需求,对四种身份认证的方式分析如下:第(1)种方式,简单易实现、安全级别较低,是使用最多的身份认证方法之一;第(2)种方式,安全级别较高,但需要物理硬件,实现难度较大;第(3)种方式,安全级别高,但要结合一些仪器设备实现,实现难度更大;第(4)种方式实现通过数字证书实现身份认证,安全级别高,但需要的软硬件资源很多,实现难度很大。

3 布置任务及案例描述

在教学任务的驱动下,通过案例教学的构建与应用,能提升学生理论结合实践的水平[6-7]。

3.1 教师布置任务

在学习完身份认证基础知识点后,老师布置教学任务如下。软件公司要开发一个Web信息系统的身份认证模块,要求抗重放攻击和抗字典攻击。任务硬件环境:除了计算机外,没有额外的硬件。请您完成下列任务:(1)实现用户注册模块;(2)实现用户登录模块;(3)实现安全的身份认证。

3.2 案例描述

在初步了解案例教学任务的前提下,教师引领学生解读案例要求,并进一步细化,完成案例描述如下。

您作为一个公司的软件开发人员,要完成这样一项任务,就这个任务作为案例进行实施。案例描述:(1)实现用户注册模块:分别考虑客户端和服务器端);(2)实现用户登录模块(分别考虑客户端和服务器端);(3)实现安全的身份认证(具有抗重放攻击和抗字典攻击的能力)。

4 案例分析

教师从案例分析阶段开始提示并引导学生,在每个环节提示程度的把握上显得尤为重要,既考验老师的教学水平,也是老师自我提升的过程。提示中,既给学生一定的启示,又留有足够的独立思考的空间。

依据案例描述,教师针对实现的身份认证模块要解决的几个问题,进行引导提示:(1)四种基本身份认证方式中哪种适合;(2)怎样设计才能具有抗重放攻击的能力;(3)怎样设计才能具有抗字典攻击的能力。

学生根据教师的3个提示,针对案例分别进行一一分析如下。

(1)身份认证方式的选择。由于除了计算机外,没有额外的硬件。在这种情况下,第2节描述的四种身份认证方式中,只有第(1)种满足条件,因为其他三种都需要额外的硬件,显然不满足条件。

(2)解决抗重放攻击。所谓重放攻击,就是攻击者通过网络获取用户网络传输的关键数据后,重复利用,以达到攻击系统的目的。若传输口令明文不做其他处理,攻击者就能在通信线路上窃听,显然不能抵御重放攻击。若传输口令的散列值不做其他处理,黑客虽然不知道口令的原文,但是他可以截获口令的散列值,直接把散列值发送给验证服务器,也能验证通过,这种方法也不能抵御重放攻击。

为了抵御重放攻击采用如下方法:服务器首先生成一个随机数并发给用户,用户把口令散列值与该随机数连接或异或后再用单向散列函数处理一遍,把最后的散列值发给服务器。如图1所示,服务器对存储的口令散列值同样处理,然后与用户传过来的散列值比较,若相同就认为有效,若不同就认为无效。由于每次生成的散列值各不相同,就避免了重放攻击。随机数也可以用时间来代替。

图1 传输口令和随机数的散列值

对于使用用户名和口令进行身份认证的方式,人本身的记忆力决定了口令的长度和随机性都不是太好,目前情况下,这种简单的身份认证方式只能用于对安全性要求不高的场合。

(3)抗字典攻击。在服务器端对口令通过散列运算后保存,这是相当安全的方法。但是,黑客可能通过非法途径绕过一些安全检测,获取了含有口令的文件,黑客就有可能利用字典攻击分析口令。在开发系统时确定一个盐值salt,让口令的散列值和一个salt进行运算, 能实现抗字典攻击。

5 案例解决方案

要实现基于用户知道什么的身份认证,教师要引导学生细化模块,应包括两个模块: 注册模块和登录模块。下面教师要引领学生将案例分析中的3个疑问,结合注册模块和登录模块,分别给出解决方案流程。

5.1 注册模块实施方案

教师进一步给学生引导提示:注册模块实施方案流程中包括的元素;客户端和服务器端分别完成的操作;流程的顺序。在把这几个问题搞明白之后,学生根据案例分析,画出注册模块实施流程如图2所示。

图2 注册模块流程图

注册时,在服务器端,采用HASH函数SHA-1对口令password进行运算,然后将计算结果与盐值salt进行异或运算,进行的计算如式(1)。

Hs=H(password)Åsalt (1)

然后将式(1)的结果保存到数据库。选择盐值salt时,尽量选160bit的,如果salt的位数小于160,则在后面补多个0,以使位数恰好是160bit;如果salt的位数大于160,则从左向右截取160bit即可。

5.2 登录模块实施方案

教师进一步给学生引导提示:登录模块实施方案流程中包括的元素;客户端和服务器端分别完成的操作;流程的顺序。在把这几个问题搞明白之后,学生根据案例分析,画出登录模块实施流程如图3所示。

(1)登录时客户端进行的运算

客户端收到服务器端发来的随机数/验证码R ,用户输入用户名和口令P,进行计算如式(2)。

HH'= H(H(P)ÅR ) (2)

(2)登录时服务器端进行的运算

根据客户端发来的用户名,与数据库中保存的用户名比对,若相同,首先从数据库中取出对应的Hs,然后进行计算如式(3)。

HH =H(HsÅsaltÅR) (3)

将客户端发来的HH'与HH进行比较,若HH'==HH,则判断为合法用户,否则为非法用户(不合规用户)。

图3 登录模块流程图

6 案例实施及总结

6.1 案例实施

案例实施中,教师需要引导学生注意控件的校验,进而提示:“用户名”、“口令”等控件是否需要校验;不考虑校验会带来什么样的严重后果。

针对教师的提示,学生就会豁然开朗:只有对控件校验才能限定一些无效输入,同时避免出现溢出的严重错误。

学生根据案例实施方案进行编码,注册模块实现后,用户注册界面如图4所示。

图4 用户注册界面

学生根据案例实施实施方案进行编码,登录模块实现后,用户登录界面如图5所示。

图5 用户登录界面

实施过程中的主要代码如下。

(1)SHA-1加密算法核心代码段:

public static String SHA (String plainText) { byte[] secretBytes = null;

try {secretBytes = MessageDigest.getInstance("SHA ").digest(plainText.getBytes());}

catch (NoSuchAlgorithmException e) {throw new RuntimeException("No SHA Algorithm!");}

String SHAcode = new BigInteger(1, secretBytes).toString(16);

for (int i = 0; i < 32 - SHAcode.length(); i++) {SHAcode = "0" + SHAcode;}

return SHAcode;}

(2)SHA-1加密算法核心代码段:

public static String shaEncode(String inStr) throws Exception { MessageDigest sha = null;

try { sha=MessageDigest.getInstance("SHA");

} catch (Exception e) { System.out.println(e.toString());

e.printStackTrace();

return ""; }

byte[] byteArray = inStr.getBytes("UTF-8");

byte[] SHABytes = sha.digest(byteArray);

StringBuffer hexValue = new StringBuffer();

for (int i = 0; i < SHABytes.length; i++)

{ int val = ((int) SHABytes[i]) & 0xff;

if (val < 16) {hexValue.append("0"); } hexValue.append(Integer.toHexString(val));}

return hexValue.toString();}

6.2 案例总结

由于硬件条件的限制,只能选择安全性较低的基于用户知道什么的身份认证方式。身份认证中,服务器产生的随机数R,只用一次,因此能抵御重放攻击;在服务器端采用HASH函数SHA-1对口令password和盐值salt进行运算,由此抵御字典攻击。由于增加了抗重放攻击字典攻击,使本案例实施的认证方式更安全。

本文的教学案例作为一项个案研究,旨在超越个案的局限,触类旁通。在网络安全课程教学实践中,已经大面积开展教师引领下的案例教学,形成了有一定推广价值的研究结果。

7 结语

教师在案例进行的每一个环节进行提示,起到引导和引领的作用,一步步分析问题、设计方案、到实施方案。这样一来,能使学生少犯错误、少走弯路。适当的提示、提醒,能起到醍醐灌顶的效果。但提示性的信息要适度,要留有足够的想象空间让学生独立思考,以培养学生创新性、研究性思维。这种适度合节的“放手”与“搭桥”,体现了教师在具体情境下的实践性知识,而对师生关系和角色定位的感知促成了教师实践性知识的生成[8]。

学生通过案例学习,将身份认证的理论学习转化为动手实施,锻炼开发Web软件的能力。这样的案例教学方式,能使学生在任务驱动下,从案例描述中,分析案例要解决的问题,思考设计方案,进而实施方案。选出的案例,就发生在日常应用中,身临其境,更有现实意义。

[1]蔡晓萱.高中语文教学目标的70年探索[J].当代教育实践与教学研究,2020(09):71-72.

[2]徐新.基于案例驱动的数据结构课程教学方法研究[J].计算机教育,2019(03):44-47.

[3]敖谦, 刘华,贾善德.混合学习下“案例任务”驱动教学模式研究[J].现代教育技术,2013,23(03):122-126.

[4]许立新.美国“引领教育者”教师领导力框架探析[J].教师发展研究,2019,3(03):117-124.

[5]王凤英, 程震,李彩虹.电子商务安全与信用评价[M]. 吉林:吉林大学出版社,2017,10

[6]刘红梅.任务驱动式案例教学法的构建与应用[J].江苏高教,2016(04):71-73.

[7]李敏.任务驱动式案例教学在《笔译》课程教学改革中的探索与实践[J].高教学刊,2019(03):130-132.

[8]魏戈.课堂教学情境下教师实践性知识生成机制研究[J].教师发展研究,2018,2(03):66-73.

教育部产学合作协同育人项目(201702048084);淄博市校城融合发展计划项目(2018ZBXC295);山东理工大学研究生教育教学改革研究项目

猜你喜欢

口令身份案例
案例4 奔跑吧,少年!
TWO VILLAS IN ONE CEDIA 2020案例大赛获奖案例
Bespoke Art Deco Media Room CEDIA 2020案例大赛获奖案例
高矮胖瘦
口 令
好玩的“反口令”游戏
跟踪导练(三)(5)
妈妈的N种身份
身份案(下)
随机变量分布及统计案例拔稿卷