Tiêu chuẩn Quốc gia TCVN 12854-2:2020 ISO/IEC 29192-2:2012 Mật mã hạng nhẹ - Mã khối

  • Thuộc tính
  • Nội dung
  • Tiêu chuẩn liên quan
  • Lược đồ
  • Tải về
Mục lục Đặt mua toàn văn TCVN
Lưu
Theo dõi văn bản

Đây là tiện ích dành cho thành viên đăng ký phần mềm.

Quý khách vui lòng Đăng nhập tài khoản LuatVietnam và đăng ký sử dụng Phần mềm tra cứu văn bản.

Báo lỗi
  • Báo lỗi
  • Gửi liên kết tới Email
  • Chia sẻ:
  • Chế độ xem: Sáng | Tối
  • Thay đổi cỡ chữ:
    17
Ghi chú

Tiêu chuẩn Việt Nam TCVN 12854-2:2020

Tiêu chuẩn Quốc gia TCVN 12854-2:2020 ISO/IEC 29192-2:2012 Công nghệ thông tin - Các kỹ thuật an toàn - Mật mã hạng nhẹ - Phần 2: Mã khối
Số hiệu:TCVN 12854-2:2020Loại văn bản:Tiêu chuẩn Việt Nam
Cơ quan ban hành: Bộ Khoa học và Công nghệLĩnh vực: Khoa học-Công nghệ, Thông tin-Truyền thông
Năm ban hành:2020Hiệu lực:
Người ký:Tình trạng hiệu lực:
Đã biết

Vui lòng đăng nhập tài khoản gói Tiêu chuẩn hoặc Nâng cao để xem Tình trạng hiệu lực. Nếu chưa có tài khoản Quý khách đăng ký tại đây!

Tình trạng hiệu lực: Đã biết
Ghi chú
Ghi chú: Thêm ghi chú cá nhân cho văn bản bạn đang xem.
Hiệu lực: Đã biết
Tình trạng: Đã biết

TIÊU CHUẨN QUỐC GIA

TCVN 12854-2 : 2020

ISO/IEC 29192-2: 2012

CÔNG NGHỆ THÔNG TIN - CÁC KỸ THUẬT AN TOÀN - MẬT MÃ HẠNG NHẸ - PHẦN 2: MÃ KHỐI

Information technology - Security techniques - Lightweight cryptography - Part 2: Block ciphers

Lời nói đầu

TCVN 12854-2 : 2020 hoàn toàn tương đương với ISO/IEC 29192-2:2012.

TCVN 12854-2 : 2020 do Cục Quản lý mật mã dân sự và Kiểm định sản phẩm mật mã biên soạn, Ban Cơ yếu Chính phủ đề nghị, Tổng cục Tiêu chuẩn Đo lường Chất lượng thẩm định, Bộ Khoa học và Công nghệ công bố.

Bộ tiêu chuẩn TCVN 12854 (ISO/IEC 29192) Công nghệ thông tin - Các kỹ thuật an toàn - Mật mã hạng nhẹ gồm các tiêu chuẩn sau:

- TCVN 12854-1 : 2020 (ISO/IEC 29192-1:2012) Phần 1: Tổng quan

- TCVN 12854-2 : 2020 (ISO/IEC 29192-2:2012) Phần 2: Mã khối

- TCVN 12854-3 : 2020 (ISO/IEC 29192-3:2012) Phần 3: Mã dòng

- TCVN 12854-4 : 2020 (ISO/IEC 29192-4:2013) Phần 4: Các cơ chế sử dụng kỹ thuật phi đối xứng.

 

CÔNG NGHỆ THÔNG TIN - CÁC KỸ THUẬT AN TOÀN - MẬT MÃ HẠNG NHẸ - PHẦN 2: MÃ KHỐI

Information technology - Security techniques - Lightweight cryptography - Part 2: Block ciphers

1  Phạm vi áp dụng

Tiêu chuẩn này quy định ba mã khối phù hợp với các yêu cầu cài đặt ứng dụng mật mã hạng nhẹ:

- PRESENT: Một mã khối hạng nhẹ với kích thước khối là 64 bit và kích thước khóa là 80 hoặc 128 bit.

- CLEFIA: Mã khối hạng nhẹ với kích thước khối là 128 bit, kích thước khóa là 128, 192, hoặc 256 bit.

- LEA: Mã khối hạng nhẹ với kích thước khối là 128 bit và kích thước khóa là 128, 192 hoặc 256 bit.

2  Tài liệu viện dẫn

Tiêu chuẩn này không có tài liệu viện dẫn.

3  Thuật ngữ và định nghĩa

Tiêu chuẩn này áp dụng các thuật ngữ và định nghĩa sau đây.

3.1

Khối (block)

Xâu bit có độ dài xác định

[TCVN 11367-1 (ISO/IEC 18033-1)]

3.2

Mã Khối (block cipher)

Hệ mật đối xứng với tính chất là thuật toán mã hóa thao tác trên một khối của bản rõ, nghĩa là xâu bit có độ dài xác định, kết quả cho ra là một khối của bản mã.

[TCVN 11367-1 (ISO/IEC 18033-1)]

3.3

Bản mã (ciphertext)

Dữ liệu được biến đổi để che giấu nội dung thông tin trong đó.

[TCVN 11817-1 (ISO/IEC 9798-1)]

3.4

Khóa (key)

Dãy các ký tự điều khiển sự vận hành của một biến đổi mật mã (ví dụ, mã hóa và giải mã).

CHÚ THÍCH Lấy từ TCVN 7817-1.

3.5

Mã khối n-bit (n-bit block cipher)

Mã khối với tính chất là các khối của bản rõ và bản mã đều có độ dài n bit.

[TCVN 12213 (ISO/IEC 10116)]

3.6

Bản rõ (plaintext)

Thông tin chưa được mã hóa.

CHÚ THÍCH Lấy từ TCVN 11495-1 (ISO/IEC 9797-1).

3.7

Khóa vòng (round key)

Dãy các ký tự nhận được từ khóa sử dụng lược đồ khóa, và được sử dụng để điều khiển việc biến đổi thông tin trên mỗi vòng của mã khối.

4  Các ký tự

0x  Tiền tố cho xâu nhị phân trong ký hiệu hệ thập lục phân

||  Phép ghép nối các xâu bit

a ¬ b  Cập nhật giá trị của a bằng giá trị của b

Å  Phép toán cộng XOR theo từng bit

5  Mã khối hạng nhẹ với kích thước khối 64 bit

5.1  Tổng quan

Điều này đặc tả một mã khối hạng nhẹ 64 bit là PRESENT trong 5.2.

Phụ lục A xác định các định danh đối tượng sử dụng làm định danh thuật toán được đặc tả trong Điều 5. Phụ lục B cung cấp các ví dụ số của các mã khối được mô tả trong tiêu chuẩn này. Phụ lục C tổng hợp các đặc tính hạng nhẹ của các mã khối được mô tả trong tiêu chuẩn này. Phụ lục D đưa ra một giới hạn số lượng các hoạt động của mã khối sử dụng một khóa đơn.

5.2  PRESENT

5.5.2  Thuật toán PRESENT

Thuật toán PRESENT [10] là một mã khối đối xứng xử lý các khối dữ liệu 64 bit, sử dụng khóa có độ dài 80 hoặc 128 bit. Mã khối được gọi là PRESENT-80 hoặc PRESENT-128 khi sử dụng khóa 80 bit hoặc 128 bit tương ứng.

5.2.2  Ký hiệu cụ thể cho PRESENT

khóa vòng 64 bit được sử dụng trong vòng i

bit thứ b của khóa vòng Ki

K = k79 .... k0

thanh ghi khóa 80 bit

kb

bit thứ b của thanh ghi khóa K

STATE

trạng thái bên trong 64 bit

bi

bit thứ i của STATE hiện tại

wi

từ 4 bit với 0 ≤ i ≤ 15

5.2.3  Mã hóa PRESENT

