.2 Bảng phân bố với D= 1000 và dựa theo tần suất

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Nghiên cứu mở rộng phương pháp mã hóa số học ứng dụng trong bảo mật dữ liệu (Trang 32 - 38)

Nhận xét: các miền phân bố không nhất thiết phải tính theo tần suất mà chỉ cần xác định sao cho không giao nhau và thuộc [0,D]. Trong mục 3.3 sẽ đề xuất các cách chọn miền phân bố hợp lý để cải tiến thuật toán mã hóa số học nhằm nâng cao tốc độ tính toán.

3.2.1.2. Ý tƣởng của thuật toán mã hóa

Xem bản rõ là một chuỗi gồm n ký tự. Gọi kt[i] là ký tự thứ i của bản rõ tính từ trái qua phải, i = 1,2,...,n (trong ví dụ trên: kt[1] = „C‟, kt[3] = „B‟). Gọi Sk (k = 1,2,...,n) là chuỗi con gồm k ký tự đầu tiên, tức Sk gồm các ký tự kt[1], kt[2], ..., kt[k]. Với bản rõ nhƣ trên thì các chuỗi con là:

S1 = "C" ; S2 = "CA" ;S3 = "CAB" ; S4 = "CABA" ;S5 = "CABAB"

Mỗi chuỗi con sẽ có miền mã là một đoạn thẳng (kín đầu trái, hở đầu phải) nằm trong đoạn [0, D]. Gọi :

Ti = [low_code[i], hi_code[i]) là miền mã của chuỗi con Si Các đoạn Ti đƣợc xác định nhƣ sau :

Với i=1, chuỗi S1 gồm một ký tự, thì T1 chính là miền phân bố của ký tự này: T1 = P(kt[1])

low_code[1] = low_range[kt[1]] (3.1)

hi_code[1] = hi_range[kt[1]] (3.2)

Với i=2,...,n thì Ti đƣợc xác định theo công thức lặp:

Ti = Ti-1 P(kt[i]) (3.3)

(Ti là hình chiếu của P(kt[i]) lên Ti-1)

3.2.1.3. Thuật toán mã hóa

Input:

- n: độ dài theo ký tự của bản rõ - dãy ký tự của bản rõ kt[i] (i=1,2...,n) - m: số ký tự của bảng phân bố

- low_range(ch[i]), hi_range(ch[i]) ứng với mỗi ký tự ch[i] trong bảng phân bố (i=1,...m)

Output:

- code: mã của bản rõ

Thuật toán:

low_code[1] = low_range[kt[1]] //tƣơng đƣơng (3.1)

for(i = 2; i ≤ n; i++) { low_code[i] = low_code[i-1]+ (low_range[kt[i]]×(hi_code[i-1]-low_code[i-1]))/D (3.4) hi_code[i] = low_code[i-1]+ (hi_range[kt[i]]×(hi_code[i-1]-low_code[i-1]))/D (3.5) } (Các công thức (3.4) và (3.5) đƣợc xác định từ (2.1), (2.5) và (3.3))

Mã số của bản rõ: Có thể chọn một giá trị bất kỳ của miền mã Tn làm mã số cho bản rõ. Gọi code là mã số của bản rõ thì code thỏa mãn điều kiện:

code  Tn = [ low_code[n], hi_code[n]) (3.6)

Nhận xét: Thực chất thuật toán mã hoá là xác định đoạn mã cho các chuỗi con Sk của bản rõ bằng cách áp dụng liên tiếp phép thu nhỏ đồng dạng. Các đoạn này bị thu nhỏ rất nhanh và khi một đoạn có độ dài bằng 1 thì thuật toán không thể tiếp tục được. Vì vậy để cài đặt trên máy tính cần sử dụng các kiểu số nguyên lớn từ vài chục đến vài trăm byte, ngoài ra phải chia bản rõ thành các khối và thực hiện mã hoá theo từng khối.

3.2.2. Thuật toán giải mã

3.2.2.1. Hàm g(x) trên [0,D)

Để tìm các ký tự của bản rõ theo giá trị mã, cần sử dụng hàm g(x). Hàm này xác định với mỗi x[0,D) theo công thức:

g(x) = ch[j] nếu x thuộc miền P(ch[j]) Ví dụ với miền phân bố trong bảng 2 thì:

- Với x = 400, g(x) = „B‟ - Với x = 399, g(x) = „A‟

3.2.2.2. Ý tƣởng của thuật toán giải mã

Từ mã số code của bản rõ cần khôi phục các ký tự z[i] (i=1,...,n) của bản rõ. Ý tƣởng của thuật toán nhƣ sau:

code[1] = code (3.7)

z[1] = g(code[1]) (3.8)

Với i=2,...,n thì

code[i] = P(z[i-1])  code[i-1] (3.9)

(code[i] là nghịch ảnh của code[i-1] theo [low_range(z[i-1]), hi_range(z[i-1])] )

z[i] = g(code[i]) (3.10)

3.2.2.3. Thuật toán giải mã

