Datapath của kiến trúc PRESENT song song

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu thiết kế một số thuật toán mật mã hạng nhẹ luận văn ths toán học 604601 (Trang 55 - 63)

Phương pháp tiếp cận này không đạt được tần số hoạt động tối ta cao, bởi vì tín hiệu đầu vào phải truyền qua tất cả các cổng XOR và hộp-S và quan trọng là do đường đi rõ ràng là quá dài. Số cổng thuộc về đường dẫn nhiều hơn là kết quả khả năng chuyển mạch. Vì vậy, khoảng thời gian chuyển mạch là kéo dài. Để rút ngắn đường đi quan trọng, khi thiết kế flip-flop các đường truyền đã được cài đặt sau mỗi vịng, nghĩa là sau mỗi lớp hốn vị (lớp-P). Một mặt, điều này làm tăng diện tích chíp và điện năng tiêu thụ hơn. Nhưng mặt khác, tần số hoạt động tối đa có thể được tăng lên đáng kể (nhưng mục tiêu chính của thiết kế kiến trúc là thơng lượng cao và khơng u cầu diện tích chíp thấp).

Thực hiện song song theo kênh truyền của PRESENT-80 bít địi hỏi 27,028 GE và một khi các kênh truyền được hồn thành (sau 31 chu kỳ đồng hồ) nó có thể mã hóa một khối thơng điệp của 64 bít trong vịng một chu kỳ đồng hồ. Điều này dẫn đến một sự chậm trễ của 31 chu kỳ và thông lượng 6.4 Mbps ở tần số 100KHz. Vì vậy, giả định rằng để khóa được ổn định cho nhiều hoạt động mã hóa. Do đó các vịng khóa khơng lan truyền qua kênh truyền và không cần lưu trữ trong các FF bổ sung.

2.7.4 So sánh kết quả đạt được giữa các kiến trúc

Bảng 7 tóm tắt các kết quả thực hiện của PRESENT dựa trên ba kiến trúc đã trình bày ở trên với một đường dẫn dữ liệu (datapath) chỉ mã hóa sử dụng thư viện chuẩn UMCL18G212T3 với tần số 100KHz.

Thuật tốn Kích Kích Độ Chu kỳ/ Thơng Cơng Diện Hiệu Dịng

thước thước rộng một lượng nghệ tích suất

khóa khối datapath khối [Kbps] [mum] [GE] [bps/GE] [muA] Kiến trúc nối tiếp

PRESENT 80 64 4 547 11.7 0.18 1075 10.89 1.4

Kiến trúc dựa theo vòng

PRESENT 80 64 64 32 200 0.18 1570 127.4 2.78

Kiến trúc song song

PRESENT 80 64 64 1 6400 0.18 27028 236.79 38.3

Bảng 7: Bảng tóm tắt kết quả thực hiện của PRESENT dựa trên ba kiến trúcTừ kết quả đạt được với ba kiến trúc của của PRESENT ở trên ta đưa ra bảng so Từ kết quả đạt được với ba kiến trúc của của PRESENT ở trên ta đưa ra bảng so sánh với một số thuật toán khác như sau (theo tài liệu của Axel York Poschmann, năm 2009 [8] )

Trong bảng tóm tắt trên ta có thể thấy thực hiện kiến trúc nối tiếp của PRESENT- 80 yêu cầu 1075 GE so với kiến trúc dựa theo vòng của PRESENT yêu cầu 1570 GE [10]. Đây là việc triển khai nhỏ nhất của thuật toán với mức bảo mật vừa phải là 80 bít khóa. Tuy nhiên, việc thực hiện nối tiếp phải mất 547 chu kỳ đồng hồ để mã hóa một khối thơng điệp, dẫn đến một thơng lượng khá nhỏ và do đó, hiệu suất phần cứng nhỏ. Nhưng so sánh với các thông số thực hiện của DES, DESL, DESX và DESXL thì đa số các biến thể của DES đều kém hơn. Đối với AES, thì việc thực hiện AES của Feldhofer et al. [12] được xem là tiêu chuẩn của tất cả các triển khai hạng nhẹ, tuy nhiên vệc thực hiện của Hăamăalăainen et al l gim khong 10% nhỏ và nhanh hơn so với AES [12]. Nhưng so với thực hiện PRESENT-80 thì vẫn cịn gấp 2-3 lần.

