Điểm:4

Rủi ro khi sử dụng SHA1 thay vì SHA256 cho RSA với phần đệm OAEP

lá cờ us

Tôi hiện đang triển khai mã hóa dựa trên RSA đơn giản như sau trong PHP (sử dụng openssl_public_encrypt):

// $sRawText là chuỗi văn bản cần mã hóa.
// $sPublicKey là khóa công khai được lưu trữ trên máy chủ.
openssl_public_encrypt($sRawText, $sKết quả, $sPublicKey, OPENSSL_PKCS1_OAEP_PADDING);
// $sResult là kết quả được mã hóa sau đó được lưu trữ.

Tôi đảm bảo sử dụng tùy chọn đệm OAEP, tuy nhiên, việc đệm được thực hiện bằng SHA1 thay vì SHA256. PHP không có tùy chọn đệm tích hợp hỗ trợ SHA256. Ví dụ, thư viện mật mã của Python sử dụng SHA256 thay vì như sau:

từ cryptography.hazmat.primitives nhập tuần tự hóa
từ cryptography.hazmat.primitives nhập băm
từ phần đệm nhập cryptography.hazmat.primitives.asymmetric
ciphertext = public_key.encrypt(
    thông điệp,
    đệm.OAEP(
        mgf=padding.MGF1(thuật toán=băm.SHA256()),
        thuật toán = băm.SHA256(),
        nhãn=Không có
    )
)

Các tùy chọn duy nhất để tôi tải SHA256 trên PHP là sử dụng thư viện của bên thứ ba như PHPSecLib hoặc EasyRSA. Tôi đã gặp phải rào cản sau vài giờ cố gắng cài đặt và sử dụng một trong số chúng trên môi trường lưu trữ được chia sẻ của mình. (Sẽ thật lý tưởng nếu tôi có thể đặt một tệp .php chứa tất cả RSA ở một nơi.)

Dữ liệu được mã hóa vào cơ sở dữ liệu trên máy chủ trực tuyến và điều đó phải xảy ra trong PHP để tôi có thể chèn các mục nhập mới khi người dùng đăng ký (sử dụng khóa chung). Tôi muốn đảm bảo rằng nếu dữ liệu cơ sở dữ liệu được mã hóa và khóa công khai lọt vào tay những kẻ bất chính có quyền truy cập vào mức sức mạnh tính toán hợp lý, thì dữ liệu sẽ ở chế độ riêng tư (an toàn như một cuộc tấn công vũ phu). Dữ liệu trong tay kẻ xấu có thể bị lạm dụng để lừa đảo người dùng hoặc tạo ra các tuyên bố sai sự thật.

Lưu trữ phía máy khách không hoạt động vì dữ liệu hiện đã có trong cơ sở dữ liệu và tôi cần một số trường nhất định, chẳng hạn như thông tin liên hệ, để liên hệ với người dùng. Thêm vào đó, tôi cảm thấy rằng hầu hết khách hàng sẽ mất dữ liệu, dữ liệu này không thể khôi phục được và có khả năng vẫn còn khả dụng trong vài năm tới. Tuy nhiên, tôi không muốn hoàn toàn tin tưởng vào môi trường máy chủ, vì vậy tôi muốn giảm thiểu bề mặt tấn công chỉ vào những thời điểm cụ thể khi dữ liệu đang được sử dụng. Tôi dễ dàng giữ khóa cá nhân và chuyển cụm từ đó ở chế độ ngoại tuyến và an toàn hơn là cố gắng bảo mật một cơ sở dữ liệu động luôn thay đổi và cần được lưu trữ dự phòng.

Tôi dự định thực hiện tất cả các thao tác đối với dữ liệu được mã hóa ngoại tuyến và chỉ sử dụng các trường cơ sở dữ liệu được mã hóa để xác minh (tức là dữ liệu khớp với nội dung nào đó mà người dùng nhập) hoặc để đếm các mục nhập.Một số trường trong cơ sở dữ liệu không nhạy cảm, vì vậy chúng không được mã hóa và những trường khác như mật khẩu được băm.

Điều tôi muốn biết là, nếu tôi tiến hành triển khai đệm SHA1, loại tấn công nào sẽ giúp tôi chống lại kẻ thù có dữ liệu cơ sở dữ liệu được mã hóa và khóa chung. Làm thế nào họ sẽ đi về những cuộc tấn công? Phần đệm SHA256 có giúp bảo vệ dữ liệu tốt hơn không và bằng cách nào?

Cám ơn rất nhiều!

kelalaka avatar
lá cờ in
Cảm ơn. Tuy nhiên, nó an toàn vì MGF không phải là cách tiêu chuẩn để tìm các va chạm SHA-1. tuy nhiên, hãy tìm cách di chuyển` Di chuyển để sử dụng SHA-256; tìm cách sử dụng nó.
lá cờ us
Tôi hiểu rằng SHA-256 là một lựa chọn được đề xuất. Tuy nhiên, tôi muốn hiểu lý do tại sao và rủi ro với SHA-1 là gì. MGF có phải là chức năng tạo khoảnh khắc không?
Điểm:5
lá cờ cn

Bạn có thể sử dụng SHA-1 hoặc MD5 cho OAEP. Nó sẽ không đưa bạn đến bất kỳ cuộc tấn công nào.

OAEP sử dụng các hàm băm cho hai mục đích: để băm nhãn và là một phần của hàm tạo mặt nạ, trong thực tế, luôn là MGF1 của một số hàm băm.

Đối với nhãn, hàm băm chỉ được sử dụng để biến nhãn thành bộ phân tách miền bản mã: khi giải mã, bản mã có hàm băm nhãn sai được phát hiện là không hợp lệ. Miễn là bạn không tạo nhãn từ các bộ phận có thể được cung cấp bởi đối thủ, bạn sẽ không gặp rủi ro va chạm. Và nếu bạn xây dựng nhãn theo cách phức tạp và bạn dựa vào nó để bảo mật, thì có lẽ bạn vẫn nên có một chữ ký.

Đối với MGF1, hàm băm được sử dụng như một lời tiên tri ngẫu nhiên. Thuộc tính của nó như một hàm băm không liên quan. Các hàm băm phổ biến trước đây không được dùng nữa sẽ không được dùng nữa vì có các cuộc tấn công cụ thể vào các thuộc tính của chúng dưới dạng hàm băm (cụ thể là khả năng chống va chạm). Tuy nhiên, với tư cách là những nhà tiên tri ngẫu nhiên, chúng vẫn được coi là tốt hơn bao giờ hết. (Chúng có một lỗ hổng đã biết, đó là phần mở rộng độ dài và cũng áp dụng cho SHA2 vốn không có lỗ hổng nào được biết đến dưới dạng hàm băm. Tuy nhiên, phần mở rộng độ dài không áp dụng cho MGF1 trong OAEP, vì nó được sử dụng trên đầu vào có kích thước cố định cho một khóa RSA nhất định.)

Việc sử dụng SHA-1 trong cấu trúc mật mã có thể khiến kiểm toán viên khó chịu và có thể khiến hệ thống của bạn không tuân thủ các tiêu chuẩn bảo mật nhất định. Về mặt bảo mật, đó là một chút mất tập trung, nhưng không phải là một lỗ hổ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.