Mã khối PRESENT gồm 31 vòng, tức là 31 lần áp dụng của một dãy các biến đổi đơn giản. Một mô tả ở dạng giả mã của thuật toán mã hóa đầy đủ được đưa ra trong Hình 1, với STATE ký hiệu trạng thái bên trong. Các biến đổi cụ thể của thuật toán được xác định trong 5.2.5. Mỗi vòng của thuật toán sử dụng một khóa vòng khác nhau Ki (1 ≤ i ≤ 31), nhận được như mô tả trong 5.2.6. Hai vòng liên tiếp của thuật toán được chỉ rõ để minh họa trong Hình 2.

 

Hình 1 - Thủ tục mã hóa của PRESENT

Hình 2 - Hai vòng của PRESENT

5.2.4  Giải mã PRESENT

Thuật toán giải mã PRESENT đầy đủ được đưa ra trong Hình 3. Các biến đổi cụ thể của thuật toán được xác định trong 5.2.5. Mỗi vòng của thuật toán sử dụng một khóa vòng Ki (1 ≤ i ≤ 31) khác nhau, nhận được như trong 5.2.6.

Hình 3 - Thủ tục giải mã của PRESENT

5.2.5  Các biến đổi của PRESENT

5.2.5.2  addRoundKey

Cho trước khóa vòng với 1 ≤ i ≤ 32 và STATE hiện tại b63... b0, addRoundKey gồm các phép toán , với 0 ≤ j ≤ 63.

5.2.5.2  sBoxLayer

Tầng phi tuyến sBoxLayer của quá trình mã hóa của PRESENT sử dụng một S-hộp S 4 bit sang 4 bit, nó được áp dụng 16 lần song song trong mỗi vòng. S-hộp biến đổi đầu vào x thành đầu ra S(x) như mô tả theo hệ thập lục phân được chỉ ra trong Bảng 1.

Bảng 1 - S-hộp PRESENT

x

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 sBoxLayer STATE hiện tại b63 ...b0 được xem như 16 từ 4 bit w15 ...w0 với wi = b4*i+3 || b4*i+2 || b4*i +1 || b4*i (0 ≤ i ≤ 15) và 4 bit đầu ra S(wi) tạo ra các giá trị cập nhật trạng thái là phép ghép S(w15) || S(w14) || ... || S(w0).

5.2.5.3  invsBoxLayer

S-hộp sử dụng trong thủ tục giải mã của PRESENT là nghịch đảo của S-hộp S 4 bit sang 4 bit mà được mô tả trong 5.2.5.2. S-hộp nghịch đảo biến đổi đầu vào x thành đầu ra S-1(x) như được mô tả theo hệ thập lục phân trong Bảng 2.

Bảng 2 - S-hộp nghịch đảo của PRESENT

x

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

S-1(x)

5

E

F

8

C

1

2

D

B

4

6

3

0

7

9

A

5.2.5.4  pLayer

Hoán vị bit pLayer sử dụng trong thủ tục mã hóa của PRESENT được cho trong Bảng 3. Bit i của STATE được chuyển đến vị trí bit P(i).

Bảng 3 - Tầng hoán vị pLayer của PRESENT

5.2.5.5  invpLayer

Tầng hoán vị nghịch đảo invpLayer sử dụng trong thủ tục giải mã của PRESENT được cho trong Bảng 4. Bit i của STATE được chuyển tới vị trí bit P-1(i).

Bảng 4 - Tầng hoán vị nghịch đảo invpLayer của PRESENT

5.2.6  Lược đồ khóa PRESENT

5.2.6.2  PRESENT-80 và PRESENT-128

PRESENT có thể lấy khóa hoặc 80 hoặc 128 bit. Phiên bản khóa 80 bit (PRESENT-80) được mô tả trong 5.2.6.2 và phiên bản khóa 128 bit (PRESENT-128) được mô tả trong 5.2.6.3.

5.2.6.2  Khóa 80 bit cho PRESENT-80

Khóa của người dùng cung cấp được lưu trữ trong thanh ghi khóa K và được biểu diễn là k79k78... k0. Tại vòng i, khóa vòng 64 bit  bao gồm 64 bit trái nhất của nội dung thanh ghi K hiện tại. Do vậy, tại vòng i chúng ta có:

Sau khi trích khóa vòng Ki, thanh ghi khóa K = k79k78...k0 được cập nhật như sau:

Diễn giải bằng lời, thanh ghi khóa được quay vòng 61 bit vị trí sang bên trái, 4 bit trái nhất được đưa qua S-hộp của PRESENT, và giá trị round_counter i được cộng XOR với các bit k19k18k17k16k15 bit của K trong đó bit có trọng số thấp nhất của round_counter nằm bên phải. Các vòng được đánh số từ 1 ≤ i ≤ 31 và round_counter = i. Hình 4 là minh họa lược đồ khóa của PRESENT-80.

Hình 4 - Lược đồ khóa PRESENT-80

5.2.6.3  khóa 128 bit cho PRESENT-128

Tương tự như biến thể 80 bit, khóa do người dùng cung cấp ban đầu được lưu trữ trong thanh ghi khóa K và được biểu diễn là k127k126...k0. Tại vòng t, khóa vòng 64 bit gồm 64 bit trái nhất của nội dung hiện tại của thanh ghi K. Do vậy, tại vòng i ta có:

Sau khi trích khóa vòng Ki, thanh ghi khóa K = k127k126...k0 được cập nhật như sau:

Din giải bằng lời, thanh ghi khóa được quay vòng 61 bit vị trí sang bên trái, 8 bit trái nhất được đưa qua S-hộp của PRESENT, và giá trị round_counter i là được cộng XOR với các bit k66k65k64k63k62 của K bit có trọng số thấp nhất của round_counter nằm bên phải. Các vòng được đánh số từ 1 ≤ i ≤ 31 và round_counter = i. Hình 5 là đồ họa mô tả lược đồ khóa PRESENT-128.

Hình 5 - Lược đồ khóa PRESENT-128

6  Mã khối hạng nhẹ với kích thước khối 128 bit

6.1  Tổng quan

Điều này đặc tả hai mã khối hạng nhẹ 128 bit: CLEFIA tại 6.2 và LEA tại 6.3.

Phụ lục A xác định các định danh đối tượng được sử dụng làm định danh các thuật toán được đặc tả trong Điều 6. Phụ lục B cung cấp các ví dụ số của các mã khối được mô tả trong tiêu chuẩn này. Phụ lục C tổng hợp các đặc tính hạng nhẹ của các mã khối được mô tả trong tiêu chuẩn này. Phụ lục D đưa ra một giới hạn số lượng các hoạt động của mã khối sử dụng một khóa đơn.

6.2  CLEFIA

6.2.1  Thuật toán CLEFIA

Thuật toán CLEFIA [15] là một mã khối đối xứng, có thể xử lý các khối dữ liệu 128 bit sử dụng một khóa mật mã có độ dài 128, 192, 256 bit. Số vòng cho CLEFIA là 18, 22 và 26 với các khóa có kích thước 128 bit, 192 bit và 256 bit tương ứng. Tổng số khóa vòng phụ thuộc vào độ dài khóa. Các hàm mã hóa và giải mã của CLEFIA yêu cầu 36, 44 và 52 khóa vòng cho các khóa 128 bit, 192 bit và 256 bit tương ứng.

6.2.2  Các ký hiệu riêng cho CLEFIA

a(b)

Xâu bit có độ dài b bit

{0.1}n

Tập các xâu nhị phân có độ dài n

Phép nhân trên trường GF(2n)

<<< i

Phép dịch vòng sang trái i bit

~a

Phép lấy bù theo từng bit của xâu bit a

Σn

n lần phép toán của hàm DoubleSwap Σ

6.2.3  Mã hóa CLEFIA

