Nội dung bài báo sẽ trình bày phương pháp tạo dãy giả ngẫu nhiên mới, sử dụng thuật toán sinh các bit ngẫu nhiên dựa trên tổ hợp các thanh ghi dịch phản hồi tuyến tính (LFSR) đáp ứng y[r]
Trang 1PHƯƠNG PHÁP TẠO DÃY GIẢ NGẪU NHIÊN ĐỂ ỨNG DỤNG TRONG GIAO THỨC MẬT MÃ
Lê Danh Cường1*, Hồ Văn Canh2, Võ Văn Tùng1
Tóm tắt: Bảo vệ thông tin bằng phương pháp mật mã là giải pháp hữu hiệu hiện
nay, đặc biệt trong lĩnh vực Quốc phòng - An ninh Đối với các hệ mật, độ mật phụ thuộc chủ yếu vào khóa mã Bởi vậy vấn đề sinh khóa mã để đảm bảo an toàn cho hệ mật luôn mang tính thời sự và thực tiễn trong lĩnh vực bảo mật thông tin hiện nay Có hai phương pháp sinh khóa cơ bản là sinh khóa ngẫu nhiên và phương pháp sinh khóa giả ngẫu nhiên Tuy nhiên, hiện nay bài toán sinh khóa giả ngẫu nhiên đang được quan tâm nghiên cứu nhiều hơn Nội dung bài báo sẽ trình bày phương pháp tạo dãy giả ngẫu nhiên mới, sử dụng thuật toán sinh các bit ngẫu nhiên dựa trên tổ hợp các thanh ghi dịch phản hồi tuyến tính (LFSR) đáp ứng yêu cầu nâng cao độ an toàn của khóa mã sử dụng trong các hệ mật mã đối với lĩnh vực ANQP
Từ khóa: Bit giả ngẫu nhiên, Thanh ghi dịch NFSR, Bộ tạo bit giả ngẫu nhiên, Mật mã, Thám mã;
1 ĐẶT VẤN ĐỀ
Khi sử dụng giải pháp bảo vệ thông tin bằng mật mã, một câu hỏi đặt ra là “độ an toàn của thông tin được khẳng định như thế nào khi ứng dụng kỹ thuật mật mã ?” Ta biết rằng,
sự an toàn của thông tin hoàn toàn phụ thuộc vào độ an toàn của hệ mật sử dụng, tức là phụ thuộc vào hai yếu tố là khóa mã và thuật toán mã hóa Trong các giao dịch thương mại điện tử, thường các thuật toán mã hóa được công khai, bởi vật độ an toàn của thông tin hoàn toàn chỉ còn phụ thuộc vào độ an toàn của khóa mã Đối với các hệ mật sử dụng khóa giả ngẫu nhiên, để tạo ra khóa mã cho mỗi phiên liên lạc người ta phải cung cấp một “số ngẫu nhiên ban đầu” cho thuật toán sinh khóa, trong quá trình mã hóa thuật toán mã hóa sẽ tạo ra khóa mã dịch cho phiên liên lạc đó Số ngẫu nhiên ban đầu cung cấp cho hệ mật được gọi là “Mầm khóa” (Key Seed) Như vậy có thể nói, độ an toàn của hệ mật sẽ phụ thuộc vào mầm khóa và thuật toán sinh khóa
Giả sử trong trường hợp mã thám biết thuật toán sinh khóa, khi đó độ mật của hệ mật
sẽ chỉ còn phụ thuộc vào mầm khóa Do mầm khóa là dãy bit có độ dài hữu hạn, bởi vậy việc tấn công khai thác mầm khóa mã thám thường sử dụng tấn công vét cạn Đối với tấn công vét cạn, thời gian tấn công sẽ phụ thuộc vào độ dài của mầm khóa Để chống lại tấn công vét cạn người ta buộc phải nâng độ dài của mầm khóa Điều này dẫn đến lực lượng của không gian cung cấp mầm khóa phải đủ lớn để chống lại tấn công Để chống lại các tấn công vét cạn để tìm khóa đúng, không gian mầm khóa phải “đủ lớn” và việc chọn mầm khóa để sinh khóa phải hoàn toàn ngẫu nhiên Tuy nhiên, không gian mầm khóa được thể hiện qua độ dài khóa, độ dài khóa càng dài thì không gian khóa càng lớn Nếu độ dài mầm
Một số ví dụ điển hình chứng minh điều nhận xét ở trên:
- Đối với chuẩn mã hóa DES độ dài mầm khóa là 56 bit, không gian khóa của DES có
công vét cạn tìm khóa đúng Tuy nhiên, do sự phát triển của công nghệ tính toán ngày nay,
độ dài khóa như vậy chưa đủ để chống lại khả năng vét cạn của các cơ quan mã thám
- Hiện nay, thay vì DES, người ta sử dụng mật mã AES (Advance Encryption
và người ta tin tưởng rằng việc tấn công vét cạn là khó khả thi trừ phi có sự phát triển tính toán tiềm năng của thế hệ máy tính mới
Trang 2Đối với mã thám khi không khai thác được mầm khóa và thuật toán sinh khóa, họ sẽ tìm cách tấn công trực tiếp vào bản mã dựa trên thuật toán mã hóa
Một trong những ví dụ điển hình tấn công thuật toán mã hóa trên bản mã là thuật toán IDEA (International Data Encryption Algorithm), thuật toán này sử dụng độ dài mầm khóa
thành từng khối 8 ký tự, mỗi khối cùng một khóa mã cho trước Thuật toán sẽ mã lần lượt khối đầu tiên cho đến khối cuối cùng Nếu coi mỗi block gồm 8 ký tự là một thông báo thì thuật toán mã trùng khóa (khóa có lặp lại) Ở đây, có hai điểm mã thám sẽ sử dụng để tấn công bản mã Đó là:
- Khi viết dọc khối thứ nhất trên khối thứ hai; khối thứ hai trên khối thứ 3,.v.v cho đến khối cuối cùng, sau đó tính tần số xuất hiện các ký tự theo cột (có 8 cột tất cả) sẽ phát hiện
ra một số quy luật giúp cho tấn công
- Trong thuật toán mã hóa có sự tương ứng 1-1 giữa khối rõ với khối mã Nhưng số các
thể khả thi
Qua các kết quả công bố trong và ngoài nước mà nhóm tác giả được tiếp cận, cũng như việc phân tích ở trên, có thể thấy rằng độ mật của hệ mật phụ thuộc vào độ an toàn của khóa mã dịch, hay nói một cách khác là phụ thuộc vào độ dài của mầm khóa và độ phức tạp của thuật toán sinh khóa
Do vậy, việc nghiên cứu sinh khóa giả ngẫu nhiên sử dụng trong mật mã đóng vai trò rất quan trọng Bài báo đã tìm hiểu một số thuật toán tạo dãy giả ngẫu nhiên đã được công
bố trong và ngoài nước, trên cơ sở nghiên cứu nhóm tác giả đưa ra một thuật toán tạo khóa giả ngẫu nhiên đáp ứng cho yêu cầu bảo mật Quốc phòng - An ninh hiện nay bằng mật mã
2 MỘT SỐ KHÁI NIỆM CƠ SỞ
2.1 Một số định nghĩa
Định nghĩa 1: Một thuật toán sinh bit giả ngẫu nhiên được gọi là tất định
một dãy bit giả ngẫu nhiên độ dài l l k Dãy đầu vào k bit đó được gọi là mầm
Định nghĩa 2: Một thuật toán sinh bit giả ngẫu nhiên được gọi là thuật toán sinh bit giả
ngẫu nhiên an toàn cho mật mã nếu các dãy do thuật toán sinh ra qua được 5 tiêu chuẩn thống kê [1]
2.2 Một số thuật toán sinh bit giả ngẫu nhiên [4]
2.2.1 Thuật toán tạo bit giả ngẫu nhiên bởi thuật toán RSA
)
Lấy b là một số nguyên sao cho:
Ký hiệu: Z n*1xn:x,n1
Trang 3Lấy một số r Z n* và tính:
r
Khi đó định nghĩa:
mod 2
i
Lúc đó, dãy Zi: i 1 được gọi là dãy bit giả ngẫu nhiên được tạo ra từ thuật toán RSA
2.2.2 Thuật toán tạo bit giả ngẫu nhiên BBS (Blum_Blum_Shub)
)
(n
Q
1
B : x 0 r
2
B : Với i0,1,2, tính
n x
3
B : Đặt Z i ximod 2 với i0,1,2,
4
B : Quay lại Zi ; i1,2, là dãy bit giả ngẫu nhiên BBS
2.2.3 Thuật toán tạo bit ngẫu nhiên dựa trên bài toán logarit rời rạc
dãy: x 0 r
n x
i
1 2 0 2
i i i
p ifx Z
p ifx
(2.7)
2.3 Nhận xét
Các thuật toán sinh dãy bit giả ngẫu nhiên đã trình bày có ưu điểm là đơn giản và chất lượng của các dãy đó tuy chưa có đánh giá bằng 5 tiêu chuẩn thống kê điển hình nhất nhưng tính đồng xác suất được hiện rõ Tuy nhiên, việc cứng hóa modul mật mã khi ứng dụng các thuật toán tạo dãy giả ngẫu nhiên này phức tạp và dãy bit đó rất dễ tuần hoàn có chu kỳ không đủ lớn Bởi vậy, cùng với một số lý do khác, chẳng hạn việc xác định một
rõ ràng là không tốt vì chắc chắn dãy bit giả ngẫu nhiên do thuật toán logarit rời rạc sinh ra
sẽ tuần hoàn với chu kỳ ngắn
3 ĐỀ XUẤT THUẬT TOÁN TẠO CHUỖI BIT GIẢ NGẪU NHIÊN
ỨNG DỤNG CHO GIAO THỨC MẬT MÃ 3.1 Khái niệm thanh ghi dịch có phản hồi
Trang 43.1.1 Định nghĩa
Định nghĩa 1: Thanh ghi dịch phản hồi tuyến tính (LFSR) độ dài L gồm L trạng thái (L
Đồng thời liên hệ với một đồng hồ nhằm điều khiển việc dịch chuyển dữ liệu của thanh R Định nghĩa 2: Thanh ghi dịch R được ký hiệu:
trong đó:
là đa thức kết nối (connection polynomial) Thanh ghi dịch tuyến tính R được gọi là không
Giả sử nội dung của ô thứ i là s i{0,1}, đối với mỗi i 0 , 1 , ,L 1 Khi đó, dãy
S L1 , ,S1 ,S0 được gọi là trạng thái ban đầu (khởi tạo) của thanh LFSR
Định nghĩa 3: Cho:
] )[
2 ( ) (x GF x
Đầu ra của LFSR có độ dài cực đại với trạng thái ban đầu khác 0 được gọi là maximum
thanh ghi dịch phản hồi tuyến tính LFSR sẽ sinh ra một dãy giả ngẫu nhiên có chu kỳ cực đại là 2 L 1
điều kiện cần là độ dài thanh ghi dịch đó phải là số nguyên tố (2 L 1
là số nguyên tố mersenne)
3.1.2 Các khẳng định
Khẳng định 1: Nếu trạng thái ban đầu của LFSR là S L1, ,S1,S0 thì dãy đầu ra
,
, 1
0 S S
1 j1 2 j 2 L j Lmod2
đối với j L
Khẳng định 2: Với mọi dãy đầu ra của một LFSR L , C ( x ) là tuần hoàn với chu kỳ
1
Khẳng định 3: Cho đa thức C(x)GF(2)[x] có bậc L Khi đó: Nếu C (x)là bất khả quy trên trường GF(2), thì mỗi một 2 L 1 trạng thái ban đầu khác 0 của một LFSR không suy biến sẽ sinh ra dãy đầu ra tuần hoàn với chu kỳ bằng số nguyên dương nhỏ nhất
x
) 2 (
3.2 Thuật toán sinh dãy giả ngẫu nhiên được đề xuất
3.2.1 Cấu tạo hệ thống các thanh ghi dịch phản hồi phi tuyến
Việc xây dựng hệ thống các thanh ghi dịch với số lượng thanh, độ dài mỗi thanh và thuật toán của chúng cần có quy tắc nhất định Theo trình bày trên, độ dài mỗi thanh ghi
Trang 5dịch phải là số nguyên tố; Nếu có nhiều thanh ghi dịch độ dài khác nhau thì các độ dài của chúng phải nguyên tố với nhau từng đôi một hoặc bằng nhau Trong bài này, chúng tôi chọn 5 thanh ghi dịch với độ dài bằng nhau (bằng 31)
ghi dịch Ri có độ dài Li; i 1 , 2 , K Trong đó, các Li là những số nguyên tố
Lược đồ hoạt động của các thanh ghi dịch:
3.2.2 Tạo mầm khóa
Cho một hệ thống khóa gồm 2 khóa, mầm khóa được ký hiệu lần lượt là:
2
1
2 1 2
2 1 1
m
m d d d K
b b b K
(3.4)
Để dễ hình dung, ta lấy m1 20, m2 10, trong đó, b i,d ja,b,c, ,z và K 5,
31 5 4 3 2
1 L L L L
Các chữ cái b d i, j:i1, 20;j1,10 được chuyển thành các vectơ nhị phân 5 hoặc 8 thành phần Trong thuật toán này, ta chuyển các b d thành các vectơ nhị phân 5 thành i, j phần, được cho trong bảng 1 sau đây:
Trang 6Bảng 1 Bảng véc tơ nhị phân 5 thành phần
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 3 4 8 9 + /
1 1 0 1 1 1 0 0 0 1 1 0 0 0 0 0 1 0 1 0 1 0 1 1 1 1 0 0 1 0 1 0
1 0 1 0 0 0 1 0 1 1 1 1 0 0 0 1 1 1 0 0 1 1 1 0 0 0 0 1 1 0 1 0
0 0 1 0 0 1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1 1 0 0 0 1 1 0 0
0 1 1 1 0 1 1 0 0 1 1 0 1 1 1 0 0 1 0 0 0 1 0 1 0 0 1 0 1 0 1 0
0 1 0 0 0 0 1 1 0 0 0 1 1 0 1 1 1 0 0 1 0 1 1 1 1 1 0 0 1 0 1 0 Bây giờ ta đặt:
5 1
32
* 1 1
1( ) 2
j
j j
Z
5
1
32
* 1 6 1
j
j j
Z
(3.5)
Ta lập bảng 2 sau đây:
Bảng 2 Bảng véc tơ chuyển đổi tương ứng
3.2.3 Lấp đầy các thanh ghi dịch (5 thanh ghi)
là b b1, 2, ,b20, khóa K2
là d d1 , 2 , ,d10, với
20 , 1 );
, , , ( (1) (2) (5)
10 , 1 );
, , , ( (1) (2) (5)
(3.6)
Ký hiệu y i ( j)là ô thứ i của thanh ghi R j với i 1, 2, ;j 1, 2, ,5
Đặt:
( )
j i
y j
( ) ( )
21
y c
(3.7)
với c i( )j là thành phần thứ j của vectơ nhị phân
2 1 10
[g ( )-g ( )] mod32
c g c , trong đó, c i [g ( )-g (2 d i 1 b i10)] mod32
Trang 7Các hàm g1(.), g2(.) được cho trong bảng 3.2, tức là
1
1
2j jmod 32
j
2
1
2j b imod 32
j
(3.9)
Như vậy, sau giai đoạn này cả 31 ô của cả 5 thanh ghi đã được lấp đầy thông tin nhờ hệ
3.2.4 Sự hoạt động của 5 thanh ghi R 1 ,R 2 , ,R 5
Như vậy sau khi các thanh ghi dịch được nạp đủ trạng thái ban đầu (lấp đầy) và ký hiệu
1j, 2j, , 31j
y y y và y i j 0,1 , i 1, 31;j 1, 5
, , ,
thứ t với t 1, 2, 3, Ta có:
*) Bước 1: Vớit 1,
(1) (2) (3) (4) (5)
Trong đó,
( ) ( )
1j y27j,j 1,5
*) Bước 2: Với i 1, 2,3, đặt
( ) ( ) ( )
*) Bước 3: từ (3.10)(3.11), t 2, 3, tính t(1) ,t( 2) ,t(3) ,t( 4) ,t(5), trong đó
) ( 27 ) , ( )
t j
Và hàm hai biến ( , ) j t được định nghĩa là: (j,1)0
( ,j t 1) ( , )j t ( , ) 1j t
đối với j 1,5;t1, 2,3,
Hàm ( , ) j t được định nghĩa là: (1, ) 1t với t 1, 2,3,
(1) (1, ) 19
(2, )t y t 1
( ) ( , ) 19
(j 1, )t ( , )j t yj j t 1
với j 2,3, 4
Từ (3.12), (3.13), (3.14) ta có thể tạo ra được dãy bit giả ngẫu nhiên có độ dài tùy ý
t với t 1
3.2.5 Ví dụ
*) Bước 1: Giả sử ta có: