Đối với CTR, yêu cầu là giá trị truy cập không lặp lại (đối với một khóa nhất định). Vấn đề lớn nhất với chế độ truy cập là nó không đủ cho IV. (các ban đầu giá trị truy cập) không lặp lại.
Việc giá trị bộ đếm có thể dự đoán được hay không không quan trọng. Nếu bạn có thể sắp xếp để bộ đếm bắt đầu từ 0 và tăng thêm 1 cho mỗi khối tin nhắn, thì đó là một cách rất tốt để sử dụng CTR. Lưu ý rằng với nhiều thông báo, điều này có nghĩa là thông báo đầu tiên sử dụng các giá trị bộ đếm $0, 1, 2, \ldots, a$, thì thông báo thứ hai sử dụng giá trị bộ đếm $a+1, a+2, \ldots, b$, tin nhắn thứ ba sử dụng $b+1, b+2, \ldots, c$, và như thế.
Hãy để tôi minh họa những gì sai với một giá trị bộ đếm lặp lại. Để cho $E$ là chức năng mã hóa khối và viết $\langle n\rangle$ để mã hóa giá trị bộ đếm $n$ như một khối. Nếu bạn gửi hai tin nhắn hai khối $P_0||P_1$ và $P'_0||P'_1$ (trong đó mỗi $P^{(j)}_i$ đại diện cho một khối), một với IV $n$ và cái tiếp theo với IV $n+1$, thì các bản mã tương ứng là $C_0||C_1 = (E(\langle n\rangle) \oplus P_0) || (E(\langle n+1\rangle) \oplus P_1)$ và $C'_0||C'_1 = (E(\langle n+1\rangle) \oplus P'_0) || (E(\langle n+2\rangle) \oplus P_1)$. Lưu ý cách cả hai bản mã này sử dụng $E(\langle n+1\rangle)$. Kẻ thù có thể xor hai khối bản mã sử dụng cùng một giá trị bộ đếm và mặt nạ mã hóa của chúng bị hủy bỏ: $C_1 \oplus C'_0 = P_1 \oplus P'_0$. Điều này thường đủ để đoán một số hoặc tất cả các khối văn bản gốc. Ví dụ: nhiều thư chứa tiêu đề đã biết hoặc gần như đã biết và trong ví dụ lặp lại giá trị bộ đếm này, điều này sẽ tiết lộ nội dung của 16 byte sau tiêu đề trong thư đầu tiên.
Nếu bạn không thể theo dõi giá trị bộ đếm nào đã được sử dụng, một kỹ thuật phổ biến để tránh lặp lại là sử dụng ngẫu nhiên 16 byte cho IV. Điều này làm cho cơ hội sử dụng lại một giá trị truy cập đủ nhỏ để nó không xảy ra trong thực tế.
Trong hầu hết các trường hợp, bạn nên sử dụng tiêu chuẩn mã hóa xác thực (AEAD) thay vào đó, ví dụ SIV hoặc hoặc GCM-SIV hoặc GCM hoặc CCM. Điều này có hai lợi ích. Một là bản mã đã được xác thực: khi giải mã, bạn có thể xác minh rằng bản mã không bị thay đổi. (Không thể xác minh tính xác thực của bản mã nếu không có khóa bí mật. Kẻ thù vẫn có thể hoán đổi hai thông điệp xác thực, vì vậy tính xác thực không hoàn toàn bao hàm tính toàn vẹn.) Ưu điểm khác của việc sử dụng chế độ AEAD tiêu chuẩn là giá trị của bộ đếm đủ để bảo mật không lặp lại: không có điều kiện vi tế nào khác. Chế độ SIV có lợi thế là ngay cả khi IV vô tình lặp lại, điều này chỉ có thể tiết lộ rằng các tin nhắn giống hệt nhau, nó sẽ không tiết lộ bất cứ điều gì về nội dung của chúng.
Sử dụng AES-256 thay vì AES-128 chỉ cải thiện khả năng bảo mật đối với máy tính lượng tử, trong trường hợp chúng trở nên thiết thực.