Điểm:1

Mật mã dựa trên hàm băm lặp sẽ không an toàn đến mức nào?

lá cờ de

Tôi chỉ thắc mắc làm thế nào để xây dựng sau đây có thể không an toàn. Tôi có thể nói rằng các cuộc tấn công đơn giản đã biết là có thể xảy ra, nhưng tôi không chắc về điều gì khác.

Cho phép người dùng chọn một mật khẩu và băm mật khẩu đó với số lần đủ lớn bằng thứ gì đó có khả năng chống tạo ảnh trước như SHA-256. XOR bản rõ với hàm băm. Băm băm một lần nữa. XOR kết quả với khối văn bản gốc tiếp theo...và cứ thế cho đến khi kết thúc. Làm thế nào các đối thủ có thể phá vỡ điều này?

lá cờ jp
Bản mã là gì?
Điểm:11
lá cờ in

TL;DR; Không an toàn không sử dụng nó. Sử dụng các tiêu chuẩn và chế độ hoạt động nổi tiếng.


công trình của bạn là $s_i = H^i(mật khẩu)$ tức là băm mật khẩu $i$ lần sau đó sử dụng kết quả đầu ra $s_i$ cho mỗi bước để x-or với bản rõ để đến bản mã; $c_i = p_i \oplus s_i$

Làm thế nào các đối thủ có thể phá vỡ điều này?

Có nhiều cách để đạt được điều này

  • Cuộc tấn công đoán: Nếu ai đó nhận được một phần tin nhắn của bạn, chẳng hạn như ít nhất 256 bit của khối SHA-256 đầy đủ, thì phần còn lại của tin nhắn sẽ được giải mã dễ dàng. Cho nên không có bí mật về phía trước ở đây..

    Người ta nên nhìn vào những slide này về Băm_DRGB thấy một thiết kế tốt hơn chống lại sự thỏa hiệp của nhà nước. Khi tạo ra một thỏa hiệp Trình tự giả ngẫu nhiên của trạng thái hiện tại không được làm rò rỉ các trạng thái khác. Thất bại chính của thiết kế được đề xuất là điều này.

  • Đề án của bạn dường như dễ bị tổn thương cuộc tấn công bị cấm rằng khi $(IV,khóa)$ kết quả ghép nối của chế độ CTR có thể phá vỡ tính bảo mật của bản mã. Bạn không xác định IV trong sơ đồ của mình, do đó bạn sẽ có cùng một mật khẩu và luồng do mật mã của bạn tạo ra sẽ luôn tạo ra cùng một đầu ra.

    Một trong hai người phải thay đổi mật khẩu mỗi lần mã hóa hoặc phải đưa ra các phương pháp IV tiêu chuẩn để giảm thiểu, nếu không sẽ chết!

  • Không thể xác minh bảo mật mật khẩu và chúng tôi thường sử dụng các hàm Dẫn xuất khóa dựa trên mật khẩu như PBKDF2, Scrypt hoặc Argon2 để lấy tính ngẫu nhiên từ mật khẩu. Ít nhất, chúng cung cấp số lần lặp lại để giảm thiểu các cuộc tấn công tìm kiếm mật khẩu. Chúng cũng có khai thác bộ nhớ và số lượng luồng để giảm khả năng của các cuộc tấn công tìm kiếm mật khẩu. Vì sơ đồ của bạn dễ bị tấn công bị cấm, nên người dùng sẽ khó chọn mật khẩu mới cho mỗi lần mã hóa.

    Thay vào đó, chúng tôi sử dụng các khóa ngẫu nhiên được tạo cục bộ để sử dụng hoặc được lấy từ các giao thức như DHKE.

  • Tính bảo mật của chương trình của bạn phụ thuộc rất nhiều vào bảo mật mật khẩu và nó sẽ là một điểm tấn công tốt vì người dùng phổ thông không đạt được và quản lý mật khẩu tốt.Mặc dù người ta có thể sử dụng mật khẩu như dây xúc xắc để tạo mật khẩu có độ mạnh khoảng 256 bit, nhưng mã hóa càng nhiều thì càng nhiều mật khẩu để ghi nhớ sẽ trở nên không khả thi. Thay vào đó, sử dụng một mật khẩu tốt và lấy khóa mã hóa mã hóa các đầu vào ngẫu nhiên cho lược đồ của bạn là một ứng cử viên tốt hơn.

    Đối với mã hóa cục bộ, thông thường là; tạo Khóa mã hóa tệp ngẫu nhiên FEK cho mọi tệp. Sau đó, sử dụng mật khẩu của người dùng để lấy Khóa mã hóa khóa (KEK) với PBKDF tốt như Argon2. Với KEK mã hóa và giải mã các FEK sau đó mã hóa/giải mã các tệp. Thêm chi tiết là đây.

  • kế hoạch của bạn thiếu truy cập ngẫu nhiên, vì vậy nó không hữu ích cho nhiều ứng dụng như mã hóa ổ đĩa.

  • Bạn chỉ yêu cầu khả năng chống ảnh trước, tuy nhiên, bạn cũng sẽ cần chống va chạm. Nếu xung đột có thể dễ dàng xảy ra trên luồng được tạo thì nó sẽ tự lặp lại và đây là điểm tấn công. Ít nhất luồng của bạn sẽ không phải là Chuỗi giả ngẫu nhiên. Thật may mắn cho bạn, SHA-256 có khả năng chống va chạm và phạm vi chu kỳ dự kiến ​​là rất lớn;

    Đặt mô hình SHA-256 là hàm ngẫu nhiên đều thì xác suất phần tử nằm trong chu kỳ là

    $$\frac{1}{\sqrt{\hspace{.03 in}2\hspace{-0,05 in}\cdot \hspace{-0,04 in}\pi} \cdot 2^{127}}$$

    Độ dài chu kỳ trung bình với giá trị dự kiến ​​cho SHA-256 là $$2^{127} \sqrt{2\pi}$$ Vì vậy, bạn không sợ chu kỳ ngắn. Giới thiệu là Harris, 1960

  • Chương trình của bạn không có bảo mật Ind-CPA.

