1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài Giảng Mã Hóa Theo Luồng

23 1,3K 3

Đ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

Định dạng
Số trang 23
Dung lượng 288,53 KB

Nội dung

Mã hóa theo luồng– Khái niệm mã hóa theo luồng – Tạo luồng khóa tuyến tính – Tạo luồng khóa không tuyến tính... Tạo luồng khóa• Cần phải tạo luồng khóa zi sao cho các bit của chúng không

Trang 1

Mã hóa theo luồng

– Khái niệm mã hóa theo luồng

– Tạo luồng khóa tuyến tính

– Tạo luồng khóa không tuyến tính

Trang 2

Mã hóa theo luồng

Khóa không thay đổi cho tất cả các khối (k)

Mã hóa theo luồng :

C = c0, c1, …, cn-1 = ez0(p0), ez1 (p1), …, ezn-1 (pn-1)

Trang 3

1 Được Vernam sử dụng từ năm 1917

3 Mã hóa và giải mã hoàn toàn như nhau

Trang 4

• Đây cũng chính là kết quả của a XOR b

• Phép mã hóa và giải mã như nhau vì:

Mã: pi + zi → ci Giải mã: ci + zi = pi + zi + zi = pi

Ví dụ: Mã hóa chữ A: AASCII = 6510 = 0100 00012

Với luồng khóa: z z …z = 00101101

Trang 5

Tạo luồng khóa

• Cần phải tạo luồng khóa zi sao cho các bit của chúng

không phụ thuộc lẫn nhau Tức là các zi phải được tạo

ra một cách hoàn toàn ngẫu nhiên

• Luồng khóa sẽ được tạo ra từ 1 khóa ngắn

p n , …, p 1 , p 0 z i

Khóa ban đầu K

Trang 6

Các phương pháp tạo luồng khóa

1 Tạo luồng khóa đồng thời

(synchronous stream cipher)

zi = f(k) → Hàm tạo số ngẫu nhiên

(pseudo-random generator - PRG).

2 Tạo luồng khóa không đồng thời

(asynchronous stream cipher)

zi = f(k, ci-1, ci-2, …,ci-n) → Tạo số ngẫu

nhiên với sự phản hồi mã (feedback of cipher).

Trang 7

Sơ đồ mã hóa theo luồng

Trang 8

Tạo luồng khóa đồng thời

(synchronous stream cipher)

• Dãy z0,z1, … được tạo ra một cách ngẫu

nhiên và chỉ phụ thuộc vào khóa k

• Đại diện: Máy tạo luồng khóa tuyến tính

(linear feedback shift registers - LFSR)

– Với m giá trị nhị phân ban đầu máy sẽ cho ta dãy

các số nhị phân ngẫu nhiên dựa trên phép toán

XOR Quá trình tính toán có sử dụng các kết quả

đã tính trong các bước trước

– Ví dụ: m=3, Ta có 3 hộp K0, K1, K2 theo hình vẽ

sau:

Trang 9

Máy tạo luồng khóa tuyến tính –

Trang 10

Máy tạo luồng khóa tuyến tính –

Trang 12

Đánh giá LFSR

• Định lý: Độ dài cực đại của luồng khóa được tạo

bởi LFSR-m bằng 2m-1

• Nhận xét: Luôn có 1 số bộ nào đó (C0,…, Cm-1) cho ta độ

dài maximum của LFSR-m

Ví dụ: Với m=4: (C0 = C1 = 1, C2 = C3 = 0) cho độ dài

Trang 13

Luyện tập LFSR - m

• Vẽ máy LFSR tương ứng, tính luồng khóa thu

được và tính chu kỳ của nó:

1 LFSR-3 = (3, 1 + x + x3), [z0, z1, z2] = [1,0,0]

2 LFSR-4 = (4, 1 + x + x4), [z0, z1, z2, z3] = [1,1,0,1],

3 LFSR-5 = (5, 1 + x + x2 + x4 + x5),

[z0, z1, z2, z3 , z4] = [1,0,0,1,0]

Trang 14

Tạo luồng khóa không tuyến tính

(Clock controlled shift registers)

• Máy chạy và dừng luân phiên (Anternating

stop-and-go generator)- Kết hợp 3 máy LFSR

Trang 15

Máy chạy và dừng luân phiên

