24/05/2018, 23:59

Các mã đối xứng đương thời

Mã DES nhiều lần - Rõ ràng DES cần được thay thế, vì o Các tấn công về mặt lý thuyết có thể bẻ gãy nó o Tấn công khoá toàn diện đã được trình diễn - AES là mã mới thay thế - Trước nó ...

Mã DES nhiều lần

- Rõ ràng DES cần được thay thế, vì

o Các tấn công về mặt lý thuyết có thể bẻ gãy nó

o Tấn công khoá toàn diện đã được trình diễn

- AES là mã mới thay thế

- Trước nó người ta đã sử dụng lặp DES, tức là sử dụng nhiều lần cùng một thuật toán, nhưng có thể với khóa khác nhau.

- Triple DES là dạng đã được chọn, ở đây lặp DES 3 lần.

- Tại sao lại là Triple DES

o Mà không phải là lặp hai lần Double DES: khi lặp hai lần không hoàn toàn là trùng với 1 lần DES nào đó nhưng cũng có thể.

o Có thể dùng 2 lần DES trên một block với hai khoá K1 và K2 : C = EK2(EK1(P))

o Vấn đề là có thể rút gọn về một bước không.

o Double DES gặp tấn công ở mức trung gian

Gặp nói chung khi sử dụng một mã nào đó 2 lần như trên

  • Vì X = EK1[P] = DK2[C]
  • Tấn công bằng cách mã P với mọi khoá và lưu lại.
  • Và giải mã C với các khoá và sánh trùng nhau để tìm X.
  • Có thể chỉ ra rằng cần O(256) bước dò tìm.
  • Triple DES với 2 khoá

o Để tránh tấn công ở mức trung gian, cần sử dụng 3 mã, vậy nói chung có thể dùng 3 khoá khác nhau.

o Nhưng để đơn giản hơn có thể sử dụng 2 khoá theo trình tự:E–D-E, tức là mã, giải mã, rồi lại mã.

  • C = EK1[DK2[EK1[P]]]
  • Về mặt an toàn mã và giải mã tương đương nhau
  • Nếu K1 = K2 thì tương đương làm việc với một lần DES
  • Chuẩn hoá trong ANSI X9.17 & ISO8732
  • Chưa thấy tấn công thực tế.
  • Triple DES với 3 khoá

o Mặc dù chưa có tấn công thực tế, nhưng Triple DES với 2 khoá có một số chỉ định để tránh rơi vào một số trường hợp đặc biệt.

o Cần phải sử dụng 3 lần DES với 3 khoá để tránh điều đó C = EK3[DK2[EK1[P]]]

o Được chấp nhận bởi một số ứng dụng trên Internet: PGP, S/MIME

  • Mã đối xứng được thiết kế bởi Shneier khoảng 1993-1994.
  • Mã có các đặc trưng sau:

o Cài đặt nhanh trên CPU 32 bit

o Dùng ít bộ nhớ.

o Cấu trúc đơn giản, dễ cài đặt và phân tích.

o Độ an toàn thay đổi theo độ dài của khoá

  • Được cài đặt trên nhiều sản phẩm khác nhau
  • Lược đồ khoá con của Blowfish

o Dùng khoá có độ dài bit linh hoạt từ 32 đến 448.

o Sử dụng khoá để sinh

  • 18 khoá con 32 bit lưu trữ trong mảng K: KJ
  • Bốn S box cỡ 8 x 32 lưu trong Si, j

o Lược đồ khoá gồm

Khởi tạo P mảng và sau đó là 4 hộp S box

  • XOR P mảng với bit khoá (sử dụng lại nếu cần)
  • Lặp lại việc mã dữ liệu sử dụng P & S hiện thời và thay cặp thành công P sau đó S.
  • Đòi hỏi 512 khoá, nên chậm khi lấy khoá con mới

o Mã Blowfish

  • Sử dụng 2 phép cơ bản cộng và XOR
  • Dữ liệu được chia thành 2 nửa mỗi nửa 32 bit L0 & R0

for i = 1 to 16 do

Ri = Li-1 XOR Pi;

Li = F[Ri] XOR Ri-1;

L17 = R16 XOR P18;

R17 = L16 XOR i17;

trong đó

F[a,b,c,d] = ((S1,a + S2,b) XOR S3,c) + S4,a

o Bàn luận:

  • Khoá con và S box phụ thuộc vào khoá sinh ra, sử dụng vào chính mã nên việc phân tích rất khó
  • Thay đổi hai nửa sau mỗi vòng làm tăng độ an toàn
  • Khoá được cấp đủ lớn để việc tìm duyệt khoá là không thực tế, đặc biệt khi tập trung vào lược đồ tạo khoá con.

RC4 là mã đăng ký bản quyền của RSADSI, được thiết kế bởi Ronald Rivest. RC4 đơn giản, nhưng hiệu quả, có nhiều cỡ khoá và là mã bit dòng.

