banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận bảo mật Cơ chế mã hoá pass trong shadow  XML
  [Question]   Cơ chế mã hoá pass trong shadow 19/09/2006 23:52:05 (+0700) | #1 | 24376
navaro
Member

[Minus]    0    [Plus]
Joined: 27/06/2006 20:54:35
Messages: 8
Offline
[Profile] [PM]
Hi,
Mình có một thắc mắc về cách mã hoá password trong file shadow(*nix), không biết có phải mỗi *nix khác nhau lại có cách mã hoá khác nhau hay sao? Và có bạn có thể cho mình biết cơ chế mã hoá là thế nào được không.
Search trên goole rồi, ko thấy cái nào ưng ý vả lại tiếng anh kém lém smilie
Thank đã bỏ thời gian ra đọc bài này :wink:
[Up] [Print Copy]
  [Question]   Cơ chế mã hoá pass trong shadow 20/09/2006 00:27:29 (+0700) | #2 | 24391
pnco
HVA Friend

Joined: 24/06/2005 16:33:48
Messages: 515
Offline
[Profile] [PM] [WWW]
Tớ không rõ các *nix khác như thế nào nhưng hình như là dùng md5. Đối FreeBSD thì nó chính là md5 và có thể sửa đổi ở /etc/login.conf. Nếu được thì nên dùng blowfish.
Cách nhận diện: md5 thì bắt đầu bằng chuỗi $1, còn blowfish là $2
[Up] [Print Copy]
  [Question]   Cơ chế mã hoá pass trong shadow 20/09/2006 00:35:59 (+0700) | #3 | 24394
subnetwork
Member

[Minus]    0    [Plus]
Joined: 05/09/2004 06:08:09
Messages: 1666
Offline
[Profile] [PM] [WWW] [Yahoo!]

navaro wrote:
Hi,
Mình có một thắc mắc về cách mã hoá password trong file shadow(*nix), không biết có phải mỗi *nix khác nhau lại có cách mã hoá khác nhau hay sao? Và có bạn có thể cho mình biết cơ chế mã hoá là thế nào được không.
Search trên goole rồi, ko thấy cái nào ưng ý vả lại tiếng anh kém lém smilie
Thank đã bỏ thời gian ra đọc bài này :wink:  


[root@ga ~]# more /etc/passwd
rootsmilie:0:0:root:/root:/bin/bash
binsmilie:1:1:bin:/bin:/sbin/nologin
daemonsmilie:2:2:daemon:/sbin:/sbin/nologin
admsmilie:3:4:adm:/var/adm:/sbin/nologin
lpsmilie:4:7:lp:/var/spool/lpd:/sbin/nologin
syncsmilie:5:0:sync:/sbin:/bin/sync
shutdownsmilie:6:0:shutdown:/sbin:/sbin/shutdown
haltsmilie:7:0:halt:/sbin:/sbin/halt
mailsmilie:8:12:mail:/var/spool/mail:/sbin/nologin
newssmilie:9:13:news:/etc/news:
uucpsmilie:10:14:uucp:/var/spool/uucp:/sbin/nologin
operatorsmilie:11:0:operator:/root:/sbin/nologin
gamessmilie:12:100:games:/usr/games:/sbin/nologin
gophersmilie:13:30:gopher:/var/gopher:/sbin/nologin
ftpsmilie:14:50:FTP User:/var/ftp:/sbin/nologin
nobodysmilie:99:99:Nobody:/:/sbin/nologin
dbussmilie:81:81:System message bus:/:/sbin/nologin
vcsasmilie:69:69:virtual console memory owner:/dev:/sbin/nologin
rpmsmilie:37:37::/var/lib/rpm:/sbin/nologin
haldaemonsmilie:68:68:HAL daemon:/:/sbin/nologin
pcapsmilie:77:77::/var/arpwatch:/sbin/nologin
nscdsmilie:28:28:NSCD Daemon:/:/sbin/nologin
namedsmilie:25:25:Named:/var/named:/sbin/nologin 


