Dựa trờn bỡnh phương lấy modulo

Một phần của tài liệu Một số nghiên cứu về hàm băm và giao thức mật mã (Trang 84 - 89)

Nguyờn tắc thiết kế cho hàm băm

4.1 Dựa trờn bỡnh phương lấy modulo

Trước hết chỳng ta đưa ra thiết kế dựa trờn độ khú của việc lấy căn bậc 2 modulo số lớn là tớch của hai số nguyờn tố. Kiến thiết cú nhiều điểm tương tự với hàm

được mụ tảở trong [Gir], nhưng điểm khỏc cơ bản là cỏc hàm ở trong [Gir] khụng cho phộp ỏp dụng Định lý 3.1.

Giả sử n=pq với p và q là cỏc số nguyờn tố lớn. Giả sửđộ dài của n là s bit. Trong thực tế, cú thể nghĩ s=512. Sau đú, chọn I là một tập con nào đú của cỏc số 1,2,..., s. Với chuỗi cú s-bit bất kỳ, y=y1,y2,...,ys, giả sử fI(y) là phộp nối của cỏc yj với j∈

I.

Cuối cựng, chỳng ta cú thểđịnh nghĩa hàm khụng va chạm dự tuyển f từ m bit vào t bit bằng cỏch đặt m=s-8, t=|I|, và định nghĩa

f(x) = fI((3F|x)2 mod n)

với 3F|x là ký hiệu nối của byte 3F với x. Từ phộp nối suy ra rằng tất cả cỏc đầu vào của hàm bỡnh phương modulo nhỏ hơn n/2 nhưng đủ lớn để đảm bảo việc cú lấy modulo. Chỳng ta trỏnh cỏc va chạm đơn giản do x2 = (-x)2 mod n, và cố gắng tỡm cỏc va chạm bằng cỏch chọn vớ dụ cỏc luỹ thừa 2 nhỏ nhưđầu vào.

Chỳng ta cũng cần chọn I sao cho f an toàn và hiệu quả. Bài toỏn tỡm va chạm cho f cú thể phỏt biểu lại: tỡm cỏc số x≠ y sao cho bỡnh phương modulo n của chỳng trựng nhau tại cỏc vị trớ thuộc I. Girault [Gir] chỉ ra cỏch làm điều đú như thế nào nếu I là tập tương đối bộ (nhơ hơn 64) cỏc bớt lớn nhất hay cỏc bit nhỏ nhất.

Điều đú cú nghĩa là chỳng ta nờn chọn cỏc vị trớ cú thể phỏt tỏn đều trờn toàn bộ s khả năng cú thể, vỡ phương phỏp của Girault và những cỏi cú liờn quan [GTV] sẽ

hỏng. Mặt khỏc, cú những lý do thực tếđể khụng sử dụng cỏc vị trớ hoàn toàn ngẫu nhiờn, nhưng ớt nhất là gộp chỳng vào cỏc byte. Hơn nữa, |I| cần phải chọn khụng quỏ bộ, để chống lại “va chạm ngày sinh”.

Cụ thể, nếu s= 512, thỡ đề nghị một lựa chọn tốt là |I|= 128, và fI lấy ra một byte trong số 4 byte.

Hàm này sẽ băm được đến 376 bit / bỡnh phương modulo (??), cỏc đú trờn mỏy IBM P/S II model 80 cho tốc độ đến 100 Kbit/s. Một phần cứng đặc biệt cho tốc

độ lờn đến vựng Mbit/sec.

4.2 Dựa vào Bộ tạo bit giả ngẫu nhiờn của Wolfram

Đề nghị thứ hai dựa vào bộ tạo bit giả ngẫu nhiờn được đề xuất bởi Wolfram [Wo]. Núi chung, bộ tạo bit giả ngẫu nhiờn là thuật toỏn lấy đầu vào là mầm ngắn hoàn toàn ngẫu nhiờn, và kộo dài nú thành cỏc chuỗi đầu ra dài, dường như ngẫu nhiờn. Một cỏch trực giỏc, rừ ràng là bộ tạo như vậy cần phải theo nghĩa nào đú ỏp