Quá trình mã hóa của CLEFIA dựa trên cấu trúc Feistel tổng quát hóa 4 nhánh r- vòng GFN4,r. Cho P, C ϵ {0,1}128 là bản rõ và bản mã. Cho Pi, Ci ϵ {0,1}32 (0 ≤ i < 4) là các phần được chia từ các bản rõ và bn mã với P = P0 || P1 || P2 || P3C = C0 || C1 || C2 || C3. Cho WK0, WK1, WK2, WK3 ϵ {0,1}32 là các khóa làm trắng và RKi ϵ {0,1}32 (0 ≤ i < 2r) là các khóa vòng được cung cấp bởi lược đồ khóa. Khi đó, hàm mã hóa r-vòng ENCr được định nghĩa như sau:

ENCr:

6.2.4  Giải mã CLEFIA

Hàm giải mã DECr được định nghĩa như sau:

DECr:

Hình 6 minh họa cho cả ENCrDECr.

Hình 6 - Thủ tục mã hóa và thủ tục giải mã của CLEFIA

6.2.5  Các khối cơ sở của CLEFIA

6.2.5.2  GFNd,r

Cấu trúc cơ bản của CLEFIA là cấu trúc Feistel tổng quát. Cấu trúc này dùng được trong cả phần xử lý dữ liệu và phần lược đồ khóa.

CLEFIA sử dụng 4 nhánh và mạng Feistel tổng quát 8-nhánh. Mạng Feistel tổng quát 4-nhánh được dùng trong phần xử lý dữ liệu và lược đồ khóa với khóa 128 bit. Mạng Feistel tổng quát 8-nhánh được áp dụng trong lược đồ khóa với các khóa 192/256 bit. Chúng ta ký hiệu mạng Feistel tổng quát d-nhánh r-vòng dùng trong CLEFIA là GFNd,r. GFNd,r sử dụng hai F-hàm 32 bit khác nhau là F0F1.

Với d cặp của đầu vào Xi và đầu ra Yi (0 ≤ i < d) 32 bit và dr/2 khóa vòng 32 bit RKi (0 ≤ i < dr/2), GFNd,r (d = 4,8) và hàm ngược (d = 4) được xác định như sau:

GFN4,r:

1) T0 || T1 || T2 || T3 ¬ X0 || X1 || X2 || X3

2) Với i = 0 đến r-1:

2.1) T1 ¬ T1 Å F0(RK2i, T0)

T3 ¬ T3 Å F1(RK2i+1, T2)

2.2) T0 || T1 || T2 || T3 ¬ T1 || T2 || T3 || T0

3) Y0 || Y1 || Y2 || Y3 ¬ T3 || T0 || T1 || T2

GFN8,r:

1) T0 || T1 || ... || T7 ¬ X0 || X1 || ... || X7

2) Với i = 0 đến r-1:

2.1) T1 ¬ T1 Å F0(RK4i, T0)

T3 ¬ T3 Å F1(RK4i+1, T2)

T5 ¬ T5 Å F0(RK4i+2, T4)

T7 ¬ T7 Å F1(RK4i+3, T6)

2.2) T0 || T1 || ... || T6 || T7 ¬ T1 || T2 || ... || T7 || T0

3) Y0 || Y1 || ... || Y6 || Y7 ¬ Y7 || Y0 || ... || Y5 || Y6

Hàm ngược thu được bằng cách đổi thứ tự của RKi và hướng của phép dịch vòng từ tại 2.2) và 3) trong GFN4,r.

GFN4,r-1:

1) T0 || T1 || T2 || T3 ¬ X0 || X1 || X2 || X3

2) Với i = 0 đến r-1:

2.1) T1 ¬ T1 Å F0(RK2(r-1)-2, T0)

T3 ¬ T3 Å F1(RK2(r-1)-1, T2)

2.2) T0 || T1 || T2 || T3 ¬ T3 || T0 || T1 || T2

3) Y0 || Y1 || Y2 || Y3 ¬ T1 || T2 || T3 || T0

6.2.5.2  Các F-hàm

Hai F-hàm F0F1 sử dụng trong GFNd,r được xác định như sau:

F0: (RK(32), x(32)) ® y(32)

1) Y ¬ RK Å x

2) Cho V = V0 || V1 || V2 || V3, V1 ϵ {0,1}n.

V0 ¬ S0(V0)

V1 ¬ S1(V1)

V2 ¬ S0(V2)

V3 ¬ S1(V3)

3) Cho y0 || y1 || y2 || y3, y1 ϵ {0,1}n.

F1: (RK(32), x(32)) ® y(32)

1) V ¬ RK Å x

2) Cho V = V0 || V1 || V2 || V3, V1 ϵ {0,1}n.

V0 ¬ S1(V0)

V1 ¬ S0(V1)

V2 ¬ S1(V2)

V3 ¬ S0(V3)

3) Cho y0 || y1 || y2 || y3, y1 ϵ {0,1}n.

S0S1 là các S-hộp phi tuyến 8 bit, M0M1 là các ma trận khuếch tán được mô tả trong các tiểu mục ở dưới. Trong mỗi F-hàm sử dụng hai S-hộp và một ma trận, nhưng các S-hộp được sử dụng theo thứ tự khác nhau và các ma trận khác nhau. Hình 7 là đồ họa mô tả các F-hàm.

Hình 7 - Các F-hàm

6.2.5.3  Các S-hộp

CLEFIA sử dụng hai kiểu S-hộp 8 bit khác nhau S0S1; S0 dựa trên bốn S-hộp 4 bit ngẫu nhiên, và S1 dựa trên hàm nghịch đảo trên GF(28).

Bảng 5 và bảng 6 chỉ ra các giá trị đầu ra của S0S1 tương ứng. Tất cả các giá trị trong Bảng được biểu diễn ở hệ thập lục phân. Với một đầu vào 8 bit của S-hộp, 4 bit cao biểu diễn hàng và 4 bit thấp biểu diễn cột. Ví dụ, nếu một giá trị 0xab là đầu vào, 0x7e là đầu ra của S0 vì nó cùng nằm trên đường giao của hàng chỉ số a.’ và cột có chỉ số là ‘.b’

Bảng 5 - S0

Bảng 6 - S1

a) S-hộp S0

S0 : {0,1}8 ® {0,1}8: x ® y = S0(x) được sinh bởi sự kết hợp của 4 S-hộp 4 bit SS0, SS1, SS2, và SS3 theo cách dưới đây. Giá trị của mỗi S-hộp được xác định trong Bảng 7.

1) t0 ¬ SS0(x0), t1 ¬ SS1(x1), với x = x0 || x1, xi ϵ {0,1}4

2) u0 ¬ t0 Å 0 x 2 ∙ t1, u1 ¬ 0 x 2 ∙ t0 Å t1

3) y0 ¬ SS2(u0), y1 ¬ SS3(u1), với y = y0 || y1, yi ϵ {0,1}4

Phép nhân 0 x 2 ∙ t1 được thực hiện trong trường GF(24) xác định bởi đa thức nguyên thủy z4 + z + 1. Hình 8 đưa ra cách xây dựng của S0.

Bảng 7 - SSi (0 ≤ i < 4)

Hình 8 - S0

b) S-hộp S1

1: {0,1}8 ® {0,1}8:x ® y = S1(x) được xác định như sau:

Hàm nghịch đảo được thực hiện trong trường GF(28) xác định bởi đa thức nguyên thủy z8 + z4 + z3 + z2 + 1 (= 0x11d). fg là các phép biến đổi affine trên trường GF(2), mà được xác định như sau:

f: {0,1}8 ® {0,1}8:x ® y = f(x),

g: {0,1}8 ® {0,1}8:x ® y = g(x),

Với x = x0 || x1 || x2 || x3 || x4 || x5 || x6 || x7y = y0 || y1 || y2 || y3 || y4 || y5 || y6 || y7, xi, yj ϵ {0,1}. Các hằng số trong fg có thể được biểu diễn như 0x1e và 0x69 tương ứng.

6.2.5.4  Các ma trận khuếch tán

Các ma trận M0M1 được xác định như sau:

Các phép nhân của một ma trận và một véc tơ được thực hiện trên trường GF(28) xác định bởi đa thức nguyên thủy z8 + z4 + z3 + z2 + 1 (= 0x11d).

6.2.6  Lược đồ khóa CLEFIA

6.2.6.2  Cấu trúc chung

Lược đồ khóa CLEFIA hỗ trợ các khóa 128, 192 và 256 bit và tạo ra các khóa trắng WKi(0 ≤ i < 4) và các khóa vòng RKj(0 ≤ j < 2r) cho phần xử lý dữ liệu. Gọi K là khóa và L là khóa trung gian. Lược đồ khóa bao gồm hai bước sau:

1) Sinh L từ K.

2) Mở rộng KL (sinh WKiRKj)

Để sinh L từ K, lược đồ khóa cho khóa 128 bit sử dụng một phép hoán vị 128 bit GFN4,12, trong đó lược đồ khóa cho các khóa 192/256 bit sử dụng một phép hoán vị 256 bit GFN8,10.

6.2.6.2  Lược đồ khóa cho khóa 128 bit

Khóa trung gian 128 bit L được sinh ở bước 1 bằng cách áp dụng GFN4,12, trong đó lấy 24 giá trị hằng số 32 bit  (0 ≤ i < 24) làm các khóa vòng và K = K0 || K1 || K2 || K3 làm đầu vào. Tiếp đó KL được sử dụng để sinh WKi(0 ≤ i < 4) và RKj(0 ≤ j < 36) tại bước 2 và 3. 36 giá trị hằng số 32 bit  (24 ≤ i < 60) sử dụng ở bước 3 được xác định trong 6.2.6.6. Hàm DoubleSwap Σ được xác định trong 6.2.6.5.

(Sinh L từ K)

1)

Mở rộng KL

2) WK0 || WK1 || WK2 ||| WK3 ¬ K

3) Với i =0 đến 8

Nếu i lẻ: T ¬ T Å K

RK4i || RK4i+1 || RK4i+2 || RK4i+3 ¬ T

Bảng 8 chỉ ra mối quan hệ giữa các khóa vòng được sinh và dữ liệu có liên quan

Bảng 8 - Mở rộng KL (Khóa 128 bit)

6.2.6.3  Lược đồ khóa cho khóa 192 bit

Hai giá trị 128 bit KLKR được sinh từ khóa 192 bit K = K0 || K3 || K2 || K3 || K4 || K5 với Ki ϵ {0,1}32. Sau đó hai giá trị LLLR 128 bit được sinh bằng cách áp dụng GFN8,10 mà lấy   làm các khóa vòng và KL || KR ở trên làm đầu vào 256 bit. Hình 9 chỉ ra cấu trúc của GFN8,10.

KL, KRLL, LR được sử dụng để sinh WKi(0 ≤ i < 4) và RKj(0 ≤ j < 44) tại bước 4 và 5 dưới đây. Trong phần sau, 44 giá trị hằng số 32 bit  được sử dụng.

Các bước dưới đây chỉ ra lược đồ khóa 192 bit/256 bit. Với lược đồ khóa 192 bit, giá trị của k được đặt là 192.

(Sinh LL, LR từ KL, KR với một khóa k bit)

1) Đặt k = 192 hoặc k = 256

2) Nếu k = 192: KL ¬ K0 || K1 || K2 || K3 || KR ¬ K4 || K5 || -K0 || -K1

hoặc nếu k = 256 : KL ¬ K0 || K1 || K2 || K3 || KR ¬ K4 || K5 || K6 || K7

2) Cho KL = KL0 || KL1 || KL2 || KL3 || KR = KR0 || KR1 || KR2 || KR3

LL || LR ¬ GFN8,10(CON0(K),..., CON39(K), KL0,...,KL3, KR0,...,KR3)

(Mở rộng KL, KRLL, LR với khóa k-bit)

4) WK0 || WK1 || WK2 || WK3 ¬ KL Å KR

5) Với i = 0 đến 10 (nếu k = 192), hoặc 12 (nếu k = 256) thực hiện:

Nếu (i mod 4) = 0 hoặc 1:

nếu i lẻ: T ¬ T Å KR

Hoặc:

nếu i lẻ: T ¬ T Å KL

Hình 9 - Cấu trúc của GFN8,10

Bảng 9 chỉ ra mối quan hệ giữa các khóa vòng được tạo và dữ liệu có liên quan

Bảng 9 - Mở rộng KL, KR, LL, LR (khóa 192 bit)

6.2.6.4  Lược đồ khóa cho khóa 256 bit

Lược đồ khóa cho khóa 256 bit gần như giống hệt với lược đồ khóa 192 bit, ngoại trừ các giá trị hằng số, số RKi được yêu cầu và khởi tạo của KR.

Với khóa 256 bit, giá trị của K đặt là 256, các bước thực hiện giống như các bước của khóa 192 bit (xem mô tả trong 6.2.6.3). Sự khác biệt là chúng ta sử dụng  làm các khóa vòng để sinh LL, LR và sau đó sinh RKj(0 ≤ j < 52), chúng ta sử dụng 52 giá trị hằng số 32 bit  Bảng 10 chỉ ra mối quan hệ giữa các khóa vòng được sinh và mối dữ liệu có liên quan.

Bảng 10 - Mở rộng KL, KR, LL, LR (khóa 1256 bit)

6.2.6.5  Hàm DoubleSwap

Hàm DoubleSwap Σ : {0, 1}128 ® {0, 1}128 được định nghĩa như sau:

Với X[a-b] ký hiệu một xâu bit cắt từ bit thứ a tới bit thứ b của X. Bit 0 là bit có trọng số lớn nhất. Hàm DoubleSwap được minh họa như Hình 10.

Hình 10 - Hàm DoubleSwap Σ

6.2.6.6  Các giá trị hằng số

Các giá trị hằng số 32 bit  được sử dụng trong thuật toán lược đồ khóa. Chúng ta cần 60, 84, 92 giá trị hằng số cho khóa 128, 192, 256 bit tương ứng. Cho P(16) = 0xb7e1(=(e - 2)216) và Q(16)= 0x243f(=(π - 3)216) với e là cơ số của logarit tự nhiên (2,71828....) và π (3,14159...). , với k = 128, 192, 256 được sinh theo cách dưới đây. (Xem Bảng 11 là các số lần lặp lại l(k) và giá trị khởi tạo IV(k).

1)

2) Với i = 0 đến l(k) - 1 thực hiện các bước sau:

Tại bước 2.3, phép nhân được thực hiện trên tường GF(216) xác định bởi đa thức nguyên thủy z16 + z15 + z13 + z11 + z5 + z4 + 1 (= 0x1a831). 0x0002-1 là hằng số ký hiệu phép nhân nghịch đảo của một phần tử trong trường hữu hạn z (=0x0002).

Bảng 11 - Số các giá trị hằng số được yêu cầu

Bảng 12 - 14 chỉ ra các giá trị của  và Bảng 15-17 chỉ ra các giá trị của

Bảng 12 -

Bảng 13 -

Bảng 14 -

Bng 15 -

Bảng 16 -

Bng 17 -

6.3  LEA

6.3.1  Thuật toán LEA

Thuật toán LEA là một mã khối đối xứng, có thể xử lý các khối dữ liệu 128 bit và có ba khóa có độ dài khác nhau: 128, 192, 256 bit [11]. LEA với các khóa 128, 192, 256 bit được gọi là “LEA-128, LEA-192” và “LEA-256” tương ứng. Số vòng cho CLEFIA là 24 cho LEA-128, 28 cho LEA-192, và 32 cho LEA-256. Các hàm mã hóa và giải mã của LEA yêu cầu 25, 28 hoặc 32 khóa vòng cho LEA-128, LEA-192, LEA-256 tương ứng.

6.3.2  Các ký hiệu riêng cho LEA

Nr

số lượng vòng của thuật toán LEA; 24, 28 hoặc 32 cho độ dài khóa 128,192 hoặc 256 bit tương ứng