Đáng chú ý hơn, đó là hai mật mã dịng TRIVIUM [15] và GRAIN [15] so với kiến trúc dựa theo vịng của PRESENT về diện tích thì GRAIN là tốt hơn, nhưng so với kiến trúc nối tiếp của PRESENT thì địi hỏi nhiều diện tích hơn. Vì hai mật mã dịng đạt được với thơng lượng cao có hiệu quả với phần cứng so với thực hiện kiến trúc PRESENT nối tiếp là tốt hơn. Tuy nhiên, đối với một dấu chân diện tích nhỏ thì giả thuyết này khơng cịn thỏa mãn. Hơn nữa, nếu chú ý đến các kết quả thực hiện dựa trên vịng của PRESENT-80, có thể thấy rằng trong 1570GE đạt được hiệu suất thực hiện của phần cứng là 127.4 bít mỗi giây cho mỗi GE là cao nhất trong số tất cả các mật mã như các biến thể của DES,

Thuật tốn Kích Kích Độ Chu kỳ/ Thơng Cơng Diện Hiệu Dịng

thước thước rộng một lượng nghệ tích suất

khóa khối datapath khối [Kbps] [mum] [GE] [bps/GE] [muA] Kiến trúc nối tiếp

PRESENT 80 64 4 547 11.7 0.18 1075 10.89 1.4 DES 56 64 4 144 44.44 0.18 2309 19.25 1.19 DESL 56 64 4 144 44.44 0.18 1848 24.05 0.89 DESX 184 64 4 144 44.44 0.18 2629 16.9 - DESXL 184 64 4 1447 44.44 0.18 2168 20.5 - AES[73] 128 64 8 1032 12.4 0.35 3400 3.65 3.0 AES[96] 128 128 8 160 80 0.13 3100 25.81 - Mã dòng Trivium 80 SC 1 1 100 0.13 2599 38.48 4.67 Grain 80 SC 1 1 100 0.13 1294 77.28 2.75

Kiến trúc dựa theo vòng

PRESENT 80 64 64 32 200 0.18 1570 127.4 2.78

SEA[144] 96 96 96 93 103.23 0.13 3758 27.47 1.7

ICEBERG 128 64 64 16 400 0.13 7732 51.73 3.19

HIGHT 128 64 64 34 188.2 0.25 3048 61.75 3.19

Kiến trúc song song

PRESENT 80 64 64 1 6400 0.18 27028 236.79 38.3

AES, TRIVIUM, GRAIN,... Cũng lưu ý thêm rằng, các mật mã dòng yêu cầu một lượng lớn thời gian để khởi tạo, ví dụ: GRAIN cần 321 chu kỳ đồng hồ, TRIVIUM cần 1333 chu kỳ đồng hồ trước khi thực hiện. Vì những lý do so sánh cần thiết, nên trong phần này có sử dụng những số liệu của kiến trúc dựa theo vòng của SEA [33] ICEBERG [33] và HIGHT [17] để so sánh với kiến trúc dựa theo vòng của PRESENT-80. Cả ba mật mã khối đều yêu cầu giữa 3048 GE và 7732 GE về diện tích và hiệu suất thực hiện phần cứng cũng thấp hơn cả PRESENT-80, mặc dù ICEBERG [33] có thơng lượng cao (400 Kbps) nhưng cũng khơng được chấp nhận vì có u cầu về diện tích lớn là 7732 GE.

Chương 3 Xây dựng chương trình thực hiện thuật tốn mật mã khối hạng nhẹ PRESENT

3.1 Sơ đồ thuật tốn và xây dựng chương trình

3.1.1 Sơ đồ thuật toán

Dựa trên các kết quả lý thuyết trên, ta xây dựng sơ đồ thuật toán của PRESENT như sau:

Thuật tốn: Mã giả cho mã hóa PRESENT

Input: Bản rõ =P, khóa K Output: Bản mãC =EK(P) 1:ST AT E ←P 2:fori= 1to31do 3: STATESTATE ⊕Ki 4: STATESboxLayer(STATE) 5: STATEPLayer(STATE) 6:end for 7:STATESTATE ⊕K32

Q trình mã hóa/giải mã của thuật tốn được mô tả chi tiết dưới đây:

Q trình mã hóa PRESENT

Vịng lặp mã hóa của PRESENT gồm 3 phép tốn chính là phép tốn trộn khóa (addroundkey), phép toán thay thế (SboxLayer) và phép toán hoán vị (PLayer). Cuối cùng là một vòng lặp cuối cho việc làm "trắng sau" (post-whitening). Đầu tiên, khối bản rõ 64 bít được đưa vào mảng trạng thái (STATE), sau đó mảng trạng thái sẽ tham gia vào các

thao tác mã hóa hoặc giải mã cùng với khóa vịng (khóa được sinh ra từ khóa chính thơng qua hàm sinh khóa). Độ dài của khóa vịng bằng với độ dài của trạng thái(STATE). Hai

