1. Trang chủ
  2. » Tất cả

Tìm hiểu về mật mã dòng

18 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm hiểu về Mật Mã Dòng
Trường học Học viện Công nghệ Bưu chính Viễn Thông
Chuyên ngành Công nghệ Thông Tin
Thể loại Báo cáo bài tập lớn
Năm xuất bản N/A
Thành phố Hà Nội
Định dạng
Số trang 18
Dung lượng 593,2 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Học viện Công nghệ Bưu chính Viễn Thông Khoa công nghệ thông tin 1 BÁO CÁO BÀI TẬP LỚN MÔN MẬT MÃ HỌC CƠ SỞ Đề tài Tìm hiểu về Mật Mã Dòng Mục Lục I Giới thiệu 2 1 Mô tả về khóa luồng 2 2 Mô tả Achter[.]

Trang 1

Học viện Công nghệ Bưu chính Viễn Thông

Khoa công nghệ thông tin 1

-BÁO CÁO BÀI TẬP LỚN

MÔN: MẬT MÃ HỌC CƠ SỞ

Đề tài: Tìm hiểu về Mật Mã Dòng

Trang 2

Mục Lục

I Giới thiệu 2

1 Mô tả về khóa luồng 2

2 Mô tả Achterbahn 2

II Mô tả chi tiết về keystream generation 4

1 The keystream generation 4

2 The Boolean combining function 6

3 The feedback shift registers 7

4 The linear feedforward funtions 9

III The key-loading algorithm 11

IV Vấn đề bảo mật 15

1 Về thiết kế 15

2 Độ phức tạp tuyến tính 15

3 Ý tưởng cải tiến 16

Trang 3

I Giới thiệu

1 Mô tả về khóa luồng

 Khoá luồng xử lý plaintext theo từng bits hoặc theo từng nhóm nhỏ (8 bits – 1byte)

 Stream cypher được xây dựng:

o Khoá đóng vai trò làm input cho bộ sinh khoá (keystream generator - KG)

o Output của KG được gọi là keystream

o Keystream được tổ hợp với plaintext để tạo thành ciphertext

 Thường áp dụng cho khoá luồng đối xứng

 Khóa gồm 2 loại:

o Đối xứng: đồng bộ (Achterbahn thuộc loại này) , không đồng

bộ, định kỳ

o Không đối xứng: Blum-Goldwasser probabilistic publickey encryption

 Khi thiết kế cần chú ý:

o Tính ngẫu nhiên của KG

o Kích thước khóa

2 Mô tả Achterbahn

Mật mã luồng Achterbahn là mật mã luồng tổ hợp nhị phân Trong một mật

mã luồng tổ hợp nhị phân, bản rõ được cung cấp dưới dạng chuỗi m0, m1

thuộc trường hữu hạn F2 Keystream là một chuỗi nhị phân giả ngẫu nhiên

z0, z1, … Người gửi mã hóa thông điệp bản rõ theo quy tắc c t=m t+z t với mọi

t ≥ 0 Bản mã c0, c1, … được máy thu giải mã bằng cách cộng từng bit luồng khóa z0, z1, …vào chuỗi bản mã đã nhận c0, c1, …

Người gửi và người nhận tạo ra luồng khóa z0, z1, … thông qua các bản sao giống hệt nhau của KG

Trang 4

Bộ tạo khoá luồng là một máy trạng thái hữu hạn có một số hữu hạn P ở các trạng thái bên trong khác nhau S0, S1, …, S P−1 Các hàm trạng thái tiếp theo Λ điều chỉnh tiến trình trạng thái có dạng S t +1= Λ (S t) với t = 0, 1, , P - 2 Như vậy trạng thái bên trong tại thời điểm t + 1 chỉ phụ thuộc vào trạng thái bên trong tại thời điểm t Trạng thái bên trong ban đầu S0 có nguồn gốc từ khóa bí mật K ∈ F2k và giá trị công khai ban đầu IV ∈ F2l Ví dụ độ dài khóa

k được yêu cầu là k = 80 (đối với ACHTERBAHN-80) Độ dài của vectơ giá trị ban đầu (vectơ IV) có thể giả sử bất kỳ số nguyên nào giá trị từ 0 đến

64 chia hết cho 8 (tại sao chia hết cho 8 thì là mã hoá 1 byte và đạt tốc độ cao triển khai trình tạo luồng khóa) Trong quá trình triển khai tốc độ cao, một byte của luồng khóa được tạo mỗi chu kỳ đồng hồ

