范潔 李冬冬 劉宇棟 王可敬
摘要:選課系統(tǒng)在各大高校中的應(yīng)用非常普遍,選課數(shù)據(jù)大多明文存儲,存在數(shù)據(jù)泄露的風(fēng)險(xiǎn)?;贑lient/Server架構(gòu)模型設(shè)計(jì)并實(shí)現(xiàn)了一款安全的選課系統(tǒng)軟件,在客戶端運(yùn)用AES算法和BASE64編碼相結(jié)合的技術(shù)保證了用戶數(shù)據(jù)的機(jī)密性,采用MySQL作為數(shù)據(jù)庫,采用Java JDBC接口來實(shí)現(xiàn)客戶端和后臺數(shù)據(jù)庫服務(wù)器的連接。該系統(tǒng)實(shí)現(xiàn)了選課過程中所產(chǎn)生數(shù)據(jù)的安全存儲和安全傳輸。
關(guān)鍵詞:選課系統(tǒng);AES算法;BASE64編碼;安全存儲;數(shù)據(jù)庫
中圖分類號:TP309 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2018)26-0056-03
Abstract: Course selection system is widely used in universities,most of the course selection data is stored in plaintext, the risk of data leakage exist. Based on the Client/Server architecture model, the safe course selection system software was designed and implemented. In the client program, the confidentiality of users data was guaranteed by the Combined using of AES cipher algorithm and BASE64 coding, MySQL was used as the database and the Java JDBC interface was used to establish the connection between the client program and backstage database server. The system realized the secure storage and secure transmission of data which generated in the course selecting process.
Key words:course selection system; AES algorithm; BASE64 coding; secure storage; database
1 背景
目前,我國各高校教務(wù)管理基本實(shí)現(xiàn)信息化,教學(xué)管理模式依托計(jì)算機(jī)網(wǎng)絡(luò)也在不斷的發(fā)展變化。利用高校成熟的校園網(wǎng)建立一套安全的網(wǎng)上選課系統(tǒng),可以有效提升學(xué)校的教育服務(wù)質(zhì)量。各高校目前使用的選課系統(tǒng)多為委托第三方開發(fā),能滿足基本的教學(xué)需要,但是沒有考慮到選課系統(tǒng)在使用過程中面臨的數(shù)據(jù)安全存儲和安全傳輸?shù)葐栴}。該文在充分調(diào)研高校選課系統(tǒng)業(yè)務(wù)需求的基礎(chǔ)上,提出了高校選課系統(tǒng)的安全需求,并采用對稱加密技術(shù)、BASE64編碼技術(shù)設(shè)計(jì)并實(shí)現(xiàn)了安全選課系統(tǒng),實(shí)現(xiàn)了數(shù)據(jù)的安全存儲和安全傳輸。
2 相關(guān)安全技術(shù)
2.1 AES 算法
AES(Advanced Encryption Standard)算法是美國國家標(biāo)準(zhǔn)技術(shù)研究所提出的一種對稱加密算法,具有安全、高效、易用等優(yōu)點(diǎn)。AES為分組密碼,把明文分成若干長度相等的組,每次加密一組數(shù)據(jù),直到加密完整個(gè)明文。在AES標(biāo)準(zhǔn)規(guī)范中,分組長度只能是128位即每個(gè)分組為16個(gè)字節(jié)。密鑰的長度可以使用128位、192位或256位。密鑰的長度不同,推薦的加密輪數(shù)也不同[1]。
該文選擇AES-128對選課系統(tǒng)中錄入和更新的數(shù)據(jù)進(jìn)行加密,使用的密鑰長度為128位,加密輪數(shù)為10輪。AES的加密公式為C = E(K,P),在加密函數(shù)E中,會執(zhí)行一個(gè)輪函數(shù),并且執(zhí)行10次這個(gè)輪函數(shù),這個(gè)輪函數(shù)的前9次執(zhí)行的操作是一樣的,只有第10次有所不同。即一個(gè)明文分組會被加密10輪。
2.2 BASE64 編碼
對于任意的二進(jìn)制文件,可使用Base64編碼轉(zhuǎn)換,編碼后任意格式的字節(jié)流被編碼為可打印的ASCII字符,其基本原理是連續(xù)的3個(gè)輸入字節(jié)映射為4個(gè)6位值輸出,并且用可打印的字符來表示這些6位值。6位組的二進(jìn)制代碼共有64種不同的值,從0~63。用A表示0,用B表示1,即0~25的數(shù)字可用大寫字母A~Z表示,26~51的數(shù)字可用小寫字母a~z表示,52至61的數(shù)字用數(shù)字0~9表示,最后用+表示62,用/表示63。=作為填充字符[4]。該文選擇Base64編碼對加密后的數(shù)據(jù)進(jìn)行編碼轉(zhuǎn)換后,再進(jìn)行網(wǎng)絡(luò)傳輸和存儲。
3 安全選課系統(tǒng)的設(shè)計(jì)
3.1 系統(tǒng)整體設(shè)計(jì)
C/S架構(gòu)模式的安全選課系統(tǒng)是為了滿足學(xué)生用戶,教師用戶和管理員用戶這三類人的工作學(xué)習(xí)需求。
1) 學(xué)生用戶是安全選課系統(tǒng)的主要需求群體,需要完成選課,查課、退課等操作。
2) 教師用戶是安全選課系統(tǒng)的另一大需求群體,需要能查詢自己所教授課程的信息、課程的選課情況,實(shí)現(xiàn)對學(xué)生成績的管理等。
3) 管理員用戶是整個(gè)系統(tǒng)中功能最多的用戶,負(fù)責(zé)管理學(xué)生信息、課程信息、教師信息。需要實(shí)現(xiàn)對學(xué)生信息、教師信息、課程信息的增加、刪除、修改、查詢等相關(guān)的操作,負(fù)責(zé)對選課系統(tǒng)使用的密鑰進(jìn)行更新。
安全學(xué)生選課系統(tǒng)劃分為三個(gè)子系統(tǒng),學(xué)生子系統(tǒng)、教師子系統(tǒng)和管理員子系統(tǒng),整體設(shè)計(jì)如圖1所示:
圖1 系統(tǒng)總體框架圖
3.2 系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)
數(shù)據(jù)庫的設(shè)計(jì)是安全學(xué)生選課系統(tǒng)設(shè)計(jì)的重要組成部分。根據(jù)選課系統(tǒng)的角色劃分,確定的實(shí)體有學(xué)生、課程、教師。該文選擇MySQL作為系統(tǒng)數(shù)據(jù)庫,設(shè)計(jì)的相關(guān)數(shù)據(jù)表有教師信息表 teacher、學(xué)生信息表student、課程信息表 kecheng、學(xué)生選課信息表 xuanke、管理員信息表 manager。下面給出學(xué)生信息表和課程信息表的設(shè)計(jì),如圖表1和表2所示。
3.3 系統(tǒng)的安全性設(shè)計(jì)
為了保障用戶在使用選課系統(tǒng)時(shí)所產(chǎn)生數(shù)據(jù)的安全傳輸和在數(shù)據(jù)庫中的安全存儲,該文設(shè)計(jì)的安全選課系統(tǒng)采用AES對稱加密和BASE64編碼相結(jié)合的方式對用戶產(chǎn)生的數(shù)據(jù)進(jìn)行加密和編碼轉(zhuǎn)換以保證數(shù)據(jù)的機(jī)密性。首先由客戶端的管理員用戶隨機(jī)產(chǎn)生AES算法所需的對稱密鑰K,并將其序列化后直接寫入本地的密鑰文件存儲。然后再利用這個(gè)隨機(jī)產(chǎn)生的密鑰K加密用戶產(chǎn)生的數(shù)據(jù),加密完成后對加密結(jié)果進(jìn)行Base64密碼轉(zhuǎn)換。數(shù)據(jù)加密具體流程和解密如圖2所示。密鑰的安全存儲和更新對于數(shù)據(jù)的加密和解密至關(guān)重要,需要用戶妥善保管密鑰,密鑰更新在下一節(jié)具體描述。
4 安全選課系統(tǒng)的實(shí)現(xiàn)
安全選課系統(tǒng)的實(shí)現(xiàn)部分具體劃分為登錄模塊、系統(tǒng)管理員子系統(tǒng)、學(xué)生子系統(tǒng)、教師子系統(tǒng)。其中登錄模塊供三個(gè)子系統(tǒng)調(diào)用驗(yàn)證用戶身份。系統(tǒng)管理員子系統(tǒng)包括學(xué)生管理模塊、教師管理模塊、課程管理模塊、學(xué)生成績管理模塊、密鑰更新模塊。學(xué)生子系統(tǒng)包括個(gè)人信息維護(hù)模塊和選課模塊。教師子系統(tǒng)包括查詢選課學(xué)生名單和成績管理模塊。此外為了實(shí)現(xiàn)數(shù)據(jù)的安全存儲,還需要一個(gè)安全算法模塊。下面對安全算法模塊、登錄模塊、課程管理模塊和密鑰更新模塊的實(shí)現(xiàn)做詳細(xì)介紹。
4.1 安全算法模塊
該文設(shè)計(jì)并實(shí)現(xiàn)的是一款安全的選課系統(tǒng)軟件,在設(shè)計(jì)之初就充分考慮到相關(guān)的安全性問題。安全選課系統(tǒng)采用MySQL數(shù)據(jù)庫,實(shí)現(xiàn)了用戶產(chǎn)生的數(shù)據(jù)在數(shù)據(jù)庫中的密文存儲,采用 AES對稱加密算法對用戶產(chǎn)生的數(shù)據(jù)逐字段進(jìn)行加密并編碼處理后再存儲至相關(guān)數(shù)據(jù)表。其原理是首先在本地客戶端通過管理員隨機(jī)生成的密鑰來加密輸入的信息,然后為了進(jìn)行網(wǎng)絡(luò)傳輸采用 BASE64 編碼方式來編碼加密后的數(shù)據(jù),最后將編碼轉(zhuǎn)換后的密文數(shù)據(jù)依次存放到數(shù)據(jù)庫的數(shù)據(jù)表里。安全選課系統(tǒng)中設(shè)計(jì)了類En_aes,該類的實(shí)現(xiàn)代碼中集成了AES算法和BASE64編碼方法,專門用于對數(shù)據(jù)進(jìn)行加密和解密處理,該類的CreateEncryptor函數(shù)用于加密處理,CreateDecryptor函數(shù)用于解密處理。其核心代碼如圖3和圖4所示。
4.2 登錄模塊
登錄界面是學(xué)生、教師、系統(tǒng)管理員三類用戶群體的公共模塊,對整個(gè)系統(tǒng)而言,它起著樞紐般的作用。作為“安全選課系統(tǒng)”登錄模塊的界面,需要處理的用戶角色分學(xué)生,管理員,教師三類。用戶通過JComboBox類可以從下拉列表中選擇值,從而確定登錄者的身份??蛻舳私缑娼邮苡脩舻牡卿涃~號和登錄密碼,點(diǎn)擊“確定”按鈕之后采集登錄信息發(fā)往后臺數(shù)據(jù)庫服務(wù)器進(jìn)行比對,認(rèn)證身份信息成功后進(jìn)入相應(yīng)的角色用戶操作界面。
為了保證用戶名和密碼在傳輸過程中的機(jī)密性,使用安全算法模塊中的類En_aes對用戶名和密碼進(jìn)行加密處理。UserName為賬戶, Password為密碼,使用En_aes加密用戶名和密碼的代碼如下:
En_aes aes = new En_aes();
String enc1= aes.createEncryptor(UserName);
String enc2=aes.createEncryptor(Password);
加密后的用戶名和密碼將用于和數(shù)據(jù)表中存儲的數(shù)據(jù)進(jìn)行比較,判斷角色及驗(yàn)證用戶賬號和登錄密碼的流程如圖6所示。
4.3 課程管理模塊
關(guān)于課程信息的管理有錄入課程信息、查詢課程信息、修改課程信息、刪除課程信息。管理員用戶對課程信息進(jìn)行編輯錄入后,系統(tǒng)會對錄入的信息進(jìn)行AES加密和Base64編碼轉(zhuǎn)換,并由客戶端將數(shù)據(jù)以密文的形式上傳并存儲至服務(wù)器的數(shù)據(jù)庫中。數(shù)據(jù)庫課程信息表的存儲結(jié)果如圖7所示。
當(dāng)用戶對課程信息進(jìn)行查詢后,系統(tǒng)中利用SQL SELECT構(gòu)建查詢語句對課程信息表進(jìn)行檢索,并將查詢的結(jié)果解密后放到Jtabl類建立的表格中呈現(xiàn)出來,管理員子系統(tǒng)的查詢課程信息所得結(jié)果窗口如圖8所示,查詢結(jié)果顯示為解密后的明文。
4.4 密鑰更新模塊
管理員角色負(fù)責(zé)維護(hù)系統(tǒng)信息的安全性就要實(shí)行定期的密鑰更換,根據(jù)實(shí)際需要更換的密鑰有學(xué)生信息密鑰、教師信息密鑰、課程信息密鑰、成績信息密鑰。密鑰更新模塊的界面窗體如圖9所示。對于更換密鑰的具體流程是確定更換密鑰后,讀取數(shù)據(jù)庫內(nèi)由該密鑰加密的數(shù)據(jù)表,依次將每條記錄讀取出來發(fā)送至客戶端,客戶端用舊的密鑰進(jìn)行解密后再用新的密鑰對該條記錄數(shù)據(jù)進(jìn)行加密,加密后數(shù)據(jù)再發(fā)往數(shù)據(jù)庫存儲。更換密鑰信息的界面窗口如圖9所示。
5 結(jié)束語
選課系統(tǒng)在各高校普遍應(yīng)用,該文在充分調(diào)研高校選課系統(tǒng)地業(yè)務(wù)需求和安全需求的基礎(chǔ)上,基于C/S架構(gòu)模型設(shè)計(jì)并實(shí)現(xiàn)了一款安全的選課系統(tǒng)軟件,在客戶端運(yùn)用AES密碼算法和BASE64編碼相結(jié)合的技術(shù)將用戶產(chǎn)生的數(shù)據(jù)進(jìn)行加密和編碼轉(zhuǎn)換后再通過網(wǎng)絡(luò)進(jìn)行傳輸并以密文形式存儲在數(shù)據(jù)庫中。該文采用MySQL作為安全選課系統(tǒng)的后臺數(shù)據(jù)庫,采用Java JDBC接口實(shí)現(xiàn)客戶端和后臺數(shù)據(jù)庫服務(wù)器的連接。實(shí)現(xiàn)了選課過程產(chǎn)生的所有數(shù)據(jù)的安全存儲和安全傳輸,有效保證了數(shù)據(jù)的機(jī)密性。
參考文獻(xiàn):
[1] 楊波. 現(xiàn)代密碼學(xué)[M]. 北京: 清華大學(xué)出版社, 2017.
[2] 陳越, 寇紅召, 費(fèi)曉飛, 等. 數(shù)據(jù)庫安全[M]. 北京: 國防工業(yè)出版社, 2015.
[3] 明日科技. Java從入門到精通[M]. 北京: 清華大學(xué)出版社, 2016.
[4] 劉華. Base64編碼算法的研究及Delphi 實(shí)現(xiàn)[J]. 電腦知識與技術(shù), 2017, 13(2):78-82.
[5] 程紅云. 公選課選課及管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 天津: 南開大學(xué), 2013.
[6] 曹嘉芮. 基于B/S結(jié)構(gòu)的電子商務(wù)數(shù)據(jù)庫加密設(shè)計(jì)[D]. 成都: 電子科技大學(xué), 2014.
[7] 羅麗. 基于B/S模式的高校學(xué)生選課系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D]. 長沙: 湖南大學(xué), 2014.
[8] 李剛彪. 數(shù)據(jù)庫加密技術(shù)的研究與實(shí)現(xiàn)[D]. 太原: 太原理工大學(xué), 2010. [通聯(lián)編輯:謝媛媛]