本發(fā)明屬于計(jì)算機(jī)賬號(hào)密碼安全技術(shù)領(lǐng)域,特別涉及一種基于改良aes的個(gè)人密碼生成和管理方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的日新月異,需要用戶登錄的網(wǎng)站和軟件也越來(lái)越多。許多用戶為了方便,將同一密碼應(yīng)用于不同場(chǎng)景,甚至還將該密碼應(yīng)用于事關(guān)財(cái)產(chǎn)安全的支付應(yīng)用。這無(wú)疑給網(wǎng)絡(luò)黑客的“撞庫(kù)”破解提供了方便,也非常不利于用戶個(gè)人的信息和財(cái)產(chǎn)安全。
然而,一些用戶在不同的場(chǎng)景應(yīng)用不同的密碼,同樣存在問(wèn)題。在用戶的賬號(hào)和密碼數(shù)量不斷增加時(shí),很難精確的記憶所有的賬號(hào)和密碼信息,同時(shí),對(duì)于一些冷門(mén)的網(wǎng)站和應(yīng)用,用戶往往在注冊(cè)之后就因長(zhǎng)時(shí)間未登錄而遺忘密碼信息。
當(dāng)然,目前存在一些解決這類(lèi)問(wèn)題的技術(shù)和方法。文獻(xiàn)“申請(qǐng)公布號(hào)是cn105897412a的中國(guó)發(fā)明專(zhuān)利”公開(kāi)了一種網(wǎng)站密碼生成方法及裝置。該方法通過(guò)接收用戶輸入的自定義密鑰,網(wǎng)站信息,通過(guò)固定的加密方式自動(dòng)生成網(wǎng)站密碼。該方法存在的問(wèn)題是,沒(méi)有密碼管理部分,已加密的密碼無(wú)法存儲(chǔ),每次登陸均需要運(yùn)行加密程序,十分繁瑣;而且,該方法采用固定的加密方式,若用戶的自定義密鑰與加密方式泄漏,無(wú)異于泄漏了自身所有網(wǎng)站密碼,風(fēng)險(xiǎn)性大大增加。
技術(shù)實(shí)現(xiàn)要素:
為了克服現(xiàn)有密碼生成方法安全性差的不足,本發(fā)明提供一種基于改良aes的個(gè)人密碼生成和管理方法。該方法在自定義密鑰加密的基礎(chǔ)上,增加了密碼生成后的管理功能。在生成自定義密碼后,再次調(diào)用aes加密,與加密過(guò)程相反,存儲(chǔ)時(shí)將之前生成的密碼作為原碼,將用戶的原始密碼作為加密的密鑰,將密碼再次加密后存儲(chǔ)在本地,并加入驗(yàn)證標(biāo)志位。提取本地的密碼時(shí),先接收用戶的原始密碼進(jìn)行預(yù)解密操作,若驗(yàn)證標(biāo)志位與加密前相同,則密碼提取成功。提取成功的所有密碼明文顯示,并提供增、刪、改、查功能。在常用地登錄的用戶在加密時(shí)將自身的硬盤(pán)號(hào)、mac地址作為加密因子輸入。由于硬盤(pán)號(hào)、mac地址為用戶唯一憑證,其作為加密因子參與密碼的生成過(guò)程。另外,改良aes的行轉(zhuǎn)移及列混淆過(guò)程進(jìn)一步提高了加密過(guò)程的安全性。
本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案:一種基于改良aes的個(gè)人密碼生成和管理方法,其特點(diǎn)是包括以下步驟:
步驟一、接收用戶的初始密碼。
用戶輸入自設(shè)密碼,包含數(shù)字、字母和符號(hào)且長(zhǎng)度不做限制。接收到用戶的輸入以后,密碼加密模塊將該密碼存入字符串中,作為加密的原碼等待被加密。
步驟二、接收密碼的應(yīng)用場(chǎng)景。
用戶選擇接收密碼的應(yīng)用場(chǎng)景,該應(yīng)用場(chǎng)景是某一個(gè)網(wǎng)站、某一個(gè)軟件或者自己的某一個(gè)賬號(hào)。系統(tǒng)接收到用戶的輸入以后,將該應(yīng)用場(chǎng)景轉(zhuǎn)化為字符串并作為加密因子,等待被構(gòu)成密鑰。
步驟三、判斷是否需要讀取設(shè)備的唯一標(biāo)識(shí)。
若用戶只有一臺(tái)常用終端,則將加入設(shè)備的唯一標(biāo)識(shí)作為加密因子。若用戶擁有多臺(tái)終端,則不應(yīng)該將加入設(shè)備唯一標(biāo)識(shí)作為加密因子。
步驟四、生成16位的加密密鑰。
根據(jù)用戶選擇的應(yīng)用場(chǎng)景和設(shè)備標(biāo)識(shí)情況進(jìn)行構(gòu)造。若信息量剛好等于16位,則直接構(gòu)造加密密鑰,若信息量大于或者小于16位,則以循環(huán)冗余迭代的方式構(gòu)造16位的加密密鑰。
步驟五、改良的aes加密。
變更aes列混淆和行轉(zhuǎn)移方式,使得在用戶的初始密碼、密碼應(yīng)用場(chǎng)景以及加密方式均泄漏時(shí),保證生成的密碼具有安全性。
步驟六、接收用戶的密碼要求。
若有些場(chǎng)景不支持密碼粘貼,只能用戶手動(dòng)輸入,則要求生成的密碼不能過(guò)長(zhǎng);若些場(chǎng)景不支持特殊符號(hào)作為密碼,則要求生成的密碼不能帶有符號(hào)。
步驟七、生成隨機(jī)密碼。
經(jīng)過(guò)改良的aes加密算法加密過(guò)后,用戶的原密碼變?yōu)榕c加密因子相關(guān)的n個(gè)十六進(jìn)制兩位數(shù)所組成的字符串。根據(jù)用戶的輸出要求,對(duì)上述字符串的循環(huán)冗余進(jìn)行迭代,多對(duì)一映射,生成符合用戶要求的隨機(jī)密碼。
步驟八、密碼信息加密。
在保存用戶的密碼信息之前,將提取所有已經(jīng)生成的隨機(jī)密碼和對(duì)應(yīng)的加密信息,并將其作為改良的aes加密的原碼。新的16位加密密鑰的構(gòu)成將有所改變:設(shè)備的唯一憑證依舊作為用戶的可選項(xiàng),若用戶選擇了該項(xiàng),則會(huì)在在加密文件中設(shè)置與解密相關(guān)的標(biāo)志位;必選項(xiàng)則變成了用戶輸入的初始密碼。重復(fù)步驟一到步驟五。
步驟九、密碼信息存儲(chǔ)。
在密碼信息加密之后,在加密后的信息中添加2種標(biāo)志位,驗(yàn)證標(biāo)志位和配置標(biāo)志位。驗(yàn)證標(biāo)志位通過(guò)預(yù)解密驗(yàn)證用戶輸入密碼是否正確;配置標(biāo)志位標(biāo)志用戶在加密時(shí)是否使用設(shè)備唯一標(biāo)識(shí)作為加密因子。然后,將2種標(biāo)志位以二進(jìn)制的形式保存在本地。
密碼解密及查詢過(guò)程如下:
步驟十、讀取加密的二進(jìn)制文件。
對(duì)存儲(chǔ)在本地的二進(jìn)制文件進(jìn)行讀取操作,保存為字符串形式。
步驟十一、驗(yàn)證用戶的初始密碼。
接收用戶的初始密碼并進(jìn)行預(yù)解密,若驗(yàn)證標(biāo)志位相同,則密碼合法;若驗(yàn)證標(biāo)志位不相同,提醒用戶重新輸入。
步驟十二、生成16位解密密鑰。
將初始密碼和可選的設(shè)備唯一標(biāo)識(shí),采用與加密過(guò)程相同的冗余迭代方式形成16位解密密鑰。
步驟十三、改良的aes解密。
進(jìn)行與加密過(guò)程互為逆過(guò)程的aes解密操作。
步驟十四、用戶的增刪改查。
將得到解密后的密碼明文顯示,用戶對(duì)信息進(jìn)行增加、刪除、更改和查詢。增加,即調(diào)用密碼加密過(guò)程,生成適用于新的應(yīng)用場(chǎng)景下的密碼;刪除,即刪除那些用戶認(rèn)為無(wú)用的或者不再符合應(yīng)用要求的密碼信息;更改,即在同一應(yīng)用場(chǎng)景下,重新生成位數(shù)、組成不同的新密碼;查詢,即以樹(shù)形文件列表的方式顯示出所有的密碼及其應(yīng)用背景信息。
本發(fā)明的有益效果是:該方法在自定義密鑰加密的基礎(chǔ)上,增加了密碼生成后的管理功能。在生成自定義密碼后,再次調(diào)用aes加密,與加密過(guò)程相反,存儲(chǔ)時(shí)將之前生成的密碼作為原碼,將用戶的原始密碼作為加密的密鑰,將密碼再次加密后存儲(chǔ)在本地,并加入驗(yàn)證標(biāo)志位。提取本地的密碼時(shí),先接收用戶的原始密碼進(jìn)行預(yù)解密操作,若驗(yàn)證標(biāo)志位與加密前相同,則密碼提取成功。提取成功的所有密碼明文顯示,并提供增、刪、改、查功能。在常用地登錄的用戶在加密時(shí)將自身的硬盤(pán)號(hào)、mac地址作為加密因子輸入。由于硬盤(pán)號(hào)、mac地址為用戶唯一憑證,其作為加密因子參與密碼的生成過(guò)程。另外,改良aes的行轉(zhuǎn)移及列混淆過(guò)程進(jìn)一步提高了加密過(guò)程的安全性。
下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明作詳細(xì)說(shuō)明。
附圖說(shuō)明
圖1是本發(fā)明基于改良aes的個(gè)人密碼生成和管理方法的方框圖。
圖2是本發(fā)明方法實(shí)施例中密碼生成及存儲(chǔ)方法的流程圖。
圖3是本發(fā)明方法實(shí)施例中密碼解密及查詢方法的流程圖。
具體實(shí)施方式
參照?qǐng)D1-3。本發(fā)明基于改良aes的個(gè)人密碼生成和管理方法具體步驟如下:
本發(fā)明方法包含兩個(gè)模塊:初始密碼驗(yàn)證模塊和用戶賬號(hào)密碼管理模塊。
其中,初始密碼驗(yàn)證模塊包括:初始密碼的讀取和驗(yàn)證,設(shè)備唯一標(biāo)識(shí)的讀取,加密密鑰的構(gòu)成,加密文件的解析。
用戶賬號(hào)密碼管理模塊包括:用戶賬號(hào)密碼的導(dǎo)入和導(dǎo)出,已生成密碼的查詢和刪除,根據(jù)用戶應(yīng)用場(chǎng)景和要求生成新的隨機(jī)密碼。
密碼生成及存儲(chǔ)過(guò)程具體如下:
步驟一、接收用戶的初始密碼。
該過(guò)程為用戶個(gè)人輸入,密碼一般為自己的常用密碼,可以包含數(shù)字,字母,符號(hào)且長(zhǎng)度不做限制。接收到用戶的輸入以后,密碼加密模塊將該密碼存入字符串中,作為加密的原碼等待被加密。
步驟二、接收密碼的應(yīng)用場(chǎng)景。
該過(guò)程為用戶人為選擇,應(yīng)用場(chǎng)景可以是某一個(gè)網(wǎng)站,某一個(gè)軟件或者自己的某一個(gè)賬號(hào)。系統(tǒng)接收到用戶的輸入以后,將該應(yīng)用場(chǎng)景轉(zhuǎn)化為字符串并作為加密因子,等待被構(gòu)成密鑰。
步驟三、判斷是否需要讀取設(shè)備的唯一標(biāo)識(shí)。
該過(guò)程為用戶自選,選擇的原則為:若用戶只有一臺(tái)常用終端,則加入設(shè)備的唯一標(biāo)識(shí)作為加密因子可以大大提高密碼的安全性。即使黑客竊取了用戶的初始密碼且破解了該加密方式,也會(huì)因?yàn)闊o(wú)法偽造設(shè)備唯一標(biāo)識(shí)而解密失敗;相反,若用戶擁有多臺(tái)終端,為了實(shí)現(xiàn)加密密碼的一致性,不應(yīng)該加入設(shè)備唯一標(biāo)識(shí)作為加密因子。
步驟四、生成16位的加密密鑰。
根據(jù)用戶選擇的應(yīng)用場(chǎng)景,設(shè)備標(biāo)識(shí)的情況來(lái)進(jìn)行構(gòu)造。若信息量剛好等于16位,則直接構(gòu)造密鑰,若信息量大于或者小于16位,則以循環(huán)冗余迭代的方式構(gòu)造16位的密鑰。
步驟五、改良的aes加密。
aes算法一直以其簡(jiǎn)單,安全的優(yōu)點(diǎn)被廣泛應(yīng)用。但是,由于其算法的開(kāi)源,使得在密鑰泄漏的情況下信息安全變得岌岌可危。本方法通過(guò)變更了aes列混淆和行轉(zhuǎn)移的方式,使得在用戶的初始密碼,密碼應(yīng)用場(chǎng)景,加密方式均泄漏的極限條件下,依舊可以保證生成的密碼具有良好的安全性。
步驟六、接收用戶的密碼要求。
由于密碼的應(yīng)用場(chǎng)景不同,用戶對(duì)密碼的要求也會(huì)有所不同。例如:有些場(chǎng)景不支持密碼粘貼,只能用戶手動(dòng)輸入,這種環(huán)境要求生成的密碼不能過(guò)長(zhǎng);還有些場(chǎng)景不支持特殊符號(hào)作為密碼,這就要求生成的密碼不能帶有符號(hào)。為了應(yīng)對(duì)以上情況,本發(fā)明支持用戶選擇生成密碼的位數(shù)和構(gòu)成成分。
步驟七、生成隨機(jī)密碼。
經(jīng)過(guò)改良的aes加密算法加密過(guò)后,用戶的原密碼已經(jīng)成為了與加密因子相關(guān)的n個(gè)十六進(jìn)制兩位數(shù)所組成的字符串。根據(jù)用戶的輸出要求,本發(fā)明通過(guò)對(duì)上述字符串的循環(huán)冗余迭代,多對(duì)一映射,可以生成符合用戶要求的隨機(jī)密碼。值得一提的是,由于本方法采用的是多對(duì)一的映射,即在知曉了用戶的隨機(jī)密碼,應(yīng)用環(huán)境的情況下,也無(wú)法通過(guò)反向解密來(lái)重構(gòu)出用戶的初始密碼,進(jìn)一步提高了用戶信息的安全性。
步驟八、密碼信息加密。
在保存用戶的密碼信息之前,本發(fā)明將提取所有已經(jīng)生成的隨機(jī)密碼和對(duì)應(yīng)的加密信息,并將其作為改良的aes加密的原碼。新的16位加密密鑰的構(gòu)成將有所改變:設(shè)備的唯一憑證依舊作為用戶的可選項(xiàng),若用戶選擇了該項(xiàng),則會(huì)在在加密文件中設(shè)置與解密相關(guān)的標(biāo)志位;必選項(xiàng)則變成了用戶輸入的初始密碼。之后進(jìn)行重復(fù)步驟一到步驟五。
步驟九、密碼信息存儲(chǔ)。
在密碼信息加密之后,本方法將在加密后的信息中添加2種標(biāo)志位,驗(yàn)證標(biāo)志位:通過(guò)預(yù)解密可以驗(yàn)證用戶輸入密碼的正確與否;配置標(biāo)志位:標(biāo)志用戶在加密時(shí)是否使用設(shè)備唯一標(biāo)識(shí)作為加密因子。然后,將該文件以二進(jìn)制的形式保存在本地。
密碼解密及查詢過(guò)程具體如下:
步驟十、讀取加密的二進(jìn)制文件。
在解密之前,需要對(duì)加密過(guò)的文件進(jìn)行按位讀取,并保存為字符串形式。通過(guò)對(duì)加密過(guò)程的分析,文件中的驗(yàn)證標(biāo)志位和配置標(biāo)志位需要進(jìn)行特殊分析。
步驟十一、驗(yàn)證用戶的初始密碼。
為保證安全性,本發(fā)明在解密之前需要驗(yàn)證一次用戶的初始密碼。與現(xiàn)有技術(shù)不同的是該密碼驗(yàn)證并不是簡(jiǎn)單的字符串比對(duì),由加密過(guò)程可知,本發(fā)明沒(méi)有明文保存用戶的密碼信息,而是在加密文件中預(yù)設(shè)了驗(yàn)證標(biāo)志位。用戶在輸入密碼后,本發(fā)明將進(jìn)行一次預(yù)解密,若解密的標(biāo)志位與加密前相同,則密碼輸入合法;反之,提醒用戶重新輸入。
步驟十二、生成16位解密密鑰。
在aes算法中,必須保證加密密鑰和解密密鑰的一致性。所以,與加密對(duì)應(yīng)的,用戶輸入的合法的初始密碼即為解密密鑰的必選項(xiàng);通過(guò)對(duì)加密文件配置標(biāo)志位的分析,可以確定是否將設(shè)備唯一標(biāo)識(shí)作為加密因子。而且,解密密鑰也必須采用與加密過(guò)程相同的循環(huán)冗余迭代方式,這樣才能保證密鑰的一致性。
步驟十三、改良的aes解密。
與加密過(guò)程互為逆過(guò)程。相應(yīng)的,解密過(guò)程中的列混淆和行轉(zhuǎn)移方式要與加密過(guò)程對(duì)應(yīng),以保證數(shù)據(jù)的正確性。
步驟十四、用戶的增刪改查。
在得到解密后的信息后,用戶可以對(duì)信息進(jìn)行增加、刪除、更改和查詢。增加:調(diào)用密碼加密過(guò)程,生成適用于新的應(yīng)用場(chǎng)景下的密碼;刪除:刪除那些用戶認(rèn)為無(wú)用的或者不再符合應(yīng)用要求的密碼信息;更改:在同一應(yīng)用場(chǎng)景下,重新生成位數(shù)、組成不同的新密碼,主要應(yīng)用于密碼泄露的情況;查詢:以樹(shù)形文件列表的方式顯示出所有的密碼及其應(yīng)用背景信息。