用IC卡在NT網中實現附加身份認證

2021-04-13 14:19:25 字數 4336 閱讀 6393

2023年10月12日 02:15:00

一、引言

隨著internet的迅速發展,網路已成為乙個國家的政治、經濟、軍事和教育的重要資源,各部門、團體甚至個人相繼建立起了自己的**和內部網路(intranet),同時,網路的安全性也成為了乙個日益嚴重的問題,網路攻擊時有發生,許多重要**都有被攻擊和入侵的記錄。在眾多的攻擊目標和攻擊方法中,攻擊者千方百計最想得到的是伺服器系統管理員(nt中的administrator,unix中的root)的帳戶名和口令,從而冒充系統管理員,完全得到網路的控制權,從事他不應該從事的活動。

在一般情況下,對於乙個網路使用者是否具有系統管理員身份這個問題,是靠他所知道的管理員的帳戶名和口令與伺服器上的口令檔案中的記錄是否一至來進行驗證的,但只要口令的輸入、驗證過程以及口令檔案沒有和攻擊者在物理上隔離,帳戶名和口令是可以通過多種方法得到的,如強行攻擊進行猜測,用特洛伊木馬(trojan),網路監聽(sniff)技術進行盜竊等。

為改善基於口令的身份驗證所帶來的不安全性,通常採用一些其它方法來進行輔助識別,如一次性口令、第三方認證、生物特徵鑑別、管理員是否擁有某件不能偽造的物品等。這些方法可以使系統達到較高的安全性,但實現起來都很複雜和昂貴,需要專門的裝置和系統,這裡介紹的方法可操作性強,但不失為提高安全性的一種有效方法。

ic卡的全稱是integrated circuit card(積體電路卡),它具有國際標準化(standard)、靈巧智慧型化(**art)、安全性(security)以及**低廉的特點,目前在銀行、郵電、交通、保安甚至軍事等領域廣泛使用。ic卡具有很高的加密強度,安全性好,成功地非法複製和改寫需要付出很高的代價,因而廣泛地被用來作為身份驗證的物品。ic卡有多種規格,有的配合相應的裝置專門用作身份驗證,這裡綜合**和效能上的考慮,從一般使用者都可以實現的角度出發,採用常用的邏緝加密序列傳輸儲存卡,這種儲存卡一般是電可擦除(eeprom)的,可通過讀卡機和pc機的串列埠(或usb介面)進行通訊。

二、基本原理

邏輯加密型儲存卡(**art card with security logic)主要由eeprom儲存單元陣列和密碼控制邏輯單元組成,儲存器分為主儲存器、保護儲存器和加密儲存器,加密儲存器的第1、2、3位元組為「參照字」儲存區,其內容被稱為可程式設計加密**(psc),在對這種ic卡進行讀寫操作時,需輸入乙個3位元組長的「效驗字」與psc進行比較,只有在比較成功時方可對加密儲存器的第1、2、3位元組進行讀寫操作和對其它儲存區進行改寫操作,能否讀出正確的「參照字」內容和是否能對儲存區改寫可作為鑑別ic卡的手段。3個位元組可組成16777216種**,並且每張ic卡一般只允許3次比較失敗,在不知道「效驗字」的情況下複製某ic是不可能的,因而用具有某「效驗字」的ic卡作為一種身份的代表具有很高的安全性。ic卡本身是半導體電子元件,輸入和輸出的都是電訊號,將電平適當轉變,控制好時序後可直接與微機進行通訊。

身份驗證過程如下:

1.在nt伺服器上開啟安全日誌(unix上也有類似日誌),並啟動一守護程序,監視網路中管理員的登入事件,當發現有使用者以管理員身份登入後,即要求登入的工作站對使用者是否擁有所要求的含有特殊「參照字」的ic卡作認證,如果收不到認證資訊則斷開與該工作站的連線;

2.使用者在工作站上登入後,即執行驗證程式,檢查本機的串列埠上是否有所要求的ic卡存在,如驗證成功,則向伺服器發認證成功的訊息。

三、技術規範

1.引腳功能:接觸式序列介面

ic卡共有

6-8個觸點(c1到

c8),分別接到積體電路晶元的

8個引腳上,主要廠商是德國

siemens

公司和美國

atmel

公司,以西門子

sle442

為例,各觸點的功能定義如下,保留使用的引腳因公司和型號的不同而有不同的用途。

觸點編號

功能觸點編號

功能c1

vcc(電源)

c5

gnd(地)

c2

rst(復位訊號)

c6

保留使用

c3

clk(時鐘)

c7

i/o(資料輸入/輸出端)

c4

保留使用

c8

保留使用

2.電氣特性:這種ic卡自帶內部電壓提公升電路,採用5v單一電源供電,最大電流約200ma,可由pc機提供,其它訊號高電平為5v,也可由串列埠驅動。

