Điểm:1

Độ dài cụm mật khẩu nào tốt để khó phá khóa PBKDF2 của bitcoin?

lá cờ ru

Dựa theo https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki#From_mnemonic_to_seed

Để tạo hạt giống nhị phân từ ghi nhớ, chúng tôi sử dụng hàm PBKDF2 với một câu dễ nhớ (trong UTF-8 NFKD) được sử dụng làm mật khẩu và chuỗi "mnemonic" + cụm mật khẩu (một lần nữa trong UTF-8 NFKD) được sử dụng làm muối. Số lần lặp được đặt thành 2048 và HMAC-SHA512 được sử dụng làm hàm giả ngẫu nhiên. Độ dài của khóa dẫn xuất là 512 bit (= 64 byte).

Cho rằng chúng ta biết hạt giống ghi nhớ 24 từ, tôi nên chọn bao nhiêu ký tự cho mật khẩu của mình để nó rất khó đoán với một siêu máy tính rất nhanh? Hoặc tốt hơn, bao nhiêu hoán vị là đủ để nó an toàn?

kelalaka avatar
lá cờ in
An ninh mục tiêu của bạn là gì? Chúng tôi có thể gọi đây là một sự lừa bịp đối với câu hỏi của bạn [Có nên sử dụng 7-8 từ ngẫu nhiên trong tất cả các từ của một ngôn ngữ làm mật khẩu không?](https://crypto.stackexchange.com/q/76701/18298). Nếu không, xin vui lòng cho biết.
fgrieu avatar
lá cờ ng
Bất kỳ lời khuyên hiện đại nào về việc sử dụng PBKDF2 để băm mật khẩu đều không phù hợp hoặc hướng đến việc làm cho hệ thống có thể bị phá vỡ. Khi kết hợp với _"Số lần lặp được đặt thành 2048"_, đó là một sự khiêu khích chống lại lẽ thường! Đoán xem tôi phân loại lời khuyên [đó](https://pages.nist.gov/800-63-FAQ/#q-b17) như thế nào, dựa trên các tiền lệ như [Kích thước khóa DES](https://crypto.stackexchange. com/a/34228/555) và [Dual_EC_DRBG](https://en.wikipedia.org/wiki/Dual_EC_DRBG).
kelalaka avatar
lá cờ in
@fgrieu Tôi đoán, họ chỉ sử dụng PBKDF2 để kết hợp mật khẩu và xuất hạt giống nhị phân sẽ được sử dụng trong secp256k1. Không phải để bảo mật. Họ đã nói rằng cho phép entropy tối thiểu 128 bit. OP phải sử dụng 256 để đạt được entropy 2560 bit kể từ Grover.
fgrieu avatar
lá cờ ng
@kelalaka: Câu hỏi hỏi cách chọn mật khẩu, với mục đích bảo vệ khóa riêng tư. Câu hỏi giả định rằng "rằng chúng ta biết hạt giống ghi nhớ 24 từ" và khóa công khai được cho là đã biết. Cùng với đó, không phải mỗi mật khẩu đều có thể kiểm tra được với khoảng 2048 SHA-512 và phép nhân một điểm trên secp256k1 sao? Nếu vậy, tôi không thể bỏ qua việc kéo dài entropy đó. Đó là đường cao tốc dành cho những kẻ bẻ khóa mật khẩu.
kelalaka avatar
lá cờ in
@fgrieu ghi nhớ là _không công khai_ . cụm mật khẩu có thể được sử dụng để từ chối hợp lý trong trường hợp các từ ghi nhớ được xác định. Sau đó, một lần nữa cần khoảng entropy 256 bit. Ngoài ra, như bạn có thể thấy trên liên kết của OP, nó có thể trống.Có thể, OP hỏi, vì những kẻ tấn công biết 24 từ, ...
fgrieu avatar
lá cờ ng
@kelalaka: nếu không cần mật khẩu vì có 128 bit entropy khác trở lên nhập vào thứ đó, thì tôi ổn với PBKDF2 và bất kỳ số vòng nào, và bằng dao cạo của Occam, nó đề xuất làm cho mật khẩu trống (hoặc mật khẩu được chấp nhận đầu tiên về mặt từ điển) và gọi nó là một ngày. Nếu mật khẩu là cần thiết, ví dụ: đối với khả năng từ chối hợp lý hoặc/và vì phần còn lại của entropy có thể bị rò rỉ, thì việc sử dụng PBKDF2 là không tốt, sử dụng nó với 2048 vòng còn tệ hơn. Trong cả hai trường hợp, tôi thấy câu hỏi/phương pháp không đáng để xem xét.
kelalaka avatar
lá cờ in
@fgrieu đã tiếp tục trả lời, nếu thiếu thứ gì đó, bạn có thể cho tôi biết không?
Điểm:1
lá cờ in

Khóa riêng và khóa chung trong ECC

Để tạo khóa công khai trong ECC 256 bit (Bitcoin sử dụng secp256k1), người ta cần 256 bit ngẫu nhiên thống nhất để tạo khóa bí mật $k$ (số 256-bit) và xuất bản $[k]G$, tức là phép nhân vô hướng với điểm gốc $G$ và điều này được bảo vệ bởi vấn đề logarit rời rạc trên ECC và nếu nhóm đường cong là chung thì cuộc tấn công nổi tiếng nhất có chi phí $2^{128}$. Hãy nhớ rằng một lần Máy tính lượng tử mật mã được xây dựng, thuật toán của Shor khi áp dụng cho DLog, tính bảo mật sẽ biến mất!

Mật khẩu ngẫu nhiên không khó nhớ sử dụng Dicewire xkcd936

Con người khó nhớ 64 ô lục giác ngẫu nhiên, vì vậy các nhà nghiên cứu đã phát minh ra dây xúc xắc và Bip39 tương tự như vậy. Trong Bip39, thay vì nhớ 64 ô, một lần cuộn các số ngẫu nhiên, có thể bằng cách tung đồng xu công bằng hoặc nhận từ /dev/urandom để chọn từ trong danh sách từ của Bip39. Được biết rằng 24 từ tạo ra entropy khoảng 256 bit.

Các từ được chọn không công khai và giữ bí mật mọi lúc.

Bây giờ chúng ta có thể coi việc sử dụng cụm mật khẩu là

  • Để đạt đượctừ chối hợp lý
  • Để tăng tính ngẫu nhiên khi nguồn ngẫu nhiên để tạo khả năng ghi nhớ 24 từ không đáng tin cậy như người ta hy vọng và
  • Sử dụng hạt giống ghi nhớ làm nguồn entropy và bảo vệ nó bằng cụm mật khẩu.

Nếu chúng ta đọc câu hỏi như,

Cho rằng những kẻ tấn công (không phải chúng tôi) biết hạt giống ghi nhớ 24 từ, số lượng ký tự mà tôi nên chọn cho mật khẩu của mình sao cho rất khó đoán với siêu máy tính rất nhanh? Hoặc tốt hơn, bao nhiêu hoán vị là đủ để nó an toàn?

Vì vậy, chúng tôi cho rằng từ ghi nhớ 24 từ không được bảo mật đúng cách.

Trước hết, repo khoảng 8 tuổi (created_at": "2013-11-19T17:18:41Z ) cũ hơn cuộc thi băm mật khẩu mới nhất được tổ chức vào năm 2015. Việc họ đề cập đến PBKDF2 chứ không phải Argon2 là điều bình thường. Có vẻ như tài liệu này không được cập nhật cho nhu cầu ngày nay! Nhưng việc đề xuất lặp lại 2048 là không bình thường và vẫn có những ứng cử viên tốt hơn vào thời điểm đó.

  • Bcrypt 1999 - lặp lại, không có độ cứng bộ nhớ
  • PBKDF2 2000 - lặp lại, không có độ cứng bộ nhớ
  • Scrypt 2009 - lặp lại, có độ cứng bộ nhớ
  • Argon2 2015 - lặp lại, có độ cứng bộ nhớ và có bộ đếm song song.

Đầu tiên, không sử dụng các ký tự, hãy sử dụng lại Bip39 hoặc dicewire để tạo cụm mật khẩu. Vì vậy, với 12 từ, người ta có thể đạt được entropy khoảng 128 bit và điều này ngay cả với hàm băm đơn giản như SHA1 hoặc SHA256 thay vì PBKDF2 hoặc Argon2, đủ an toàn từ Hội nghị thượng đỉnh và Sức mạnh tập thể của các Công cụ khai thác BitCoin nơi Công cụ khai thác từng đạt được $\khoảng 2^{92,09}$ SHA256d mỗi năm vào ngày 7 tháng 2 năm 2021. Nếu chúng tôi cho rằng đây là mục tiêu bảo mật cho mật khẩu của bạn, thì đối với PBKDF2

  • sử dụng phép lặp như 1M để bạn có thể giảm sức mạnh tập thể xuống $\khoảng 2^{70}$ và giảm Hội nghị thượng đỉnh xuống khoảng $~2^{50}$*. Điều thú vị về phép lặp này là có thể điều chỉnh theo nhu cầu của bạn. (Người ta có thể sử dụng điểm chuẩn của Hashcat trên NVidia RTX 3090 để điều chỉnh bảo mật mục tiêu theo siêu máy tính chứa nhiều RTX thay vì sức mạnh tập thể của các thợ đào).

    Bản ghi nhớ 12 từ sẽ rất an toàn cho Summit, Bip39 6 chữ sẽ vượt qua sức mạnh của nó. tuy nhiên, chúng tôi có những lựa chọn thay thế tốt hơn, ngay cả khi đó và bây giờ - Tiền điện tử và Argon2!

Sử dụng Argon2 bất cứ khi nào có thể

Ngày nay, những người khai thác bitcoin sử dụng rộng rãi ASIC và GPU để song song hóa ồ ạt quá trình khai thác. Bây giờ, chúng ta có các cơ chế giống như Argon2 chống lại chúng

  • bộ nhớ điều chỉnh để giảm sức mạnh tìm kiếm ASIC và GPU. Ngay cả trên PC và không thể khai thác thời gian sử dụng bộ nhớ.

  • điều chỉnh song song để lõi của CPU không thể chạy hoàn toàn trong các phiên bản song song.

  • Và, một lần nữa số lần lặp lại để giảm thời gian tìm kiếm đơn lẻ.

    Các thông số Argon2 phải được đo lường trước khi quyết định và việc ghi nhớ 12 từ vẫn sẽ khá an toàn cho Argon2. Có thể nói Bip39 6 chữ sẽ an toàn trước Hội nghị thượng đỉnh.

Hoặc tốt hơn, bao nhiêu hoán vị là đủ để nó an toàn?

Đọc đây là hoán vị của 24 từ. Sau đó, chúng tôi có 24! và bằng cách sử dụng Công thức xấp xỉ của chuỗi $$n! \sim \sqrt{2 \pi n}\left(\frac{n}{e}\right)^n$$ sau đó thiết lập $n=24$

$$24! \sim \sqrt{2 \pi 24}\left(\frac{24}{e}\right)^{24} \sim 6.2\mathrm{e}{+23} \sim 2^{80}$$

Điều này khá tốt (khoảng 8 từ Bip39), tuy nhiên, hãy nhớ rằng, nếu kẻ tấn công biết cách ghi nhớ 24 từ, thì entropy của khóa dẫn xuất $k$ cùng với cụm mật khẩu không thể vượt qua $2^{80}$. Nếu bạn ổn với entropy 80 bit thì với Argon2id với các tham số đẹp, điều này đủ để bảo mật trước việc tìm kiếm mật khẩu. $2^{50}\ll 2^{80}$

Tuy nhiên, lời khuyên là hãy sử dụng một bản ghi nhớ 24 từ mới nếu bạn có thể giữ nó an toàn để người ta có thể tìm ra cách khai thác $80$-bit entropy - không rõ ràng ngay bây giờ nếu không ép buộc cụm mật khẩu. Nếu không,

Lời khuyên cuối cùng; sử dụng các trình quản lý mật khẩu như keepass và password1 khi bạn chỉ cần một mật khẩu tốt, tốt nhất là từ dicewire hoặc Bip39. Họ có thể tạo mật khẩu thực sự ngẫu nhiên cho các nhu cầu và kho mật khẩu được bảo vệ bằng mật khẩu của bạn và phần còn lại do họ xử lý.


*Hãy nhớ rằng con số này là gần đúng, không chính xác. Chúng ta không thể chắc chắn nếu không ngồi trên bàn điều khiển của Siêu máy tính - Summit

fgrieu avatar
lá cờ ng
Tôi đồng ý rằng "kiểm tra muỗi ở trên nơi sinh bộ lạc thị trường miền núi chưa biết hành động mạnh mẽ xem xét" hoặc điều hoán vị với 1M thay vì 512 lần lặp PBKDF2 sẽ an toàn. Nhưng tôi muốn dành thời gian CPU đó cho Argon2, scrypt (được giới thiệu năm 2009, phổ biến rộng rãi vào năm 2013) hoặc thậm chí là bcrypt (1999) và có thể sử dụng một cụm từ ngắn hơn với mức độ bảo mật tương đương. Ngoài ra, tôi sẽ không thể tự tin nhớ cụm mật khẩu dài đó và tôi tin rằng hơn 1/4 cơ sở người dùng sẽ không hoặc sẽ viết cụm mật khẩu đó. Vì vậy, tôi không khuyến nghị hệ thống đó.
kelalaka avatar
lá cờ in
Vâng, đó là yêu cầu tính toán thực sự mà tôi đã bỏ qua vì tôi không thể chính xác. Tuy nhiên, 6 đến 7 là đủ. Hmm, có vẻ như tôi đã quên nhấn mạnh việc sử dụng Argon2. Mật khẩu dài, đó là vấn đề của con người, tuy nhiên, một số người viết nó ra một số lại quên mất. Có tin tức về việc quên mật khẩu ví có số lượng tiền khổng lồ. Có vẻ như giới hạn của số xu khả dụng tiến tới 0 khi n tiến tới vô cùng. Tôi sẽ cập nhật câu trả lời, sau. Cảm ơn.
kelalaka avatar
lá cờ in
@fgrieu Tôi đoán mục đích thực sự của cụm mật khẩu là tạo ra nhiều khóa riêng tư và khóa tương ứng. Bitcoin sử dụng rất nhiều cặp khóa cho mỗi người dùng. Họ sử dụng nhiều Ví xác định phân cấp hơn, BIP0032/BIP0044 phù hợp hơn với việc sử dụng.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.