paint-brush
Bảo vệ mật khẩu của bạn khỏi bị bẻ khóa: Hiểu các khái niệm toán họctừ tác giả@smoothmaruf
1,675 lượt đọc
1,675 lượt đọc

Bảo vệ mật khẩu của bạn khỏi bị bẻ khóa: Hiểu các khái niệm toán học

từ tác giả Abubakar Maruf8m2022/08/04
Read on Terminal Reader
Read this story w/o Javascript

dài quá đọc không nổi

Mật khẩu là một cụm từ hoặc từ bí mật được biết đến một mình người dùng hoặc một nhóm người dùng hạn chế. Vô số trang web yêu cầu mật khẩu để bảo mật tài khoản của người dùng. Mật khẩu có thể yêu cầu số ký tự tối thiểu hoặc ký hiệu và kết hợp số. Nhưng điều đó có đảm bảo một mật khẩu an toàn hơn không? Bất kể ý định của người dùng web là gì, các chính sách thường buộc họ phải chọn những mật khẩu khủng khiếp. Bằng chứng chứng minh rằng khi các chuỗi thủ tục tùy ý được thực hiện, người dùng trở nên khó chịu và chọn những mật khẩu tồi tệ. Điều này xảy ra một phần bởi vì hầu hết mọi người không biết cách điều khiển mật khẩu của họ.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Bảo vệ mật khẩu của bạn khỏi bị bẻ khóa: Hiểu các khái niệm toán học
Abubakar Maruf HackerNoon profile picture

Mật khẩu là một cụm từ hoặc từ bí mật được biết đến một mình người dùng hoặc một nhóm người dùng hạn chế. Vô số trang web yêu cầu mật khẩu để bảo mật tài khoản của người dùng. Mật khẩu có thể yêu cầu số ký tự tối thiểu hoặc ký hiệu và kết hợp số.


Nhưng điều đó có đảm bảo một mật khẩu an toàn hơn không?


Bất kể ý định của người dùng web là gì, các chính sách thường buộc họ phải chọn những mật khẩu khủng khiếp. Bằng chứng chứng minh rằng khi các chuỗi thủ tục tùy ý được thực hiện, người dùng trở nên khó chịu và chọn những mật khẩu tồi tệ. Điều này xảy ra một phần bởi vì hầu hết mọi người không biết cách điều khiển mật khẩu của họ.


Bất chấp những cảnh báo lặp đi lặp lại từ cộng đồng an ninh mạng, nhiều người nghĩ rằng việc chuyển đổi các chữ cái cho biến thể số của họ – như "3ebra" - khiến mật khẩu của họ khó bị bẻ khóa trong một cuộc tấn công khi nó không làm gì cả. Một khi điều này xảy ra, người dùng gặp hai vấn đề: mật khẩu không an toàn và ảo tưởng về tính bảo mật vì mật khẩu có vẻ khó đối với họ nhưng lại đơn giản đối với máy tính để giải mã.


Bạn có thể tạo hoặc dạy người khác cách thiết lập mật khẩu tốt bằng cách hiểu rõ hơn cách mật khẩu bị xâm phạm và phép toán liên quan.

Tất cả ở cùng một nơi

Giả sử một kẻ móc túi đã đánh cắp thẻ tín dụng của bạn và sau đó cố gắng sử dụng nó để truy cập vào tài khoản của bạn. (Cũng hãy nghĩ rằng ngân hàng của bạn sẽ không đóng băng thẻ tín dụng bị đánh cắp sau năm lần thử không thành công trở lên, vì nó vẫn được thực hiện ngày nay). Giống như hầu hết các ngân hàng, mã PIN gồm 4 chữ số được sử dụng để rút tiền từ máy ATM. Vì vậy, cơ hội của bạn mà tiền của bạn được bảo đảm là gì?


Khả năng anh ta sẽ đoán thành công mật khẩu của bạn chỉ một cách tình cờ là bao nhiêu?


