Điểm:0

Làm cách nào để sử dụng nonce, counter và IV trong AES-256-CTR?

lá cờ id

lời nói đầu: tôi không am hiểu về mật mã. có những câu hỏi tương tự trên bảng này nhưng chúng không đưa ra câu trả lời tôi cần.

làm cách nào để tôi tạo một IV hợp lệ, được cung cấp một nonce? Điều này có liên quan gì đến một bộ đếm?

tôi đang thực hiện giao tiếp 2 chiều với mô-đun bluetooth (nó là máy chủ cho ứng dụng khách trên điện thoại của tôi) và dữ liệu của nó được mã hóa bằng AES-256-CTR với khóa 32B và bộ đếm 128 bit (16B). sau khi đăng nhập thành công, tôi được cung cấp khóa 32B và một nonce 96-bit (12B).

lib tôi sử dụng để giải mã yêu cầu IV. tôi không hoàn toàn hiểu nó là gì, nhưng tôi đã thử nối nonce 12B với '00 00 00 01' (hex) để tạo bộ đếm và sử dụng nó làm IV. không có con xúc xắc.

tôi đang kiểm tra như thế nào, tôi có đang thông qua API của mô-đun để chuyển tiếp "hello world" qua bluetooth từ máy chủ không. khách hàng nhận được một chuỗi được mã hóa như mong đợi, nhưng cùng một "thế giới xin chào" được mã hóa thành một thứ gì đó khác nhau mỗi lần.

biết thêm chi tiết có sẵn nếu cần thiết!

forest avatar
lá cờ vn
IV chỉ là một từ khác cho nonce trong CTR.
Maarten Bodewes avatar
lá cờ in
@forest Thông thường nonce nhỏ hơn IV; nó chỉ bao gồm các bit bậc cao hơn. Việc có một nonce ngẫu nhiên bằng kích thước của bộ đếm đầy đủ không có ý nghĩa gì vì bạn có thể cần mã hóa ít bit hơn để tránh xảy ra xung đột. Nếu phần cuối cùng là tất cả các bit 0 thì ít nhất bạn cũng biết khoảng cách giữa hai nonce tiếp theo.
forest avatar
lá cờ vn
@MaartenBodewes Tôi luôn nghe nói cả hai có thể hoán đổi cho nhau, trừ khi bạn đang nói về đầu vào thực tế cho chính mật mã khối thay vì tham số cho mật mã khối ở chế độ CTR?
kelalaka avatar
lá cờ in
@forest trên thực tế, NIST chỉ gọi chúng là khối phản đối, [trang 16 và xem thêm trang 19](https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38a.pdf) và
Điểm:2
lá cờ in

làm cách nào để tôi tạo một IV hợp lệ, được cung cấp một nonce? Điều này có liên quan gì đến một bộ đếm?

Bạn có thể không mong đợi điều này, nhưng nó còn tùy; nhiều lược đồ đều an toàn như nhau (ví dụ: endian lớn so với endian nhỏ). Nói chung, mặc dù giá trị bộ đếm là một số nguyên lớn cuối cùng không dấu 128 bit. Nonce là phần quan trọng nhất (ngoài cùng bên trái) của số nguyên đó.

Hơn nữa, phần thấp ban đầu của bộ đếm sẽ bắt đầu từ (tất cả) không - không một như trong ví dụ của bạn.

Vì vậy, bạn sẽ có:

NNNNNNNN NNNNNNNN NNNNNNNN 00000000

làm giá trị bắt đầu (dưới dạng thập lục phân, trong đó N đại diện cho một số chữ số hex của nonce), trong đó bên trái là phần quan trọng nhất. Tất nhiên đây là trường hợp với nonce 96 bit và bộ đếm 32 bit. Giá trị bắt đầu này thường được gọi là IV.

Vì kích thước của nonce có thể khác nhau trong nhiều thư viện, thông thường việc tăng bộ đếm được thực hiện theo mô đun $2^{128}$, với nhược điểm là tràn ở 32 bit thấp nhất sẽ ảnh hưởng đến nonce. Người dùng thư viện AES thường có quyền kiểm tra điều này (nhưng bạn cần $2^{32} * 16 = 64 \text{GiB}$ hoặc gần như $69 \text{GB}$ để đến đó).

nhưng cùng một "thế giới xin chào" được mã hóa thành một thứ khác nhau mỗi lần

Vâng, vì vậy rất có thể nonce thay đổi mọi lúc. Điều đó hoặc khóa thay đổi, hoặc thậm chí cả khóa và nonce.

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