Điểm:2

Bộ đếm có nghĩa là gì trong Chế độ Bộ đếm (CTR)? Nó có giống như nonce không?

lá cờ cn

Như đã hỏi ở trên, "bộ đếm" chính xác có nghĩa là gì? Nó có giống như nonce không?

Ngoài ra, cuốn sách Network Security Essentials (6ed.) của William Stallings nói rằng, "Thông thường, bộ đếm được khởi tạo thành một số giá trị và sau đó tăng thêm 1 cho mỗi khối tiếp theo (modulo $2^b$, ở đâu $b$ là kích thước khối)". Câu lệnh này có nghĩa chính xác là gì?

Điểm:2
lá cờ in

chính xác thì "bộ đếm" nghĩa là gì?

Bộ đếm theo định nghĩa Wikipedia;

Trong logic và điện toán kỹ thuật số, bộ đếm là một thiết bị lưu trữ (và đôi khi hiển thị) số lần một sự kiện hoặc quy trình cụ thể đã xảy ra

Trong ngữ cảnh CTR; nó được sử dụng để tạo ra các đầu vào khác nhau cho quá trình mã hóa, sau đó đầu ra được x-ored với bản rõ để tạo ra bản mã. Nó thường được thực hiện bằng cách tăng dần, mặc dù người ta cũng có thể sử dụng LFSR.

nhập mô tả hình ảnh ở đây

Nó có giống như nonce không

Không, nó không giống với số nonce ( số được sử dụng một lần)

Chế độ CTR kết hợp nonce và counter, làm đầu vào cho mật mã. Đầu vào được kết hợp từ hai phần;

  • phần nonce; thường được tạo ngẫu nhiên trên mỗi phiên mã hóa hoặc bằng cách sử dụng bộ đếm/LFSR.
  • bộ phận đối ứng; ban đầu đặt bằng 0, sau đó tăng dần cho mỗi mã hóa khối

Với những thứ này, chúng ta có thể có, mã hóa ngẫu nhiên và mỗi khối có thể tạo ra một đầu ra khác nhau dưới cùng một khóa nếu chúng ta đang sử dụng PRP như AES (phần PRF phức tạp hơn và CTR thực sự được xác định cho PRF vì không cần nghịch đảo)

"Thông thường, bộ đếm được khởi tạo thành một số giá trị và sau đó tăng thêm 1 cho mỗi khối tiếp theo (modulo $2^b$, ở đâu $b$ là kích thước khối)". Câu lệnh này có nghĩa chính xác là gì?

Hãy xem xét rằng chúng tôi có bộ đếm 64-bit nonce và 64-bit;

 truy cập nonce
9237AF71A232BC82E4 0000000000000000

sử dụng khối đầu tiên 9237AF71A232BC82E40000000000000000 làm đầu vào, sau đó khối tiếp theo sử dụng làm đầu vào

 truy cập nonce
9237AF71A232BC82E4 0000000000000001
9237AF71A232BC82E4 0000000000000002
9237AF71A232BC82E4 0000000000000003
9237AF71A232BC82E4 0000000000000004
 ... ...
9237AF71A232BC82E4 EFFFFFFFFFFFFFFFF
9237AF71A232BC82E4 FFFFFFFFFFFFFFFF
 ... ...
9237AF71A232BC82E5 0000000000000000???

Nếu bạn có thể mã hóa $2^{64}$ các khối bạn sẽ đến cuối quầy, tùy thuộc vào trường hợp, điều này có thể nguy hiểm.

Dừng tại đó; thực sự, dừng lại trước đó nếu bạn sử dụng PRP thay vì PRF.


Ghi chú về các cách sử dụng khác nhau của thuật ngữ nonce IV;

  • Định nghĩa NIST sử dụng bộ đếm làm toàn bộ đầu vào cho việc mã hóa.

  • Wikipedia tạo nên sự khác biệt. Tôi thích định nghĩa của Wikipedia hơn, Trong trường hợp GCM, NIST sử dụng IV và bộ đếm riêng biệt.

  • Lindell&Katz, trong cuốn sách của họ, sử dụng IV làm $3n/4$ một phần của kích thước khối và $1/4$ đối với quầy. Mã hóa được định nghĩa là $y_i := F_k (IV || \langle i \rangle)$ Chúng chỉ ra rằng nếu IV được chọn thống nhất thì việc sử dụng lại IV là một sự kiện không đáng kể. Do đó, chế độ CTR là CPA an toàn.