Có mười cách kết hợp có thể xảy ra vì chữ số đầu tiên của mã PIN của bạn có thể là bất kỳ số nào từ 0 đến 9. Ngoài ra còn có mười tùy chọn vì không có giới hạn cho chữ số thứ hai sẽ hạn chế khả năng của anh ta (ví dụ: nếu bạn không thể ' t sử dụng mã PIN với các số lặp lại). Tương tự với chữ số thứ ba và thứ tư.


Có 10.000 mật khẩu khả thi, một trong số đó có thể là của bạn: 10 x 10 x 10 x 10 = 10.000. Một mẫu ngẫu nhiên gồm 10.000 mật khẩu sẽ có 1 trong 10.000 xác suất kẻ tấn công dự đoán chính xác mật khẩu của bạn.


Bởi vì con người không thể tạo ra các con số ngẫu nhiên hay bất cứ điều gì khác, điều này không hoàn toàn đúng trong thực tế. Những định kiến trong bộ não của chúng ta khiến chúng ta bị giam cầm. Ngay cả khi có vẻ như chúng ta nghĩ ra các con số một cách ngẫu nhiên, chúng ta có xu hướng sử dụng các số tuần tự và suy nghĩ theo nhóm hai hoặc bốn số thường xuyên hơn.


Trong thực tế, một tập hợp con trong số 10.000 khả năng đó xảy ra thường xuyên hơn đáng kể trong thế giới thực. Ví dụ: 1234 hoặc 1111 hiển thị thường xuyên hơn nhiều so với 7148.


Mặc dù không thể chắc chắn rằng tội phạm sẽ có nhiều thời gian để nhập 10.000 tổ hợp vào máy ATM, nhưng một máy tính tiêu chuẩn có thể thực hiện hàng chục tỷ lần thử mỗi giây. Kẻ tấn công có thể dễ dàng giải mã mã PIN 4 chữ số.


Tuy nhiên, mặc dù không chắc tội phạm có đủ thời gian để gõ 10.000 tổ hợp trong máy ATM, nhưng một máy tính thông thường ngày nay có thể thực hiện hàng chục tỷ lần thử mỗi giây. Mã PIN 4 chữ số sẽ bị bẻ khóa nhanh chóng. Tăng không gian mẫu cho mật khẩu của bạn càng nhiều càng tốt có thể khiến mật khẩu khó bị phá; rất khó để suy ra mật khẩu đúng trong số một nghìn tỷ kết hợp hơn là một nghìn.

Không gian mật khẩu là gì?

Không gian mật khẩu là tổng số các kết hợp mật khẩu có thể có cho một bảng chữ cái cụ thể, bộ ký tự và độ dài mật khẩu tối đa. Nó đo lường tính bảo mật và tính dễ bị tổn thương của mật khẩu bằng cách tính toán số lần đoán ngẫu nhiên có thể được thực hiện để tìm mật khẩu trong một cuộc tấn công vũ phu.


Kích thước của các ký tự được phép (bảng chữ cái, số, ký hiệu, v.v.) và độ dài của mật khẩu xác định không gian mật khẩu tiềm năng lớn như thế nào. Do đó, mật khẩu càng dài và phức tạp càng được sử dụng, đối thủ càng trở nên khó khăn hơn khi bắt buộc phải sử dụng một mật khẩu hơi khó kiểm tra vì không gian mật khẩu trở nên rộng.

Cách tính không gian mẫu mật khẩu

Từ ví dụ về thẻ tín dụng đã thảo luận trước đó, chúng tôi đã tính toán không gian mẫu của mã PIN bằng cách nhân số ký tự được phép cho các chữ số được phép. Mười ký tự đủ điều kiện đã được nhập cho mỗi chữ số; 10 x 10 x 10 x 10 hoặc 104.


Để tính không gian mẫu mật khẩu, chúng ta có thể sử dụng công thức S = CN


Ở đâu:

S = tổng số mật khẩu có thể có trong không gian mẫu

C = số ký tự trong nhóm các ký tự có sẵn

N = số ký tự trong mật khẩu của chúng tôi.


• Nếu bạn sử dụng mật khẩu chỉ có chữ hoa thì C = 26 • Nếu bạn sử dụng mật khẩu có chữ hoa và ít nhất một chữ thường thì C = 52 • Nếu bạn sử dụng mật khẩu có chữ hoa, hãy ít nhất một chữ thường và số, thì C = 62 • Nếu bạn sử dụng mật khẩu trải rộng trên tất cả các ký tự thì C = 95 Bây giờ, hãy so sánh các mật khẩu khác nhau và xem không gian mẫu của chúng sẽ khác nhau như thế nào: Ví dụ: YGMEOH C = 26 (chỉ viết hoa) N = 6 S = 308,915,776 hoặc khoảng 309 triệu tổ hợp mật khẩu

S = CN S = 266 = 308,915,776 kết hợp Sử dụng tất cả các ký tự và để độ dài mật khẩu là 6 ký tự, chúng ta có:

Ví dụ: @Q: t-2

C = 95

N = 6

S = 735.091.890.625 hoặc khoảng 735 tỷ tổ hợp mật khẩu

S = CN S = 956 = 735.091.890.625 tổ hợp.

Chỉ sử dụng các chữ cái viết hoa và tăng độ dài lên 16 ký tự, chúng ta có

Ví dụ: tfucbxqhjyepvgmw C = 26

N = 16 S = 43.608.742.899.428.874.059.776 tổ hợp mật khẩu, lớn hơn khoảng 59 tỷ lần so với @Q: t-2, ví dụ cuối cùng của chúng tôi. S = CN S = 2616 = 43.608.742.899.428.874.059.776 tổ hợp. Từ hình minh họa trên, rõ ràng là không gian mẫu làm cho mật khẩu khó bị bẻ khóa, chứ không phải bao gồm các ký hiệu hoặc số. Bạn có thể tăng kích thước chiều dài của không gian mẫu với nhiều ký tự hơn.


Cách đo độ mạnh của mật khẩu: Entropy


Entropy trong vấn đề này là thước đo kích thước của không gian mẫu của một mật khẩu cụ thể, tức là thước đo độ mạnh của mật khẩu. Thật không dễ dàng để đo lường mức độ khó bẻ khóa mật khẩu nếu không biết cách tạo mật khẩu. Tuy nhiên, việc có một số – được biểu thị bằng bit entropy– cho thấy mật khẩu có thể dễ hay khó bẻ khóa rất hữu ích. Entropy càng cao, mật khẩu càng khó bẻ khóa; entropy càng thấp thì càng dễ bị nứt. Nhắc lại rằng các chữ số thập phân có mười khả năng; 0 đến 9 nhưng một chữ số nhị phân – hay còn gọi là bit– chỉ có hai khả năng là 0 và 1; tức là, S = CN cho chữ số thập phân là 10N, nhưng đối với một bit, nó là 2E; trong đó E là số bit. Vì vậy, nếu một bit đại diện cho một không gian mẫu của hai khả năng, thì entropy của 50 bit sẽ xác định một không gian 250 = 2 x 2 x 2 x… khả năng. Do đó, một mật khẩu có 50 bit entropy sẽ được lấy từ một nhóm 250 mật khẩu duy nhất. Tương tự như vậy, mật khẩu có 51 bit sẽ được lấy từ tập hợp 251, khiến nó khó bị bẻ khóa hơn mật khẩu 50 bit. Công thức dưới đây có thể được sử dụng để tính toán entropy của mật khẩu E = log2 (CN) HOẶC E = N x log2 (C) Ví dụ, hãy tính entropy của BerbeCUE201 Ở đây C = 26 +26 + 10 = 62 N = 11 E = N x log2 (C) E = 11 x log2 (62) = 11 x 5,9541 E = 65,5 bit Từ S = 2E S = 265,5 S = 52,175,271,301,331,128,849.398 kết hợp Đối với Berbecue2 (! 0>}}} entropy sẽ là E = N x log2 (C) E = 16 x log2 (95) = 16 x 6.5698 E = 105,1 bit Từ S = 2E S = 2105,1 S = 43.476.296.738.970.232.553.127.150.068.066.389 kết hợp Các ví dụ trên xác nhận rằng entropy càng cao, mật khẩu càng khó bẻ khóa. . Vì vậy, entropy cho biết sẽ mất bao nhiêu lần thử để cưỡng bức mật khẩu. Theo thống kê, kẻ thù sẽ nhận được mật khẩu sớm hơn lần thử cuối cùng; họ không cần phải trải qua tất cả các kết hợp trước khi có được mật khẩu phù hợp. Vì vậy, khi tính toán a độ mạnh của mật khẩu, số lần đoán dự kiến được xem xét; đây thường là 50% số lần đoán đúng . Đối với mật khẩu 105,1 bit, S = 2E - 1 S = 2105,1 - 1 S = 21,738,148,369,485,116,276,563,575,034,033.194 kết hợp.