Tuy nhiên, tất cả độ dài khóa từ 40 bit đến 80 bit và từ 40 bit đến 128 bit, tương ứng, có thể được sử dụng, với điều kiện là khóa độ dài chia hết cho tám ACHTERBAHN-80 đáp ứng các điểm mạnh IV 0, 8, 16 , , 72, 80 ACHTERBAHN-128 đáp ứng các độ mạnh IV 0, 8, 16 , , 120, 128 Các khóa ngắn hơn hoặc độ dài IV dẫn đến thời gian tải và đồng bộ hóa lại khóa ngắn hơn

Ví dụ: thay vì sử dụng ACHTERBAHN-128 với 128-bit khóa bí mật và giá trị ban đầu 128 bit, trong một số ứng dụng, nó có thể đủ để sử dụng khóa 96 bit và giá trị ban đầu 64 bit Điều này sẽ làm giảm quá trình đồng bộ hóa lại thời gian khoảng 30% hoặc cụ thể hơn là từ 337 chu kỳ đồng hồ đến 241 chu kỳ đồng hồ trong việc triển khai 1 bit và từ 43 chu kỳ đồng hồ đến 31 chu kỳ đồng hồ trong việc triển khai 8-bit của trình tạo luồng khóa

Hàm đầu ra λ của bộ tạo luồng khóa được tham số hóa bởi khóa K và vectơ giá trị ban đầu IV Ta có z t=λ K , IV(S t)với t = 0, 1, , P - 1 Đối với bất kỳ cặp cố định nào (K, IV) của khóa và vectơ IV, bit luồng khóa được tạo ra z t

tại thời điểm t chỉ phụ thuộc vào trạng thái bên trong S t tại thời điểm t Vì các bit của luồng khóa được tạo ra độc lập với bản rõ, mật mã luồng được

đề xuất thuộc về mật mã luồng đồng bộ.

II Mô tả chi tiết về keystream generation

1 The keystream generation

Trang 5

Bộ tạo luồng khóa của ACHTERBAHN-128 bao gồm mười ba thanh ghi dịch chuyển phản hồi phi tuyến cơ bản nhị phân có độ dài từ 21 đến 33 và một hàm kết hợp Boolean F : F_2^13 → F_2 Hàm F kết hợp các chuỗi đầu ra của mười ba thanh ghi dịch chuyển phản hồi để tạo ra luồng khóa ζ = (z0, z1, ) Trong suốt đề xuất này, chúng tôi sẽ

sử dụng các chữ cái viết hoa Aj, j = 0, 1 , , 12, để chỉ định FSR nguyên thủy và lạm dụng ký hiệu một chút, cũng để chỉ định các chức năng phản hồi của các thanh ghi dịch chuyển Chiều dài của thanh ghi dịch chuyển Aj được ký hiệu là Nj Chúng ta có:

N j = 21 + j với j = 0, 1 , , 12

Bất kỳ chuỗi đầu ra khác nào của thanh ghi dịch Aj sẽ được ký hiệu là

σj, 0 ≤ j ≤ 12 Đa thức nhỏ nhất, chu kỳ và độ phức tạp tuyến tính của thanh ghi dịch Aj (theo nghĩa của Định nghĩa 2) sẽ được ký hiệu là

mj , pj và Lj, tương ứng Chúng ta có:

p j = per(σ j ) = 2N j – 1 với j = 0, 1 , , 12

Hãy để trạng thái ban đầu của thanh ghi dịch chuyển Aj trước khi mã hóa được cung cấp bởi vectơ hàng:

r0 = (r0, r1, , r N j−1) ∈ F2N j 2 Vectơ hàng r0 có nguồn gốc từ khóa bí mật K và giá trị ban đầu IV sử dụng thuật toán nạp khóa được mô tả trong Phần 3.5 Thuật toán tải khóa đảm bảo rằng r0 sẽ không phải là vectơ 0 cho dù cặp (K, IV) nào được sử dụng để khởi tạo.

Trình tự đầu ra tiêu chuẩn của thanh ghi dịch chuyển Aj được định nghĩa là nhị phân dãy ρ = (r n)n=0 ∞ , được định nghĩa bởi:

r n +N

j = A j (r n, r n +1, , r n +N j−1) với n = 0, 1,

Tuy nhiên, chúng tôi sẽ không sử dụng trình tự ρ làm trình tự đầu vào cho Boolean kết hợp chức năng nhưng là một phiên bản dịch chuyển của ρ Chúng ta sẽ sử dụng trình tự σ j = TN j−16ρ, trong đó T là toán tử shift trên F2 Nói cách khác, chúng ta sử dụng dãy σ j = (S n(j))n=0 ∞ với cho n ≥ 0 là chuỗi đầu vào thứ j để hàm kết hợp Boolean và chúng ta sẽ gọi chuỗi này là chuỗi đầu