Qui trình chạy của máy như sau:

1 Máy R1 chạy

2 Nếu Kết quả của R1 là 1 thì:

– R2 chạy; R3 không chạy mà lặp lại bit kết quả

trước đó (Vòng đầu giá trị đó của R3 là 0)

3 Nếu Kết quả của R1 là 0 thì:

– R3 chạy; R2 không chạy mà lặp lại bit kết quả

trước đó (Vòng đầu giá trị đó của R2 là 0)

4 Đầu ra của R2 và R3 được XOR với nhau

và kết quả chính là 1 bit của luồng khóa

Trang 16

Máy chạy và dừng luân phiên (2)

• Giả sử đầu ra của các máy R1, R2, R3 tương

Trang 17

Ví dụ máy chạy và dừng luân phiên

Trang 18

Ví dụ máy chạy và dừng luân phiên (2)

Trang 19

Đánh giá độ an toàn

• Số box của máy R được gọi là độ dài của nó

• R1, R2, R3 cần được chọn sao cho độ dài của luồng

khóa (L) được tạo ra là lớn nhất (phụ thuộc vào độ

dài máy L1, L2, L3 và giá trị các bit khởi tạo).

• Trường hợp L1, L2, L3 đôi một nguyên tố cùng nhau

thì L sẽ lớn nhất và: L = L1.L2.L3

• Tuy nhiên thường người ta thường chọn Li xấp xỉ

bằng nhau (L1 ≈ L2 ≈ L3 ≈ l)

• Khi l ≈ 128 máy trên có thể coi là an toàn (Phương

pháp “chia để trị” đối với R1 cần thực hiện là 2128

bước để có thể tìm ra khóa)

Trang 20

Thám mã LFSR

• Giả sử kẻ lạ biết vài plaintext với ciphertext

(Known plaintext attack) và biết số m:

– Biết plaintext (độ dài 2m): p0, p1, …, p2m-1.

– Biết ciphertext (độ dài 2m): c0, c1, …, c2m-1.

– Tính được luồng khóa:

zi = pi + ci mod 2; i = 0, 1,…, 2m-1 (?)

• Mục đích: Tính các hệ số Ci với:

zi+m = ( Σ Cj zi+j ) mod 2;

j = 0 → m-1, Cj ∈ {0, 1}

Trang 21

• Ta có hệ PT tuyến tính với m ẩn C0,…,Cm-1 Ta có thể giải

được dễ dàng và tìm được Ci theo zj

• Vậy với LFSR bậc m bằng cách xem xét đầu vào và ra của2m cặp bit ta có thể tìm được Ci

• Kết luận: LFSRs rất không an toàn Tuy nhiên tổ hợp của

chúng (VD: máy chạy và dừng luân phiên lại an toàn hơn)

• Có thể dùng TT khối để tạo ra các chuỗi bit cho TT luồng

Trang 22

• A5 là TT luồng sử dụng để mã hóa trong mạng điện

thoại di động (GSM), được bảo vệ như là bí mật kinh

doanh

• Có vài phiên bản (A5, A5/1, A5/2)

• Tất cả đều bị bẻ khóa (A5/2 : 8/1999, A5/1 : 4/2000)

• A5/1 gồm có 3 LFSR's với 19, 22 và 23 bit trong đó

sử dụng các đa thức phản hồi thưa

• Phiên bản A5/2 còn yếu hơn với việc sử dụng LFSR

thứ 4 để tắt mở - rất dễ bị tấn công

• Sử dụng SOBER (1998) để thay thế A5 cho GSM

• Một số TT khác: RC4, BBS

Trang 23

Viết thủ tục tạo máy trên và xuất ra chuỗi dài 50 bits

2 Sử dụng kết quả trên để mã hóa chuỗi thông điệp sau: “A bus

3 Viết chương trình cho máy tạo chuỗi bit sau:

LFSR-m = (m, C0 + C1x + + Cm-1x m-1 + x m ),

Với giá trị đầu vào: [z0, z1, …, zm-1] Xuất ra n bits.

4 Viết chương trình tạo máy chạy và dừng luân phiên

5 Viết chương trình sử dụng máy chạy và dừng luân phiên để mã

hóa một chuỗi bit có độ dài không quá k.

Ngày đăng: 28/10/2015, 17:50

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w