Ki

khóa vòng 192 bit thứ i bao gồm 6 từ 32 bit Ki[0] || Ki[1] || Ki[2] || Ki[3] || Ki[4] || Ki[5] với 0 ≤ iNr

Xi

trạng thái thứ i bao gồm 4 từ 32 bit Xi[0] || Xi[1] || Xi[2] || Xi[3], 0 ≤ iNr

d[i]

các giá trị hằng số 32 bit được sử dụng để sinh các khóa vòng, 0 ≤ i ≤ 8

{0,1}n

tập các xâu nhị phân 32-bit

<<< i

phép dịch vòng trái i-bit

>>> i

phép dịch vòng phải i-bit

phép cộng mô-đun 2n

phép trừ mô-đun 2n

6.3.3  Mã hóa LEA

Cho P = P[0] || P[1] || P[2] || P[3] là khối bản rõ 128 bit và C = C[0] || C[1] || C[2] || C[3] là khối bản mã, với P[i], C[i] ϵ {0,1}32 (0 ≤ i < 4). Cho Ki = Ki[0] || Ki[1] || Ki[2] || Ki[3] || Ki[4] || Ki[5] (0 ≤ iNr) là các khóa vòng 192 bit được cung cấp bởi lược đồ tại 6.3.5, với Ki ϵ {0,1}32 (0 ≤ i < 6).

Hoạt động mã hóa được mô tả như sau:

(1) X0[0] || X0[1] || X0[2] || X0[3] ¬ P[0] || P[1] || P[2] || P[3]

(2) Với i = 0 đến (Nr-1)

 

(3) C[0] || C[1] || C[2] || C[3] ¬ XNr[0] || XNr[1] || XNr[2] || XNr[3]

Hình 11 đưa ra mã hóa hàm vòng LEA.

Hình 11: Mã hóa hàm vòng LEA

6.3.4  Giải mã LEA

Hoạt động giải mã thực hiện như sau:

(1) XNr[0] || XNr[1] || XNr[2] || XNr[3] ¬ C[0] || C[1] || C[2] || C[3]

(2) i = (Nr - 1) đến 0:

(3) P[0] || P[1] || P[2] || P[3] ¬ X0[0] || X0[1] || X0[2] || X0[3]

Hình 12 đưa ra quá trình giải mã hàm vòng LEA.

CHÚ THÍCH Hàm trừ trong Hình 12 có nghĩa là đối số bên trái bị khử từ đối số trên cùng.

Hình 12: giải mã hàm vòng LEA

6.3.5  Lược đồ khóa LEA

6.3.5.1  Cấu trúc chung

Lược đồ khóa LEA nhận các khóa 128, 192, 256 bit và đầu ra là các khóa vòng 192 bit Ki (0 ≤ i < Nr) cho các phần xử lý dữ liệu.

6.3.5.2  Lược đồ khóa cho LEA-128

Cho K = K[0] || K[1] || K[2] || K[3] là một khóa 128 bit, với K[i] ϵ {0,1}32 (0 ≤ i < 4). Lược đồ khóa cho LEA-128 lấy K và 4 giá trị hằng số 32 bit d[i](0 ≤ i < 4) được mô tả tại 6.3.5.5 làm đầu vào và đầu ra là 24 khóa vòng 192 bit K[i] (0 ≤ i < 24).

Lược đồ khóa LEA-128 được thực hiện như sau:

(1) T[0] || T[1] || T[2] || T[3] ¬ K[0] || K[1] || K[2] || K[3]

(2) Với i = 0 đến 23

Ki ¬ T[0] || T[1] || T[2] || T[1] || T[3] || T[1]

Thủ tục thực hiện lược đồ khóa LEA được minh họa trong Hình 13.

 

Phụ lục D

(tham khảo)

Về định danh hàm băm và sự lựa chọn độ dài có thể khôi phục được của thông điệp

Như được quy định trong Điều 6 (Yêu cầu), người dùng các lược đồ chữ ký được quy định trong tiêu chuẩn này phải lựa chọn một hàm băm kháng va chạm h. Điều quan trọng là bên xác thực có nhiều cách để xác định hàm băm nào đã được sử dụng khi tạo ra chữ ký, để quá trình xác thực có thể diễn ra một cách an toàn. Nếu có một tổ chức thứ ba nguy hiểm có thể thuyết phục bên xác thực rằng một hàm băm “yếu” đã được sử dụng để tạo ra chữ ký (ví dụ như một hàm băm thiếu tính chất một chiều) thì tổ chức thứ ba này có thể thuyết phục bên xác thực rằng một chữ ký có hiệu lực thực sự đã được áp dụng cho một thông điệp “sai".

Ba lược đồ chữ ký số được quy định trong tiêu chuẩn này cho phép một định danh hàm băm chứa trong giá trị đại diện của thông điệp F (xem 8.2.2). Nếu định danh hàm băm đó chứa trong F theo cách này thì kẻ tấn công không thể sử dụng lại một cách gian lận một chữ ký đã tồn tại với cùng M1 và khác M2, thậm chí ngay cả khi bên xác thực có thể bị thuyết phục chấp nhận các chữ ký đã được tạo ra bằng một hàm băm đủ yếu mà tiền ảnh có thể được tìm thấy. Điều này được cho là có thể giải quyết được vấn đề đã được đề cập đến trong đoạn trước.