Bro đọc được các cột nội dung của file này nó nói gì hông ? nếu bro đọc được những dòng trên thì hãy tìm hiểu cái khác, vì chưa biết được những đoạn trên nói gì mà đi vào mã hoá thì dễ bị "loạn" lắm :cry:
Về tài liệu mã hoá, google là bạn, yahoo là vợ của thằng bạn . He he :cry:
Thân
Quản lý máy chủ, cài đặt, tư vấn, thiết kế, bảo mật hệ thống máy chủ dùng *nix
http://chamsocmaychu.com
[Up] [Print Copy]
  [Question]   Cơ chế mã hoá pass trong shadow 20/09/2006 00:41:17 (+0700) | #4 | 24396
navaro
Member

[Minus]    0    [Plus]
Joined: 27/06/2006 20:54:35
Messages: 8
Offline
[Profile] [PM]
Mình post bài này thì tấc nhiên mình biết đọc nội dung của passwd, mình muốn hiểu thêm về cách mã hoá passwd trong shadow smilie
@pnco : mình đã search ra cũng nhiều tài liệu, nó cũng nói như bạn smilie
[Up] [Print Copy]
  [Question]   Re: Cơ chế mã hoá pass trong shadow 20/09/2006 01:08:35 (+0700) | #5 | 24412
pnco
HVA Friend

Joined: 24/06/2005 16:33:48
Messages: 515
Offline
[Profile] [PM] [WWW]

Golden Autumn wrote:
[root@ga ~]# more /etc/passwd 


Người ta nói shadow passwd mà sao bác lại show /etc/passwd, bác thử show shadow passwd của bác em xem thử smilie)
[Up] [Print Copy]
  [Question]   Cơ chế mã hoá pass trong shadow 20/09/2006 19:55:54 (+0700) | #6 | 24542
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]

navaro wrote:
Hi,
Mình có một thắc mắc về cách mã hoá password trong file shadow(*nix), không biết có phải mỗi *nix khác nhau lại có cách mã hoá khác nhau hay sao? Và có bạn có thể cho mình biết cơ chế mã hoá là thế nào được không.
Search trên goole rồi, ko thấy cái nào ưng ý vả lại tiếng anh kém lém smilie
Thank đã bỏ thời gian ra đọc bài này :wink:  


Trước đây *nix nói chung không có shadow password. System V Release 3.2 (1987), BSD4.3 Reno (1991) và Linux (1992) mới ứng dụng shadowing. Chúng có cùng nguyên tắc xử lý shadow. Chỉ có điểm khác biệt là tên gọi hồ sơ shadow và vị trí chứa hồ sơ này khác nhau trên các Unix flavors mà thôi. Ví dụ, trên Linux, shadow nằm ở /etc/shadow, trên BSD /etc/master.passwd, trên HP-UX /.secure/etc/passwd.... Có một số UNIX tạo shadow riêng cho từng username.

Về cách "mã hoá" shadow thì tổng thể như sau. Khi user được cung cấp một pasword hoặc anh ta chọn một password, password này được encode với giá trị ngẫu nhiên được gọi là salt. Giá trị salt này sẽ được lưu cùng với password đã được encoded trên hệ thống

Khi người dùng login bằng password của mình, giá trị salt sẽ được lấy ra từ encoded password (đã được lưu trên hệ thống) và giá trị salt này sẽ dùng để encode password (mà người dùng vừa gõ vào). Nếu hai giá trị: đã lưuvừa được encoded trùng nhau --> người dùng được xác thực.

Quy trình encoding ở đây gọi là "one way hash function" và hàm crypt() được sử dụng để thực thi. #man crypt có cung cấp một số thông tin cụ thể hơn. Những điểm cần nắm với crypt() là:

1. crypt: hàm dùng để "mã hoá" mật khẩu, dựa trên tiêu chuẩn thuật toán DES.

2. key: là giá trị password (ở dạng string) mà người dùng gõ vào.

3. salt: là chuỗi string có 2 ký tự được chọn từ chuỗi [a-zA-Z0-9./] (biểu thị các ký tự từ a đến z cho chữ thường và chữ in và các số từ 0 đến 9, thêm vào đó là 2 ký tự . và /). Từ chuỗi này mới tạo ra giá trị ngẫu nhiên từ 4096 khả năng khác nhau.