ra của thanh ghi thay đổi Aj

Cho 0 ≤ j ≤ 12, σj = (S n(j)

)n=0 ∞ , là trình tự đầu ra của thanh ghi dịch chuyển A j Sau đó luồng khóa ζ = (z n)n=0 ∞ , của ACHTERBAHN-128 được xác định bởi:

z n = F(sn(0), Sn(1 ) , , Sn(12) ) với n = 0, 1,

Thay vì (5), chúng ta sẽ sử dụng ký hiệu nhỏ gọn hơn trong phần tiếp theo:

ζ = F(σ0, σ1, , σ12).

Trang 6

Bộ tạo luồng khóa của ACHTERBAHN-80 bao gồm mười một chuyển dịch đăng ký A1 , , A11, cũng được sử dụng trong trình tạo luồng khóa của ACHTERBAHN-128 và có hàm kết hợp Boolean G: F211 → F2 là một chức năng con của của hàm kết hợp ACHTERBAHN-128:

G(x1, , x11) = F(0, x1, , x11, 0)

Nói cách khác, trình tạo luồng khóa của ACHTERBAHN-128 chứa trình tạo luồng khóa của ACHTERBAHN-80 như một cấu trúc con Thiết kế gợi nhớ đến một bộ búp bê Nga

ACHTERBAHN-128 tương thích xuống ACHTERBAHN-80: Nếu chúng tôi tải thanh ghi ca đầu tiên và thanh ghi dịch chuyển cuối cùng (tức là thanh ghi dịch chuyển A_0 và A_12) thành số 0 trạng thái và nếu chúng ta tải các thanh ghi shift còn lại với cùng một khóa và giá trị ban đầu là ACHTERBAHN-80, thì ACHTERBAHN-128 sẽ tạo ra cùng một luồng khóa dưới dạng ACHTERBAHN-80

z0 z1

Hình 3: Bộ tạo luồng khóa của ACHTERBAHN-128/8

NLFSR A 12

NLFSR A 11

NLFSR A 1O

NLFSR A 9

NLFSR A 8

NLFSR A 7

NLFSR A 6

NLFSR A 5

NLFSR A 4

NLFSR A 3

NLFSR A 2

NLFSR A 1

NLFSR A O

G F

Trang 7

Những gì chúng tôi đã mô tả cho đến nay là triển khai 1-bit của Achterbahn Trong triển khai này, 1 bit của luồng khóa được tạo ra trên mỗi chu kỳ đồng

hồ Một yêu cầu áp dụng cho các thanh ghi dịch chuyển A_0, A_1 , , A_12 là họ nên tạo điều kiện song song triển khai của trình tạo luồng khóa Trong Phần 6.1, chúng tôi sẽ mô tả 2-bit, triển khai 4 bit và 8 bit của

Achterbahn Trong triển khai 8 bit, 1 byte của luồng khóa được tạo trên mỗi chu kỳ đồng hồ Sau đó có thể cung cấp trong thời gian thực tất cả tám (= acht) luồng (= Bahnen) của một bus với các bit luồng khóa Tính năng này

là lý do chọn tên ACHTERBAHN Bản dịch đơn giản của tiếng Đức từ Achterbahn là tàu lượn siêu tốc

2 The Boolean combining function

The Boolean combining function R: F28→ F2 có bậc 3 và phi tuyến tính 64 Dạng chuẩn tắc của R là:

R(y1, y2, ,y8) = y1 + y2 + y3 + y4+ y5y7 + y6y7 + y6y8+ y5y6y7

+ y6y7y8 Ngoài ra, bằng cách sử dụng ký hiệu OR ( logic ˅ ) Hàm R có thể được biểu diễn bằng:

R(y1, y2, ,y8) = y1 + y2 + y3 + y4 + y5y7 ∨ y6 y7 ∨ y6y8 Bậc đại số 3 của hàm Boolean R đủ lớn để đảm bảo rằng luồng khóa được tạo ra ζ sẽ có độ phức tạp tuyến tính ≥ 2^85 Thứ tự của miễn nhiễm tương quan 4 là giá trị lớn nhất có thể cho cân bằng, 8 biến, các hàm Boolean bậc

3 theo Siegenthaler [33] Có 8 biến khác các hàm boolean của đại số bậc 3

có bậc phục hồi 4 Đặc biệt một trong (4) được chọn chủ yếu vì đại diện thay thế của nó (5) có một nhận thức đơn giản trong phần cứng Xem hình sau:

3 The feedback shift registers

Các mục chính của KSG là tám thanh ghi dịch chuyển phản hồi phi tuyến nguyên thủy nhị phân Xuyên suốt đề xuất, các NLFSR này được gắn nhãn

Trang 8

bằng các chữ cái in hoa A, B, C, , H Độ dài, chu kỳ, độ phức tạp tuyến tính và phi tuyến tính của tám NLFSR được đưa ra trong bảng sau

Tất nhiên, việc liệt kê các chu kỳ là dư thừa, vì FSR nhị phân nguyên thủy

có độ dài N, theo định nghĩa, có chu kỳ 2N - 1 Lưu ý rằng các thanh ghi dịch chuyển G và H có cùng độ phi tuyến tính

Đối với NLFSR A và B, chúng tôi tìm thấy L A= 222 - 13 và L B = 223 - 2, tương ứng Giới hạn trên cho độ phức tạp tuyến tính của FSR nguyên thủy nhị phân giai đoạn N là 2N - 2 Đây là hệ quả tức thì của Định lý 16 Giới hạn trên 2N −2 dường như cũng là một giá trị điển hình cho độ phức tạp tuyến tính của giai đoạn N nhị phân nguyên thủy NLFSR's Bằng cách điều tra hơn 100 Triệu NLFSR giai đoạn N nhị phân được chọn ngẫu nhiên với 4

≤ N ≤ 20, chúng tôi nhận thấy rằng giới hạn trên 2N - 2 đối với độ phức tạp tuyến tính đã đạt được đối với hơn một nửa số chuỗi được tạo ra bởi

NLFSR’s được tìm thấy Hầu hết tất cả các trình tự đều có độ phức tạp tuyến tính đóng các giai đoạn

Ở bất kỳ tỷ lệ nào, vì không có giới hạn nào thấp hơn đối với độ phức tạp tuyến tính của nhịp nhị phân N, chu kỳ 2N−1 trình tự đã được công bố cho đến nay, độ phức tạp tuyến tính của bảy NLFSR dẫn động còn lại được sử dụng trong KSG của chúng tôi phải được tính toán Cuối cùng, công thức của Laksov kết hợp với việc triển khai nhanh chóng thuật toán Euclide cho

đa thức nhị phân được quan tâm

Hiện tại, chúng tôi sẽ rất thận trọng khi giả định rằng độ phức tạp tuyến tính của NLFSR nguyên thủy được giải phóng lớn hơn một nửa chu kỳ Do đó, chúng ta sẽ giả sử rằng L C ≥ 224, L D ≥ 225, L E ≥ 226, L F ≥ 227, L G ≥ 228 và L H

230 Chúng ta đã biết rằng L A = 222 - 13 L B = 223 - 2

Trang 9

Các chức năng phản hồi của 8 NLFSR điều khiển được cung cấp bởi

Có một NLFSR khác có trong mật mã luồng được đề xuất NLFSR này được gắn nhãn bằng chữ V viết hoa NLFSR V là nonsingular nhưng không phải là nguyên thủy Độ dài của thanh ghi dịch chuyển này là 64 Nội dung của thanh ghi dịch chuyển V không bị thay đổi trong quá trình mã hóa Nó chỉ được sử dụng trong quá trình tải khóa và IV Khóa bí mật K và khóa IV công khai được đưa vào thanh ghi V, sau đó thực hiện một vài ca thay đổi Nội dung cuối cùng của thanh ghi V xác định các cấu hình của lôgic đầu ra chuyển tiếp tuyến tính của NLFSR điều khiển Chức năng phản hồi của NLFSR V là:

Trang 10

4 The linear feedforward funtions

Mỗi NLFSR điều khiển A, B, C, , H được trang bị một chức năng đầu ra chuyển tiếp tuyến tính có thể định cấu hình Chức năng đầu ra nạp tiếp tuyến tính có thể được mô tả bằng đa thức bộ lọc (xem Phần 2) Đa thức bộ lọc nhị phân a (x) cho NLFSR A có tối đa bậc 6 Tất cả các đa thức bộ lọc

sẽ có các số hạng không đổi Như vậy đa thức a ∈ F2 [x] có dạng

a ( x )=a6x6+a5x5+a4x4+a3x3+a2x2+a1x+1(6)

Có 64 cách chọn đa thức a ( x ) Với NLFSR A, mô tả tình huống trong hình sau:

Nếu phóng to phần bên phải ta có:

Các đa thức bộ lọc sẽ xác định giá trị đầu ra của tám NLFSR A, B, C, , H được chỉ định bởi a (x), b (x), c (x), , h (x), tương ứng Đối với mỗi bộ lọc