Tuy nhiên, như đã thảo luận chi tiết trong [16], ngay cả khi một định danh hàm băm được bao gồm trong giá trị đại diện của thông điệp, kẻ tấn công khác đều có thể xảy ra nếu bên xác thực có thể bị thuyết phục bằng một hàm băm “yếu” đã được sử dụng. Từ yếu ở đây có nghĩa là hàm băm thiếu tính chất một chiều, có nghĩa là với một hàm băm cho trước có thể tính toán để tìm ra xâu đầu vào ánh xạ đến mã băm này bởi hàm băm. (CHÚ THÍCH rằng chính xác thì kiểu yếu này trước tiên phải được thúc đẩy bởi sự bao gồm của một định danh hàm băm trong giá trị đại diện của thông điệp.

Các tấn công được mô tả trong [16] hoạt động theo cách thức chung sau đây. Kẻ tấn công tạo ra “chữ ký” ngẫu nhiên và đối với mỗi “chữ ký” này áp dụng một hàm xác thực công khai của thực thể mà chữ ký của nó muốn giả mạo, và thu được “giá trị đại diện của thông điệp đã được khôi phục” (đây là bước “mở chữ ký). Phần tiếp theo của tấn công sẽ rất khác nhau tùy thuộc vào định dạng của giá trị đại diện của thông điệp, nhưng bắt buộc kẻ tấn công phải xem xét xem giá trị đại diện của thông điệp đã được khôi phục có định dạng đúng tương ứng với chữ ký thật và rằng định danh hàm băm trong xâu này là định danh tương ứng với một hàm băm yếu hay không. Khả năng xảy ra việc này là rất khác nhau, nhưng có thể lớn đến 2-16 (và do đó kẻ tấn công không cần phải thử quá nhiều “chữ ký ngẫu nhiên” trước khi tìm được một chữ ký có các thuộc tính mong muốn).

Với “chữ ký” này, kẻ tấn công có thể nhúng mã băm vào trong giá trị đại diện của thông điệp đã được khôi phục, và lợi dụng thực tế là hàm băm yếu để phát hiện ra một phần thông điệp không thể khôi phục được, mà khi kết hợp với phần có thể khôi phục được có trong giá trị đại diện của thông điệp, băm để có được mã băm mong muốn. Như thế, kẻ tấn công có thể giả mạo một chữ ký mới với một M1 “ngẫu nhiên”. Do đó, kể cả khi có định danh hàm băm trong giá trị đại diện của thông điệp cũng không tránh được việc đòi hỏi người xác thực phải có một phương thức độc lập an toàn để biết được hàm băm nào được sử dụng để xác thực chữ ký.

Thảo luận này cũng liên quan đến việc lựa chọn độ dài có thể khôi phục được c* cho lược đồ chữ ký 2 và 3. Như đã được mô tả trong 7.2.2, c* sẽ được lựa chọn thỏa mãn điều kiện c*c, năng lực của lược đồ chữ ký. c* thường được mong đợi là gần bằng c để tối đa độ dài phần có thể khôi phục được của thông điệp, và do đó tối thiểu độ dài phần không thể khôi phục được của thông điệp, c* được khuyến nghị lựa chọn là một số bất kỳ nhỏ hơn c (ví dụ như c-16, c-24 hoặc c-80, tùy theo độ khó mong muốn), để làm cho các cuộc tấn công theo hình thức đã được mô tả ở trên trở nên khó khăn hơn.

 

Phụ lục E

(tham khảo)

Ví dụ

Phụ lục này bao gồm tổng cộng 12 ví dụ về tạo chữ ký và xác thực chữ ký làm việc theo ba lược đồ đã được quy định trong tiêu chuẩn này, cùng với hai ví dụ về tạo khóa.

Phụ lục E.1 bao gồm các ví dụ với số mũ công khai bằng 3.

- E. 1.1 bao gồm một ví dụ về tạo khóa.

- E.1.2 bao gồm ba ví dụ về tạo và xác thực chữ ký, tất cả đều là khôi phục toàn bộ thông điệp. Đối với mỗi lược đồ được quy định trong tiêu chuẩn này có một ví dụ tương ứng.

- E.1.3 bao gồm ba ví dụ về tạo và xác thực chữ ký, tất cả đều là khôi phục một phần thông điệp. Đối với mỗi lược đồ được quy định trong tiêu chuẩn này có một ví dụ tương ứng.

Phụ lục E.2 bao gồm các ví dụ với số mũ công khai bằng 2.

- E.2.1 bao gồm một ví dụ về tạo khóa.

- E.2.2 bao gồm ba ví dụ về tạo và xác thực chữ ký, tất cả đều là khôi phục toàn bộ thông điệp. Đối với mỗi lược đồ được quy định trong tiêu chuẩn này có một ví dụ tương ứng.

- E.2.3 bao gồm ba ví dụ về tạo và xác thực chữ ký, tất cả đều là khôi phục một phần thông điệp. Đối với mỗi lược đồ được quy định trong tiêu chuẩn này có một ví dụ tương ứng

E.1  Các ví dụ với số mũ công khai bằng 3

Phụ lục E.1 bao gồm các ví dụ với khóa công khai có số mũ bằng 3.

E.1.1  Ví dụ v quá trình tạo khóa

Khóa trong ví dụ có mô-đun k = 1024 bit với số mũ công khai v = 3.

Số đồng dư công khai n là kết quả của các thửa số nguyên tố bí mật pq. Độ dài của nó là 1024 bit.

Số mũ của chữ ký bí mật s bằng nghịch đảo phép nhân của v mod lcm(p - 1, q - 1).

E.1.2  Các ví dụ về khôi phục toàn bộ

Ở đây trình bày ba ví dụ về tạo và xác thực chữ ký, mỗi ví dụ tương ứng với một trong ba lược đồ.

E.1.2.1  Ví dụ về lược đồ chữ ký 1

Ví dụ này sử dụng hàm băm chuyên dụng 3 trong ISO/IEC 10118-3 (còn được biết đến với tên gọi là SHA-1).

E.1.2.1.1  Quá trình ký

Thông điệp được ký là một xâu bao gồm 64 ký tự mã ASCII như sau.

Trong hệ thập lục phân, thông điệp M là một xâu có độ dài là 64 xâu bộ tám, nghĩa là 512 bit như sau.

160 bit mã băm được tính toán bằng cách áp dụng SHA-1 cho 512 bit của M.

Định danh trong trường trailer xác định hàm băm được sử dụng; ISO/IEC 10118-3 thiết lập định danh cho hàm băm chuyên dụng 3 giá trị “33”. Do đó, trường trailer T bao gồm 16 bit sau đây.

T = 32CC

Thông điệp là đủ ngắn để khôi phục toàn bộ. 1024 bit của xâu trung gian Si kết quả của việc nối hai bit của tiêu đề bằng “01”, bit dữ liệu thêm được thiết lập bằng ‘0’, 332 (= 1024 - 512 - 160 - 16 - 4) bit đệm bằng ‘0’, bit bao quanh bằng 1, 512 bit của M1 (=M), 160 bit của H và 16 bit của trường trailer T. Xâu Sr có thể khôi phục kết quả của việc thay thế 82 xâu bộ bốn đệm bằng '0’ bằng 82 xâu bộ bốn đệm bằng ‘B’ và tương tự đối với xâu bộ bốn bao quanh bằng ‘1’ thay thế bằng ‘A’.

Số nguyên có thể khôi phục fr là số nguyên dương không dấu biểu diễn Sr. fr tăng theo lũy thừa bậc s theo mô-đun n. Kết quả được biểu diễn bởi một số nguyên dương không dấu tạm thời t.

Vì kết quả trên lớn hơn n/2, chữ ký Σ = n - t.

Thông điệp đã ký có 128 xâu bộ tám chỉ bao gồm chữ ký vì M2 là rỗng.

E.1.2.1.2  Quá trình xác thực

 

Phụ lục B

(tham khảo)

Các ví dụ số

Phụ lục này cung cấp các ví dụ số cho PRESENT, CLEFIA và LEA với mỗi độ dài khóa ký hiệu ở hệ thập lục phân.

B.1  Véc tơ kiểm tra PRESENT

B.1.1  PRESENT-80

B.1.2  PRESENT-128

B.2  Các ví dụ số CLEFIA

B.2.1  CLEFIA với khóa 128 bit

Số nguyên có thể khôi phục fr là số nguyên dương không dấu biểu diễn Sr. fr tăng theo lũy thừa bậc s theo mô-đun n. Kết quả được biểu diễn bởi một số nguyên dương không dấu tạm thời t.

Xâu nhị phân biểu diễn số nguyên t dưới dạng một số nguyên dương không dấu là chữ ký được tạo ra bởi hàm tạo chữ ký thay thế (xem Phụ lục A.6) Σ' = t.

Vì kết quả trên lớn hơn n/2, chữ ký Σ = n - t.

Thông điệp đã ký có 128 xâu bộ tám chỉ bao gồm chữ ký vì M2 là rỗng.

E.1.2.3.2  Quá trình xác thực

Chữ ký Σ là một xâu nhị phân đại diện một số nguyên dương không dấu, nhỏ hơn n/2. Số nguyên này tăng theo lũy thừa bậc 3 mô-đun n, do đó thu được số nguyên fs.

fs là đồng dư với (n - 12) mô-đun 16, số nguyên được khôi phục là f'r = n - fs.

fs được biểu diễn dưới dạng một số nguyên dương không dấu bởi xâu đã được khôi phục S'r. Hàm tạo mặt nạ MGF1 áp dụng cho 856 (= 1024 - 160 - 8) bit bên trái nhất của S'r, từ đó thu được xâu được khôi phục trung gian S'i.

S'i biểu diễn xâu được khôi phục trung gian như sau.

- Bit bên trái nhất của S'i được thiết lập bằng ‘0’ vì d = 1 (d = (1 - 1024)mod8). 106 xâu bộ tám bên trái nhất của xâu nhị phân còn lại bằng ‘0’; nó được theo sau bởi xâu bộ tám bao quanh “01”; 107 xâu bộ tám đó được chuyển sang bên trái của S'i.

- Xâu bộ tám bên phải nhất của S'i bằng “BC”; xâu bộ tám đó cũng được chuyển sang bên phải của S'i.

Vì trailer bằng “BC”, hàm băm được sử dụng đã được biết đến hoàn toàn; hàm băm chuyên dụng 3 trong ví dụ này.

Xâu còn lại 160 bit được giả định là mã băm H’ vì không còn thừa dữ liệu.

Thông điệp đã được khôi phục M’ được giả định là rỗng và do đó, khôi phục là toàn bộ. Mã băm khác H" được tính bằng cách áp dụng SHA-1 cho xâu nhị phân có độ dài 224 (=64+160), kết quả của việc ghép thêm 64 bit của độ dài thông điệp đã được khôi phục C' và 160 bit của mã băm của phần thông điệp không thể khôi phục được (phần này bằng rỗng) h(M2*). H" = h(C'||h(M2)).

Vì hai mã băm H’H” là giống nhau, chữ ký Σ được chấp nhận.

E.1.3  Các ví dụ về khôi phục một phần

Ở đây trình bày ba ví dụ về tạo và xác thực chữ ký, mỗi ví dụ tương ứng với một trong ba lược đồ.

E.1.3.1  Ví dụ về lược đồ chữ ký 1

Ví dụ này sử dụng hàm băm chuyên dụng 1 trong ISO/IEC 10118-3 (còn được biết đến với tên gọi là RIPEMD-160).

E.1.3.1.1  Quá trình ký

Ví dụ này mô tả chữ ký của một thông điệp 132 xâu bộ tám, có nghĩa là 1056 bit.

160 bit mã băm được tính toán bằng cách áp dụng hàm băm chuyên dụng 1 cho 1056 bit của M.

Hàm băm được sử dụng đã được biết đến hoàn toàn. Do đó, trường trailer T bao gồm 8 bit sau đây.

T = BC

Thông điệp là quá dài để có thể được khôi phục hoàn toàn bởi quá trình xác thực. Do đó, nó được chia làm hai phần.

- M1 bao gồm 848 bit bên trái nhất.

- M2 bao gồm 208 bit còn lại, có nghĩa là 26 xâu bộ tám.

1024 bit của xâu trung gian Si kết quả của việc ghép thêm hai bit tiêu đề bằng "01”, bit dữ liệu thêm bằng ‘1’, bốn (= 1024 - 848 - 160 - 8 - 4) bit đệm bằng ‘0’, bit bao quanh bằng 1, 848 bit của M1, 160 bit của H và 8 bit của trường trailer T. Xâu có thể khôi phục Sr kết quả của việc xâu bộ bốn bao quanh bằng 1 được thay thế bằng A’.

Số nguyên có thể khôi phục fr là số nguyên dương không dấu biểu diễn Sr. fr tăng theo lũy thừa bậc s theo mô-đun n. Kết quả được biểu diễn bởi một số nguyên dương không dấu tạm thời t.

Vì kết quả trên lớn hơn n/2, chữ ký Σ = n - t.

Thông điệp đã ký có 128 xâu bộ tám chữ ký Σ cùng với 26 xâu bộ tám của thông điệp không thể khôi phục được M2, có nghĩa là chỉ nhiều hơn 22 xâu bộ tám so với thông điệp M.

E.1.3.1.2  Quá trình xác thực

Chữ ký Σ là một xâu nhị phân đại diện một số nguyên dương không dấu, nhỏ hơn n/2. Số nguyên này tăng theo lũy thừa bậc 3 mô-đun n, do đó thu được số nguyên fs.

fs là đồng dư với (n - 12) mô-đun 16, nó được thay thế bởi phần dư của nó với n, có nghĩa là số nguyên được khôi phục là f'r = n - fs.

f'r được biểu diễn dưới dạng một số nguyên dương không dấu bởi xâu đã được khôi phục S'r.

- Xâu bộ tám bên trái nhất của S'r bằng “6A”; nó bao gồm tiêu đề bằng “01”, bit dữ liệu thêm bằng ‘1’ (khôi phục một phần), một bit đệm bằng ‘0’ và một xâu bộ bốn đệm bằng ‘A’; xâu bộ tám này được chuyển sang bên trái của S'r.

- Xâu bộ tám bên phải nhất của S'r bằng "BC"; xâu bộ tám đó cũng được chuyển sang bên phải của S'r.

Vì trailer bằng “BC; hàm băm được sử dụng đã được biết đến hoàn toàn, hàm băm chuyên dụng 1 trong ví dụ này.

Xâu còn lại 1008 bit được chia làm hai phần.

- M1* bao gồm 848 bit bên trái nhất.

- H' bao gồm 160 bit bên phải nhất.

Vì khôi phục là một phần, thông điệp đã được khôi phục M* bao gồm M1*M2*, phần có thể và không thể khôi phục được.

Mã băm còn lại H" được tính bằng các áp dụng hàm băm chuyên dụng 1 cho M*.

Vì hai mã băm H'H" là giống nhau, chữ ký Σ được chấp nhận.

E.1.3.2  Ví dụ về lược đồ chữ ký 2

Ví dụ này sử dụng hàm băm chuyên dụng 3 trong ISO/IEC 10118-3 (còn được biết đến với tên gọi là SHA-1).

E.1.3.2.1  Quá trình ký

Thông điệp để ký là xâu 112 ký tự mã ASCII sau đây.

Trong hệ thập lục phân, thông điệp M là xâu bộ tám có độ dài 112 xâu bộ tám, có nghĩa là 896 bit sau đây.

160 bit của salt S được tạo ra.

B.2.3  CLEFIA với khóa 256 bit

B.3  Các ví dụ số LEA

B.3.1  LEA-128

B.3.2  LEA-192

B.3.3  LEA-256

 

Phụ lục C

(tham khảo)

Bảng đặc tính

Phụ lục này tổng hợp các thuộc tính hạng nhẹ của các mã khối mô tả trong tiêu chuẩn này. Trong phụ lục C.1 TCVN 12854-1 đưa ra các chỉ số phần cứng cho mã khối hạng nhẹ. Sử dụng các chỉ số, các thuộc tính hạng nhẹ của PRESENT và CLEFIA được tổng hợp trong bảng C.1.

Bảng C.1 - Bảng đặc tính

 

Tên thuật toán

 

PRESENT [10][11][12]

CLEFIA [7][14]

Kích thước khóa [bit]

80

128

80

128

128

128

128

192

265

Kích thước khối [bit]

64

64

64

64

128

128

128

128

128

Tiết din chipa [GE]

1075

1391

1570

1884

2488

4950

5979

8536

8482

Chu kỳb [CLK]

547

559

32

32

328

36

18

22

6

Số bit trên chu kỳ [bit/CLK]

0,12

0,11

2

2

0,39

3,56

7,11

5,82

4,92

Năng lưngc [GE]

1075

1391

1570

1884

2488

4950

5979

8536

8482

Năng lượngd [GE*CLK]

588025

777569

50240

60288

816064

178200

107622

187792

220532

Năng lượng trên mỗi bite [GE*CLK/bit]

9188

12150

785

942

6367

1392

841

1467

1732

Công nghệ [µm]

0,18

0,18

0,13

0,09

0,09

0,09

0,09

Hỗ trợ giải mã

KHÔNG

KHÔNG

KHÔNG

Đặc tính

Diện tích nhỏ nhất

Diện tích nhỏ và năng lượng thấp (dựa vào vòng)

Diện tích nhỏ nhất

Diện tích nhỏ (dựa vào vòng)

Năng lượng thấp và hiệu quả cao (dựa vào vòng)

a Tiết diện chip được đo bởi các cổng tương đương (GE). Các con số được đưa ra đã thu được bằng cách sử dụng một công cụ tổng hợp tự động thiết kế điện tử tự động

b Số chu kỳ xung nhịp [CLK] để một lần thực thi thuật toán tạo ra đầu ra. Ta thu được bởi kiến trúc cài đặt phần cứng.

c Với giả thiết các ứng dụng phần cứng hạng nhẹ có xung nhịp ở tần suất thấp vài trăm kHz, năng lượng tiêu thụ có thể được ước lượng bằng cách sử dụng phép đo như với diệc tích chip [6].

d Năng lượng tiêu thụ ký hiệu năng lượng tiêu thụ trên một khoảng thời gian cụ thể. Ta có thể được ước tính băng việc nhân năng lượng tiêu thụ với số chu kỳ đếm được.

e Ta có thể thu được bằng cách chia năng lượng cho kích thước khối.

Bảng C.2 đến C.4 tóm tắt hiệu năng dữ liệu đối với LEA và chỉ ra hiệu năng của LEA trên vi điều khiển Mtmega128 8 bit, vi điều khiển MSP430 16 bit, và vi điều khiển Cortex-M3 32 bit. Tốc độ được đo trên chu kỳ mỗi byte, vì vậy các số nhỏ hơn tương ứng với tốc độ cao hơn. Chú ý rằng khối/độ dài khóa theo bit của LEA-128, LEA-192, và LEA-256 là 128/128, 128/192, và 128/256 bit tương ứng.

Bảng C.2: Triển khai tốc độ cao của LEA trên Atmega128

Tên thuật toán

LEA-128

LEA-192

LEA-256

Kích cỡ mã [byte]

862

934

934

Kích cỡ RAM [byte]

433

761

865

Chu kỳ mã hóa [CLK]

2689

3589

4081

Tốc độ [CLK/byte]

168,06

224,31

255,06

Bảng C.3: Triển khai tốc độ cao của LEA trên MSP430

Tên thuật toán

LEA-128

LEA-192

LEA-256

Kích cỡ mã [byte]

650

666

664

Kích cỡ RAM [byte]

440

768

872

Chu kỳ mã hóa [CLK]

2056

2435

2765

Tốc độ [CLK/byte]

128,50

152,19

172,81

Bảng C.4: Triển khai tốc độ cao của LEA trên Cortex-M3

Tên thuật toán

LEA-128

LEA-192

LEA-256

Kích cỡ mã [byte]

808

930

1058

Kích cỡ RAM [byte]

472

776

880

Chu kỳ mã hóa [CLK]

424

565

644

Tốc độ [CLK/byte]

26,50

35,31

40,25

 

Phụ lục D

(tham khảo)

Giới hạn của mã khối với một khóa đơn

Phụ lục này đưa ra cận trên về các phép mã hóa mã khối nên thực hiện với một khóa đơn. Độ an toàn của hầu hết các chế động mã khối giảm xuống khi số lần mã hóa tiến đến 2n/2 [8][9][12], với n là kích thước khối theo bit. Thông tin đủ để có thể phân biệt được đầu ra của mã khối với một hàm ngẫu nhiên (sau 2n/2 lần mã hóa. Ví dụ, với n = 64, mã hóa 264/2 = 232 khối, là đủ để phơi bày mã khối trước các tấn công có thể khi sử dụng trong một vài chế độ hoạt động của mã khối (như CBC hoặc chế độ bộ đếm). Vì vậy, với các mã khối n-bit, việc mã hóa lớn hơn 2n/2 khối sử dụng một khóa đơn với các chế độ hoạt động cụ thể phải được ngăn chặn.

Cảnh báo này không chỉ áp dụng cho các mã khối hạng nhẹ được quy định trong tiêu chuẩn này mà còn cho tất cả các loại mã khối bao gồm cả các mã khối được quy định trong TCVN 11367-3 (ISO/IEC 18033-3). Để biết thêm thông tin, xem tài liệu chuẩn 12 (SD 12) của ISO/IEC JTC 1/SC 27.

 

Thư mục tài liệu tham khảo

[1] TCVN 11495-1 (ISO/IEC 9797-1), Công nghệ thông tin - Các kỹ thuật an toàn - Mã xác thực thông điệp (MAC) - Phần 1: Cơ chế sử dụng mã khối

[2] TCVN 11817-1, Công nghệ thông tin - Các kỹ thuật an toàn - Xác thực thực thể - Phần 1: Tổng quan

[3] TCVN 11816 (ISO/IEC 10116), Công nghệ thông tin - Các kỹ thuật an toàn - Chế độ hoạt động cho mã khối n-bit.

[4] TCVN 7817-1 (ISO/IEC 11770)-1, Công nghệ thông tin - Các kỹ thuật an toàn - Quản lý khóa - Phần 1: Khung tổng quát

[5] TCVN 11367-1 (ISO/IEC 18033-1 Công nghệ thông tin - Các kỹ thuật an toàn - Thuật toán mật mã - Phần 1: Tổng quan

[6] TCVN 12854-1 (ISO/IEC 29192-1), Công nghệ thông tin - Các kỹ thuật an toàn - Mật mã hạng nhẹ - Phần 1: Tổng quan

[7] Akishita T., Hiwatari H., Compact Hardware Implementations of the 128-bit Blockcipher CLEFIA. Available at <http://www.sony.net/clefia>, 2011

[8] Bellare M., Desai A., Jokipii E., Rogaway P., A Concrete Treatment of Symmetric Encryption: Analysis of the DES Modes of Operation. In Proceedings of the 38th Symposium on Foundations of Computer Science, pp. 394-405, IEEE, 1997

[9] Bellare M., Kilian J., Rogaway P., The Security of the cipher block chaining message authentication code. Journal of Computer and System Sciences (JCSS), volume 61, no 3, pp. 362-399, 2000

[10] Bogdanov A., Knudsen L, Leander G., Paar C., Poschmann A., Robshaw M. et al. , PRESENT - An Ultra-Lightweight Block Cipher. In Proceedings of Workshop on Cryptographic Hardware and Embedded Systems - CHES 2007, Lecture Notes in Computer Science volume 4727, pp. 450-466, Springer-Verlag, 2007

[11] Hong D., Lee J.K., Kim D.C., Kwon D., Ryu G.H., Lee D., LEA: A 128-bit Block Cipher for Fast Encryption on Common Processors. In Proceedings of World Conference on Information Security Applications - WISA2013, Lecture Notes in Computer Science volume 8267, pp. 3-27, Springer-Verlag, 2014

[12] Poschmann A., Lightweight Cryptography - Cryptographic Engineering for a Pervasive World. Europäischer Universitätsverlag, Ph.D. thesis, 2009

[13] Rogaway P., Efficient Instantiations of Tweakable Block Ciphers and Refinements of Modes OCB and PMAC. Available at <http://seclab.cs.ucdavis.edu/papers/offsets.pdf>

[14] Rolfes C., Poschmann A., Leander G., Paar C., Ultra-Lightweight Implementations for Smart Devices - Security for 1000 Gate Equivalents. 8th Smart Card Research and Advanced Application Conference, CARDIS 2008, Lecture Notes in Computer Science volume 5189, pp. 89-103, Springer-Verlag, 2008

[15] Shirai T., Shibutani K., Akishita T., Moriai S., Iwata T., The 128-bit Blockcipher CLEFIA. In Proceedings of Workshop on Fast Software Encryption 2007 - FSE 2007, Lecture Notes in Computer Science volume 4593, pp. 181-195, Springer-Verlag, 2007

[16] Standing Document 12 (SD12) of ISO/IEC JTC 1/SC 27. Available at http://www.itc1sc27.din.de/sbe/SD12

 

MỤC LỤC

Lời nói đầu

1  Phạm vi áp dụng

2  Tài liệu viện dẫn

3  Thuật ngữ và định nghĩa

4  Các ký tự

5  Mã khối hạng nhẹ với kích thước khối 64 bit

5.2  PRESENT

6  Mã khối hạng nhẹ với kích thước khối 128 bit

6.2  CLEFIA

Phụ lục A (quy định) Các định danh đối tượng

Phụ lục B (tham khảo) Các véc tơ kiểm tra

Phụ lục C (tham khảo) Bảng đặc tính

Phụ lục D (tham khảo) Giới hạn của mã khối với một khóa đơn

Thư mục tài liệu tham khảo

Click Tải về để xem toàn văn Tiêu chuẩn Việt Nam nói trên.

Để được giải đáp thắc mắc, vui lòng gọi

19006192

Theo dõi LuatVietnam trên YouTube

TẠI ĐÂY

văn bản mới nhất

loading
×
Vui lòng đợi