Các hệ thống mật mã hiện đại tức là các hệ mật mã khóa công khai đã khắc phục được những nhược điểm đó: người tham gia trong hệ thống chỉ cần giữ bí mật khóa giải mã riêng của mình trong
Trang 1TRƯỜNG ĐẠI HỌC DÂN LẬP KỸ THUẬT CÔNG NGHỆ
MSVS: 98TH029 – 98TH271
KHÓA 98
TP HỒ CHÍ MINH
2003
Trang 2TRƯỜNG ĐẠI HỌC DÂN LẬP KỸ THUẬT CÔNG NGHỆ
Trang 3NHẬN XÉT CỦA GIÁO VIÊN HƯỚN DẪN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 4………
………
………
TP.Hồ Chí Minh, ngày tháng năm 2003
Giáo viên hướng dẫn
Lê Mạnh Hải
Trang 5NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 6………
………
………
………
………
TP.Hồ Chí Minh, ngày tháng năm 2003
Giáo viên phản biện
Trang 7Lời cảm ơn
Lời đầu tiên, chúng em xin chân thành cảm ơn thầy Lê Mạnh Hải, thầy đã hết lòng truyền đạt kiến thức,kinh nghiệm, giúp chúng em hoàn thành luận văn này
Cũng xin bày tỏ lòng biết ơn đối với các thầy cô đã tận tình truyền đạt kiến thức trong những năm học vừa qua
Xin gửi lời tri ân đến trường Đại học Dân lập Kỹ Thuật Công Nghệ
đã đào tạo biết bao thế hệ sinh viên trở thành người hữu ích
Những người thực hiện
Trang 8và nó được truyền đi bởi “những người đưa tin” được tin cậy tốt, thì ngày nay
để tránh những rủi ro có thể xảy ra và sự linh hoạt trong việc truyền đi những thông báo được an toàn hơn ngành mã hóa mật mã được ứng dụng rộng rãi Thế kỷ 20, thế kỷ của thời đại thông tin, đã có rất nhiều thay đổi, con người liên hệ trao đổi thông tin với nhau thông qua mạng toàn cầu Internet, và chính việc tham gia này đã làm thay đổi rất nhiều trong vấn đề bảo mật Về dữ liệu, chúng ta cần quan tâm đến những yếu tố sau: tính bảo mật, tính toàn vẹn
và tính kịp thời Các hệ thống máy tính bảo mật được phân chia theo thời gian
và các mạng máy tính có quan hệ chặt chẽ với việc bảo mật các kênh truyền thông với nhau Đặc tính của kênh truyền là môi trường truyền thông truy xuất chung nên việc bảo mật về mặt vật lý được đề cập, do đó phải thông qua ứng dụng của ngành bảo mật Nhiệm vụ chính của bảo mật là mã hoá Ơ đây việc
mã hóa được quan tâm ở mức độ là chuyển đổi dữ liệu thành mật mã
Cho đến cuối những năm 70 số học vẫn được xem như là một trong những ngành lý thuyết thuần tuý nhất của toán học Quan niệm đó thay đổi khi
nó được áp dụng để xây dựng những hệ mật mã khóa công khai Các lý thuyết mới của số học thuật toán được ứng dụng vào thực tiễn Mật mã không chỉ dùng trong bí mật quân sự, như thời kỳ của nhà quân sự thiên tài Cesar đã áp dụng, mà còn dùng trong ngoại giao, kinh tế và thương mại Mật mã hiện đại
có những đòi hỏi mới mang tính nguyên tắc hơn so với mật mã thường dùng trước đây Khác với hoạt động quân sự hoặc ngoại giao, trong kinh doanh thì số lượng các đơn vị phải cùng trao đổi những thông tin mật rất lớn Những hệ thống mật mã cũ khi biết được khoá lập mã của họ ta dễ dàng tìm ra khoá giải
mã Hiển nhiên muốn gửi một thông báo mật cho một đối tượng nào đó ta cần phải biết khóa lập mã của họ, vì vậy những người cùng một hệ mã đều biết bí mật của nhau Nhiều người cùng sử dụng một hệ mã thì không còn là bí mật nữa Các hệ thống mật mã hiện đại tức là các hệ mật mã khóa công khai đã khắc phục được những nhược điểm đó: người tham gia trong hệ thống chỉ cần giữ bí mật khóa giải mã riêng của mình trong khi khóa lập mã được thông báo công khai Việc biết khóa lập mã không cho phép tìm ra khóa giải mã trong
Trang 9một thời gian chấp nhận được, ngay cả khi sử dụng cả máy tính hiện đại với hàng tỉ phép tính trong một giây
II Nhiệm vụ:
Nhiệm vụ của đề tài này là nghiên cứu về giải thuật mã hoá mật mã RSA , xây dựng một chương trình dùng giải thuật RSA để mã hoá và giải mã một tập tin.txt Chương trình này chỉ giới hạn sử dụng trên máy đơn
III Bố cục:
Chương 1 : Tổng quan
Chương 2 : Tìm hiểu về RSA
Chương 3 : Giao diện của chương trình
Một văn bản được mã hóa được biểu thị bằng M hay là P Nó có thể là một chuỗi các bít, một tập tin văn bản, một ảnh, một chuỗi số hóa âm thanh, một hình ảnh phim kỹ thuật số… và hơn thế nữa Trong chừng mực của một máy tính có liên quan đến, M là dữ liệu nhị phân đơn giản Văn bản được mã
Trang 10hóa có mục đích là truyền đi hay lưu trữ Trong tình huống này, M là thông báo phải được mã hóa
Văn bản đã được mã hóa được biểu thị bằng C Nó cũng là dữ liệu nhị phân: đôi khi cùng kích thước với M, và cũng có lúc lớn hơn rất nhiều E được biểu thị cho công việc mã hóa và D dùng để thể hiện việc giải mã các thông báo đã được mã hóa gửi đến
- Quá trình mã hóa và giải mã dùng chung một khóa:
- Quá trình mã hóa và giải mã sử dụng hai khóa khác nhau:
Ví dụ, một người muốn mã hóa những tập tin trên ổ cứng để ngăn chặn những kẻ xâm nhập vào có thể đọc được dữ liệu Trong một hệ thống nhiều người sử dụng, việc mã hóa dữ liệu cho phép bảo mật thông tin trên một kênh truyền không an toàn Trong một ngữ cảnh thông thường: Lan muốn gửi một thông báo cho Nam nhưng không muốn một ai khác ngoài Nam có thể đọc được nó Lan mã hóa dữ liệu với một khóa mã hóa, thông báo đã mã hóa đã mã hóa gửi đi cho Nam Nam giải mã thông báo đã mã hóa đó với một khóa giải
mã và đọc được nó Một người cố lấy cho bằng được khóa giải mã hoặc cố tình chuyển lại tình trạng cũ mà không cần phải có khóa bảo mật Trong một hệ thống mã hóa an toàn, thông tin đã mã hóa không thể chuyển đổi lại thành
Trang 11thông tin ban đầu mà không có khóa giải mã Hệ thống mật mã đối xứng chỉ có một khóa duy nhất vừa là khóa mã hóa vừa là khóa giải mã
2 Giao thức mật mã
a Giới thiệu về giao thức:
Mật mã giải quyết những vấn đề bao gồm tính bảo mật, tính xác thực, tính toàn vẹn Bạn có thể học tất cả về thuật toán và kỹ thuật mã hóa, nhưng đó
là những lý thuyết suông nếu bạn không thể giải quyết vấn đề Đó lý do chúng
ta quan tâm đến các giao thức số nguyên tố
Một giao thức là một chuỗi các bước bao gồm hai hay nhiều phần được thiết kế để thực hiện một tác vụ Một “chuỗi các bước “có nghĩa là giao thức có tính liên tục, từ lúc bắt đầu đến lúc kết thúc Mỗi bước phải được thực thi lần lượt và bước sau không thể thực thi khi bước trước chưa thực thi xong
Giao thức mật mã là một giao thức sử dụng mật mã Giao thức mật mã bao gồm vài giải thuật mật mã nhưng nhìn chung mục đích của giao thức đơn giản chỉ là bảo mật
Bây giờ chúng ta hãy xem xét đến một giao thức được ứng dụng trong mạng máy tính ARPA để xây dựng một kênh truyền dẫn ảo được bảo mật Chúng ta chọn lớp mạng của mô hình tham chiếu mạng hệ mở bảy tầng (OSI)
Hình 1 Mô hình tham chiếu mạng hệ mở
Sơ đồ tổng quát cho việc trao đổi thông tin của giao thức này được mô tả theo hình ở sau
Trang 12Hình 2: Chuyển đổi thông tin giữa hai người sử dụng là A và B
Người sử dụng chương trình A dùng chương trình mã hoá, thông qua hệ điều hành đến mạng truyền thông Thông qua giao diện này, chương trình qua
hệ điều hành của người sử dụng chương trình B và người B sử dụng chương trình mã hoá để cho ra thông điệp mà người A gửi đến
b Truyền thông sử dụng giao thức mã hóa đối xứng
Mã đối xứng là hệ mật mã sử dụng cùng một khóa cho cả việc mã hoá cũng như giải mã một thông điệp
Những hệ thống mã hoá đối xứng có những vấn đề cho phép sau:
Khóa phải được phân bổ một cách bí mật Chúng có giá trị cho tất cả các thông điệp được mã hoá, biết khóa có thể biết hết tất cả các thông điệp
Nếu khóa bị lấy cắp thì người thứ ba có thể giải mã được các thông điệp
đã được mã hóa với một khóa Người này có thể nguỵ tạo một phần và tạo ra những thông điệp bị lỗi để lừa những người khác
Một khóa bí mật được sử dụng cho một cặp người tham gia trên một mạng, tổng số những con số các khóa tăng một cách nhanh chóng khi số lượng
người sử dụng tăng lên Một mạng của n người sử dụng yêu cầu n(n-1)/2 khóa
Ví dụ, với 10 người sử dụng yêu cầu 45 khóa khác nhau để nói chuyện với người khác và 100 người sử dụng cần 4950 khóa
Giải thuật đối xứng giống như một két sắt Khoá là chìa khoá duy nhất
để mở két sắt đó Một người với một sự phối hợp có thể mở két sắt và đưa dữ
Trang 13liệu ra ngoài Nếu có khoá này, bạn có thể mở két sắt để đưa dữ liệu vào và khoá két lại
d Hàm ánh xạ
Hàm ánh xạ có nhiều tên: hàm giảm, hàm thu gọn… Hàm này là trọng tâm của mật mã hiện đại Hàm ánh xạ là một hàm cơ bản cho nhiều giao thức Hàm ánh xạ được sử dụng trong ngành khoa học máy tính trong một thời gian dài Hàm ánh xạ làm việc theo một chiều, dễ dàng tính toán một giá trị băm từ một hình ảnh trứơc đó
Mã xác nhận thông tin (MAC), còn gọi là mã xác nhận dữ liệu, là một hàm ánh xạ kèm theo một khóa bí mật Bạn có thể tạo ra một MAC ngoài một hàm ánh xạ hay một thuật giải mã hóa
e Truyền thông sử dụng nghi thức mã khóa công khai
Hệ mã khóa công khai hay còn gọi là hệ mã bất đối xứng
Mã bất đối xứng là hệ mật mã sử dụng một cặp khóa trong đó một khóa được công bố rộng rãi gọi là khoá công khai và một khóa được lưu giữ bí mật gọi là khóa riêng Cặp khóa này dùng để mã hoá cũng như giải mã dữ liệu, trong đó khóa công khai sẽ dùng để mã hóa và khóa bí mật dùng để giải mã dữ liệu đã được mã hóa
Trong mạng có nhiều người sử dụng, hệ mã hoá khóa công khai mới là giải pháp bảo mật tối ưu Người sử dụng sở hữu một khóa công khai và một khóa bí mật Khóa công khai đó được phổ biến trong cơ sở dữ liệu ở một số nơi
Trên thực tế, giải thuật khóa công khai không phải là sự thay thế cho giải thuật đối xứng Chúng không được sử dụng để mã hóa thông tin, chúng được sử dụng để mã hóa những khóa chẳng hạn như khoá DES
Giải thuật khóa công khai thường chậm Những giải thuật mã hóa đối xứng nói chung nhanh hơn rất nhiều lần lần so với giải thuật mã hóa khóa công khai Với những máy tính có bộ xử lý cao và trong vòng những năm tới có thể dùng giải thuật mật mã khóa công khai để mã hoá và giải mã dữ liệu với tốc độ
có thể so sánh với mật mã đối xứng ngày nay Với băng thông tăng lên và đó là điều cần thiết để mã hóa dữ liệu nhanh hơn mật mã khóa công khai có thể quản
lý
Trang 143 Các chế độ mật mã
Giải thuật mật mã khối mã hoá dữ liệu theo những khối Kích thước khối thông dụng nhất là 8 byte Mật mã khối bảo mật cao hơn mật mã dòng, tuy nhiên những giải thuật mật mã khối thực thi chậm hơn những mật mã khác Những mật mã khối sử dụng cùng một giải thuật mã hoá cho mỗi khối
Do đó, một khối văn bản thường trả về cùng một văn bản mật mã khi mã hoá với cùng một khoá và một giải thuật
CBC ( Cipher Block Chaining mode): chế độ mắc xích những khối mã hóa
Chế độ CBC giới thiệu về thông tin phản hồi Trước khi mỗi khối văn bản thường được mã hoá, nó kết hợp với văn bản mật mã của khối trước bằng một thao tác OR đối với từng bít Điều này đảm bảo rằng ngay cả khi có nhiều khối văn bản thường giống nhau thì mỗi khối đó sẽ được mã hoá sang những khối văn bản mật mã khác nhau Khởi tạo được kết hợp với khối văn bản thường số nguyên tố bằng thao tác OR cho từng bít trước khi khối được mã hoá
Nếu có một bít đơn của khối văn bản thường bị hư, khối văn bản thường tương ứng cũng sẽ bị hư Thêm vào đó, một bít trong khối theo sau, ở cùng một
vị trí như bít hư số nguyên tố sẽ bị hư
Hình 3: Chế độ mắc xích những khối mã hóa
Trang 15 CFB (Cipher Feedback mode ): chế độ phản hồi mật mã
Chế độ CFB này sử dụng một thanh ghi dịch từng khối nhỏ trong văn bản và được chia thành nhiều phần, không xử lý nguyên một khối lớn Ví dụ, nếu kích thước của khối là 8 byte, với 1 byte xử lý vào lúc đầu, thanh ghi dịch được chia thành 8 phần và chế độ này xử lý 8 phần
Nếu một bít trong văn bản mật bị hư thì một bít trong văn bản thường cũng bị hư và thanh ghi dịch bị sai lạc Điều này làm cho nhiều sự gia tăng của văn bản thường bị hư cho đến khi bít hư bị dịch ra khỏi thanh ghi dịch
CTS (Cipher Text Stealing mode) chế độ sao chép nguyên văn mật mã
Chế độ CTS sử dụng một chiều dài bất kỳ của văn bản thường và tạo ra văn bản mật mã có chiều dài với chiều dài của văn bản tĩnh Chế độ này thực thi cũng giống như chế độ CBC nhưng khác với hai khối cuối cùng của văn bản thường
ECB ( Electronic Codebook mode): chế độ các ký hiệu điện tử
Chế độ ECB mã hoá mỗi khối một cách riêng lẻ Nghĩa là những khối văn bản thường bất kỳ giống nhau và nằm trong cùng một thông báo hoặc nằm trong một thông báo khác được mã hoá với cùng một khoá sẽ bị biến đổi thành những khối văn bản mật mã giống nhau
Hình 4: Quá trình di chuyển của các ký hiệu điện tử
Trang 16Hình 5: Mô hình mã hóa bằng các ký hiệu điện tử
Nếu văn bản thường được mã hoá bản sao quan trọng, nó sẽ làm cho văn bản mật mã bị phá vỡ mỗi lúc một khối Và kẻ địch có thể thay đổi hoặc trao đổi những khối riêng mà không cần phải dò tìm
Nếu 1 bít trong khối văn bản mật mã bị hư, toàn bộ khối văn bản tĩnh tương ứng cũng sẽ bị hư
OFB ( Output Feedback mode): chế độ phản hồi đầu ra
Chế độ OFB tương tự như chế độ CFB, sự khác biệt duy nhất giữa hai chế độ này là cách mà thanh ghi dịch được đưa vào
Nếu một bít trong văn bản mật mã bị hư, bít tương đương của văn bản thường cũng sẽ bị hư Tuy nhiên, nếu có thêm hoặc mất những bít từ văn bản mật mã, văn bản thường chỉ bị hư từ vị trí đó
Trang 17b Các tính chất:
- Mọi hợp số n đều có ước nguyên tố nhỏ hơn căn bậc 2 của n
Thật vậy, vì n là một tập hợp số nên ta có thể viết n = a b, trong đó a và b là các số nguyên với 1 < a ≤ b < n Rõ ràng ta phải có a hoặc b không vượt quá căn bậc hai của n
- Mọi số nguyên lớn hơn một đều phân tích được một cách duy nhất thành tích các số nguyên tố, trong đó các thừa số được viết với thứ tự không
Số p là số nguyên tố khi và chỉ khi þ( p ) = p – 1
- Hệ thặng dư thu gọn modulo n là 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, trong hệ thặng dư đầy đủ modulo n, ta chỉ giữ lại những giá trị nào nguyên tố cùng nhau với n
Ví dụ :
Các số 1, 2, 3, 4, 5, 6 lập thành hệ thặng dư thu gọn modulo 7 Đối với modulo, có thể lấy tập hợp 1, 3, 5, 7
b Các tính chất:
Trang 18- Nếu r1, r2, r3, …, rþ(n) là một hệ thặng dư thu gọn modulo n và a là số nguyên dương, ( a, n ) = 1 thì tập hợp a r1, a r2, a rþ(n) cũng là hệ thặng dư thu gọn modulo n
- Nếu m là số nguyên dương và a nguyên tố cùng nhau với m thì
aþ(m) = 1 ( mod m )
- Giả sử n = p1a1p2a2…pkak là phân tích của n thành thừa số nguyên tố Khi đó ta có :
þ( n ) = n ( 1 – 1/ p1)( 1 – 1/p2) … ( n – 1/ pk ) 4.1.3 Định lý Fermat:
Nếu p là số nguyên tố thì ap-1 1 (mod p) với tất cả a Zp
4.1.4 Định lý đệ quy ước số chung lớn nhất ( GCD):
Với bất kỳ một số nguyên không âm a và bất kỳ số nguyên dương b thì Gcd (a,
b)= gcd (b, a mod b)
4.2 Một số thuật giải sử dụng trong mã hoá
Sự phát triển của xã hội ngày nay mật mã không chỉ dùng trong bí mật quân sự như thời kỳ của nhà quân sự thiên tài Cesar đã áp dụng mà còn dùng trong ngoại giao, kinh tế và thương mại Người ta chia các hệ mã thành hai loại chính là hệ mã cổ điển và hệ mã hiện đại Với những hệ thống mật mã cũ khi biết được khoá lập mã của họ ta dễ dàng tìm ra khoá giải mã, hiển nhiên muốn gửi một thông báo mật cho một đối tượng nào đó ta cần phải biết khóa lập mã của họ, vì vậy những người cùng một hệ mã đều biết bí mật của nhau dẫn đến không còn là bí mật nữa Các hệ thống mật mã hiện đại tức là mật mã khóa công khai đã khắc phục được những nhược điểm đó: người tham gia trong hệ thống chỉ cần giữ bí mật khóa giải mã riêng của mình trong khi khóa lập mã được thông báo công khai Việc biết khóa lập mã không cho phép tìm ra khóa giải mã trong một thời gian chấp nhận được ngay cả khi sử dụng cả máy tính hiện đại Những mật mã khóa công khai số nguyên tố tìm thấy là những mật mã dùng đến các hàm số học
Mã Cesar chuyển các thông báo mật bằng cách sau đây:
Lập bảng tương ứng mỗi chữ cái một số Nhờ bảng tương ứng đó ta có thể chuyển một văn bản dạng chữ số
Trang 19Sau đó ta cộng thêm k vào mỗi chữ số nhận được, lại nhờ vào bảng tương ứng giữa chữ và số ta biến đổi bảng chữ số mới này thành dạng chữ viết Ta đã nhận được một văn bản mật cần chuyển đi Đây chính là quá trình mã hóa Sau khi nhận được văn bản mật ta giải mã bằng cách chuyển các chữ thành số nhờ vào bảng tương ứng chữ và số, sau đó ta trừ đi k ở mỗi chữ số và lại chuyển nó về dạng chữ để có lại văn bản ban đầu Quá trình trên là quá trình giải mã
mã bằng cách biến nó thành dạng chữ số và dựa vào bảng tương ứng và sau đó
ta trừ đi 3
Chẳng hạn văn bản cần gửi đi là: MOI BAN DI CHOI
Ta sẽ chuyển câu trên sang dạng chữ số dựa vào bảng tương ứng bên trên: 15 17 12 4 1 16 7 12 5 11 17 12 (1)
Ta lập theo công thức sau:
C P + 3(mod 29) (*) ( P là văn bản, C là chữ số tương ứng trong văn bản mật )
Ta cộng thêm 3 vào (1):
18 20 15 7 4 19 10 15 8 14 20 15
Chuyển trở lại dạng chữ ta được văn bản như sau:
ÔPMĐBƠGMELPM
văn bản mật được mã hóa
Theo (*) thì 3 là khóa của Cesar
Công thức tổng quát là: C P + k(mod 29) k là số tùy ý giữa 1-29
Trang 204.2.2 Mã khối
Khác với hệ mã Cesar, ở đây không mã hóa từng chữ mà ta mã hóa các khối chữ cái Việc sử dụng mã khối đã nâng cao rất nhiều tính bảo mật nhưng khóa của mã vẫn có thể bị dò ra do việc nghiên cứu tần số xuất hiện của các khối chữ cái Mã khối xuất hiện nhằm chống lại việc sử dụng tần suất của các chữ cái trong văn bản để dò ra khóa giải mã
Chuẩn mật mã mã hóa dữ liệu DES ( Data Encryption Standard)
Mã hoá dữ liệu chuẩn DES sử dụng cặp khóa đối xứng, mã hóa dữ liệu theo từng khối
Khóa đối xứng: Việc bảo mật trong một hệ thống mật mã có hai vấn đề
mà ta cần quan tâm Đó là chiều dài của giải thuật và chiều dài khoá Nhưng nếu có được thì đối với ngưòi giải mã không còn cách nào khác tốt hơn để phá
vỡ hệ thống mật mã là thử lần lượt từng khoá bằng phương pháp tấn công “sức mạnh tàn bạo”, đây là phương pháp giải quyết một bài toán khó bằng cách lặp
đi lặp lại nhiều lần một thủ tục đơn giản
Chuẩn này được đưa ra vào năm 1977, được sử dụng trong các ứng dụng trên đất nước Mỹ, và chuẩn nâng cao hơn của chuẩn này là DAE Một số chính phủ của một số nước mong muốn được sử dụng chuẩn DEA này cho đất nước mình vào các mạng ngân hàng và thương mại tầm cỡ quốc tế Diffie và Hellman đã dự đoán chuẩn DEA này sẽ bị tấn công bởi những tin tặc hay một máy chuyên dụng với một triệu con chip trị giá khoảng 20 triệu dollar, và máy
có thể tìm ra mã mật mã bất kỳ bằng cách tìm hết không gian khóa trong một ngày Và với tốc độ ngày nay thì việc phát triển ngày càng cao của công nghệ phần cứng thì việc tìm ra khóa không còn là vấn đề nữa
DES mã hóa các khối dữ liệu 64 bít với khóa 56 bít
Mã hoá dùng cặp khóa đối xứng theo từng khối
Hình 6: Mã hóa dữ liệu với cặp khóa bảo mật đối xứng
DES thực thi hiệu quả trong phần cứng nhưng trong phần mềm thì DES thực thi không hiệu quả lắm Mặc dù khó thực hiện những công việc thực thi phần mềm, người ta vẫn khẳng định rằng DES được thiết kế chuyên biệt cho công việc này có thể vì giới hạn việc sử dụng DES để các tổ chức có thể có đủ những điều kiện dựa trên phần cứng hoặc cũng có thể DES dễ dàng điều khiển tiếp can đến kỹ thuật Những tiến bộ trong việc tạo ra các CPU làm cho nó có
Trang 21thể thực hiện DES trong phần mềm Những tiến bộ trong việc tăng tốc độ chip
và việc các khóa DES bị phá huỷ bằng một bít thông minh và sự tra cứu toàn diện Hiện nay đã có DES với chiều dài khóa lên đến 128 bít để tăng thêm tính bảo mật trong thời đại bùng nổ của công nghệ ngày càng nhanh
4.2.3 Mã mũ
Hệ mã này được Pohlig và Hellman đưa ra năm 1978
Giả sử p là một số nguyên tố lẻ và khoá lập mã e là một số nguyên dương sao cho (e, p-1)=1
Sau đó ta nhóm thành từng nhóm 2m chữ số theo nguyên tắc sau: 2m là
số nguyên chẳn lớn nhất sao cho mọi số tương ứng với m chữ cái đều nhỏ hơn
p Mỗi chữ được biểu diễn không quá 29 Một số có m chữ cái sẽ được biểu diễn không quá m lần số 29 viết liên tiếp nhau Lập khối chữ tương ứng trong văn bản mật theo công thức sau:
C Pe (mod p), 0 P< p
Văn bản mật sẽ chứa những khối chữ số các số nguyên nhỏ hơn p Để giải mã một khối C trong văn bản mật ta cần biết khóa giải mã d Đó là số d thỏa mãn de=1(mod p -1) có nghĩa là nghịch đảo của e modulo p-1 Nghịch đảo
đó tồn tại do giả thuyết (e, p-1)=1 để tìm lại được khối P trong văn bản ta nâng khối C lên luỹ thừa d modulo p
Ta có: Cd (Pe)d PdePk(p-1) +1 P(mod p)
Trong đó: de=k(p-1) +1 đối với số nguyên k nào đó
a Độ phức tạp của thuật toán lập mã và giải mã đối với mã mũ
Với một khối P trong văn bản, mã hóa bằng cách tính Pe (mod p), các phép tính bít cần thiết là O((log2p)3) Ta tìm nghịch đảo d của e modulo p-1 Sau đó ta tính thặng dư nguyên dương bé nhất của Cd modulo p: số phép tính đòi hỏi là O((log2p)3) Để giải mã một văn bản được mã hóa bằng mã mũ không thể tính được nếu không biết khóa e
b Mã mũ và hệ thống có nhiều đối tượng tham gia
Ưu điểm của hệ mã mũ là trong hệ thống có nhiều đối tượng tham gia trao đổi thông tin từng cặp đối tượng hoặc từng nhóm có khả năng sử dụng khóa mật mã đang dùng để tạo ra những khoá mật mã chung, bí mật với các đối tượng còn lại Giả sử p là một số nguyên tố lớn và a là số nguyên cùng nhau với p Mỗi đối tượng trong hệ thống chọn một số k nguyên tố cùng nhau với p-
1 để làm khóa cho mình Khi hai đối tượng với các khóa k1, k2 muốn lập một khóa chung để trao đổi thông tin đối tượng thứ nhất gửi cho đối tượng thứ hai
số nguyên tố ý theo công thức:
Trang 22k 2 1
k
y 1k2
a (mod p) 0 < k < p Tương tự đối tượng thứ thể thứ hai gửi cho đối tượng thứ nhất số nguyên y : 2
2
y ak2 (mod p) 0< y < p 2
và đối tượng thứ nhất tìm ra khóa chung k theo công thức:
k 2 2
k
y 1k2
a (mod p)
4.2.4 Mã khóa công khai
Với các hệ mã trên thì khóa lập mã phải được giữ bí mật, nếu chẳng may khóa này bị tìm ra thì việc giải mã sẽ không gặp khó khăn lắm Một nguyên tắc mới được đưa ra là cho dù biết được khóa lập mã nhưng chưa chắc đã tìm ra khóa giải mã trong một thời gian có thể chấp nhận Mỗi đối tượng giữ bí mật khóa giải mã riêng của mình trong lúc đó khoá lập mã được thông báo công khai Và nếu một vài đối tượng trong hệ thống bị mất khóa giải mã thì các đối tượng còn lại có thể không bị ảnh hưởng Đó chính là hệ mã mũ, độ phức tạp trong việc tìm logarit modulo p là quá lớn
Trong một hệ thống có nhiều đối tượng tham gia trao đổi thông tin và mỗi đối tượng chọn cho mình một khóa lập mã k và một công thức mã hóa công khai E(k) Tất cả những đối tượng có khóa lập mã công khai từ k1, k2, …,
kn Khi đối tượng thứ i muốn gửi một thông điệp cho đối tượng thứ j, mỗi chữ được chuyển đổi thành số và được nhóm thành từng khối với độ dài nào đó Sau đó, mỗi khối P trong văn bản được mã hóa bằng khóa lập mã E(kj) của đối tượng thứj và gửi đi dưới dạng C= E(kj)(P) Giải mã thông điệp này đối tượng thứ j chỉ việc dùng khóa giải mã Dkj:
Dkj(C) = DkjEkj(P) =P
Vì Dkj và Ekj là khóa giải mã và khóa lập mã của cùng đối tượng thứ j Các đối tượng nếu nhận được văn bản mật cũng không thể nào giải mã được vì cho dù biết khóa lập mã Ekj thì không hẳn là tìm ra khóa giải mã Dkj
4.2.5 Sơ lược về RSA
RSA là hệ thống bảo mật khóa công khai cho cả mã hóa và việc xác nhận; được phát minh vào năm 1977 bởi Ron Rivest, Adia và Leonard Adleman Được xây dựng trên cơ sở mã mũ trong đó khóa là cặp (e, n), gồm
mũ e và modulo n Số n là tích hai số nguyên tố lớn nhất nào đó, n=pq, sao cho (e, (n)) = 1, trong đó (n) là hàm Euler
Những kỹ thuật đặc trưng sử dụng những thao tác toán học thành một văn bản mã Những thao này gọi là chức năng một chiều, chức năng tương đối
Trang 23dễ thực hiện theo một hướng nhưng chuyển đổi theo hướng ngược lại thì khó hơn nhiều
Chế độ bảo mật của RSA dựa vào việc phân tích những số rất lớn ra thừa số nguyên tố
Bảng tóm tắt quá trình mã hoá RSA:
n, tích hai số
nguyên tố p, q
e, nguyên tố cùng nhau với (p-1)(q-1)
Văn bằng chứng nhận chứa một khóa chung và một cái tên Chúng chứa hạn sử dụng của khóa, tên của nơi cấp văn bằng chứng nhận có liên quan đến văn bằng đó, số sản xuất của chứng nhận, và những thông tin khác nữa Hầu hết các văn bằng này được xác định bởi chuẩn Quốc tế CCITT X.509; văn bằng
có thể đọc hay viết bằng nhiều ứng dụng tuân theo chuẩn X.509 Xa hơn nữa là cải tíên đã được tìm thấy trong chuẩn PKCS và chuẩn PEM Chi tiết về định dạng của văn bằng cũng được tìm thấy trong KEN
Một văn bằng được ban hành bởi một nhà cung cấp bản quyền và được ký với khóa bảo mật của nhà cung cấp này
b Văn bằng được sử dụng như thế nào?
Một văn bằng cốt lõi là phát sinh những bí mật có tính chất pháp lý của khóa công khai Người nào đó kiểm tra một chữ ký cũng có thể kiểm tra văn bằng chứng nhận của người ký, để đảm bảo rằng không có sự giả mạo hay lỗi được tìm thấy Hầu hết bảo mật của chứng nhận thường bao gồm việc kèm theo một hay nhiều văn bằng chứng nhận và mỗi thông báo được ký Người nhận
Trang 24thông báo có thể kiểm tra văn bằng bằng cách sử dụng khóa công khai của văn bằng và kiểm tra chữ ký của thông báo Có nhiều văn bằng kèm theo thông báo, định hình một loạt các chuỗi xích có trật tự, ở một khía cạnh nào đó một văn bằng chứng thực cho việc xác nhận của những văn bằng trước đó
Nhiều người gửi thì cũng nhiều người nhận hơn, nhu cầu đó là gửi kèm theo, kiểm tra, xác nhận Chẳng hạn, nếu Alice gửi thông báo đến cho Bob hàng ngày, Alice có thể gửi kèm một loạt các mắc xích văn bằng từ những ngày đầu tiên mà Bob kiểm tra Từ đó trở đi Bob chỉ cần lưu trữ khóa công khai của Alice và không cần thiết phải kiểm tra văn bằng hay việc kiểm tra văn bằng là không cần thiết
Một người gửi là người của công ty thì cần biết người nhận có thể cần gửi theo chỉ chỉ một văn bằng (ban hành bởi công ty đó), nhưng ngược lại một người gửi thuộc công ty thì không nhận ra được người nhận cần gửi kèm theo hai văn bằng Thói quen tốt là gửi kèm theo phải nay đủ một loạt các văn bằng chứng nhận để người ban hành của văn bằng có mức độ cao nhất trong chuỗi đó được người nhận biết đến
Theo như chuẩn PKCS cho hệ thống mã hoá dùng khóa công khai, mỗi chữ ký chỉ đến một văn bằng chứng nhận đã phê chuẩn khóa công khai của người ký Đặc biệt mỗi chữ ký chứa tên của người ban hành văn bằng và số sản xuất của văn bằng Do đó cho dù không có văn bằng được gửi kèm theo với thông báo người kểim tra có thể vẫn sử dụng một loạt các văn bằng để kiểm tra tình trạng của khóa công khai
c Nhà cung cấp văn bằng
Văn bằng chứng nhận được ban hành bởi nhà cung cấp văn bằng (gọi tắt
là CA), được sự ủy thác của nhà quản trị trung tâm sẵn sàng xác minh các đặc tính của văn bằng Một công ty có thể phát hành bằng chứng nhận cho nhân viên của họ, một trường đại học cung cấp cho sinh viên, một thành phố cung cấp cho công dân của họ Để mà ngăn chặn việc giả mạo văn bằng, khoá công khai của của CA đáng tin cậy: một CA không những phải công khai khoá công khai của họ mà còn cung cấp một văn bằng từ ở mức độ cao hơn để chứng nhận tính pháp lý của khóa công khai của họ Sau đó những giải quyết đưa đến cấp bậc cao hơn của CA
Chẳng hạn như, Alice phát sinh cặp khoá cô ta sở hữu và gửi khóa công khai đến cho CA với một sự chứng minh của giấy chứng minh của cô ta CA kiểm tra giấy chứng minh và đưa tra những bước cần thiết để đảm bảo rằng những yêu cầu được đưa đến từ Alice và ròi gửi cho cô một văn bằng chứng nhận chứng thực liên kết giữa cô ta và khóa công khai của cô ta, theo cùng với một mắc xích cấp bậc đến khi nào yêu cầu để chứng minh tính hợp pháp của khóa công khai của cô ta
Những CA khác có thể ban hành những văn bằng chứng nhận với những mức độ khác nhau của những yêu cầu nhận diện Một CA có thể nhất định cần giấy đăng ký của người điều khiển, những CA khác muốn hình thức yêu cầu văn bằng phải được công chứng nhưng cũng có cái phải bắt có dấu chỉ điểm của người yêu cầu một văn bằng Mỗi một CA cần được công bố những chuẩn
Trang 25và những điều kiện chứng nhận mà nó sở hữu, vì vậy những người kiểm tra cần kiểm tra vào những mức độ thích hợp riêng tư trong tên chứng nhận – liên kết khóa
Ví dụ một giao thức ban hành văn bằng chứng nhận là Apple Computer's Open Collaborative Environment (OCE) (môi trường cộng tác mở của máy tính Apple) Những người sử dụng Apple OCE cần phát sinh một cặp khóa và rồi yêu cầu và nhận văn bằng chứng nhận cho khóa công khai; văn bằng này yêu cầu phải có dấu chỉ điểm
d Chứng nhận đơn vị chữ ký CSU (Certificate Signing Unit)
Chứng nhận lưu trữ khóa bí mật là một điều vô cùng quan trọng, những khóa bí mật của tổ chức chứng nhận đã được lưu trữ một cách bí mật, bởi vì sự bàn bạc cho phép không kiểm tra việc giả mạo chữ ký Việc bảo mật phải được yêu cầu là lưu trữ khóa trong một hộp chống trộm cắp; hộp đó được gọi là Certificate Signing Unit hay CSU Cách tốt nhất là CSU triệt phá những những
gì bên trong nó nếu một khi nó bị mở và được bảo vệ để chống lại những xâm nhập sử dụng bức xạ điện từ Không bất kỳ nhân viên nào của tổ chức chứng nhận có thể truy cập vào khóa riêng bí mật đó được, nhưng chỉ có khả năng sử dụng khóa bí mật đó trong việc cấp văn bằng chứng nhận
Có nhiều thiết kế có thể thực hiện được cho CSU CSU được hoạt hoá bởi một chuỗi các khóa dữ liệu đó là những khóa vật lý có khả năng chứa những thông tin kỹ thuật số Những khoá dữ liệu sử dụng kỹ thuật chia sẻ bảo mật do đó vài người phải dụng tất cả những khóa dữ liệu của họ để được kích hoạt CSU Điều này ngăn chặn nhân viên CA cung cấp văn bằng giả
Chú ý rằng nếu CSU bị phá, trong hoả hoạn, không bảo mật nào bị xâm phạm Văn bằng chứng nhận đã được ký bởi CSU có giá trị tồn tại mãi, cho đến khi nào người kiểm tra sử dụng đúng khóa công khai
Anh hưởng của những tấn công vào tổ chức cấp văn bằng:
Người ta có thể nói về nhiều vụ tấn công nhắm vào những tổ chức cung cấp văn bằng chứng nhận, do đó những tổ chức này phải được chuẩn bị để chống lại những tấn công đó
Ta xem xét đến một tấn công sau Giả sử rằng Bob muốn giả dạng Alice Nếu Bob có thể có được những thông báo ký như Alice, anh ta có thể gửi thông báo vào ngân hàng của Alice và nói “ Tôi muôn rút ra 10000 $ từ tài khoản của tôi Gửi tiền cho tôi” Để tấn công điều này, Bob phát sinh một cặp khóa và gửi khóa đến nơi cung cấp văn bằng chứng nhận và nói “Tôi là Alice Đây là khóa công khai của tôi Làm ơn gửi cho tôi một bằng chứng nhận” Nếu như CA bị lừa và gửi đến cho anh ta một văn bằng và anh ta có thể lừa ngân hàng thì anh
ta đã tấn công một cách thành công Để ngăn chặn việc tấn công này CA phải kiểm tra bằng chứng nhận yêu cầu thực tế của người tạo ra nó, nghĩa là nó phải
Trang 26thể hiện tính yêu cầu thích đáng đó là Alice thật sự, người đang yêu cầu văn bằng chứng nhận Với ví dụ này CA có thể yêu cầu Alice xuất hiện và trình ra giấy tờ chứng minh mình là Alice thể hiện ngày sinh của cô ta Một vài CA yêu cầu một số nhận dạng nhưng ngân hàng không cần những thông báo mang tính danh dự với những bằng chứng nhận nhân cách thấp Mỗi CA phải công bố tình trạng bản thân nhận dạng yêu cầu và một số điều khoản, những cái khác có thể kèm theo một mức độ thích hợp của bí mật của việc chứng nhận
Một kẻ xâm nhập có thể phát hiện ra khóa bí mật riêng tư của một tổ chức cấp bằng và rồi giả văn bằng Với lý do này, một tổ chức cấp văn bằng phải phòng ngừa từ xa để ngăn chặn những việc truy cập bất hợp pháp để lấy khoá bí mật riêng tư Khoá công khai của tổ chức cấp văn bằng phải bao quát rộng rãi chống lại mọi tấn công Với điều này, những CA phải sử dụng rất nhiều khóa dài, tốt nhất là 1000 bít hay dài hơn, và cũng thay đổi khóa một cách đều đặn Những tổ chức cấp bằng hàng đầu có những ngoại trừ không thực tế trong việc họ thay đổi khoá thường xuyên là vì khóa có thể được viết trong phần mềm được sử dụng bởi một số rất lớn của những người kiểm tra Trong những tình huống tấn công khác, Alice mua chuộc Bob, người làm việc cho tổ chức cung cấp văn bằng, để cấp cho cô ta một văn bằng chứng nhận với tên của Fred Hiện giờ Alice có thể gửi những thông báo được ký tên Fred và những người khác nhận những thông báo sẽ tin rằng thông báo đó đáng
tn cậy bởi vì một loạt các văn bằng đầy đủ và có thể được kiểm tra sẽ đi kèm theo thông báo Tấn công này có thể gây cản trở bởi việc yêu cầu sự cộng tác chung của hai hay nhiều nhân viên để phát sinh một văn bằng; bấy giờ kẻ tấn công hối lộ hai hay nhiều nhân viên nữa Chẳng hạn, trong vài CSU ngày nay,
ba nhân viên phải đưa một khóa dữ liệu chứa thông tin bảo mật ủy quyền cho CSU để phát sinh văn bằng Không may, có nhiều cách để phát sinh ra văn bằng giả bởi việc hối lộ chỉ một nhân viên Nếu mỗi văn bằng chỉ yêu cầu kiểm tra bởi một nhân viên thì nhân viên đó có thể bị hối lộ và nhét các yêu cầu sai vào trong một ngăn xếp của những yêu cầu chứng nhận thật sự Chú ý rằng những nhân viên được hối lộ không để lộ ra khóa bí mật của tổ chức cấp văn bằng chứng nhận đến khi nào nó có thể chứa một cách hợp lệ
Những tấn công khác bao gồm việc giả mạo những tài liệu cũ Alice đã
cố gắng tính toán môđun của tổ chức cấp bằng Nó sẽ tiêu tốn của cô ta khoảng
15 năm, nhưng cuối cùng cô cũng thành công, và hiện giờ cô ta có cả những khóa bí mật cũ của tổ chức cấp văn bằng Khoá này đã bị chặn vì đã hết hạn, nhưng cô ta có thể giả mạo một văn bằng có ngày 15 năm trước đó chứng minh một khóa công khai giả, cô ta có thể giả mạo một tài liệu với chữ ký của Bob với ngày 15 năm trước đó, có lẽ sẽ di chuyển những thông tin đến Alice Những phát sinh được bắt nguồn với sự giả mạo cho những tài liệu trước đó nhiều năm
Chú ý rằng :
Những tấn công vào những tổ chức cấp văn bằng không đe dọa được những bí mật của các thông báo giữa những người sử dụng, vì hầu như mọi kết quả đều tấn công vào trung tâm phân bố những khóa bí mật
Trang 27Nếu khóa của tổ chức cấp văn bằng bị mất hay phá huỷ nhưng không làm xâm phạm, những văn bằng được ký với những khoá cũ vẫn tồn tại cho đến khi nào người kiểm tra biết sử dụng những khoá công khai cũ để kiểm tra văn bằng
Trong một vài thiết kế CSU, sao chép những lưu trữ được mã hoá của những bí mật của CA được giữ Một CA bị mất khóa của nó có thể phục hồi lại bằng cách nó bằng cách nhập vào những lưu trữ được mã hoá bên trong CSU; lưu trữ mã hóa chỉ có thể giải mã khi đang sử dụng CSU Nếu như bản thân CSU bị phá hủy, nhà sản xuất có thể sẽ cung cấp một cái khác có thông tin bên trong tương tự do đó cho phép lấy lại được khóa
Một khoá CA bị xâm phạm ở một tình trạng rất nguy hiểm Một kẻ tấn công phát hiện ra khoá bí mật của CA có thể phát sinh ra những văn bằng giả mạo trong tên của CA mà cho phép không kiểm tra sự giả mạo; với lý do này, tất cả mọi sự phòng ngừa phải được ngăn chặn việc làm xâm phạm Nếu một xâm phạm nảy sinh thì CA phải lập tức ngưng việc cung cấp văn bằng với những khóa cũ và thay bằng những khóa mới Nếu nó bị nghi ngờ thì vài văn bằng giả mạo thì rất cả những văn bằng đã được cấp phải gọi lại và được cấp lại khóa CA mới Những việc lường trước này không căng thẳng đến mức nếu những văn bằng đã được đăng ký với dịch vụ định thời gian Chú ý rằng việc tổn hại của một khoá CA không làm mất hiệu lực của khóa của những người sử dụng, nhưng chỉ những văn bằng được xác nhận Tổn hại của một khóa của CA hàng đầu cần phải suy nghĩ chính chắn vì khóa có thể được xây dựng trong những ứng dụng kiểm tra những văn bằng
Danh sách thu hồi chứng nhận (Certificate Revocation List (CRL)) là danh sách những khóa công khai bị thu hồi trước khi nó hết hạn Có một vài lý
do khóa bị thu hồi và đưa vào danh sách CRL Một khoá đã bị xâm phạm Một khoá được sử dụng một cách thành thạo bởi một cá nhân trong một công ty; ví
dụ tên chính thức được liên kết với một khóa có lẽ là “Alice Avery, Vice President, Argo Corp” Nếu Alice đã nhiệt tình, công ty của cô ấy không muốn
cô ấy có thể sẽ ký tên những thông báo với khóa đó và đó là lý do để công ty dời khoá vào trong CRL
Khi kiểm tra một chữ ký, một người có thể kiểm tra tính chính xác của CRL để chắc chắn rằng khóa của người ký không bị giả mạo Cho dù đó là thời gian chính đáng để thực thi kiểm tra này dựa trên tầm quan trọng của tài liệu đã được ký
CRL được duy trì bởi những CA và cung cấp thông tin về những khoá bị giả mạo những văn bằng nguyên thuỷ bởi CA Những CA chỉ liệt kê những khóa hiện tại vì những khóa đã hết hạn không được thừa nhận trong trường hợp này; khi một khóa giả mạo vượt qua những ngày hết hạn nguyên thuỷ của nó thì nó được di chuyển ra khỏi CRL Mặc dù CRL được duy trì trong loại được phân bổ, đó có thể là nơi phân bổ trung tâm cho CRL, đó là những vị trí trên mạng chứa những CRL mới nhất từ nhiều tổ chức khác nhau Một tổ chức giống như một ngân hàng dường như muốn tiến hành lưu trữ CRL để tạo ra những nguyên cứu CRL khả thi trên mỗi giao dịch
Để đề phòng chống lại một tấn công tính toán với giới hạn dài, mỗi khóa phải có ngày hết hạn sau đó nó không còn có giá trị nữa Vì vậy thời gian để
Trang 28hết hạn phải ngắn hơn thời gian tính toán hay tương đương, chiều dài khoá phải
đủ dài để tạo ra sự thay đổi của việc tính toán trước việc hết hạn cực nhỏ Thời gian hợp lệ cho một cặp khóa cũng dựa trên hoàn cảnh và trong hoàn cảnh này khoá sẽ được sử dụng mặc dù sẽ có thời gian chuẩn Thời gian hợp lệ lẫn với giá trị của khoá và đánh giá sức mạnh của một tấn công được chờ đợi thì xác định được kích thước khóa thích hợp Ngày hết hạn của một khoá đi kèm với khoá công khai trong văn bằng hay trong danh sách thư mục Chương trình kiểm tra chữ ký nên kiểm tra việc hết hạn và không nên chấp nhận một thông báo được ký với một khóa hết hạn Điều này có nghĩa là khi một ai đó sở hữu khoá hết hạn, mọi thứ đã được ký sẽ không được tính toán chu đaó Tất nhiên
đó sẽ là những trường hợp quan trọng đó là những tài liệu đã ký được xem xét hợp lý cho nhiều chu kỳ thời gian dài hơn
Sau khi kết thúc, người sử dụng chọn một khóa mới dài hơn khóa cũ, có
lẽ bằng vài con số để phản ánh cả việc gia tăng thực thi của phần cứng máy tính và vài sự cải tiến gần đây trong những giải thuật tính toán thừa số Bản phụ lục chiều dài khoá được đề nghị sẽ được công bố Một người sử dụng có thể kiểm tra lại một khoá đã hết hạn chưa, nếu đó là chiều dài thích hợp và không
bị xâm phạm Tổ chức chứng nhận văn bằng sẽ phát sinh ra một văn bằng mới cùng khóa, và tất cả những chữ ký mới sẽ được điểm trên văn bằng mới thay cho cái cũ Tuy nhiên, sự việc phần cứng máy tính tiếp tục cải tiến chỉ rõ cho việc thay thế những khóa hết hạn với những khóa mới và dài hơn vài năm Việc thay thế khóa co phép người ta thấy được mối thuận lợi của cải tiến phần cứng
để gia tăng tính bảo mật trong hệ thống mã hóa Phần cứng nhanh hơn đã ảnh hưởng đến việc gia tăng bảo mật, có lẽ mênh mông nhưng chỉ nếu chiều dài khoá được gia tăng thường xuyên
Nếu chẳng may khóa bí mật của bạn bị mất hay bị phá hủy nhưng không
bị xâm hại, bạn có thể không ký dài hơn hay giải mã những thông báo nhưng vài cái trước đó đã được ký với khóa bị mấtvẫn có giá trị Đềiu này có thể xảy
ra, ví dụ nếu bạn quên mật khẩu được sử dụng để try cập khóa của bạn hay nếu
ổ cứng mà trên đó khóa được lưu trữ đã bị hư hại Bạn cần phải chọn một khóa mới đúng ngay lập tức, để giảm mức tối thiểu số những thông báo mọi người gửi bạn đã mã hóa dưới khoá cũ của bạn, những thông báo bạn không cần thiết phải đọc
Các vấn đề sẽ xảy ra nếu khóa của bạn bị xâm nhập: Nếu chẳng may khóa bí mật của bạn bị xâm nhập đó là nếu bạn nghi ngờ một kẻ tấn công có thể chứa khóa bí mật của bạn thì bạn phải làm bộ để vài kẻ địch của bạn có thể đọc được những thông báo được mã hóa gửi đến bạn và giả mạo tên bạn trên những tài liệu Những hậu quả nghiêm trọng kèm theo tính chất quan trọng của việc bảo vệ khoá bí mật của bạn với những cơ cấu mạnh cực kỳ
Ngay lập tức bạn phải khai báo với nơi cấp ăn bằng và đưa khoá cũ của bạn vào CRL; ở đó sẽ thông báo cho mọi người là khoá đã bị giả mạo Sau đó chọn một khóa mới và thu được những văn bằng thích hợp với nó Bạn có thể
sử dụng khóa mớiđể ký lại những tài liệu mà bạn đã ký với khóa bị tổn hại; những tài liệu đã được định thời gian tốt như được ký vẫn còn có giá trị Bạn cũng nên thay đổi cách lưu trữ khoá bí mật của bạn ngăn chặn sự xâm phạm khóa mới
Trang 294.4 Xâm nhập vào hệ thống RSA
Có một vài cách hiểu của việc “bẻ gãy” RSA Cái nguy hiểm nhất là có thể một kẻ tấn công phát hiện ra khóa bí mật tương ứng với khóa công khai; đây là đềiu cho phép kẻ xâm nhập có thể đọc tất cả các thông điệp đã được mã hóa với khóa công khai và chữ ký giả mạo Hiển nhiên đây là cách việc tấn công này là lấy thừa số của môđun công khai n, dựa vào hai thừa số số nguyên
tố là p và q Từ p và q và e, là số mũ chung, kẻ xâm nhập có thể dễ dàng lấy được d là khoá bí mật Phần khó khăn nhất việc phân tích ra thừa số của n, bảo mật RSA dựa trên việc phân tích thành thừa số là rất khó Thực tế tác vụ của việc tìm lại khóa bí mật tương đương với tác vụ phân tích thừa số môđun: bạn
có thể sử dụng d để phân tích ra n cũng như việc phân tích thừa số n để tìm ra
d
Cách khác để “bẻ gãy”RSA là tìm ra một kỹ thuật tính tóan căn thứ e (e c) chia n lấy dư Vì c= me nên e c là thông báo m với cách tấn công này cho phép bất kỳ ai cũng có thể phục hồi những thông báo đã mã hoá và những chữ ký giả mạo mà không cần biết khóa bí mật Hiện nay chưa có phương thức nào có thể bẻ khóa RSA bằng cách này
Những tấn công được đề cập phải là cách duy nhất để bẻ khóa RSA như cách có thể phục hồitất cả các thông báo được mã hóa dưới một khóa lấy được Tuy nhiên có những phươngthức khác có mục đích là phục hồinhững thông báo đơn giản Thành côngnhưng không cho phép những kẻ xâm nhập có thể phục hồinhững thông báo khác cùng một khóa
Tấn công một thông báo riêng lẻ đơn giản nhất là tấn công vào những văn bản được đoán trước Một kẻ xâm nhập có thể thấy văn bản mã hóa việc tấn công đó dường như là “tấn công lúc bình minh” và mã hóa ước đoán này với khóa công khai của người nhận, bằng cách so sánh với văn bản mã hóa thực tế, kẻ xâm nhập biết được trong bất cứ trường hợp nào ước đoán đó đúng Việc tấn công nào có thể bị ngăn cấm bởi việc thêm nhiều bít ngẫu nhiên vào thông báo Tấn công vào thông báo riêng lẻ khác có thể xuất hiện nếu một ai đó gửi thông báo đến ba người, người mà có số mũ công khai là e =3 Kẻ tấn công biết được điều này và thấy ba thông báo đó có thể phục hồi thông báo đó, cách tấn công này và cách để ngăn chặn nó đã được thảo luận bởi Hastad
Tất nhiên cũng có nhiều kiểu tấn công nhắm không chỉ nhắm vào bản thân RSA mà còn đưa ra những bổ sung cho RSA; điều này không tính như “ “
bẻ gãy”RSA” bởi vì nó không phải là những yếu điểm của giải thuật RSA bị khai thác, nhưng là một yếu điểm trong những bổ sung đặc biệt Chẳng hạn như, nếu một ai đó lưu trữ khóa bí mật của anh ta một cách lơ là không an toàn thì một kẻ tấn công có thể phát hiện ra đều này Một người nào đó không thể nhấn mạnh một cách mạnh mẽ đích thực những yêu cầu bảo mật RSA một bảo mật bổ sung, về mặt toán học (bảo mật các giới hạn, chẳng hạn như chọn kích thước chiều dài khóa, nhưng khôn g đủ Trong thực tế, hầu hết những vụ tấn công thành công sẽ giống như đích tại những nơi bổ sung không bảo mật và tại những giai đoạn quản lý khóa của hệ thống RSA
Trang 30Những tấn công vào hệ thống RSA
Một giải thuật mũ số môđun RSA có thể ngắt hệ thống mã hoá và cho phép một vài thông báo giải mã được Tuy nhiên, cũng có nhiều cuộc tấn công tinh
vi mà không đòi hỏi số mũ môđun Họ có thể không có kết quả trong việc bẻ gãy hệ thống mật mã RSA nhưng trong vài trường hợp đặc biệt họ có đủ thông tin để giải mã được một số thông báo
Ta có thể xem xét 4 loại tấn côngvào hệ thống mật mã RSA
1 Lạm dụng quá nhiều RSA
Trang 31Lặp lại (a k +n Z) 2s = 1+ nZ nếu và chỉ nếu 2 s được chia bởi a k +n Z trong nhóm (Z / n Z)*
Cho nên a k +n Z thuộc nhóm (Z / n Z)* chia cho 2s
Định lý: lấy a là một nguyên là số nguyên tố cùng với n
Nếu a k khác bậc chia lấy dư cho p và q thì , với
Chứng minh: bằng những kết quả trước đó, và name trong khoảng WOOLOG cho rằng lớn hơn
Lấy 2t thuộc , và t < s, nhưng
Giải thuật trên cho phép có thể được sử dụng để lấy lại p và q để đưa ra e, d và
n ( chú ý rằng có ba lỗi trong giải thuật được thể hiện trong phần này.)
Ví dụ:
Chúng ta sẽ tính n =253, e= 3 và d= 147
Do đó, ed -1 = 440, k=55 và s=3
1 Chọn một số nguyên a ngẫu nhiên trong chuỗi Ta lấy ( a=2)
2 Tính toán Nếu g > 1 thì g =p hay g=q và ta tính được thừa
.)
4 Nếu n>g>1 thì g=p hay g = q Từ đây, thừa số của n được tìm thấy và giải
thuật kết thúc Nói cách khác, giải thuật không thành công với việc lựa chọn dựa trên a (n= 23x11=253) Nếu giải thuật không thành công với việc chọn a thì chúng ta chạy nó lại một lần nữa
Định lý: số lượng số nguyên tố a đến n trong đoạn {1, 2, …n} với mỗi a k có một và khác nhỏ nhất tại (p-1)(q-1)/2
Định lý bao hàm xác suất thành công của giải thuật là tại ½ Do đó, xác suất thành công sau r là tại 1- 1/2r
a Lạm dụng:
Trang 32Một ví dụ của một tấn công lạm dụng hiển nhiên là môđun chung Giả
sử rằng một người phòng ngừa việc sử dụng môđun khác n=pq cho mỗi người
sử dụng và sử dụng một n cố định Thay vì mỗi người sử dụng lấy một khóa
công khai (n, e i ) và một khoá bí mật riêng tư d i Tuy nhiên Bob có hể sử dụng
khóa bí mật mà anh ta sở hữu d b để tính toán thừa số n Một khi anh ta tìm ra p
và q anh ta có thể số mũ khóa công khai của Alice để tìm ra mũ số riêng tư của
cô ta
b Mũ số bí mật thấp
Để giảm bớt thời gian giải mã, một người có thể sử dụng d nhỏ Tuy nhiên những kết quả này nằm trong toàn bộ việc bẽ gãy hệ thống mã hoá
Định lý: lấy n=pq với q<p<2q Lấy Ta có (n, e) với
, thì những kẻ tấn công có thể thu hồi được d một cách hiệu quả Đó là một vấn đề khi có d thì có thể thu hồi nếu
c Mũ số công khai thấp
Để giảm thời gian mã hoá, e thường xuyên được chọn là 3 Tuy nhiên,
những tấn công thất bại con số e = 216 + 1 = 65537 được đề nghị sử dụng Với e này, chỉ với phép tính mũ 16 và một phép tính nhân cần thiết để mã hoá việc
mũ hóa nhanh
Tấn công khắp nơi đòi hỏi Bob gửi một bản sao e của những thông báo tương tự sử dụng nhiều môđun RSA khác nhau Trong trường hợp này, kẻ tấn công có thể tính toán hiệu quả những thông báo gốc Do đó, việc tạo ra e lớn hơn số lượng thông báo để vô hiệu tấn công này
Trang 33d Thi hành
Những khác nhau giữa kiểu tấn côngđầu tiên, việc lạm dụng RSA và những tấn công trong việc thực thi là tính tinh vi của tấn công Những tấn công vào việc thực thi tương đương với những điều ngoài phim gián điệp
Xem xét những thẻ thông minh lưu trữ khoá RSA bí mật Bằng sự tìm tòi lấy thẻ thông minh để thực hiện một giải mã RSA, một kẻ tấn công có lẽ có thể phát hiện mũ số giải mã bí mật d Ngoài ra d cũng có thể thường xuyên bị phát hiện bởi việc đo lường sức mạnh việc tiêu thụ của thẻ thông minh
Trang 34Chương 2: Tìm hiểu về RSA
1 Định nghĩa RSA:
Năm 1977, Ron Rivest, Adia Shamir và Leonard Adleman đã đưa ra hệ thống mã hóa dữ liệu dùng khóa công khai Được làm việc theo nguyên tắc sau: chọn hai số lớn số nguyên tố là p và q, và tính theo công thức n= pq, n được gọi
là môđun Chọn một số e nhỏ hơn n, và số này có giá trị tương đối là 1), và tìm ra số nghịch đảo của chúng, đó là d, mod (p-1)(q-1) Có nghĩa là ed =
(p-1)(q-1 mod (p-(p-1)(q-1)(q-(p-1)(q-1), e và d được gọi là số mũ chung và số mũ riêng tương ứng Khóa công khai là một cặp (n, e) và khóa bí mật là d Thừa số p và q phải được giữ bí mật hoặc làm mật hiệu quả khi sử dụng lần sau
Thật khó đoán để có thể tìm ra được khóa bí mật d từ khóa chung (công khai) (n, e) Tuy nhiên nếu ai đó có được n dựa trên p và q thì có thể tìm ra khóa bí mật d Như thế toàn bộ việc bảo mật của RSA được căn cứ vào sự xác nhận việc phân tích ra thừa số nguyên tố là rất khó Đó là cách RSA làm việc cho việc bảo mật riêng rẽ và chứng minh xác nhận
Bảo mật RSA (mã hóa): giả sử rằng Alice muốn gửi một thông báo riêng tư là m đến cho Bob Alice tạo ra một văn bản mã hóa được biểu diễn dưới dạng mũ c = m^e mod n, có e và n là khóa công khai của Bob Để mã hóa, Bob cũng phải giải mã hàm mũ m = c^d mod n, và chuyển đổi lại thành thông báo nguyên thuỷ m phải chắc chắn rằng mối quan hệ giữa e và d phải đúng thì Bob mới có thể chuyển đổi chính xác thông báo đó được Vì chỉ có Bob mới biết được d, và do đó cũng chỉ có Bob mới có thể giải mã được
Chứng minh xác thực của RSA: giả sử Alice muốn gửi một tài liệu mật hiệu m đến cho Bob Alice tạo ra một chữ ký kỹ thuật số và cũng được biểu diễn dưới dạng mũ s = m^d mod n, mà d và n cặp khóa của Alice Cô ta gửi s
và m đến cho Bob Để kiểm tra chữ ký có đúng hay không, Bob phải giải hàm
mũ và kiểm tra lại thông báo đã được chuyển đổi trở lại, m = s^e mod n Cặp khóa công khai của Alice là e và n
Đó là lý do mà việc mã hóa và chứng nhận không cho phép chia sẽ bất
kỳ khóa bí mật lẽ nào: mỗi người chỉ có khóa công khai chung của riêng họ và anh ta hay chị ta sở hữu riêng biệt khóa bí mật của họ Bất cứ người nào có thể gửi một thông báo đã được mã hóa hoặc kiểm tra thông báo mật hiệu (có sử dụng chữ ký kỹ thuật số) thì họ chỉ sử dụng khóa công khai đó nhưng chỉ người nào đó có quyền sở hữu đúng khóa cá nhân thì mới có thể giải mã được thông báo mật hiệu đó
Các khóa công khai và khoá bí mật chỉ định các hàm có thể áp dụng cho bất kỳ thông báo nào Cho D thể hiện tập hợp các thông báo chấp nhận được
Ví dụ D có thể là tập hợp tất cả dãy bít có chiều dài hữu hạn Ta yêu cầu các khóa công khai và khóa bí mật chỉ định các hàm từ D đến chính nó Chẳng hạn như, ta thể hiện các khóa công khai và riêng của Alice và Bob lần lượt là PA, SA
và PB, SB Hàm tương ứng với khóa công khai PA của Alice được ký hiệu là
PA() và hàm tương ứng với khóa bí mật SA được ký hiệu là SA() Như vậy các hàm PA() và SA() là các phép hoán vị của D Các khoá công khai và bí mật của
Trang 35một bên tham gia bất kỳ là một “ cặp vừa khớp” ở chổ chúng chỉ định các hàm
là nghịch đảo với nhau
Nghĩa là:
M = SA(PA(M))
M= PA(SA(M))
Với một thông báo M D việc biến đổi thành công M bằng hai khoá PA
và SA theo một trong hai thứ tự sẽ cho ra thông báo M trở lại
Trong hệ mật mã này nhất ngoài Alice ra không ai có thể tính toán hàm
SA() trong thời gian cho phép được Tính riêng tư của thông báo được mã hóa
và gửi đi và các số ký danh của Alice đều dựa vào giả thiết cho rằng chỉ Alice mới có thể tính toán được SA() Yêu cầu này cho biết tại sao Alice phải giữ bí mật SA Giả sử chí có Alice mới có thể tính toán SA() phải đứng cvững cho dù mọi người biết PA và có thể tính toán PA(), hàm nghịch đảo với SA() một cách hiệu quả Ta có thể thể hiện phép biến đổi PA() nhưng không thể hiện cách biến đổi nghịch đảo SA() tương ứng
2 Trình tự của một hệ mật mã RSA
Trong hệ mã khóa công khai RSA, một bên tham gia tạo các khoá công khai và khoá bí mật của mình theo thủ tục sau đây:
1 Lựa chọn ngẫu nhiên hai số nguyên tố lớn p và q Các số nguyên tố p và
q có thể là, giả sử, 100 chữ số thập phân cho mỗi số
2 Tính toán n theo phương trình n=pq
3 Lựa chọn một số nguyên lẻ nhỏ e là nguyên tố cùng nhau với
Þ(n)= (p-1)(q-1)
4 Tính toán d dưới dạng nghịch đảo nhân của e, môđun Þ(n)
5 Công khai cặp P= (e, n) dưới dạng khóa công khai RSA của mình
6 Giữ bí mật cặp S =(d, n) làm khóa bí mật RSA của riêng anh ta
Với những bước trên ta xác định được:
Tất cả những bước trên áp dụng cho cả mã hóa và chữ ký số
Để tạo một chữ ký kỹ thuật số người ký chữ số đó áp dụng khóa bí mật của mình vào thông báo được ký, thay vì cho một văn bản mật mã Để xác minh một chữ ký kỹ thuật số khóa công khai RSA của người ký chữ ký đó được áp dụng vào nó, thay cho một thông báo được mã hóa
3 Tính đúng đắn của RSA
Ta có các công thức :
P(M) =Me ( mod n)
Và S(C) = Cd ( mod n)
Trang 36Định nghĩa các phép biến đổi nghịch đảo Zn thoả các điều kiện trên
M = SA(PA(M)) M= PA(SA(M))
Tương tự, ta có: Med M (mod q) với M
Theo định lý phần dư Trung Quốc, ta có: Med M (mod n) với M
4 Tính bảo mật
Tính bảo mật của hệ mã hóa mật mã công khai RSA phần lớn dựa vào việc lấy thừa số các số nguyên lớn Kẻ xâm nhập có thể lấy thừa số môđun n trong một khóa công khai thì kẻ xâm nhập đó có thể suy ra khoá bí mật từ khoá công khai này rồi lấy thừa số các số nguyên lớn dễ dàng thì việc bẻ khóa hệ mật mã công khai RSA cũng dễ dàng nhưng nếu lấy thừa số các số nguyên lớn khó khăn thì việc bẻ khóa cũng gặp rất nhiều khó khăn
Cho đến nay, người ta vẫn chưa tìm ra phương pháp nào dễ dàng hơn trong việc bẻ mật mã khóa công khai RSA hơn là lấy thừa số môđun n Với một số nguyên n, ta muốn lấy thừa số, có nghĩa là, phân tích thành một tích các
số nguyên tố và với phép thử tính nguyên sẽ cho ta biết n là hợp số nhưng thông thường không cho ta biết các thừa số nguyên tố của n Đối với việc lấy thừa số nguyên tố khó hơn rất nhiều lần so với việc đơn giản xác định n là số nguyên tố hay là hợp số Bằng cách chọn ngẫu nhiên và nhân hai số nguyên tố
100 chữ số với nhau ta có thể tạo ra một khóa công khai không thể nào phá được trong một thời gian khả thi với những công nghệ hiện hành
Nhưng để có thể có được tính bảo mật cao bằng hệ mã hoá mật mã công khai RSA ta cần làm việc với các số nguyên tố có chiều dài 100 – 200 chữ số,
vì việc lấy thừa số các số nguyên nhỏ hơn là không thực tế Do đó ta có thể tìm
ra các số nguyên tố lớn một cách hiệu quả để tạo ra khóa có chiều dài cần thiết
Trang 37Hình 7: Hệ thống mã hoá mật mã dùng khóa công khai
Giải thuật RSA sử dụng hai khoá khác nhau để mã hoá và giải mã dữ liệu
5 Các ví dụ về giải thuật RSA
a Ví dụ 1
Ta chọn:
P = 61 <- số nguyên tố đầu tiên (bị hủy đi sau khi tính toán E và D)
Q = 53 <- số nguyên tố thứ hai (bị hủy đi sau khi tính toán E và D)
PQ = 3233 <- môđun
E = 17 <- số mũ chung
D = 2753 <- số mũ riêng (được giữ bí mật)
Khoá công khai của bạn là: (E, PQ)
Ta muốn mã hóa một văn bản đã mã hoá có giá trị 855, ta làm như sau:
decrypt(855) = (855^2753) mod 3233
= 123 Cách để người ta tính toán giá trị 855^2753 mod 3233 người ta làm như sau:
Phân tích ra thành thừa số 2, ta có: 2753 = 101011000001 cơ số 2
Do đó ta có:
2753 = 1 + 2^6 + 2^7 + 2^9 + 2^11
= 1 + 64 + 128 + 512 + 2048
Trang 38Ta đưa đến bảng lũy thừa của 855:
Trang 39gcd(e, q-1) = gcd(3, 2) = 1 ( tương tự như trên)
Vì thế, gcd(e, phi) = gcd(e, (p-1)(q-1)) = gcd(3, 20) = 1
Tìm d sao cho ed ≡ 1 (mod phi)
Giả sử ta tính toán d=e^-1mod phi = 3^-1 mod 20
Ta tìm được d với phi chia cho (ed-1) hay 20/(3d -1)
Chọn d= ( 1, 2, 3…), lấy d= 7 Ta có : ed-1 = 3.7 - 1 = 20
Vậy khoá công khai là: (n, e) = (33, 3)
khóa bí mật là: (n, d) = (33, 7)
Bây giờ ta sẽ mã hoá một thông báo m =7
Ta có: c = m^e mod n = 7^3 mod 33 = 343 mod 33 = 13
Lúc này thông báo đã được mã hóa là: c= 13
Và để kiểm tra giải mã, ta tính toán: m' = c^d mod n = 13^7 mod 33 = 7
Chú ý rằng ở đây ta không áp dụng tính với số 13 để có số 7 mà ta tính toán theo cách sau:
m' = 13^7 mod 33 = 13^(3+3+1) mod 33 = 13^3.13^3.13 mod 33
= (13^3 mod 33).(13^3 mod 33).(13 mod 33) mod 33
= (2197 mod 33).(2197 mod 33).(13 mod 33) mod 33
Nhưng theo hệ thống Unicode ta sẽ bỏ đi 0 và 1 không còn bí mật nữa
mà nó công khai vì khi ta đã mã hoá rồi mà nó vẫn còn nguyên như cũ Do đó phải loại bỏ nó đi và ta chọn số khác Nếu ta muốn sử dụng hệ thống bảo mật này ta cần chọn A=2, B=3, , Z=27
Chẳng hạn như ta muốn chọn thông báo cần mã hoá có tên là:
"HELLOWORLD" và được thể hiện dưới dạng số nguyên m1, m2…