Định nghĩa 1.2 : Một thuật toán được gọi là có độ phức tạp đa thức, hoặc có thời gian đa thức, nếu số các phép tính cần thiết khi thực hiện thuật toán không vượt quá Olog d n, trong đó n
Trang 1MỤC LỤC
MỤC LỤC 1
LỜI NÓI ĐẦU 3
CHƯƠNG 1 4
CƠ SỞ TOÁN HỌC TRONG LÝ THUYẾT MÃ HÓA THÔNG TIN 4
1.1 Những kiến thức cơ bản 4
1.1.1 Khái niệm về thuật toán 4
1.1.2 Độ phức tạp của thuật toán 4
1.2 Số nguyên tố 6
1.3 Thuật toán Euclid 7
1.4 Phép tính đồng dư và phương pháp tính đồng dư 10
1.4.1 Phép tính đồng dư 10
1.4.2 Tính toán đồng dư của luỹ thừa bậc lớn 11
1.4.3 Định lý trung quốc về phần dư 12
1.5 Thuật toán lũy thừa nhanh 15
CHƯƠNG 2 17
MÃ HÓA VÀ HỆ MÃ HÓA CÔNG KHAI 17
2.1 Giới thiệu chung về mã hóa .17
2.2 Mục tiêu của an toàn bảo mật thông tin 18
2.3 Một số thuật ngữ và khái niệm 19
2.3.1 Khái niệm hệ mật mã 19
2.3.2 Khái niệm mã hoá và giải mã 19
2.4 Thuật toán mã hóa đối xứng (Symmetric Algorithms) 20
2.5 Thuật toán mã hóa phi đối xứng(Puclic-key-Algorithms) 21
2.6 Thám mã (Cryptanalyis) 23
2.7 Một số hệ mã cổ điển 25
2.7.1 Mã dịch vòng 25
2.7.2 Mã thay thế 26
2.7.3 Mã Affine 27
2.7.4 Mã Vigenere 29
2.7.5 Hệ mã Hill 30
2.7.6 Hệ mã Hoán vị 32
2.7.7 Sơ lược về thám mã các hệ mã cổ điển 33
2.7.8 Nhận xét chung về các hệ mật mã cổ điển 34
2.8 Hệ mã hoá công khai 34
Trang 22.8.1 Giới thiệu 34
2.8.2 Hệ mã Ba Lô (MHK) 37
2.4.3 Hệ mã hóa công khai RSA 39
2.8.4 Hệ mã ELGAMAL 40
CHƯƠNG 3 42
HỆ MÃ RSA VÀ ỨNG DỤNG CHỮ KÝ ĐIỆN TỬ 42
3.1 Hệ mã hóa-RSA 42
3.1.1 Tư tưởng của thuật toán RSA 43
3.1.2 Giải thuật RSA 45
3.2 Chuyển đổi văn bản rõ 48
3.3 Độ an toàn của RSA 49
3.4 Một số vấn đề đặt ra trong thực tế 51
3.4.1 Quá trình tạo khóa 51
3.4.2 Tốc độ 52
3.4.3 Phân phối khóa 52
3.5 Các phương pháp tấn công hệ mã RSA 53
3.5.1 Tấn công kiểu duyệt toàn bộ (phương pháp vét cạn) 53
3.5.2 Phương pháp toán học 53
3.5.3 Tấn công dựa trên thời gian (phương pháp phân tích thời gian) 55
3.5.4 Một số chú ý khi dùng hệ mã RSA 56
3.6 Ứng dụng của hệ mật mã RSA - Chữ ký điện tử 57
3.6.1 Giới thiệu về chữ ký điện tử và vấn đề xác nhận 57
3.6.2 Sơ đồ chữ ký RSA 58
3.6.3 Tấn công chữ ký điện tử 60
CHƯƠNG 4 62
CÀI ĐẶT CHƯƠNG TRÌNH 62
KẾT LUẬN 66
Nhận xét của giáo viên: Error! Bookmark not defined
Trang 3LỜI NÓI ĐẦU
Từ xưa đến nay thông tin luôn là yếu tố quan trọng trong các hoạt động của đời sống con người Trong thời đại ngày nay, các phương thức truyền đạt thông tin ngày càng đa dạng và phát triển Với sự ra đời của máy tính và mạng máy tính, việc trao đổi thông tin đã trở lên dễ dàng hơn, nhanh chóng hơn, đa dạng hơn Nhưng kèm theo đó là các nguy cơ xâm phạm thông tin cũng ngày càng tăng Nắm bắt được thông tin nhiều khi mang ý nghĩa quyết định, sống còn đặc biệt trong các lĩnh vực: kinh tế, chính trị, an ninh, quốc phòng…Vì vậy việc bảo mật thông tin đã, đang và sẽ là vấn đề được đặt ra rất cấp bách Để giải quyết vấn đề đó các hệ mật
mã đã ra đời Từ các hệ mật mã sơ khai cổ điển như: Hệ mã Dịch Vòng, hệ mã Hill, hệ mã Affine,…, cho đến các hệ mật mã hiện đại, phức tạp như hệ mã DES Các hệ mật mã công khai như hệ mã RSA, hệ mã Ba Lô Nhưng đi kèm với sự ra đời và phát triển của các hệ mật mã là các phương pháp phá khoá các hệ mật mã
đó Cuộc chiến giữa bảo mật thông tin và xâm phạm thông tin vẫn luôn diễn ra một cách thầm lặng nhưng vô cùng gay gắt
Là một sinh viên ngành công nghệ thông tin, với mong muốn tìm hiểu các
phương pháp bảo mật thông tin em đã chọn đề tài “NGHIÊN CỨU HỆ MÃ HÓA
CÔNG KHAI VÀ CÀI ĐẶT HỆ MÃ RSA ỨNG DỤNG TRONG CHỮ KÝ ĐIỆN TỬ ” làm đồ án tốt nghiệp Tuy đã có nhiều cố gắng trong việc xây dựng đề
tài nhưng do còn hạn chế về mặt thời gian cũng như kiến thức và kinh nghiệm thực
tế nên đề tài không tránh khỏi những thiếu sót Vì vậy em rất mong được sự chỉ bảo, đóng góp ý kiến của các thầy cô giáo cho đề tài của em ngày càng hoàn thiện hơn
Em xin chân thành cảm ơn sự
giúp đỡ nhiệt tình của cô: Bùi Thị Thanh Xuân – Bộ môn khoa học cơ bản và
các thầy cô đã trang bị kiến thức cho em để em hoàn thành đề tài này
Trang 4
CHƯƠNG 1
CƠ SỞ TOÁN HỌC TRONG LÝ THUYẾT MÃ HÓA
THÔNG TIN
1.1 Những kiến thức cơ bản
1.1.1 Khái niệm về thuật toán
Thuật toán là một qui tắc để, với những dữ liệu ban đầu đã cho, tìm được lời giải của bài toán được xét trong một khoảng thời gian hữu hạn
1.1.2 Độ phức tạp của thuật toán
Dĩ nhiên, thời gian làm việc của máy tính khi chạy một thuật toán nào đó không chỉ phụ thuộc vào thuật toán, mà còn phụ thuộc vào máy tính sử dụng Vì thế, để có một tiêu chuẩn chung, ta sẽ đo độ phức tạp của thuật toán bằng số các phép tính phải làm khi thực hiện thuật toán Khi tiến hành cùng một thuật toán, số các phép phải thực hiện phụ thuộc vào cỡ của bài toán, tức là độ lớn của đầu vào Trong những ứng dụng thực tiễn, chúng ta không cần biết chính xác hàm này, mà chỉ cần biết “cỡ” của chúng, tức là cần có một ước lượng đủ tốt của chúng
Khi làm việc, máy tính thường ghi các chữ số bằng những bằng đèn “sáng, tắt”: bằng đèn sáng chỉ số 1, bằng đèn tắt chỉ số 0 Vì thế thuận tiện nhất là dùng hệ đếm cơ số 2, trong đó để biểu diễn một số, ta chỉ cần dùng hai kí hiệu 0 và 1 một
kí hiệu 0 hoặc 1 được gọi là một bít Một số nguyên n được biểu diễn bởi k chữ số
0 và 1 được gọi là một số k-bit
Độ phức tạp của thuật toán được đo bằng số các phép tính bit Phép tính bit
là một phép tính logic hay số học thực hiện trên các số một bit 0 và 1
Để ước lượng độ phức tạp của thuật toán, chúng ta dùng khái niệm bậc o- lớn
Định nghĩa1.1: Giả sử f(n) và g(n) là hai hàm xác định trên tập hợp các số nguyên dương Chúng ta nói f(n) có bậc O-lớn của g(n), và viết f(n)=O(g(n)) hoặc f=O(g), nếu tồn tại một số C>0 sao cho với n đủ lớn, các hàm f(n) và g(n) đều dương, đồng thời f(n)<Cg(n)
Trang 5Ví dụ:
1) Giả sử f(n) là đa thức
f(n)= adnd + ad-1nd-1 +… + a1n + a0
trong đó ad >0 Dễ chứng minh rằng f(n) = O(nd)
2) Nếu f1(n) = O(g(n)), f2(n) = O(g(n)) thì f1 + f2 = O(g)
3) Nếu f1 = O(g1), f2 = O(g2), thì f1f2 = O(g1g2)
4) Nếu tồn tại giới hạn
)(lim
n g
n f
n
thì f = O(g)
5) Với mọi số >0, log n = O (ne)
Định nghĩa 1.2 : Một thuật toán được gọi là có độ phức tạp đa thức, hoặc có thời gian đa thức, nếu số các phép tính cần thiết khi thực hiện thuật toán không vượt quá O(log d n), trong đó n là độ lớn của đầu vào, và d là số nguyên dương nào
đó
Nói cách khác, nếu đầu vào là các số k-bit thì thời gian thực hiện thuật toán
là O(kd), tức là tương đương với một đa thức của k
Các thuật toán với thời gian O(n), > 0, được gọi là các thuật toán với độ phức tạp mũ, hoặc thời gian mũ
Khi giải một bài toán nào đó, không chỉ ta cố gắng tìm ra một thuật toán nào
đó, mà còn muốn tìm ra thuật toán tốt nhất Đánh giá độ phức tạp của thuật toán là một trong các cách để phân tích, so sánh và tìm ra thuật toán tối ưu Tuy nhiên, độ phức tạp không phải là chỉ tiêu duy nhất để đánh giá thuật toán Có những thuật toán, về lý thuyết thì có độ phức tạp cao hơn thuật toán khác, nhưng khi sử dụng lại
có kết quả (gần đúng) nhanh hơn nhiều Điều này còn tuỳ thuộc những bài toán cụ thể, những mục tiêu cụ thể, và cả kinh nghiệm người sử dụng
Chúng ta cần lưu ý thêm một điều sau đây Mặc dù định nghĩa thuật toán mà chúng ta đưa ra chưa phải là chặt chẽ, nó vẫn còn quá cứng nhắc trong những ứng dụng thực tế! Bởi vậy, chúng ta còn cần đến các thuật toán xác suất, tức là các thuật toán phụ thuộc vào một hay nhiều tham số ngẫu nhiên Những thuật toán này,
về nguyên tắc không được gọi là thuật toán, vì chúng có thể với xác suất rất bé,
Trang 6không bao giờ kết thúc Tuy nhiên, thực nghiệm chỉ ra rằng, các thuật toán xác suất thường hữu hiệu hơn các thuật toán không xác suất Thậm chí, trong rất nhiều trường hợp, chỉ có thuật toán xác suất như thế mới sử dụng được
Khi làm việc với các thuật toán xác suất, ta thường hay phải sử dụng các số ngẫu nhiên Khái niệm chọn số ngẫu nhiên cũng cần được chính xác hoá, thường thì người ta sử dụng một máy sản xuất số giả ngẫu nhiên nào đó
Để hình dung được độ phức tạp của các thuật toán khi làm việc với các số
lớn, ta xem bảng sau cho khoảng thời gian cần thiết để phân tích một số nguyên n
ra thừa số nguyên tố bằng thuật toán nhanh nhất được biết hiện nay (1 triệu phép tính trong 1 giây)
Để có thể tìm ra những thuật toán xác định nhanh một số có phải là số nguyên tố hay không ta cần phải hiểu sâu sắc tính chất các số nguyên tố
Trang 7Thật vậy, vì n là hợp số nên ta có thể viết n = ab, trong đó a và b là các số
nguyên với 1 abn Rõ ràng ta phải có a hoặc b không vượt quá n, giả sử
đó là a Ước nguyên tố của a cũng đồng thời là ước nguyên tố của n
Từ định lý trên ta có thuật toán sau đây để tìm các số nguyên tố nhỏ hơn
hoặc bằng số n cho trước
Phương pháp sàng Eratosthenes: Trước tiên ta viết dãy các số tự nhiên từ 1 đến n Trong dãy đó gạch số 1 đi, vì nó không phải là số nguyên tố Số nguyên tố đầu tiên của dãy là 2 Tiếp theo ta gạch hết số chia hết cho 2 trong dãy Số đầu tiên không chia hết cho 2 là số 3 đó chính là số nguyên tố
Ta lại gạch hết số trong dãy chia hết cho 3 Tiếp tục như thế ta gạch hết những số chia hết cho mọi số nguyên tố nhỏ hơn n
Theo định lý trên, những số còn lại của dãy là tất cả các số nguyên tố không
vượt quá n
Thật vậy, các hợp số không vượt quá n, theo định lý trên, đều phải có ước
nguyên tố nhỏ hơn n, và do đó đã bị gạch khỏi dãy số trong một bước nào đó của thuật toán
Sàng Eratosthenes, mặc dù cho ta thuật toán xác định số nguyên tố không vượt quá số cho trước rất ít dùng cho xác định xem một số đã cho có phải là số nguyên tố hay không Nguyên nhân là vì thuật toán có độ phức tạp quá lớn Để
kiểm tra n, ta phải thực hiện phép chia cho tất cả các số nguyên tố không vượt quá
n
1.3 Thuật toán Euclid
Một trong những thuật toán cơ bản lâu đời nhất của toán học là thuật toán Euclid Thuật toán đó cho phép xác định ước chung lớn nhất của hai số nguyên cho trước
Khi trình bày thuật toán Euclid ta nhắc lại sơ qua về khái niệm đồng dư và các tính chất cơ bản của ước chung lớn nhất của hai số nguyên cho trước
Giả sử m là một số nguyên dương Ta lại nói hai số nguyên a và b là đồng
dư với nhau modulo m nếu m chia hết hiệu a-b (ab(mod m)
vậy ab (mod m) khi và chỉ khi tồn tại số nguyên k sao cho a = b +km
Trang 8Quan hệ đồng dư là một trong những quan hệ cơ bản của số học, và ta sẽ gặp thường xuyên trong những ứng dụng toán học trong tin học Trong thuật toán Euclid ta chỉ dùng quan hệ đó để diễn đạt ngắn gọn về phần dư của một phép chia
Thuật toán Euclid
Thuật toán tìm ước chung lớn nhất (UCLN) d của hai số nguyên không âm a
và b (kí hiệu là d = (a,b))
Nếu b = 0, in ra a và kết thúc thuật toán
Đặt r a mod b, a b, b r, và quay về bước 1
Ví dụ: d = (24,63) bằng thuật toán Euclid
Ta có d = (24,63) = (15,24) = (9,15) = (6,9) = (3,6) = (0,3) = 3
Số phép chia cần thiết để tìm UCLN của hai số nguyên dương bằng thuật
toán Euclid không vượt quá 5 lần số chữ số thập phân của hai số bé trong hai số
đã cho
Thuật toán Euclid mở rộng
cho hai số nguyên không âm v, u tìm (u1,u2,u3) sao cho
(u,v)= u3 = uu1+vu2
Trong tính toán, ta thêm vào các ẩn phụ (v1,v2,v3), (t1,t2,t3) và luôn có trong
mọi bước các đẳng thức sau đây:
Và quay về bước hai
Ví dụ: Ta tính UCLN của hai số 781 và 330 (781,330)
781 = 2*330 +121
Trang 9Định nghĩa : Cho n là số nguyên dương, hàm ф-Euler của n, ký hiệu ф(n), là
số các số nguyên dương nhỏ hơn hoặc bằng n và nguyên tố cùng nhau với n
Với n N , số lượng các số tự nhiên bé hơn n và nguyên tố cùng nhau với n
được ký hiệu là n Ví dụ 5 =4, 6 =2, 7 =6 Rõ ràng, khi p là số nguyên
tố thì mọi số tự nhiên bé hơn nó đều là số nguyên tố cùng nhau với nó và do đó ta
có p p 1 Tổng quát hơn, khi p là số nguyên tố và r là một số tự nhiên bất kì
p p
Trang 10Một thặng dư thu gọn modulo n là một tập hợp n số nguyên sao cho mỗi phần tử của tập hợp nguyên tố cùng nhau với n, và không có hai phần tử nào đồng
dư với nhau modulo n
Nói cách khác từ hệ thặng dư đầy đủ modulo nguyên tố, để thành lập hệ thặng
dư thu gọn ta chỉ giữ lại số nào nguyên tố cùng nhau với n
Định lý Euler có thể dùng để tìm nghịch đảo của modulo m Chẳng hạn nếu
a và m là các số nguyên tố cùng nhau, ta có a a m 1bmodm, tức là m 1
Có hai cách hiểu về đồng dư: Một của các nhà số học và một của các
chuyên gia máy tính Các nhà số học nói rằng ab mod m nếu như a và b sai khác nhau một bội của m, còn các chuyên gia máy tính thì bảo rằng a(mod m)=b nếu như số tìm được trong phép chia a và b cho m là bằng nhau Tuy
nhiên hai cách hiểu đều có cùng bản chất nên ta không ngại khả năng nhầm lẫn, mà chỉ nên lưu ý khi làm việc ở đâu thì nói như thế nào Trong tài liệu này
ta sẽ dùng cách nói của các nhà toán học
Phép tính đồng dư theo mod m dẫn đến việc tách lập số nguyên ra thành m lớp, mỗi lớp chưa các số nguyên đồng dư với nhau theo modulo m Tập các lớp này được ký hiệu là Z/mZ và chứa đúng m phần tử Mỗi lớp trong tập Z/mZ có
Trang 11đúng một số nằm trong đoạn 0,m1, cho nên mỗi số nguyên trong đoạn này được
xem như “đại diện” của một lớp
Một số tính chất của phép tính đồng dư:
Nếu aa(mod m);
Nếu ab(mod m)thì ba(mod m);
Nếu ab(mod m)và bc(mod m);thì ac(mod m);
Nếu ab (mod m) và cd (mod m);
thì a c bd (mod m), a.cb.d(mod m);
Như vậy ta có thể tự do thực hiện các phép tính số học thông thường trên
9 = 1.7 + 2,7 = 3.2 + 1,2 = 2.1 + 0,
rồi thế ngược trở lại ta có
1 = 7 - 3.2 = 7- 3.(9-1.7) = 4.7- 3.9
Và suy ra 4.7 1(mod 9), hay là 7-1 = 4(mod 9)
Tập các phần tử trong Z/mZ mà có nghiệm nghịch đảo thường được ký hiệu
là Z/mZ* Rõ ràng tập này có số phần tử bằng m , và trên tập này, ngoài phép tính cộng trừ, nhân ta còn có thể đưa vào phép chia
1.4.2 Tính toán đồng dư của luỹ thừa bậc lớn
Như đã thấy, hệ quả của định lý Euler có thể giúp ta giảm nhẹ việc tính toán đồng dư của luỹ thừa (bậc cao) một cách rất đáng kể Tuy nhiên nó chỉ thực sự
hiệu quả khi a lớn hẳn hơn m , vì chỉ khi ấy thì b mới thực sự nhỏ hơn a Trong thực tế tính toán cũng thường đòi hỏi ta phải làm việc với những số m lớn, và cũng
thường kéo theo m khá lớn, thậm chí lớn hơn a Khi ấy người ta phải dùng các
kỹ thuật khác, và một trong những cách hay được dùng nhất là phương pháp bình
Trang 12Để hiểu rõ phương pháp này, ta chỉ cần đưa ra một ví dụ minh họa: Tính
8743(mod 103) Nếu làm song phép tính luỹ thừa mới tính đồng dư thì không những sẽ phải làm việc với những số lớn, mà còn gặp nguy hiểm ở chỗ tràn bộ nhớ Muốn tránh điều này, người ta tiến hành khai triển số mũ dưới dạng cơ số 2, tức là:
Sau đó tổng hợp lại, căn cứ vào khai triển (*), ta lấy tích của các luỹ thừa bậc
25,23,21,20 (rút gọn theo modulo 103) và sẽ thu được kết quả là:
8743 (mod 103) = 38*63*50*87 (mod103) = 85
Theo cách này chỉ cần làm việc với những số vừa và nhỏ, không những nhanh
mà còn có thể làm việc trên máy tính bấm tay
1.4 3 Định lý trung quốc về phần dư
Giả sử m 1 , m 2 ,…,m r là các số nguyên dương n cùng nhau từng cặp Khi đó hệ đồng dư:
x a 1 (mod m 1 )
xa 2 (mod m 2 )
…
xa r (mod m r )
Có nghiệm duy nhất modulo m = m 1 m 2… m k-1 m k+1 …m r
Định lý phần dư được sử dụng trong máy tính để làm việc với những số lớn
Để đưa một số quyền lớn tuỳ vào máy tính và làm các phép tính số học với chúng, ta
cần có những kĩ thuật đặc biệt Theo định lý này khi cho trước các modulo n cùng
Trang 13máy chỉ là 100 nhưng ta cần làm phép tính số học với những con số nguyên cỡ 106 Trước tiên ta tìm các số nguyên nhỏ hơn 100, nguyên tố cùng nhau từng cặp, sao cho tích chúng vượt quá 106 Chẳng hạn, ta có thể lấy m 1 = 99, m 2 = 98, m 3 = 97, m 4 =
95 Ta chuyển các số nguyên bé hơn 106 thành những bộ 4 số theo thặng dư dương
bé nhất modulo m 1 ,m 2 ,m 3 ,m 4 (để làm điều này, ta cũng phải làm việc với những số nguyên lớn hơn! Tuy nhiên điều đó chỉ cần làm với đầu vào, và một lần nữa với đầu
ra) Như vậy, chẳng hạn để cộng các số nguyên, ta chỉ cần cộng các thặng dư dương
bé nhất của chúng modulo m 1 ,m 2 ,m 3 ,m 4. sau đó lại dùng lại định lý về phần dư để tìm
bộ 4 số tương ứng với tổng
Ví dụ:
Ta muốn tính tổng x = 123684, y = 413456 với máy tính cỡ từ là 100
Ta có:
x = 33 (mod 99), 8 (mod 98), 9 (mod 97), 89 (mod 95),
y = 32 (mod 99), 92 (mod 98), 42 (mod 97),16 (mod 95)
Như vậy;
x + y = 65 (mod 99), 2 (mod 98), 51 (mod 97), 10 (mod 95)
Bây giờ ta dùng định lý về phần dư để tìm (x + y) modulo m = 99.98.97.95 =
Ta cần tìm ngược của m i (mod y j ) với i = 1,2,3,4, tức là giải hệ phương trình
đồng dư sau đây (bằng thuật toán Euclid):
936070y1 91y1 1 (mod 99)
Trang 14= 3397886480 537140 (mod 89403930)
Vì 0 < x + y < 89403930, ta suy ra x + y = 537140
Nói chung cỡ của máy tính là luỹ thừa rất lớn của 2, chẳng hạn 235 Như vậy, để sử dụng định lý phần dư ta cần các số nhỏ hơn 235 nguyên tố cùng nhau từng cặp Để tìm các số như vậy, thuận tiện nhất là dùng các số dạng 2m - 1, trong
đó m là số nguyên dương Các phép tính như vậy tương đối đơn giản dựa vào bổ đề
sau:
Bổ đề: Nếu a và b là các số nguyên dương thì thặng dư dương bé nhất
modulo 2 b - 1 của 2 a - 1 là 2 r - 1, trong đó r là thặng dư dương bé nhất của a modulo b
Thật vậy, nếu a = bq+r, trong đó r là thặng dư dương bé nhất của a modulo
Bây giờ ta có thể làm phép tính số học với những số cỡ đến 2184
Trong các máy tính hiện đại, việc thực hiện nhiều phép tính được tiến hành đồng thời Vì thế việc sử dụng định lý Trung Quốc về phần dư trên lại càng tiện lợi: Thay cho việc làm việc với các số nguyên tố lớn, ta làm nhiều phép tính đồng thời với những số nguyên tố bé hơn Điều đó giảm đáng kể thời gian tính toán
Trang 15Từ chứng minh định lý Trung Quốc về phần dư, ta có thuật toán sau đây để giải hệ phương trình đồng dư x x imodm i, trong đó m i, 1 i k là các số nguyên tố cùng nhau từng cặp, xi là các số nguyên cho trước Trong thuật toán trình bày sau đây, chúng ta đã tìm ra cách để tránh phải làm việc với các số lớn như
m i và am i
Thuật toán giải phương trình đồng dư bằng định lý Trung Quốc:
1 (xuất phát) Đặt j 2, c 1 1 Hơn nữa ta sắp xếp lại các số m i theo thứ
1.5 Thuật toán lũy thừa nhanh
Thuật toán lũy thừa nhanh modulo N (y = xe mod N), được sử dụng rất nhiều trong các hệ mật mã khóa công khai Tốc độ thực hiện của các quá trình mã hóa và giải mã của hệ mật mã, phụ thuộc rất nhiều vào phép tính này với toán hạng
là những số nguyên cực lớn Vì vậy đòi hỏi cần phải có một thuật toán thực hiện phép tính lũy thừa modulo càng nhanh càng tốt Trong phần này sẽ trình bày chi tiết về thuật toán và chi phí thực hiện của thuật toán thường được sử dụng nhất
hiện nay gọi là: “thuật toán lũy thừa nhanh”
Thuật toán này, dựa vào biểu diễn nhị phân của số mũ để thực hiện phép tính lũy thừa modulo của một số nguyên, chỉ với một vài phép tính nhân và phép tính bình phương Thuật toán có các tham số đầu vào là: số M, số N, và biểu diễn
*2 1 2
i
i i
e k e
Trang 16thứ i, thực hiện một phép tính bình phương của kết quả hiện tại (Ci = Ci-1 * Ci-1 mod N) Nếu giá trị bít tại vị trí đang xét ei = 1 thì kết quả vừa tính được nhân với M modulo N, (C =C * M mod N) Khi kết thúc lần lặp thứ k ta có kết quả là: C = Memod N
Trang 17CHƯƠNG 2
MÃ HÓA VÀ HỆ MÃ HÓA CÔNG KHAI
2.1 Giới thiệu chung về mã hóa
Mọi người đều biết rằng khi muốn giữ một cái gì đó cho riêng mình thì cần phải che giấu nó đi Để gửi bức thư riêng cho một người bạn, chúng ta phải cho nó vào một bao thư và gián nó lại Nhưng nếu bức thư đó quan trọng mà chúng ta không muốn cho ai khác ngoài người nhận biết được nội dung bức thư đó Chúng
ta không thể chắc chắn rằng trên đường bức thư đó tới tay người nhận, bức thư đó
có được an toàn hay không
Từ đó nảy sinh vấn đề bảo vệ thông tin Từ xa xưa, người ta đã biết áp dụng các biện pháp bảo vệ thông tin thô sơ như là giấu thông tin, cho người canh gác,…Khi trí tuệ sáng tạo của con người phát triển thì không thể áp dụng biện pháp thô sơ này được
Ngày nay với sự bùng nổ của công nghệ thông tin đặc biệt là Internet và Email, thì vấn đề bảo vệ thông tin càng trở nên quan trọng quyết định sự sống còn của một công ty, đảm bảo an ninh quốc phòng cho mỗi quốc gia,…
Có hai phương pháp để đạt được mục tiêu này: Kiểm soát lối vào ra và mã hóa dữ liệu
1) Phương pháp kiểm soát lối vào nhằm ngăn cản sự xâm nhập trái phép vào
hệ thống nhờ xây dựng các kiểm soát thích hợp, ví dụ như các hệ sử dụng mật khẩu, mà trong đó chỉ những người được phép sử dụng mới qua được để thâm nhập vào hệ thống Hệ này có một số nhược điểm Chẳng hạn dữ liệu lưu trữ bên ngoài cũng cần được bảo vệ và việc này dường như chỉ có sự bảo vệ thuần túy vật
lý là có thể đạt được Như vậy, điều đó dẫn đến sự kém an toàn đối với hệ thống Một nhược điểm nữa của phương pháp này đó là không thực tiễn khi ta quan hệ với các hệ số lớn
2) Sự truy nhập thông tin còn được kiểm soát bằng một phương pháp khác:
mã hóa dữ liệu Điều này có nghĩa là thông tin được lưu trữ trong hệ dưới dạng đã được mã hóa Khi đó, những người truy nhập trái phép dù có lấy được thông tin,
Trang 18nhưng nó lại ở dạng mã hóa, do đó thông tin này vô nghĩa nếu họ không biết cách giải
Mật mã học nghiên cứu các hệ thống dùng cho việc truyền thông bí mật, gồm
có hai lĩnh vực nghiên cứu: Mã hóa (Cryptography) – thiết kế các hệ truyền thông
bí mật, và Giải mã (Cryptanalysis) – nghiên cứu các phương pháp để giải mã các
hệ truyền thông bí mật Mật mã học trước đây chủ yếu được áp dụng trong các hệ truyền thông quân sự và ngoại giao, nhưng các áp dụng có ý nghĩa thực tế của nó ngày nay đã xuất hiện trong tất cả các lĩnh vực của xã hội Hai ví dụ minh chứng là các hệ thống tập tin máy tính (trong đó mỗi người sử dụng lưu trữ riêng các tập tin của họ) và các hệ chuyển ngân điện tử Một người sử dụng máy tính chỉ muốn cất giữ riêng các tập tin máy tính của mình cũng như ta cất các giấy tờ trong tủ hồ sơ,
và một ngân hàng thì muốn việc chuyển ngân điện tử sẽ an toàn như là được chuyển ngân bằng xe bọc thép vậy
2.2 Mục tiêu của an toàn bảo mật thông tin
Bên cạnh việc làm thế nào để che dấu nội dung thông tin thì mã hoá phải đảm bảo các mục tiêu sau:
1.Tính bí mật (Confjdentialy): Đảm bảo dữ liệu được truyền đi một cách an
toàn và không thể bị lộ thông tin nếu như có ai đó cố tình muốn có được nội dung của dữ liệu gốc ban đầu Chỉ những người được phép mới có khả năng đọc được nội dung thông tin ban đầu
2.Tính xác thực (Authentication): Giúp cho người nhận dữ liệu xác định được
chắc chắn dữ liệu mà họ nhận là dữ liệu gốc ban đầu Kẻ giả mạo không thể có khả năng để giả dạng một người khác hay nói cách khác không thể mạo danh để gửi dữ liệu Người nhận có khả năng kiểm tra nguồn gốc thông tin mà họ nhận được
3.Tính toàn vẹn (Integrity): Giúp cho người nhận dữ liệu kiểm tra được rằng dữ
liệu không bị thay đổi trong quá trình truyền đi Kẻ giả mạo không thể có khả năng thay thế dữ liệu ban đầu bằng dữ liệu giả mạo
4.Tính không thể chối bỏ (Non-repudation): Người gửi hay người nhận không
thể chối bỏ sau khi đã gửi hoặc nhận thông tin
Trang 192.3 Một số thuật ngữ và khái niệm
2.3.1 Khái niệm hệ mật mã
Một hệ mật mã là một bộ 5 (P,C,K,E,D) thoả mãn các điều kiện sau:
- P: Là một tập hợp hữu hạn các bản rõ, nó được gọi là không gian bản rõ
- C: Là tập hữu hạn các bản mã, nó được gọi là không gian bản mã Mỗi phần
tử của C có thể nhận được bằng cách áp dụng phép mã hoá Ek lên một phần tử của
2.3.2 Khái niệm mã hoá và giải mã
Mã hoá (encryption): Là quá trình biến đổi thông tin từ dạng nhận thức được
sang dạng không nhận thức được
Giải mã (decryption): Là quá trình ngược lại với mã hoá, tức là biến đổi
thông tin từ dạng không nhận thức được (dữ liệu mã hoá) về dạng nhận thức được (dạng gốc)
Bản rõ (Plain text): Nội dung của văn bản cần trao đổi
Khóa (key): Là bí quyết của việc lập mã và giải mã
Hệ mã đối xứng: Là hệ mã mà quá trình lập mã và giải mã sử dụng chung một
khóa
Hệ mã phi đối xứng: Là hệ mã mà quá trình lập mã và giải mã sử dụng khóa
khác nhau
Quy trình mã hoá và giải mã dữ liệu
Bộ phận quản lý khoá thực hiện lập khoá mã hoá (Ke) và khoá giải mã (Kd)
Dữ liệu gốc được mã hoá nhờ khoá mã hoá Vấn đề ở đây là quản lý khóa như thế nào để cho việc mã hoá và giải mã tương đối đơn giản và đảm bảo tuyệt đối bí mật cho khoá giải mã
Trang 202.4 Thuật toán mã hóa đối xứng (Symmetric Algorithms)
Mật mã đối xứng cũng được gọi là mật mã Private key Cryptograpgy hay mật
mã Secret key Cryptography Nó sử dụng một chìa khoá duy nhất để mã hoá và
giải mã dữ liệu (được thể hiện dưới hình dưới) đây là hạn chế sự an toàn và phổ
biến của phương pháp đối xứng, đồng thời cũng là điểm yếu, bởi vì chỉ cần một
bên để lộ khoá thì bí mật sẽ bị mất
Hệ mã cổ điển là loại mã được thực hiện thông qua hàm f có tính thuận
nghịch, sử dụng f để mã hoá, biết f có thể suy ra hàm giải mã f-1
Khi một mật mã đối xứng được sử dụng cho một bản rõ, người sử dụng thực
hiện mã hoá với một secret key Khi một giao tiếp được sử dụng mã hoá đối xứng,
hai giao tiếp sẽ chia sẻ nhau cùng một mật mã để mã hoá và giải mã gói tin
Trong hệ thống mã hoá đối xứng, trước khi truyền dữ liệu, 2 bên gửi và nhận
phải thoả thuận về khoá dùng chung cho quá trình mã hoá và giải mã Sau đó, bên
gửi sẽ mã hoá bản rõ (Plaintext) bằng cách sử dụng khoá bí mật này và gửi thông
điệp đã mã hoá cho bên nhận Bên nhận sau khi nhận được thông điệp đã mã hoá
Quy trình mã hoá dữ liệu
Hình 3 Một hệ thống mật mã đối xứng
Trang 21Sự bảo mật của một thuật toán đối xứng dựa trên khoá Tiết lộ khoá có nghĩa rằng bất cứ ai biết khoá đều có thể mã hoá và giải mã thông tin trên hệ thống này Nhóm mã hoá và giải mã bằng thuật toán đối xứng được thể hiện bằng công thức:
2.5 Thuật toán mã hóa phi đối xứng(Puclic-key-Algorithms)
Hay còn được gọi với một cái tên khác là mã hoá khoá công khai (Public Key Cryptography), nó được thiết kế sao cho khoá sử dụng trong quá trình mã hoá khác biệt với khoá được sử dụng trong quá trình giải mã Hơn thế nữa, khoá sử dụng trong quá trình giải mã không thể được tính toán hay luận ra được từ khoá được dùng để mã hoá và ngược lại, tức là hai khoá này có quan hệ với nhau về mặt toán học nhưng không thể suy diễn được ra nhau Thuật toán này được gọi là mã hoá công khai vì khoá dùng cho việc mã hoá được công khai cho tất cả mọi người Một người bất kỳ có thể dùng khoá này để mã hoá dữ liệu nhưng chỉ duy nhất người mà
có khoá giải mã tương ứng mới có thể đọc được dữ liệu mà thôi Do đó trong thuật toán này có 2 loại khoá: Khoá để mã hoá được gọi là Public Key, khoá để giải mã được gọi là Private Key
Trong mỗi quá trình truyền thông tin sử dụng mật mã bất đối xứng chúng cần một cặp key duy nhất Nó tạo ra khả năng có thể sử dụng linh hoạt và phát triển trong tương lai hơn là giải pháp mật mã đối xứng Private key bạn cần phải dữ
Trang 22riêng và đảm bảo tính bảo mật và nó không truyền trên mạng Public key được cung cấp miễn phí và được công bố rộng rãi cho mọi người
Thuật toán này được thể hiện bằng:
E k1 (P)=C
Dk 2 (C)=P
Dk 2 (E k1 (P))=P
Trong một số trường hợp, thông điệp sẽ được mã hoá bằng khoá riêng và giải
mã bằng khoá công khai, điều này thường được áp dụng đối với chữ ký điện tử
Hình 4 Một hệ thống mật mã bất đối xứng
Trang 23Như vậy, vấn đề cốt yếu của một hệ mã hoá tốt là việc khôi phục bản rõ P từ bản mã C khi biết Dk phải là khó, hoặc tốt hơn là không thể được
Có 6 tình huống mà người thám mã có thể có khi phân tích Trong các tình huống đó giả sử rằng người thám mã đã biết thuật toán được dùng để mã hoá:
Chỉ biết bản mã (Ciphertext-only attack) Trong trường hợp này, người thám
mã có bản mã của một thông điệp, và biết được thuật toán được dùng để mã hoá Công việc của người thám mã là phải tìm được bản rõ của thông điệp, và tốt hơn hết là tìm ra khoá được sử dụng để mã hoá thông điệp, để từ đó giải mã những thông điệp khác được mã hoá với cùng khoá đó
Để việc phân tích của người thám mã có hiệu quả thì tốt hơn hết là bản mã phải dài Trong những hệ mã đơn giản, ví dụ như CAESAR, một bản mã ngắn cũng đưa lại kết quả bởi vì chỉ có duy nhất một khoá được sử dụng để mã hoá Trong những hệ hoàn chỉnh hơn thì bản mã dài là cần thiết Hiệu quả của phương pháp phân tích có thể dựa trên thông tin thống kê liên quan tới ngôn ngữ mà bản rõ được sử dụng Ví dụ như thông tin về tần số xuất hiện của mỗi ký tự riêng lẻ trong tiếng Anh
Đầu vào: C1=Ek(P1), C2=Ek(P2), Ci=Ek(Pi) (với i 1)
Cần tìm: hoặc P1, P 2, Pi; k; hoặc một thuật toán để nhận được Pi+1 từ
Ci+1=Pk(Pi+1)
Biết bản rõ (Known-plaintext attack) Người thám mã không chỉ biết bản mã
Trang 24của người thám mã là tìm ra khoá (hoặc các khoá) được sử dụng để mã hoá các thông điệp hoặc thuật toán để giải mã bất kỳ một thông điệp mới nào được mã hoá bằng khoá đó
Đầu vào: P1, C1=Ek(P1), P2, C2=Ek(P2), Pi, Ci=Ek(Pi)
Cần tìm: hoặc k, hoặc một thuật toán để nhận được Pi+1 từ Ek(Pi+1)
Bản rõ được lựa chọn (Chosen-plaintext attack) Người thám mã không chỉ
phân tích bản mã mà còn được kết hợp với bản rõ của một vài thông điệp, nhưng các bản rõ không là tuỳ ý mà do người thám mã phải lựa chọn Trường hợp này tốt hơn trường hợp (2) đối với người thám mã, bởi vì người thám mã có thể chọn khối bản rõ đặc trưng để giải mã, nó có thể mang lại nhiều thông tin về khoá Công việc của người thám mã là tìm khoá (hoặc các khoá) được sử dụng để mã hoá các thông điệp hoặc một thuật toán để giải mã bất cứ thông điệp đã được mã hoá mới nào bằng các khoá đó
Đầu vào: P1, C1=Ek(P1), P2, C2=Ek(P2), Pi, Ci=Ek(Pi), người thám mã được chọn P1, P2, Pi
Cần tìm: hoặc k, hoặc một thuật toán để nhận được Pi+1 từ Ci+1=Ek(Pi+1)
Bản rõ được lựa chọn thích hợp (Adaptive-chose-plaintext attack) Đây là
một trường hợp đặc biệt của trường hợp bản rõ được lựa chọn Người thám mã không chỉ có thể được lựa chọn bản rõ mà nó đã được mã hoá, mà họ còn có thể biến đổi những điểm cần thiết dựa trên kết quả của những lần mã hoá trước Với trường hợp bản rõ được lựa chọn, người thám mã có thể lựa chọn một khối bản rõ lớn để giải mã; trong trường hợp bản rõ được lựa chọn thích hợp họ có thể lựa chọn một khối bản rõ nhỏ hơn sau đó lựa chọn khối khác dựa vào kết quả của khối đầu tiên, v.v
Bản mã được lựa chọn (Chosen-plaintext attack) Người thám mã có thể
chọn các bản mã khác nhau và biết được bản rõ Công việc của người thám mã là tìm khoá
Đầu vào: C1, P1=Dk (C1), C2, P2 = Dk(C2), Ci, Pi=Dk(Ci)
Cần tìm: k
Trang 25bản mã nào Trong trường hợp này người thám mã có rất nhiều thời gian để làm việc
Trường hợp (5), (6) thường được ứng dụng chủ yếu đối với các hệ thống mã hoá sử dụng khoá công khai
Hiện nay có rất nhiều thuật toán mã hoá Có ba thuật toán thường được sử dụng:
DES (Data Encryption Standard) là thuật toán mã hoá trên máy tính hiện nay đang được sử dụng rộng dãi nhất DES là chuẩn mã hoá được phát minh ở Mỹ
Nó là thuật toán đối xứng; khoá để mã và khoá để giải giống nhau
RSA (tên của thuật toán được viết tắt tên của các tác giả - Rivest, Shamir và Adleman) là thuật toán công khai phổ biến nhất Nó có thể được sử dụng cho cả
Giả sử khoá cho MDV là K = 11 và bản rõ là: wewillmeetatmidnight
Giả sử P = C = K = Z26 với 0 k 25, Định nghĩa:
eK(x) = x +K mod 26
và dK(x) = y -K mod 26
(x,y Z26)
Trang 26Giả sử P = C = K = Z26 K chứa mọi hoán vị có thể của 26 kí hiệu
2.7.2 Mã thay thế
Để có được bản mã người ta thay đổi một ký hiệu trong bản rõ bằng một ký hiệu nào đó Trên thực tế, mã thay thế có thể lấy cả P và C đều là bộ chữ cái tiếng Anh (26 chữ cái) Ta dùng Z26 trong mã dịch vòng vì các phép mã hoá và giải mã đều là các phép toán đại số trong mã thay thế, có thể xem mã hoá và giải mã như các hoán vị của các ký tự Ta có thể định nghĩa mã thay thế dưới dạng toán học như sau
Trang 27Sau đây là một ví dụ về phép hoán vị ngẫu nhiên tạo nên một hàm mã hoá (cũng như trước các ký hiệu của bản rõ được kí hiệu bằng chữ in thường còn các
ký hiệu của bản mã được kí hiệu bằng chữ in hoa)
Như vậy e(a)=X, e(b)= N,… Hàm giải mã là phép hoán vị ngược Điều này được thực hiện bằng cách viết hàng thứ hai lên trước rồi sắp xếp theo thứ tự chữ cái Ta nhận được:
Bởi vậy d(A)= d, d(B)= l,…
Đánh giá độ an toàn
Mỗi khoá của mã thay thế là một phép hoán vị của 26 kí tự Số các hoán vị
này là 26!, lớn hơn 4x1026 là một số rất lớn Bởi vậy, phép tìm khoá vét cạn không thể thực hiện được, thậm chí bằng máy tính Tuy nhiên mã hoán vị lại dễ dàng bị thám bằng các phương pháp khác
Trang 28Để việc giải mã có thể thực hiện được, yêu cầu nhất thiết là hàm Affine phải
là đơn ánh Nói cách khác, với bất kỳ y Z26, ta muốn có đồng nhất thức sau:
ở đây tất cả các phép toán đều được thực hiện trên Z26
Để minh hoạ ta hãy mã hoá bản rõ “hot” Trước tiên ta biến đổi các chữ h, o, t
thành các thặng dư theo modulo 26 Ta được các số tương ứng là 7,14,19 bây giờ
sẽ mã hoá:
Trang 29Cho m là một số nguyên dương cố định nào đó Giả sử P = C = K = (Z26)m
Với khoá K = (k1, k1,…,km) ta xác định:
ek(x1, x2, …, xm) = (x1+k1, x2+k2,…, xm+km)
và
dk(y1, y2,…, ym) = (y1-k1, y2-k2, …, ym-km) Trong đó tất cả các phép toán đều được thực hiện trên Z26
7 x 19 + 3 mod 26 = 136 mod 26 = 6
Bởi vậy 3 kí hiệu của bản mã là 0, 23, 6 tương ứng với xâu kí tự AXG
Thực hiện giải mã theo hàm giả mã ta thu được bản mã “hot”
Đánh giá độ an toàn
Do đặc trưng của hệ mã cổ điển: Hàm mã hoá phải khả nghịch, có f thì tính
được f-1, hàm f phải là hàm đơn ánh do định lý về nghiệm duy nhất của đồng dư đa thức ax = b mod m Bởi vậy, hàm mã hoá của hệ mã Affine là hàm ek(x) có nghiệm duy nhất khi (a,26) = 1
Từ nhận xét trên ta thấy, sẽ có 12 cách chọn a, 26 cách chọn b do đó có: 12*26 = 312 cách chọn khoá Như vậy độ an toàn là nhỏ
2.7.4 Mã Vigenere
Trong cả hai hệ mã dịch vòng và mã thay thế (một khi khoá đã được chọn) mỗi ký tự sẽ được ánh xạ vào một ký tự duy nhất Vì lý do đó, các hệ mật còn được gọi là các hệ thay thế đơn biểu Còn đây là một hệ mật không phải là bộ chữ đơn, mật mã này lấy tên của Blaise de Vigenere sống vào thế kỷ XVI Hệ mã Vigenere được định nghĩa như sau:
Sử dụng phép tương ứng A <=> 0, B<=> 1,…, Z<=>25 mô tả ở trên ta có thể gắn cho mỗi khoá K với một chuỗi kí tự có độ dài m được gọi là từ khoá Mật mã Vigenere sẽ đồng thời mã hoá m kí tự
Ví dụ
Giả sử m = 6 và từ khoá là CIPHER Từ khoá này tương ứng với dãy số
K =(2,8,15,4,17) Giả sử bản rõ là xâu:
Thiscryptosystemisnotsecure
Trang 30Ta sẽ biến đổi các phần tử của bản rõ thành các thặng dư theo modulo 26, viết chúng thành các nhóm rồi cộng với từ khoá theo modulo 26 như sau:
Bởi vậy dãy kí tự tương ứng của xâu bản mã sẽ là
Trong hệ mật Vigenere có từ khoá độ dài m, mỗi kí tự có thể được ánh xạ vào trong m ký tự có thể có Một hệ mật như vậy được gọi là hệ mật thay thế đa biểu Nói chung, việc thám mã hệ mật thay thế đa biểu sẽ khó khăn hơn so với thám mã hệ đơn biểu
2.7.5 Hệ mã Hill
Mật mã Hill cũng là một hệ mật thay thế đa biểu do Lester S.Hill đưa ra năm
1929 Giả sử m là một số nguyên dương P=C=(Z26)m Ý tưởng ở đây là lấy m tổ
Trang 31Cho m là một số nguyên dương cố định Cho P=C=(Z26)m và cho K= {các ma trận khả nghịch cấp m x m trên Z26
Sau đây sẽ chứng minh ngắn gọn kết quả này
Trước tiên, giả sử rằng UCLN (det K, 26) =1 Khi đó det K có nghịch đảo trong Z26 Với 1 ≤ i ≤ m, 1 ≤ j ≤ m, định nghĩa Kj i ma trận thu được từ K bằng cách loại bỏ hàng thứ i và cột thứ j Và định nghĩa ma trận K* có phần tử (i,j) của nó nhận giá trị (-1) det Kj i (K* được gọi là ma trận bù đại số của K) Khi đó có thể chứng tỏ rằng:
K-1 = (det K)-1 K*
Bởi vậy K là khả nghịch
Ngược lại K có nghịch đảo K-1 theo quy tắc nhân của định thức
1= det I = det (KK-1) = det K det K-1
Bởi vậy det K có nghịch đảo trong Z26
8 11
18 7 1
Trang 32Cho m là một số nguyên dương xác định nào đó Cho P=C= (Z26)m và cho K gồm tất cả các hoán vị của {1,…,m} Đối với một khoá (tức là một hoán vị)
π
-1 (m)) Trong đó π-1 là hoán vị ngược của hoán vị π
Do không gian khoá nhỏ hơn so với hệ mã Vigenere nên độ an toàn của hệ
mã Hill nhỏ hơn so với hệ mã Vigenere
Giả sử m = 6 và các phép hoán vị (π) như sau:
Khi đó phép hoán vị ngược π-1 sẽ là:
Trang 33Shesellsseashellsbytheseashore
Trước tiên ta nhóm bản rõ thành 6 nhóm các kí tự
Shesel lsseas hellsb ythese ashore
Bây giờ mỗi nhóm 6 chữ cái được sắp xếp lại theo phép hoán vị π ta có: EESLSH SALSES LSHBLE HSYEET HRAEOS
Như vậy bản mã thu được là: EESLSHSALSESLSHBLEHSYEET HRAEOS Quá trinh giải mã làm tương tự bằng phép hoán vị đảo π-1
Đánh giá độ an toàn
Không giống với Mã thay thế ở đây không có các phép toán đại số nào cần thực hiện khi mã hoá và giải mã nên thích hợp hơn cả là dùng các ký tự mà không dùng các thặng dư theo modulo 26 Thực tế mã hoán vị là trường hợp đặc biệt của
mật mã Hill
2.7.7 Sơ lược về thám mã các hệ mã cổ điển
Trong phần này ta sẽ bàn tới một vài kỹ thuật thám mã Giả thiết chung ở
đây là luôn coi đối phương đã biết hệ mật đang dùng Giả thiết này được gọi là nguyên lý Kerekhoff Dĩ nhiên, nếu đối phương không biết hệ mật được dùng thì nhiệm vụ của anh ta sẽ khó khăn hơn Tuy nhiên, ta không muốn độ mật của một
hệ mã lại dựa trên một giả thiết không chắc chắn là đối phương không biết hệ mật được sử dụng Do đó, mục tiêu trong thiết kế một hệ mật là phải đạt được độ mật dưới giả thiết Kerekhoff
Trước tiên ta phân biệt các mức độ tấn công khác nhau vào các hệ mật Sau
- Bản mã được lựa chọn: Người tấn công có thể truy nhập được vào hệ thống
và chọn một bản mã y, sau đó giải mã được thành bản rõ x tương ứng
Trong mỗi trường hợp trên, điều đối tượng cần phải xác định chính là khoá đã
sử dụng Rõ ràng 4 mức tấn công trên đã được liệt kê theo độ tăng của sức mạnh