phép toán thay thế và hoán vị được thiết kế để ngăn chặn phân tích mã bằng phương thức "gây lẫn" (confusion) và phương thức "khuếch tán" (diffusion), cịn phép tốn trộn khóa mới thực sự được thiết kế để mã hóa dữa liệu.

Phép tốn trộn khóa (Addroundkey): Cho khóa vịng Ki = [k63i , ..., k0i], và một

trạng thái hiện hành của khối dữ liệu bi = [b63, b62, ..., b1, b0]. Lần lượt từng bít của

trạng thái (STATE)64 bít sẽ được thực hiện phép cộng⊕(XOR) với từng bít tương ứng trong khóa vịng (khóa được sinh ra từ khóa chínhK, thơng qua hàm sinh khóa)

của chu kỳ (vịng) hiện hành. Phép tốn được mơ tả dưới đây bj →bj⊕kji với1≤i≤32

0≤j ≤63

Phép tốn thay thế (SBoxLayer): Là lớp thay thế (lớp phi tuyến tính), lớp thay thế

sử dụng một hộp-S (S-box) 4 bít duy nhất được áp dụng 16 lần song song trong mỗi vịng. Mơ tả của Hộp-S dưới dạng thập lục phân được thể hiện trong bảng dưới đây:

S 0 1 2 3 4 5 6 7 8 9 A B C D E F

S[x] C 5 6 B 9 0 A D 3 E F 8 4 7 1 2

Đối với lớp thay thế, trạng thái mã hóa hiện hành (STATE) của khối dữ liệu bi = [b63, b62, ..., b1, b0] được biểu diễn bằng 16 "từ" (words) 4 bít w15, ..., w0, trong đó

wi = b4∗i+3 k b4∗i+2 k b4∗i+1 k b4∗i cho 0 ≤ i ≤ 15và cung cấp một đầu ra từ 4 bít S[wi]cho các giá trị trạng thái(STATE)theo một phương pháp rõ ràng.

Phép tốn hốn vị (PLayer): Là lớp tuyến tính, thực hiện hốn vị bít đơn giản. Các

hốn vị bít sử dụng trong PRESENT được cho bởi bảng sau. Bít i của trạng thái

STATE được chuyển đến vị trí bítP(i). i P(i) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 16 32 48 1 17 33 49 2 18 34 50 3 19 35 51 i P(i) 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 4 20 36 52 5 21 37 53 6 22 38 54 7 23 39 55 i P(i) 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 8 24 40 56 9 25 41 57 10 26 42 58 11 27 43 59 i P(i) 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 12 28 44 60 13 29 45 61 14 30 46 62 15 31 47 63

Vịng lặp cuối: Vịng lặp cuối cùng là một phép tốn⊕(XOR) của trạng tháiSTATE