4. Các ứng dụng mở rộng trên các thư viện dùng cho hàm này có chức năng dùng các thuật toán khác thay vì DES có thể tạo chuỗi hash lớn hơn.

Nhiều người dùng cụm "encrypted password" cho trường hợp shadowed password và dùng như thế có phần thiếu chính xác. "shadowed password" bao gồm salt (để encode password khi user gõ password vào) và encoded string (dùng để so sánh với giá trị vừa gõ vào và đã được encode). Gọi chung đây là "hash" (hay băm theo tiếng Việt - chẳng rõ ai đã sáng chế ra từ "băm" này smilie) )).

Thân mến.
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   Cơ chế mã hoá pass trong shadow 20/09/2006 21:08:29 (+0700) | #7 | 24547
Mr.Khoai
Moderator

Joined: 27/06/2006 01:55:07
Messages: 954
Offline
[Profile] [PM]
To anh conmale: Theo em được biết, password của bất kỳ user nào đều có thể được hash bằng các hàm hash như MD5, blowfish, vân vân. Hash này có thể được lưu trực tiếp vào file /etc/passwd (linux) và có thể được sử dụng. Tuy nhiên trong file /etc/shadow thì không cần thiết có thêm record của user này. Chỉ khi dùng pwconv để "generate" file shadow thì field password trong /etc/passwd mới được clear hoặc được thay bằng *, và file /etc/shadow sẽ có thêm một record cho user đó.

Như vậy, plain text pass của user sẽ được hash trước, và sau đó passhash này lại được shadow thêm lần nữa với salt? Vậy việc hash 2 lần này có hiệu quả gì? Bản thân file /etc/passwd không đủ đáp ứng các yêu cầu về bảo mật?

Khoai
[Up] [Print Copy]
  [Question]   Cơ chế mã hoá pass trong shadow 20/09/2006 22:33:15 (+0700) | #8 | 24556
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]

Mr.Khoai wrote:
To anh conmale: Theo em được biết, password của bất kỳ user nào đều có thể được hash bằng các hàm hash như MD5, blowfish, vân vân. Hash này có thể được lưu trực tiếp vào file /etc/passwd (linux) và có thể được sử dụng. Tuy nhiên trong file /etc/shadow thì không cần thiết có thêm record của user này. Chỉ khi dùng pwconv để "generate" file shadow thì field password trong /etc/passwd mới được clear hoặc được thay bằng *, và file /etc/shadow sẽ có thêm một record cho user đó.

Như vậy, plain text pass của user sẽ được hash trước, và sau đó passhash này lại được shadow thêm lần nữa với salt? Vậy việc hash 2 lần này có hiệu quả gì? Bản thân file /etc/passwd không đủ đáp ứng các yêu cầu về bảo mật?

Khoai 


Tất nhiên hash vẫn có thể đưa vào /etc/passwd để sử dụng. Tuy nhiên nếu system đã "enabled shadow" rồi thì chẳng ai làm như thế smilie). Em chỉ dùng pwconv lần đầu tiên khi ứng dụng password shadow trên hệ thống mà thôi.

Có 2 phần tách biệt:

1) lần đầu tiên khi account được tạo ra và command passwd <username> được chạy, clear txt input này sẽ được encoded và salt sẽ được tạo ra để cùng đưa vào "password" field trong /etc/shadow

2) khi người dùng login, clear txt string mà người dùng đưa vào sẽ được encoded với salt đã có trong /etc/shadow và kết quả sẽ được dùng để so sánh giữa cái vừa được tạo ra và cái có sẵn trên hệ thống (trong /etc/shadow)

Điều em nhận định về việc "hash 2 lần" này có thể tách rời thành 2 phần như trên chớ chẳng phải mỗi passhash được hash 2 lần smilie).

Nói về khía cạnh bảo mật thì việc "dời" passhash sang /etc/shadow nhằm khắc phục một điểm yếu của /etc/passwd đó là: ai cũng có thể read /etc/passwd và đọc hash value trong đó để brute force. Trong khi đó, /etc/shadow chỉ có thể đọc với chủ quyền root. Binary passwd được set SUID để thực hiện việc dùng chủ quyền root để đọc hash value trong /etc/shadow.

Thân mến.
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   Cơ chế mã hoá pass trong shadow 21/09/2006 00:36:20 (+0700) | #9 | 24578
navaro
Member

