Điểm:0

Quản lý các khóa chính được sử dụng trong PBKDF2 và HMAC (lưu trữ, xoay vòng)

lá cờ in

trường hợp sử dụng của tôi:

Tôi có một vài khóa chính, tôi sử dụng từng khóa cho một thao tác cụ thể (ví dụ: một khóa để mã hóa dữ liệu của người dùng và một khóa khác để tạo chữ ký JWT, v.v.).

Tôi sử dụng các khóa chính này trong hai việc cụ thể:

  1. trong PBKDF2 dưới dạng đầu vào + muối để lấy các khóa đối xứng và nonce (iv) và sau đó chỉ lưu trữ muối với bản mã trong cơ sở dữ liệu
  2. trong HMAC dưới dạng khóa bí mật (tiêu)

Tôi cần xoay các phím chính này khi chúng cũ đi.

Các câu hỏi để làm rõ những gì tôi cần biết:

  1. Khi nào các phím chính này cũ hoặc cần được xoay?
  2. Làm cách nào để xoay các khóa này và cũng có thể lấy lại các khóa cũ từ các khóa mới để giải mã dữ liệu được mã hóa hoặc xác minh giá trị băm được tạo bởi các khóa cũ này? Tôi nghĩ rằng tôi nên thực hiện XOR bit trên khóa cũ bằng khóa mới tương ứng
  3. Tôi hiện không có đặc quyền sử dụng HSM (Mô-đun bảo mật phần cứng) hoặc các vùng bảo mật, việc lưu trữ các khóa chính này trong các tệp bên cạnh API ứng dụng có đủ an toàn không? Tôi nên ghi nhớ những điều gì?
  4. Tôi ổn với PBKDF2 hay tôi nên sử dụng HKDF? Nếu có, tôi nên làm gì khi sử dụng HKDF?
  5. Đề xuất độ dài nào cho khóa chính trong trường hợp sử dụng như vậy?
  6. Có bất kỳ luồng, vấn đề hoặc cải tiến nào trong toàn bộ không?
Swashbuckler avatar
lá cờ mc
Chính xác thì bạn đang cố gắng bảo vệ điều gì khi bạn cần xoay phím theo cách này? Nói chung, xoay vòng khóa liên quan đến việc sử dụng các khóa đã cập nhật cho dữ liệu mới nhưng không cố gắng bảo vệ lại dữ liệu hiện có? Có vẻ như bạn muốn cập nhật biện pháp bảo vệ hiện có nhưng không cần mã hóa lại. Tùy thuộc vào những gì bạn đang cố gắng bảo vệ, điều đó có thể là không thể (ít nhất là theo hiểu biết của tôi).
Mohamed Waleed avatar
lá cờ in
@Swashbuckler không phải là cách tốt để xoay phím thường xuyên sao? tôi cũng biết rằng các khóa này có vòng đời hạn chế. Loại mã hóa tôi đang thực hiện là mã hóa dữ liệu người dùng riêng tư trong một dịch vụ thông thường và loại băm đang tạo chữ ký cho mã thông báo cho người dùng và băm mật khẩu của họ cũng như bất kỳ dữ liệu nào khác cần ở chế độ riêng tư và tôi không nên biết
Mohamed Waleed avatar
lá cờ in
@Swashbuckler Tôi biết rằng vòng đời của một khóa nói chung có liên quan đến việc sử dụng nó. Tôi có các khóa chỉ được sử dụng để mã hóa một số dữ liệu trong cơ sở dữ liệu, khi nào tôi nên xoay các khóa này? khi có rò rỉ dữ liệu? Tôi cũng có một số khóa được sử dụng rất thường xuyên trong việc băm và tạo chữ ký cho mã thông báo, khi nào thì tôi cũng nên xoay các khóa này?
Mohamed Waleed avatar
lá cờ in
@Swashbuckler tôi đang nghĩ đến việc xoay phím vì tôi nghĩ sẽ hữu ích khi khiến kẻ tấn công khó lấy được bất kỳ thông tin nào hơn và tôi cũng sẽ lưu trữ một ứng dụng như vậy trên vps
Mohamed Waleed avatar
lá cờ in
@Swashbuckler Tôi ổn với dữ liệu được mã hóa bằng các khóa cũ, tôi đang hỏi về cách xoay các khóa để cập nhật dữ liệu mới bằng một khóa mới và cũng có thể giải mã dữ liệu cũ mà không cần lưu trữ toàn bộ khóa cũ bằng cách thực hiện một việc như một XOR chẳng hạn
SAI Peregrinus avatar
lá cờ si
Khóa mã hóa PHẢI có entropy cao (gần 1 bit entropy trên mỗi bit dữ liệu). Điều đó có nghĩa là chúng không thể nén được, vì vậy bạn PHẢI lưu trữ toàn bộ khóa để giải mã dữ liệu cũ nếu bạn không mã hóa lại theo khóa mới. Đây là [Định lý mã nguồn của Shannon](https://en.wikipedia.org/wiki/Shannon's_source_coding_theorem).

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