Input:

- code: là mã của bản rõ - n: số ký tự của bản rõ

- bảng phân bố của các ký tự khác nhau trong bản rõ (bảng 3.2)

Output:

z[i] với i=1,2,...,n

Thuật toán:

code[1] = code //theo (3.7)

z[1] = g(code[1]) //theo (3.8)

for(i=2; i ≤ n; i++) {

code[i] = (3.11)

z[i] = g(code[i]) // xác định các ký tự tiếp theo }

(Công thức (3.11) đƣợc xác định dựa vào (2.3), (2.6) và (3.9))

Nhận xét: Trong các công thức của thuật toán mã hóa và giải mã chứa giá trị cận trên và cận dưới của miền phân bố. Vì vậy bằng cách chọn các giá trị này một cách hợp lý có thể làm giảm khối lượng tính toán của các thuật toán. Ý tưởng này sẽ được thực hiện trong mục 3.3

3.2.2.4. Chứng minh tính đúng đắn của thuật toán

Điều cần chứng minh:

nói cách khác:

code[i]  P(kt[i]), với i = 1, ..., n (3.13)

Để dễ theo dõi ta xét n=4, khi đó thuật toán mã hóa (3.1)-(3.3) đƣợc biểu diễn nhƣ sau:

Theo tính chất kết hợp (mục 2.3.1), từ (3.14) ta có:

T4 = P(kt[1]) (P(kt[2] (P(kt[3]  P(kt[4]))) (3.15)

nên theo tính chất chứa trong (mục 2.3.2) suy ra: T4  P(kt[1])

Măt khác theo (3.6)-(3.7) ta có: code[1] = code T4

Nên: code[1]  P(kt[1]). Nhƣ vậy (3.13) đúng với i=1, có nghĩa z[1] = kt[1]. Tiếp tục xét (3.13) với i = 2. Theo (3.9) và do z[1] = kt[1] ta có:

code[2] = P(kt[1])  code[1] mà

code[1]  T4

Nên theo tính chất chứa trong của phép biến đổi ngƣợc suy ra: code[2]  P(kt[1])T4

Mặt khác theo (3.15) thì :

P(kt[1])T4 = (P(kt[2])  (P(kt[3])  P(kt[4])))

Ngoài ra theo tính chất chứa trong thì:(P(kt[2])(P(kt[3])P(kt[4])))P(kt[2]) nên: code[2]  P(kt[2]). Vậy (3.13) đúng với i=2, nghĩa là z[2] = kt[2]. Bằng cách lập luận tƣơng tự sẽ suy ra z[i] = kt[i] (i=3,4,...,n). Đó là điều cần chứng minh.

3.2.2.5. Nhận xét về thuật toán giải mã

Thuật toán mã hóa trình bày tại mục 3.2.1 hoàn toàn giống nhƣ thuật toán mã hóa số học truyền thống. Nhƣng thuật toán giải mã trình bày tại mục 3.2.2 có một vài điểm khác so với thuật toán giải mã trình bày trong tài liệu [20]. Thực chất thuật toán giải mã

trong [20] theo cách ký hiệu của phép chiếu thu nhỏ đồng dạng và phép biến đổi ngƣợc đƣợc trình bày nhƣ sau :

Thuật toán mã hóa:

Tn = P(kt[1])  P(kt[2])  …  P(kt[n])

Thuật toán giải mã gốc:

code[1] = code

do code[1]  P(kt[1]) nên z[1] = kt[1] for(i=2 ; i ≤ n ; i++)

{

code[i] = Ti-1 → code ;

Dƣới đây sẽ chứng minh code[i]  P(kt[i]) nên z[i] = kt[i]

}

Để chứng minh tính đúng đắn của thuật toán này cần chỉ ra: code[i]  P(kt[i])

Theo thuật toán giải mã ta có :

Tn = (P(kt[1])  …  P(kt[i-1])  (P(kt[i])  …  P(kt[n]) Suy ra:

Ti-1 → Tn = (P(kt[i])  …  P(kt[n]) Do code  Tn nên:

Ti-1 → code[i]  P(kt[i])  …  P(kt[n] Suy ra:

code[i] = Ti-1 → code[i-1] P(kt[i]) đây là điều phải chứng minh.

Nhƣ vậy cách chứng minh này đơn giản hơn so với cách chứngminh trong [20], ngoài ra số phép toán cần thực hiện của thuật toán giải mã tại 3.2.2 cũng ít hơn so với thuật toán giải mã trong [20].

3.2.3. Ví dụ

STT Ký tự Tần suất xh Miền phân bố low_range hi_range

1 A 2 [0 – 0,4) 0 0.4

2 B 2 [0,4 – 0,8) 0.4 0.8

3 C 1 [0,8 – 1,0) 0.8 1.0

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Nghiên cứu mở rộng phương pháp mã hóa số học ứng dụng trong bảo mật dữ liệu (Trang 32 - 38)

Tải bản đầy đủ (PDF)

(65 trang)