[Minus]    0    [Plus]
Joined: 27/06/2006 20:54:35
Messages: 8
Offline
[Profile] [PM]
hix, bài viết hay quá, thanks anh comale !
[Up] [Print Copy]
  [Question]   Cơ chế mã hoá pass trong shadow 21/09/2006 10:45:46 (+0700) | #10 | 24715
[Avatar]
hieuhoc
Member

[Minus]    0    [Plus]
Joined: 08/09/2006 21:57:39
Messages: 103
Offline
[Profile] [PM]
Trước giờ thắc mắc cái này lắm mà chưa biết hỏi làm sao,nay được bác commale giải thích ngọn ngành,quá tuyệt.tks.
[Up] [Print Copy]
  [Question]   Re: Cơ chế mã hoá pass trong shadow 21/09/2006 11:59:31 (+0700) | #11 | 24733
thang2rs
Member

[Minus]    0    [Plus]
Joined: 06/07/2006 18:45:35
Messages: 46
Offline
[Profile] [PM]

conmale wrote:

Về cách "mã hoá" shadow thì tổng thể như sau. Khi user được cung cấp một pasword hoặc anh ta chọn một password, password này được encode với giá trị ngẫu nhiên để tạo ra salt. Giá trị salt này sẽ được lưu cùng với password đã được encoded trên hệ thống.
 


Hình như có sự nhầm lẫn ở đây: "password này được encode với giá trị ngẫu nhiên để tạo ra salt". Salt chính là giá trị ngẫu nhiên này!!!
[Up] [Print Copy]
  [Question]   Re: Cơ chế mã hoá pass trong shadow 21/09/2006 18:41:14 (+0700) | #12 | 24757
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]

thang2rs wrote:

conmale wrote:

Về cách "mã hoá" shadow thì tổng thể như sau. Khi user được cung cấp một pasword hoặc anh ta chọn một password, password này được encode với giá trị ngẫu nhiên để tạo ra salt. Giá trị salt này sẽ được lưu cùng với password đã được encoded trên hệ thống.
 


Hình như có sự nhầm lẫn ở đây: "password này được encode với giá trị ngẫu nhiên để tạo ra salt". Salt chính là giá trị ngẫu nhiên này!!!
 


Cám ơn thang2rs đã đưa ra điểm thiếu sót này smilie). Câu ở trên phải là:

Về cách "mã hoá" shadow thì tổng thể như sau. Khi user được cung cấp một pasword hoặc anh ta chọn một password, password này được encode với giá trị ngẫu nhiên được gọi là salt. Giá trị salt này sẽ được lưu cùng với password đã được encoded trên hệ thống.

Thân.
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   Cơ chế mã hoá pass trong shadow 22/09/2006 06:32:20 (+0700) | #13 | 24911
navaro
Member

[Minus]    0    [Plus]
Joined: 27/06/2006 20:54:35
Messages: 8
Offline
[Profile] [PM]
há há,

Về cách "mã hoá" shadow thì tổng thể như sau. Khi user được cung cấp một pasword hoặc anh ta chọn một password, password này được encode với giá trị ngẫu nhiên để tạo ra salt. Giá trị salt này sẽ được lưu cùng với password đã được encoded trên hệ thống.
 

Quả thật lúc đọc tới đây mình cũng chưa hình dung rõ smilie, salt smilie, nhưng ngại không dám hỏi smilie

Về cách "mã hoá" shadow thì tổng thể như sau. Khi user được cung cấp một pasword hoặc anh ta chọn một password, password này được encode với giá trị ngẫu nhiên được gọi là salt. Giá trị salt này sẽ được lưu cùng với password đã được encoded trên hệ thống.
 

Giờ thì sửa lại thế này thì ok rồi ;smilie
[Up] [Print Copy]
  [Question]   Cơ chế mã hoá pass trong shadow 30/06/2007 16:50:37 (+0700) | #14 | 67942
[Avatar]
rickb
Reseacher

Joined: 27/01/2007 17:47:27
Messages: 200
Offline
[Profile] [PM] [Yahoo!]

conmale wrote:

3. salt: là chuỗi string có 2 ký tự được chọn từ chuỗi [a-zA-Z0-9./] (biểu thị các ký tự từ a đến z cho chữ thường và chữ in và các số từ 0 đến 9, thêm vào đó là 2 ký tự . và /). Từ chuỗi này mới tạo ra giá trị ngẫu nhiên từ 4096 khả năng khác nhau.
 


Anh conmale có thể giải thích rõ thêm về phần này ko ? em chưa hiểu lắm, salt là chuỗi gồm 2 ký tự (vd : ab, c1 ...) nhưng còn câu "Từ chuỗi này mới tạo ra giá trị ngẫu nhiên từ 4096 khả năng khác nhau." nghĩa là sao ạ ?

Với lại khi em view file /etc/shadow thì thấy hashed password được lưu hơi lạ (em xem trên centos và ubuntu), thứ nhất cơ chế shadow pass trong linux như anh nói là dùng md5 + salt, như vậy cốt lõi nó vẫn là md5, chẳng wa ko phải md5 thẳng clear-text password của user mà thêm salt vào clear-text password của user rồi mới md5, mà theo như em biết với thuật toán md5 thì dù pass như thế nào (dài bao nhiêu, có ký tự đặc biệt ...) thì sau khi hash độ dài của nó chỉ có 32 ký tự và là duy nhất, vậy mà em cat thử /etc/shadow thì thấy nó có tới 34 ký tự :

Code:
test:$1$8dZUMH8F$LvJ308TsswUsfg1kcspsl/:13538:0:99999:7:::


Sao lại dư 2 ký tự nhỉ ? Và em cũng thấy lạ điều nữa là tất cả Shadowed password trong linux đều có phần $1$ ở đầu, vậy là sao anh nhỉ ?
[Up] [Print Copy]
  [Question]   Re: Cơ chế mã hoá pass trong shadow 01/07/2007 07:02:25 (+0700) | #15 | 68113
[Avatar]
rickb
Reseacher

Joined: 27/01/2007 17:47:27
Messages: 200
Offline
[Profile] [PM] [Yahoo!]
Anh conmale đâu rồi nhỉ ? smilie
[Up] [Print Copy]
  [Question]   Cơ chế mã hoá pass trong shadow 01/07/2007 13:06:03 (+0700) | #16 | 68175
Mr.Khoai
Moderator

Joined: 27/06/2006 01:55:07
Messages: 954
Offline
[Profile] [PM]
Chào rickb,

rickb wrote:
em chưa hiểu lắm, salt là chuỗi gồm 2 ký tự (vd : ab, c1 ...) nhưng còn câu "Từ chuỗi này mới tạo ra giá trị ngẫu nhiên từ 4096 khả năng khác nhau." nghĩa là sao ạ ?  

2 ký tự dùng trong salt có thể là 2 trong số các ký tự sau: a..z, A..Z, 0..9 ký tự '.' và '/'. Do đó,mỗi ký tự trong salt cần có 6 bits (64 khả năng: 52 cho a-z và A-Z, + 10 ký tự số, và 2 ký tự ./). Salt tổng cộng cần 2*6 = 12 bits, và tạo ra tổng cộng 2^12 = 4092 trường hợp ngẫu nhiên.

rickb wrote:
Sao lại dư 2 ký tự nhỉ ? Và em cũng thấy lạ điều nữa là tất cả Shadowed password trong linux đều có phần $1$ ở đầu, vậy là sao anh nhỉ ?  

Àh, dư 2 ký tự đó chính là salt smilie. $1$ là đặc trưng cho hàm hash md5. Bạn dùng các hàm hash khác thì đoạn đầu sẽ có "sigature" khác. Ví dụ: blowfish hash thì chuỗi hash sẽ bắt đầu bằng $2$ hoặc $2a$ tùy implementation.

khoai
[Up] [Print Copy]
  [Question]   Re: Cơ chế mã hoá pass trong shadow 01/07/2007 20:29:14 (+0700) | #17 | 68209
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]
Đọc man shadow, man crypt và các manual liên quan đến shadow thì sẽ thấy smilie).
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   Cơ chế mã hoá pass trong shadow 01/07/2007 23:48:48 (+0700) | #18 | 68237
[Avatar]
rickb
Reseacher