đa thức, mức độ tối đa cho phép được đưa ra trong bảng sau

Trang 11

Lưu ý: tổng các độ tối đa cho phép của tất cả tám đa thức bộ lọc là 64 Do

đó, KSG có 264 cấu hình khác nhau cho chức năng đầu ra của nó

Định lý 1 Nếu A, B, C, , H của NLFSR được tải bằng bất kỳ vectơ trạng

thái ban đầu khác không, thì đối với tất cả các đa thức lọc a (x), b (x), c (x), , h (x), các chuỗi đầu ra được tạo ra τA, τB, , τH có chu kỳ 2N - 1, A, τA, τB, , τH có chu kỳ 2N - 1, B, , τA, τB, , τH có chu kỳ 2N - 1, H có chu kỳ 2N - 1, trong đó N là độ dài của NLFSR tương ứng

Định lý 2 Nếu A, B, C, , H của NLFSR được tải bằng bất kỳ vectơ trạng thái ban đầu khác không, thì đối với tất cả các đa thức lọc a (x), b (x), c (x), , h (x), các chuỗi đầu ra được tạo ra τA, τB, , τH có chu kỳ 2N - 1, A, τA, τB, , τH có chu kỳ 2N - 1, B, τA, τB, , τH có chu kỳ 2N - 1, C, , τA, τB, , τH có chu kỳ 2N - 1, H có độ phức tạp tuyến tính lớn hơn hoặc bằng L ' A, L B ',…, L ' H, trong đó những con số này được đưa ra trong bảng dưới đây

III The key-loading algorithm

Trang 12

ACHTERBAHN-80 có thể được sử dụng với độ dài khóa 40, 48, 56, 64,

72 và 80 Tất cả IV - độ dài từ 0 đến 80 có thể được sử dụng với điều kiện

là độ mạnh IV có thể chia được bởi tám ACHTERBAHN-128 đáp ứng tất cả các độ dài khóa từ 40 đến 128 và tất cả IV-độ dài từ 0 đến 128 là bội số của tám Chúng tôi sẽ sử dụng các chữ cái k và l để biểu thị độ dài khóa và IV tương ứng Giả sử rằng bí mật khóa K được cho dưới dạng chuỗi bit K = u0u1 uk − 1 và giá trị ban đầu (hoặc vectơ ban đầu) được cho là IV = v0v1 vl − 1 Thuật toán tải khóa và IV là được định nghĩa như sau:

Bước 1 Các ô nhớ D0, D1, , DNj-1 của thanh ghi shift Aj được lấp đầy bởi các bit khóa Nj đầu tiên u0u1 uNj − 1 Điều này được thực hiện cho tất cả mười ba thanh ghi dịch chuyển trong trình tạo dòng khóa của ACHTERBAHN-128 và cho tất cả mười một thanh ghi dịch chuyển trong trình tạo dòng khóa của ACHTERBAHN-80.

Bước 2 Với mỗi thanh ghi dịch chuyển Aj sau lần nạp đầu tiên sẽ

còn lại k-Nj các bit khóa uNj, uNj − 1, , uk − 1 được truyền vào Aj lần lượt theo Hình 4.

Bước 3 Với mỗi thanh ghi dịch chuyển Aj, tất cả l bit giá trị ban

đầu VI: V0, v1, , vl-1 được truyền vào theo cách tương tự như đã được mô tả cho các bit khóa trong Bước 2.

Bước 4 Mỗi thanh ghi dịch chuyển Aj phát ra một bit Mười ba bit

thanh ghi dịch chuyển sau đó là được nén bởi hàm kết hợp Boolean

F thành một bit đầu ra Đầu ra này bit ngay lập tức được đưa trở lại vào mỗi thanh ghi dịch chuyển như được mô tả trong Hình 4 cùng một bit đầu ra được đưa vào tất cả mười ba thanh ghi dịch chuyển Hoạt động này được lặp lại 32 lần Trong trường hợp

Achterbahn-80, tất nhiên, chỉ có 11 thanh ghi dịch chuyển A1, , A11 có liên quan và hàm sử dụng kết hợp là hàm G được xác định trong Phần

dịch chuyển.

Bước 5 Nội dung của ô nhớ D0 trong mỗi thanh ghi dịch chuyển

dịch chuyển nào được khởi tạo giá trị với toàn trạng thái 0.

Bước 6 Mỗi thanh ghi dịch chuyển Aj được dịch 64 lần mà không phát ra bất kỳ bit đầu ra (Warmup).

Ngày đăng: 24/02/2023, 12:38

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w