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]
(1)PHƯƠ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 phương pháp mật mã giải pháp hữu hiệu nay, đặc biệt lĩnh vực Quốc phòng - An ninh Đối với hệ mật, độ mật phụ thuộc chủ yếu vào khóa mã Bởi vấn đề sinh khóa mã để đảm bảo an tồn cho hệ mật ln mang tính thời thực tiễn lĩnh vực bảo mật thơng tin Có hai phương pháp sinh khóa sinh khóa ngẫu nhiên phương pháp sinh khóa giả ngẫu nhiên Tuy nhiên, tốn sinh khóa giả ngẫu nhiên được quan tâm nghiên cứu nhiều Nội dung báo 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 bit ngẫu nhiên dựa tổ hợp các 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 hệ mật mã 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 mật mã, câu hỏi đặt “độ an tồn thơng tin khẳng định ứng dụng kỹ thuật mật mã ?” Ta biết rằng, an tồn thơng tin hoàn toàn phụ thuộc vào độ an toàn hệ mật sử dụng, tức phụ thuộc vào hai yếu tố khóa mã thuật tốn mã hóa Trong giao dịch thương mại điện tử, thường thuật tốn mã hóa cơng khai, vật độ an tồn thơng tin hồn tồn cịn phụ thuộc vào độ an tồn khóa mã Đối với hệ mật sử dụng khóa giả ngẫu nhiên, để tạo khóa mã cho phiên liên lạc người ta phải cung cấp “số ngẫu nhiên ban đầu” cho thuật tốn sinh khóa, q trình mã hóa thuật tốn mã hóa tạo 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 gọi “Mầm khóa” (Key Seed) Như nói, độ an tồn hệ mật phụ thuộc vào mầm khóa thuật tốn sinh khóa
Giả sử trường hợp mã thám biết thuật tốn sinh khóa, độ mật hệ mật phụ thuộc vào mầm khóa Do mầm khóa dãy bit có độ dài hữu hạn, việc công khai thác mầm khóa mã thám thường sử dụng cơng vét cạn Đối với công vét cạn, thời gian cơng phụ thuộc vào độ dài mầm khóa Để chống lại công vét cạn người ta buộc phải nâng độ dài mầm khóa Điều dẫn đến lực lượng khơng gian cung cấp mầm khóa phải đủ lớn để chống lại công Để chống lại cơng vét cạn để tìm khóa đúng, khơng gian mầm khóa phải “đủ lớn” việc chọn mầm khóa để sinh khóa phải hồn tồn ngẫu nhiên Tuy nhiên, khơng gian mầm khóa thể qua độ dài khóa, độ dài khóa dài khơng gian khóa lớn Nếu độ dài mầm k thì lực lượng khơng gian mầm 2k khóa 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 56 bit, khơng gian khóa DES có lực lượng 256 Khi đời, khơng gian khóa đủ lớn để chống lại cơng vét cạn tìm khóa Tuy nhiên, phát triển cơng nghệ tính tốn ngày nay, độ dài khóa chưa đủ để chống lại khả vét cạn quan mã thám
(2)Đối với mã thám không khai thác mầm khóa thuật tốn sinh khóa, họ tìm cách công trực tiếp vào mã dựa thuật tốn mã hóa
Một ví dụ điển hình cơng thuật tốn mã hóa mã thuật toán IDEA (International Data Encryption Algorithm), thuật tốn sử dụng độ dài mầm khóa 128 bit, gọi “đủ lớn” nay, tương đương với không gian khóa 2128 phần tử, tức 1632 phần tử Tuy nhiên, thuật toán mã khối (block), với thông báo rõ chia thành khối ký tự, khối khóa mã cho trước Thuật toán mã khối khối cuối Nếu coi block gồm ký tự thơng báo thuật tốn mã trùng khóa (khóa có lặp lại) Ở đây, có hai điểm mã thám sử dụng để công mã Đó là:
- Khi viết dọc khối thứ khối thứ hai; khối thứ hai khối thứ 3,.v.v khối cuối cùng, sau tính tần số xuất ký tự theo cột (có cột tất cả) phát số quy luật giúp cho công
- Trong thuật tốn mã hóa có tương ứng 1-1 khối rõ với khối mã Nhưng số khối rõ gồm ký tự có ngơn ngữ tiếng Anh 268, số khối mã tương ứng nhiều 268và khơng gian khóa thực tế nhiều 268 khóa có Từ đó, có thuật tốn thực phân hoạch khơng gian khóa K K1K2; Trong đó, K1K2 khả tìm khóa lớp gồm 268 khóa (chẳng hạn K1) khả thi
Qua kết cơng bố ngồi nước mà nhóm tác giả tiếp cận, việc phân tích trên, thấy độ mật hệ mật phụ thuộc vào độ an tồn khóa mã dịch, hay nói cách khác phụ thuộc vào độ dài mầm khóa độ phức tạp thuật tốn sinh khóa
Do vậy, việc nghiên cứu sinh khóa giả ngẫu nhiên sử dụng mật mã đóng vai trị quan trọng Bài báo tìm hiểu số thuật tốn tạo dãy giả ngẫu nhiên cơng bố ngồi nước, sở nghiên cứu nhóm tác giả đưa thuật tố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 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 gọi tất định (deterministic) cho trước dãy nhị phân ngẫu nhiên có độ dài kthì đầu dãy bit giả ngẫu nhiên độ dài llk Dãy đầu vào k bit gọi mầm (seed) Còn đầu l bit gọi dãy giả ngẫu nhiên
Định nghĩa 2: Một thuật toán sinh bit giả ngẫu nhiên gọi thuật toán sinh bit giả ngẫu nhiên an toàn cho mật mã dãy thuật toán sinh qua 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 thuật toán RSA
Cho hệ mật RSA: n pq với p,q hai số nguyên tố khác đủ lớn Đặt:
1 1
)
(
n p q (2.1)
Lấy b số nguyên cho:
b,(n)1 (2.2)
(3)Lấy số rZn* tính:
r
x0 , xi1 xib(modn); i0,1,2, (2.3) Khi định nghĩa:
mod2
i i x
Z với i1,2, (2.4)
Lúc đó, dãy Zi:i1 gọi dãy bit giả ngẫu nhiên tạo 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)
Thuật toán: Chọn n pq, p,q số nguyên tố khác cho
p,q3mod4 Ký hiệu Q(n) tập thặng dư bình phương theo mod n Với
) (n Q
r , xác định dãy số x0,x1,x2, sau:
1
B : x0 r
2
B : Với i0,1,2, tính
n x
xi1 i2mod (2.5)
3
B : Đặt Zi ximod2 với i0,1,2,
4
B : Quay lại Zi ; i1,2, 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 toán logarit rời rạc
Cho plà số nguyên tố đủ lớn, phần tử nguyên thủy Z*p, xác định dãy: x0 r
n x
xi1 i2mod (2.6)
1 mod
i
x i
x p đặt:
2
2
i i
i
p ifx Z
p ifx
(2.7)
1, 2,
ZZ Z dòng bit giả ngẫu nhiên sinh từ toán logarit rời rạc
2.3 Nhận xét
Các thuật tốn sinh dãy bit giả ngẫu nhiên trình bày có ưu điểm đơn giản chất lượng dãy chưa có đánh giá tiêu chuẩn thống kê điển hình tính đồng xác suất rõ Tuy nhiên, việc cứng hóa modul mật mã ứng dụng thuật toán tạo dãy giả ngẫu nhiên phức tạp dãy bit dễ tuần hồn có chu kỳ khơng đủ lớn Bởi vậy, với số lý khác, chẳng hạn việc xác định phần tử nguyên thủy Z*p không đơn giản số khơng phải ngun thủy rõ ràng khơng tốt chắn dãy bit giả ngẫu nhiên thuật tốn logarit rời rạc sinh tuần hồ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Ã
(4)3.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 ô) đánh số từ 0,1,2, ,l1; chứa bit 0/1 có đầu vào đầu Đồng thời liên hệ với đồng hồ nhằm điều khiển việc dịch chuyển liệu R
Định nghĩa 2: Thanh ghi dịch R ký hiệu:
) ( ,C x L
R (3.1)
trong đó:
L Lx
C x
C x
C( )1 1 GF(2)[x] (3.2)
là đa thức kết nối (connection polynomial) Thanh ghi dịch tuyến tính R gọi không suy biến (nonsingular) bậc C(x) L, tức CL=1
Giả sử nội dung ô thứ i si{0,1}, i0,1, ,L1 Khi đó, dãy SL1, ,S1,S0 gọi trạng thái ban đầu (khởi tạo) LFSR
Định nghĩa 3: Cho:
] )[ ( )
(x GF x
C đa thức nguyên thủy (primitive polynomial) bậc L
Khi đó, ( L,C(x)) gọi LFSR có độ dài cực đại (maximum length)
Đầu LFSR có độ dài cực đại với trạng thái ban đầu khác gọi maximum sequence (m_sequence) Khi với 2L 1 trạng thái ban đầu khác ghi dịch phản hồi tuyến tính LFSR sinh dãy giả ngẫu nhiên có chu kỳ cực đại 2L1
Từ suy để tạo ghi dịch phản hồi tuyến tính có chu kỳ cực đại2L1, điều kiện cần độ dài ghi dịch phải số nguyên tố (2L1
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 LFSR SL1, ,S1,S0 dãy đầu ,
,
0 S S
S xác định cách phép đệ quy (recursion) sau đây:
1 j1 2 j 2 L j Lmod2
J CS C S C S
S (3.3)
đối với jL
Khẳng định 2: Với dãy đầu LFSR L,C(x) tuần hoàn với chu kỳ 1
2L đa thức C(x)là đa thức nguyên thủy có bậc (degree) L 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ường GF(2), thì 2L1 trạng thái ban đầu khác LFSR không suy biến sinh dãy đầu tuần hoàn với chu kỳ số nguyên dương nhỏ
Nsao cho N
x
1 chia hết cho C(x)(có nghĩa đa thức C(x)nguyên thủy trường
) (
GF [15]
3.2 Thuật toán sinh dãy giả ngẫu nhiên đề xuất
3.2.1 Cấu tạo hệ thống ghi dịch phản hồi phi tuyến
(5)dịch phải số nguyên tố; Nếu có nhiều ghi dịch độ dài khác độ dài chúng phải nguyên tố với đôi Trong này, chọn ghi dịch với độ dài (bằng 31)
Giả sử, ta có K ghi dịch phản hồi tuyến tính, ký hiệu R1,R2, RK, ghi dịch Ri có độ dài Li;i1,2, K Trong đó, Li số nguyên tố
Lược đồ hoạt động ghi dịch:
3.2.2 Tạo mầm khóa
Cho hệ thống khóa gồm khóa, mầm khóa ký hiệu là:
2
2
2 1
m m d d d K
b b b K
(3.4) Để dễ hình dung, ta lấy m1 20, m2 10, đó, bi,dja,b,c, ,z K 5,
31
5
1 L L L L
L .
(6)Bảng 1. Bảng véc tơ nhị phân 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 + / 1 1 0 1 0 0 1 1 1 0 1 1 0 1 1 0 1 0 1 0 0 1 0 0 1 1 1 1 1 1 0 1 0 1 1 0 1 1 0 0 1 0 1 0 0 0 1 0 1 1 0 1 1 1 0 1
Bây ta đặt:
32 * 1
1( ) j
j j
Z
g
32 *
2( )
j
j j
Z
g
(3.5)
Trong đó, 1,2, ,5 vectơ nhị phân tương ứng chữ bảng trên: Ta lập bảng sau đây:
Bảng 2. Bảng véc tơ chuyển đổi tương ứng
3.2.3 Lấp đầy ghi dịch (5 ghi)
Mầm khóa K1, K2 lấp đầy ô ghi dịch thực sau:
Ký hiệu: vectơ nhị phân khóa K1 b b1, 2, ,b20, khóa K2 d d1, 2, ,d10, với 20 , 1 ); , , ,
( (1) (2) (5)
b b b i
bt i i i
10 , 1 ); , , ,
( (1) (2) (5)
d d d i
dt i i i (3.6)
Ký hiệu yi(j)là ô thứ i ghi Rj với i1, 2, ;j1, 2, ,5 Đặt:
( )
1 1,
j i
y j
( ) ( )
1 , 1, 20, 1,5
j j
i i
y b i j
( ) ( ) 21
j j
i i
y c
(3.7)
với ci( )j thành phần thứ j vectơ nhị phân
(1) (2) (3) (4) (5)
( , , , , ), 1,10
i i i i i i
c c c c c c i và
2 10
[g ( )-g ( )] mod32
i i i
c d b (3.8)
Nói cách khác ( )
i i
(7)Các hàm g1(.), g2(.) cho bảng 3.2, tức
1
1
2j jmod 32
i i
j
g b b
1
2j b imod 32
i i
j
g b b
(3.9)
Như vậy, sau giai đoạn 31 ô ghi lấp đầy thông tin nhờ hệ thống mầm khóa cho trước K1 K2
3.2.4 Sự hoạt động ghi R1,R2, ,R5
Như sau ghi dịch nạp đủ trạng thái ban đầu (lấp đầy) ký hiệu ( ) ( ) ( )
1 , , , 31
j j j
y y y j 0,1
i
y , i1, 31;j1,
Ta ký hiệu (1) (2) (5)
, , ,
t t t
vectơ ngẫu nhiên ghi tạo nhịp thứ t với t1, 2, 3, Ta có:
*) Bước 1: Vớit1,
(1) (2) (3) (4) (5)
1 , , , ,
(3.10)
Trong đó,
( ) ( ) 27, 1,5
j j
y j
*) Bước 2: Với i1, 2,3, đặt
( ) ( ) ( )
31 28
j J j
i i i
y y y , j1, (3.11) *) Bước 3: từ (3.10)(3.11), t2, 3, tính (1), ( 2), (3), ( 4), (5)
t t t t t
,
) (
27 ) , ( ) ( j
t j j
t y
với j1, (3.12)
Và hàm hai biến ( , )j t định nghĩa là: (j,1)0 ( ,j t 1) ( , )j t ( , ) 1j t
(3.13)
đối với j 1,5;t1, 2,3,
Hàm ( , )j t định nghĩa là: (1, ) 1t với t 1, 2,3,
(1) (1, ) 19
(2, )t y t
( ) ( , ) 19
(j 1, )t ( , )j t yjj t
(3.14)
với j2,3,
Từ (3.12), (3.13), (3.14) ta tạo dãy bit giả ngẫu nhiên có độ dài tùy ý
t với t1
3.2.5 Ví dụ
*) Bước 1: Giả sử ta có:
K1= JOMPC NXRJO MDHJX BVKFM (20 ký tự) K2= CPWKV EEBSN (10 ký tự)