1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu một số chế độ sử dụng mã khối an toàn

67 1,1K 6

Đ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 67
Dung lượng 920 KB

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

Nội dung

Nghiên cứu một số chế độ sử dụng mã khối an toàn

Trang 1

MỤC LỤC

M C L CỤ Ụ i

DANH M C HÌNH VỤ Ẽ iii

L I NÓI Ờ ĐẦ ivU Chương 1 vii

T NG QUAN V MÃ KH IỔ Ề Ố vii

1.1 Gi i thi u v mã kh iớ ệ ề ố vii

1.2 Các nh ngh a v mã kh i v m t s thu t ng đị ĩ ề ố à ộ ố ậ ữ ix

1.3 Các tham s c a mã kh iố ủ ố xii

1.4 Nguyên lý thi t k mã kh iế ế ố xiii

1.4.1 Nguyên lý thi t k chung v ế ế ề độ an to nà xiii

1.4.2 Nguyên lý thi t k cho ng d ngế ế ứ ụ xiv

1.5 Các th nh ph n c a mã kh ià ầ ủ ố xvi

1.6 M t s ch ộ ố ế độ ho t ạ động c a mã kh iủ ố xvii

1.6.1 Ch ế độ ừ đ ể t i n mã i n t (ECB-Electronic Codebook)đ ệ ử xvii

1.6.3 Ch ế độ ph n h i mã (CFB- Cipher feedback)ả ồ xx

1.6.4 Ch ế độ ho t ạ động Counter (CTR) xxii

1.6.5 Ch ế độ ph n h i ả ồ đầu ra (OFB-Output feedback) xxiv

1.6.6 Ch ế độ ế ợ k t h p b o m t v xác th c CCMả ậ à ự xxiv

Chương 2 xxvi

NGHIÊN C U CH Ứ Ế ĐỘ PH N H I Ả Ồ ĐẦU RA (OFB) xxvi

2.1 Mô t ch ả ế độ ph n h i ả ồ đầu ra OFB xxvi

2.3 Nghiên c u các ánh giá ứ đ đảm b o ả độ an to n c a OFBà ủ xxix

2.3.1 Phân tích ch ế độ OFB không kh i t o l i m mở ạ ạ ầ xxix

2.3.2 Phân tích OFB kh i t o l i m m ng u nhiênở ạ ạ ầ ẫ xxxiii

2.3.3 Phân tích OFB trong trường h p chungợ xxxv 2.3 Nh n xét cu i chậ ố ươ xliing

Chương 3 xliv NGHIÊN C U CH Ứ Ế ĐỘ Ả B O M T K T H P XÁC TH C CCMẬ Ế Ợ Ự xliv 3.1 Gi i thi uớ ệ xliv 3.2 Mô t ch ả ế độ CCM xlvi 3.3 Phân tích tính an to n c a CCMà ủ li 3.3.1 Các khái ni m an to nệ à li 3.3.2 Các k t qu an to nế ả à liv 3.3.2.1 Gi i h n an to n ớ ạ à đố ới v i tính xác th cự liv 3.3.2.2 Gi i h n an to n ớ ạ à đố ới v i tính bí m tậ lxi 3.4 Nh n xét cu i chậ ố ươ lxiing

K T LU NẾ Ậ lxiii TÀI LI U THAM KH OỆ Ả lxiv

PH L CỤ Ụ lxv

i

Trang 2

DANH MỤC CÁC CHỮ VIẾT TẮT

NSA National Security Agency Cơ quan an ninh quốc gia

hoa kỳ

NBS National Bureau of Standard Cục tiêu chuẩn liên bang hoa

kỳ

NIST National Institute of

Standards and Technology

Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ

DES Data Encryption Standard Tiêu chuẩn mã hóa dữ liệu

Standard

Tiêu chuẩn mã hóa mở rộng

ii

Trang 3

Hình 2.1 Chế độ OFB trong trường hợp chung

Hình 2.2 Mã hóa và giải mã trong chế độ OFB

Hình 3.1 Sơ đồ tạo thẻ CBC-MAC trong chế độ CCM

Hình 3.2 Sơ đồ mã hóa CTR trong chế độ CCM

iii

Trang 4

LỜI NÓI ĐẦU

Ngay từ thời cổ đại Tôn Tẫn, một danh tướng nổi tiếng của Trung Hoa

đã viết trong cuốn Binh Pháp: “Biết người, biết ta – trăm trận, trăm thắng” Điều này đã nói lên tầm quan trọng cũng như giá trị của thông tin Giá trị của thông tin đã được xác định từ lâu trong các lĩnh vực chính trị, quân sự Ngày nay với cuộc cạnh tranh kinh tế gay gắt thì các bí mật về kỹ thuật, công nghệ; các thông tin về nguồn tài nguyên của một đất nước; các số liệu về tình hình tài chính của một công ty, thậm chí những thông tin mang tính riêng tư của một cá nhân hay của một nhóm người nào đó cũng trở thành những tài sản quý giá mà không phải ai cũng chia sẻ được Những vấn đề về bảo mật thông tin đang ngày càng trở nên nổi cộm khi việc triển khai trên các mạng diện rộng các cơ sở dữ liệu lớn, liên quan đến nhiều nguồn tài nguyên quý giá khác nhau của các quốc gia trong nhiều lĩnh vực: kinh tế, chính trị và đặc biệt là quốc phòng; và việc thực hiện nhiều dịch vụ và ứng dụng quan trọng khác trên mạng Có thể nói rằng, khả năng kết nối trên toàn thế giới mang lại cho chúng ta rất nhiều điều quý giá nhưng đồng thời nó cũng có thể tước đoạt đi tất cả một khi sự an toàn của thông tin là không được bảo đảm

Bảo mật thông tin là một khái niệm khá rộng liên quan đến nhiều cơ chế và các tầng lớp bảo vệ khác nhau Từ trước đến nay đã có rất nhiều giải pháp bảo mật được đưa ra, trong đó, kiểm soát truy nhập thông tin bằng cách

mã hóa dữ liệu nhờ sử dụng mật mã là một giải pháp quan trọng mang lại hiệu quả vô cùng to lớn

Tuy nhiên, vì mật mã là công cụ rất mạnh mẽ nên đã khiến nhiều người lầm tưởng rằng cứ sử dụng mật mã là an toàn, mà không biết rằng mật mã là con dao hai lưỡi Chúng ta có thể xây dựng một hệ thống với đầy đủ các ý

iv

Trang 5

tưởng hay ho nhất của mật mã, nhưng nếu chúng ta không dùng mật mã đúng cách, hệ thống của chúng ta sẽ hoàn toàn thiếu an toàn.

Đã có rất nhiều ví dụ, mà tiêu biểu là gần đây, hệ thống bảo vệ máy PS3 của Sony bị phá vỡ hoàn toàn chỉ vì sử dụng sai mật mã Không riêng gì Sony, mà rất nhiều hãng lớn trên thế giới, từ Oracle, Yahoo!, đến Microsoft,

đã sử dụng sai mật mã và làm cho sản phẩm của họ thiếu an toàn

Điều này cho thấy, chỉ biết mật mã giúp gì cho chúng ta là chưa đủ, mà chúng ta cần phải biết làm thế nào để sử dụng chúng đúng cách Khi biết cách

sử dụng đúng mật mã rồi, chúng ta sẽ có thể dùng mật mã để xây dựng các hệ thống an toàn hơn, và đồng thời có thể đánh giá được sản phẩm sử dụng mật

mã của bên thứ ba

Đó là lí do tại sao em lựa chọn đề tài: “Nghiên cứu tìm hiểu một số chế

độ sử dụng mã khối an toàn”, với mục đích hiểu được cơ chế hoạt động của một số chế độ hoạt động của mã khối, chứng minh một số đặc tính an toàn để

từ đó đưa ra các khuyến cáo sử dụng an toàn nhất có thể đối với mỗi cơ chế đó

Bố cục của đồ án gồm 3 phần:

- Phần 1 Tổng quan về mã khối

Phần này giới thiệu sơ lược về mật mã khối, đưa ra các khái niệm, các thuật ngữ và các tham số của mã khối; chỉ ra các nguyên lý thiết kế mã khối

và các thành phần của mã khối Ngoài ra, phần này cũng giới thiệu, mô tả một

số chế độ hoạt động quen thuộc của mã khối được dùng phổ biến ở nước ta

- Phần 2 Nghiên cứu chế độ phản hồi đầu ra (OFB)

Phần này giới thiệu, mô tả cụ thể chế độ OFB, nghiên cứu các đánh giá về

độ an toàn để từ đó đưa ra các khuyến cáo sử dụng chế độ này một cách an toàn nhất

- Phần 3 Nghiên cứu chế độ bảo mật kết hợp xác thực (CCM)

Phần này giới thiệu, mô tả chế độ CCM, phân tích tính an toàn của nó và đưa ra các giới hạn an toàn khi sử dụng chế độ này

v

Trang 6

Em xin gửi lời cảm ơn chân thành đến Học viện Kỹ Thuật Mật Mã, các thầy cô trong khoa An Toàn Thông Tin đã tạo điều kiện giúp đỡ em trong quá trình học tập và nghiên cứu Và đặc biệt em xin tỏ lòng kính trọng và biết ơn sâu sắc đến TS Trần Văn Trường – phó giám đốc Học viện Kỹ Thuật Mật

Mã, thầy đã tận tình hướng dẫn và chỉ bảo em trong quá trình nghiên cứu, tìm hiểu và hoàn thành đồ án

Mặc dù nhận được rất nhiều sự giúp đỡ của thầy hướng dẫn, các thầy cô giáo, bạn bè và sự cố gắng của bản thân nhưng đồ án không tránh khỏi sai sót,

vì vậy em rất mong nhận được sự đóng góp ý kiến từ phía các thầy cô và bạn

bè cũng như những người quan tâm đến lĩnh vực này

Em xin chân thành cảm ơn!

Sinh viên thực hiện

vi

Trang 7

Chương 1 TỔNG QUAN VỀ MÃ KHỐI1.1 Giới thiệu về mã khối

Trong mật mã học, mã khối là những thuật toán mã hóa đối xứng hoạt động trên những khối thông điệp có độ dài xác định (block) với những phép biến đổi xác định Chẳng hạn một thuật toán mã khối có thể xử lý khối 128-bit đầu vào và biến nó thành khối 128-bit ở đầu ra Quá trình biến đổi còn sử dụng thêm một tham số nữa: khóa bí mật để cá biệt hóa quá trình Việc giải

mã cũng diễn ra tương tự: xử lý khối mã hóa 128-bit cùng với khóa để trả về khối 128-bit bản rõ ban đầu

Để mã hóa những văn bản có độ dài vượt quá độ dài của khối, người ta

sử dụng thuật toán theo một chế độ mã khối nào đó Một kiểu mã hóa khác với mã khối là mã dòng Mã dòng làm việc trên từng bít của dòng dữ liệu và quá trình biến đổi thay đổi theo quá trình mã hóa, mật mã dòng sinh ra chuỗi khóa liên tục dựa trên giá trị của khóa Tuy nhiên, sự khác biệt giữa 2 hệ mã này nhiều khi không rõ ràng vì mã khối khi hoạt động theo một chế độ nào đó thì có tác dụng như một phương pháp mã dòng

Thuật toán mã khối ra đời sớm và có nhiều ảnh hưởng là thuật toán DES do công ty IBM (International Business Machines) phát triển và được ban hành làm thuật toán mã hóa dữ liệu chuẩn năm 1977 Thuật toán mã hóa

dữ liệu chuẩn thay thế DES có tên là AES được ban hành năm 2001

Quá trình mã khối bao gồm 2 thuật toán: mã hóa - ký hiệu E và giải mã

- ký hiệu E -1 hay D Cả 2 thuật toán đều tác động lên một khối đầu vào m-bit

vii

Trang 8

và sử dụng một khóa k-bit để cho ra một khối đầu ra m-bit Đối với bất kỳ

khóa nào, giải mã là hàm ngược của mã hóa, nghĩa là:

1( ( ))

K K K

D =EE M =M

trong đó M là khối thông điệp và K là khóa bất kỳ

Với mỗi khóa K, E K là một hoán vị (song ánh) của khối đầu vào Mỗi khóa sẽ xác định một hoán vị trong tổng số 2m! khả năng

Hầu hết các mã khối hiện nay có độ dài khối là 64 hoặc 128-bit Tuy vậy, vẫn có một số thuật toán có độ dài khối thay đổi nhưng không phổ biến Tính đến trước những năm đầu của thập kỷ 1990 thì người ta sử dụng độ dài khối 64-bit Cho tới nay thì kích cỡ khối 128-bit được sử dụng rộng rãi hơn Trong một số chế độ của mã khối thì người ta thường phải bổ sung thêm (padding) một số bit vào văn bản để văn bản cần mã hóa chứa số nguyên lần

độ dài khối Mỗi chế độ mã hóa có đặc tính khác nhau về lan truyền lỗi (lỗi

mã hóa trong khối này ảnh hưởng tới khối khác), khả năng truy xuất ngẫu nhiên và khả năng chống lại các kiểu tấn công khác nhau Độ dài thông

thường của khóa, k, là 40, 56, 64, 80, 128, 192 và 256 bit Từ năm 2006 đến

nay thì 80 bit là độ dài tối thiểu của khóa để có thể chống lại tấn công kiểu vét cạn Tuy nhiên, theo dự kiến của NIST, khóa 80-bit sẽ bị loại bỏ vào năm 2015

Các hệ mã khối có ưu điểm là chúng có thể được chuẩn hóa một cách

dễ dàng, bởi vì các đơn vị xử lý thông tin hiện nay thường có dạng khối (block) như byte hoặc word Ngoài ra trong kỹ thuật đồng bộ, một số chế độ

mã cho phép việc mất một khối mã cũng không ảnh hưởng tới độ chính xác của việc giải mã của các khối tiếp sau, đó cũng là một ưu điểm khác của mã khối

Nhược điểm lớn nhất của mã khối là phép mã hóa không che dấu được các mẫu dữ liệu: các khối mã giống nhau với cùng một khóa sẽ suy ra các khối rõ cũng giống nhau (chẳng hạn như chế độ ECB) Tuy nhiên nhược điểm này có thể được khắc phục bằng cách đưa vào một lượng nhỏ có nhớ trong quá trình mã hóa, tức là bằng cách sử dụng cách thức móc xích khối mã (CBC-Cipher Block Channing mode) trong đó hàm mã hóa không nhớ được

viii

Trang 9

áp vào tổng XOR của khối rõ và khối mã trước đó Phép mã lúc này có kiểu cách kỹ thuật như mã dòng áp dụng đối với các khối "lớn" (ví dụ, chế độ CFB

và OFB)

Mã khối đóng vai trò hết sức quan trọng trong hầu hết các ứng dụng mật mã, ngoài việc sử dụng trực tiếp để mã hóa dữ liệu, nó còn được dùng để xây dựng các cấu trúc thuật toán mật mã quan trọng khác như các bộ tạo số giả ngẫu nhiên, mã dòng, hàm tóm lược bản tin (MAC), hàm băm mật mã (Hash) Ngoài các thuật toán mã khối đã nêu trên, các quốc gia khác nhau đều phát triển các thuật toán mã khối riêng để phục vụ bảo mật cho các thông tin

bí mật cấp quốc gia của mình

1.2 Các định nghĩa về mã khối và một số thuật ngữ

Giả sử F2 là trường Galois hai phần tử Ký hiệu là không gian vectơ các bộ m-tuples các phần tử của F2 Trong phần này chúng ta giả thiết không mất tổng quát rằng, bản rõ X, bản mã Y lấy các giá trị trong không gian véc

tơ, còn khóa Z lấy giá trị trong không gian véc tơ Như vậy m-là độ dài bit của các khối rõ và mã, còn k-là độ dài bit của khóa bí mật

Định nghĩa Hệ mã khối khóa bí mật là một ánh xạ

và sẽ được ký hiệu là D z( , ) g .Chúng ta viết Y = E(X, Z) đối với một mã khối

có nghĩa là bản mã Y được xác định bởi bản rõ X và khóa bí mật Z theo ánh

xạ E Tham số m được gọi là độ dài khối còn tham số k được gọi là độ dài khóa của hệ mã khối đó Cỡ khóa đúng của hệ mã khối được xác định bởi số

kt = log2 (#(Sz)) bit Như vậy độ dài khóa sẽ bằng cỡ khóa thực tế nếu và chỉ

k

z

S =F , tức là mọi bộ k-bit nhị phân đều là một khóa có hiệu lực Chẳng

hạn đối với chuẩn mã dữ liệu DES, độ dài khóa là k = 64 bit, trong khi cỡ khóa thực tế của nó là kt = 56 bit Chú ý rằng ở đây ta xem xét các mã khối có

độ dài khối mã bằng độ dài khối rõ

ix

Trang 10

Độ an toàn của các hệ mã khối

Như đã nói ở trên, một mã khối được sử dụng nhằm bảo vệ chống sự rò

rỉ không mong muốn của bản rõ Nhiệm vụ của thám mã đối phương là phá hệ

mã này theo nghĩa anh ta có thể mở ra được các bản rõ từ các bản mã chặn bắt được Một hệ mã là bị phá hoàn toàn nếu như thám mã có thể xác định được khóa bí mật đang sử dụng và từ đó anh ta có thể đọc được tất cả các thông báo một cách dễ dàng như là một người dùng hợp pháp Một hệ mã là bị phá thực

tế nếu thám mã có thể thường xuyên mở ra được các bản rõ từ các bản mã nhận được, nhưng vẫn chưa tìm ra được khóa

Độ an toàn luôn gắn với các đe dọa tấn công Chúng ta giả sử rằng kẻ tấn công luôn có thể truy nhập tới mọi thứ được truyền thông qua kênh không

an toàn Khả năng tính toán của thám mã phải luôn được xem xét trước khi xem xét độ an toàn của một mã có thể bị truy nhập

Các kiểu tấn công

Một giả thiết được chấp nhận phổ biến nhất trong mật mã đó là thám

mã đối phương luôn có thể truy nhập hoàn toàn tới các bản mã được truyền trên kênh không an toàn Một giả thiết đã được chấp nhận khác nữa là:

Giả thiết Kerckhoff: Thám mã đối phương là được biết toàn bộ chi tiết của

quá trình mã hóa và giải mã chỉ trừ giá trị khóa bí mật

Giả thiết Kerckhoff suy ra rằng độ an toàn của một hệ mật khóa bí mật chỉ còn phụ thuộc vào chính khóa mật mà thôi Dưới giả thiết Kerckhoff, các tấn công có thể được phân loại theo các tri thức của thám mã như sau:

- Tấn công vét cạn khóa (brute force)

- Tấn công chỉ biết bản mã: thám mã đối phương không biết thêm tí thông tin gì ngoài bản mã nhận được

- Tấn công bản rõ đã biết: Thám mã đối phươnng biết thêm một vài cặp Rõ/Mã đối với khóa đang dùng

- Tấn công bản rõ lựa chọn: Thám mã đối phươnng có thể đạt được các bản mã tương ứng với các bản rõ ấn định đặc biệt bất kỳ đối với khóa đang dùng

x

Trang 11

Tấn công bản rõ lựa chọn là tấn công mạnh nhất trong các tấn công trên Nếu một hệ mã là an toàn chống lại tấn công bản rõ lựa chọn thì nó cũng an toàn trước các tấn công khác Trong thực tế, ta nên dùng hệ mã có

độ an toàn chống lại tấn công bản rõ lựa chọn, ngay cả khi thám mã đối phương hiếm có cơ hội thu lượm được thông tin gì đó hơn so với tấn công chỉ biết bản mã

Độ an toàn vô điều kiện và độ an toàn tính toán

Một hệ mật được gọi là an toàn vô điều kiện nếu nó an toàn chống lại thám mã đối phương có khả năng tính toán vô hạn Độ an toàn vô điều kiện cũng được gọi là an toàn lý thuyết liên quan đến tính không thể phá được của một hệ mật Một hệ mật là an toàn chống lại đối phương có khả năng tính toán bị hạn chế nào đó được gọi là an toàn tính toán Độ an toàn tính toán cũng được gọi là độ an toàn thực tế, liên quan đến tính khó phá của một hệ mật Tất cả các hệ mật an toàn vô điều kiện đều là không có tính thực tế Tuy nhiên cũng không có một hệ mật thực tế nào đã được chứng minh là an toàn theo nghĩa tính toán

Độ phức tạp dữ liệu và độ phức tạp tính toán

Độ phức tạp dữ liệu là lượng dữ liệu đầu vào cần cho tấn công đó trong khi độ phức tạp tính toán là lượng các tính toán cần để xử lý dữ liệu như thế

Độ phức tạp nào lớn hơn - trội hơn thường được xem là độ phức tạp của tấn công Chẳng hạn, trong tấn công vét cạn khóa, lượng dữ liệu đầu vào cần cho tấn công này là số các khối mã chặn bắt được (hoặc số các cặp rõ/mã trong tấn công bản rõ đã biết), nói chung đó là một số lượng rất nhỏ so với số các phép toán (trung bình cần 2k t1 phép giải mã với các khóa khác nhau trong việc tìm ra khóa đúng) cần thiết của tấn công này Do vậy độ phức tạp của tấn công duyệt khóa thường chính là độ phức tạp tính toán

Ví dụ khác là tấn công vi sai của Biham và Shamir, đó là kiểu tấn công bản rõ lựa chọn Đối với tấn công vi sai độ phức tạp vượt trội lên bởi số các cặp rõ/mã cần trong tấn công đó, trong khi số các tính toán sử dụng trong tấn công này lại tương đối nhỏ Do đó độ phức tạp của tấn công vi sai thực chất là

độ phức tạp dữ liệu

xi

Trang 12

Nói chung đối với một mã khối độ dài khối m-bit và cỡ khóa thực sự là

kt-bit, độ phức tạp dữ liệu của tấn công bản rõ đã biết (hoặc bản rõ lựa chọn)

có thể được đo bởi số các cặp rõ/mã đã biết (hay lựa chọn) cần cho tấn công này, nhiều nhất là 2m tức là toàn bộ số các cặp rõ/mã đối với một khóa cố định Độ phức tạp tính toán có thể bị chặn trên bởi 2k t phép mã hóa theo tấn công vét cạn khóa và nói chung một phép mã hóa được xem là tính toán không đáng kể Như vậy chúng ta có thể nói rằng một hệ mật là an toàn tính toán nếu như không có tấn công nào trên hệ mật đó có độ phức tạp dữ liệu nhỏ hơn đáng kể 2m phép mã và độ phức tạp tính toán nhỏ hơn đáng kể 2k t

phép mã hóa Một hệ mật được gọi là an toàn thực tế chống lại một tấn công

cụ thể nếu với tấn công này, độ phức tạp dữ liệu vào khoảng 2m cặp rõ/mã hoặc độ phức tạp tính toán là vào khoảng 2k t phép mã hóa Đối với thám mã,

độ phức tạp dữ liệu là loại độ phức tạp bị động, anh ta phải chờ người sử dụng tạo ra các cặp rõ /mã cho anh ta Tuy nhiên, độ phức tạp tính toán lại là kiểu

độ phức tạp chủ động và có thể khắc phục nói chung bằng cách sử dụng nhiều máy tính mạnh

Thám mã khối là nghiên cứu các yếu điểm trong cài đặt thuật toán, hoặc bản

thân thuật toán để thu được các thông tin không biết về khóa mã và bản rõ

1.3 Các tham số của mã khối

Độ dài khối m

Để một hệ mã khối là an toàn, độ dài khối m của nó phải đủ lớn ngăn cản các tấn công phân tích thống kê, tức là để không cho đối phương thu được thông tin có ích nào về khối rõ nào đó thường xuất hiện nhiều hơn các khối rõ khác Ngoài ra độ dài khối m cũng phải được chọn sao cho số các cặp rõ/mã

mà đối phương có thể thu nhận được trong thực tế phải nhỏ hơn rất nhiều so với 2m

Khi độ dài khối của hệ mã trở nên lớn thì độ phức tạp của ứng dụng cũng tăng theo Dù rằng độ phức tạp trong ứng dụng chọn ngẫu nhiên hàm có ngược là tăng theo cỡ mũ so với độ dài khối, nhưng chỉ có hàm đơn giản mới xuất hiện ngẫu nhiên, điều này tạo cơ hội phục vụ hàm mã hóa thực tế khi độ dài khối m là lớn Tuy nhiên, Shannon đã chỉ ra rằng sự dễ dàng trong tính

xii

Trang 13

toán các hàm mã hóa E( , ) gz và hàm giải mã D( , ) gz với mọi z không suy ra được việc giải tìm khóa z từ các phương trình y = E(x, z) và x = D(y, z) sẽ là

dễ dàng khi biết x và y

Độ dài khóa k và cỡ khóa thực sự k t

Để hệ mã khối an toàn chống lại tấn công vét cạn khóa, cỡ khóa đúng cần phải đủ lớn sao cho 2k t1 phép mã hóa cần cho tấn công này là vượt xa khả năng của thám mã Mặt khác, độ dài khóa k cũng cần nhỏ ở mức nào đó sao cho việc tạo, phân phối và lưu trữ khóa có thể thực hiện được hiệu quả và

an toàn Chẳng hạn, DES có độ dài khóa là 64 bit, còn cỡ khóa thực sự là 56 bit Tấn công vét cạn khóa là không thể nhưng cũng không là quá xa vời Nhiều gợi ý muốn tăng cỡ khóa thực sự của DES Chẳng hạn, mở rộng cỡ khóa thực sự của DES tới 128 bit bằng phép mã bội ba dùng hai khóa xem là một cách thức chuẩn để sử dụng DES

1.4 Nguyên lý thiết kế mã khối

Một hệ mã khối tốt là phải "khó phá và dễ sử dụng" Cả hai hàm mã hóa E( , ) gz và hàm giải mã D( , ) gz nên dễ dàng tính toán Còn việc giải khóa z

từ y = E(x, z) và x = D(y, z) nên là bài toán khó Nguyên lý thiết kế cho một

hệ mã khối có thể chia thành nguyên lý thiết kế chung về độ an toàn và nguyên lý thiết kế cho ứng dụng

1.4.1 Nguyên lý thiết kế chung về độ an toàn

Chỉ có hai nguyên lý thiết kế được chấp nhận chung đối với các mã an toàn thực tế là các nguyên lý về độ hỗn độn (confusion) và độ khuyếch tán (diffusion) đã được gợi ý bởi Shannon

Nguyên lý về độ hỗn độn (confusion):

Sự phụ thuộc của khóa trên bản rõ và bản mã nên phải phức tạp sao cho

nó không có ích gì đối với kẻ thù có ý định tìm qui luật để phá mã Chẳng hạn, phương trình nhị phân mô tả mã khối nên là phi tuyến và phức tạp sao cho việc giải khóa z từ x và y = E(x, z) là không thể

Nguyên lý về độ khuyếch tán (diffusion):

Với mỗi khóa cụ thể hàm mã hóa không nên có sự phụ thuộc thống kê nào giữa các cấu trúc đơn giản trong bản rõ và các cấu trúc đơn giản trong

xiii

Trang 14

bản mã và rằng không có quan hệ đơn giản nào giữa các hàm mã hóa khác nhau Nguyên lý khuyếch tán đòi hỏi, chẳng hạn một hệ mã khối cần được thiết kế có tính đầy đủ hoặc gần đầy đủ, tức là mỗi bit rõ và mỗi bit khóa đều ảnh hưởng tới mỗi bit mã

1.4.2 Nguyên lý thiết kế cho ứng dụng

Một hệ mã khối có thể ứng dụng cả phần cứng và phần mềm Trong ứng dụng cứng thường được thực hiện bởi các chíp VLSI có tốc độ cao Trong ứng dụng mềm phải có tính mềm dẻo và giá thành thấp Trên cơ sở đặc tính khác nhau của phần cứng và phần mềm, các nguyên lý thiết kế cho mã khối cũng chia thành hai phần

Nguyên lý thiết kế cho ứng dụng mềm

- Sử dụng khối con: Các thao tác mã khối nên thực hiện trên các khối con có độ dài tự nhiên cho phần mềm là 8, 16, 32 bit Hoán vị bit là khó thực hiện trong phần mềm nên tránh

- Sử dụng các phép toán đơn giản: Các thao tác mã trên các khối con nên chọn dễ dàng cho ứng dụng với các tập lệnh cơ sở của các bộ xử lý chuẩn chẳng hạn như phép cộng, phép nhân, phép dịch

Nguyên lý thiết kế cho ứng dụng phần cứng

Sự tương tự trong phép mã hóa và phép giải mã: Quá trình mã hóa và giải mã nên chỉ khác nhau ở cách sử dụng khóa mật sao cho cùng một thiết bị có thể

sử dụng được cho cả phép mã hóa và phép giải mã

Rất nhiều thuật toán mã hóa khối có tính chất của mạng Feistel (như hình 1.2), hay tổng quát hơn là hệ thống mạng thay thế - hoán vị (SPN) Các thành phần sử dụng trong thuật toán là các hàm toán học, các hàm lô gíc (đặc biệt là hàm XOR), hộp thế (S-box) và các phương pháp hoán vị

xiv

Trang 15

Hình 1.1 Mô hình mã Feistel

Hình 1.2 Mô hình mã SPN

xv

Trang 16

1.5 Các thành phần của mã khối

Hàm vòng

Hầu hết các thuật toán mã hóa khối sử dụng lặp đi lặp lại các hàm đơn giản f Phương pháp này còn được gọi là mã khối lặp Mỗi chu kỳ lặp được gọi là một vòng Đầu ra của mỗi vòng là hàm đầu ra của vòng trước đó và của một khóa con được thiết kế từ khóa bí mật đầy đủ bởi một lược đồ tạo khóa Một mã khối khóa bí mật như thế với r-phép lặp được gọi là một mã lặp r-vòng Hàm f được gọi là hàm vòng Thông thường các thuật toán có từ 4 tới

32 vòng Ví dụ, DES là một mã lặp 16-vòng

Hình 1.3 Một mã lặp r-vòng với hàm vòng f

Tầng biến đổi tuyến tính: Là các phép biến đổi tuyến tính, thường là phép

nhân ma trận, hoán vị,… Thực hiện nguyên lý “khuyếch tán”

Tầng biến đổi phi tuyến (tầng thay thế): Là các phép biến đổi phi tuyến, là

“cốt lõi” an toàn của 1 hệ mật Nhằm mục đích tạo tính “xáo trộn”, thường được thực hiện bằng các hộp thế

Lược đồ tạo khóa: Được dùng để tạo ra các khóa con (khóa vòng) từ khóa

chính (như hình trên) nhằm mục đích tạo quan hệ phức tạp giữa các khóa con (không quá phức tạp), để có thể chống lại các tấn công khóa quan hệ (related-key attacks)

Trang 17

1.6 Một số chế độ hoạt động của mã khối

Như chúng ta đã biết, thuật toán mã khối được sử dụng để mã hóa các khối thông điệp có độ dài xác định Nhưng trong thực tế, thông điệp có thể có

độ dài bất kỳ Chính vì thế, mã khối được xây dựng ở nhiều chế độ mã hóa khác nhau để phù hợp với từng loại dữ liệu được bảo vệ, tức là phụ thuộc vào từng ứng dụng cụ thể Mỗi chế độ mã hóa có đặc tính khác nhau về lan truyền lỗi (lỗi mã hóa trong khối này ảnh hưởng tới khối khác), khả năng truy xuất ngẫu nhiên và khả năng chống lại các kiểu tấn công khác nhau Hiện nay có rất nhiều chế độ được đệ trình và đang tiếp tục được xem xét, đánh giá Trong phạm vi của đồ án này, chúng ta sẽ chỉ giới thiệu một số chế độ quen thuộc được sử dụng phổ biến nhất

1.6.1 Chế độ từ điển mã điện tử (ECB-Electronic Codebook)

ECB là chế độ mã hóa đơn giản nhất Thông điệp cần mã hóa được chia thành các khối và mỗi khối được mã hóa riêng biệt Chế độ ECB được minh hoạ trong Hình 1.4 và có dạng thuật toán sau:

Hình 1.4 Chế độ mã hóa ECB

*Thuật toán ECB

Đầu vào: k-bit khoá K, các khối rõ n-bit x1, x2, , xt

Kết quả: tạo ra các khối mã c1, c2, , ct ; giải mã để tìm ra bản rõ

+Mã hoá: với 1≤j≤t, cj ← EK(xj)

xvii

xin

keykey

Trang 18

+Giải mã: với 1≤j≤t, xj ← EK-1(cj).

*Tính chất của chế độ hoạt động ECB

- Các khối rõ như nhau (dưới cùng một khoá) sẽ cho các khối mã giống nhau Điều này đặc biệt thể hiện rõ với các dữ liệu lặp lại nhiều lần chẳng hạn như các dữ liệu hình ảnh Việc để lộ tính lặp lại của bản rõ

có thể dẫn tới các tấn công theo phương pháp phân tích thống kê

- Sự phụ thuộc móc xích : Các khối được mã hoá một cách độc lập với các khối khác Việc sắp xếp lại thứ tự các khối mã cũng sẽ tương ứng với việc phải xắp xếp lại các khối rõ

- Tính lan sai: một hoặc nhiều bít bị sai trong một khối đơn lẻ chỉ ảnh hưởng tới chính việc giải mã của khối đó

- Tính xử lí dữ liệu song song: mã hóa tuần tự nhưng giải mã có thể song song

Chế độ ECB được sử dụng khi một khối đơn thông tin cần gửi đi (chẳng hạn như một khóa phiên được mã hóa bằng cách dùng một khóa chính), tức là nó chỉ có ích khi gửi một khối dữ liệu nhỏ

1.6.2 Chế độ móc xích khối mã (CBC- Cipher-block Chaining)

Chế độ hoạt động CBC được phát minh bởi IBM vào năm 1976 Trong chế độ CBC, bản rõ sẽ được chia thành các khối như trong chế độ ECB, tuy nhiên, mỗi khối bản rõ sẽ được XOR với khối bản mã trước đó trước khi được

mã hóa Bằng cách này, mỗi khối bản mã phụ thuộc vào mọi khối bản rõ xử

lý trước đó Ngoài ra, để làm cho mỗi thông điệp là duy nhất, phải sử dụng một véc tơ khởi tạo IV trong khối đầu tiên

xviii

Trang 19

Hình 1.5 Chế độ mã hóa CBCChế độ CBC được minh hoạ trong hình 1.5, trong đó bao gồm cả việc

sử dụng một véc tơ ban đầu n-bit (ký hiệu là IV) và có dạng thuật toán sau

*Thuật toán CBC

Đầu vào: k-bit khoá K, véc tơ ban đầu n-bit IV, các khối rõ n-bit x1, x2, , xt.Kết quả: tạo ra các khối mã c1, c2, , ct ; giải mã để tìm ra bản rõ

+Mã hoá: c0← IV Với 1≤j≤t, cj ← EK(cj-1 ⊕ xj)

+Giải mã: c0 ← IV Với 1≤j≤t, xj ← cj-1 ⊕ EK-1(cj)

*Tính chất của chế độ hoạt động CBC

- Các bản rõ giống nhau: kết quả các khối mã sẽ như nhau khi cùng bản

rõ được mã hoá dưới cùng một khoá và IV Thay đổi IV, khoá hoặc khối rõ đầu tiên thì bản mã kết quả sẽ khác nhau

- Sự phụ thuộc móc xích: cơ chế móc xích làm cho bản mã cj phụ thuộc vào xj và toàn bộ các khối rõ trước đó Hệ quả là việc sắp xếp lại các khối mã sẽ là ảnh hưởng đến việc giải mã Việc giải mã đúng một khối

mã đòi hỏi phải giải mã đúng khối trước đó

xix

C0 = IV

E-1

ci-1E

ci-1

ci

nkey

Trang 20

- Tính lan truyền lỗi: sai một bít trong khối mã cj sẽ ảnh hưởng việc giải

mã các khối cj và cj+1 (từ chỗ xj phụ thuộc vào cj và cj-1) Khối xj’ được giải từ cj sẽ sai ngẫu nhiên khoảng 50%, trong khi bản rõ x’j +1 có các bít sai như chỗ cj sai Do đó thám mã đối phương có thể dự đoán sự thay đổi bit trong xj+1 bằng cách thay đổi các bit tương ứng của cj

- Khắc phục sai: chế độ CBC là kiểu tự đồng bộ theo nghĩa nếu một sai

số (bao gồm cả việc mất một hoặc nhiều hơn các khối đầu vào) xuất hiện trong khối cj nhưng không có ở trong cj+1, cj+ 2 thì sẽ được giải mã chính xác tới khối xj+2

Chế độ CBC phù hợp với các yêu cầu cần gửi các lượng lớn dữ liệu một cách an toàn (chẳng hạn như FTP, WEB, EMAIL) Trong chế độ này, IV phải được sinh ngẫu nhiên tại thời điểm thực hiện phép mã Khó khăn nhất trong

sử dụng CBC chính là quản lý các giá trị IV, thường thì cả bên gửi và bên nhận đều biết, hoặc sẽ được thay đổi bằng các giá trị mới ở bên gửi và gửi cho bên nhận trước khi mã hóa dữ liệu IV nên được gửi đi sau khi đã mã hóa bằng ECB

1.6.3 Chế độ phản hồi mã (CFB- Cipher feedback)

Trong khi chế độ CBC xử lý cả n-bit rõ một lúc (sử dụng một mã khối n-bit), thì một vài ứng dụng đòi hỏi các đơn vị r-bit rõ là được mã và truyền đi không được trễ, với r cố định thoả mãn r < n (thường r =1, hoặc r = 8) Trong trường hợp đó, chế độ phản hồi mã CFB có thể được sử dụng, nó được minh hoạ trong Hình 1.6 và có dạng thuật toán sau

*Thuật toán CFB-r

Đầu vào: k-bit khoá K, véc tơ ban đầu n-bit IV, các khối rõ n-bit x1, x2, , xu (1≤r≤n)

Kết quả: tạo ra các khối mã r-bit c 1 , c 2 , , c u ; giải mã để tìm ra bản rõ

+Mã hoá: I1 ← IV (Ij là giá trị đầu vào của một thanh ghi dịch) Với 1≤ju:

(a) Oj← EK(Ij) (tính toán đầu ra của mã khối)

(b) tj← r –bit bên trái nhất của Oj

(c) cj ← xj ⊕ tj (truyền khối mã r-bit cj)

xx

Trang 21

(d) Ij+1← 2r.Ij + cj mod 2n (Dịch cj sang phía cuối bên phải của thanh ghi dịch)

+Giải mã: I1 ← IV Với 1≤j≤u, sử dụng cj nhận được:

xj← cj⊕ tj, ở đây tj, Oj và Ij được tính ở trên

Hình 1.6 Chế độ mã hóa CFB

*Tính chất của chế độ hoạt động CFB

- Các bản rõ giống nhau: cũng giống như chế độ CBC, sự thay đổi IV làm cho cùng một bản rõ đầu vào như nhau sẽ được mã hoá thành các bản mã khác nhau Véc tơ IV không cần phải giữ bí mật (mặc dù trong ứng dụng thì cũng nên dùng IV khó đoán được để an toàn)

- Sự phụ thuộc móc xích: tương tự như chế độ CBC, cơ chế móc xích làm cho khối mã cj phụ thuộc vào cả xj và các khối rõ trước đó, hệ quả

là việc thay đổi thứ tự của các khối mã sẽ ảnh hưởng tới việc giải mã

n

rr

Trang 22

Việc giải mã chính xác một khối mã đòi hỏi n/k khối mã trước đó phải chính xác (để cho thanh ghi dịch chứa đủ các giá trị đúng).

- Tính lan sai: một hoặc nhiều hơn bít sai trong một khối mã đơn lẻ r-bit

c j sẽ ảnh hưởng việc giải mã ngay tại đó và ảnh hưởng tới việc giải mã

n/k khối tiếp theo Thám mã đối phương cũng có thể dự đoán sự thay

đổi bit trong x j bằng cách thay đổi các bit tương ứng của c j

- Khắc phục sai: chế độ CFB là tự đồng bộ tương tự như CBC, nhưng đòi hỏi n/k khối mã để khắc phục

- Tốc độ mã hoá: với r<n, tốc độ mã hoá sẽ giảm đi n/r lần (khác với CBC) theo nghĩa mỗi một lần thực hiện E chỉ cho ra r-bit bản mã

- Tính xử lí dữ liệu song song: mã hóa tuần tự, nhưng giải mã có thể song song

Lưu ý: trong chế độ CFB cả phép mã hoá và giải mã đều cùng sử dụng hàm

E Do đó, chế độ CFB không nên dùng nếu như thuật toán là dùng công khai

1.6.4 Chế độ hoạt động Counter (CTR)

Chế độ Counter chuyển một thuật toán mã khối thành một mã dòng Nó tạo ra khối dòng khóa kế tiếp bằng cách mã hóa các giá trị kế tiếp của bộ đếm Counter Bộ đếm counter có thể có chức năng tạo ra dãy tuần tự để đảm bảo không có sự lặp lại trong khoảng thời gian dài, thực tế nó là một một bộ đếm đơn giản và phổ biến nhất Việc sử dụng chức năng đầu vào định trước đơn giản như vậy đã gây nhiều tranh cãi, người ta cho rằng việc cố ý bộc lộ một

hệ mã có đầu vào hệ thống biết trước sẽ mang lại sự rủi ro không mong muốn Nhưng hiện nay, chế độ CTR được chấp nhận rộng rãi, và các vấn đề về chức năng đầu vào được chấp nhận như là một điểm yếu của thuật toán mã khối chứ không phải ở chế độ CTR Tuy nhiên, vẫn có những tấn công đặc biệt như tấn công lỗi phần cứng (Hardware Fault Attack) khi sử dụng các hàm đếm counter đơn giản cho đầu vào

Lưu ý rằng giá trị Nonce trong hình dưới đây là tương tự như véc tơ khởi tạo (IV) Nonce và bộ đếm counter có thể được ghép, cộng, hoặc XOR với lại với nhau để tạo ra khối counter duy nhất cho phép mã

xxii

Trang 23

Hình 1.7 Mã hóa trong chế độ CTR

Trang 24

Vì không có phản hồi nên các chế độ mã hóa và giải mã CTR có thể được thực hiện song song, nó cũng cho phép tính truy nhập ngẫu nhiên trong khi giải mã Như vậy, chế độ CTR là rất thích hợp để hoạt động trên một máy nhiều vi xử lý, khi đó các khối có thể được mã hoá song song.

1.6.5 Chế độ phản hồi đầu ra (OFB-Output feedback)

Chế độ OFB có thể sử dụng trong các ứng dụng khi tất cả các lan sai phải được loại bỏ Tương tự như với CFB có thể cho phép mã hoá với các

kích cỡ khối thay đổi, nhưng khác ở chỗ đầu ra của hàm mã hoá E phục vụ

như là một bộ phận phản hồi Chế độ OFB biến một thuật toán mật mã khối thành một thuật toán mật mã dòng đồng bộ: nó tạo ra các khối dòng khóa, mà sau đó được XOR với các khối bản rõ để có được bản mã

Ưu điểm lớn nhất của OFB là tránh được các lỗi truyền dẫn Tuy nhiên,

nó cũng có nhược điểm là dễ bị trượt bit và yêu cầu một thủ tục đồng bộ hóa phức tạp hơn Chế độ này sẽ được nghiên cứu sâu hơn trong phần 2 của đồ án này

1.6.6 Chế độ kết hợp bảo mật và xác thực CCM

Chế độ CCM là kết quả của một nghiên cứu trong những năm gần đây

về sự phát triển của các chế độ mã khối mà cung cấp đồng thời cả tính bảo mật và xác thực Trong chuẩn SP800-38C, NIST khuyến nghị chế độ này sử dụng cho các thuật toán mã khối mà tạo ra các phân bố ngẫu nhiên đều hoặc gần ngẫu nhiên đều với mỗi khóa khác nhau Hơn nữa vấn đề thiết lập khóa cho các bên cũng phải được chứng nhận là an toàn, bí mật Số các lần gọi mã khối trong một chu kỳ của khóa là không quá 261 Chế độ này được thiết kế ngầm định cho các mã khối 128-bit Một mô tả cụ thể về chế độ CCM sẽ được đưa ra trong phần 3

Dưới đây là một ví dụ nổi bật về mức độ mã hóa che giấu dữ liệu được

so sánh giữa chế độ ECB với các chế độ hoạt động khác của mã khối Hình ảnh ngoài cùng bên trái là hình ảnh cần được mã hóa, hình ở giữa là kết quả thu được khi thực hiện mã hóa sử dụng chế độ ECB Hình ảnh bên phải là hình bản mã thu được khi thực hiện mã hóa sử dụng một trong các chế độ còn lại (chế độ CBC, CTR, OFB…)

xxiv

Trang 25

Hình 1.9 Ví dụ so sánh chế độ mã ECB với các chế độ khác

xxv

Trang 26

Chương 2 NGHIÊN CỨU CHẾ ĐỘ PHẢN HỒI ĐẦU RA (OFB)

2.1 Mô tả chế độ phản hồi đầu ra OFB

Hoạt động của chế độ OFB là chuyển tiếp thẳng Như đã được định nghĩa trong chuẩn FIPS PUB (Hình 2.1), ở chế độ này, người gửi và người nhận cần sắp xếp để các Vector khởi tạo (IV) được đồng bộ, nghĩa là IV sẽ được sinh ra ở bên gửi, sau đó chuyển qua cho bên nhận hoặc được sinh ra trong nội bộ mỗi bên (tất nhiên là đã được thỏa thuận trước) Bộ công cụ DES hoạt động ở chế độ mã hóa ở cả người gửi và người nhận Tại bên gửi, dòng khóa được XOR với các bản rõ để tạo ra các bản mã, và ở nơi nhận cũng như thế, dòng khóa đồng bộ lại được XOR với dữ liệu bản mã đã nhận được để hủy bỏ dòng khóa và tạo ra bản rõ ban đầu

Vì dòng khóa mã hóa được sinh ra trong nội bộ, nó không chịu ảnh hưởng của lỗi truyền tải Nếu bản mã được nhận bị lỗi, thì khi giải mã chỉ các bit tương ứng của bản rõ nhận được bị sai Do đó, OFB được gọi là không lan truyền lỗi

xxvi

Trang 27

Chế độ OFB trong trường hợp chung

FIPS PUB 81sử dụng hình bên trên để mô tả chế độ OFB trong trường

hợp khái quát chung với tùy chọn r<64 bit nhằm tương thích với chế độ phản

hồi mã CFB, và có lẽ để đơn giản hóa cho thiết kế chip Tuy nhiên, việc phân tích đã được trình bày ở CRYPTO 82 của Davies và Parkin cho thấy rằng việc

sử dụng OFB với ít hơn khối phản hồi đầy đủ sẽ làm phát sinh những chu kỳ ngắn không thể chấp nhận Những bất lợi khác của quá trình trong mô hình

này là tốc độ chip DES bị lãng phí bởi việc bỏ đi (64-r) bit Không giống như CFB, chế độ OFB không tự đồng bộ hóa, do đó có rất ít lý do để sử dụng r =

1, r = 8, hoặc giá trị nào khác của r nhỏ hơn r = 64, chỉ có chế độ OFB với r=64 bit là được khuyến khích sử dụng Chế độ phản hồi 1-bit và 8-bit thường

Bản mã(hoặc bản rõ) (r bit)

Khối đầu vào đầu tiên chứa một vectơ khởi tạo 64 bit (IV)

r

Bản rõ

(hoặc bản mã)

(r bit)

Trang 28

được sử dụng cho phép mã hóa đồng thời 1-bit hay 1 byte dữ liệu Ở đây, chúng ta mô tả chế độ phản hồi 64-bit (Hình 2.2).

Như đã nói ở trên, chế độ OFB được sử dụng để mã hóa các dữ liệu được cung cấp rời rạc như tín hiệu nhận được từ vệ tinh, hoặc tín hiệu do một

bộ cảm biến nào đó truyền về,…, các ứng dụng mà yêu cầu tất cả các lan truyền lỗi phải được loại bỏ

Hình 2.2 Mã hóa và giải mã trong chế độ OFB

*Thuật toán OFB phản hồi r-bit

Đầu vào: k-bit khoá K, véc tơ ban đầu n-bit IV, các khối rõ r-bit x 1 , x 2 , , x u

(1≤rn).

Kết quả: tạo ra các khối mã r-bit c 1 , c 2 , , c u ; giải mã để tìm ra bản rõ

+Mã hoá: I 1 IV Với 1ju, và khối rõ x j cho trước thực hiện:

(a) O j E K (I j ) (tính toán đầu ra của mã khối)

(b) t j r –bit bên trái nhất của Oj

r-bits bên

trái nhất

r-bits bên trái nhất

Trang 29

(c) c j x j t j (truyền khối mã r-bit cj)

(d) I j+1 2 r I j + t j mod 2 n (Dịch đầu ra t j sang phía cuối bên phải của thanh ghi dịch)

+Giải mã: I 1 IV Với 1ju, sử dụng cj nhận được:

x j c j t j , ở đây t j , O j và I j được tính ở trên

*Tính chất của chế độ hoạt động OFB

- Các bản rõ giống nhau: cũng giống như chế độ CBC và CFB, sự thay

đổi IV làm cho cùng một bản rõ đầu vào như nhau sẽ được mã hoá

thành các bản mã khác nhau

- Sự phụ thuộc móc xích: Dòng khoá là độc với bản rõ

- Tính lan sai: một hoặc nhiều hơn bit sai trong ký tự mã bất kỳ c j sẽ chỉ

ảnh hưởng việc giải mã ngay tại ký tự đó, chính xác là ảnh hưởng tới vị trí bit sai làm cho bit bản rõ được giải ra sẽ là bit phần bù của bit rõ đúng

- Khắc phục sai: chế độ OFB khắc phục các bit mã sai, nhưng không thể

tự đồng bộ sau khi đã mất các bit mã, chúng làm lệch đi dòng khoá để giải mã (trong trường hợp này phải tiến hành đồng bộ lại)

- Tốc độ mã hoá: với r<n, tốc độ mã hoá sẽ giảm đi n/r lần (như với

CFC)

Lưu ý: Trong chế độ OFB, vectơ IV không cần giữ bí mật, nhưng phải thay

đổi nếu khoá mật K của chế độ OFB được dùng lại Ngược lại, dòng khoá kết quả sẽ như nhau, và bằng phép XOR tương ứng giữa các bản mã, đối phương

có thể rút ngắn quá trình thám mã để tìm các thông tin rõ tương ứng

2.3 Nghiên cứu các đánh giá đảm bảo độ an toàn của OFB

2.3.1 Phân tích chế độ OFB không khởi tạo lại mầm

Xem xét một chu kỳ các khối đầu ra 64-bit được tạo ra bởi OFB từ một giá trị mầm ban đầu Chúng ta biết rằng bởi vì DES tạo ra một đầu ra duy nhất từ một đầu vào cho trước và ngược lại, chu kỳ tạo ra từ giá trị mầm đó không có điểm chung với bất kỳ chu kỳ nào khác cùng được tạo ra bởi khóa

xxix

Trang 30

đó Chúng ta vẫn chưa biết làm thế nào để tính toán độ dài của chu kỳ cho trước bất kì, cũng không biết có bao nhiêu chu kỳ có thể được tạo ra bởi một khóa cho trước, nhưng nếu chúng ta đã truy cập vào một máy DES đủ mạnh, chúng ta có thể chỉ đơn giản là chạy nó cho đến khi chúng ta trả lời được những câu hỏi trên.

Giả sử chúng ta đã có một máy DES như vậy, chúng ta có thể bắt đầu cho nó hoạt động ở một số điểm ngẫu nhiên và để cho nó tiếp tục cho đến khi chu kỳ này khép lại ngay sau nó Sau đó, chúng ta có thể khởi động lại quá trình, chú ý là phải sử dụng một giá trị mầm mới không được chứa trong chu

kỳ đầu Quá trình đó sẽ chạy cho đến khi cuối cùng nó đóng lại ngay sau nó, kết thúc chu kỳ thứ hai,và vv (ngoài việc chúng ta phải có một máy DES rất mạnh mẽ, mà chúng ta cũng cần phải có một bộ nhớ 264 bit để chúng ta có thể theo dõi những biến gì đã được khảo sát) Nếu chúng ta tiếp tục thử nghiệm giả thuyết này cho đến khi hết toàn bộ không gian của 264 biến, chúng ta có thể xếp các chu kỳ theo độ dài của chúng, với chu kỳ ngắn nhất (chiều dài J1) đầu tiên Nếu chúng ta đã có các kết quả của một hàng như vậy, tiếp theo chúng ta chọn ngẫu nhiên một giá trị khởi đầu mới, ít nhất chúng ta cũng biết rằng với mỗi một khóa cho trước sẽ có một chiều dài chu kỳ được đảm bảo nhỏ nhất J1, và tùy theo đó chu kỳ được lựa chọn bởi hiệu quả của giá trị mầm ban đầu, xác suất lặp lại giá trị mầm sẽ là 0 với I<J lần lặp, và sẽ tăng đến một số giá trị khác 0 một thời gian sau đó

Nếu chúng ta đã vượt qua điểm I = J1 mà không có sự lặp lại giá trị mầm ban đầu, chúng ta sẽ biết rằng chu kỳ chúng ta đã và đang thăm dò sau

đó không phải là chu kỳ ngắn nhất, và từ đó chúng ta có thể loại bỏ khỏi không gian M = 264 không chỉ I = J1 điểm đã được chúng ta kiểm tra như là một phần của chu kỳ này, mà còn cả những điểm J1 đã được chứa trong chu

kỳ ngắn nhất, tức là có thể loại bỏ (I+J1) điểm

Cuối cùng, chúng ta cũng có thể chuyển sang điểm I = J2 trong lần lặp lại của chúng ta, với J2 là độ dài của chu kỳ ngắn nhất thứ hai đối với khóa này Sau đó chúng ta đã có thể loại trừ (J1 + J2 + I) biến từ không gian mà chúng ta đang khảo sát (M=264), mặc dù chúng ta chỉ có I = J2 khả năng đã thăm dò trong khi việc tìm kiếm kết thúc của chu kỳ cụ thể đã được xác định

xxx

Trang 31

bởi giá trị mầm ban đầu Tiếp tục quá trình này, chúng ta sẽ sử dụng hết hoàn toàn một dãy tăng các khả năng J1 + J2 + + Jn + I chỉ sau khi đã thăm dò đến I = Jn biến Khó khăn là ở chỗ chúng ta thực sự không thể chạy quá trình giả định này để xác định tất cả Jn biến đó, vì vậy chúng ta không biết có bao nhiêu cuộc thị sát (progress) chúng ta đang làm, hoặc kích thước của không gian biến còn lại là bao nhiêu sau N phép lấy đầu ra Tuy nhiên, chúng ta có thể có được một ước tính về độ dài chu kỳ thông qua những thứ đã được thực nghiệm chứng thực sau đây.

Thiết kế của thuật toán DES cùng với các bằng chứng sẵn có cho thấy rằng DES trong chế độ OFB sẽ là một bộ tạo số ngẫu nhiên tốt Do đó chúng

ta sẽ đưa ra một giả định rằng đầu ra của OFB với r = 64 sau mỗi lần lặp có

thể được xấp xỉ bởi một quá trình thay thế mà không cần có kết quả ngẫu nhiên, trong đó giá trị mầm ban đầu đã được bỏ trở lại vào không gian của 264 biến Chúng ta sẽ tạm thời bỏ qua tất cả các chu kỳ trừ chu kỳ ngắn nhất-chu

kỳ được chỉ định có chiều dài J

Khi đó, xác suất mà đầu ra đầu tiên giống với giá trị mầm sẽ là 0 hoặc

là 1/M nếu J = 1 Xác suất mà đầu ra thứ hai giống mầm sẽ là 0 hoặc 1 / (M - l) Nhìn chung, xác suất mà đầu ra lần thứ I giống với mầm sẽ là 0 với I<J, và

1 / [M-(I – l)]= 1/(M-I+1) với I ≥ J Do đó xác suất để đầu ra thứ I không phải

là mầm sẽ là 1 với I<J, và là [1 - 1 / (M-I + l)] hoặc (M – I) / (M – I + 1) với I≥J

Xác suất mà không có một giá trị đầu ra nào bằng với giá trị mầm sau

N ≥ J chu kỳ là tích của tất cả các xác suất trên Dễ dàng nhận thấy rằng tử số thứ I và mẫu số thứ I-1 có thể giản ước với nhau nên chúng ta có:

Trang 32

Bây giờ chúng ta sẽ luận giải độ dài chu kỳ tối thiểu J Nếu J trong thực

tế là khá lớn thì với các giá trị nhỏ N <J, xác suất lặp lại sẽ thực sự là 0, và chúng ta giả định rằng trong trường hợp này, OFB là an toàn Mặt khác, nếu

N là nhỏ so với M, và nếu chúng ta giả sử rằng có thể có một số lượng nhỏ các chu kỳ rất ngắn để cho J gần bằng 1 Khi đó, chúng ta có thể ước tính được xác suất lặp lại giá trị đầu ra sau N phép lấy đầu ra trong trường hợp IV không bao giờ được khởi tạo lại là:

1 Số lượng trung bình các chu kỳ OFB có chiều dài J là 1 / J, với độ lệch bằng căn bậc hai của 1 / J

2 Xác suất mà một khóa sẽ tạo ra một hoặc nhiều hơn các chu kỳ của cùng một chiều dài (ví dụ như hoạt động mã hóa / giải mã định danh) là

( 1)

1

M M

là đúng, tuy nhiên mọi cố gắng để công nhận tính hợp lệ của một giả thuyết như vậy là tương đương với một bài toán tìm kiếm đầy đủ bình phương mà chúng ta có lẽ sẽ không bao tìm được

xxxii

Trang 33

Để thận trọng, có lẽ chúng ta nên hạn chế số chu kỳ OFB không có khởi tạo lại hoặc thay đổi khóa về cơ bản là nhỏ hơn 263, vừa để hạn chế khả năng truyền tải theo chiều sâu gây ra bởi một lỗi trong các giả định của chúng

ta, vừa để hạn chế tổn thất nếu một thỏa hiệp như vậy đã xảy ra

Việc phát hiện sự cố của một chu kỳ sẽ là tương đối dễ dàng trong trường hợp OFB không bao giờ khởi tạo lại IV, vì vậy, xác suất xảy ra sự cố

sẽ được giữ thấp nhất trong trường hợp này

2.3.2 Phân tích OFB khởi tạo lại mầm ngẫu nhiên

Một câu hỏi thú vị khác là độ dài có thể có của một chu kỳ là gì nếu thỉnh thoảng chu kỳ OFB bị gián đoạn và bị khởi tạo lại ngẫu nhiên (ví dụ để khởi động lại hoặc đồng bộ hoá lại một hệ thống thông tin liên lạc liên kết định kỳ) Trong trường hợp này, chúng ta sẽ đứng trên một cơ sở vững chắc hơn nhiều đối với các giả định

Nếu một loạt các giá trị ngẫu nhiên là đầu vào cho thuật toán DES, chúng ta có thể ước tính được xác suất mà không một đầu ra nào là giống nhau trong số N đầu ra bằng việc làm sáng tỏ vấn đề cái được gọi là nghịch lý ngày sinh- trong đó tính toán xác suất mà không có hai người nào trong số N người trong một căn phòng có cùng ngày sinh (nghịch lý ngày sinh sẽ được nói đến trong phần phụ lục)

Giả sử rằng, một giá trị thực sự ngẫu nhiên là một đầu vào cho thuật toán DES, một giá trị đầu ra 64-bit duy nhất được tạo ra, và sau đó một đầu ra thứ hai cũng được tạo ra bằng cách mã hóa một giá trị ngẫu nhiên thứ hai Xác suất để đầu ra thứ hai khác với đầu ra thứ nhất là M 1

M

−, với M =264 Nhìn chung, xác suất để giá trị đầu ra thứ i không giống với bất kỳ giá trị nào từ giá trị thứ i-1 trở về trước là M i

M

− Xác suất để tất cả các giá trị đầu ra đôi một khác nhau là tích số:

Ngày đăng: 09/04/2016, 09:46

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. TS. Trần Văn Trường &amp; ThS. Trần Quang Kỳ. “Giáo trình mật mã học nâng cao” Sách, tạp chí
Tiêu đề: Giáo trình mật mã học nâng cao
2. Robert R.Jueneman. Analysis of certain aspects of Output Feedback Mode. Satellite Business Systems 8283 Greensboro Drive tlcLean, VA 22102 Khác
3. Jakob Jonson. On the security of CTR + CBC-MAC NIST Modes of Operation – Additional CCM Documentation Khác
4. Morris Dworkin. Recommendition for Block Cipher Modes of Operation: The CCM Mode for Authentication anh Confidentiality.Gaithersburg, MD: U.S. Dept. of Commerce, Technology Administration, National Institute of Standards and Technology Khác
5. Wenbo Mao. Modern Cryptography: Theory and Practice Khác

HÌNH ẢNH LIÊN QUAN

Hình 1.3. Một mã lặp r-vòng với hàm vòng f - Nghiên cứu một số chế độ sử dụng mã khối an toàn
Hình 1.3. Một mã lặp r-vòng với hàm vòng f (Trang 16)
Hình 1.7 Mã hóa trong chế độ CTR - Nghiên cứu một số chế độ sử dụng mã khối an toàn
Hình 1.7 Mã hóa trong chế độ CTR (Trang 23)
Hình 1.9 Ví dụ so sánh chế độ mã ECB với các chế độ khác - Nghiên cứu một số chế độ sử dụng mã khối an toàn
Hình 1.9 Ví dụ so sánh chế độ mã ECB với các chế độ khác (Trang 25)
Bảng 2-2. Xác suất lặp lại trong trường hợp vectơ IV được khởi tạo lại cứ sau - Nghiên cứu một số chế độ sử dụng mã khối an toàn
Bảng 2 2. Xác suất lặp lại trong trường hợp vectơ IV được khởi tạo lại cứ sau (Trang 38)
Hình 3.2 Sơ đồ mã hóa CTR trong chế độ CCM - Nghiên cứu một số chế độ sử dụng mã khối an toàn
Hình 3.2 Sơ đồ mã hóa CTR trong chế độ CCM (Trang 50)
Hình 3.1 Sơ đồ tạo thẻ CBC-MAC trong chế độ CCM - Nghiên cứu một số chế độ sử dụng mã khối an toàn
Hình 3.1 Sơ đồ tạo thẻ CBC-MAC trong chế độ CCM (Trang 50)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w