Điểm:0

DIY: công cụ tạo khóa mật khẩu bằng PBKDF2 / HMAC

lá cờ ru

Trước hết, tôi không muốn phát minh lại bánh xe, chỉ muốn chế tạo chiếc ô tô của riêng mình. Môi trường phi sản phẩm; chỉ để vui chơi và giải trí.

Mục tiêu là sử dụng một mật khẩu chính riêng tư (và không bao giờ được công bố) để tạo mật khẩu duy nhất (mã thông báo) cho mỗi tài khoản trang web (twitter.com, reddit.com, v.v.)

Cách tiếp cận sau đây có phù hợp với những mục tiêu này không?

Mã số:

HOST_HASH = SHA512( ĐĂNG NHẬP + MÁY CHỦ)

USER_HASH = SHA512( USER_NAME + HOST_HASH )

PWD_HASH = SHA512( USER_PASSWORD )

KHÓA = PBKDF2_SHA256( USER_HASH, PWD_HASH, ITERATIONS_300000, LENGTH_512BITS )

TIÊU CHUẨN = HMAC_SHA512( HOST_HASH, KEY )

TOKEN = BASE64( SHA1(DIGEST) ) #-- chỉ để xuất ra thuận tiện

đầu vào:

  • TÊN TÀI KHOẢN = tên đầy đủ của người dùng (nghĩa là: Jones Smith)
  • MẬT KHẨU NGƯỜI DÙNG = người dùng bí mật mật khẩu chính (hoặc cụm mật khẩu)
  • ĐĂNG NHẬP = bí danh người dùng hoặc e-mail hoặc những gì đã từng được sử dụng để đăng nhập (ví dụ: jsmith123)
  • NGƯỜI PHỤC VỤ = trang web hoặc tên miền (nghĩa là: stackoverflow.com)

Đầu ra:

  • MÃ THÔNG BÁO = mật khẩu mạnh và duy nhất dễ tạo lại nhưng khó đoán (?)
kelalaka avatar
lá cờ in
Mục đích của bạn là gì thay vì tạo một mật khẩu ngẫu nhiên thống nhất?
swannty avatar
lá cờ ru
@kelalaka â chỉ nhớ một mật khẩu chính tốt, nhưng có một mật khẩu khác cho mỗi trang web bắt nguồn từ mật khẩu chính
Điểm:1
lá cờ kr

Bạn sử dụng băm của băm. Trong sơ đồ của bạn, nó là an toàn. Nhìn thấy chi tiết ở đây.

Bạn sử dụng PBKDF2 và do đó bạn bảo vệ các mật khẩu có nguồn gốc khỏi bị cưỡng bức vũ phu.

Nhưng cách tiếp cận của bạn có thể dẫn đến các vấn đề về khả năng sử dụng. Giả sử bạn có 100 - 200 tài khoản cho các trang web, dịch vụ email, mạng xã hội, dịch vụ video/audio, hội thảo trực tuyến, ngân hàng, v.v. Hãy nghĩ đến các trường hợp sau:

  • Một trang web yêu cầu bạn thay đổi mật khẩu mỗi năm một lần, trang kia yêu cầu 3 tháng một lần.
  • Một trang web giữ mật khẩu ở dạng đơn giản. Cơ sở dữ liệu mật khẩu của họ đã bị xâm phạm. Họ yêu cầu bạn thay đổi mật khẩu trong vòng 3 ngày.
  • Do nhầm lẫn, bạn đã sử dụng mật khẩu cho một trang web khác. Sau nhiều lần thử, tài khoản của bạn đã bị khóa. Sau khi mở khóa, bạn được yêu cầu cung cấp mật khẩu mới.

Để thay đổi mật khẩu cho một trang web, bạn sẽ phải thay đổi mật khẩu cơ sở của mình. Điều này sẽ thay đổi mật khẩu dẫn xuất cho tất cả các trang web khác. Đó là lý do tại sao bạn sẽ phải đi đến mọi trang web duy nhất và thay đổi mật khẩu của bạn.

  • Điều này có thể mất rất nhiều thời gian.
  • Bạn có thể quên một số trang web, vì bạn tự động lấy mật khẩu nên có thể bạn không giữ danh sách. Sau này, bạn sẽ ngạc nhiên khi các trang web bị lãng quên như vậy không chấp nhận mật khẩu.
  • Một số trang web có thể không khả dụng tại thời điểm bạn muốn thay đổi mật khẩu của mình. Hoặc bạn không có thời gian để thay đổi mật khẩu cho tất cả các trang web cùng một lúc và thực hiện điều đó theo khối, 10 trang web hôm nay, 10 trang web ngày mai, v.v. Sau này, bạn sẽ không chắc mình đã thay đổi mật khẩu ở đâu và do đó bạn nên sử dụng mật khẩu cơ sở nào cho trang web nào.

Bạn quyết định nếu điều này là chấp nhận được cho bạn.

Nhưng nếu bạn sử dụng một số quản lý mật khẩu, bạn sẽ nhận được mật khẩu được bảo vệ đáng tin cậy, ví dụ: KeePass mã hóa bằng AES-256 và sử dụng số lần lặp lại có thể định cấu hình để tạo mật khẩu, bạn vẫn cần nhớ một mật khẩu tốt duy nhất giống như một dicewire dựa, nhưng ưu điểm là tất cả mật khẩu của bạn cho các tài nguyên khác nhau vẫn còn sống độc lập nhau và bạn sẽ không gặp bất kỳ vấn đề nào về khả năng sử dụng được đề cập ở trên.

swannty avatar
lá cờ ru
Có, việc thay đổi và gia hạn mật khẩu có thể là một vấn đề về lâu dài. Tôi sẽ suy nghĩ về vấn đề đó. KeePass là tốt nhưng mật khẩu được lưu trữ (ngay cả khi được mã hóa) ở đâu đó trong tệp hoặc cơ sở dữ liệu. Tôi đang tìm kiếm thứ gì đó "phi vật chất hóa" hơn. Cảm ơn bạn rất nhiều vì câu trả lời của bạn.

Đă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.