MÔN: AN TOÀN BẢO MẬT TRONG CÔNG NGHỆ THÔNG TIN ĐỀ TÀI: HỆ MẬT MÃ KHOÁ CÔNG KHAIChúng ta đã tìm hiểu về mật mã đối xứng và thấy rằng các bên tham gia cần có một khóa mật để mã hóa và giải mã. Điều này đồng nghĩa với việc trao đổi khóa mật qua kênh. Việc giữ bí mật khóa mật đồng nghĩa với việc giữ mật thông tin. Nên việc trao đổi khóa chỉ diễn ra trên kênh mật thì mới đảm bảo được, thế nhưng việc trao đổi này cung không phải dễ để đảm bảo độ an toàn cao.
Trang 1VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
MÔN: AN TOÀN BẢO MẬT TRONG CÔNG NGHỆ THÔNG TIN
ĐỀ TÀI: HỆ MẬT MÃ KHOÁ CÔNG KHAI Giáo viên hướng dẫn: TS Trần Đức Khánh
Học viên thực hiện : Nguyễn Văn Thông
Vũ Văn Soái Nguyễn Quỳnh Vân Phạm Văn Phong Nguyễn Văn Chiến
Lê Thị Trang
Hà Nội, 6/2013
Trang 2MỤC LỤC
MỤC LỤC 2
1 Tổng quan về mật mã khoá công khai 3
1.1 Lịch sử ra đời 3
1.2 Các thành phần của mật mã khoá công khai 3
1.3 Nguyên tắc hoạt động 3
1.5 Một số thuật toán thường dùng 7
2 Hệ mật RSA 8
2.1 Lịch sử hình thành 8
2.2 Các bước thực hiện hệ mật RSA 8
2.3 Ví dụ 9
2.4 Key Length (chiều dài khoá) 10
2.5 Đánh giá RSA 10
3 Hệ mật Elgama 10
3.1 Lịch sử ra đời 10
3.2 Các bước thực hiện hệ mật Elgama 11
3.3 Ví dụ 11
3.4 Key length (chiều dài khoá) 12
4 Hệ mật Rabin 12
4.1 Các bước thực hiện hệ mật Rabin 12
4.2 Ví dụ 14
5 Hệ mật Merkle-hellman 14
5.1 Lịch sử ra đời 14
5.2 Quá trình thực hiện hệ mật Herkle-Hellman 15
6 Hệ mật McEliece 16
6.1 Lịch sử ra đời 16
6.2 Quá trình thực hiện hệ mật McEliece 16
6.3 Ví dụ 17
7 Hệ mật bất đối xứng trên cơ sỡ đường cong Elliptic 18
7.1 Quá trình thực hiện 18
Trang 31 Tổng quan về mật mã khoá công khai
1.1 Lịch sử ra đời
Chúng ta đã tìm hiểu về mật mã đối xứng và thấy rằng các bên tham gia cần có một khóa mật để mã hóa và giải mã Điều này đồng nghĩa với việc trao đổi khóa mật qua kênh Việc giữ bí mật khóa mật đồng nghĩa với việc giữ mật thông tin Nên việc trao đổi khóa chỉ diễn ra trên kênh mật thì mới đảm bảo được, thế nhưng việc trao đổi này cung không phải dễ để đảm bảo độ an toàn cao Từ đây hình thành nên ý tưởng của mật mã công khai Tức là không cần phải trao đổi khóa mật qua kênh nữa
Ý tưởng của hệ mật công khai được Diffie và Hellman đưa ra năm 1976 Còn việc thực hiện hệ mật công khai thì do Rivest, Shamir và Adleman đưa ra đầu tiên năm 1977,
họ đề xuất một hệ mật RSA nổi tiếng Và kể từ đó có một số hệ mật khác được công bố,
độ mật của chúng dựa trên bài tính toán khác nhau, như dựa trên độ khó của bài toán phân tích thành nhân tử như hệ mật RSA, dựa vào độ khó logarithm rời rạc như hệ mật ElGamal, hay dựa trên đường cong Elliptíc
1.2 Các thành phần của mật mã khoá công khai.
- Bản rõ: thông điệp có thể đọc, đầu vào của giải thuật
- Giải thuật mật hóa: Là các thủ tục tính toán, sử dụng để che dấu thông tin Thuật toán
càng phức tạp thì bản mã càng an toàn
- Khóa công khai và bí mật: một cặp khóa được chọn sao cho 1 khóa dùng để mã hóa và
1 khóa dùng để giải mã
- Bản mã: thông điệp đầu ra ở dạng không đọc được, phụ thuộc vào bản rõ và khóa
- Giải thuật giải mật: Là các thủ tục tính toán, sử dụng để làm rõ thông tin
Sơ đồ của hệ mã công khai được cho ở hình 8
Hình 8 Sơ đồ mã hóa công khai
1.3 Nguyên tắc hoạt động
Hệ mã công khai sử dụng hai khóa có quan hệ toán học với nhau, tức là một khóa này được hình thành từ khóa kia: Người muốn nhận bản mã (Alice) tạo ra một khóa mật (private key) và từ khóa mật tính ra khóa công khai (public key) với một thủ tục không phức tạp, còn việc tìm khóa mật khi biết khóa công khai là bài toán khó giải được Khóa công khai sẽ đưa đến cho người gởi bản tin (Bob) qua kênh công cộng Và bản tin được
Trang 4Bob mã hóa bằng khóa công cộng Bản mã truyền đến Alice, và nó được giải mã bằng khóa mật
1.4 Một số kỹ thuật phân phối khoá công khai
Như chúng ta đã biết, trong mật mã khoá công khai, người dùng có thể công khai khoá mã để cho tất cả những người dùng khác mã hoá thông báo gửi cho họ Tuy nhiên việc công bố khoá công khai cũng đòi hỏi những điều kiện nhất định trong phần này chúng ta tìm hiểu các kỹ thuật phân phối khoá công khai
1.4.1 Thông báo công khai khoá công khai
Mỗi người dùng của hệ mật khoá công khai có thể gửi hoặc phát khoá công khai của anh ta cho mọi người dùng khác trên mạng
Hạn chế cơ bản của kỹ thuật này là bất kỳ ai cũng có thể giả mạo thông báo công khai này Bất kỳ ai cũng đóng giả một người dùng A khác và gửi khoá công khai đi với tư cách là A Mọi thông tin gửi đến A đều bị nghe trộm thậm chí cả khoá xác thực cũng bị giả mạo
1.4.2 Thư mục chung khoá công khai
Duy trì những thư mục động công khai trên mạng Việc duy trì và phân phối thư mục động giao cho một thực thể hoặc tổ chức được tin cậy được gọi là người thẩm quyền (Authority)
Cơ chế hoạt động của kỹ thuật thư mục chung khoá công khai như sau:
- Người thẩm quyền duy trì một thư mục với một đầu vào (tên, khoá công khai) cho mỗi thành viên
- Mỗi thành viên đăng ký một khoá công khai với người thẩm quyền Việc đăng ký có thể
là đưa trực tiếp hoặc qua kênh truyền thông xác thực an toàn
- Một thành viên có thể thay thế khoá công khai hiện tại đã được dùng cho một số lớn dữ liệu hoặc do khoá bí mật tương ứng bị tổn thương
- Định kỳ, người thẩm quyền công bố toàn bộ thư mục hoặc cập nhật thư mục
- Các thành viên có thể truy nhập thư mục qua phương tiện điện tử Để thực hiện điều này cần có một kênh truyền thông xác thực an toàn từ người thẩm quyền tới các thành viên
Trang 5Sơ đồ này an toàn hơn các thông báo khoá công khai trước kia nhưng vẫn bị tổn thương Nếu kẻ địch đạt được hoặc tính được khoá bí mật của người chủ thư mục anh ta có thể trao đổi các khoá công khai và đóng giả làm bất kỳ thành viên nào để nghe trộm các thông báo gửi tới thành viên bất kỳ nào Kẻ địch có thể thay đổi các bản ghi được giữ bởi người có thẩm quyền
1.4.3 Thẩm quyền khoá công khai
Kỹ thuật này có độ an toàn cao hơn kỹ thuật thư mục chung khoá công khai Nhà thẩm quyền trung tâm duy trì thư mục động các khoá công khai của tất cả các thành viên Mỗi thành viên đều biết một cách tin cậy khoá công khai của người có thẩm quyền nhưng chỉ có người có thẩm quyền biết khoá bí mật
Khoá công khai được phân phối an toàn cho A và B nhờ xác thực dùng khoá công khai của người có thẩm quyền
Cơ chế hoạt động như sau:
- A gửi một thông báo có tem thời gian tới người thẩm quyền khoá công khai để đòi hỏi khoá công khai của B
- Người thẩm quyền gửi lại A một thông báo được mã dùng khoá riêng KRauth của thẩm quyền khoá công khai Như vậy A có thể giải mã dùng khoá công khai của Người thẩm quyền Thông báo bao gồm :
để xác nhận rằng đòi hỏi ban đầu không thay đổi trước khi được Người thẩm quyền chấp nhận
một thông báo cũ từ Người thẩm quyền chứa một khoá khác khoá công khai hiện tại của B
- A lưu giữ khoá công khai của B và dùng nó để mã một thông báo tới B chứa định danh IDA của A và một giá trị nonce (N1), được dùng để định danh duy nhất giao dịch này
Trang 6- B thu được khoá công khai của A từ Người thẩm quyền theo cùng cách thức như A lấy được khoá công khai của B
- B gửi một thông báo tới A được mã bằng KUa và chứa giá trị N1 của A và N2 mới được sinh của B Vì chỉ có B mới có thể giải mã thông báo (3) nên sự có mặt của N1 trong thông báo (6) đảm bảo với A rằng người đáp ứng là B
- A gửi trả lại N2 được mã bằng khoá công khai của B để đảm bảo rằng người đáp ứng là A
Như vậy có 7 thông báo được đòi hỏi Tuy nhiên 4 thông báo khởi tạo được dùng không thường xuyên vì cả A và B có thể lưu lại khoá công khai của người khác để dùng lại Định kỳ, một người dùng phải đòi hỏi một bản sao mới của các khoá công khai của các thành viên tương ứng
Người thiết kế hệ thống cần xây dựng bộ phần mềm có chức năng thực hiện kỹ thuật thẩm quyền khoá công khai Bộ phần mềm này gồm có hai thành chính là thành phần chạy trên máy Thẩm quyền khoá công khai đóng vai trò người phân phối khoá, thành phần thứ hai được cài trên các máy khách hàng (n máy) Các máy này được kết nối với nhau qua kênh truyền công khai
Các máy khách hàng đã có khoá công khai của Thẩm quyền khoá công khai được phân phối một cách tin cậy từ trước
Giả sử hai máy khách hàng A và B bất kỳ muốn nhận được khoá công khai của nhau để thiết lập một kết nối an toàn Mỗi máy có một định danh IDa và IDb Để tiến hành phân phối khoá công khai các thành phần của bộ phần mềm của kỹ thuật Thẩm quyền khoá công khai trên 3 máy Thẩm quyền khoá công khai, máy A và máy B sẽ được kích hoạt và thực hiện theo đúng các bước như đã chỉ ra trong sơ đồ Kết quả là các máy A và B đã xác thực lẫn nhau và cùng nhận được khoá công khai của nhau một cách tin cậy để thiết lập phiên kết nối an toàn Tương tự như vậy đối với các cặp máy khách hàng khác
1.4.4 Chứng chỉ khoá công khai
Trong sơ đồ thẩm quyền khoá công khai còn có hạn chế khi người dùng yêu cầu người uỷ quyền cung cấp khoá công khai của tất cả các người dùng khác mà nó muốn kết nối sẽ gây ra hiện tượng quá tải thắt cổ chai trong hệ thống Sơ đồ trao đổi chứng chỉ khoá công khai tạo ra các chứng chỉ được dùng bởi các thành viên để trao đổi khoá không cần giao tiếp với người có thẩm quyền nhưng lại giống như khoá được trao trực tiếp từ người có thẩm quyền khoá công khai
Trang 7Mỗi chứng chỉ chứa khoá công khai và thông tin liên quan được tạo ra bởi người
có thẩm quyền và được giao cho thành viên với khoá bí mật phù hợp tương ứng Thành viên này truyền thông tin khoá của mình đến thành viên khác chính là chứng chỉ của mình Thành viên khác có thể kiểm tra xem chứng chỉ có được tạo ra bởi người có thẩm quyền không bằng cách dùng khoá công khai của người có thẩm quyền để giải mã chứng chỉ
Đây thực ra là quá trình xác thực chữ ký của người có thẩm quyền vì ai cũng giải mã được thông tin trong chứng chỉ nhưng phải dùng khoá công khai của người có thẩm quyền
Một kẻ xấu biết được khoá bí mật của A Khi A sinh ra một cặp khoá mới và xin người thẩm quyền cấp một chứng chỉ mới, kẻ xấu dùng lại chứng chỉ cũ của A và gửi cho B Nếu B mã thông báo dùng khoá công khai cũ thì kẻ xấu có thể đọc các thông báo này Các yêu cầu đối với sơ đồ trên là:
- Một thành viên bất kỳ có thể đọc một chứng chỉ để xác định tên và khoá công khai của người chủ của chứng chỉ
- Thành viên bất kỳ có thể xác nhận rằng chứng chỉ là nguyên bản từ người thẩm quyền chứng chỉ và không bị giả
- Chỉ người thẩm quyền chứng chỉ mới có thể đọc và cập nhật chứng chỉ
Thành viên bất kỳ có thể xác nhận thời gian lưu hành của chứng chỉ
1.5 Một số thuật toán thường dùng
Hệ mã hoá khoá công khai được thực hiện, xây dựng trên một số cơ sở toán hoc Hai trong số thuật toán thường dùng là: RSA và El Gamal
El Gamal:
Được phát triển bởi Taher ElGamal
Kích thước key: 512 hoặc 1024 bits
Ít phổ biến như là RSA, sử dụng giao thức PGP
RSA:
Được phát triển bởi Rivest, Shamir vad Adleman
Kích thước key: 512, 1024 hoặc 2048 bits
Trang 8Phổ biến, nhiều người dùng, dùng khoá công khai để quản lý.
2 Hệ mật RSA
2.1 Lịch sử hình thành
Thuật toán được Ron Rivest, Adi Shamir và Len Adleman mô tả lần đầu tiên vào năm 1977 tại Học viện Công nghệ Massachusetts (MIT) Tên của thuật toán lấy từ 3 chữ cái đầu của tên 3 tác giả Đây là thuật toán đầu tiên phù hợp với việc tạo ra chữ ký điện
tử đồng thời với việc mã hóa Nó đánh dấu một sự tiến bộ vượt bậc của lĩnh vực mật mã học trong việc sử dụng khóa công cộng RSA đang được sử dụng phổ biến trong thương mại điện tử và được cho là đảm bảo an toàn với điều kiện độ dài khóa đủ lớn
Thuật toán RSA được MIT đăng ký bằng sáng chế tại Hoa Kỳ vào năm 1983 (Số đăng ký 4,405,829) Bằng sáng chế này hết hạn vào ngày 21 tháng 9 năm 2000 Tuy nhiên, do thuật toán đã được công bố trước khi có đăng ký bảo hộ nên sự bảo hộ hầu như không có giá trị bên ngoài Hoa Kỳ Ngoài ra, nếu như công trình của Clifford Cocks đã được công
bố trước đó thì bằng sáng chế RSA đã không thể được đăng ký
Thuật toán dựa trên độ khó của bài toán phân tích một số thành nhân tử
2.2 Các bước thực hiện hệ mật RSA.
Giả sử Alice và Bob cần trao đổi thông tin bí mật thông qua một kênh không an toàn (ví
dụ như Internet) Với thuật toán RSA, Alice đầu tiên cần tạo ra cho mình cặp khóa gồm khóa công khai và khóa bí mật theo 6 bước sau:
B2 Tính tích của nó n=p⋅q.
B3 Tính giá trị hàm Phi Euler của n: ϕ( ) (n = p−1)(q−1).
B4 Chọn số nguyên d, sao chod<ϕ( )n và ƯSCLN(d,ϕ(n))=1
B5 Tính giá trị e thỏa mãn điều kiện:e⋅d=1mod(ϕ( )n )
tính toán khóa
Quá trình mã hóa:
Giả sử Bob muốn gửi đoạn thông tin m<n cho Alice, thì Bob tính bản mã như sau
)
(modn
m
c= e
Cuối cùng Bob gửi c cho Alice.
Quá trình giải mã:
Alice nhận c từ Bob và khóa bí mật d Alice có thể tìm được m từ c theo công thức sau:
)
(mod n
c
m= d
Quá trình giải mã hoạt động vì ta có
) (mod )
c d ≡ e d ≡ ed
)
(mod p
m
m ed ≡
)
(modq
m
m ed ≡
Do p và q là hai số nguyên tố cùng nhau, áp dụng định lý phần dư trung hoa, chúng ta có:
Trang 9(mod pq
m
m ed ≡
Hay
)
(mod n
m
c d ≡
2.3 Ví dụ
Trước hết, Ta chọn hai số nguyên tố p và q, với p = 5, q = 7
Tính n = p*q = 5 * 7 = 35
Z = (p -1) * (q - 1) = (5 -1)*(7-1) = 24
Tiếp đến, chọn e thoả điều kiện 1< e< n
Chọn e = 5
Tìm d, sao cho e * d -1 chia hết cho z
Ta có: ( 5 * 29- 1) thì thoả chia hết cho 24
Chọn d = 29
Do đó, ta có cặp key (Key Pair) như sau:
Public Key = (n,e) = (35, 5)
Private Key = (n,d) = (35,29)
Áp dụng để mã hoá chuổi : secure
Trong bảng chữ cái, có tất cả 26 ký tự, các ký tự ứng với một con số Do đó, ta có bảng sau:
Bảng mã hóa chuổi SECURE
Nếu tại đây, dữ liệu trên đường chuyển đến người nhận bị một người khác bắt được, anh ta sẽ không biết được nội dung muốn nói điều gì, mà chỉ nhận được đó chỉ là những con số, không nói lên được điều gì Nếu muốn đọc được nội dung, anh ta phải có Private Key, mà ứng với Public Key dùng để mã hoá dữ liệu trên thì phải có private Key thích hợp Do đó, dữ liệu sẽ an toàn
Khi dữ liệu đến tay người nhận, muốn khôi phục lại dữ liệu gốc ban đầu, ta sẽ decrypt lại với n = 35, d = 29
Bảng giải mã chuổi SECURE
Trang 10Nội dung bị mã hoá M = cd mod n Dữ liệu gốc
Public Key = (n,e) = (35, 5)
Private Key = (n,d) = (35,29)
2.4 Key Length (chiều dài khoá)
Tốc độ mã hoá và giải mã dữ liệu của RSA không phụ thuộc vào kích thước của Key (n )
Bảng Tốc độ mã hóa, giải mã của RSA
Độ dài n 512 bit 768 bits 1,024 bits
Giải mã 0.16 sec 0.48 sec 0.93 sec
2.5 Đánh giá RSA
- RSA đơn giản , dễ hiểu, dễ cài đặt
- Hiệu suất hoạt động: RSA chạy châm do việc phát sinh khoá công khai- khoá bí mật hay quá trình mã hoá- giải mã tốn nhiều thời gian vì phải tính toán trên các số nguyên dương cực lớn, có chiều dài vượt quá khả năng chứa của thanh ghi nên phải giả lập, thực hiện lại nhiều lần và sử dụng nhiều đến bộ sử lý Do đó, RSA không được sử dụng vào mục đích mã hoá các khối lượng dữ liệu lớn mà chỉ ứng dụng trong chữ ký điện tử để mã hoá thông điệp ngắn đã qua hàm băm (hash), giải thuật trao đổi khoá bí mật( khoá dùng cho các hệ thống mã hoá đối xứng- hay khoá riêng) hay là chỉ mã hoá dữ liệu với số lượng nhỏ
- Tính bảo mật: Như đã trình bày trên, độ an toàn của RSA dựa trên bài toán phân tích ra thừa số nguyên tố Do đó, chiều dài của số càng lớn thì càng khó phân tích ra thừa số nguyên tố
3 Hệ mật Elgama
3.1 Lịch sử ra đời
Hệ mật Elgama hình thành trên cơ sở bài toán logarith rời rạc Được đề xuất năm
1984 Sau đó chuẩn chữ ký điện tử của Mỹ và Nga hình thành trên cơ sở hệ mật này