Tại sao Entropy cao là không đủ

Việc chọn một mật khẩu an toàn bao gồm nhiều yếu tố, trong đó bao gồm entropy của mật khẩu. Nếu hai mật khẩu có cùng entropy, một mật khẩu có thể mạnh vừa phải trong khi mật khẩu kia cực kỳ yếu. Điều này là do từ điển mật khẩu, là danh mục các mật khẩu bị rò rỉ có sẵn trên internet.

Sử dụng các danh mục như vậy được gọi là Tấn công từ điển, trong đó bất kỳ kẻ thù nào cố gắng bẻ khóa mật khẩu của bạn sẽ thử từ điển mật khẩu trước khi thực hiện một cuộc tấn công vũ phu. Vì vậy, nếu bạn sử dụng mật khẩu trong từ điển này, số lượng bit entropy sẽ không quan trọng vì mật khẩu sẽ bị bẻ khóa nhanh chóng.


Thuật toán băm mật khẩu

Nếu quản trị viên web lưu trữ mật khẩu dưới dạng văn bản thuần túy trên máy chủ của họ, những kẻ tấn công sẽ dễ dàng lấy được mật khẩu nếu họ có thể truy cập vào máy chủ web, ngay cả khi mật khẩu mạnh. Đây là lý do tại sao mật khẩu nên được ướp muối và băm trước khi lưu trữ. Thay vì lưu trữ chính mật khẩu, chữ ký của mật khẩu được tạo ra thông qua cơ chế băm và băm được lưu trữ.

