密碼加密方法和系統(tǒng)以及密碼校驗方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種密碼加密方法,用于對用戶的密碼進行加密,其中每個用戶具有唯一識別碼,該方法包括步驟:獲取固定字符串;將唯一識別碼、固定字符串、密碼串接成串接字符串;通過散列算法對串接字符串執(zhí)行摘要運算,獲得用戶的密碼摘要值。通過應用根據(jù)本發(fā)明的密碼加密方法和系統(tǒng)以及密碼校驗方法和系統(tǒng),本發(fā)明能夠應用于卡密數(shù)據(jù)保護、用戶的安保問題答案保護等等。由于本發(fā)明在用戶密碼摘要值運算過程中,增加了用戶唯一因子——用戶唯一識別碼,確保了用戶密碼摘要值的唯一性,從而賦予了密碼數(shù)據(jù)庫文件抵抗選擇明文攻擊和事先選擇明文攻擊的能力。
【專利說明】密碼加密方法和系統(tǒng)以及密碼校驗方法和系統(tǒng)
【技術領域】
[0001]本發(fā)明涉及數(shù)據(jù)通信領域,更具體地,涉及密碼加密方法和系統(tǒng)以及密碼校驗方法和系統(tǒng)。
【背景技術】
[0002]密碼(password),或稱為口令,是指認證用途的字詞,可用來驗證身份或檢查一項操作的許可,達到保護隱私以及防止未經(jīng)授權的操作的目的。常見于網(wǎng)站登錄、對網(wǎng)絡資料庫存取、自動取款機的驗證等等。
[0003]密碼學(cryptography)是研究如何隱密地傳遞信息的學科。在現(xiàn)代特別指對信息以及其傳輸?shù)臄?shù)學性研究,常被認為是數(shù)學和計算機科學的分支,和信息論也密切相關。著名的密碼學者Ron Rivest解釋道:“密碼學是關于如何在敵人存在的環(huán)境中通訊”,自工程學的角度,這相當于密碼學與純數(shù)學的異同。密碼學是信息安全等相關議題,如認證、訪問控制的核心。密碼學的首要目的是隱藏信息的涵義,并不是隱藏信息的存在。密碼學也促進了計算機科學,特別是在于電腦與網(wǎng)絡安全所使用的技術,如訪問控制與信息的機密性。密碼學已被應用在日常生活:包括自動柜員機的芯片卡、電腦使用者存取密碼、電子商務等
坐寸ο
[0004]現(xiàn)代密碼學技術主要涉及散列函數(shù)。散列函數(shù)又被稱為Hash函數(shù)(也叫雜湊函數(shù)),就是把任意長的輸入消息串轉化成固定長度的輸出串的一種函數(shù),這個輸出串被稱為該消息的散列值(或雜湊值)。散列函數(shù)一般用于產(chǎn)生消息摘要、密鑰加密等。
[0005]“消息摘要”(Message Digest)是一種能產(chǎn)生特殊輸出格式的算法,這種加密算法的特點是:無論用戶輸入什么長度的原始數(shù)據(jù),經(jīng)過計算后輸出的密文都是固定長度的,這種算法的原理是根據(jù)一定的運算規(guī)則對原數(shù)據(jù)進行某種形式的提取,這種提取就是“摘要”,被“摘要”的數(shù)據(jù)內容與原數(shù)據(jù)有密切聯(lián)系,只要原數(shù)據(jù)稍有改變,輸出的“摘要”便完全不同。但是,由于輸出的密文是提取原數(shù)據(jù)經(jīng)過處理的定長值,所以它已經(jīng)不能還原為原數(shù)據(jù),即消息摘要算法是“不可逆”的,理論上無法通過反向運算取得原數(shù)據(jù)內容,因此它通常只能被用來做數(shù)據(jù)完整性驗證,而不能作為原數(shù)據(jù)內容的加密方案使用,否則誰也無法還原。消息摘要算法的主要特征是加密過程不需要密鑰,并且經(jīng)過加密的數(shù)據(jù)無法被解密,只有輸入相同的明文數(shù)據(jù)經(jīng)過相同的消息摘要算法才能得到相同的密文。一般地,只要輸入的消息不同,對其進行摘要以后產(chǎn)生的摘要消息也必不相同;但相同的輸入必會產(chǎn)生相同的輸出。
[0006]一個安全的散列函數(shù)應該至少滿足以下幾個條件:①輸入長度是任意的;②輸出長度是固定的,根據(jù)目前的計算技術應至少取128bit ;③對每一個給定的輸入,計算其散列值是很容易的;④構造兩個獨立的有相同散列值的輸入在計算上是不可行的。
[0007]散列函數(shù)主要用于完整性校驗和提高數(shù)字簽名的有效性,目前已有很多方案。這些算法是偽隨機函數(shù),輸出域內任何散列值都是可能的;散列值以不可辨別的方式依賴于輸入;在任何輸入串中單個比特的變化,將會導致輸出比特串中大約一半的比特發(fā)生變化。[0008]常見散列函數(shù)主要有以下幾類:①MD5 (Message Digest Algorithm 5)是RSA數(shù)據(jù)安全公司開發(fā)的一種單向散列算法,可以用來把不同長度的數(shù)據(jù)塊進行暗碼運算成一個128位的數(shù)值,應用廣泛;②SHA (Secure Hash Algorithm)是一種較新的散列算法,可以對任意長度的數(shù)據(jù)運算生成一個160位的數(shù)值;③MAC (Message AuthenticationCode)是消息認證代碼,一種使用密鑰的單向函數(shù),可以用它們在系統(tǒng)上或用戶之間認證文件或消息;④CRC (Cyclic Redundancy Check)是循環(huán)冗余校驗碼,CRC校驗由于實現(xiàn)簡單,檢錯能力強,被廣泛應用在各種數(shù)據(jù)校驗應用中,由于其占用系統(tǒng)資源少,用軟硬件均能實現(xiàn),是進行數(shù)據(jù)傳輸差錯檢測的一種很好的手段(CRC并不是嚴格意義上的散列算法,但它的作用與散列算法大致相同,所以歸于此類)。目前常見的散列算法包括HAVAL、MD2、MD4、MD5、PANAMA、RadioGatto、RIPEMD, RIPEMD-128/256、RIPEMD-160/320、SHA-O, SHA-USHA-256/224、SHA-512/384、Tiger (2) -192/160/128、WHIRLPOOL 等等。
[0009]2011年底和2012年初,許多網(wǎng)站的用戶密碼被泄露,其根本原因是用戶密碼明文存放和密碼文件訪問控制措施不夠嚴密。防止密碼文件被拖庫涉及到信息安全的很多方面,要徹底防住很難。
[0010]用戶密碼文件被攻擊者竊取后,攻擊者可以對用戶密碼文件嘗試以下幾種攻擊:密碼是否加密;密碼密文統(tǒng)計特征分析;選擇密碼明文攻擊;事前選擇密碼明文攻擊。
[0011]目前國際國內網(wǎng)站對用戶密碼的存儲保護辦法有以下三種:
[0012](I)直接將密碼以明文字符串的形式存放到數(shù)據(jù)庫;
[0013](2)先用哈希算法MD5對用戶密碼做摘要,然后將摘要值或其Base64編碼運算結果存入數(shù)據(jù)庫;
[0014](3)先設定一個固定的字符串(稱為Salt),然后將Salt和用戶密碼串接起來,再用哈希算法MD5對串接的結果字符串做摘要,最終將摘要值或其Base64編碼運算結果存入數(shù)據(jù)庫。其中Salt值需要采取嚴格措施確保其機密性,可以采用的辦法包括但不限于:將Salt與用戶密碼分開存放,嚴格限制只有授權的用戶/程序才能讀取Salt。
[0015]在辦法(2)和(3)中,還可以采用SHA1、SHA192、SHA256、SHA384、SHA512 等哈希算法取代MD5。
[0016]上述3種用戶密碼存儲辦法中:
[0017](I)第一種辦法最不安全,一旦用戶密碼數(shù)據(jù)庫被竊取,用戶密碼將全部暴露;
[0018](2)第二種辦法不會直接泄露密碼明文,但攻擊者拿到密碼數(shù)據(jù)庫后,可以通過選擇明文攻擊(通過密碼字典選擇密碼明文,對其做MD5摘要,然后將摘要值與數(shù)據(jù)庫密碼摘要字段進行比較,如果2個摘要相等,則該用戶密碼即為該密碼明文)破解出用戶密碼;
[0019](3)第三種辦法不會泄露密碼明文,并且可以防止攻擊者拿到密碼數(shù)據(jù)庫后的選擇明文攻擊(假設攻擊拿不到Salt,且Salt足夠長)。但攻擊者可以進行事先選擇明文攻擊,在竊取密碼數(shù)據(jù)庫之前,攻擊者在目標網(wǎng)站注冊許多賬戶,將這些賬戶的密碼設置為互聯(lián)網(wǎng)用戶比較常用的那些密碼(這個密碼列表是公開的,可以直接從互聯(lián)網(wǎng)上獲取到),并記錄下來;然后攻擊者竊取網(wǎng)站的密碼數(shù)據(jù)庫,并根據(jù)他注冊的賬戶名,查找到該賬戶對應的密碼的密文值,然后在密碼數(shù)據(jù)庫中查找密碼密文值相同的字段,如有,則該字段對應的用戶的密碼與攻擊者注冊賬戶的密碼一致,攻擊者通過查詢預先記錄的賬戶注冊信息就獲得了該用戶的密碼明文。[0020]MD5算法產(chǎn)生的摘要長度為128bit (16byte),其安全性較低,在當前的計算能力下,很各易被窮舉攻擊所破解。
[0021]另外,在當前的互聯(lián)網(wǎng)環(huán)境中,一個用戶會在很多網(wǎng)站上注冊賬戶。為了便于記憶,許多用戶會將不同網(wǎng)站上的賬戶的賬戶名和密碼設置成一樣,或只做少量變化。這些網(wǎng)站對用戶密碼的安全保護程度是不一樣的,攻擊者可以先攻擊安全保護程度差的網(wǎng)站,竊取到該網(wǎng)站的用戶密碼文件后,破解出用戶名和密碼,然后再到其要攻擊的網(wǎng)站上去,根據(jù)已破解的用戶名/密碼表進行窮舉登錄嘗試,可以批量獲取特定的賬戶名和密碼。上述三種辦法都不能很好地對付這種攻擊方式。究其原因,在于部分用戶在不同網(wǎng)站上設置了相同的用戶名/密碼,其中一個網(wǎng)站上的用戶信息泄露,導致其他網(wǎng)站上的相同用戶信息全部泄露。
[0022]總而言之,現(xiàn)有技術中,并不存在一種保證即使存放用戶密碼的數(shù)據(jù)庫文件被竊也不會泄露任何用戶密碼信息的技術方案。
【發(fā)明內容】
[0023]本發(fā)明的目的在于,提供能夠將密碼文件拖庫后的信息泄露風險控制到最低的技術方案。
[0024]根據(jù)本發(fā)明的一方面,提供了一種密碼加密方法,用于對用戶的密碼進行加密,其中每個用戶具有唯一識別碼,該方法包括步驟:獲取固定字符串;將唯一識別碼、固定字符串、密碼串接成串接字符串;通過散列算法對串接字符串執(zhí)行摘要運算,獲得用戶的密碼摘要值。
[0025]根據(jù)本發(fā)明的實施方式,固定字符串的存放位置可以不同于密碼摘要值的存放位置。
[0026]根據(jù)本發(fā)明的實施方式,該方法可以進一步包括對密碼摘要值進行編碼,獲得用戶的密碼編碼值。編碼可以是Base64編碼等。固定字符串的存放位置可以不同于密碼編碼值的存放位置。
[0027]根據(jù)本發(fā)明的實施方式,散列算法可以是SHA1、SHA192、SHA256、SHA384、SHA512、HMAC-SHAI, HMAC-SHA192, HMAC-SHA256、HMAC-SHA384、HMAC-SHA512 等。
[0028]根據(jù)本發(fā)明的實施方式,唯一識別碼、固定字符串、密碼的串接順序可以是可調的。
[0029]根據(jù)本發(fā)明的另一方面,提供了一種密碼校驗方法,用于對用戶的密碼進行校驗,其中每個用戶具有唯一識別碼以及密碼數(shù)據(jù),該方法包括步驟:根據(jù)用戶輸入獲取唯一標識碼和用戶輸入密碼;獲取與密碼數(shù)據(jù)相關的固定字符串;將唯一識別碼、固定字符串、用戶輸入密碼串接成串接字符串;通過散列算法對串接字符串執(zhí)行摘要運算,獲得摘要運算結果作為用戶的待驗密碼數(shù)據(jù);將待驗密碼數(shù)據(jù)與用戶的密碼數(shù)據(jù)進行比較,獲得校驗結果O
[0030]根據(jù)本發(fā)明的實施方式,固定字符串的存放位置可以不同于密碼數(shù)據(jù)的存放位置。
[0031]根據(jù)本發(fā)明的實施方式,通過散列算法對串接字符串執(zhí)行摘要運算后可以對所述摘要運算結果進行編碼,獲得經(jīng)編碼的摘要運算結果作為用戶的待驗密碼數(shù)據(jù)。編碼可以是Base64編碼等。
[0032]根據(jù)本發(fā)明的實施方式,散列算法可以是SHA1、SHA192、SHA256、SHA384、SHA512、HMAC-SHAI, HMAC-SHA192, HMAC-SHA256、HMAC-SHA384、HMAC-SHA512 等。
[0033]根據(jù)本發(fā)明的實施方式,唯一識別碼、固定字符串、密碼的串接順序可以是可調的。
[0034]根據(jù)本發(fā)明的又一方面,提供了一種密碼加密系統(tǒng),用于對用戶的密碼進行加密,其中每個用戶具有唯一識別碼,其特征在于,系統(tǒng)包括:獲取裝置,用于獲取固定字符串;串接裝置,用于將唯一識別碼、固定字符串、密碼串接成串接字符串;摘要裝置,用于通過散列算法對串接字符串執(zhí)行摘要運算,獲得用戶的密碼摘要值。
[0035]根據(jù)本發(fā)明的實施方式,固定字符串的存放位置可以不同于密碼摘要值的存放位置。
[0036]根據(jù)本發(fā)明的實施方式,該系統(tǒng)可以進一步包括編碼裝置,用于對密碼摘要值進行編碼,獲得用戶的密碼編碼值。編碼可以是Base64編碼等。固定字符串的存放位置可以不同于密碼編碼值的存放位置。
[0037]根據(jù)本發(fā)明的實施方式,散列算法可以是SHA1、SHA192、SHA256、SHA384、SHA512、HMAC-SHAI, HMAC-SHA192, HMAC-SHA256、HMAC-SHA384、HMAC-SHA512 等。
[0038]根據(jù)本發(fā)明的實施方式,唯一識別碼、固定字符串、密碼的串接順序可以是可調的。
[0039]根據(jù)本發(fā)明的再一方面,提供了一種密碼校驗系統(tǒng),用于對用戶的密碼進行校驗,其中每個用戶具有唯一識別碼以及密碼數(shù)據(jù),其特征在于,系統(tǒng)包括:第一獲取裝置,用于根據(jù)用戶輸入獲取唯一標識碼和用戶輸入密碼;第二獲取裝置,用于獲取與密碼數(shù)據(jù)相關的固定字符串;串接裝置,用于將唯一識別碼、固定字符串、用戶輸入密碼串接成串接字符串;運算裝置,用于通過散列算法對串接字符串執(zhí)行摘要運算,獲得摘要運算結果作為用戶的待驗密碼數(shù)據(jù);校驗裝置,用于將待驗密碼數(shù)據(jù)與用戶的密碼數(shù)據(jù)進行比較,獲得校驗結果O
[0040]根據(jù)本發(fā)明的實施方式,固定字符串的存放位置可以不同于密碼數(shù)據(jù)的存放位置。
[0041]根據(jù)本發(fā)明的實施方式,運算裝置在通過散列算法對串接字符串執(zhí)行摘要運算后可以對所述摘要運算結果進行編碼,獲得經(jīng)編碼的摘要運算結果作為用戶的待驗密碼數(shù)據(jù)。編碼可以是Base64編碼等。
[0042]根據(jù)本發(fā)明的實施方式,散列算法可以是SHA1、SHA192、SHA256、SHA384、SHA512、HMAC-SHAI, HMAC-SHA192, HMAC-SHA256、HMAC-SHA384、HMAC-SHA512 等。
[0043]根據(jù)本發(fā)明的實施方式,唯一識別碼、固定字符串、密碼的串接順序可以是可調的。
[0044]不同于現(xiàn)有技術,根據(jù)本發(fā)明的各種實施方式,通過應用根據(jù)本發(fā)明的密碼加密方法和系統(tǒng)以及密碼校驗方法和系統(tǒng),本發(fā)明能夠應用于卡密數(shù)據(jù)保護、用戶的安保問題答案保護等等。由于本發(fā)明在用戶密碼摘要值運算過程中,增加了用戶唯一因子一用戶唯一識別碼,確保了用戶密碼摘要值的唯一性,從而賦予了密碼數(shù)據(jù)庫文件抵抗選擇明文攻擊和事先選擇明文攻擊的能力?!緦@綀D】
【附圖說明】
[0045]通過對結合附圖所示出的實施方式進行詳細說明,本發(fā)明的上述以及其他特征將更加明顯,本發(fā)明附圖中相同的參考標號表示相同或相似的元素。在附圖中:
[0046]圖1是根據(jù)本發(fā)明的實施方式的密碼加密方法的流程圖;
[0047]圖2是根據(jù)本發(fā)明的實施方式的密碼校驗方法的流程圖;
[0048]圖3是根據(jù)本發(fā)明的實施方式的密碼加密系統(tǒng)的框圖;
[0049]圖4是根據(jù)本發(fā)明的實施方式的密碼校驗系統(tǒng)的框圖;
[0050]圖5是用來實踐本發(fā)明實施方式的計算機系統(tǒng)的示意性框圖。
【具體實施方式】
[0051]下面結合圖1來闡述根據(jù)本發(fā)明的實施方式的密碼加密方案。
[0052]根據(jù)本發(fā)明的密碼加密方法用于對用戶的密碼進行加密,其中每個用戶具有唯一識別碼。該唯一識別碼可以是用戶名或用戶ID(網(wǎng)站分配給每個用戶的一個具備唯一性的數(shù)字編號)。需要進行加密的用戶密碼是與每個用戶對應的,也就是與用戶的唯一識別碼對應的。
[0053]在步驟S102中,獲取固定字符串。該固定字符串可以是一個固定的定長字符串,稱為網(wǎng)站秘密因子或Salt。該字符串優(yōu)選地與用戶密碼數(shù)據(jù)庫分開存放,嚴格限制只有授權的用戶/程序才能讀取。可選地,不同于上述只采用同一個salt值的情況,可以為每個用戶生成與之唯一識別碼對應的salt值,并將唯一識別碼與salt值一一對應地進行存儲,同樣優(yōu)選地與用戶密碼數(shù)據(jù)庫分開存放,嚴格限制只有授權的用戶/程序才能讀取。
[0054]在步驟S104中,將唯一識別碼、固定字符串、密碼串接成串接字符串??梢哉{整網(wǎng)站秘密因子、用戶唯一識別碼和用戶密碼的串接順序。如果是一個唯一識別碼對應一個salt值的情況,則相應地是將用戶唯一識別碼、與該唯一識別碼對應的salt值、用戶密碼串接成串接字符串。
[0055]在步驟S106中,通過散列算法對串接字符串執(zhí)行摘要運算,獲得用戶的密碼摘要值。優(yōu)選地通過哈希算法SHA-256對串接結果字符串執(zhí)行摘要運算。SHA-256是美國國家標準和技術局發(fā)布的標準FIPS PUB 180中規(guī)定的一種單向散列算法,適用于長度不超過2~64 二進制位的消息。其輸出散列值長度256bit,中繼散列值長度256bit,數(shù)據(jù)區(qū)塊長度512bit,最大輸入信息長度(2~64-l)bit,一個Word長度32bit,循環(huán)次數(shù)64??梢哉{整摘要計算方法,如用SHA1、SHA192、SHA384、SHA512等摘要算法,或者用HMAC-SHA1、HMAC-SHA192,HMAC-SHA256,HMAC-SHA384,HMAC-SHA512 等 HMAC 算法來計算摘要值(摘要值=HMAC算法(網(wǎng)站秘密因子,用戶唯一識別碼+用戶密碼))。
[0056]根據(jù)本發(fā)明的實施方式,該方法可以進一步包括對密碼摘要值進行編碼,獲得用戶的密碼編碼值。優(yōu)選地對摘要運算結果執(zhí)行Base64編碼。Base64編碼被設計用來把任意序列的8位字節(jié)描述為一種不易被人直接識別的形式。Base64編碼要求把每3個8位字節(jié)(3*8=24)轉化為4個6位的字節(jié)(4*6=24),之后在6位的前面補兩個0,形成8位一個字節(jié)的形式。最后將編碼結果存入用戶密碼數(shù)據(jù)庫相應字段。
[0057]下面結合圖2來闡述根據(jù)本發(fā)明的實施方式的密碼校驗方案。[0058]根據(jù)本發(fā)明的密碼校驗方法與根據(jù)本發(fā)明的密碼加密方法對應,用于對用戶的密碼進行校驗,其中每個用戶具有唯一識別碼以及密碼數(shù)據(jù)。該唯一識別碼可以是用戶名或用戶ID (網(wǎng)站分配給每個用戶的一個具備唯一性的數(shù)字編號)。需要進行校驗的用戶密碼是與每個用戶對應的,也就是與用戶的唯一識別碼對應的。
[0059]在步驟S202中,根據(jù)用戶輸入獲取唯一標識碼和用戶輸入密碼。一般是網(wǎng)站獲取用戶輸入的用戶名和密碼。
[0060]在步驟S204中,獲取與密碼數(shù)據(jù)相關的固定字符串。該固定字符串可以是一個固定的定長字符串,稱為網(wǎng)站秘密因子或Salt。該字符串優(yōu)選地與用戶密碼數(shù)據(jù)庫分開存放,嚴格限制只有授權的用戶/程序才能讀取。一般是服務器預先或臨時獲取用戶密碼保護相關的網(wǎng)站秘密因子(Salt),然后服務器根據(jù)用戶輸入的用戶名查找到該用戶名對應的用戶唯一識別碼??蛇x地,不同于上述只采用同一個salt值的情況,可以為每個用戶生成與之唯一識別碼對應的salt值,并將唯一識別碼與salt值一一對應地進行存儲,同樣優(yōu)選地與用戶密碼數(shù)據(jù)庫分開存放,嚴格限制只有授權的用戶/程序才能讀取。在一個唯一識別碼對應一個salt值的情況下,相應地是服務器根據(jù)用戶輸入的用戶名查找到該用戶名對應的用戶唯一識別碼,然后服務器在存儲唯一識別碼和salt值的地方獲取與該唯一識別碼對應的Salt。
[0061]在步驟S206中,將唯一識別碼、固定字符串、用戶輸入密碼串接成串接字符串??梢砸勒彰艽a加密方法,調整網(wǎng)站秘密因子、用戶唯一識別碼和用戶密碼的串接順序。也就是說,加密時的串接順序與進行校驗時的串接順序是相同的。
[0062]在步驟S208中,通過散列算法對串接字符串執(zhí)行摘要運算,獲得摘要運算結果作為用戶的待驗密碼數(shù)據(jù)。優(yōu)選地依照密碼加密方法通過哈希算法SHA-256對串接結果字符串執(zhí)行摘要運算??梢砸勒彰艽a加密方法,調整摘要計算方法,如用SHA1、SHA192、SHA384.SHA512 等摘要算法,或者用 HMAC-SHA1、HMAC-SHA192、HMAC-SHA256、HMAC-SHA384、HMAC-SHA512等HMAC算法來計算摘要值(摘要值=HMAC算法(網(wǎng)站秘密因子,用戶唯一識別碼+用戶密碼))。也就是說,加密時用的摘要算法與進行校驗時采用的摘要算法是相同的。
[0063]在步驟S210中,將待驗密碼數(shù)據(jù)與用戶的密碼數(shù)據(jù)進行比較,獲得校驗結果。這種情況下,用戶的密碼數(shù)據(jù)是沒有經(jīng)過編碼步驟的,也就是說,這種情況下用戶的密碼數(shù)據(jù)即是密碼摘要值。因此,將摘要運算結果與用戶密碼數(shù)據(jù)庫存儲的密碼摘要值進行比較。相等,則校驗通過,證明是該用戶,授予相應權限;否則,則校驗不通過,不予訪問。
[0064]根據(jù)本發(fā)明的實施方式,通過散列算法對串接字符串執(zhí)行摘要運算后可以依照密碼加密方法對摘要運算結果進行編碼,獲得經(jīng)編碼的摘要運算結果作為用戶的待驗密碼數(shù)據(jù)。也就是說,如果加密時對密碼摘要值進行了編碼,編碼結果存儲作為密碼數(shù)據(jù),那么校驗時也對摘要運算結果進行編碼,所需校驗的密碼數(shù)據(jù)就是一種密碼編碼值。優(yōu)選地依照密碼加密方法對摘要運算結果執(zhí)行Base64編碼。也就是說,如果加密時采用了 Base64編碼,那么進行校驗時也采用Base64編碼。然后將Base64編碼結果與用戶密碼數(shù)據(jù)庫存儲的密碼編碼值進行比較。
[0065]下面結合圖3來闡述根據(jù)本發(fā)明的實施方式的密碼加密系統(tǒng)300。
[0066]根據(jù)本發(fā)明的密碼加密系統(tǒng)300用于對用戶的密碼進行加密,其中每個用戶具有唯一識別碼。該唯一識別碼可以是用戶名或用戶ID(網(wǎng)站分配給每個用戶的一個具備唯一性的數(shù)字字母字符編號)。需要進行加密的用戶密碼是與每個用戶對應的,也就是與用戶的唯一識別碼對應的。系統(tǒng)300可以包括:獲取裝置302,用于獲取固定字符串,該固定字符串可以是一個固定的定長字符串,稱為網(wǎng)站秘密因子或Salt,可選地,不同于上述只采用同一個salt值的情況,可以為每個用戶生成與之唯一識別碼對應的salt值,并將唯一識別碼與salt值一一對應地進行存儲;串接裝置304,用于將唯一識別碼、固定字符串、密碼串接成串接字符串;摘要裝置306,用于通過散列算法對串接字符串執(zhí)行摘要運算,獲得用戶的密碼摘要值。
[0067]固定字符串的存放位置優(yōu)選地不同于密碼摘要值的存放位置。
[0068]系統(tǒng)300優(yōu)選地可以進一步包括編碼裝置,用于對密碼摘要值進行編碼,獲得用戶的密碼編碼值。編碼優(yōu)選地是Base64編碼等。固定字符串的存放位置優(yōu)選地不同于密碼編碼值的存放位置。
[0069]散列算法可以是SHA1、SHA192、SHA256、SHA384、SHA512、HMAC-SHA1、HMAC-SHA192、HMAC-SHA256、HMAC-SHA384、HMAC-SHA512 等。
[0070]唯一識別碼、固定字符串、密碼的串接順序優(yōu)選地是可調的。
[0071]下面結合圖4來闡述根據(jù)本發(fā)明的優(yōu)選實施方式的密碼校驗系統(tǒng)400。
[0072]根據(jù)本發(fā)明的密碼校驗系統(tǒng)400與根據(jù)本發(fā)明的密碼加密系統(tǒng)300對應,用于對用戶的密碼進行校驗,其中每個用戶具有唯一識別碼以及密碼數(shù)據(jù)。需要進行校驗的用戶密碼是與每個用戶對應的,也就是與用戶的唯一識別碼對應的。系統(tǒng)400可以包括:第一獲取裝置402,用于根據(jù)用戶輸入獲取唯一標識碼和用戶輸入密碼,一般是網(wǎng)站獲取用戶輸入的用戶名和密碼;第二獲取裝置404,用于獲取與密碼數(shù)據(jù)相關的固定字符串,該固定字符串可以是一個固定的定長字符串,稱為網(wǎng)站秘密因子或Salt,可選地,不同于上述只采用同一個salt值的情況,可以為每個用戶生成與之唯一識別碼對應的salt值,并將唯一識別碼與salt值一一對應地進行存儲,相應地是服務器根據(jù)用戶輸入的用戶名查找到該用戶名對應的用戶唯一識別碼,然后服務器在存儲唯一識別碼和salt值的地方獲取與該唯一識別碼對應的Salt ;串接裝置406,用于將唯一識別碼、固定字符串、用戶輸入密碼串接成串接字符串;運算裝置408,用于通過散列算法對串接字符串執(zhí)行摘要運算,獲得摘要運算結果作為用戶的待驗密碼數(shù)據(jù);校驗裝置410,用于將待驗密碼數(shù)據(jù)與用戶的密碼數(shù)據(jù)進行比較,獲得校驗結果,這種情況下,用戶的密碼數(shù)據(jù)是沒有經(jīng)過編碼步驟的,也就是說,這種情況下用戶的密碼數(shù)據(jù)即是密碼摘要值。因此,將摘要運算結果與用戶密碼數(shù)據(jù)庫存儲的密碼摘要值進行比較,相等,則校驗通過,證明是該用戶,授予相應權限,否則,則校驗不通過,不予訪問。
[0073]固定字符串的存放位置優(yōu)選地不同于密碼數(shù)據(jù)的存放位置。
[0074]運算裝置408在通過散列算法對串接字符串執(zhí)行摘要運算后優(yōu)選地對摘要運算結果進行編碼,獲得經(jīng)編碼的摘要運算結果作為用戶的待驗密碼數(shù)據(jù)。也就是說,如果加密系統(tǒng)300對密碼摘要值進行了編碼,編碼結果存儲作為密碼數(shù)據(jù),那么校驗系統(tǒng)400也對摘要運算結果進行編碼,所需校驗的密碼數(shù)據(jù)就是一種密碼編碼值。編碼優(yōu)選地是Base64編碼等。也就是說,如果加密系統(tǒng)300采用了 Base64編碼,那么校驗系統(tǒng)400也采用Base64編碼。
[0075]散列算法可以是SHA1、SHA192、SHA256、SHA384、SHA512、HMAC-SHA1、HMAC-SHA192、HMAC-SHA256、HMAC-SHA384、HMAC-SHA512等。也就是說,加密系統(tǒng)300采用的散列算法與校驗系統(tǒng)400采用的散列算法相同。
[0076]唯一識別碼、固定字符串、密碼的串接順序優(yōu)選地是可調的。也就是說,加密系統(tǒng)300采用的串接順序與校驗系統(tǒng)400采用的串接順序相同。
[0077]本發(fā)明的技術方案具有以下特點:
[0078](I)密碼編碼值是特定形式的密碼密文,不能通過直接讀取、解碼、解密等方式從所存儲的密碼編碼值中獲取到密碼的明文。
[0079](2)在不知道Salt的情況下,不可能生成正確的密碼編碼值,因此可以抵抗選擇明文攻擊。
[0080](3)為每個用戶生成的密碼編碼值都是不一樣的,不具備統(tǒng)計規(guī)律。因此,可以抵抗事先選擇明文攻擊。
[0081](4)哈希算法SHA256會產(chǎn)生256bit (32byte)長度的摘要,其安全強度和128bit密鑰長度的對稱加密算法AES相當,對商業(yè)用戶來說,在未來30年內被窮舉破解的可能性
非常小。
[0082]本發(fā)明還可以用于存儲保護安保問題答案,以及其他任何由用戶輸入、且不具備唯一性的內容。
[0083]圖5示出了適于用來實踐本發(fā)明實施方式的計算機系統(tǒng)的示意性框圖。如圖5所示,計算機系統(tǒng)可以包括:CPU (中央處理單元)501、RAM (隨機存取存儲器)502、ROM (只讀存儲器)503、系統(tǒng)總線504、硬盤控制器505、鍵盤控制器506、串行接口控制器507、并行接口控制器508、顯示控制器509、硬盤510、鍵盤511、串行外部設備512、并行外部設備513和顯示器514。在這些設備中,與系統(tǒng)總線504耦合的有CPU 501, RAM 502, ROM 503、硬盤控制器505、鍵盤控制器506、串行控制器507、并行控制器508和顯示控制器509。硬盤510與硬盤控制器505耦合,鍵盤511與鍵盤控制器506耦合,串行外部設備512與串行接口控制器507耦合,并行外部設備513與并行接口控制器508耦合,以及顯示器514與顯示控制器509耦合。
[0084]應當理解,圖5所示的結構框圖僅僅為了示例的目的而示出的,而不是對本發(fā)明范圍的限制。在某些情況下,可以根據(jù)具體情況而增加或者減少某些設備。
[0085]特別地,除硬件實施方式之外,本發(fā)明的實施方式可以通過計算機程序產(chǎn)品的形式實現(xiàn)。例如,參考圖1描述的方法可以通過計算機程序產(chǎn)品來實現(xiàn)。該計算機程序產(chǎn)品可以存儲在例如圖5所示的RAM 504、R0M504、硬盤510和/或任何適當?shù)拇鎯橘|中,或者通過網(wǎng)絡從適當?shù)奈恢孟螺d到計算機系統(tǒng)500上。計算機程序產(chǎn)品可以包括計算機代碼部分,其包括可由適當?shù)奶幚碓O備(例如,圖5中示出的CPU 501)執(zhí)行的程序指令。所述程序指令至少可以包括:用于獲取固定字符串的指令;用于將唯一識別碼、固定字符串、密碼串接成串接字符串的指令;以及用于通過散列算法對串接字符串執(zhí)行摘要運算,獲得用戶的密碼摘要值的指令。
[0086]應當注意,本發(fā)明的實施方式可以通過硬件、軟件或者軟件和硬件的結合來實現(xiàn)。硬件部分可以利用專用邏輯來實現(xiàn);軟件部分可以存儲在存儲器中,由適當?shù)闹噶顖?zhí)行系統(tǒng),例如微處理器或者專用設計硬件來執(zhí)行。本領域的普通技術人員可以理解上述的設備和方法可以使用計算機可執(zhí)行指令和/或包含在處理器控制代碼中來實現(xiàn),例如在諸如磁盤、CD或DVD-ROM的載體介質、諸如只讀存儲器(固件)的可編程的存儲器或者諸如光學或電子信號載體的數(shù)據(jù)載體上提供了這樣的代碼。本發(fā)明的設備及其模塊可以由諸如超大規(guī)模集成電路或門陣列、諸如邏輯芯片、晶體管等的半導體、或者諸如現(xiàn)場可編程門陣列、可編程邏輯設備等的可編程硬件設備的硬件電路實現(xiàn),也可以用由各種類型的處理器執(zhí)行的軟件實現(xiàn),也可以由上述硬件電路和軟件的結合例如固件來實現(xiàn)。
[0087]說明書中提及的通信網(wǎng)絡可以包括各類網(wǎng)絡,包括但不限于局域網(wǎng)(“LAN”),廣域網(wǎng)(“WAN”),根據(jù)IP協(xié)議的網(wǎng)絡(例如,因特網(wǎng))以及端對端網(wǎng)絡(例如,ad hoc對等網(wǎng)絡)。
[0088]應當注意,盡管在上文詳細描述中提及了設備的若干裝置或子裝置,但是這種劃分僅僅并非強制性的。實際上,根據(jù)本發(fā)明的實施方式,上文描述的兩個或更多裝置的特征和功能可以在一個裝置中具體化。反之,上文描述的一個裝置的特征和功能可以進一步劃分為由多個裝置來具體化。
[0089]此外,盡管在附圖中以特定順序描述了本發(fā)明方法的操作,但是,這并非要求或者暗示必須按照該特定順序來執(zhí)行這些操作,或是必須執(zhí)行全部所示的操作才能實現(xiàn)期望的結果。相反,流程圖中描繪的步驟可以改變執(zhí)行順序。附加地或備選地,可以省略某些步驟,將多個步驟合并為一個步驟執(zhí)行,和/或將一個步驟分解為多個步驟執(zhí)行。
[0090]本領域內的技術人員應明白,本申請的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。
[0091]雖然已經(jīng)參考若干【具體實施方式】描述了本發(fā)明,但是應該理解,本發(fā)明并不限于所公開的【具體實施方式】。本發(fā)明旨在涵蓋所附權利要求書的精神和范圍內所包括的各種修改和等同布置。所附權利要求書的范圍符合最寬泛的解釋,從而包含所有這樣的修改及等同結構和功能。
【權利要求】
1.一種密碼加密方法,用于對用戶的密碼進行加密,其中每個用戶具有唯一識別碼,其特征在于,所述方法包括步驟: 獲取固定字符串; 將所述唯一識別碼、所述固定字符串、所述密碼串接成串接字符串; 通過散列算法對所述串接字符串執(zhí)行摘要運算,獲得所述用戶的密碼摘要值。
2.根據(jù)權利要求1所述的密碼加密方法,其特征在于,所述固定字符串的存放位置不同于所述密碼摘要值的存放位置。
3.根據(jù)權利要求1所述的密碼加密方法,其特征在于,所述方法進一步包括對所述密碼摘要值進行編碼,獲得所述用戶的密碼編碼值。
4.根據(jù)權利要求3所述的密碼加密方法,其特征在于,所述編碼是Base64編碼。
5.根據(jù)權利要求3所述的密碼加密方法,其特征在于,所述固定字符串的存放位置不同于所述密碼編碼值的存放位置。
6.根據(jù)權利要求1-5中任一項所述的密碼加密方法,其特征在于,所述散列算法選自包括 SHA1、SHA192、SHA256、SHA384、SHA512、HMAC-SHAK HMAC-SHA192、HMAC-SHA256、HMAC-SHA384, HMAC-SHA512 的組。
7.根據(jù)權利要求1-5中任一項所述的密碼加密方法,其特征在于,所述唯一識別碼、所述固定字符串、所述密碼的串接順序是可調的。
8.—種密碼校驗方法,`用于對用戶的密碼進行校驗,其中每個用戶具有唯一識別碼以及密碼數(shù)據(jù),其特征在于,所述方法包括步驟: 根據(jù)用戶輸入獲取所述唯一標識碼和用戶輸入密碼; 獲取與所述密碼數(shù)據(jù)相關的固定字符串; 將所述唯一識別碼、所述固定字符串、所述用戶輸入密碼串接成串接字符串; 通過散列算法對所述串接字符串執(zhí)行摘要運算,獲得摘要運算結果作為所述用戶的待驗密碼數(shù)據(jù); 將所述待驗密碼數(shù)據(jù)與所述用戶的密碼數(shù)據(jù)進行比較,獲得校驗結果。
9.根據(jù)權利要求8所述的密碼校驗方法,其特征在于,所述固定字符串的存放位置不同于所述密碼數(shù)據(jù)的存放位置。
10.根據(jù)權利要求8所述的密碼校驗方法,其特征在于,通過散列算法對所述串接字符串執(zhí)行摘要運算后對所述摘要運算結果進行編碼,獲得經(jīng)編碼的摘要運算結果作為所述用戶的待驗密碼數(shù)據(jù)。
11.根據(jù)權利要求10所述的密碼校驗方法,其特征在于,所述編碼是Base64編碼。
12.根據(jù)權利要求8-11中任一項所述的密碼校驗方法,其特征在于,所述散列算法選自包括 SHA1、SHA192、SHA256、SHA384、SHA512、HMAC-SHAK HMAC-SHA192、HMAC-SHA256、HMAC-SHA384, HMAC-SHA512 的組。
13.根據(jù)權利要求8-11中任一項所述的密碼校驗方法,其特征在于,所述唯一識別碼、所述固定字符串、所述密碼的串接順序是可調的。
14.一種密碼加密系統(tǒng),用于對用戶的密碼進行加密,其中每個用戶具有唯一識別碼,其特征在于,所述系統(tǒng)包括: 獲取裝置,用于獲取固定字符串;串接裝置,用于將所述唯一識別碼、所述固定字符串、所述密碼串接成串接字符串; 摘要裝置,用于通過散列算法對所述串接字符串執(zhí)行摘要運算,獲得所述用戶的密碼摘要值。
15.根據(jù)權利要求14所述的密碼加密系統(tǒng),其特征在于,所述固定字符串的存放位置不同于所述密碼摘要值的存放位置。
16.根據(jù)權利要求14所述的密碼加密系統(tǒng),其特征在于,所述系統(tǒng)進一步包括編碼裝置,用于對所述密碼摘要值進行編碼,獲得所述用戶的密碼編碼值。
17.根據(jù)權利要求16所述的密碼加密系統(tǒng),其特征在于,所述編碼是Base64編碼。
18.根據(jù)權利要求16所述的密碼加密系統(tǒng),其特征在于,所述固定字符串的存放位置不同于所述密碼編碼值的存放位置。
19.根據(jù)權利要求14-18中任一項所述的密碼加密系統(tǒng),其特征在于,所述散列算法選自包括 SHAl、SHA192、SHA256、SHA384、SHA512, HMAC-SHAK HMAC-SHA192, HMAC-SHA256,HMAC-SHA384, HMAC-SHA512 的組。
20.根據(jù)權利要求14-18中任一項所述的密碼加密系統(tǒng),其特征在于,所述唯一識別碼、所述固定字符串、所述密碼的串接順序是可調的。
21.—種密碼校驗系統(tǒng),用于對用戶的密碼進行校驗,其中每個用戶具有唯一識別碼以及密碼數(shù)據(jù),其特征在于,所述系統(tǒng)包括: 第一獲取裝置,用于根據(jù)用戶輸入獲取所述唯一標識碼和用戶輸入密碼; 第二獲取裝置,用于獲取與所述密碼數(shù)據(jù)相關的固定字符串;` 串接裝置,用于將所述唯一識別碼、所述固定字符串、所述用戶輸入密碼串接成串接字符串; 運算裝置,用于通過散列算法對所述串接字符串執(zhí)行摘要運算,獲得所述用戶的待驗密碼數(shù)據(jù); 校驗裝置,用于將所述待驗密碼數(shù)據(jù)與所述用戶的密碼數(shù)據(jù)進行比較,獲得校驗結果。
22.根據(jù)權利要求21所述的密碼校驗系統(tǒng),其特征在于,所述固定字符串的存放位置不同于所述密碼數(shù)據(jù)的存放位置。
23.根據(jù)權利要求21所述的密碼校驗系統(tǒng),其特征在于,所述運算裝置在通過散列算法對所述串接字符串執(zhí)行摘要運算后對摘要運算結果進行編碼,獲得所述用戶的待驗密碼數(shù)據(jù)。
24.根據(jù)權利要求23所述的密碼校驗系統(tǒng),其特征在于,所述編碼是Base64編碼。
25.根據(jù)權利要求21-24中任一項所述的密碼校驗系統(tǒng),其特征在于,所述散列算法選自包括 SHAl、SHA192、SHA256、SHA384、SHA512, HMAC-SHAK HMAC-SHA192, HMAC-SHA256,HMAC-SHA384, HMAC-SHA512 的組。
26.根據(jù)權利要求21-24中任一項所述的密碼校驗系統(tǒng),其特征在于,所述唯一識別碼、所述固定字符串、所述密碼的串接順序是可調的。
【文檔編號】H04L9/28GK103780379SQ201210401262
【公開日】2014年5月7日 申請日期:2012年10月19日 優(yōu)先權日:2012年10月19日
【發(fā)明者】禹新輝, 方海峰, 肖淑婷 申請人:阿里巴巴集團控股有限公司