• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于安全文檔管理的日志系統(tǒng)設(shè)計

    2011-07-03 08:58:42蘇恒陽
    制造業(yè)自動化 2011年24期
    關(guān)鍵詞:數(shù)字簽名私鑰日志

    蘇恒陽

    (廣東輕工職業(yè)技術(shù)學(xué)院,廣州 510300)

    0 引言

    隨著安全技術(shù)的不斷發(fā)展和成熟,數(shù)字簽名技術(shù)被廣泛應(yīng)用于電子商務(wù)、金融、政治等領(lǐng)域,成為保護(hù)個人隱私的重要技術(shù)手段。在安全領(lǐng)域,數(shù)字簽名保證了數(shù)據(jù)的完整性、不可抵賴性,而日志系統(tǒng)對于安全來說,同樣非常重要。日志系統(tǒng)可以記錄系統(tǒng)使用者的操作記錄,可以通過它來檢查錯誤發(fā)生的原因,或者受到攻擊時攻擊者留下的痕跡。數(shù)字簽名和日志系統(tǒng)二者結(jié)合可以實(shí)現(xiàn)數(shù)據(jù)的安全記錄。

    1 用戶模塊的設(shè)計

    用戶通過注冊建立自己的個人信息,登錄以后可以通過用戶管理,進(jìn)行用戶信息的修改。用戶注冊后就建立其個人文件夾,得到一定大小的用戶空間,可以存儲用戶上傳的文件。用戶通過文件管理功能,可以進(jìn)行文件的上傳和刪除操作。同時,用戶還可以共享上傳的文件。用戶還可以通過消息管理給其他用戶發(fā)送消息,通過備忘錄管理書寫備忘錄。

    圖1 用戶操作功能切換圖

    1.1 用戶注冊和登錄功能

    用戶注冊后建立自己的個人信息,用注冊過的用戶名和密碼,用戶可以登錄系統(tǒng)。

    用戶注冊之后,可以用注冊的帳號的密碼登入系統(tǒng),在登錄視圖填寫登錄信息,把登入請求提交給登錄控制器,控制器調(diào)用DataStore驗(yàn)證信息,并把驗(yàn)證的結(jié)果返回給用戶,驗(yàn)證通過則進(jìn)入系統(tǒng),驗(yàn)證失敗則提示失敗信息。

    1.2 用戶操作功能

    在系統(tǒng)中,采用了4個業(yè)務(wù)類ClientManagement、ClientFilemanagement、ClientMessage 和 Client-Remind分別來提供用戶信息管理、用戶文件管理、用戶消息管理和用戶備忘錄管理,同時通過控制器ChooseAction進(jìn)行功能切換。Login.jsp視圖中輸出4個鏈接的選項,分別對應(yīng)4個主要的用戶功能。用戶通過點(diǎn)擊不同的鏈接可以選擇不同的功能。

    1.2.1 用戶信息管理功能

    用戶管理功能主要由業(yè)務(wù)類Clientmanagement來實(shí)現(xiàn)。用戶從用戶管理頁面中點(diǎn)擊修改用戶個人信息鏈接,調(diào)用控制器ModifyAction,ModifyAction提供了重定向功能,使用戶進(jìn)入修改用戶信息視圖。在修改信息視圖中填寫要修改的用戶信息,然后提交給信息修改控制器ModifySubmitAction,該控制器經(jīng)過相應(yīng)的驗(yàn)證后通過調(diào)用DataStore完成修改,保存修改的信息,并把修改的結(jié)果返回給用戶功能視圖。

    1.2.2 用戶文件管理功能

    進(jìn)入用戶文件管理,可以進(jìn)行用戶文件查看、新文件上傳以及文件刪除操作。上傳的文件存儲在用戶注冊時分配到的空間。

    用戶進(jìn)入上傳文件的視圖,選擇要上傳的文件,然后把上傳的請求交給上傳控制器,上傳控制器調(diào)用數(shù)據(jù)庫類DataStore執(zhí)行上傳文件的操作,執(zhí)行文件表和文件空間表的插入和更新操作,并把上傳結(jié)果返回給用戶,顯示在用戶文件列表上。上傳成功則顯示文件上傳成功界面,上傳失敗,則提示出錯。

    用戶共享操作可以和其他用戶共享自己上傳的文件,進(jìn)入共享文件列表可以查看各個用戶共享的文件,并可以根據(jù)需要進(jìn)行下載。同時,用戶可以進(jìn)行撤銷共享操作,對于沒有設(shè)置共享的文件,只有上傳該文件的用戶可以查看該文件。用戶還可以刪除自己上傳的文件,操作流程和共享文件類似。

    1.2.3 用戶消息功能

    消息業(yè)務(wù)類為用戶提供發(fā)送和刪除消息的功能,進(jìn)入消息管理界面,用戶可以給其他用戶發(fā)送消息。

    用戶可以在自己的消息頁面中查看其他用戶發(fā)送給自己的消息,并且可以刪除沒有用的消息。刪除消息不需要填寫表單,直接將請求提交給刪除控制器RemoveMessageAction,調(diào)用DataStore從數(shù)據(jù)庫中刪除信息。

    1.2.4 用戶備忘錄功能

    進(jìn)入備忘錄管理界面,用戶可以添加新的備忘錄??刂破鲗τ脩籼顚懙谋韱涡畔⑦M(jìn)行驗(yàn)證,驗(yàn)證出錯則返回輸出錯誤信息,驗(yàn)證通過則將備忘錄信息存入數(shù)據(jù)庫,并將結(jié)果返回給用戶。同時,用戶可以刪除過期的備忘錄。

    2 管理員模塊的設(shè)計

    系統(tǒng)為管理員提供了登錄、注銷、查看用戶信息,刪除用戶信息,查看用戶操作日志和查找文件的功能。

    管理員登錄之后,通過AdminLogAction控制器調(diào)用searchClient()方法從數(shù)據(jù)庫中循環(huán)讀出每一個用戶的信息,并將用戶信息保存在Vector中,然后將Vector中的用戶信息存到session中。控制器最后返回到視圖頁面,視圖頁面從session中獲取用戶信息,放入Vector中,然后從Vector循環(huán)讀出每一個用戶的信息,顯示在頁面上,管理員即可瀏覽用戶信息。

    點(diǎn)擊進(jìn)入日志系統(tǒng),管理員可以進(jìn)入查看用戶的操作日志。通過LogSys控制器,調(diào)用Log類中寫好的searchLog()方法,從數(shù)據(jù)庫中讀出數(shù)據(jù)。最后轉(zhuǎn)發(fā)到getLog.jsp頁面上,將日志顯示出來。

    3 日志系統(tǒng)的設(shè)計

    系統(tǒng)中用戶的操作日志只有管理員可以進(jìn)行查看。為了實(shí)現(xiàn)日志信息的記錄,并使每個操作的日志記錄都可以調(diào)用同一個類,實(shí)現(xiàn)代碼的復(fù)用,專門寫了一個日志信息記錄的類Log.java。Log.java中包含了日志信息的數(shù)字簽名、日志讀取和記錄日志的操作。

    圖 2 日志系統(tǒng)功能圖

    3.1 日志信息的產(chǎn)生

    當(dāng)用戶進(jìn)入系統(tǒng)進(jìn)行操作時,包括用戶的登錄、文件操作、注銷和用戶信息修改等,日志系統(tǒng)都會記錄相應(yīng)的日志信息。根據(jù)MVC模式,用戶的每次操作都由表單記錄相應(yīng)的信息、參數(shù),通過模型收集信息,并將其傳送給控制器Action進(jìn)行處理。在每次動作的執(zhí)行就會產(chǎn)生相應(yīng)的操作日志信息,將信息作為參數(shù),并調(diào)用Log類中的signLog()對日志信息進(jìn)行數(shù)字簽名,得出簽名的結(jié)果。將操作信息和簽名的結(jié)果作為參數(shù)傳給Log類的recordLog()方法,在每次動作的最后調(diào)用該方法,產(chǎn)生用戶操作的一條完整的日志信息,將這些信息存入到數(shù)據(jù)庫中。同時,調(diào)用然后將日志信息寫入到數(shù)據(jù)庫中,簽名的結(jié)果同樣也保存在數(shù)據(jù)庫中。

    3.2 對日志信息的數(shù)字簽名

    3.2.1 非對稱密鑰對的產(chǎn)生

    系統(tǒng)中利用非對稱密鑰加密算法進(jìn)行數(shù)字簽名, 首先必須完成的工作就是密鑰對的生成。Java中的KeyPairGenertor類提供了創(chuàng)建用于非對稱加密的密鑰對的方法,密鑰對創(chuàng)建好后封裝在KeyPair類型的對象中。具體過程如下:

    1)創(chuàng)建密鑰對生成器

    首先,通過工廠類KeyPairGenerator的靜態(tài)方法getInstance()生成一個KeyPairGenerator 類的對象,傳入的參數(shù)為非對稱加密所使用的算法,常用的有RSA、DSA等,這里使用RSA算法。

    KeyPairGenerator KeyGen = KeyPairGenerator.getInstance(“RSA”);

    2)初始化密鑰對生成器

    通過KeyPairGenerator類中的initialize初始化,傳入的兩個參數(shù)為強(qiáng)度和隨機(jī)數(shù)源,強(qiáng)度一般為1024,隨機(jī)數(shù)源由SecureRandom類的對象自動生成一個原始值。

    KeyGen.initialize( 1024, new SecureRandom());

    3)生成密鑰對

    將生成的密鑰對保存在KeyPair 類的一個實(shí)例中,其中包含了一對公鑰和私鑰的信息。

    KeyPair kpair = KeyGen.genKeyPair();

    4)獲取公鑰和私鑰

    publicKey pbkey = kpair.getPublic();privatekey prkey = kpair.getPrivate();

    將生成的密鑰對保存好,用戶操作時利用私鑰對日志信息進(jìn)行加密,然后將簽名和日志信息一起存入數(shù)據(jù)庫。管理員要查看日志時,用公鑰進(jìn)行驗(yàn)證簽名。

    3.2.2 使用私鑰對日志信息進(jìn)行數(shù)字簽名

    日志信息產(chǎn)生后,利用MD5強(qiáng)加密消息散列算法對信息計算消息摘要,然后利用RSA非對稱加密算法進(jìn)行數(shù)字簽名。Java.security包中的Signature類提供了進(jìn)行數(shù)字簽名的方法。Signature對象的initSign()方法傳入私鑰,執(zhí)行update()方法可以將原始數(shù)據(jù)傳遞給Signature對象,然后執(zhí)行sign()方法即可得到消息驗(yàn)證碼。具體過程如下:

    1)獲取要簽名的數(shù)據(jù)

    用戶的每一次系統(tǒng)操作都將產(chǎn)生操作記錄,將用戶的用戶名、操作類型、操作的文件名、操作時間,作為一條操作記錄,存在message.dat文件中,通過文件輸入流將其讀入字節(jié)類型數(shù)組data中。

    FileInputStream f = new FileInputStream(“message.dat”);

    int num = f.available();

    byte[] data = new byte[num];

    f.read(data);

    2)獲取私鑰

    生成的私鑰保存在private_key.dat文件中,通過文件流讀入私鑰存放在RSAPrivateKey類型的變量中,用于加密日志信息。

    FileInputStream f2 = new FileInputStream(“private_key.dat”);

    objectInputStream b = new ObjectInputStream(f2);

    RSAPrivateKey prk = (RSAPrivateKey)b.read-Object();

    3)獲取Signature對象

    通過Signature的getInstance()方法獲取對象,方法的參數(shù)指定了簽名所用的算法,包含了計算消息摘要所用的算法和加密消息摘要所用的算法。系統(tǒng)中使用的是MD5和RSA算法。

    Signature s = Signature.getInstance(“MD5withRSA”);

    4)用私鑰初始化Signature對象

    使用Signature對象的initSign()方法初始化Signature對象,參數(shù)為加密使用的私鑰,以后就可以用此加密日志信息。

    s.initSign(prk);

    5)傳入要數(shù)字簽名的數(shù)據(jù)

    將保存在data數(shù)組中的用戶操作信息傳入,進(jìn)行數(shù)字簽名。

    s.update(data);

    6)執(zhí)行數(shù)字簽名簽名

    byte[] signdata = s.sign();

    簽名之后,得到的簽名信息是二進(jìn)制代碼,通過編碼類將二進(jìn)制的信息轉(zhuǎn)化成String類型,然后將String類型的簽名結(jié)果保存在日志信息表中,以便于日志查看時進(jìn)行驗(yàn)證。

    BASE64Encoder base64Encoder = new BASE64Encoder();

    String sign = base64Encoder.encode(signeddata);

    3.3 日志查看功能

    管理員通過登錄,可以進(jìn)入日志系統(tǒng),查看日志信息。為了驗(yàn)證日志信息有沒有被修改,需要對記錄日志時產(chǎn)生的數(shù)字簽名進(jìn)行驗(yàn)證。當(dāng)管理員進(jìn)行查看時,觸發(fā)控制器LogSysAction,該控制器從數(shù)據(jù)庫中讀出操作信息,并調(diào)用Log類中的checkSign()方法,利用公鑰對簽名進(jìn)行驗(yàn)證,即對簽名過的信息進(jìn)行解密,將解密過的結(jié)果和原始信息進(jìn)行對比,對比結(jié)果一致說明驗(yàn)證通過,不一致說明驗(yàn)證沒有通過。驗(yàn)證結(jié)果同時顯示在頁面上,Check Pass表示通過驗(yàn)證,即日志信息沒有被修改過;Check Fail表示沒有通過驗(yàn)證,即日志信息已經(jīng)被修改過。

    日志系統(tǒng)提供給管理員按用戶查看日志信息的功能。管理員輸入用戶名,日志系統(tǒng)可以將該用戶的操作日志顯示出來。

    4 結(jié)束語

    日志系統(tǒng)中,提供利用Java安全機(jī)制實(shí)現(xiàn)了數(shù)字簽名,對于用戶的操作日志簽名保證了日志信息的完整性,及時了解日志信息是否被修改。

    對于系統(tǒng)中用戶包括管理員的身份認(rèn)證,用戶權(quán)限以及用戶操作的授權(quán)管理方面等可以做一進(jìn)步的工作,使得系統(tǒng)的安全性更強(qiáng)。

    [1] Cay S. Horstmann, GaryCornell. 王建華, 董志敏, 楊保明, 等譯. Java核心技術(shù) 卷II[M]. 北京: 機(jī)械工業(yè)出版社,2005.

    [2] Jim D’Anjou, Dan Kehn, John Kellerman, 等. 束堯, 丁凡,許國梁, 譯. Eclipse權(quán)威開發(fā)指南[M]. 北京: 清華大學(xué)出版社, 2006.

    [3] Joseph Schmuller. 李虎, 趙龍剛, 譯. UML基礎(chǔ)、案例與應(yīng)用[M]. 北京: 人民郵電出版社, 2005.

    [4] Vivek Chopra, Jon Eaves, Rupert Jones, 等. 朱濤江, 張文靜, 等譯. JSP高級程序設(shè)計[M]. 北京: 人民郵電出版社,2006.

    [5] Abraham Silberschatz, Henry F.Korth, S.Sudarshan. 楊冬青, 唐世渭, 等譯. 數(shù)據(jù)庫系統(tǒng)概念[M]. 北京: 機(jī)械工業(yè)出版社.

    [6] Revist R L, Shamir A, Adleman L. A method for obtaining digital signatures and public-key cryptosystems[J].Communications of the ACM, 1978, 21(2): 120-126.

    [7] 徐迎曉. Java安全性編程實(shí)例[M]. 北京: 清華大學(xué)出版社, 2003.

    [8] Christopher Steel, Ramesh Nagappan, RayLai. 陳秋萍, 羅鄧, 袁國忠, 等譯. 安全模式[M]. 北京: 機(jī)械工業(yè)出版社,2006.

    [9] 肖文, 尹建偉, 陳剛, 等. 基于J2EE的日志管理中間件的設(shè)計和實(shí)現(xiàn)[J]. 計算機(jī)應(yīng)用研究, 2003, (10): 173-175.

    [10] 劉泉, 吳濤. 基于Java的數(shù)字簽名研究與實(shí)現(xiàn)[J]. 武漢理工大學(xué)學(xué)報, 2004, 26(1): 11-14.

    猜你喜歡
    數(shù)字簽名私鑰日志
    比特幣的安全性到底有多高
    一名老黨員的工作日志
    華人時刊(2021年13期)2021-11-27 09:19:02
    基于改進(jìn)ECC 算法的網(wǎng)絡(luò)信息私鑰變換優(yōu)化方法
    淺析計算機(jī)安全防護(hù)中數(shù)字簽名技術(shù)的應(yīng)用
    扶貧日志
    心聲歌刊(2020年4期)2020-09-07 06:37:14
    一種基于虛擬私鑰的OpenSSL與CSP交互方案
    游學(xué)日志
    基于數(shù)字簽名的QR碼水印認(rèn)證系統(tǒng)
    基于數(shù)字簽名和HSM的數(shù)據(jù)庫篡改檢測機(jī)制
    一種基于粗集和SVM的Web日志挖掘模型
    民权县| 浦东新区| 砚山县| 肇庆市| 镇沅| 竹山县| 白水县| 宁武县| 祁连县| 玉龙| 汉阴县| 怀仁县| 日土县| 长治市| 永济市| 曲沃县| 黔西| 福贡县| 天峻县| 利川市| 远安县| 新安县| 临安市| 辽宁省| 化隆| 年辖:市辖区| 呈贡县| 东方市| 古田县| 娱乐| 长宁县| 枣庄市| 北京市| 方城县| 呼玛县| 左贡县| 周宁县| 凯里市| 绥芬河市| 锦屏县| 丰都县|