Điểm:1

Làm thế nào các chức năng nội bộ được xác định cho FF3?

lá cờ br

Tôi đã thấy FF1/FF3 được nói rằng chúng giữ nguyên định dạng như định dạng của văn bản gốc. Ví dụ: nếu tôi mã hóa số thập phân 1234 thì giá trị được mã hóa của nó cũng là số thập phân có 4 chữ số. Cả hai đều sử dụng mạng Feistel. Các hàm vòng được thiết kế bên trong mỗi vòng của cấu trúc như thế nào để giữ nguyên định dạng của dữ liệu? Tôi muốn biết cách thiết kế các chức năng bên trong giúp duy trì định dạng.

fgrieu avatar
lá cờ ng
Còn việc đọc phần 4.1 và 4.5 của [đặc điểm kỹ thuật của FF3-1](https://doi.org/10.6028/NIST.SP.800-38Gr1-draft) thì sao?
Điểm:2
lá cờ in

Từ 4.1 Biểu diễn chuỗi ký tự của thông số dự thảo NIST SP 800 38G Rev 1 đã được đề cập trong các ý kiến:

Đầu vào và đầu ra dữ liệu cho chức năng mã hóa và giải mã FF1 và FF3-1 286 phải là chuỗi hữu hạn các chữ số, nghĩa là các chuỗi chữ số. Nếu dữ liệu được mã hóa được định dạng theo bảng chữ cái chưa phải là tập hợp các chữ số cơ số, thì mỗi ký tự phải được biểu thị bằng một chữ số riêng biệt để áp dụng FF1 hoặc FF3-1.

...

Việc lựa chọn và triển khai tương ứng một đối một giữa một bảng chữ cái nhất định và tập hợp các chữ số cơ số đại diện cho bảng chữ cái nằm ngoài phạm vi của ấn phẩm này.

Điều này vẫn chưa rõ ràng, nhưng về cơ bản, bạn cần ánh xạ chính tắc dữ liệu đầu vào của mình thành một phạm vi [0, N) và quay lại trong cả hai quá trình mã hóa giải mã. Ánh xạ này nằm ngoài phạm vi, vì nó tất nhiên dành riêng cho đặc tả đầu vào dữ liệu.


Nếu dữ liệu của bạn bao gồm nhiều phạm vi thì mọi thứ sẽ phức tạp hơn một chút. Về cơ bản, trước tiên bạn sắp xếp thứ tự dữ liệu (thường từ trái sang phải), sau đó bạn xác định cơ sở cho từng nhóm phạm vi đầu vào riêng biệt. Sau đó, giá trị trong phạm vi được tạo bằng cách nhân phạm vi đầu vào với các cơ sở cấp thấp hơn.

Trước tiên tôi sẽ chỉ cho bạn cách những $\text{mã hóa}$$\text{decode}$ các chức năng sẽ hoạt động:

Giả sử rằng các phạm vi đầu vào dành cho một chữ số - không bao gồm số 0 - theo sau là một ký tự ở dạng chữ hoa ABC, tức là [1-9][A-Z]. Cơ sở của các chữ số - không bao gồm số 0 - là $9$, cơ sở của bảng chữ cái tất nhiên là $26$.

Bây giờ hãy thử tính giá trị cho 7Z. Nếu bạn tuân theo các quy tắc này thì giá trị bạn nhận được là $6 \cdot 26 + 25 = 181$, ở đâu $6$ là chỉ số của 7 Trong $[1, 9]$, $26$ là cơ sở (số ký tự) trong ABC và $25$ là chỉ số của z trong ABC đó.

Để ánh xạ lại, trước tiên bạn thực hiện $181 \bmod 26$, mà sẽ cung cấp cho bạn $25$ một lần nữa, mang lại cho bạn z sau khi hủy lập chỉ mục. Sau đó, bạn chia: $\big\lceil 181 / 26 \big\rceil$, và quay lại $6$ đó là chỉ số của 7 trong phạm vi $[1, 9]$.

Bây giờ chúng ta cần bao gồm mã hóa và giải mã:

Bây giờ bạn có thể thực hiện FF1 hoặc FF3 trên kết quả, $181$ và nhận một giá trị khác. Bạn có thể chỉ cần sử dụng các quy tắc để mã hóa điều này thành biểu diễn được yêu cầu của mình.

Vì vậy, nói rằng bạn có $\text{encode}(\text{"7Z"}) = 181$$\text{enc}_k(181) = 26$, sau đó điều này sẽ cung cấp cho bạn $\text{decode}(26) = "1A"$ mà bạn có thể lưu trữ. Sau đó, bạn đảo ngược như thế này: $\text{decode}(\text{dec}_k(\text{encode}(\text{"1A"}))) = "7Z"$. Các tham số mã hóa và giải mã là dành riêng cho [1-9][A-Z].

Các thủ thuật trên có thể dễ dàng được mở rộng sang bất kỳ định dạng nào có phạm vi rõ ràng và - khi được mã hóa chính xác - chỉ cần phép nhân & phép cộng để mã hóa và chỉ cần phép chia có phần dư để giải mã.Quá trình mã hóa/giải mã sẽ mất chưa đến một phần triệu giây khi được triển khai chính xác (đối với các kích thước đầu vào tương đối nhỏ mà FPE thường được sử dụng).

fgrieu avatar
lá cờ ng
"ít hơn một phần triệu giây" đối với mã hóa trước và sau khi mã hóa chính xác cho FF3-1 (và thậm chí còn nhiều nếu đó là mỗi chữ số), vì không gian khối của FF3-1 bị giới hạn ở 192-bit. Đối với FF1, giới hạn dường như là 4Tib (512MiB) và đối với khối lớn, thời gian trên mỗi chữ số sẽ trở nên lớn hơn nhiều, vì nó tăng theo số lượng chữ số và theo tỷ lệ như vậy khi sử dụng thuật toán trong thông số kỹ thuật và câu trả lời.

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