Linux操作系統
一、口令文件
用戶:基礎口令文件--/etc/password 用戶信息,僅指明口令存放位置,即shadow中
口令文件-----/etc/shadow 實際存儲了密碼,只有root可讀,影子文件
二、口令文件格式
1、password格式
每一行代表一個用戶記錄,不同字段間用:隔開,7個字段:
註冊名:口令:用戶標識號:組標識號:用戶名:用戶主目錄:命令解釋程序
2、shadow格式
用戶名:加密後的口令字符串:口令最後修改時間距1970.1.1的天數:口令能被修改之前的天數(防止修改口令,回到老口令):口令必須被修改之後的天數:口令期滿之後的天數:保留
三、安全機制
由密碼域&id&salt&encrypted中id指明,常見id=1,即MD5加密.
另id=5是SHA256,id=6是SHA512.詳細流程總結如下:
1、crypt_make_salt的子函數gensalt(salt_len)生成固定長度隨機可見字符串salt
2、salt帶入crypt函數中生成密碼
相關參考:http://linfengdu.blog.163.com/blog/static/1177107320119209614584/
Windows操作系統
一、口令文件
%systemroot%\system32\config\sam
二、口令文件格式
NT系統打開之後是加密後的亂碼,註冊表中的 HKEY_LOCAL_MACHINESAMSAM HKEY_LOCAL_MACHINESECURITYSAM 保存了SAM文件的內容,
在正常設置下僅對system是可讀寫的。
SAM保存了兩個不同口令信息:LANManager(LM)口令散列算法和加密NT版
三、安全機制
LM對口令的處理方法是:如果口令不足14位,就用0把口令補足14位,並把所有的字母轉成大寫字母。之後將處理後的口令分成兩組數字,每組是7位。
然後由這兩個7位的數字分別生成8位的DES KEY,每一個8位的DES KEY都使用一個魔法數字(將0x4B47532140232425用全是1的一個KEY進行加密獲
得的)再進行一次加密,將兩組加密完後的字符串連在一起,這就是最終的口令散列。
正式的口令(加密NT版)是將用戶的口令轉換成unicode編碼,然後使用MD4算法將口令加密,相比之下用這種方法就要安全得多了。
之所以保留兩種不同版本的口令是由於歷史原因造成的,在一個純NT的環境中應該將LAN Manager口令關閉。因爲LAN Manager口令使用了較弱的DES
密鑰和算法,比較容易破解。相比較之下,使用較強加密算法的NT正式口令要安全些。
相關參考:http://tech.sina.com.cn/c/4306.html