2015-05-27 11 views
5

Tôi đang làm việc trên một ứng dụng có yêu cầu mã hóa rất cụ thể:
Chúng tôi được yêu cầu mã hóa/giải mã các giá trị 64 bit riêng lẻ để bảo vệ một số phần của kiến ​​trúc nội bộ của chúng tôi khỏi kỹ thuật đảo ngược thông qua các điểm cuối web công cộng của chúng tôi.Có thể triển khai AES với kích thước khối I/O 64 bit không?

Vấn đề là, các phương pháp mã hóa 64 bit hiện có (chẳng hạn như 3DES) không đủ an toàn để đáp ứng các yêu cầu của chúng tôi (theo như tôi biết).
Chúng cũng hoạt động chậm hơn AES, đây là điểm khác.

Câu hỏi của tôi là, chúng tôi có thể thực hiện khả thi AES với khối 64 bit cho đầu vào và đầu ra không?
Chúng ta có phải tạo thuật toán AES đã sửa đổi không? (. Không phải là một tổng đối phó-breaker nếu chúng ta làm)

+1

Bạn có thể sử dụng 3DES, miễn là bạn sử dụng khóa 192 bit (hiệu quả 168 bit). Điều đó sẽ cung cấp cho bạn khoảng 112 bit bảo mật.Lưu ý rằng thường là cần thiết để sử dụng một chế độ yêu cầu IV hoặc nonce, có thể thêm dữ liệu bổ sung. Ngoài ra, bạn có thể tìm kiếm các bài báo đề cập đến * mã hóa bảo quản định dạng *. –

+0

Bạn có thể xem xét một thuật toán khác với kích thước khối 64 bit (nhưng khóa 128 bit), chẳng hạn như MISTY1 (NESSIE được chọn; CRYPTREC ứng cử viên) hoặc Khazad (NESSIE finalist). Hoặc bạn có thể sử dụng AES trong chế độ "mã hóa bảo toàn định dạng" (AES-FFX). –

Trả lời

4

AES chỉ được xác định cho kích thước khối 128 bit. Nếu có một cách để giảm kích thước khối, nó sẽ không còn là AES nữa. Mật mã khối không phải là thứ duy nhất xác định những gì bạn có thể mã hóa. Phương thức hoạt động xác định cách mã hóa khối thực sự được áp dụng.

Nếu bạn có một bản rõ kích thước giới hạn, bạn có thể sử dụng AES ở chế độ phát trực tuyến như CTR mode (mã hóa bộ đếm và XORs khối kết quả với bản rõ). Ciphertexts trong chế độ này có độ dài chính xác như bản rõ. Vấn đề duy nhất là để nó được an toàn, nonce (IV) phải là duy nhất cho mọi bản mã dưới cùng một khóa. Nếu hệ thống của bạn có thể theo dõi các nonces (chúng có thể là các bộ đếm toàn cầu 96 bit đơn giản hoặc thậm chí các bộ đếm toàn cầu 128 bit nếu các nguyên đơn là không bao giờ là dài hơn 128 bit), thì bạn có thể đáp ứng yêu cầu của mình.

CTR mã hóa:

enter image description here

3

số AES được quy định với bốn thao tác cơ bản trên một ma trận 4x4: SubBytes, ShiftRows, MixColumnsAddKey.

"8 byte AES" sẽ là một thuật toán cơ bản khác. Đặc biệt là các hoạt động của ShiftRowsMixColumns dựa trên khái niệm về ma trận vuông. Do đó kích thước khối của bất kỳ thuật toán khối "AES giống" nào sẽ cần phải là một hình vuông là N (4, 9, 16, ...).

+0

OK, tôi thấy những gì bạn đang nói về AES yêu cầu số byte "hình vuông". Nhưng sau đó họ đã hoàn thành AES192 và AES256 như thế nào? Không ai trong số đó là số byte vuông. – Giffyguy

+0

@Giffyguy AES192 và AES256 có khóa khác nhau nhưng kích thước khối giống như AES128. –

+0

128, 192, 256 là kích thước khóa, không phải là kích thước khối. Chìa khóa được mở rộng để làm cho nó phù hợp. NIST có một tài liệu đặc tả rất dễ hiểu, giải thích nội bộ của mật mã. –

0

Nếu bạn có chút đầu vào 64, sau đó bạn có thể thêm một 64 bit của đệm có thể tháo rời để cung cấp cho 128 bit. Mã hóa 128 bit thông thường với AES. Khi giải mã, chỉ cần xóa phần đệm sau giải mã. Có một số phương án đệm có thể khác nhau. Bạn sẽ tìm thấy một số, chẳng hạn như PKCS # 7 xây dựng thành nhiều thư viện AES.

Với đầu vào 64 bit cố định, bạn có thể sử dụng đệm ngẫu nhiên, miễn là bạn luôn biết 64 bit là dữ liệu và 64 bit là phần đệm. Trộn lẫn cả hai sẽ có hậu quả có hại.

ETA: Với các giá trị 64 bit, bạn có thể nối hai giá trị này để tạo một giá trị 128 bit. Chia chúng trở lại 64-bit sau khi giải mã.

+0

Vấn đề là, tôi cần phương thức mã hóa để có cả đầu vào 64 bit và đầu ra 64 bit. – Giffyguy

+0

Sử dụng phần đệm sau đó. Thêm phần đệm vào đầu vào, mã hóa/giải mã và loại bỏ phần đệm, trả lại 64 bit gốc. – rossum

+1

Tôi thấy những gì bạn đang nhận được, nhưng vấn đề là tôi cần giá trị được mã hóa cũng là một giá trị 64-bit. Sử dụng padding tạo ra một giá trị được mã hóa 128 bit, mà bạn không thể cắt bớt mà không phá hủy dữ liệu gốc. – Giffyguy

Các vấn đề liên quan