với khóa K32. Phép tốn này cịn gọi là phép tốn cho việc làm "trắng sau" (post-

Quá trình giải mã PRESENT

Vì mã khối PRESENT thực hiện theo mơ hình mạng SPN, nên q trình giải mã chính là q trình ngược lại của q trình mã hóa. Các phép biến đổi sử dụng trong phép giải mã gồm: Phép tốn trộn khóa (Addroundkey), Phép tốn hốn vị nghịch đảo (InvPLayer), phép toán thay thế nghịch đảo (InvSBoxLayer). Các phép tốn được mơ tả dưới đây:

Addroundkey: Trong phép tốn trộn khóa, cho khóa vịngKi = [k63, k62, ..., k1, k0],

và một trạng thái hiện hành của khối dữ liệubi = [b63, b62, ..., b1, b0]. Lần lượt, từng

bít của trạng thái (STATE) 64 bít sẽ được thực hiện phép cộng ⊕ (XOR) với bít tương ứng trong khóa vịng (khóa được sinh ra từ khóa chínhK thơng qua hàm sinh khóa) của chu kỳ hiện hành. Phép tốn được mơ tả dưới đây

bj →bj⊕kji với1≤i≤32 0≤j ≤63

Trong phần giải mã, đầu tiên, bản mã sau khi thu được từ q trình mã hóa được thực hiện phép tốn cộng ⊕với khóa được sinh ra tại vịng lặp cuối (khóaK32) thu được mảng trạng thái (STATE) tương ứng, mảng trạng thái này chính là đầu vào cho vịng giải mã tiếp theo.

InvPLayer: Phép biến đổi InvPLayer là nghịch đảo của phép toán hốn vị. Các hốn

vị bít sử dụng trong q trình giải mã của PRESENT được cho dưới đây. Trong đó bíticủa trạng tháiSTATE được chuyển đến vị trí bítP(i).

i P(i) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 i P(i) 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 i P(i) 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 2 6 10 14 18 22 26 30 34 38 42 46 50 54 58 62 i P(i) 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 3 7 11 15 19 23 27 31 35 39 43 47 51 55 59 63

InvSBoxLayer: Phép biến đổi InvSBoxLayer là nghịch đảo của phép tốn thay thế,

trong đó sử dụng hộp-S nghịch đảo áp dụng cho mỗi bít của trạng thái (STATE).

Hộp-S nghịch đảo được cho trong bảng dưới đây.

S 0 1 2 3 4 5 6 7 8 9 A B C D E F

S[x] 5 E F 8 C 1 2 D B 4 6 3 0 7 9 A

Q trình sinh khóa PRESENT

Trong q trình mã hóa/giải mã, đầu vào là một bản rõ/bản mã cùng với khóa. Trong mỗi vịng thực hiện, tại phép tốn trộn khóa, trạng thái hiện hành (STATE) được thực hiện phép tốn cộng⊕ (XOR) với khóa con tương ứng. Khóa con có được từ khóa chính thơng qua hàm sinh khóa.

Sinh khóa là q trình mở rộng khóa từ khóa chính thu được các khóa con theo một phương thức nào đó, rồi đem thực hiện phép tốn cộng⊕(XOR) với trạng thái hiện hành(STATE) tại mỗi vịng. Khóa được dùng trong mỗi vịng đó cịn gọi là khóa vịng. Q trình sinh khóa được trình bày chi tiết dưới đây:

Trong phần này trình bày hàm sinh khóa của khóa có kích thước là 80 bít. Đầu tiên, khóa (key) K ban đầu cung cấp để sử dụng, được lưu trữ trong một thanh ghi khóa

Kvà được biểu diễn như sau:k79k78...k0. Với khóa vịng 80 bít ta sử dụng 64 bít tận cùng

bên trái cho vịng khóa thứi,Ki=k63k62...k0và được biểu diễn tương ứng như sau: Tại vịng thứita có:

Ki =k63k62...k0=k79k78...k16.

KhóaK sẽ được cập nhật sau mỗi lần tham gia vào quá trình thực hiện theo trình tự như sau:

1. [k79k78...k1k0]=[k18k17...k20k19]

2. [k79k78k77k76]=S[k79k78k77k76]

3. [k19k18k17k16k15]=[k19k18k17k16k15]⊕round_counter

Do đó, sinh khóa bao gồm 3 hoạt động: (1) thanh ghi khóa được xoay 61 bít vị trí sang trái, (2) bốn bít cuối cùng bên trái được chuyển qua hộp-S của PRESENT, và (3) giá trịiround_counterđược thực hiện phép⊕(XOR) với các bítk k k k k củaK.

3.1.2 Ngôn ngữ và môi trường thực hiện

Việc chọn ngơn ngữ lập trình cho một bài tốn cũng là một vấn đề rất quan trọng để giải quyết bài tốn vì mỗi ngơn ngữ lập trình có những ưu điểm và nhược điểm nhất định. Từ nhu cầu cũng như mục đích sử dụng của PRESENT đó là có thể cài đặt và thực hiện được trên nhiều thiết bị ứng dụng khác nhau, thì việc lựa chọn ngơn ngữ lập trình là rất quan trọng. Với việc lựa chọn ngơn ngữ lập trình C++ và sử dụng Visual Studio Community 2015 là tương đối phù hợp. Visual Studio có một trình biên dịch và một trình sửa lỗi cũng như các hệ thống thư viện online MSDN. Việc thực hiện trên máy tính xách tay có cấu hình 4GB RAM, và một bộ xử lý Intel(R) Core(TM) i5-7200U CPU, tốc độ 2.50 GHz. Một số đoạn code của chương trình xem tại phần phụ lục hoặc tham khảo tại trang webhttp://www.lightweightcrypto.org/implementations.php.

3.2 Kết quả thực hiện chương trình

3.2.1 Sử dụng thuật tốn mật mã khối PRESENT để mã hóa và giải mã

Sử dụng thuật toán mã khối PRESENT đã được mơ tả ở trên để mã hóa và giải mã văn bản, trong đó văn bản (bản rõ) ban đầu có kích thước là 64 bít khi thực hiện mã hóa sẽ cho ra một bản mã cũng có kích thước là 64 bít. Q trình thực hiện với các tham số như sau:

• Q trình mã hóa và giải mã của chương trình có sử dụng hộp-S (sBox4) 4 bít và hộp-S (invsBox4) nghịch đảo 4 bít (mơ tả dưới dạng hex) được lưu trong file

datademo.incnhư sau:

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu thiết kế một số thuật toán mật mã hạng nhẹ luận văn ths toán học 604601 (Trang 55 - 63)

Tải bản đầy đủ (PDF)

(76 trang)