◆王鳳英 周玫 仇樂(lè) 賈立鵬 姜倩玉
基于任務(wù)驅(qū)動(dòng)的網(wǎng)絡(luò)安全身份認(rèn)證案例教學(xué)研究與實(shí)施
◆王鳳英1周玫2仇樂(lè)3賈立鵬1姜倩玉1
(1. 山東理工大學(xué) 山東 255000;2.淄博高新區(qū)實(shí)驗(yàn)中學(xué) 山東 255088;3.淄博職業(yè)學(xué)院 山東 255314)
網(wǎng)絡(luò)安全課程對(duì)理論和應(yīng)用都有很高的要求,在有限的時(shí)間內(nèi)完成教學(xué)目標(biāo)要求,對(duì)教和學(xué)都提出了挑戰(zhàn)。這門(mén)課的許多任務(wù)復(fù)雜度高,學(xué)生獨(dú)立完成難度很大。針對(duì)這類問(wèn)題,基于任務(wù)驅(qū)動(dòng),教師在案例進(jìn)行的每一個(gè)環(huán)節(jié)進(jìn)行適度提示,起到引領(lǐng)的作用。教師從案例分析、方案設(shè)計(jì),到實(shí)施,既給學(xué)生一定的啟示,又留有獨(dú)立思考的空間。教師在每個(gè)環(huán)節(jié)提示程度的把握,要綜合考量學(xué)生的學(xué)業(yè)水平,以提升學(xué)生分析問(wèn)題、解決問(wèn)題的能力為目標(biāo)。本文以Web系統(tǒng)基于用戶知道什么的身份認(rèn)證為例,兼顧可實(shí)現(xiàn)性、可使用性、安全性等特點(diǎn),實(shí)現(xiàn)抗重放攻擊、字典攻擊等安全身份認(rèn)證。
安全身份認(rèn)證;抗重放攻擊;抗字典攻擊;任務(wù)驅(qū)動(dòng);教學(xué)案例
高校的網(wǎng)絡(luò)安全課程課時(shí)少、任務(wù)重,對(duì)理論和實(shí)踐應(yīng)用都有很高的要求。每個(gè)關(guān)鍵知識(shí)點(diǎn),在現(xiàn)實(shí)中都能找到具體應(yīng)用,與現(xiàn)實(shí)應(yīng)用密切結(jié)合。在有限的時(shí)間內(nèi)完成教學(xué)目標(biāo)要求,對(duì)教和學(xué)都提出了挑戰(zhàn),采用傳統(tǒng)的授課方式很難解決實(shí)際的教學(xué)條件和教學(xué)目標(biāo)之間的矛盾[1]。
2020年上半年,在新冠病毒肆虐下,線上教學(xué)大行其道,任務(wù)驅(qū)動(dòng)式案例教學(xué)大有用武之地?;谌蝿?wù)驅(qū)動(dòng)的案例教學(xué),就是先有任務(wù)目標(biāo),在任務(wù)目標(biāo)驅(qū)動(dòng)下,以案例的形式,完成知識(shí)傳授的過(guò)程[2-3]。
由于網(wǎng)絡(luò)安全課的許多任務(wù)復(fù)雜度高,學(xué)生獨(dú)立完成難度很大;或者有些任務(wù),看起來(lái)復(fù)雜度不高,但學(xué)生真正實(shí)施起來(lái),會(huì)出現(xiàn)考慮問(wèn)題不周全、安全強(qiáng)度不夠、無(wú)從下手等問(wèn)題。針對(duì)這些問(wèn)題,在任務(wù)驅(qū)動(dòng)下,教師在案例進(jìn)行的每一個(gè)環(huán)節(jié)進(jìn)行適度提示,起到引導(dǎo)和引領(lǐng)的作用[4]。一步步從分析問(wèn)題、設(shè)計(jì)方案,到實(shí)施方案,既給學(xué)生一定的啟示,又留有獨(dú)立思考的空間。案例教學(xué)中,教師既不能取而代之,也不能讓學(xué)生難以企及。教師在案例教學(xué)的每個(gè)環(huán)節(jié),都要綜合考量學(xué)生的學(xué)業(yè)水平,以提升學(xué)生分析問(wèn)題、解決問(wèn)題的能力為導(dǎo)向,把握提示程度的深淺。本文以Web系統(tǒng)的身份認(rèn)證為任務(wù)驅(qū)動(dòng),兼顧可實(shí)現(xiàn)性、可使用性、安全性等特點(diǎn),以基于用戶知道什么為前提條件,結(jié)合HASH函數(shù)、驗(yàn)證碼、salt鹽值等,實(shí)現(xiàn)抗重放攻擊、字典攻擊等安全身份認(rèn)證的案例教學(xué)。
在有安全需求的Web信息系統(tǒng)中,身份認(rèn)證是系統(tǒng)的基本要求,也是Web系統(tǒng)的第一道安全防線,是防范入侵的門(mén)戶。身份認(rèn)證有多種方式,其安全強(qiáng)度也不盡相同,具體可歸結(jié)為4類:(1)用戶知道什么(預(yù)先知道),(2)用戶擁有什么(擁有物件),(3)用戶是什么(用戶本身的特征)、(4)用戶的數(shù)字證書(shū)。這四種身份認(rèn)證方式各具特色、各有千秋。(1)用戶知道什么,可以是預(yù)先設(shè)置的口令等;(2)用戶擁有什么,可以是USB key等硬件;(3)用戶是什么,是一種基于生物特征的身份認(rèn)證,像指紋、虹膜、人臉等;(4)數(shù)字證書(shū)則由一個(gè)可信的第三方簽發(fā)[5]。
考慮安全性、易實(shí)現(xiàn)等需求,對(duì)四種身份認(rèn)證的方式分析如下:第(1)種方式,簡(jiǎn)單易實(shí)現(xiàn)、安全級(jí)別較低,是使用最多的身份認(rèn)證方法之一;第(2)種方式,安全級(jí)別較高,但需要物理硬件,實(shí)現(xiàn)難度較大;第(3)種方式,安全級(jí)別高,但要結(jié)合一些儀器設(shè)備實(shí)現(xiàn),實(shí)現(xiàn)難度更大;第(4)種方式實(shí)現(xiàn)通過(guò)數(shù)字證書(shū)實(shí)現(xiàn)身份認(rèn)證,安全級(jí)別高,但需要的軟硬件資源很多,實(shí)現(xiàn)難度很大。
在教學(xué)任務(wù)的驅(qū)動(dòng)下,通過(guò)案例教學(xué)的構(gòu)建與應(yīng)用,能提升學(xué)生理論結(jié)合實(shí)踐的水平[6-7]。
在學(xué)習(xí)完身份認(rèn)證基礎(chǔ)知識(shí)點(diǎn)后,老師布置教學(xué)任務(wù)如下。軟件公司要開(kāi)發(fā)一個(gè)Web信息系統(tǒng)的身份認(rèn)證模塊,要求抗重放攻擊和抗字典攻擊。任務(wù)硬件環(huán)境:除了計(jì)算機(jī)外,沒(méi)有額外的硬件。請(qǐng)您完成下列任務(wù):(1)實(shí)現(xiàn)用戶注冊(cè)模塊;(2)實(shí)現(xiàn)用戶登錄模塊;(3)實(shí)現(xiàn)安全的身份認(rèn)證。
在初步了解案例教學(xué)任務(wù)的前提下,教師引領(lǐng)學(xué)生解讀案例要求,并進(jìn)一步細(xì)化,完成案例描述如下。
您作為一個(gè)公司的軟件開(kāi)發(fā)人員,要完成這樣一項(xiàng)任務(wù),就這個(gè)任務(wù)作為案例進(jìn)行實(shí)施。案例描述:(1)實(shí)現(xiàn)用戶注冊(cè)模塊:分別考慮客戶端和服務(wù)器端);(2)實(shí)現(xiàn)用戶登錄模塊(分別考慮客戶端和服務(wù)器端);(3)實(shí)現(xiàn)安全的身份認(rèn)證(具有抗重放攻擊和抗字典攻擊的能力)。
教師從案例分析階段開(kāi)始提示并引導(dǎo)學(xué)生,在每個(gè)環(huán)節(jié)提示程度的把握上顯得尤為重要,既考驗(yàn)老師的教學(xué)水平,也是老師自我提升的過(guò)程。提示中,既給學(xué)生一定的啟示,又留有足夠的獨(dú)立思考的空間。
依據(jù)案例描述,教師針對(duì)實(shí)現(xiàn)的身份認(rèn)證模塊要解決的幾個(gè)問(wèn)題,進(jìn)行引導(dǎo)提示:(1)四種基本身份認(rèn)證方式中哪種適合;(2)怎樣設(shè)計(jì)才能具有抗重放攻擊的能力;(3)怎樣設(shè)計(jì)才能具有抗字典攻擊的能力。
學(xué)生根據(jù)教師的3個(gè)提示,針對(duì)案例分別進(jìn)行一一分析如下。
(1)身份認(rèn)證方式的選擇。由于除了計(jì)算機(jī)外,沒(méi)有額外的硬件。在這種情況下,第2節(jié)描述的四種身份認(rèn)證方式中,只有第(1)種滿足條件,因?yàn)槠渌N都需要額外的硬件,顯然不滿足條件。
(2)解決抗重放攻擊。所謂重放攻擊,就是攻擊者通過(guò)網(wǎng)絡(luò)獲取用戶網(wǎng)絡(luò)傳輸?shù)年P(guān)鍵數(shù)據(jù)后,重復(fù)利用,以達(dá)到攻擊系統(tǒng)的目的。若傳輸口令明文不做其他處理,攻擊者就能在通信線路上竊聽(tīng),顯然不能抵御重放攻擊。若傳輸口令的散列值不做其他處理,黑客雖然不知道口令的原文,但是他可以截獲口令的散列值,直接把散列值發(fā)送給驗(yàn)證服務(wù)器,也能驗(yàn)證通過(guò),這種方法也不能抵御重放攻擊。
為了抵御重放攻擊采用如下方法:服務(wù)器首先生成一個(gè)隨機(jī)數(shù)并發(fā)給用戶,用戶把口令散列值與該隨機(jī)數(shù)連接或異或后再用單向散列函數(shù)處理一遍,把最后的散列值發(fā)給服務(wù)器。如圖1所示,服務(wù)器對(duì)存儲(chǔ)的口令散列值同樣處理,然后與用戶傳過(guò)來(lái)的散列值比較,若相同就認(rèn)為有效,若不同就認(rèn)為無(wú)效。由于每次生成的散列值各不相同,就避免了重放攻擊。隨機(jī)數(shù)也可以用時(shí)間來(lái)代替。
圖1 傳輸口令和隨機(jī)數(shù)的散列值
對(duì)于使用用戶名和口令進(jìn)行身份認(rèn)證的方式,人本身的記憶力決定了口令的長(zhǎng)度和隨機(jī)性都不是太好,目前情況下,這種簡(jiǎn)單的身份認(rèn)證方式只能用于對(duì)安全性要求不高的場(chǎng)合。
(3)抗字典攻擊。在服務(wù)器端對(duì)口令通過(guò)散列運(yùn)算后保存,這是相當(dāng)安全的方法。但是,黑客可能通過(guò)非法途徑繞過(guò)一些安全檢測(cè),獲取了含有口令的文件,黑客就有可能利用字典攻擊分析口令。在開(kāi)發(fā)系統(tǒng)時(shí)確定一個(gè)鹽值salt,讓口令的散列值和一個(gè)salt進(jìn)行運(yùn)算, 能實(shí)現(xiàn)抗字典攻擊。
要實(shí)現(xiàn)基于用戶知道什么的身份認(rèn)證,教師要引導(dǎo)學(xué)生細(xì)化模塊,應(yīng)包括兩個(gè)模塊: 注冊(cè)模塊和登錄模塊。下面教師要引領(lǐng)學(xué)生將案例分析中的3個(gè)疑問(wèn),結(jié)合注冊(cè)模塊和登錄模塊,分別給出解決方案流程。
教師進(jìn)一步給學(xué)生引導(dǎo)提示:注冊(cè)模塊實(shí)施方案流程中包括的元素;客戶端和服務(wù)器端分別完成的操作;流程的順序。在把這幾個(gè)問(wèn)題搞明白之后,學(xué)生根據(jù)案例分析,畫(huà)出注冊(cè)模塊實(shí)施流程如圖2所示。
圖2 注冊(cè)模塊流程圖
注冊(cè)時(shí),在服務(wù)器端,采用HASH函數(shù)SHA-1對(duì)口令password進(jìn)行運(yùn)算,然后將計(jì)算結(jié)果與鹽值salt進(jìn)行異或運(yùn)算,進(jìn)行的計(jì)算如式(1)。
Hs=H(password)?salt (1)
然后將式(1)的結(jié)果保存到數(shù)據(jù)庫(kù)。選擇鹽值salt時(shí),盡量選160bit的,如果salt的位數(shù)小于160,則在后面補(bǔ)多個(gè)0,以使位數(shù)恰好是160bit;如果salt的位數(shù)大于160,則從左向右截取160bit即可。
教師進(jìn)一步給學(xué)生引導(dǎo)提示:登錄模塊實(shí)施方案流程中包括的元素;客戶端和服務(wù)器端分別完成的操作;流程的順序。在把這幾個(gè)問(wèn)題搞明白之后,學(xué)生根據(jù)案例分析,畫(huà)出登錄模塊實(shí)施流程如圖3所示。
(1)登錄時(shí)客戶端進(jìn)行的運(yùn)算
客戶端收到服務(wù)器端發(fā)來(lái)的隨機(jī)數(shù)/驗(yàn)證碼R ,用戶輸入用戶名和口令P,進(jìn)行計(jì)算如式(2)。
HH'= H(H(P)?R ) (2)
(2)登錄時(shí)服務(wù)器端進(jìn)行的運(yùn)算
根據(jù)客戶端發(fā)來(lái)的用戶名,與數(shù)據(jù)庫(kù)中保存的用戶名比對(duì),若相同,首先從數(shù)據(jù)庫(kù)中取出對(duì)應(yīng)的Hs,然后進(jìn)行計(jì)算如式(3)。
HH =H(Hs?salt?R) (3)
將客戶端發(fā)來(lái)的HH'與HH進(jìn)行比較,若HH'==HH,則判斷為合法用戶,否則為非法用戶(不合規(guī)用戶)。
圖3 登錄模塊流程圖
案例實(shí)施中,教師需要引導(dǎo)學(xué)生注意控件的校驗(yàn),進(jìn)而提示:“用戶名”、“口令”等控件是否需要校驗(yàn);不考慮校驗(yàn)會(huì)帶來(lái)什么樣的嚴(yán)重后果。
針對(duì)教師的提示,學(xué)生就會(huì)豁然開(kāi)朗:只有對(duì)控件校驗(yàn)才能限定一些無(wú)效輸入,同時(shí)避免出現(xiàn)溢出的嚴(yán)重錯(cuò)誤。
學(xué)生根據(jù)案例實(shí)施方案進(jìn)行編碼,注冊(cè)模塊實(shí)現(xiàn)后,用戶注冊(cè)界面如圖4所示。
圖4 用戶注冊(cè)界面
學(xué)生根據(jù)案例實(shí)施實(shí)施方案進(jìn)行編碼,登錄模塊實(shí)現(xiàn)后,用戶登錄界面如圖5所示。
圖5 用戶登錄界面
實(shí)施過(guò)程中的主要代碼如下。
(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();}
由于硬件條件的限制,只能選擇安全性較低的基于用戶知道什么的身份認(rèn)證方式。身份認(rèn)證中,服務(wù)器產(chǎn)生的隨機(jī)數(shù)R,只用一次,因此能抵御重放攻擊;在服務(wù)器端采用HASH函數(shù)SHA-1對(duì)口令password和鹽值salt進(jìn)行運(yùn)算,由此抵御字典攻擊。由于增加了抗重放攻擊字典攻擊,使本案例實(shí)施的認(rèn)證方式更安全。
本文的教學(xué)案例作為一項(xiàng)個(gè)案研究,旨在超越個(gè)案的局限,觸類旁通。在網(wǎng)絡(luò)安全課程教學(xué)實(shí)踐中,已經(jīng)大面積開(kāi)展教師引領(lǐng)下的案例教學(xué),形成了有一定推廣價(jià)值的研究結(jié)果。
教師在案例進(jìn)行的每一個(gè)環(huán)節(jié)進(jìn)行提示,起到引導(dǎo)和引領(lǐng)的作用,一步步分析問(wèn)題、設(shè)計(jì)方案、到實(shí)施方案。這樣一來(lái),能使學(xué)生少犯錯(cuò)誤、少走彎路。適當(dāng)?shù)奶崾?、提醒,能起到醍醐灌頂?shù)男Ч5崾拘缘男畔⒁m度,要留有足夠的想象空間讓學(xué)生獨(dú)立思考,以培養(yǎng)學(xué)生創(chuàng)新性、研究性思維。這種適度合節(jié)的“放手”與“搭橋”,體現(xiàn)了教師在具體情境下的實(shí)踐性知識(shí),而對(duì)師生關(guān)系和角色定位的感知促成了教師實(shí)踐性知識(shí)的生成[8]。
學(xué)生通過(guò)案例學(xué)習(xí),將身份認(rèn)證的理論學(xué)習(xí)轉(zhuǎn)化為動(dòng)手實(shí)施,鍛煉開(kāi)發(fā)Web軟件的能力。這樣的案例教學(xué)方式,能使學(xué)生在任務(wù)驅(qū)動(dòng)下,從案例描述中,分析案例要解決的問(wèn)題,思考設(shè)計(jì)方案,進(jìn)而實(shí)施方案。選出的案例,就發(fā)生在日常應(yīng)用中,身臨其境,更有現(xiàn)實(shí)意義。
[1]蔡曉萱.高中語(yǔ)文教學(xué)目標(biāo)的70年探索[J].當(dāng)代教育實(shí)踐與教學(xué)研究,2020(09):71-72.
[2]徐新.基于案例驅(qū)動(dòng)的數(shù)據(jù)結(jié)構(gòu)課程教學(xué)方法研究[J].計(jì)算機(jī)教育,2019(03):44-47.
[3]敖謙, 劉華,賈善德.混合學(xué)習(xí)下“案例任務(wù)”驅(qū)動(dòng)教學(xué)模式研究[J].現(xiàn)代教育技術(shù),2013,23(03):122-126.
[4]許立新.美國(guó)“引領(lǐng)教育者”教師領(lǐng)導(dǎo)力框架探析[J].教師發(fā)展研究,2019,3(03):117-124.
[5]王鳳英, 程震,李彩虹.電子商務(wù)安全與信用評(píng)價(jià)[M]. 吉林:吉林大學(xué)出版社,2017,10
[6]劉紅梅.任務(wù)驅(qū)動(dòng)式案例教學(xué)法的構(gòu)建與應(yīng)用[J].江蘇高教,2016(04):71-73.
[7]李敏.任務(wù)驅(qū)動(dòng)式案例教學(xué)在《筆譯》課程教學(xué)改革中的探索與實(shí)踐[J].高教學(xué)刊,2019(03):130-132.
[8]魏戈.課堂教學(xué)情境下教師實(shí)踐性知識(shí)生成機(jī)制研究[J].教師發(fā)展研究,2018,2(03):66-73.
教育部產(chǎn)學(xué)合作協(xié)同育人項(xiàng)目(201702048084);淄博市校城融合發(fā)展計(jì)劃項(xiàng)目(2018ZBXC295);山東理工大學(xué)研究生教育教學(xué)改革研究項(xiàng)目