Titanlord avatar
lá cờ tl
Tôi biết rằng CTR là CPA an toàn mà không cần tái sử dụng IV. Nó có còn an toàn với CPA không, nếu một người cân nhắc sử dụng lại IV? Tôi sẽ nói không, nhưng tôi không chắc chắn 100\%.
kelalaka avatar
lá cờ in
@Titanlord Nó vẫn có một số giả định. Lindell và Katz giải quyết vấn đề này trong cuốn sách của họ bằng cách giả định rằng IV được chọn ngẫu nhiên thống nhất, sau đó sự kiện này là không đáng kể nếu kích thước IV là $3n/4$.
Maarten Bodewes avatar
lá cờ in
"IV" không được xác định cho chế độ CTR theo như tôi biết. Nếu nó ở đó thì việc triển khai thường có nghĩa là giá trị bắt đầu cho nonce & counter, tức là toàn bộ khối được sử dụng làm đầu vào ban đầu cho mật mã khối. Trong trường hợp đó, nó *không* tương đương với nonce.
kelalaka avatar
lá cờ in
@MaartenBodewes Lindell&Katz gọi nó là IV với kích thước $3n/4$ của kích thước khối $n$ với $y_i := F_k (IV || )$. Vâng, tôi biết rõ rằng NIST ban đầu không gọi nó là IV, chỉ gọi toàn bộ đầu vào là bộ đếm. Tôi đã sẵn sàng để kiên định hơn. Để tôi thử. Tôi đoán họ làm điều này để chứng tỏ rằng va chạm IV là không đáng kể bằng cách chọn ngẫu nhiên thống nhất.
Maarten Bodewes avatar
lá cờ in
Theo tôi, cuốn sách của Lindell & Katz không phải là tài liệu tham khảo có thẩm quyền về các thuật ngữ và định nghĩa. Rốt cuộc, cuốn sách cũng nhầm lẫn giữa khóa bí mật và khóa riêng tư; *bạn không thể chia sẻ riêng tư *.Tất nhiên, bạn có thể xác định kích thước "IV" 3n/4 của kích thước khối, tuy nhiên * đó không phải là cách bất kỳ ai khác sử dụng thuật ngữ * - theo hiểu biết của tôi.
kelalaka avatar
lá cờ in
@MaartenBodewes Paar cũng sử dụng cách tương tự. Amussen trong Mật mã nghiêm túc, Bruce et, al trong Kỹ thuật mật mã giống như Wikipedia. Một số cách sử dụng khác giống như [bài báo gốc của Diffie-Hellman](https://ee.stanford.edu/~hellman/publications/32.pdf) mọi thứ đều phản tác dụng như NIST đã làm.
Maarten Bodewes avatar
lá cờ in
Vâng, tôi không thể tranh luận chống lại điều đó. Chỉ cần lưu ý rằng hầu hết API Crypto sử dụng IV làm đầu vào đầy đủ cho API. Và vì họ thường sử dụng modulo endian lớn $2^n$ cho bộ đếm, IV chính xác là một kích thước khối $n$; nó không tách biệt với quầy hoặc nonce. Bằng cách đó, chúng tương thích với hầu hết các định nghĩa về chế độ truy cập (ngoại trừ WinZip, như đã đề cập trong câu trả lời của tôi, vì nó sử dụng ít endian).
kelalaka avatar
lá cờ in
Chà, tôi thấy rằng đó không phải là một thỏa thuận nào cả. Tôi biết bạn hiểu rõ hơn tôi nhiều về API. Các API gần như tuân theo bài báo gốc và NIST ( bộ đếm chuyển sang IV), điều đó không có gì lạ cả. Thật vậy, chúng tôi luôn nói việc sử dụng lại IV, trong trường hợp này, nói phần IV thay vì nonce vẫn có nhiều ý nghĩa (tôi sẽ làm rõ điều đó sau). Tôi đã thực sự cân nhắc việc xóa cái này, tuy nhiên, khi bạn lưu ý nó, tôi đã xem lại nguồn. Nó ở lại đó.
Điểm:1
lá cờ in

Không, nonce và counter chắc chắn là những thuật ngữ riêng biệt.

  • Nonce là một giá trị duy nhất cho mỗi tin nhắn.
  • Bộ đếm là một giá trị duy nhất và tuần tự cho nhiều khối của cùng một thông báo.

Nonce có thể được tính theo bất kỳ cách nào miễn là nó là duy nhất. Thông thường, nó hoàn toàn ngẫu nhiên hoặc tuần tự, bắt đầu từ 0 hoặc 1.


Mặc dù bộ đếm thường xuyên được chỉ định là tách biệt với nonce trong các giao thức, việc triển khai thường có một bộ đếm có cùng kích thước với kích thước khối. Trong trường hợp đó, nonce là một phần của các bit quan trọng nhất của bộ đếm bắt đầu.

Điều này được phản ánh bởi một phần của cuốn sách mà bạn trích dẫn:

Ngoài ra, cuốn sách Network Security Essentials (6ed.) của William Stallings nêu rõ:

"Thông thường, bộ đếm được khởi tạo thành một số giá trị và sau đó tăng thêm 1 cho mỗi khối tiếp theo (modulo $2^b$, ở đâu $b$ là kích thước khối)".

Tuyên bố này có nghĩa chính xác là gì?

Giả sử mật mã khối 128 bit, chẳng hạn như AES. Sau đó, giả sử rằng mỗi byte được hiển thị bằng một chữ cái, thì bạn có:

 CCCCCCCC_CCCCCCCC = NNNNNNNN_00000000

trong đó mỗi C là một byte trong bộ đếm bắt đầu và N là một byte trong nonce. Bộ đếm bắt đầu thường được coi là "IV". Bây giờ việc triển khai sẽ tăng mô đun giá trị ban đầu này $2^{128}$: tức là khi nó chạm $2^{128} - 1$ giá trị tiếp theo sẽ là tất cả bằng không.

Tuy nhiên, điều đó có nghĩa là sau khi $2^{64}$ tăng bộ đếm của bạn sẽ tăng byte nonce ngoài cùng bên phải, có thể dẫn đến giá trị bộ đếm trùng lặp. Điều này có nghĩa là bản thân ứng dụng cần tiếp tục đếm xem có bao nhiêu khối đã được mã hóa. Lý do cho điều này là nonce có thể bao gồm bất kỳ số lượng byte nào, vì vậy nó không biết khi nào nonce bị ảnh hưởng. Nói cách khác, việc triển khai không biết khi nào xảy ra tràn vào nonce hoặc khi bộ đếm xung đột.


Ghi chú:

  • Về nguyên tắc, mọi lược đồ đều hợp lệ đối với CTR miễn là bộ đếm không lặp lại cho cùng một khóa. Lấy một khóa mới cho mỗi tin nhắn mang lại cho bạn số lượng khối gần như vô hạn ($2^{128}$ khối 16 byte cho AES).
  • Mặc dù bộ đếm không được định nghĩa là big endian hay little endian, nhưng bộ đếm big endian dường như chiếm ưu thế. Mặc dù vậy, tôi đã bắt gặp một giao thức sử dụng bộ đếm cuối nhỏ - WinZip nếu bộ nhớ phục vụ tôi đúng.
  • Nonce có thể không phải là phần tử duy nhất làm cho bộ đếm (ban đầu) trở nên độc nhất, các phần tử dữ liệu khác có thể được bao gồm trong giá trị bộ đếm (ban đầu). Đôi khi một mã định danh để tách miền được bao gồm, chẳng hạn như mã định danh cho người nhận.
  • NIST đi vào chi tiết về cách xây dựng các khối mật mã trong NIST SP 800-38a, phụ lục B, lưu ý ở cuối rằng các bộ đếm về cơ bản là giao thức cụ thể và yêu cầu về tính duy nhất phải được kiểm tra riêng.
Điểm:0
lá cờ tl

Số nonce là số (ngẫu nhiên/giả ngẫu nhiên) chỉ được sử dụng một lần. Và đó là giới hạn duy nhất mà nó phải tuân theo. Do đó, nonce chỉ là một thuật ngữ chung.

Trong Chế độ CTR, mọi giá trị đều khác nhau và (nói chung) chỉ được sử dụng một lần. Do đó, vectơ khởi tạo và số kết quả có thể được xem là nonce.

(Lưu ý: Trong một số trường hợp, tác giả có thể phân biệt rõ ràng giữa giá trị CTR và giá trị không. Nếu đúng như vậy, họ có thể có một định nghĩa khác hoặc nhiều hạn chế hơn cần xem xét)

lá cờ vn
Nonce không cần phải là "ngẫu nhiên/giả ngẫu nhiên", chỉ là duy nhất (trong phạm vi của một khóa). Trên thực tế, người ta thường sử dụng bộ đếm tin nhắn (â bộ đếm khối) như một 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.