Chúng ta có gì thay vì điều này?

  • Chúng tôi có chế độ CTR nổi tiếng có thể chuyển đổi bất kỳ Hàm giả ngẫu nhiên (PRF) nào thành sơ đồ mã hóa từ năm 1979. Đây là bài báo chuyên đề của Whitfield Diffie và Martin Hellman;

Đây là một lợi thế rất lớn vì nó cho phép sử dụng nhiều chức năng thay vì chỉ PRP.Chế độ CTR có IV để mã hóa ngẫu nhiên và nó đạt được mã hóa xác suất. CTR có thể đạt được bảo mật Ind-CPA.

Hiện tại, tất cả các mật mã ở chế độ TLS đều sử dụng chế độ CTR bên trong, AES-GCM, AES-CCM và ChaCha20-Poly1305.

Phần kết luận

Không có lợi thế nào so với chế độ CTR ngay cả khi bạn thêm IV vào lược đồ mã hóa của mình và ngay cả khi bạn giải quyết vấn đề về mật khẩu và phần có vấn đề nhất: cuộc tấn công đoán.

Gắn nổi tiếng và bảo mật giới hạn chế độ CTR được đảm bảo.
Điểm:2
lá cờ us

Trước khi nói về các cuộc tấn công, tôi khuyên bạn nên sử dụng khóa ngẫu nhiên có đủ bit (ít nhất 128 bit) thay vì mật khẩu. Bạn không cần phải băm khóa nhiều lần, chỉ cần sử dụng một khóa tốt. Nếu nó được lấy từ mật khẩu, hãy sử dụng chức năng dẫn xuất Khóa tốt để lấy khóa và sử dụng nó thay thế.

Bây giờ trở lại câu hỏi của bạn, chính bạn đã nói rằng, cuộc tấn công bằng văn bản đơn giản đã biết là có thể xảy ra. Và thật dễ dàng để làm điều đó.Tất cả những gì bạn cần biết là một khối văn bản thuần túy để khôi phục tất cả văn bản thuần túy tiếp theo bằng cách tiết lộ hàm băm tại khối đó. Đây là mức độ bảo mật thấp hơn rất nhiều so với những gì được mong đợi của các mật mã hiện đại được thiết kế để bảo mật trước các đối thủ có khả năng thực hiện các cuộc tấn công bằng văn bản rõ hoặc bản mã đã chọn. Thậm chí không khó để tìm ra hoặc ít nhất là thu hẹp số lần thử khả thi cho một khối bản rõ dựa trên định dạng tệp, ít thông tin có sẵn về chủ sở hữu tệp, v.v., có thể được sử dụng để giải mã toàn bộ bản mã.

Trên thực tế, rất lâu trước đây tôi cũng đã nghĩ về một mật mã tương tự, nhưng thay vì chỉ băm mọi thứ lặp đi lặp lại, tôi đã nghĩ đến việc thực hiện xor nửa bên trái của kết quả băm với khối văn bản gốc và băm nửa bên phải cho khối tiếp theo. Điều này có thể được chọn ngẫu nhiên bằng cách trộn số ngẫu nhiên công khai với khóa. Một cách khác nổi tiếng hơn là sử dụng hàm băm trong chế độ CTR để tạo luồng giống như cách chúng tôi làm với mật mã khối vì chế độ CTR không yêu cầu bạn phải có khả năng giải mã khối. Như kelalaka đã chỉ ra, nó cũng cung cấp quyền truy cập ngẫu nhiên.

Nhưng hãy nhớ rằng điều này không thể được chứng minh là an toàn trong mô hình đơn giản và do đó bạn không thể chắc chắn về tính bảo mật của nó với các hàm băm như SHA-2, vốn không được thiết kế để sử dụng theo cách này. Điều này đòi hỏi một giả định nữa rằng hàm băm của bạn đủ gần với một lời tiên tri ngẫu nhiên để sử dụng như thế này một cách an toàn. Và ngay cả khi nó an toàn với các hàm băm phổ biến, nó có thể sẽ không được sử dụng rộng rãi vì nó sẽ chậm hơn rất nhiều so với AES hoặc Chacha20 được phần cứng hỗ trợ (cũng sử dụng chế độ CTR như đã đề cập ở trê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.