2011-08-23 26 views
7

Có lỗ hổng nào trong lệnh này để tạo mật khẩu không?Máy phát mật khẩu này có bị thiên vị không?

head -c 8 /dev/random | uuencode -m - | sed -n '2s/=*$//;2p'

Sau khi tạo một vài mật khẩu với nó, tôi bắt đầu nghi ngờ rằng nó có xu hướng ủng hộ nhân vật nhất định. Tất nhiên mọi người rất giỏi khi nhìn thấy các mẫu không có, vì vậy tôi quyết định thử nghiệm lệnh trên một mẫu lớn hơn. Các kết quả dưới đây.

Từ một mẫu gồm 12.000 mật khẩu được tạo (12 chữ số), dưới đây là các chữ cái phổ biến nhất và ít nhất cũng như số lần chúng xuất hiện.

TOP 10   BOTTOM 10 

Freq | Char  Freq | Char 
-----|-----  -----|----- 
2751 | I   1833 | p 
2748 | Q   1831 | V 
2714 | w   1825 | 1 
2690 | Y   1821 | r 
2673 | k   1817 | 7 
2642 | o   1815 | R 
2628 | g   1815 | 2 
2609 | 4   1809 | u 
2605 | 8   1791 | P 
2592 | c   1787 | + 

Vì vậy, ví dụ 'Tôi' xuất hiện nhiều hơn 1,5 lần so với '+'.

Điều này có ý nghĩa thống kê không? Nếu vậy, làm thế nào lệnh có thể được cải thiện?

+0

dường như bash không phải là chương trình ?! wtf? làm thế nào có thể một cái gì đó như http://stackoverflow.com/questions/55556/password-generation-best-practice (hoặc hầu như bất cứ điều gì khác trong cột bên phải) vẫn mở trong khi điều này được đóng lại? –

Trả lời

7

có, tôi nghĩ rằng nó sẽ bị thiên vị. uuencode yêu cầu 3 byte cho mỗi 4 ký tự đầu ra. kể từ khi bạn đang cho nó 8 byte byte cuối cùng là đệm của một số loại (không ngẫu nhiên) và đó là sẽ thiên vị nhân vật thứ 12 (và hơi ảnh hưởng đến thứ 11 quá).

bạn có thể thử

head -c 9 /dev/random | uuencode -m - 

(với 9 thay vì 8) thay vào đó và gửi kết quả? mà không nên có cùng một vấn đề.

ps cũng có, bạn sẽ không còn cần phải thả các "=" đệm, vì đó là một bội số của 3.

http://en.wikipedia.org/wiki/Uuencoding

pps chắc chắn nó xuất hiện ý nghĩa thống kê. bạn mong đợi một biến thể tự nhiên của sqrt (trung bình), là (đoán) sqrt (2000) hoặc khoảng 40. vì vậy ba độ lệch từ đó, +/- 120, hoặc 1880-2120 phải chứa 99% chữ cái - bạn đang thấy một cái gì đó nhiều hệ thống hơn.

ý tưởng gọn gàng.

ooops tôi vừa nhận ra -m cho các lực uuencode base64 chứ không phải là thuật toán uudecode, nhưng ý tưởng tương tự cũng được áp dụng.

+0

Thú vị, tôi sẽ kiểm tra và xem nó so sánh như thế nào. –

+0

Tôi đang trong quá trình thử nghiệm tập hợp giá trị đầu tiên khi bạn đăng câu trả lời này; Tôi vừa thử nghiệm lệnh của bạn và nó có vẻ đồng nhất (p = 2,2e-16 cho đầu ra của lệnh đầu tiên, và p = 0,7911 cho lệnh thứ hai, cả hai đều sử dụng các phép thử chi square). – bnaul

+0

yay! cảm ơn! : o) –

Các vấn đề liên quan