intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Đề xuất phương pháp cài đặt hiệu quả cho tầng tuyến tính kích thước lớn trong mã khối

Chia sẻ: ViEngland2711 ViEngland2711 | Ngày: | Loại File: PDF | Số trang:11

25
lượt xem
1
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài viết trình bày một phương pháp cài đặt hiệu quả cho tầng tuyến tính có kích thước lớn. Đặc biệt, đối với tầng tuyến tính kích thước lớn phương pháp đề xuất cho phép giữ nguyên số phép toán cơ sở, nhưng bộ nhớ giảm một nửa so với cách tiếp cận tra bảng thường được áp dụng trong các mã pháp SPN hiện đại.

Chủ đề:
Lưu

Nội dung Text: Đề xuất phương pháp cài đặt hiệu quả cho tầng tuyến tính kích thước lớn trong mã khối

Nghiên cứu khoa học công nghệ<br /> <br /> ĐỀ XUẤT PHƯƠNG PHÁP CÀI ĐẶT HIỆU QUẢ CHO TẦNG<br /> TUYẾN TÍNH KÍCH THƯỚC LỚN TRONG MÃ KHỐI<br /> Trần Hồng Thái*, Phạm Đình Trọng<br /> Tóm tắt: Bài báo trình bày một phương pháp cài đặt hiệu quả cho tầng tuyến<br /> tính có kích thước lớn. Đặc biệt, đối với tầng tuyến tính kích thước lớn phương pháp<br /> đề xuất cho phép giữ nguyên số phép toán cơ sở, nhưng bộ nhớ giảm một nửa so với<br /> cách tiếp cận tra bảng thường được áp dụng trong các mã pháp SPN hiện đại. Cách<br /> tiếp cận trong bài báo là sử dụng kỹ thuật tra bảng khi khai thác các tính chất của<br /> ma trận tuyến tính truy hồi, ma trận Hadamard và ma trận dịch vòng.<br /> Từ khóa: Tầng tuyến tính, Ma trận MDS, Cài đặt hiệu quả, Mã pháp SPN.<br /> <br /> 1. GIỚI THIỆU<br /> Trong mật mã ứng dụng, các mã khối ngoài việc phải đảm bảo độ an toàn cần phải có<br /> tính chất mềm dẻo trong cài đặt trên các platform khác nhau. Hiện nay, cài đặt thường<br /> được áp dụng đối với các mã khối hiện đại khi kết hợp đồng thời cả hai phép tuyến tính và<br /> phi tuyến như AES [2, 5], GOST R 34.12-2015 [7], LED [3], ... là cách sử dụng bảng tra<br /> được tính trước. Nếu như trong AES sử dụng tầng tuyến tính với ma trận MDS kích thước<br /> 4×4, thì kích thước bảng tra yêu cầu là 8 KB [2, 5], còn trong GOST R 34.11-2012 là 128<br /> KB đối với ma trận kích thước 16×16 [6, 8]. Đối với hai mã pháp trên, với kích thước khối<br /> là 128 bit, số phép truy cập bộ nhớ là 16 và số phép XOR các số 32 bit (cho AES) hoặc 64<br /> bit (cho GOST R 34.12-2015) tương ứng là 16 và 32. Qua đó, có thể thấy rằng khi kích<br /> thước tầng tuyến tính tăng lên nhằm đảm bảo độ an toàn cần thiết thì độ phức tạp tính toán<br /> và đặc biệt là độ phức tạp bộ nhớ tăng lên đáng kể. Điều này trở thành vấn đề tác động lên<br /> tính mềm dẻo khi cài đặt các mã pháp trong các môi trường với năng lực tính toán và tài<br /> nguyên khác nhau.<br /> Những năm gần đây, nhằm đạt được các lợi thế trong cài đặt chủ yếu là trong phần<br /> cứng, có nhiều công trình tập trung nghiên cứu xây dựng các tầng tuyến tính truy hồi [1].<br /> Theo đó, ma trận tuyến tính của chúng là lũy thừa của một ma trận đồng hành có dạng đơn<br /> giản và dễ dàng cài đặt phần cứng. Trong [8], nhóm tác giả đã đề xuất và đưa ra một loạt<br /> các phương pháp khai thác tính truy hồi đối với ma trận tuyến tính trong mã pháp<br /> Kuznyechik của nhóm tác giả Cơ quan FSB, Liên bang Nga đề xuất.<br /> Đã có một số lượng lớn các nghiên cứu tập trung lên việc sinh các ma trận truy hồi<br /> kích thước nhỏ, thường là 4×4, có lợi thế trong cài đặt phần cứng [11, 12, 13, 14]. Tuy<br /> nhiên, cài đặt phần mềm khi khai thác tính truy hồi của những ma trận này dường như<br /> chưa được quan tâm nhiều, đặc biệt là theo khía cạnh sử dụng các bảng tra được tính<br /> trước. Ở một hướng nghiên cứu khác liên quan đến xây dựng tầng tuyến tính sử dụng các<br /> ma trận MDS có dạng đặc biệt như các ma trận dịch vòng [15], ma trận Hadamard [16,<br /> 17]. Các ma trận này tuy không có tính truy hồi nhưng chúng lại có đặc điểm là tập các<br /> phần tử ở mỗi hàng hoặc mỗi cột trong ma trận tuyến tính là giống nhau mặc dù thứ tự của<br /> chúng là khác nhau. Trong cài đặt phần cứng tính chất này được khai thác một cách triệt<br /> để, còn trong cài đặt phần mềm sử dụng kỹ thuật tra bảng chủ yếu áp dụng cho những ma<br /> trận kích thước nhỏ, cỡ 4×4, hoặc 8×8. Khi kích thước ma trận tuyến tính tăng lên, sẽ phát<br /> sinh các vấn đề liên quan đến bộ nhớ cần lưu những bảng tra đã được tính trước. Điều này<br /> dường như là một điểm hạn chế khi cài đặt các ma trận lớn trong môi trường có năng lực<br /> tính toán hạn chế. Trên cơ sở khai thác tính chất các tầng tuyến tính truy hồi, các tầng<br /> tuyến tính sử dụng ma trận Hadamard hoặc dịch vòng, trong bài báo này chúng tôi sẽ khảo<br /> sát một số đặc điểm của chúng và sau đó đề xuất phương pháp cài đặt hiệu quả tổng quát<br /> cho các tầng tuyến tính kích thước lớn dạng này.<br /> <br /> <br /> Tạp chí Nghiên cứu KH&CN quân sự, Số 53, 02 - 2018 149<br /> Công nghệ thông tin & Cơ sở toán học cho tin học<br /> <br /> Đóng góp của chúng tôi: Đề xuất phương pháp cài đặt hiệu quả tổng quát cho các tầng<br /> tuyến tính truy hồi kích thước lớn, trong đó tầng tuyến tính được xây dựng sử dụng các ma<br /> trận truy hồi, Hadamard hoặc dịch vòng.<br /> Bố cục các phần còn lại của bài báo như sau: Mục 2 trình bày về tầng tuyến tính truy<br /> hồi, tầng tuyến tính sử dụng ma trận Hadamard hoặc dịch vòng. Mục 3 trình bày lại cách<br /> sử dụng bảng tra để cài đặt cho các tầng tuyến tính với biểu diễn thông qua một ma trận<br /> tuyến tính trên trường hữu hạn. Đề xuất phương pháp cài đặt hiệu quả tầng tuyến tính truy<br /> hồi và tầng tuyến tính sử dụng ma trận Hadamard hoặc dịch vòng sẽ được đưa ra ở mục 4<br /> của. Cuối cùng là một số kết luận và danh mục tài liệu tham khảo.<br /> 2. MỘT SỐ CHIẾN LƯỢC THIẾT KẾ TẦNG TUYẾN TÍNH<br /> CHO THUẬT TOÁN MÃ KHỐI<br /> 2.1. Tầng tuyến tính truy hồi dựa trên ma trận đồng hành<br /> Trong ngữ cảnh của bài báo đề này, chúng tôi xem xét tầng tuyến tính nhận được từ<br /> một ma trận tuyến tính M kích thước m×m trên trường hữu hạn GF(2n) và m chẵn. Tính<br /> truy hồi của nó được thể hiện ở việc là ma trận M được xác định bằng lũy thừa bậc m của<br /> một ma trận đồng hành A kích thước m×m có dạng sau:<br />  0 0  0 a0 <br />  <br />  1 0  0 a1 <br /> A   0 1  0 a2  , ai  GF  2n  , 0  i  m  1 (1)<br />  <br />      <br /> 0 0  1 a <br />  m 1 <br /> <br /> Biểu diễn của tầng tuyến tính trong bài báo này ký hiệu là L : Vmn  Vmn , được quy<br /> định là phép nhân bên phải véc tơ hàng X với ma trận M, đầu ra là véc tơ hàng Y:<br /> Y  X  M  X  Am  ((( (( X  A)  A)  ...  A)  A)  A) , (2)<br />  <br /> m<br /> <br /> trong đó: Y   y0 , y1 ,..., ym 1  , X   x0 , x1 ,..., xm 1  , xi , yi  GF  2n  .<br /> 2.2. Tầng tuyến tính sử dụng ma trận Hadamard<br /> Với lợi thế trong cài đặt, các ma trận Hadamard có thể được sử dụng thiết kế tầng<br /> tuyến tính của các nguyên thủy mật mã. Trong mục này, chúng tôi sẽ giới thiệu ngắn gọn<br /> về dạng ma trận này. Ma trận Hadamard kích thước m×m là ma trận có dạng<br />  H H2 <br /> H  1 ,<br />  H 2 H1 <br /> m m<br /> trong đó, các ma trận H1 và H 2 là các ma trận con vuông kích thước  . Ví dụ với<br /> 2 2<br /> các ma trận:<br />  a a1   a2 a3 <br /> H1   0 , H2   ,<br />  a1 a0   a3 a2 <br /> có ma trận Hadamard 4×4 như sau:<br />  a0 a1 a2 a3 <br />  <br /> a a0 a3 a2 <br /> H  1 .<br />  a2 a3 a0 a1 <br />  <br />  a3 a2 a1 a0 <br /> 2.3. Tầng tuyến tính sử dụng ma trận dịch vòng<br /> <br /> <br /> 150 T. H. Thái, P. Đ. Trọng, “Đề xuất phương pháp cài đặt hiệu quả … trong mã khối.”<br /> Nghiên cứu khoa học công nghệ<br /> <br /> Ma trận dịch vòng (circulant matrix) là ma trận nhận được bằng cách dịch vòng đi 1<br /> một phần tử ở mỗi hàng hoặc mỗi cột. Ví dụ một ma trận dịch vòng kích thước 4×4 có<br /> dạng sau:<br />  a0 a1 a2 a3 <br />  <br /> a a0 a1 a2  .<br /> C  3<br />  a2 a3 a0 a1 <br />  <br />  a1 a2 a3 a0 <br /> Thấy rằng, ở hai ma trận dạng này số phần tử ở mỗi hàng hoặc mỗi cột của chúng là<br /> như nhau. Đây là một tích chất mà được khai thác trong các cài đặt phần cứng cũng như<br /> phần mềm đối với những tầng tuyến tính sử dụng dạng ma trận này.<br /> 3. CÀI ĐẶT TẦNG TUYẾN TÍNH SỬ DỤNG CÁC BẢNG TRA<br /> Trong mục này, chúng tôi trình bày cách cài đặt tầng tuyến tính sử dụng kỹ thuật tra<br /> bảng. Tầng tuyến tính ký hiệu bởi ánh xạ tuyến tính L, được biểu diễn dưới dạng phép<br /> nhân bên phải một véc tơ hàng X với ma trận M trên GF(2n). Khi đó, biến đổi tuyến tính<br /> L : Vmn  Vmn có thể biểu diễn dưới dạng:<br />  b0,0 b0,1  b0, m 1 <br />  <br /> b1,0 b1,1  b1,m 1 <br /> L  X   X  M   x0 , x1 ,..., xm 1    . (3)<br />      <br />  <br />  bm 1,0 bm 1,1  bm 1, m 1 <br /> trong đó: xi , bi , j  GF  2n  , i, j  0,1,..., m  1 . Xét biến đổi tuyến tính<br /> L*i : Vn  Vmn , i  0, m  1 :<br /> x Vn : L*i  x  bi ,0 || x  bi ,1 || ... || x  bi , m 1 , (4)<br /> trong đó, phép || là phép ghép nối hai véc tơ.<br /> Từ (3) và (4) ta có<br /> Y  L( X )  L*0 ( x0 )  L*1 ( x1 )  ...  L*m 1 ( xm 1 ) <br /> x0  b0,0 || x0  b0,1 || ... || x0  b0, m 1<br /> <br /> x1  b1,0 || x1  b1,1 || ... || x1  b1, m 1<br /> = <br /> <br /> <br /> xm 1  bm 1,0 || xm 1  bm 1,1 || ... || xm 1  bm 1, m 1<br /> Như vậy, ánh xạ L : Vmn  Vmn có thể biểu diễn thông qua m ánh xạ tuyến tính<br /> L ,..., L*m 1 , mỗi ánh xạ Li có thể tính thông qua một bảng tra gồm 2n dòng, mỗi dòng kích<br /> *<br /> 0<br /> thước mn bit, các bảng tra này được sắp xếp theo thứ tự tăng dần như sau:<br /> bi ,0   0  || bi ,1   0  ||  || bi , m 1   0 <br /> bi ,0  1 || bi ,1  1 ||  || bi , m 1  1<br />   ,<br /> bi ,0   r  || bi ,1   r  ||  || bi , m 1   r <br />  <br /> bi ,0   2n  1 || bi ,1   2n  1 ||  || bi , m 1   2n  1<br /> <br /> <br /> <br /> <br /> Tạp chí Nghiên cứu KH&CN quân sự, Số 53, 02 - 2018 151<br /> Công nghệ thông tin & Cơ sở toán học cho tin học<br /> <br /> trong đó, phép nhân bi ,0   r  được thực hiện trong GF(2n), ở đây r là một phần tử của<br /> trường GF(2n).<br /> Như vậy, dòng thứ r của bảng này được xác định bởi<br /> L*i  r   bi ,0   r  || bi ,1   r  || ... || bi ,m 1   r  , r  GF  2n  , i  0,1,..., m  1 .<br /> Quá trình này cũng được thực hiện tương tự đối với biến đổi tuyến tính<br /> L1 : Vmn  Vmn , nhưng khi đó sử dụng ma trận M-1. Ở đây, chúng tôi không trình bày cụ<br /> thể quá trình này.<br /> Như vậy, để cài đặt L : Vmn  Vmn cần m phép truy cập bộ nhớ lưu m bảng tra và m<br /> phép XOR các từ mn bit.<br /> Cách sử dụng bảng tra này còn có thể áp dụng để kết hợp đồng thời hai phép biến đổi<br /> phi tuyến và tuyến tính cho các mã pháp dạng SPN, như trong AES [5], GOST R 34.12-<br /> 2015 [6], .... Theo đó, số lượng bảng tra cần lập ở đây là m bảng, với tổng kích thước bộ<br /> nhớ yêu cầu là m2×n×2n bit. Chi tiết cài đặt cho từng giá trị của m, n có thể tham khảo<br /> trong [2, 5, 6, 8].<br /> Ví dụ với m = 32, n = 8 (áp dụng cho mã pháp SPN có kích thước khối m×n = 256<br /> bit), bộ nhớ yêu cầu là 322×8×28 bit = 256 KB. Nếu áp dụng cho cả quá trình giải mã thì<br /> bộ nhớ cần phải tăng gấp 2 lần. Trong ví dụ này nếu xét đến năng lực tính toán của các<br /> máy tính thông dụng thì mỗi bảng tra không thể lưu bởi các số 256 bit. Do vậy, thay vì<br /> phải lập 32 bảng tra, chúng ta cần lập 32×4 = 96 bảng tra, các phần tử trong mỗi bảng là<br /> các số 64 bit (64 bit là thanh ghi của các máy tính thông dụng hiện nay). Với việc tăng số<br /> lượng bảng phụ thuộc vào năng lực tính toán thực tế như vậy sẽ làm tăng số phép truy cập<br /> bộ nhớ, và số phép XOR các số 64 bit sẽ tăng lên rất nhiều, ít nhiều chúng sẽ ảnh hưởng<br /> đến tốc độ thực thi. Rõ ràng đây là một vấn đề cần tối ưu hóa trong cài đặt đối với các tầng<br /> tuyến tính kích thước lớn. Trong phần tiếp theo, chúng tôi sẽ đề xuất một số cách tiếp cận<br /> đối với dạng cụ thể của ma trận M để từ đó có thể giảm số lượng các bảng tra nói trên.<br /> 4. MỘT CÁCH CÀI ĐẶT MỚI CHO TẦNG TUYẾN TÍNH<br /> SỬ DỤNG KỸ THUẬT TRA BẢNG<br /> 4.1. Đối với tầng tuyến tính truy hồi<br /> Đối với tầng tuyến tính (2) thay vì lập bảng tra cho ma trận M = Am, chúng tôi đề xuất<br /> phương pháp cài đặt khi lập bảng tra trước cho ma trận Am/2. Để đơn giản và trực quan<br /> hơn, chúng tôi xét trường hợp tầng tuyến tính kích thước nhỏ, với m = 4, và n = 4. Khi đó,<br /> xét ma trận đồng hành có dạng sau:<br />  0 0 0 a0 <br />  <br /> 1 0 0 a1 <br /> A , với ai  GF  24  ,0  i  3 . (5)<br />  0 1 0 a2 <br />  <br />  0 0 1 a3 <br /> Khi đó:<br /> 0 0 a0 a0 a3   a0 a0 a3  <br />    <br /> 0 0 a1 a0  a1a3  a a0  a1a3  <br /> A2   , M  A4   1 , (6)<br /> 1 0 a2 a1  a2 a3   a2 a1  a2 a3  <br />  2   <br /> 0 1 a3 a2  a3   a3 a2  a32  <br /> <br /> <br /> <br /> <br /> 152 T. H. Thái, P. Đ. Trọng, “Đề xuất phương pháp cài đặt hiệu quả … trong mã khối.”<br /> Nghiên cứu khoa học công nghệ<br /> <br /> ở đây,  là một giá trị nào đó thuộc GF(24). Chúng tôi chỉ quan tâm đến sự giống nhau của<br /> hai cột cuối cùng và hai cột đầu tiên tương ứng trong hai ma trận A2 và A4. Với dạng biểu<br /> diễn như vậy, xét phép nhân bên phải véc tơ X   x0 , x1 , x2 , x3  với ma trận A2, có<br /> 0 0 a0 a0 a3 <br />  <br /> 0 0 a1 a0  a1a3 <br /> Y   y0 , y1 , y2 , y3   X  A   x0 , x1 , x2 , x3   <br /> *     2<br /> <br /> 1 0 a2 a1  a2 a3 <br />  <br /> 0 1 a3 a2  a32 <br />  y0 (7)<br />  x2<br />  <br />  y1  x3<br />  <br />  y2  a0 x0  a1 x1  a2 x2  a3 x3<br />  y  a0 a3 x0   a0  a1a3  x1   a1  a2 a3  x2   a2  a32  x3<br />  3<br /> còn với ma trận A4, có<br />  a0 a0 a3  <br />  <br /> a a0  a1a3  <br /> Y   y0 , y1 , y2 , y3   X  A4   x0 , x1 , x2 , x3    1 <br />  a2 a1  a2 a3  <br />  <br />  a3 a2  a32  <br /> (8)<br />  y0  a0 x0  a1 x1  a2 x2  a3 x3<br /> <br />  y1  a0 a3 x0   a0  a1a3  x1   a1  a2 a3  x2   a2  a3  x3<br /> 2<br /> <br /> <br />  y2  <br /> y  <br />  3<br /> Từ (7) và (8) ta thấy y0  y2 và y1  y3 . Như vậy, đầu ra của tầng tuyến tính truy hồi<br /> có thể sử dụng ma trận A2 để tính được một nửa giá trị tọa độ của véc tơ đầu ra Y thông<br /> qua véc tơ Y  , sau đó áp dụng tiếp ma trận A2 này lên véc tơ đầu vào có tọa độ là<br />  x2 , x3 , y0 , y1  để nhận được một nửa giá trị các tọa độ còn lại của véc tơ Y.<br /> Trong trường hợp tổng quát, với ma trận A kích thước m×m trên trường GF(2n) nói<br /> trên, cách lập bảng tra và sử dụng bảng tra để tính các véc tơ đầu ra được mô tả như dưới<br /> đây. Có tất cả m bảng tra, ký hiệu là T0, T1, ... Tm – 1, mỗi bảng có 2n phần tử, mỗi phần tử<br /> của bảng có kích thước bằng kích thước ghép nối (phép ||) một nửa số phần tử trên một<br /> hàng của ma trận, và bằng  mn  / 2 bit.<br /> Viết lại biểu thức (2) như sau:<br /> Y   y0 , y1 ,..., ym 1   X  Am    x0 , x1 ,..., xm 1   Am / 2   Am / 2 . (9)<br /> Từ ma trận A có dạng (1), tính ma trận Am/2. Giả sử có dạng sau:<br />  0  b0, j b0, j 1  b0, m 1 <br />  <br /> m/ 2  0  b1, j b1, j 1  b1, m 1 <br /> A  , (10)<br />       <br />  <br />  0  bm 1, j bm 1, j 1  bm 1, m 1 <br /> m m<br /> trong đó: bi , j  GF  2n  , i  0,1,..., m  1, j  ,  1, ..., m  1 .<br /> 2 2<br /> <br /> <br /> <br /> Tạp chí Nghiên cứu KH&CN quân sự, Số 53, 02 - 2018 153<br /> Công nghệ thông tin & Cơ sở toán học cho tin học<br /> <br /> Xét biến đổi tuyến tính L*i : Vn  Vmn , i  0, m  1 :<br /> 2<br /> *<br /> x Vn : L  x  bi , j || x  bi , j 1 || ... || x  bi ,m 1 , j  m / 2 .<br /> i (11)<br /> 2<br /> Từ những lập luận ở trên ta thấy khi nhân véc tơ X với ma trận A ta sẽ nhận được các<br /> tọa độ ở nửa đầu của véc tơ Y. Do vậy, từ công thức (9), (10), (11) ta có thể tính được nửa<br /> đầu của véc tơ Y như sau:<br />   * * *<br />  y0 || y1 || ... || y m 1   L0  x   L1  x     Lm 1  x  <br />  2 <br /> x0  b0, j || x0  b0, j 1 || ... || x0  b0, m 1<br /> <br /> x1  b1, j || x1  b1, j 1 || ... || x1  b1, m 1 . (12)<br /> m<br />   , j<br /> 2<br /> <br /> <br /> xm 1  bm 1, j || xm 1  bm 1, j 1 || ... || xm 1  bm 1, m 1<br /> <br />  <br /> Như vậy, các giá trị tọa độ  y0 , y1 ,..., y m  có thể tính thông qua biểu thức (12) bởi m<br /> 1<br />  2 <br /> ánh xạ tuyến tính (11), mỗi ánh xạ tuyến tính này có thể tính thông qua một bảng gồm 2n<br /> phần tử, kích thước mỗi phần tử của bảng bằng kích thước ghép nối (phép ||) một nửa số<br /> phần tử trên một hàng của ma trận, và bằng  mn  / 2 bit. Các bảng tra này được tính và<br /> sắp xếp theo thứ tự tăng dần của giá trị x. Bảng tra thứ i được tính như sau:<br /> bi , j  0 || bi , j 1  0 ||  || bi , m 1  0<br />  <br /> bi , j  k || bi , j 1  k ||  || bi , m 1  k , (13)<br />  <br /> bi , j   2n  1 || bi , j 1   2n  1 ||  || bi , m 1   2n  1<br /> m<br /> trong đó i  0, m  1, j  , k  GF  2n  .<br /> 2<br /> Tương tự như vậy, để tính các tọa độ ở nửa sau của véc tơ Y ta chỉ việc áp dụng lặp lại<br /> quá trình trên khi nhân véc tơ X  với ma trận A2, các tọa độ của véc tơ này là:<br />  <br /> X    x m , x m ,..., xm 1 , y0 , y1 ,..., y m  .<br />  2 2 1 2<br /> 1<br /> <br /> <br /> Những tọa độ của véc tơ X chính là các địa chỉ của mỗi bảng tra (13).<br /> Những phân tích ở trên chỉ ra rằng, cách tiếp cận sử dụng bảng tra để tính giá trị của<br /> tầng tuyến tính truy hồi cho phép giảm một nửa bộ nhớ khi lưu dữ liệu tính trước so với<br /> phép lập bảng cho toàn bộ ma trận như trong một số tài liệu đã đề cập [2, 5, 6, 8]. Trong<br /> khi số phép XOR như trong biểu thức (12) chỉ là cộng theo modulo 2 các số  mn  / 2 .<br /> Chú ý: Việc đánh giá số lượng bảng tra ở đây chỉ mang tính lý thuyết, bởi trong cài đặt<br /> thực tế, đối với tầng tuyến tính có kích thước lớn số lượng này sẽ thay đổi phụ thuộc vào<br /> năng lực lưu trữ (kích thước thanh ghi) cho phép của môi trường cài đặt và khả năng lưu<br /> trữ của trình biên dịch. Cụ thể sẽ phân tích ở bảng 1.<br /> <br /> <br /> 154 T. H. Thái, P. Đ. Trọng, “Đề xuất phương pháp cài đặt hiệu quả … trong mã khối.”<br /> Nghiên cứu khoa học công nghệ<br /> <br /> Đối với tầng tuyến tính truy hồi dạng (2), ma trận nghịch đảo của nó cũng có dạng<br /> tương tự, do vậy cách tiếp cận ở trên có thể sử dụng để tính cho ánh xạ L-1. Ở đây, chúng<br /> tôi không trình bày chi tiết vấn đề này.<br /> 4.2. Đối với tầng tuyến tính sử dụng ma trận dịch vòng<br /> Như đã phân tích ở mục 2, các ma trận dịch vòng có tập các phần tử ở trên cùng một<br /> hàng hoặc một cột là giống nhau. Đặc điểm này sẽ được chúng tôi khai thác để đề xuất<br /> phương pháp cài đặt sử dụng kỹ thuật tra bảng. Cũng như trong mục 4.1 để đơn giản ở đây<br /> chúng tôi xét ma trận dịch vòng C kích thước 4×4 trên GF(24) như sau:<br />  a0 a1 a2 a3 <br />  <br /> a a0 a1 a2 <br /> C  3 . (14)<br />  a2 a3 a0 a1 <br />  <br />  a1 a2 a3 a0 <br /> Khi đó, tầng tuyến tính được xác định bởi ánh xạ<br /> L : V16  V16 :<br />  a0 a1 a2 a3 <br />  <br /> a a0 a1 a2  . (15)<br /> Y   y0 , y1 , y2 , y3   X  C   x0 , x1 , x2 , x3    3<br />  a2 a3 a0 a1 <br />  <br />  a1 a2 a3 a0 <br /> Từ đây có<br />  a0 x0 || a1 x0   a2 x0 || a3 x0 <br />    <br />      <br />  a3 x1 || a0 x1   a1 x1 || a2 x1 <br />     . (16)<br /> y0 || y1     , y2 || y3    <br />  a x || a x   a x || a x <br /> 2 2 3 2 0 2 1 2<br />    <br />      <br />  a x || a x   a x || a x <br />  1 3 2 3  3 3 0 3<br /> Thấy rằng, trong biểu thức (16) đối với công thức tính tổng XOR của y0 || y1 và y2 || y3<br /> có các số hạng giống nhau đối với các hệ số của ma trận C, mà chỉ khác nhau ở thứ tự. Do<br /> vậy, nếu sử dụng cách lập bảng tra cho một nửa số cột của ma trận C thì ta có thể tính<br /> được toàn bộ các tọa độ đầu ra của véc tơ Y. Thật vậy, nếu lập 4 bảng tra cho ghép nối của<br /> hai cột cuối cùng của ma trận (14) như sau:<br /> a2  0 || a3  0 a1  0 || a2  0<br />  <br /> T0  a2  k || a3  k , T1  a1  k || a2  k ,<br />  <br /> a2   24  1 || a3   24  1 a1   24  1 || a2   24  1<br /> (17)<br /> <br /> a0  0 || a1  0 a3  0 || a0  0<br />  <br /> T2  a0  k || a1  k , T3  a3  k || a0  k<br />  <br /> a0   24  1 || a1   24  1 a3   24  1 || a0   24  1<br /> <br /> <br /> <br /> <br /> Tạp chí Nghiên cứu KH&CN quân sự, Số 53, 02 - 2018 155<br /> Công nghệ thông tin & Cơ sở toán học cho tin học<br /> <br /> trong đó 0  k  24  1 và phép nhân được thực hiện trên GF(24). Khi đó, y0 || y1 và y2 || y3<br /> được xác định bởi:<br /> y0 || y1  T2  x0   T3  x1   T0  x2   T1  x3 <br /> (18)<br /> y2 || y3  T0  x0   T1  x1   T2  x2   T3  x3 <br /> Như vậy, trong trường hợp này ta cũng chỉ phải lập 4 bảng tra nhưng kích thước mỗi<br /> bảng tra giảm đi một nửa so với cách lập bảng tra cho toàn bộ ma trận như trong mục 3.<br /> Do đó, bộ nhớ yêu cầu giảm đi một nửa. Kết quả này cũng tương tự như kết quả so với<br /> tầng tuyến tính truy hồi trong mục 4.1.<br /> Trong trường hợp tổng quát, với ma trận A kích thước m×m trên trường GF(2n), cách<br /> lập bảng tra và sử dụng bảng tra để tính các véc tơ đầu ra được tổng quát hóa lại, theo đó,<br /> cần tất cả m bảng tra, ký hiệu là T0, T1, ... Tm – 1, mỗi bảng có 2n phần tử, mỗi phần tử của<br /> bảng có kích thước bằng kích thước ghép nối (phép ||) một nửa số phần tử trên một hàng<br /> của ma trận, và bằng  mn  / 2 .<br /> 4.3. Đối với tầng tuyến tính sử dụng ma trận Hadamard<br /> Ma trận Hadamard kích thước m×m là ma trận có dạng<br />  H H2 <br /> H  1 .<br />  H 2 H1 <br /> Từ đây thấy rằng, tập các phần tử ở mỗi hàng hoặc mỗi cột của ma trận này là giống<br /> nhau. Do vậy, có thể áp dụng các tiếp cận tương tự như đối với ma trận dịch vòng để lập<br /> các bảng tra cho một nửa số cột của H. Độ phức tạp tính toán, cũng như độ phức tạp về bộ<br /> nhớ lưu trữ cũng tương tự như tầng tuyến tính sử dụng ma trận dịch vòng.<br /> 4.4. Một số nhận xét<br /> Trong mục này, chúng tôi thống kế phân tích độ phức tạp cho một số trường hợp cụ<br /> thể của tầng tuyến truy hồi và tầng tuyến tính dựa trên ma trận Hadamard (ký hiệu là ma<br /> trận H) hoặc ma trận dịch vòng (ký hiệu là ma trận C), trong đó, mỗi phần tử ở mỗi bảng<br /> sẽ lưu ở các số có độ lớn đến 64 bit (đây là kích thước thanh ghi của máy tính thông dụng).<br /> Bảng 1 dưới đây là độ phức tạp của kỹ thuật cài đặt sử dụng bảng tra cho ma trận kích<br /> thước m×m, với m = 2k trên trường hữu hạn GF(2n).<br /> Bảng 1. So sánh các tham số của hai cách cài đặt sử dụng bảng tra.<br /> Kích<br /> Kích Số<br /> Kích thước<br /> Cách cài đặt thước Số phép Số<br /> Tham thước của<br /> TT sử dụng bảng thanh lượng truy phép<br /> số bảng biến đổi<br /> tra ghi bảng cập bộ XOR<br /> tra tuyến<br /> (bits) nhớ<br /> tính<br /> Cho ma trận M 16 128 B 4 4 4<br /> Cho ma trận<br /> m=4<br /> 1 A2, một nửa 16 bit<br /> n=4 8 64 B 4 8 8<br /> số cột của H<br /> hoặc C<br /> Cho ma trận M 32 4 KB 4 4 4<br /> Cho ma trận<br /> m=4<br /> 2 A2, một nửa 32 bit<br /> n=8 16 2 KB 4 8 8<br /> số cột của H<br /> hoặc C<br /> 3 m = 8 Cho ma trận M 32 4 KB 8 8 8 32 bit<br /> <br /> <br /> 156 T. H. Thái, P. Đ. Trọng, “Đề xuất phương pháp cài đặt hiệu quả … trong mã khối.”<br /> Nghiên cứu khoa học công nghệ<br /> <br /> n=4 Cho ma trận<br /> A4, một nửa<br /> 16 2 KB 8 16 16<br /> số cột của H<br /> hoặc C<br /> Cho ma trận M 64 16 KB 8 8 8<br /> Cho ma trận<br /> m=8<br /> 4 A4, một nửa 64 bit<br /> n=8 32 8 KB 8 16 16<br /> số cột của H<br /> hoặc C<br /> Cho ma trận M 64 64 KB 32 32 32<br /> Cho ma trận<br /> m = 16<br /> 5 A8, một nửa 128 bit<br /> n=8 64 32 KB 16 32 32<br /> số cột của H<br /> hoặc C<br /> Cho ma trận M 256<br /> 64 128 128 128<br /> KB<br /> m = 32 Cho ma trận<br /> 6 256 bit<br /> n=8 A8, một phần<br /> 64 64 KB 32 128 128<br /> tư số cột của<br /> H hoặc C<br /> Cho ma trận M 1024<br /> 64 512 512 512<br /> KB<br /> m = 64 Cho ma trận<br /> 7 512 bit<br /> n=8 A8, một phần 128<br /> 64 64 512 512<br /> tám số cột của KB<br /> H hoặc C<br /> <br /> Trong bảng 1 thấy rằng khi kích thước tầng tuyến tính nhỏ hơn 128 bit. Khi đó, độ<br /> phức tạp của cách cài đặt sử dụng ma trận M và của phương pháp đề xuất khác nhau ở kích<br /> thước bộ nhớ cần lưu, và số lượng phép XOR của phương pháp đề xuất nhiều gấp 2 lần<br /> phương pháp cài đặt khi lập bảng tra cho ma trận M.<br /> Khi kích thước tầng tuyến tính bằng 128 bit khi đó số lượng bảng tra của phương pháp<br /> mới chỉ cần lập là 16 bảng, bằng một nửa so với 32 bảng của phương pháp sử dụng bảng<br /> tra cho ma trận M. Còn kích thước vẫn nhỏ hơn một nửa. Sự khác biệt này được giải thích<br /> như sau. Đối với phương pháp cài đặt sử dụng bảng tra cho ma trận M, theo như phân tích<br /> ở mục 3 chỉ cần lập 16 bảng, tuy nhiên, kích thước mỗi phần tử trong từng bảng bằng 128<br /> bit. Đối với các máy tính thông thường hiện này giá trị này cần được chia thành hai số 64<br /> bit. Do vậy, thay vì lập 16 bảng, chúng ta cần 32 bảng phụ thuộc vào kích thước thanh ghi<br /> của môi trường cài đặt phần mềm thực tế. Trong trường hợp ngược lại, phương pháp mới<br /> là chỉ lập bảng tra cho một nửa số cột của ma trận A8, hoặc một nửa số cột của ma trận H,<br /> hoặc C. Do vậy, chỉ cần 16 bảng tra cho những trường hợp này.<br /> Khi kích thước tầng tuyến tính tăng lên, ví dụ 256 và 512 bit, chúng tôi có thể sử dụng<br /> các ma trận không phài Am/2, mà tương ứng là là Am/4 = A8 và Am/8 = A8 đối với trường hợp<br /> tầng tuyến tính truy hồi. Đối với ma trận H hoặc C cũng tương tự như vậy, sẽ lập bảng tra<br /> cho 1/4 số cột hoặc 1/8 số cột của chúng. Làm như vậy để kích thước mỗi phần tử ở trong<br /> từng bảng phù hợp với kích thước thanh ghi 64 bit. Trong trường hợp này, kích thước bộ<br /> nhớ yêu cầu để lưu giảm không phải 2 lần mà tương ứng là 4 và 8 lần. Số lượng bảng cần<br /> lập cũng giảm trong ví dụ này tương ứng là 4 và 8 lần.<br /> <br /> <br /> <br /> Tạp chí Nghiên cứu KH&CN quân sự, Số 53, 02 - 2018 157<br /> Công nghệ thông tin & Cơ sở toán học cho tin học<br /> <br /> 5. KẾT LUẬN<br /> Trong bài báo này chúng tôi đề xuất một phương pháp cài đặt hiệu quả đối với tầng<br /> tuyến tính truy hồi, tầng tuyến tính sử dụng các ma trận Hadamard hoặc dịch vòng có kích<br /> thước lớn. Theo đó, kỹ thuật lập bảng tra khai thác tính chất truy hồi của ma trận tuyến<br /> tính, tính giống nhau ở tập các phần tử trong mỗi hàng của ma trận Hadamard hoặc dịch<br /> vòng, cho phép thực thực thi tầng tuyến tính với độ phức tạp tính toán (số phép XOR và<br /> phép truy cập bộ nhớ) không đổi so với cách cài đặt tra bảng thông thường. Tuy nhiên,<br /> phương pháp của chúng tôi cho phép giảm đáng kể bộ nhớ lưu trữ các bảng tra cần phải<br /> tính trước (bảng 1). Phương pháp này cho phép cài đặt mềm dẻo hơn các tầng tuyến tính<br /> có kích thước lớn trong các môi trường khác nhau.<br /> Hướng nghiên cứu tiếp theo của bài báo là áp dụng phương pháp cài đặt trên đối với<br /> các mã pháp thực tế sử dụng ma trận tuyến tính truy hồi để có thể đánh giá chính xác hiệu<br /> quả của nó.<br /> TÀI LIỆU THAM KHẢO<br /> [1]. Augot Daniel and Matthieu Finiasz. “Direct construction of recursive MDS diffusion<br /> layers using shortened BCH codes”. in Fast Software Encryption. 2014. Springer.<br /> [2]. Daemen, Joan, and Vincent Rijmen. “The design of Rijndael: AES-the advanced<br /> encryption standard”. Springer Science & Business Media, 2002.<br /> [3]. Guo, Jian, et al. “The LED block cipher”. Cryptographic Hardware and Embedded<br /> Systems- CHES 2011. Springer Berlin Heidelberg, 2011. 326-341.<br /> [4]. Мак-Вильямс Ф. Дж., Слоен Н. Дж. А. – “Теория кодов, исправляющих ошибки:<br /> Пер. С англ. – М.: Связь”, 1979. – 744 с., ил.<br /> [5]. Зензин О. С., Иванов М. А. “Стандарт криптографической защиты” - AES.<br /> Конечные поля. – М. : КУДИЦ-ОБРАЗ, 2002. – 176 с.<br /> [6]. Mikhail Borodin, Andrey Rybkin, Alexey Urivskiy. “HighSpeed Software<br /> Implementation of the Prospective 128-bit Block Cipher and Streebog Hash-<br /> Function”. CTCrypt 2014. pp. 189-198.<br /> [7]. GOST R 34.12–2015: “Information technology. Cryptographic data security. Block<br /> ciphers. Block Cipher”. http://tc26.ru/en/standard/gost/GOST_R_34_12_2015_ENG.pdf.<br /> [8]. Nikolay Borisenko, Nguyen Van Long, Alexey Bulygin. “Algorithm design<br /> software and hardware implementation of large size linear mapping”. CTCrypt<br /> 2013. pp. 192-205.<br /> [9]. Cannon John and Wieb Bosma, “Handbook of MAGMA functions”. Edition, 2006. 2:<br /> p. 4350.<br /> [10]. http://magma.maths.usyd.edu.au/calc/.<br /> [11]. Kishan Chand Gupta and Indranil Ghosh Ray. “On Constructions of MDS Matrices<br /> form Companion Matrices for Lightweight Cryptography”. Security Engineering and<br /> Intelligence Informatics - Lecture Notes in Computer Science Volume 8128, 2013, pp<br /> 29-43.<br /> [12]. Sajadieh M., Dakhilalian M., Mala H., Sepehrdad P. “Recursive Diffusion Layers for<br /> Block Ciphers and Hash Functions”. In: Canteaut, A. (ed.) FSE 2012. LNCS, vol.<br /> 7549, pp. 385-401. Springer, Heidelberg (2012).<br /> [13]. G. Zeng, K. He, and W. Han. “A trinomial type of -LFSR oriented toward software<br /> implementation”. In Science in China Series F-Information Sciences, volume 50,<br /> pages 359{372. Springer-Verlag, 2007.<br /> [14]. Shengbao Wu, Mingsheng Wang, and Wenling Wu. “Recursive di usion layers for<br /> (lightweight) block ciphers and hash functions”. In Lars R. Knudsen and Huapeng<br /> <br /> <br /> 158 T. H. Thái, P. Đ. Trọng, “Đề xuất phương pháp cài đặt hiệu quả … trong mã khối.”<br /> Nghiên cứu khoa học công nghệ<br /> <br /> Wu, editors, Selected Areas in Cryptography, volume 7707 of Lecture Notes in<br /> Computer Science, pages 355{371. Springer, 2013.<br /> [15]. Chand Gupta K., Ghosh Ray I. (2014) “On Constructions of Circulant MDS Matrices<br /> for Lightweight Cryptography”. In: Huang X., Zhou J. (eds) Information Security<br /> Practice and Experience. ISPEC 2014. Lecture Notes in Computer Science, vol 8434.<br /> Springer, Cham.<br /> [16]. Youssef, A.M., Mister, S., Tavares, S.E.: “On the Design of Linear Transformations<br /> for Substitution Permutation Encryption Networks”. In: Workshop On Selected Areas<br /> in Cryptography, SAC 1997, pp. 40–48 (1997).<br /> [17]. Sajadieh, M., Dakhilalian, M., Mala, H. et al. “On construction of involutory MDS<br /> matrices from Vandermonde Matrices in GF(2q)”. Des. Codes Cryptogr. (2012) 64:<br /> 287. https://doi.org/10.1007/s10623-011-9578-x.<br /> ABSTRACT<br /> PROPOSING AN EFFICIENT IMPLEMENTATION METHOD FOR THE LARGE-<br /> SCALE LINEAR LAYER IN BLOCK CIPHERS<br /> In this paper, we propose an efficient implementation method for large-scale<br /> linear layers. Especially for large-scale linear layers, the proposed method allows<br /> to retain the underlying arithmetic operations, but memory is reduced by half<br /> compared to the table-based approach commonly used in modern SPN ciphers. The<br /> approach in the paper is to use a lookup table technique when exploiting the<br /> properties of the recursive linear matrix, the Hadamard matrix, and the circular<br /> matrix.<br /> Key words: Linear layer, MDS matrix, Efficient implementation, SPN cipher.<br /> <br /> Nhận bài ngày 25 tháng 8 năm 2017<br /> Hoàn thiện ngày 22 tháng 9 năm 2017<br /> Chấp nhận đăng ngày 26 tháng 02 năm 2018<br /> <br /> Địa chỉ: Ban cơ yếu Chính phủ.<br /> *<br /> Email: thai_tranhong@gmail.com.<br /> <br /> <br /> <br /> <br /> Tạp chí Nghiên cứu KH&CN quân sự, Số 53, 02 - 2018 159<br />
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2