dụng hàm một chiều vào mầm để cú đầu ra: nếu mầm là dễ tỡm khi cho một đoạn

đầu ra thỡ cảđầu ra sẽ tớnh được và như thế thỡ khụng cũn ngẫu nhiờn nữa.

Tuy nhiờn, tớnh một chiều nhỡn chung khụng suy ra tớnh khụng va chạm của hàm

được kiến thiết trực tiếp từ bộ tạo- việc phõn tớch trường hợp cụ thể là rất cần thiết. Bõy giờ chỳng ta xem xột thuật toỏn được đề nghị bởi Wolfram: ta định nghĩa hàm g từ cỏc chuỗi n bit sang cỏc chuỗi n bit: giả sử x=x0, x1,..., xn-1 thỡ bit thứ i của g(x) là

g(x)i = xi-1⊕ (xi V xi+1)

với phộp cộng 1 và trừ 1 được lấy theo modulo n. Người ta cú thể nghĩ đú là thanh ghi R trong đú cỏc bit được cập nhật đồng thời bởi R:=g(R). Cỏi đú được biết như

là một cellular automat một chiều.

Sử dụng cỏi đú để tạo bit giả ngẫu nhiờn, ta làm như sau: 1. Chọn x ngẫu nhiờn

2. x:=g(x)

3. Lấy ra x0. Quay lại bước 2.

Trong [Wo], bộ tạo bit giả ngẫu nhiờn này đó được phõn tớch, kết quả của nhiều kiểm tra thống kờ đó được đưa ra. Độ an toàn của nú được chứng minh chống lại kẻ thự cú giới hạn một số dạng tớnh toỏn, cũn khả năng của nú đỏnh bại kẻ thự cú thời gian tớnh toỏn đa thức bất kỳ cũn là giả thuyết. Tuy nhiờn, tất cả những cỏi gỡ

đó biết, chỉ ra rằng đõy là bộ tạo thực sử mạnh.

Giả sử cỏc bit được sinh ra bởi thuật toỏn từ đầu vào x được ký hiệu bởi b1(x), b2(x),...Con đường tự nhiờn sử dụng cỏi đú để kiến thiết hàm khụng va chạm là chọn 2 số tự nhiờn c <d và lấy hàm f0 bằng

f0(x) = bc(x),bc+1(x),..., bd(x).

Cú hai chỗ hổng cú thể trong ý tưởng này, cần phải cẩn thận:

Thứ nhất, yờu cầu tự nhiờn là hàm như vậy là tất cả cỏc bit đầu ra phải phụ thuộc vào tất cả cỏc bit đầu vào. Dễ thấy rằng việc thay đổi 1 bit của x thỡ dần dần sau nhiều lần thực hiện x:=g(x) sẽ ảnh hưởng tới toàn bộ x- nhưng hiệu ứng chỉ lan chậm trong thanh ghi: 1 bit về bờn phải và khoảng 0.25 bit về bờn trỏi cho một lần ỏp dụng g [Wo]. Cho nờn việc chọn c rất nhỏ là nguy hiểm. Giỏ trị nhỏ nhất tự

nhiờn của c cần phải là cỏi đảm bảo cho tất cả cỏc bit đầu ra phụ thuộc vào tất cả

cỏc bit đầu vào.

Vấn đề thứ hai là bản thõn g khụng phải là một hàm khụng va chạm: vớ dụ, g(1n)=g(0n) = 0n. Rừ ràng, g(x) = g(y) suy ra f0(x) = f0(y). Tổngquỏt hơn, nếu gv(x)=gv(y) với v nhỏ, thỡ ớt nhất khả năng để cho f0(x) = f0(y) khụng phải là khụng

Một cỏch tự nhiờn để trỏnh khỏi khú khăn đú là giới hạn f vào tập con của cỏc chuỗi n-bit, như thế sẽ hạ thấp khả năng cỏc cặp x, y như trờn tồn tại hoặc ớt nhất cũng làm cho việc tỡm chỳng khú. Một khả năng cụ thể là giới hạn cho cỏc dóy cú dạng x||z, với z là hằng số chuỗi được chọn ngẫu nhiờn trong {0,1}r, r < n.

Chỳng ta sẽđịnh nghĩa ứng cử viờn f sao cho nú ỏnh xạ chuỗi (n-r) bit x vào chuỗi f(x) = f0(x||z).

Bổđề sau cung cấp bằng chứng cho phương phỏp này:

Bđề 5.1

Nếu gv(x) =gv(y) =z, và 2v bit liờn tiếp của x và y là bằng nhau thỡ x=y,

Chng minh.

Giả sử j là chỉ số của vị trớ ngay bờn phải của 2v bit mà chỳng ta biết là bằng nhau. Mỗi bit của z phụ thuộc nhiều nhất 2v+1 bit của x (hoặc y). Giả sử l được chọn sao cho zl là hàn của cỏc bit j,..., j+2v của x (hoặc y). Bõy giờ, vỡ phộp lấy ngược xj sẽ

lấy ngược zl , giả thuyết của chỳng tụi suy ra rằng xj = yj. Bõy giờ chỳng ta cú thể

‘trượt’ cỏc lập luận trờn về phớa phải một vị trớ.

Cỏi đú cung cấp bằng chứng tốt rằng việc chọn r tương đối lớn sẽ cho cỏc va chạm ‘tầm thường” thưa ra và khú tỡm hơn.

Như một vớ dụ cụ thể, giả sử chỳng ta chọn n=512, r=256, c=257 và d=384. f thu

được sẽ ỏnh xạ cỏc chuỗi 256 bit vào cỏc chuỗi 128 bit và hàm băm được kiến thiết từ f theo Định lý 3.1 sẽ băm cỏc bản tin trong cỏc khối 128 bit và tạo ra 128 bit đầu ra.

Hàm này đặc biệt thớch hợp cho cài đặt phần cứng: trong cỏc mạch VLSI, người ta cú thể tớnh g bằng cỏch cập nhật tất cả cỏc bit song song, và việc tớnh g sẽ mất 1 hay 2 nhịp đồng hồ, khụng phụ thuộc vào n. Cỏi đú sẽ đem lại tốc độ khoảng Mbit/sec ngay với cả cỏc tốc độ đồng hồ xử lý trung bỡnh. Hơn nữa, một phần cứng như thế rất rẻ và dễ xõy dựng.

4.3 Dựa vào bài toỏn Knapsack

Mặc dự bài toỏn knapsack là NP-đầy đủ, và cú thể rất khú trong trường hợp tồi nhất, nhưng sử dụng tớnh khú này trong mật mó khụng dễ, cỏi đú được chỉ ra bởi số phận của nhiều hệ mật khoỏ cụng khai dựa trờn bài toỏn này.

Cỏi khú, phần lớn là ở chỗ phộp mó cần phải cú ngược. và knapsacks được sử

dụng cần phải cú một số cấu trỳc built-in, trong nhiều trường hợp trở nờn hữu ớch

được sinh ra hoàn toàn ngẫu nhiờn được sử dụng.

Con đường tự nhiờn để làm việc này là chọn ngẫu nhiờn cỏc số a1,..., as trong khoảng 1..M, với s là độ dài tối đa của bản tin. Chỳng ta cú thể băm bản tin nhị

phõn m1,m2,..., ms bằng ∑ = = s i i i s m a m m f 1 1,..., ) (

Nhưđó chỉ ra trong [GC], cỏi đú hoàn toàn khụng an toàn với s lớn, chớnh xỏc hơn khi M ≤ slog(s)/4. Để giải quyết vấn đề này, chỳng ta đề xuất cốđịnh s bằng một giỏ trị nhỏ vừa phải so với M, và sử dụng Định lý 3.1 để kiến thiết hàm băm thực sự. Như một vớ dụ, cú thể chọn s bằng 2log(M), điều đú cú nghĩa là f nộn cỏc khối s bit thành cỏc khối s/2 bit và điều kiệncủa [GC] cũn lõu mới được thoả món.

Lựa chọn cụ thể là s=256 và M = 2120-1. Nú cho hàm băm cuối cựng cú độ dài 128 bit. Trờn mỏy IBM P/S II Model 80, phiờn bản này chạy với tốc độ 250 Kbit/s.

Để mụ tả hàm chỳng ta cần chỉ ra 4 KB dữ liệu. Trờn mỏy PC cú 640 K RAM,

điều này là bỡnh thường. Nhưng trong trường hợp bộ nhớ nhỏ hơn, chỳng ta phải trả giỏ về thời gian vỡ bộ nhớ và tạo ra cỏc số a giả ngẫu nhiờn thay cho việc nhớ

chỳng.

Chỉ tiờu khỏc về sức mạnh của hàm là ở chỗ bài toỏn quyết định tổng quỏt là knapsack đó cho sinh ra một ỏnh xạ injective cú là bài toỏn co-NP hay khụng? Va chạm tất nhiờn là bằng chứng của tớnh khụng song ỏnh (bài toỏn quyết định là đơn giản nếu knapsack nộn đầu vào, nhưng khụng cú nghĩa là dễ tỡm bằng chứng). Chỳng ta chỳ ý rằng ngay cả những knapsacks nới rộng đầu vào ra một chỳt (như

thế thỡ khụng dựng được bởi [ImNa]) cũng cú thể dựng để xõy dựng hàm băm an toàn theo nghĩa của [NaYu], nếu giả thiết rằng chỳng tạo ra cỏc ỏnh xạ khụng va chạm. Điều này dường như là hợp lý theo nghĩa tớnh đầy đủ co-NP của bài toỏn tham gia vào và việc bài toỏn quyết định là khụng tầm thường trong trường hợp này. Cỏch kiến thiết và chứng minh cú thể nhận được bằng cỏch phỏng theo kỹ

thuật của [NaYu].

Tài liệu

[Da] Damgard: “Collision Free Hash Functions and Public Key Signature Schemes”, Proceedings of EuroCrypt 87, Springer.

[De] D. Denning: “Digital Signature with RSA and other Public Key Cryptosystems”, CACM, vol.27, 1984, pp.441-448

[DP] Davis and Price: “The Application of Digital Signatures Based on Public Key Crypto-Systems”, Proc. of CompCon 1980, pp. 525-530

[GC] Godlewski and Camion: ”Manipulation and Errors, Localization and Detection”, Proceedings of EuroCrypt 88, Springer.

[Gi] Gibson, A Collision Free Hash Functions and the Discrete Logarithm Problem for a Composite Modulus, Manuscript, 1/10/88, London, England.

[Gir] Girault, Hash Functions Using Modulo- Operations, Proceedings of Eurocrypt 87, Springer

GTV Girault, Toffin and Valộe, Computation of Approximate L-th Roots Modulo n and Application to Cryptography, Proceedings of Crypto 88, Springer.

[ImNa] Impagliazzo and Naor: Eficient Cryptographic Schemes Provably as Secure as Subset Sum”, Proc. of FOCS 89.

[Me] Merkle, One Way hash Functions, Proc. of STOC 89.

[NaYu] Naor and Yung, Universal One-Way Hash Functions” Proc. of STOC 89.

[Wi] Winternitz, Producing a one-way Hash Function from DES, Proceesings of Crypto 83, Springer

[Wo] Wolfram, Random Sequence Generation by Cellular Automata, Adv., Appl. Math., vol 7, 123-169, 1986.

Một phần của tài liệu Một số nghiên cứu về hàm băm và giao thức mật mã (Trang 84 - 89)