Joined: 27/01/2007 17:47:27
Messages: 200
Offline
[Profile] [PM] [Yahoo!]

Mr.Khoai wrote:
Chào rickb,

rickb wrote:
em chưa hiểu lắm, salt là chuỗi gồm 2 ký tự (vd : ab, c1 ...) nhưng còn câu "Từ chuỗi này mới tạo ra giá trị ngẫu nhiên từ 4096 khả năng khác nhau." nghĩa là sao ạ ?  

2 ký tự dùng trong salt có thể là 2 trong số các ký tự sau: a..z, A..Z, 0..9 ký tự '.' và '/'. Do đó,mỗi ký tự trong salt cần có 6 bits (64 khả năng: 52 cho a-z và A-Z, + 10 ký tự số, và 2 ký tự ./). Salt tổng cộng cần 2*6 = 12 bits, và tạo ra tổng cộng 2^12 = 4092 trường hợp ngẫu nhiên.

rickb wrote:
Sao lại dư 2 ký tự nhỉ ? Và em cũng thấy lạ điều nữa là tất cả Shadowed password trong linux đều có phần $1$ ở đầu, vậy là sao anh nhỉ ?  

Àh, dư 2 ký tự đó chính là salt smilie. $1$ là đặc trưng cho hàm hash md5. Bạn dùng các hàm hash khác thì đoạn đầu sẽ có "sigature" khác. Ví dụ: blowfish hash thì chuỗi hash sẽ bắt đầu bằng $2$ hoặc $2a$ tùy implementation.

khoai 


Đầu tiên cám ơn Khoai đã trảlời, nhưng ở câu trả lời cuối, mình ko nghĩ 2 ký tự dư ra là phần salt, vì trong 1 tài liệu CEH mình đọc, phần linux nó đề cập như sau :

Under Linux, the MD5 password is 32 characters long and begins with $1$. The characters between the second and third $ represent the salt. In the previous example, that value is Gjt/eO.e 