Việc ướp mật khẩu liên quan đến việc thêm một chuỗi 32 ký tự ngẫu nhiên trở lên vào mật khẩu trước khi băm mật khẩu.

Các thuật toán băm là các quy trình một chiều khiến cho việc tạo lại mật khẩu từ chữ ký băm là không thể tính toán được. Thuật toán này biến mật khẩu thành một chuỗi các số và chữ cái không thể thay đổi được. Nhiều thuật toán có thể được sử dụng để băm, bao gồm bcrypt, MD5, SHA, NTLM, v.v.

Làm thế nào mật khẩu có thể bị bẻ khóa


  1. Băm tất cả các mật khẩu có thể có trong không gian mẫu Vì không thể đảo ngược mật khẩu đã băm trở lại văn bản thuần túy, những gì bạn có thể làm để bẻ khóa mật khẩu là băm tất cả các mật khẩu có thể có của không gian mẫu đó và tìm hàm băm phù hợp với mục tiêu của bạn. Nếu tìm thấy, thì bạn đã bẻ mật khẩu thành công. Mật khẩu băm yêu cầu tốc độ băm – sức mạnh tính toán– và một số thuật toán băm khó tính toán hơn so với các thuật toán khác, khiến chúng tốn thời gian hoặc thậm chí không thể bẻ khóa. Đây là lý do tại sao thuật toán SHA-1 là một lựa chọn băm kém vì các hàm băm SHA-1 được máy tính tính toán rất nhanh, điều này làm cho nó dễ bị tấn công.

    Như đã giải thích trước đây, không gian mẫu mật khẩu của bạn càng toàn diện, thì kẻ tấn công càng có nhiều khả năng băm trước khi tìm thấy bất kỳ băm nào phù hợp. Đôi khi, không gian mẫu rộng hơn có thể khiến mật khẩu của bạn không thể bẻ khóa, mất hàng trăm nghìn năm để bẻ khóa.


  2. Tấn công bạo lực Một cuộc tấn công bạo lực là khi kẻ tấn công cố gắng đoán mật khẩu chính xác trong số các khả năng mật khẩu trên không gian mẫu. Điều này được thực hiện bằng cách gửi nhiều mật khẩu cho đến khi tìm thấy mật khẩu chính xác. Cách tiếp cận này tương đối phổ biến vì nó không hiệu quả. Nó chỉ hoạt động nếu mật khẩu của bạn rất ngắn, chẳng hạn như ít hơn tám ký tự hoặc nếu kẻ tấn công biết rằng bạn chỉ sử dụng một bộ ký tự cụ thể (ví dụ: số, bảng chữ cái hoặc chữ và số).


  3. Tấn công từ điển Những kẻ tấn công thường đưa ra giả định về cách mọi người tạo mật khẩu, đặc biệt là mật khẩu dài hơn, nơi tấn công vũ phu không hiệu quả. Như đã đề cập trước đó về định kiến của con người, sự lựa chọn của chúng ta bị ảnh hưởng bởi một số hành vi nhất định. Vì vậy, những kẻ tấn công tạo một danh mục các cụm từ, mẫu và mật khẩu thường được sử dụng như "mypassword" và bắt đầu thử chúng để xem liệu hàm băm của chúng có khớp với mục tiêu của chúng hay không. Nếu không, họ sẽ điều chỉnh nó một chút, chẳng hạn như thay đổi nó thành "myp4ssword" và thử lại.


    Bất kỳ cuộc tấn công nào phát sinh từ loại này được gọi là tấn công Từ điển , nơi sức mạnh tính toán được sử dụng để tạo mật khẩu giả từ những từ mà hầu hết mọi người có thể sử dụng.