Mã được sử dụng rộng rãi (Web SSL/TLS, không dây WEP). Khoá thực hiện hoán vị ngẫu nhiên cả 8 giá trị bit. Sử dụng hoán vị đó để khuấy thông tin đầu vào được xử lý từng byte.

Sinh khoá RC4

o Bắt đầu từ mảng S với biên độ: 0..255

o Sử dụng khoá để xáo trộn đều thực sự.

o S tạo trạng thái trong của mã.

Mã RC4

o Mã tiếp tục trộn các giá trị của mảng.

o Tổng của các cặp trộn chọn giá trị khoá dòng từ hoán vị

o XOR S[t] với byte tiếp theo của bản tin để mã/giải mã

i = j = 0

for each message byte Mi

i=(i+1) (mod 256)

j= (j+ S[i]) (mod 256)

swap(S[i]+S[j])

t= (S[i]+S[j])(mod 256)

Ci= Mi XOR S[t]

Tổng quan RC4

An toàn RC4

o Đảm bảo an toàn chống các tấn công

o Có một số thám mã, nhưng không thực tế

o Kết quả rất phi tuyến

o Vì RC4 là mã dòng nên không được sử dụng lại khoá.

o Có liên quan đến WEP, nhưng tùy thuộc quản lý khoá hơn là bản thân RC4.

RC5 cũng là mã đăng ký bản quyền của RSADSI, được thiết kế bởi Ronald Rivest và được sử dụng trong nhiều sản phẩm của RSADSI. RC5 có nhiều cỡ khoá và dữ liệu khác nhau và đặc biệt không có vòng lặp. Thiết kế rất đơn giản và rõ ràng. RC5 được cài đặt dễ dàng trên nhiều CPU và còn được đánh giá là an toàn.

  • Các mã RC5

o RC5 là một họ các mã với bat ham số RC5-w/r/b

- w là kích thước của từ (16/32/64), sô bit data = 2w

- r là số vòng (0..255)

- b là số byte của khoá (0..255)

o Phiên bản chuẩn là RC5-32/12/16

- Tức là 32 bit word, mã khối 64 bit dữ liệu

- Sử dụng 12 vòng

- Với 16 byte (128 bit) khoá

o Mở rộng khoá RC5

- RC5 sử dụng 2r + 2 từ khoá con (w-bit)

- Các khoá con lưu trong mảng R[i], i = 0,1,.., t-1

- Sau đó lược đồ sinh khoá gồm

- Khởi tạo S là giá trị giả ngẫu nhiên cố định, dựa trên hằng sô e và phi.

- Khoá byte được sao vào mảng c-word L

- Phép trộn sẽ kết hợp L và S thành mảng S cuối cùng

  • Mã RC5

o Tách đầu vào thành 2 nửa A và B

L0 = A + S[0]; R0 = B + S[1];

for i = 1 to r do

Li = ((Li-1 XOR Ri-1) <<< Ri-1) + S[2 x i];

Ri = ((Ri-1 XOR Li) <<< Li) + S[2 x i + 1];

o Mỗi vòng giống như 1 vòng 2 DES

o Quay là nguồn phi tuyến chính

o Cần số vòng chấp nhận được (12-16)

  • Các chế độ mã RC5

o RFC2040 xác định 4 chế độ của RC5

  • Mã khối RC5, tức là chế độ ECB
  • RC5-CBC
  • RC5-CBC-PAD là chế độ với bộ đệm bằng các byte có giá trị bằng số byte đệm.
  • RC5-CTS, một kiểu của CBC, cùng kích thước với bản tin gốc.

Các đặc trưng mã khối

Các đặc trưng trong mã khối hiện đại là

o Độ dài khoá / kích thước khối / số vòng có thể thay đổi

o Các phép toán trộn, quay phụ thuộc khoá hoặc dữ liệu.

o S box phụ thuộc khoá

o Tạo khoá con phức tạp hơn

o Phép toán với đầy đủ dữ liệu ở mỗi vòng.

o Biến thiên hàm phi tuyến.

Các đặc trưng mã dòng

o Xử lý mẩu tin lần lượt theo từng bit.

o Thông thường có khoá dòng (giả) ngẫu nhiên.

o Kết hợp XOR với bản rõ theo từng bit

o Ngẫu nhiên với khoá dòng sẽ xoá bỏ hoàn toàn các phân tích thống kê của mẩu tin Ci = Mi XOR StreamKeyi

o Rất đơn giản

o Nhưng khoá không được sử dụng lại

Các tính chất của mã dòng trong khi thiết kế

a. Sử dụng lâu không bị lặp

b. Ngẫu nhiên thống kê

c. Phụ thuộc khoá đủ lớn

d. Độ phức tạp tuyến tính lớn

e. Rối loạn

f. Khuếch tán

g. Sử dụng hàm Boole phi tuyến bậc cao

0