本發(fā)明屬于信息安全技術領域,涉及電力系統無線通信數據認證、電動汽車充電管理云平臺認證終端或物聯網設備接入數據認證,具體涉及一種分級時效的動態(tài)口令加密算法。
背景技術:
在國外,動態(tài)口令與基于PKI數字證書的認證技術相比具有使用方便、成本低、免維護、應用面廣等優(yōu)點,在金融、政府、制造業(yè)等眾多領域得到大量成功應用。在國內,隨著國內網上交易爆炸式增長,安全問題日益突出,動態(tài)密碼的優(yōu)點越來越受到人們的青睞。
動態(tài)口令作為目前最安全的身份認證技術之一,已經被越來越多的行業(yè)所應用。動態(tài)口令具有使用便捷、平臺無關等特性,隨著移動互聯網的發(fā)展,動態(tài)口令技術被廣泛應用于企業(yè)、金融、電子商務、物聯網等領域。但是,由于互聯網的開放性,它不受時空限制,也極易遭受惡意攻擊和入侵,因此網絡安全保護成為互聯網時代一個不可或缺的話題,在網絡強國戰(zhàn)略寫入“十三五“規(guī)劃這一大背景下,我國首部《網絡安全法》已經于2016年11月發(fā)布。
在互聯網應用中,身份認證、訪問控制、數據加密、防篡改、防抵賴是安全保護的幾個基本要素,身份認證是第一道防線,也是最重要的一道防線,近年來基于身份認證的安全技術發(fā)展很快,其中比較成熟的是基于PKI數字證書和動態(tài)密碼技術。動態(tài)密碼可方便地與靜態(tài)PIN碼、SSL加密傳輸等安全技術結合,具有經濟、安全的特點,因而被廣泛應用于遠程身份認證和安全交易支付中。傳統的動態(tài)口令方法都是基于時間同步的動態(tài)口令,對標準時間用口令生成密鑰(公鑰) 加密生成動態(tài)口令。
但是,對于電力系統認證交互過程中對于一些特殊權限操作,需要登錄人員進行二次口令驗證的情況,在取得合法登錄身份后,使用動態(tài)口令在一定時效范圍內進行有限制的功能操作,因此需要對動態(tài)口令進行時效分級,比如在小時級范圍內進行操作或者在分鐘級范圍進行操作,即通過不同時效的動態(tài)口令達到控制權限操作的目的。
技術實現要素:
本發(fā)明要解決的技術問題是提供一種分級時效的動態(tài)口令加密算法,其從當前日期和時刻提取不同的時間維度,通過選取時間維度的組合,支持時效分級控制,支持不同的時間維度組合方案和時效驗證控制,防止偽造,增強加密強度。
為解決上述技術問題,本發(fā)明采用的技術方案是:
一種分級時效的動態(tài)口令加密算法,包括以下步驟:
S1、基于時間信息生成DSR字符串
S101、設置年代因子Y,其值在0和15之間,記為Y=[0,15],
S102、系統獲取當前日期和時刻,提取當前年yi、指定基準年y0,每16年為一個步長,計算當前年的年代指數y=(yi- y0-Y)%16,設置年代系數C,其值在0和255之間,C=(yi- y0-Y)/16,取整,
S103、計算該日期在全年中是第幾天,記為d1,計算該日期是一周中的第幾天,記為d2,取當前小時時間,記為d3,取當前分鐘值,記為d4,
S104、產生隨機數R,將隨機數R進行6位長度字符串格式化運算,記為r,
S105、選擇r、y和C,并與d1、 d2、d3或d4中一個或兩個以上按設定規(guī)則組合排列,并進行3DES加密,生成字符串DSR;
S2、基于ASCII字符集生成字符串ESV
S201、從ASCII字符集中選取64個字符作為密碼集S1,記為,
S202、設置0-63亂序排列的轉換矩陣V,對密碼集S1進行矩陣轉換,記為密碼集S2,
S203、從密碼集S1中取字符串序列轉換成密碼集S2中的字符生成字符串SV,并按照設定的規(guī)則與步驟S102中當前年的年代指數y值排序,然后進行3DES加密,生成字符串ESV;
S3、將字符串DSR與字符串ESV進行長度比較,不足者左側用0補齊后進行異或運算,將結果記為T,并將T按16進制格式轉換成字符串作為動態(tài)口令token,記為t。
上述技術方案中,字符串DSR的生成基于隨機指定的年代因子、并依賴于當前日期和/或時刻。從當前日期和時刻提取不同時間維度,通過選取不同的時間維度并與隨機值、年代指數、年代系數亂序排列生成字符串并加密。字符串ESV的生成基于ASCII字符集,經過亂序轉換矩陣的轉換、與年代指數組合生成字符串加密。經過多層加密和亂序轉換,增強加密強度。
采用上述技術方案產生的有益效果在于:(1)本發(fā)明自定義矩陣轉換字符串密碼表,增強加密強度;(2)使用年代因子、年代系數和年代指數,指定基準時間,時間跨度多達4000年;(3)引入隨機數概念,支持不同時間維度組合;(4)引入當前日期天數和星期概念,通過時間維度分級,對口令實現時效管理;(5)使用兩組不同的3DES加密機制,支持系統級和終端節(jié)點分別加密;(6)具備時間因子和時間系數的自我校驗功能;(7)token根據密鑰強度,支持簡單、中度、復雜等級別,用戶可以選擇適合自己的加密方式。
附圖說明
圖1是本發(fā)明動態(tài)口令加密的流程圖。
具體實施方式
A、基于時間信息生成DSR字符串
S101、設置年代因子Y,其值在0和15之間,記為Y=[0,15],不同的用戶可以自由指定年代因子Y值,本實施例中設置年代因子Y=10。
S102、系統計算獲取當前日期和時刻,提取當前年yi、指定基準年y0,每16年為一個步長,計算當前年的年代指數y=(yi- y0-Y)%16。并設置年代系數C,其值在0和255之間,C=(yi- y0-Y)/16,取整。每16年為一個步長,年份每增加16年,年代系數C加1,該方法可以用于的時間跨度多達4000年。y=( yi- y0) -Y-16×C,支持時效驗證。
比如,當天日期為2016年11月11日,指定基準年y0=2000年,則根據(yi- y0-Y)/16計算,其整數為年代系數C,余數為當前年的年代指數,本實施例中C=0,y=6。
S103、計算該日期在全年中是第幾天,記為d1,計算該日期是一周中的第幾天,記為d2,取當前小時時間,記為d3,取當前分鐘值,記為d4。
由2016年11月11日,可以計算該日為一年中的第316天,即d1=316,當天是周五,即d2=6(周日、周一到周六分別對應1-7),時間是14:30分,則d3=14,d4=30。
S104、產生隨機數R,將隨機數R進行6位長度字符串格式化運算,記為r。
設r=“12345”。
S105、選擇r、y和C,并與d1、 d2、d3或d4中一個或兩個以上按設定規(guī)則組合排列,并進行3DES加密,生成字符串DSR。
本實施例中選擇d1、 d2、d3和d4與r、y和C按照r-d1-d3-d4-d2-C-y的方式組合,則有字符串“123453161430060006”,并將該字符串進行3DES加密,生成字符串DSR。
S2、基于ASCII字符集生成字符串ESV
S201、從ASCII字符集中選取64個字符作為密碼集S1,記為,
本實施例設置密碼集S1=
{ A B C D E F G H }
{ I J K L M N O P }
{ Q R S T U V W X }
{ a b c d e f g h }
{ i j k o p q r s }
{ t u v x z 1 2 3 }
{ 4 5 6 7 8 9 0 ! }
{ @ # $ % ^ & * ( }
S202、設置0-63亂序排列的轉換矩陣V,對密碼集S1進行矩陣轉換。
本實施例設置亂序排列的轉換矩陣V=
{ 50 4 20 28 8 30 17 35 }
{ 3 27 21 36 1 9 29 46 }
{ 48 16 0 5 13 37 18 11 }
{ 26 49 7 23 33 2 10 38 }
{ 51 24 14 22 52 34 39 19 }
{ 25 41 53 56 40 32 12 6 }
{ 31 42 15 44 61 63 60 47 }
{ 55 54 59 43 57 45 58 62 }
則有密碼集S2=
{ S M f I B T 3 c }
{ E N g X 2 U k 6 }
{ R G W s C K o d }
{ j t a J D O F 4 }
{ 1 e q H L V h r }
{ z u 5 % 7 & P ! }
{ Q b A i p v # @ }
{ x ^ * $ 0 8 ( 9 }
S203、從密碼集S1中取字符串序列轉換成密碼集S2中的字符生成字符串SV,并按照設定的規(guī)則與步驟S102中當前年的年代指數y值排序,然后進行3DES加密,生成字符串ESV。
本實施例中設有字符串“PiNg1978”,轉換后得SV為“61UF&vip”,增加步驟S102中當前年的年代指數y=6,得到字符串“61UF&vip0006”,將該步驟中的字符串進行3DES加密轉化,生成字符串ESV。
在其它實施例中字符串SV還可以按照設定的規(guī)則與步驟S102中當前年的年代指數y值和年代因子C值進行排序。
S3、將字符串DSR與字符串ESV進行長度比較,不足者左側用0補齊后進行異或運算,將結果記為T,并將T按16進制格式轉換成字符串作為動態(tài)口令token,記為t。
本實施例中將T轉為16進制字符串,得“ASE4343334dd454”。
綜上所述,本發(fā)明采用兩維度矩陣加密技術,基于時間的動態(tài)口令,支持分級控制,支持不同的時間維度組合方案,支持不同的時效驗證控制,具備時間因子和時間系數的自我校驗功能,防偽造。