3.介面:ic卡的外觀形狀有多種,配備不同的讀寫裝置,這裡推薦使用通用的內建式id-1型讀寫器,這種讀寫器符合iso7816國際標準,外觀和3.5英吋磁碟驅動器一至,與pc機串列埠相連,同時也可外接使用,ic卡尺寸(mm)為85.6×53.98×0.76,不需額外供電。各種讀寫裝置一般都配有在各種作業系統(如dos、windows、unix)下的軟體開發環境和c、foxpro、foxbase等下的介面函式。有興趣的讀者還可自製讀寫裝置,象串列埠上的db-9聯結器,ic卡晶元的接觸器件等在市面上皆有**,彙編程式設計時需呼叫rom bios的int 14對串列埠進行讀寫,在windows api和unix環境下需開啟相應的裝置檔案,如com、/etc/getty等。

4.指令格式:資料傳輸採用兩線連線協議,按iso7816標準,有復位、命令、輸出和處理四種模式。復位可在任何期間進行,晶元復位響應後進入待命狀態,根據命令的內容進入資料輸出(讀資料)或資料處理模式(比較或修改資料)。命令含3個位元組,格式為:

控制碼位址碼資料b

7b6b5b4b3b2b1b0

a7a6a5a4a3a2a1a0

d7d6d5d4d3d2d1d0 5

.傳送順序為b0-b7,a0-a7,d0-d7,最後附加乙個clk訊號將i/o端置高。

四、程式設計要點

1.ic卡的比較操作:

比較操作的流程如圖1所示,如果是直接對晶元操作,以sle4442晶元為例,命令格式如下:

功能控制碼位址碼

資料說明

讀加密儲存器

31h 無無

讀出加密儲存區的4個位元組

比較效驗資料

33h

1-3

輸入資料

處理模式

修改加密儲存器

39h

0-3

輸入資料

處理模式

但讀寫器一般帶有高層的讀寫介面和友好的程式設計環境,具體命令和讀寫器有關。

2.守護程序對驗證程序的鑑別:

這裡僅需要守護程序對驗證程序進行單向鑑別,所以可以簡化標準的查詢-應答協議,如圖2所示。

守護程序先向驗證程序傳送一大隨機數a,驗證程序用一種特殊的方法ks對隨機數進行轉換後將ks(a)傳回對方,由於「特殊的方法」ks是守護程序和驗證程序共知的秘密,所以可以確定來自驗證程序的訊息的真偽,k指加密演算法,s指金鑰。

加密的方法非常多,如des資料加密標準的加密演算法,ras公開金鑰加密演算法,md5等,這些演算法都非常安全,但也非常複雜,可根據需要選用,這裡採用一般的加密方法,這些方法也是加密的基本原則。加密的基本方法是替換、變位和新增冗餘資訊。替換是將某一資訊固定地替換為另一資訊,如a變為e等;變位是將資訊的順序按一定規律變為另一種順序,新增冗餘是在有用的資訊中新增無用的資訊以增加破譯的難度。如下例所示:

8

5

2

8

4

6

2

7

1 39

0578

3896

6429

8760

7054

8650

金鑰為852846271,守護程式向驗證程式傳送的隨機數為390578389705486504,將明文按先行後列的順序排列,第二行為隨機的冗餘資訊,密文按先列後行的順序輸出,列的順序按密碼由小到大,先左後右,這樣密文為904045375798960886860367524,再將前兩個9替換為4,這時密文為404045375748960886860367524。

如需提高加密強度,可採用增加金鑰、隨機數、冗餘首席資訊官度,並將以上密文再次變換等方法。

用DELPHI編寫NT服務時,如何指定依存關係?

q 我用delphi編寫了乙個nt的服務,且設定為自動啟動,可每次伺服器重啟後,該服務不能自動啟動。我感覺是由於該服務啟動時使用了sqlserver資料庫,可能由於sqlserver服務沒有啟動完成,導致該服務無法啟動,所以我想指定該服務的依存關係,讓它在sqlserver服務啟動完畢後再啟動,如何...

phpmyAdmin 用nginx服務其網頁

平時工作中用mysql做資料庫後,經常需要檢視表結構,修改表結構,做一些查詢,在linux的laptop或者工作機上缺少乙個趁手的mysql ui工具,查了下用phpmyadmin來做這個。但是大多數文章都是用apache來做phpmyadmin的web伺服器,而我機器上已經有了nginx,應該可以...

用canonical屬性為WP ZB規範網頁

什麼是規範網頁?為什麼要指定規範網頁?規範網頁是一組內容高度相似的網頁的首選版本。對於 來說,包含多個列有同組產品的網頁很正常。例如,乙個網頁可能按字母表順序顯示產品,而其他網頁則按照 或評分顯示相同產品。如 如果 google 知道這些網頁的內容相同,可能只會將搜尋結果的乙個版本編入索引。gg的演...