Tức là nó nói phần salt là phần bắt đầu từ ký từ $ thứ 2 đến kỳ tự $ thứ 3, mà mình để ý phần này trong password thường luôn lớn hơn 2 ký tự (như vd acc test của mình ở trên là 8dZUMH8F

Với lại sao mình thử encode md5 với 1 số site online thì thấy kết quả encode đâu có $1$ đâu nhỉ ? (vd http://scriptserver.mainframe8.com/md5.php)
[Up] [Print Copy]
  [Question]   Re: Cơ chế mã hoá pass trong shadow 02/07/2007 01:39:59 (+0700) | #19 | 68268
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
Nói thêm một chút về định dạng của /etc/passwd file và /etc/shadow file

Một non-shadowed /etc/passwd file có định dạng sau:
username:passwd:UID:GID:full_name:directory:shell 

Trong đó:
username: login name

passwd: password đã được encoded

UID: số User ID

GID: số Group ID mặc định

full_name: tên đầy đủ của người dùng. Trường này thực sự được gọi là GECOS (General Electric Comprehensive Operating System) và có thể lưu những thông tin khác ngoài tên đầy đủ

directory: đường dẫn đầy đủ thư mục home của người dùng

shell: User's login shell

Ví dụ:

quantasmilie:501:501:Tong Anh Quan:/home/quanta:/bin/bash
 

Còn định dạng của /etc/shadow file:
username:passwd:last:may:must:warn:expire:disable:reserved 

Trong đó:
username: login name

passwd: password đã được encoded

last: số ngày kể từ 01/01/1970 (không biết tại sao lại lấy ngày này) mà password được thay đổi

may: số ngày trước khi password có thể được thay đổi

must: số ngày sau đó password phải được đổi

warn: số ngày trước khi password expired, user sẽ được cảnh báo

expire: số ngày sau khi password expired, account sẽ bị disabled

disable: số ngày từ 01/01/1970 mà account bị disabled

reserved: một trường dự bị

Ví dụ:
quanta:$1$d8Ox0nqF$lVMIaCwJrnSWSr8MUseNI0:13694:0:99999:7::: 

Trong ví dụ này:
13694: chính là “last” (bạn thử chia cho 365 nhé)
0: “may”
99999: “must” (thử chia cho 365 thì được 274 (chắc không ai sống lâu đến thế))
7: “warn”: sẽ cảnh báo cho user 7 ngày trước khi password bị expired

Đầu tiên cám ơn Khoai đã trảlời, nhưng ở câu trả lời cuối, mình ko nghĩ 2 ký tự dư ra là phần salt, vì trong 1 tài liệu CEH mình đọc, phần linux nó đề cập như sau :
Under Linux, the MD5 password is 32 characters long and begins with $1$. The characters between the second and third $ represent the salt. In the previous example, that value is Gjt/eO.e
 

Tức là nó nói phần salt là phần bắt đầu từ ký từ $ thứ 2 đến kỳ tự $ thứ 3, mà mình để ý phần này trong password thường luôn lớn hơn 2 ký tự (như vd acc test của mình ở trên là 8dZUMH8F  

Bạn phải hiểu thế này:
Trong /etc/passwd, chẳng hạn:

username:Npge08pfz4wuk:503:100:Full Name:/home/username:/bin/sh
 

thì lúc này "Np" là salt còn "ge08pfz4wuk" là encoded password
Nhưng thường thì bạn không nhìn thấy đoạn này "Npge08pfz4wuk", nó được thay thế bằng ký tự "x".

Còn trong /etc/shadow file, nếu dùng MD5, thì shadow password có 32 ký tự bắt đầu với $1$, phần ký tự nằm giữa dấu $ thứ hai và thứ ba chính là salt đã được mã hóa. Phần này có 8 ký tự.
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: Cơ chế mã hoá pass trong shadow 02/07/2007 02:31:33 (+0700) | #20 | 68279
[Avatar]
rickb
Reseacher

Joined: 27/01/2007 17:47:27
Messages: 200
Offline
[Profile] [PM] [Yahoo!]

quanta wrote:
Nói thêm một chút về định dạng của /etc/passwd file và /etc/shadow file

Một non-shadowed /etc/passwd file có định dạng sau:
username:passwd:UID:GID:full_name:directory:shell 

Trong đó:
username
login name

passwd
password đã được encoded

UID
số User ID

GID
số Group ID mặc định

full_name
tên đầy đủ của người dùng. Trường này thực sự được gọi là GECOS (General Electric Comprehensive Operating System) và có thể lưu những thông tin khác ngoài tên đầy đủ

directory
đường dẫn đầy đủ thư mục home của người dùng

shell
User's login shell
Ví dụ:

quantasmilie:501:501:Tong Anh Quan:/home/quanta:/bin/bash
 

Còn định dạng của /etc/shadow file:
username:passwd:last:may:must:warn:expire:disable:reserved 

Trong đó:
username
login name

passwd
password đã được encoded

last
số ngày kể từ 01/01/1970 mà password được thay đổi

may
số ngày trước khi password có thể được thay đổi

must
số ngày sau đó password phải được đổi

warn
số ngày trước khi password expired, user sẽ được cảnh báo

expire
số ngày sau khi password expired, account sẽ bị disabled

disable
số ngày từ 01/01/1970 mà account bị disabled

reserved
một trường dự bị
Ví dụ:
quanta:$1$d8Ox0nqF$lVMIaCwJrnSWSr8MUseNI0:13694:0:99999:7::: 

Trong ví dụ này:
13694: chính là “last” (bạn thử chia cho 365 nhé)
0: “may”
99999: “must” (thử chia cho 365 thì được 274 (chắc không ai sống lâu đến thế))
7: “warn”: sẽ cảnh báo cho user 7 ngày trước khi password bị expired

Đầu tiên cám ơn Khoai đã trảlời, nhưng ở câu trả lời cuối, mình ko nghĩ 2 ký tự dư ra là phần salt, vì trong 1 tài liệu CEH mình đọc, phần linux nó đề cập như sau :
Under Linux, the MD5 password is 32 characters long and begins with $1$. The characters between the second and third $ represent the salt. In the previous example, that value is Gjt/eO.e
 

Tức là nó nói phần salt là phần bắt đầu từ ký từ $ thứ 2 đến kỳ tự $ thứ 3, mà mình để ý phần này trong password thường luôn lớn hơn 2 ký tự (như vd acc test của mình ở trên là 8dZUMH8F  

Bạn phải hiểu thế này:
Trong /etc/passwd, chẳng hạn:

username:Npge08pfz4wuk:503:100:Full Name:/home/username:/bin/sh
 

thì lúc này "Np" là salt còn "ge08pfz4wuk" là encoded password
Nhưng thường thì bạn không nhìn thấy đoạn này "Npge08pfz4wuk", nó được thay thế bằng ký tự "x".

Còn trong /etc/shadow file, nếu dùng MD5, thì shadow password có 32 ký tự bắt đầu với $1$, phần ký tự nằm giữa dấu $ thứ hai và thứ ba chính là salt đã được mã hóa. Phần này có 8 ký tự.
 


Nhưng như đã nói trên salt sẽ được ghép với password rồi mã hoà md5, do đó ta có thể xem chúng là 1 chuỗi duy nhất (password của ta trong hệ thống sẽ là pass thật + salt), trong md5 dù là pass như thế nào (dù là pass thật hay pass + salt dài thêm đi nữa) thì mã hoá ra cũng chỉ có 32 ký tự, mà trong shadow lại thành 34 ký tự ? vậy là như thế nào ? Nếu nói là pass thật md5 ghép với salt md5 thì càng ko đúng , vậy là ra tới 64 ký tự lận à ?
[Up] [Print Copy]
  [Question]   Re: Cơ chế mã hoá pass trong shadow 02/07/2007 02:39:34 (+0700) | #21 | 68280
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

rickb wrote:

Nhưng như đã nói trên salt sẽ được ghép với password rồi mã hoá md5, do đó ta có thể xem chúng là 1 (password của ta trong hệ thống sẽ là pass thật + salt), trong md5 dù là pass như thế nào (dù là pass thật hay pass + salt dài thêm đi nữa) thì mã hoá ra cũng chỉ có 32 ký tự, mà trong shadow lại thành 34 ký tự ? vậy là như thế nào ? Nếu nói là pass thật md5 ghép với salt md5 thì càng ko đúng , vậy là ra tới 64 ký tự lận à ? 

salt bao giờ cũng là phần đầu tiên, sau đó mới đến encoded password. Bạn thắc mắc phần 34 ký tự à, ví dụ của tớ:

$1$d8Ox0nqF$lVMIaCwJrnSWSr8MUseNI0
 

thì ở đây, bạn nên hiểu là: $1 chính là phần đặc trưng của kiểu mã hoá (MD5), còn 32 ký tự còn lại là salt + encoded password
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: Cơ chế mã hoá pass trong shadow 02/07/2007 02:50:22 (+0700) | #22 | 68282
[Avatar]
rickb
Reseacher

Joined: 27/01/2007 17:47:27
Messages: 200
Offline
[Profile] [PM] [Yahoo!]
Ok, vậy thì tớ hiểu rồi , vì lúc đầu cứ nghĩ đặc trưng md5 là $1$ chứ ko phải $1 => nếu trừ đi thì chỉ còn 31 ký tự nên ko logic, giờ thì hiểu rồi :lolsmilie

Thanx nha
[Up] [Print Copy]
  [Question]   Cơ chế mã hoá pass trong shadow 06/09/2008 07:55:24 (+0700) | #23 | 149960
hieunm
Member

[Minus]    0    [Plus]
Joined: 03/04/2004 21:52:23
Messages: 1
Offline
[Profile] [PM]

conmale wrote:

Nói về khía cạnh bảo mật thì việc "dời" passhash sang /etc/shadow nhằm khắc phục một điểm yếu của /etc/passwd đó là: ai cũng có thể read /etc/passwd và đọc hash value trong đó để brute force. Trong khi đó, /etc/shadow chỉ có thể đọc với chủ quyền root. Binary passwd được set SUID để thực hiện việc dùng chủ quyền root để đọc hash value trong /etc/shadow.
Thân mến. 

Chào anh conmale,
Theo như anh nói thì vẫn có thể decrypt được password đã mã hóa bằng Unix crypt(3) nếu biết salt, phải không ạ? Anh có thể giúp em thông tin cụ thể hơn về phương pháp attack được không ạ?
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|