• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于.NET Remoting口令系統(tǒng)的設計

      2012-04-29 13:46:52方俊
      計算機時代 2012年4期
      關鍵詞:身份認證

      摘要: 由于B/S模式下客戶機對服務器的驗證困難,提出了使用Remoting程序?qū)W(wǎng)站的真?zhèn)芜M行驗證。方案實現(xiàn)了客戶端和服務器端的相互認證、服務器端敏感信息的安全存儲和每次認證產(chǎn)生不同的會話密鑰,安全分析表明,所提的方案能有效防范釣魚網(wǎng)站等的常見攻擊,增加了系統(tǒng)的安全性。方案使用.NET進行實現(xiàn),證明是可行的。

      關鍵詞: 身份認證; 一次性口令; Hash函數(shù); 遠程訪問

      中圖分類號:TP309文獻標識碼:A 文章編號:1006-8228(2012)04-09-03

      Password Authentication System Design Based On .NET Remoting

      Fang Jun

      (College of International Education, Zhejiang Yuexiu University Of Foreign Languages, Shaoxing, Zhejiang 312000, China)

      Abstract: In the condition of the B/S mode, the authentication server is difficult by a client. This paper puts forward to use Remoting program to verify the authenticity of Web site. The program realizes mutual authentication between the client and the server, also realizes server sensitive information safe storage. Every time authentication can produce different session keys. Safety analysis shows that the proposed scheme can effectively prevent phishing against common attack and increase the system security. The scheme is achieved by using .NET, It proved to be feasible.

      Key words: Authentication; One-time password; Hash function; Remote access

      0 引言

      目前所使用的一次性口令認證方案大部分都是基于C/S的。一些基于B/S的方案都存在著不驗證服務器真實性的漏洞。目前國內(nèi)流行的一次性口令技術是使用動態(tài)口令牌,包括硬件令牌、短信密碼、手機令牌。這些動態(tài)口令牌無需在PC端安裝軟件,也無需和PC機連接,動態(tài)口令是根據(jù)專門算法,基于事件同步和基于挑戰(zhàn)/應答模式而生成。用這種方式構建的安全系統(tǒng)難以抵制釣魚網(wǎng)站的攻擊[1]。隨著因特網(wǎng)應用的不斷深入以及電子商務和網(wǎng)上銀行的發(fā)展和普及,設計更加完善的適用于Web應用的一次性口令認證方案具有重要的意義。

      基于Web開發(fā)的系統(tǒng),都是構建在HTTP協(xié)議之上的Web應用。基于Web的應用系統(tǒng),瀏覽器中顯示的內(nèi)容都必須到服務器下載,因此相對于C/S的一次性口令認證方案來說,Web應用有其自己的特點。由于B/S模式下客戶機對服務器的驗證困難,因此,基于瀏覽器的Web應用給網(wǎng)絡釣魚攻擊者帶來了可趁之機。一旦遭受到網(wǎng)絡釣魚攻擊,則用戶輸入的個人信息將全部被攻擊者獲取。本文通過在客戶端安裝一個簡單的Remoting程序來驗證網(wǎng)站的真實性。在確定網(wǎng)站的真實性之后再輸入密碼,實現(xiàn)網(wǎng)站對用戶的認證,這樣可以有效地避免口令的泄密。該方案實現(xiàn)了每次認證都會產(chǎn)生不同的會話密鑰。

      1 符號約定及方案描述

      符號約定。

      ID:用戶的身份標識;

      PW:用戶口令;

      Se:服務器選擇的種子;

      R:隨機數(shù),其中Ru為客戶端產(chǎn)生的隨機數(shù),Rs為服務端產(chǎn)生的隨機數(shù);

      //:聯(lián)結運算符;

      ⊕:異或運算符;

      H(x):安全哈希函數(shù),H2(x)對x連續(xù)進行2次哈希運算;

      U→S:x:客戶端向服務器端發(fā)送消息x。

      方案描述。

      本方案包括注冊和登錄認證兩個階段。

      ⑴ 注冊過程

      用戶在安全的環(huán)境下請求注冊,用戶選擇ID、PW,服務器選擇Se;計算H(ID)、H2(PW//Se)、Se⊕H(ID,PW)、H(Se//ID//PW),在服務器端存儲H(ID)、H2(PW//Se)、Se⊕H(ID,PW)、H(Se//ID//PW);客戶端安裝Remoting程序,完成注冊。

      ⑵ 認證過程

      本方案的身份認證過程如圖1所示。

      圖1身份認證過程

      ① 用戶在頁面中輸入ID點擊登錄,頁面中的Javascript代碼計算H(ID)、Ru和H(ID//Ru),將H(ID//Ru) 保存在客戶端的臨時文件中。

      U→S:H(ID)、H(ID//Ru),認證請求。

      ② 服務器端查找H(ID),若該H(ID)不存在,服務器端斷開與客戶端的會話;否則,服務器端查找數(shù)據(jù)表中對應的Se⊕H(ID//PW)、H(Se//ID//PW),計算隨機數(shù)Rs、C2=Rs⊕H(Se//ID//PW),令C1=Se⊕H(ID//PW),通過Cookie將C1、C2保存到客戶端,并將H(ID//Ru)保存在服務器端的臨時文件中。

      ③ 用戶在頁面中點擊按鈕啟動客戶端Remoting程序,讀取服務器端保存的H(ID//Ru)并與客戶端所保存的信息比較,若一致,服務器為真,彈出提示信息,用戶可以進一步輸入口令,同時刪除客戶端和服務端的H(ID//Ru)信息;否則,提示用戶不能在頁面上輸入口令。

      ④ 用戶在頁面輸入PW,頁面中的Javascript代碼計算H(ID,PW),從客戶端Cookie中讀取C1、C2;計算Se= C1⊕H(ID,PW),Rs = C2⊕H(Se//ID//PW);計算認證依據(jù)H(PW//Se);

      U→S:C3 。C3=Rs⊕H(PW//Se)。

      ⑤ 服務器端收到C3后,計算H(Rs⊕C3),將得到的H2(PW//Se)與服務器端保存的H2(PW//Se)比較,一致說明用戶合法,否則為非法用戶。認證過程結束。

      ⑥ 在接下去的服務器端和客戶端的相互通信中,使用雙方共有的Rs值作為會話密鑰進行加密通信。

      2 基于.NET的一次性口令方案的實現(xiàn)

      IC卡認證、生物認證都需要專用終端認證設備的配合。CA認證雖然是目前最好的認證方法,但必須以完整的CA體系為基礎,需第三方公證,技術復雜、成本高,因而應用范圍受到很大限制。而一次性口令的優(yōu)點是無需第三方公證。

      2.1 系統(tǒng)環(huán)境與體系結構

      系統(tǒng)使用VS2008開發(fā)工具,編程語言使用C#,使用Internet信息服務器(IIS)作為Web服務器,客戶端使用IE6.0或更高版本的瀏覽器。

      系統(tǒng)采用三層體系結構,即表示層、邏輯層、數(shù)據(jù)層,如圖2所示。表示層是為客戶提供應用服務的圖形界面,并提供具有交互功能的用戶操作界面,將用戶向服務器提交的訪問反饋結果以Web頁的形式返回給客戶端瀏覽器??蛻舳耸褂昧饲度朐贖TML頁中的JavaScript代碼實現(xiàn)Hash運算、異或運算和隨機數(shù)的生成。邏輯層處理并封裝了基于Web的應用模塊,控制系統(tǒng)的流轉(zhuǎn)。數(shù)據(jù)層負責定義、維護、訪問、更新數(shù)據(jù),滿足服務對數(shù)據(jù)的請求。

      圖2三層結構模型

      頁面間數(shù)據(jù)傳遞使用Querystring 方法,這種方法將要傳遞的數(shù)據(jù)附加在網(wǎng)頁地址(URL)后面進行傳遞。使用Querystring 方法的優(yōu)點是實現(xiàn)簡單,不使用服務器資源;缺點是傳遞的值會顯示在瀏覽器的地址欄上。Cookie可以在頁面之間傳遞少量信息,它存儲在客戶端的文本文件中。

      2.2 .NET Remoting技術概述[2]

      在.NET平臺上,為了使Windows程序運行在一個應用程序域中的進程與另外一個應用域中的進程通信,可以使用Remoting。Remoting是一種分布式編程的技術,主要用于管理跨應用程序域的同步和異步RPC會話。在默認情況下,Remoting可使用 HTTP/TCP 協(xié)議進行信息通訊,并使用 XML 編碼的SOAP 或二進制消息格式進行數(shù)據(jù)交換。Remoting 提供了非常靈活和可擴展的編程框架,并且可以管理對象的狀態(tài)。Remoting跟Web服務不同,它并不依賴于IIS,用戶可以自己開發(fā)并部署宿主服務器,只需要服務器支持Framework。.NET Remoting的體系結構如圖3所示。

      圖3.NET Remoting體系結構

      Remoting程序包括遠程服務對象的創(chuàng)建、主應用程序和客戶端應用程序。遠程服務對象提供了服務器端所需的功能,此處實現(xiàn)的功能是根據(jù)H(ID)讀取服務器端的H(ID//Ru)。接下來創(chuàng)建一個主應用程序,其中創(chuàng)建一個使用端口的HttpChannel對象,注冊通道,然后在Remoting平臺上注冊遠程服務類,最后生成可執(zhí)行文件??蛻舳藨贸绦蚴且粋€標準的Remoting應用程序,主要功能是獲取客戶端臨時文件中的H(ID//Ru)值;連接遠程主機,獲取服務器端的H(ID//Ru),并與客戶端的值比較,若一致,服務器為真,否則服務器為假。

      2.3 “異或”運算

      C#程序語言的“異或”運算將參數(shù)強制轉(zhuǎn)換為相應的數(shù)據(jù)類型(二進制),隨后查看兩個表達式的二進制表示形式的值,并執(zhí)行按位“異或”運算。然后再將結果的二進制碼轉(zhuǎn)換回字符。此時,可能會出現(xiàn)無法顯示的“控制字符”。因此,本文采用圖4所示步驟進行“異或”運算,對字符先進行Reed-Solomon編碼[3],再將二進制的編碼形式變?yōu)槭M制整數(shù),將兩個十進制數(shù)進行“異或”運算,最后將結果反變換成字符。

      圖4“異或”運算示意圖

      2.4 Cookie值的讀取

      Cookie的格式實際上是一段純文本信息,由服務器隨著網(wǎng)頁一起發(fā)送到客戶端,并保存在客戶端硬盤指定的目錄中??梢允褂们度朐贖TML中的Javascript代碼讀取Cookie值,例如,設Cookie的值為C1,(C1是包含32個字符的字符串)則其代碼如下。

      var cookieString = new String(document.cookie);

      var cookieHeader = "C1=";

      //indexOf() 方法可返回某個指定的字符串值在字符串中首次出現(xiàn)的位置。

      var beginPosition = cookieString.indexOf(cookieHeader) ;

      if (beginPosition != -1)

      {

      returnC1 = cookieString.substring(beginPosition+3, beginPosition +35);

      }

      2.5 登錄界面

      本方案基本不改變用戶登錄系統(tǒng)的使用習慣,只是在用戶輸入密碼前加入驗證服務器的步驟,如果返回驗證成功的窗體則用戶可以在頁面繼續(xù)輸入密碼。該窗口與Windows的三種對話框是完全不同的,對話框的用戶界面是腳本編寫者不能修改的,且現(xiàn)在瀏覽器均不支持windows.open()方法的titlebar屬性[2],即該窗體無法通過腳本的方式創(chuàng)建,如圖5(c)所示。

      (a)(b)(c)

      圖5用戶登錄界面和服務器驗證成功時彈出的提示窗體

      點擊頁面中的“驗證服務器”按鈕,則網(wǎng)頁中的Javascript代碼即可啟動Remoting程序。啟動Remoting程序的Javascript代碼如下:

      //啟動Remoting程序

      function exec ()

      {

      var command=document.getElementsByName("path")[0].value//path為Remoting程序的路徑

      var wsh = new ActiveXObject('WScript.Shell');

      //創(chuàng)建客戶端程序執(zhí)行對象

      if (wsh) wsh.Run(command);

      //調(diào)用Run命令執(zhí)行exe程序,參數(shù)是一個exe文件的路徑

      }

      3 安全性分析

      重放和小數(shù)攻擊。瀏覽器和服務器之間傳遞的用于驗證的H(PW//Se) 數(shù)據(jù)用隨機數(shù)Rs“異或”加密保護,每次傳遞的值均不相同。認證依據(jù)H(PW//Se) 不在網(wǎng)上直接傳輸,因此本方案能抵御重放攻擊。同時,由于本方案非序列口令,因此本方案可屏蔽小數(shù)攻擊。

      冒充(冒充合法用戶)攻擊。當攻擊者截獲了用戶登錄時的信息H(ID),登錄服務器返回C1、C2值。由于用戶口令不在網(wǎng)上傳輸,也不在任何系統(tǒng)中保存,攻擊者無法計算H(ID//PW)獲取Se和Rs,因此,就無法計算認證依據(jù)H(PW//Se),也無法從C3獲得該值,冒充失敗。

      攻擊者冒充服務器。用戶登錄假冒的網(wǎng)站后,可能輸入用戶標識ID。此時用戶啟動Remoting程序,該程序?qū)⑴c真實的服務器建立通道讀取H(ID//Ru),并從客戶端讀取H(ID//Ru)進行比較,但此時真實的服務器端并無H(ID//Ru)值存在,Remoting程序無法完成對網(wǎng)站的驗證,攻擊者無法冒充服務器。因此本文所提的方案可以有效地防止釣魚網(wǎng)站的攻擊。

      如果攻擊者竊聽了認證過程中的C3,攻擊者使服務器崩潰,則服務器重啟后恢復到認證前狀態(tài),攻擊者可重放C3登錄系統(tǒng)。但在其后的通信中必須使用會話密鑰Rs進行加密通信,而攻擊者無法獲得Rs值,而且每次認證產(chǎn)生的隨機數(shù)Rs值不同,通信無法繼續(xù)。因此本方案可以抵御服務器崩潰攻擊和會話劫持攻擊。

      在本方案中,口令等敏感數(shù)據(jù),既不在網(wǎng)絡上傳輸也不存儲于任何地方,服務器端只存儲認證依據(jù)H(PW//Se)的哈希值。由于認證過程中網(wǎng)上傳輸?shù)男畔⒕须S機數(shù)Ru、Rs參與,沒有明文信息在網(wǎng)絡上傳輸,并且在合法的通信連接建立以后進行加密通信,因此,攻擊者無法實施中間人攻擊。

      4 結束語

      本文方案使用Remoting程序?qū)崿F(xiàn)了B/S模式下對網(wǎng)站真?zhèn)蔚蔫b別,每次登錄服務器時網(wǎng)上傳輸?shù)恼J證值均不同、實現(xiàn)了客戶和服務器的雙向認證,有效地防止了網(wǎng)絡釣魚等常見攻擊。本方案的計算開銷小,只需對認證依據(jù)H(PW//Se)進行一次哈希運算并與服務器端的H2(PW//Se)比對;且用戶名和密碼不在系統(tǒng)存儲,用戶的身份得到了保護,提高了系統(tǒng)的安全性。由于認證時只進行簡單哈希計算和“異或”運算,避免了目前一些方案在認證時使用的冪指數(shù)運算,減少了系統(tǒng)的開銷。

      參考文獻:

      [1] 王貴智.網(wǎng)銀動態(tài)口令牌應用的安全性[J].中國金融電腦, 2010.11:29~31

      [2] Christian N, Bill E, Jay G著. C# 高級編程 [M]. 清華大學出版社,2006.

      [3] 方俊, 趙英良. 基于RBF神經(jīng)網(wǎng)絡的一次性口令認證方案[J]. 計算機工程,2011.37(9):157~159

      猜你喜歡
      身份認證
      基于標識的動態(tài)口令系統(tǒng)
      軟件(2016年6期)2017-02-06 23:54:28
      云電子身份管理與認證系統(tǒng)中的關鍵技術優(yōu)化改進
      校園網(wǎng)云盤系統(tǒng)存在的安全問題及對策
      基于指紋身份認證的固定通信臺站干部跟班管理系統(tǒng)設計
      基于PKI與基于IBC的認證技術比較
      基于PKI技術的企業(yè)級云存儲出錯數(shù)據(jù)證明的研究
      信息系統(tǒng)身份認證的分析與研究
      Kerberos身份認證協(xié)議的改進
      科技視界(2016年11期)2016-05-23 08:31:38
      基于USB存儲設備的透明監(jiān)控系統(tǒng)
      科技視界(2016年9期)2016-04-26 12:25:25
      基于鼠標行為的電子商務中用戶異常行為檢測
      勐海县| 台江县| 宜宾县| 鄂托克前旗| 龙海市| 翁源县| 如皋市| 龙川县| 甘谷县| 志丹县| 伽师县| 永吉县| 宝应县| 二连浩特市| 福鼎市| 胶州市| 涪陵区| 东兰县| 江北区| 类乌齐县| 板桥市| 昆明市| 琼海市| 越西县| 龙陵县| 涪陵区| 文水县| 金塔县| 富顺县| 光泽县| 大同县| 岑巩县| 张家港市| 黄骅市| 正安县| 汤原县| 蓝田县| 宜春市| 柞水县| 无为县| 绥江县|