Tài liệu tham khảo kỹ thuật công nghệ, chuyên ngành tin học nghiên cứu các mô hình, cấu trúc và các thành phần cơ bản của trung tâm xác thực dựa trên công nghệ PKI
Trang 1MỞ ĐẦU
Phần mở đầu xin trích một đoạn trong loạt bài viết “Hướng dẫn lập kế
hoạch cho PKI” của Martin Kiaer một chuyên gia về lĩnh vực PKI của tậpđoàn Microsoft “ Một vài năm trở lại đây, hầu hết mọi người đều nói về năm
2000 như là năm của PKI Nhiều người tin tưởng rằng, xu thế chủ đạo của thị trường cuối cùng cũng có khuynh hướng sử dụng tất cả các khía cạnh tốt mà PKI có thể cung cấp Mặc dù vậy như những gì bạn có thể đoán, các chứng chỉ và PKI chưa từng thực sự cất cánh Điều đơn giản là nó không đủ gây chú
ý cho việc quản lý phân loại và nhân viên kỹ thuật (người có thể thấy được giá trị của PKI) Mặc dù vậy, sau một thời gian, PKI lại trở thành một trong những chủ đề nóng nhất trong các doanh nghiệp lớn và trung bình Sự thay đổi trong vấn đề bảo mật, nơi bảo mật và các cải thiện trong Internet và khi các công nghệ truyền thông di động trở thành một ngành kinh doanh cho doanh nghiệp, điều đó có nghĩa rằng các chứng chỉ và PKI đã sẵn sàng cho
xu thế chủ đạo của thị trường kinh doanh hơn bao giờ hết.”
Đó là thực trạng chung về nhu cầu sử dụng PKI trên thế giới, còn ở Việtnam hiện nay nhiều tổ chức, cá nhân đã và đang đầu tư nghiên cứu phát triển
hạ tầng khóa công khai thông qua việc phát triển các tiêu chuẩn: mã hóa,truyền thông và liên kết, xác thực, cấp chứng chỉ… Mặc dù nhu cầu cải cáchhành chính, nhu cầu hội nhập quốc tế, an ninh kinh doanh của các doanhnghiệp… đòi hỏi phải đưa chứng chỉ số vào thực tế cuộc sống, nhưng việcứng dụng PKI vào các hoạt động của các tổ chức nhà nước hay doanh nghiệpcòn rất nhiều hạn chế, chỉ với một số tổ chức kinh doanh tài chính, ngân hàng,bảo hiểm và một số cơ quan đơn vị trong lĩnh vực an ninh quốc phòng ứngdụng Tuy nhiên việc ứng dụng chỉ nằm trong phạm vi một tổ chức hoặc mộtnhóm tổ chức nhỏ Vì vậy việc xây dựng một trung tâm xác thực chung có
Trang 2chức năng thống nhất hoặc giao tiếp với các trung tâm hiện có đang là bàitoán lớn trong quá trình thực hiện chính phủ điện tử ở nước ta.
Mục đích của luận này nhằm nghiên cứu các mô hình, cấu trúc và cácthành phần cơ bản của trung tâm xác thực dựa trên công nghệ PKI, giới thiệumột số mô hình giao tiếp trong hệ thống liên trung tâm xác thực Xây dựngthành công mô hình trung tâm xác thực ứng dụng trong phạm vi doanh nghiệpvừa và nhỏ trong việc trao đổi thông tin số
Luận văn gồm 5 chương:
Chương 1: Cơ sở lý thuyết mô hình trung tâm xác thực
Giới thiệu về cấu trúc và các thành phần cơ bản của mô hình trung tâmxác thực dựa trên công nghệ PKI
Chương 2: Mô hình trung tâm xác thực
Tổng quan về trung tâm xác thực, giới thiệu các loại mô hình kiến trúctrung tâm xác thực và ưu nhược điểm của từng loại mô hình kiến trúc
Chương 3: Xây dựng mô hình trung tâm xác thực
Xây dựng mô hình trung tâm xác thực dựa trên mô hình lai ghép với đầy
đủ chức năng của hệ thống trung tâm xác thực: Cấp, phân phối, thu hồi, tạmdừng, khôi phục chứng chỉ, xác thực chứng chỉ số đa cấp và các trung tâmngang hàng
Chương 4: Xây dựng hệ thống cơ sở dữ liệu
Giới thiệu hệ thống thư mục và cơ sở dữ liệu quan hệ của mô hình trungtâm xác thực được xây dựng ở chương 3
Chương 5: Giới thiệu giao diện và chức năng hệ thống
Giới thiệu các chức năng chính của hệ thống và các hình ảnh hoạt độngtương ứng
Trang 3Hệ mật mã được định nghĩa là một bộ gồm 5 thành phần (P, C, K, E, D)trong đó:
Trang 4Với mỗi k thuộc K thì tồn tại hàm lập mã ek thuộc E, ek:P C là mộthàm giải mã dk thuộc D: C P sao cho dk(ek(X)) =x, với mọi x thuộc P
1.1.2 Các Hệ mật mã
1.1.2.1 Hệ mật mã khóa đối xứng(khóa mật)
Hệ thống mã hóa đối xứng dựa trên một khóa đơn Khóa này là mộtchuỗi bit có độ dài cố định Do đó, cơ chế mã hóa này được coi là mã hóađơn khóa Khóa này là riêng (hoặc bí mật) và được sử dụng để mã hóa cũngnhư giải mã Trước khi hai phía trao đổi dữ liệu, khóa phải được chia sẻ giữachúng Sau đó phía gửi mã hóa bản tin ban đầu sử dụng khóa riêng đó và gửibản tin đã được mã hóa cho phía nhận Tại phía nhận bản tin mã hóa đượcgiải mã sử dụng cùng loại khóa riêng trên
Quá trình mã hóa khóa đối xứng được mô tả như hình 1.1
Cả người gửi và người nhận phải dung chung 1 khóa Có một cáchdùng chung khóa đó là người gửi cung cấp khóa mã cho đích danh ngườinhận Tuy nhiên cách này không chỉ tốn nhiều thời gian mà còn phá hủy toàn
bộ mục tiêu của mạng Có một cách khác để chuyển khóa cho người nhận đó
là qua đường điện thoại Nhưng cách này cũng không an toàn do có thể bịnghe trộm điện thoại Một cách khác có thể chuyển khóa cho người nhận đó
là qua email Tuy nhiên tất cả các cách trên đều có thể bị tấn công Do tất cảcác cách trao đổi khóa đều không an toàn, một giải pháp khắc phục vấn đềtrên là làm cho khóa có độ dài thích hợp Dựa vào độ dài của khóa, theo thờigian có nhiều thuật toán mã hóa đối xứng được phát triển Một vài thuật toánđối xứng được sử dụng phổ biến trong giải pháp VPN là DES, 3 DES, RC4
Trang 5Hình 1.1 Hệ mật mã khóa đối xứngChuẩn mã dữ liệu DES (Data Encryption Standard)
DES: Viết tắt của Data Encryption Standard, DES được chọn làm tiêuchuẩn liên bang Hoa kỳ vào tháng 11 năm 1976 Với DES, bản rõ (Plaintext)được mã hóa theo từng khối 64 bit và sử dụng 1 khóa là 64 bits, nhưng thực tếthì chỉ có 56 bits là thực sự được dùng để tạo khóa, 8 bits còn lại dùng đểkiểm tra tính chẵn, lẻ DES là một thuật toán được sử dụng rộng rãi nhất trênthế giới Hiện tại DES không còn được đánh giá cao do kích thước của khóaquá nhỏ 56 bits và dễ bị phá vỡ
Chuẩn mã dữ liệu 3DES (Triple Data Encryption Standard)
Triple DES (3DES) có độ phức tạp thám mã lớn hơn DES với việc sửdụng một quá trình mã hóa và giải mã sử dụng 3 khóa Khối 64 – bits của bản
rõ đầu tiên sẽ được mã hóa sử dụng khóa thứ nhất Sau đó, dữ liệu bị mã hóađược giải mã bằng việc sử dụng khóa thứ hai Cuối cùng, sử dụng khóa thứ ba
và kết quả của quá trình giải mã trên để mã hóa:
Môi trường truyền
Bản
Key K
Khóa K được truyền trên kênh
bí mật đến người gửi, nhận
Trang 6AES: Viết tắt của Advanced Encryption Standard, được sử dụng đểthay thế cho DES Nó hỗ trợ độ dài của khóa từ 128 bits cho đến 256 bits
Ưu nhược điểm:
Ưu điểm nổi bật của hệ mật mã khóa đối xứng là việc xây dựng một
hệ mật mã có độ bảo mật cao Nhưng phải cần có một nguồn sinh khóa ngẫunhiên cũng như việc phân phối, lưu trữ bảo mật và thỏa thuận khóa là một vấn
đề khá phức tạp trong thực tế Giả sử, trong một mạng có n người dùng, nếucần khóa cho từng cặp riêng biệt thì phải cần tới: n(n +1)/2 khóa
Để khắc phục hiện tượng không thể lưu trữ một khối lượng khóa quálớn đáp ứng nhu cầu mã dịch, người ta xem xét đến việc sử dụng các hệ mật
mã khối với độ dài không lớn lắm như DES, hoặc các hệ mật mã dòng màkhóa được sinh ra từ một nguồn ngẫu nhiên bằng thuật toán
Mặc dù đã thực hiện việc mã hóa và giải mã bằng các hệ mật mã khốihay bằng thuật toán sinh khóa như đã nêu ở trên thì vấn đề phân phối và thỏathuận khóa vẫn phải được thực hiện Như vậy phân phối và thỏa thuận khóa làmột vấn để còn vướng mắc chưa thể giải quyết trong các hệ mật mã khóa đốixứng
1.1.2.2 Hệ mật mã khóa bất đối xứng (khóa công khai)
Trong mô hình mật mã cổ điển mà cho tới nay vẫn còn đang đượcnghiên cứu Alice (người gửi) và Bob (người nhận) chọn một cách bí mật khóa
K Sau đó dùng K để tạo luật mã hóa ek và luật giải mã dk Trong hệ mật này,
dk hoặc giống như ek hoặc dễ dàng nhận được từ nó (ví dụ trong hệ DES), quátrình giải hệ mật thuộc loại này còn được gọi là các hệ mật khóa bí mật vìviệc để lộ ek sẽ làm cho hệ thống mất an toàn
Nhược điểm của hệ mật này là nó yêu cầu phải có thông tin trước vềkhóa K giữa Alice và Bob qua một kênh an toàn trước khi gửi một bản mã bất
kỳ Trên thực tế, điều này rất khó đảm bảo Chẳng hạn khi Alice và Bob ở rất
Trang 7xa nhau và họ chỉ có thể liên lạc với nhau bằng thư tín điện tử Trong tình thế
đó Alice và Bob không thể tạo được một kênh bảo mật với giá phải chăng
Ý tưởng xây dựng một hệ mật khóa công khai (hay khóa dùng chung)
là tìm một hệ mật không có khả năng tính toán để xác định dk nếu đã biết ek.Nếu thực hiện được như vậy thì quy tắc mã ek có thể được công khai bằngcách công bố nó trong một danh bạ (bởi vậy nên có thuật ngữ hệ mật khóacông khai) Ưu điểm của hệ mật khóa công khai là ở chỗ Alice (hoặc bất kỳmột ai) có thể gửi một bản tin đã mã cho Bob (mà không cần thông tin trước
về khóa mật) bằng cách dùng luật mã công khai ek Bob sẽ là người duy nhất
có thể giải mã được bản mã này bằng cách sử dụng luật giải mã bí mật dk củamình
Có thể hình dung tương tự như sau Alice đặt một vật vào một họpkim loại và rồi khóa nó lại bằng một khóa số do Bob để lại Chỉ có Bob làngười duy nhất có thể mở được họp và chỉ có anh ta mới biết tổ hợp mã củakhóa số của mình
Ý tưởng về một hệ mật khóa công khai đã được Diffie và Hellmanđưa ra vào năm 1976 Còn việc hiện thực hóa hệ mật khóa công khai thì doRivest Shamir và Adleman đưa ra đầu tiên vào năm 1977, họ đã tạo nên hệRSA nổi tiếng Kể từ đó đã có một số hệ mật được công bố, độ mật của chúngdựa trên các bài toán tính toán khác nhau Trong đó quan trọng nhất là các hệmật sau:
- Hệ mật RSA
Độ bảo mật của hệ RSA dựa trên độ khóa của việc phân tích ra thừa
số nguyên tố của các số nguyên lớn
- Hệ mật xếp balô Merkle Hellman
Hệ này và các hệ có liên quan dựa trên tính khó giải của bài toán tổngcác tập con (bài toán này là bài toán NP đầy đủ - là một lớp khá lớn các bài
Trang 8toán không có các thuật toán được biết trong thời gian đa thức) Tuy nhiên tất
cả các hệ mật xếp balô khác nhau đều bị chứng tỏ là không mật (ngoại trừ hệmật Cinor – Rivest)
- Hệ mật McElience
Hệ này dựa trên lý thuyết mã đại số và vẫn còn được coi là an toàn
Hệ mật McEliece dựa trên bài toán giải mã cho các mã tuyến tính (cũng làmột bài toán NP – đầy đủ)
- Hệ mật trên các đường cong Eliptic
Các hệ mật này là các biến tướng của các hệ mật khác (chẳng hạn từ
hệ mật ElGamal) Chúng làm việc trên đường cong Eliptic chứ không phải làtrên các đường hữu hạn Hệ mật này đảm bảo độ mật với khóa số nhỏ hơn các
hệ mật khóa công khai khác
Sơ đồ hoạt động hệ mật khóa công khai:
Alice’s
PublicKey
Môi trường truyền
Bản Mã
Bản
Rõ
Alice’s PrivateKey
Trang 9Hình 1.2 Sơ đồ hoạt động sử dụng khóa công khai gửi nhận dữ liệu
Khi Bob muốn gửi dữ liệu cho Alice, Bob lấy khóa công khai(Alice’s
PublicKey) của Alice mã hóa thông điệp gửi sau đó gửi bản mã cho Alice.
Khi nhận được thông điệp mã của Bob gửi Alice dùng khóa riêng của
mình(Alice’s PrivateKey) giải mã thông điệp.
Hệ mật RSA
Logarit rời rạc là sự tiếp nối của phép tính lôgarit trên trường số thựcvào các nhóm hữu hạn Giả sử hai số thực x,y và cơ số a>0, a ≠ 1, nếu ax = ythì x được gọi là lôgarit cơ số a của y, ký hiệu x = logay
Cho p là một số nguyên tố Xét nhóm nhân các số nguyên modulo p
Zp = {1,2, p} với phép nhân modulo p
Nếu ta tính lũy thừa bậc k của một số trong nhóm rồi rút gọn theomodulo p thì ta được một số trong nhóm đó Quá trình này được gọi là lũythừa rời rạc modulo p Chẳng hạn với p = 17, lấy a = 3, k = 4 ta có:
34 = 81 13 (mod 17)Lôgarit rời rạc là phép tính ngược lại:
Có nhiều hệ thống khóa công khai được triển khai rộng rãi như hệRSA, hệ ElGamal sử dụng giao thức trao đổi khóa Diffe – Hellnam và nổi lêntrong những năm gần đây là hệ thống đường cong Elliptic Trong số các hệmật mã trên thì hệ RSA là hệ được cộng đồng chuẩn quốc tế và công nghiệpchấp nhận rộng rãi trong việc thực thi mật mã khóa công khai
Thuật toán được Ron Rivest, Adi Shamir và Len Adleman mô tả lầnđầu tiên vào năm 1977 tai học viện Công nghệ Masachusetts (MIT) Tên củathuật toán lấy từ 3 chữ cái đầu tiên của tên 3 tác giả Hệ mật mã RSA được sửdụng rộng rãi trong thực tiến đặc biệt cho mục đích bảo mật và xác thực dữliệu số Tính bảo mật và an toàn của chúng được đảm bảo bằng độ phức tạp
Trang 10của một bài toán số học nổi tiếng là phân tích số nguyên thành các thừa sốnguyên tố Hệ mật RSA được mô tả như hình sau:
Cho n = pq với p,q là số nguyên tố lớn Đặt P = C = Zn
Ta định nghĩa:
K = {n, p, q, a, b}: n=pq, p,q là các số nguyên tố ab 1 mod (n)
(n) = (p – 1)(q – 1), a khóa mật, b khóa công khai
Với mỗi K = (n, p, q, a, b), mỗi x P, y C, ta xác định hàm mã vàgiải mã như sau:
Hàm mã hóa: y = ek(x) = xb mod n
Hàm giải mã: Dk (x) = ya mod n
(x,y Zn) Các giá trị n,b công khai và p,q,a được giữ bí mật
Hình 1.3 Sơ đồ hệ mật mã RSAKhả năng đảm bảo an toàn của hệ mật mã RSA:
Độ an toàn của hệ thống RSA dựa trên 2 vấn đề của toán học : Bàitoán phân tích ra thừa số nguyên tố các số nguyên lớn và bài toán RSA Nếu
2 bài toán trên là khó ( không tìm được thuật toán hiệu quả để giải chúng) thìkhông thể thực hiện được việc phá mã toàn bộ đối với RSA
Bài toán RSA là bài toán tính căn bậc e mođun n (với n là hợp số): tìm
số m sao cho me = c mod n, trong đó (e,n) chính là khóa công khai và c là bản
mã Hiện nay phương pháp triển vọng nhất giải bài toán này là phân tích n rathừa số nguyên tố Khi thực hiện được điều này, kẻ tấn công sẽ tìm ra số mũ
bí mật d từ khóa công khai và có thể giải mã theo đúng quy trình của thuậttoán Nếu kẻ tấn công tìm được 2 số nguyên tố p và q sao cho:n = pq thì cóthể dễ dàng tìm ra được giá trị (p -1)(q-1) và qua đó xác định d từ e Chưa cómột phương pháp nào được tìm ra trên máy tính đề giải bài toán này trongthời gian đa thức (polynomial – time) Tuy nhiên người ta cũng chưa chứngminh được điều ngược lại (sự không tồn tại của thuật toán)
Trang 11Tại thời điểm năm 2005, số lớn nhất có thể được phân tích ra thừa sốnguyên tố có độ dài 663 bits với phương pháp phân tán trong khi khóa củaRSA có độ dài từ 1024 đến 2048 bits Một số chuyên gia cho rằng khóa 1024bits có thể sớm bị phá vỡ (cũng có nhiều người phản đối việc này) Với khóa
4096 bits thì hầu như không có khả năng bị phá vỡ trong tương lai gần Do
đó, người ta thường cho rằng RSA đảm bảo an toàn với điều kiện n được chọn
đủ lớn Nếu n có độ dài 256 bits hoặc ngắn hơn, có thể bị phân tích trong vàigiờ với máy tính cá nhân dùng các phần mềm có sẵn Nếu n có độ dài 521bits, nó có thể bị phân tích bởi vài trăm máy tính tại thời điểm năm 1999 Mộtthiét bị lý thuyết có tên là TWIRL do Shamir và Tromer mô tả năm 2003 đãđặt ra câu hỏi về độ an toàn của khóa 1024 bits Vì vậy hiện nay người takhuyến cáo sử dụng khóa có độ dài tối thiểu 2048 bits
Năm 1993, Peter Shor công bố thuật toán Shor chỉ ra rằng: máy tínhlượng tử có thể giải bài toán phân tích ra thừa số trong thời gian đa thức Tuynhiên, máy tính lượng tử vẫn chưa thể phát triển được tới mức độ này trongnhiều năm nữa
Việc phát minh ra phương pháp mã công khai tạo ra một cuộc cáchmạng trong công nghệ an toàn thông tin điện tử Nhưng thực tiễn triển khaicho thay tốc độ mã hóa khối dữ liệu lớn bằng các thuật toán mã hóa công khaichậm hơn rất nhiều so với hệ mã hóa đối xứng Ví dụ, để đạt được độ an toàn như các hệ mã hóa đối xứng mạnh cùng thời, RSA đòi hỏi thời gian cho việc mã hóa một văn bản lâu hơn gấp hàng ngàn lần Do đó, thay bằng việc mã hóa văn bản có kích thước lớn bằng lược đồ khóa công khai thì văn bản này sẽ được mã hóa bằng một hệ mã đối xứng có tốc độ cao như DES, IDEA sau đó khóa được sử dụng trong hệ mã đối xứng sẽ được mã hóa sử dụng mật mã công khai Phương pháp này rất khả thi trong việc mã và giải mã những văn bản có kích thước lớn như được mô tả trong hình dưới:
Trang 12Hình 1.4 Dùng khóa công khai mã hóa khóa mật – Dùng khóa mật mã
hóa thông điệp gửi đi
Hệ mật Rabin
Hình 1.5 Sơ đồ hoạt động hệ mật RabinĐây là hệ mật có độ an toàn cao về mặt tính toán chống lại được cáchtấn công bản rõ lựa chọn và không có khả năng phân tích được n=pq
Với hàm mã hoá ek không phải là một đơn ánh, vì thế phép giải mãkhông thể thực hiện được một cách xác định Thực tế có 4 bản rõ có thể ứng
Giả sử n là tích của hai số nguyên tố phân biệt p và q, p.q 3 (mod 4) Giả sử p =C=Zn và ta xác định
Bản
Rõ
Bản Mã
Khóa mật
Khóa
mật
Khóa mật
Khóa bí mật của Alice
Bản Mã
Bản Rõ
Khóa công
khai của Alice
Bob
Trang 13với một bản mã bất kỳ cho trước Giả sử w là một trong 4 căn bậc hai của mộtmodulo n Giả sử xєZn Ta kiểm tra các phương trình sau:
Bốn bản rõ mã hoá thành eK(x) là x, -x –B, w(x+B/2) và -w(x+B/2),trong đó w là một căn bậc hai không tầm thường của 1(modulo n) Nói chungBob không có cách nào để xác định bản nào trong bốn bản rõ có thể này làbản rõ đúng, trừ phi bản rõ có đủ độ dư để loại bỏ ba trong bốn bản rõ đó
Bây giờ ta xem xet bài toán giải mã theo quan điểm của Bob Anh ta
đã có bản mã y và muốn xác định x sao cho: x2+ bx y(mod n)
Đây là một phương trình bậc hai theo giá trị x chưa biết Ta có thể loại
bỏ số hạng tuyến tính bằng phép thế x1=x+B/2 (Hay x = x1- B/2) Khi đóphương trình trên có dạng
Nếu đặt thì có thể viết lại phương trình đồng dư như sau:
x1 C (mod n)Như vậy phép giải mã sẽ chỉ còn là thực hiện phép khai căn bậc haitheo modulo n điều này tương đương với việc giải phương trình đồng dư sau:
x12 C (mod p)x12 C (mod q)
Trang 14Có hai căn bậc hai của C modulo p và hai căn bậc của C theo modulo
q Bằng cách dùng định lý phần dư China, các nghiệm này có thể được kếthợp để tạo nên bốn nghiệm theo modulo n Có thể dùng tiêu chuẩn Eucler đểxác định xem C có phải là một thặng dư bậc hai theo modulo p (và modulo q)hay không Trên thực tế, C là một thặng dư bậc hai theo modulo p và modulo
q nếu phép mã hoá được thực hiện đúng Tuy nhiên tiêu chuẩn Eucler khônggiúp chúng ta tìm được các căn bậc hai của C Nó chỉ ra một câu trả lời “Có”hoặc “Không”
Khi p 3 (mod 4), ta có một công thức đơn giản để tính các căn bậchai của các thặng dư bậc hai theo modulo p Giả sử C là một thặng dư bậc hai
và p 3 (mod 4) Khi đó ta có:
(± C(p+1)/4)2 C(p+1)/2(mod p) C(p-1)/2 C (mod p)
Trang 15Nhận xét:
Một điều lý thú là với p 1 (mod 4), người ta chưa biết được một
thuật toán tất định theo thời gian đa thức nào để tính căn bậc hai của các thặng
dư bậc hai theo modulo p Tuy nhiên, vẫn có thuật toán Las Vegas với thờigian đa thức để tính nó
Một khi đã xác định bốn giá trị có thể của x1, ta tính x từ phương trìnhx=x1 - B/2 để tìm được bốn bản rõ có thể Điều này dẫn đến công thức giải
mã sau:
Hệ mật rabin là an toàn đối với phương pháp tấn công bản rõ chọn lọc,nhưmg hệ này lại hoàn toàn không an toàn đối với phương pháp tấn công bản
mã chọn lọc
Ưu điểm và nhược điểm của hệ mật mã khóa công khai
Vấn đề còn tồn tại của hệ mật mã khóa đối xứng được giải quyết nhờ
hệ mật mã khóa công khai Chính ưu điểm này đã thu hút nhiều trí tuệ vàoviệc đề xuất, đánh giá các hệ mật mã công khai Nhưng do bản thân các hệmật mã khóa công khai đều dựa vào giả thiết liên quan đến các bài toán khónên đa số các hệ mật mã này đều có tốc độ mã dịch không nhanh Chínhnhược điểm này làm cho các hệ mật mã khóa công khai khó được dùng mộtcách độc lập
Một vấn đề nữa nảy sinh khi sử dụng các hệ mật mã khóa công khai làviệc xác thực mà trong mô hình hệ mật mã đối xứng không đặt ra Do cáckhóa sử dụng trong quá trình mã (khóa công khai) được công bố một cáchcông khai trên mạng cho nên việc đảm bảo rằng “khóa được công bố có đúng
là một đối tượng cần liên lạc hay không?” là một kẽ hở có thể bị lợi dụng.Vấn đề xác thực được giải quyết cũng chính bằng các hệ mật mã khóa công
Trang 16khai Nhiều thủ tục xác thực đã được nghiên cứu và sử dụng như Kerberos,X.509 Một ưu điểm nữa của hệ mật mã khóa công khai là các ứng dụng của
nó trong lĩnh vực chữ ký số, cùng với kết quả về hàm băm, thủ tục ký để đảmbảo tính toàn vẹn của văn bản được giải quyết
1.2 Hạ tầng cơ sở khóa công khai
Cơ sở hạ tầng của mã công khai PKI là khung chính sách quản lý mã
và thiết lập biện pháp bảo mật cho việc chuyển đổi dữ liệu Việc chuyển dữliệu mà có sử dụng PKI có thể thực hiện trong một tổ chức, một thành phố,hay một vùng Để tăng cường quản lý khóa và bảo đảm độ an toàn cao cho dữliệu, PKI bao gồm các cơ chế và thủ tục hỗ trợ cho phần cứng và phần mềm.Các chức năng của PKI bao gồm:
- Phát ra cặp khóa riêng và chung cho client PKI
- Tạo và thẩm định các ký tự
- Đăng ký và thẩm định người sử dụng
- Cấp chứng nhận cho người sử dụng
- Theo dõi các khóa được phát ra ghi lại lịch sử của từng khóa
- Thu hồi chứng nhận hết hiệu lực
B1 Chọn 2 số nguyên tố lớn p và q với p ≠ q
B2 Tính n=pq và (n)=(p-1)(q-1)
Trang 17B3 Chọn số b nguyên tố cùng nhau với (n) và 1< b < (n)
B4 Tính a sao cho ab 1 (mod (n))
Thành phần công khai bao gồm: n và b(khóa công khai)Thành phần bí mật bao gồm: p, q, a(khóa bí mật)
a là số mũ bí mật (cũng gọi là số mũ giải mã)
Alice gửi khóa công khai cho Bob, và giữ bí mật khóa cá nhân củamình Ở đây, p và q giữ vai trò rất quan trọng Chúng là các phân tố của n vàcho phép tính a khi biết b Việc tìm ra 2 số nguyên tố đủ lớn p và q thườngđược thực hiện bằng cách thử xác suất của các số ngẫu nhiên có độ lớn phùhợp (dùng phép kiểm tra nguyên tố cho phép loại bỏ hầu hết các hợp số) p và
q còn cần được chọn không quá gần nhau để phòng trường hợp phân tích nbằng phương pháp phân tích Fermat Ngoài ra, nếu p -1 hoặc q-1 có thừa sốnguyên tố nhỏ thì n cũng có thể dễ dàng bị phân tích và vì thế p và q cũng cầnđược thử để tránh khả năng này
Bên cạnh đó, cần tránh sử dụng các phương pháp tìm số ngẫu nhiên
mà kẻ tấn công có thể lợi dụng để biết thêm thông tin về việc lựa chọn (cầndùng các bộ tạo số ngẫu nhiên tốt) Yêu cầu ở đây là các số được lựa chọn cầnđồng thời ngẫu nhiên và không dự đoán được Đây là các yêu cầu khác nhau:một số có thể được lựa chọn ngẫu nhiên (không có kiểu mẫu trong kết quả)nhưng nếu có thể dự đoán được dù chỉ một phần thì an ninh của thuật toáncũng không được đảm bảo Một ví dụ là bảng các số ngẫu nhiên do tập đoànRand xuất bản vào những năm 1950 có thể rất thực sự ngẫu nhiên nhưng kẻtấn công cũng có bảng này Nếu kẻ tấn công đoán được một nửa chữ số của phay q thì chúng có thể dễ dàng tìm ra nửa còn lại (theo nghiên cứu củaDonald Coppersmith vào năm 1977)
Trang 18Một điểm nữa cần nhấn mạnh là khóa bí mật a phải đủ lớn Năm 1990,Wiener chỉ ra rằng nếu giá trị của p nằm trong khoảng q và 2q (khá phổ biến)
và a<n1/4/3 thì có thể tìm ra được a từ n và b
Mặc dù b đã từng có giá trị là 3 nhưng hiện nay các số mũ nhỏ khôngcòn được sử dụng do có thể tạo nên những lỗ hổng Giá trị thường dùng hiệnnay là 65537 vì được xem là đủ lớn và cung không quá lớn ảnh hưởng tới việcthực hiện hàm mũ
1.2.1.2 Phân phối khóa:
Hệ thống mã khoá công khai có ưu điểm hơn hệ thống mã khoá riêng
ở chỗ không cần có kênh an toàn để trao đổi khoá mật Tuy nhiên, hầu hết các
hệ thống mã khoá công khai đều chậm hơn hệ mã khoá riêng, chẳng hạn nhưDES Vì thế thực tế các hệ mã khoá riêng thường được dùng để mã các bứcđiện dài Nhưng khi đó chúng ta lại trở về vấn đề trao đổi khoá mật
Giả sử, ta có một mạng không an toàn gồm n người sử dụng Trongmột số sơ đồ, ta có người uỷ quyền được tín nhiệm (TA) để đáp ứng nhữngviệc như xác minh danh tính của người sử dụng, chọn và gửi khoá đến người
sử dụng Do mạng không an toàn nên cần được bảo vệ trước các đốiphương Đối phương (Oscar) có thể là người bị động, có nghĩa là hành độngcủa anh ta chỉ hạn chế ở mức nghe trộm bức điện truyền trên kênh Song mặtkhác, anh ta có thể là người chủ động Một đối phương chủ động có thể làmnhiều hành vi xấu chẳng hạn:
-Thay đổi bức điện mà anh ta nhận thấy là đang được truyền trên mạng
- Cất bức điện để dùng lại sau này
- Cố gắng giả dạng làm những người sử dụng khác nhau trên mạng.Mục tiêu của đối phương chủ động có thể là một trong những cái nêusau đây:
Trang 19- Lừa U và V chấp nhận khoá “không hợp lệ” như khoá hợp lệ (khoákhông hợp lệ có thể là khoá cũ đã hết hạn sử dụng, hoặc khoá do đối phươngchọn).
- Làm U hoặc V tin rằng, họ có thể trao đổi khoá với người kia khi họkhông có khoá
Mục tiêu của phân phối khoá và giao thức thoả thuận khoá là, tại thờiđiểm kết thúc thủ tục, hai nhóm đều có cùng khoá K song không nhóm khácnào biết được (trừ khả năng TA) Chắc chắn, việc thiết kế giao thức có kiểu
an toàn này khó khăn hơn nhiều trước đối phương chủ động
Trước hết ta xem xét ý tưởng về sự phân phối khoá trước Với mỗi cặpngười sử dụng {U,V}, TA chọn một khoá ngẫu nhiên KU,V=KV,U và truyền
“ngoài dải” đến U và V trên kênh an toàn (Nghĩa là, việc truyền khoá khôngxảy ra trên mạng do mạng không an toàn) Biện pháp này gọi là an toànkhông điều kiện song nó đòi hỏi một kênh an toàn giữa TA và những người
sử dụng trên mạng Tuy nhiên điều quan trọng hơn là mỗi người phải lưu n -1khoá và TA cần truyền tổng cộng khoá một cách an toàn (đôi khi bài toánnày được gọi là bài toán n2) Thậm chí với một số mạng tương đối nhỏ, giá đểgiải quyết vấn đề này là khá đắt và như vậy giải pháp hoàn toàn không thựctế
Sơ đồ phân phối trước khoá an toàn không điều kiện do Blom đưa ra
Sơ đồ cho phép giảm lượng thông tin mật mà người sử dụng cần cất giữ trênmạng
Một biện pháp thực tế hơn là TA phân phối khoá trực tiếp Trong sơ
đồ như vậy, TA làm việc như một người chủ khoá (key server) TA chia khoámật KU cho mỗi người sử dụng U trên mạng Khi U muốn liên lạc với V, cô tayêu cầu TA cung cấp khoá cho phiên làm việc (session key) TA tạo ra khoásession K và gửi nó dưới dạng mã hoá cho U và V để giải mã Hệ thống mãKerboros mô tả dựa trên biện pháp này
Trang 20Phân phối khóa trước:
Theo phương pháp cơ bản, TA tạo ra khoá và đưa mỗi khoa choduy nhất một cặp người sử dụng trong mạng có n người sử dụng Như đã nêu
ở trên, ta cần một kênh an toàn giữa TA và mỗi người sử dụng để truyền đicác khoá này Đây là một cải tiến quan trọng vì số kênh an toàn cần thiết giảm
từ xuống còn n Song nếu n lớn, giải pháp này cũng không thực tế cả vềlượng thông tin cần truyền đi an toàn lẫn lượng thông tin mà mỗi người sửdụng phải cất giữ an toàn (nghĩa là các khoá mật của n-1 người sử dụngkhác) Như vậy, điều cần quan tâm là cố gắng giảm được lượng thông tin cầntruyền đi và cất giữ trong khi vẫn cho phép mỗi cặp người sử dụng U và V cókhả năng tính toán khoá mật KUV Một sơ đồ ưu việt hơn thoả mãn yêu cầunày là sơ đồ phân phối khoá trước của Blom
Sơ đồ Blom
Như trên, giả thiết rằng có một mạng gồm n người sử dụng Để thuậntiện, giả sử rằng các khoá được chọn trên trường số hữu hạn Zp, p n là sốnguyên tố Cho k là số nguyên, 1 < k < n -2 Giá trị k để hạn chế kích thướclớn nhất mà sơ đồ vẫn duy trì được mật độ Trong sơ đồ Blom, TA sẽ truyền
đi k +1 phần tử của Zp cho mỗi người sử dụng trên kênh an toàn (so với n -1trong sơ đồ phân phối trước cơ bản) Mỗi cặp người sử dụng U và V sẽ có khảnăng tính khoá KU,V = KV,U như trước đây Điều kiện an toàn như sau: tập bất
kì gồm nhiều nhất k người sử dụng không liên kết từ {U, V} phải không cókhả năng xác định bất kì thông tin nào về KU,V
Trước hết, xét trường hợp đặc biệt của sơ đồ Blom khi k =1 ở đây TA
sẽ truyền đi 2 phần tử của ZP cho mỗi người sử dụng trên kênh an toàn vàngười sử dụng riêng W sẽ không thể xác định được bất kì thông tin nào vềKU,V nếu WU,V Sơ đồ Blom với k=1 được đưa ra như sau
Trang 21Zp
Hình 1.6 Sơ đồ phân phối khóa trước của Blom
Ví dụ minh họa sơ đồ Blom với k=1:
Giả sử có 3 người sử dụng U,V,W, p=17 và các phần tử công khai của
họ là rU = 12, rV = 7, rW = 1 Giả thiết TA chọn a=8, b=7, c=2, khi đó đa thức fnhư sau:
f(x,y) = 8 + 7(x+y) + 2xyKhi đó các đa thức
gU(x) = 7 + 14xgV(x) = 5 + 4xgW(x) = 15 + 9xNhư vậy 3 khóa nhận được sẽ là:
KU,V = KV,U = 3KU,W = KW,U = 4KV,W = KW,V = 10Khi đó U tính KU,V như sau:
f(x,y) = a + b(x+y) +cxy mod p
3 Với mỗi người sử dụng U TA tính đa thức:
gU(x) = f(x,rU) mod p
và truyền gU(x) đến U trên kênh an toàn Chú ý rằng, gU(x) là đa thức tuyến tính theo x nên có thể viết như sau:
gU(x)= aU + bUx
bU = b+ crU mod p
4 Nếu U và V muốn liên lạc với nhau họ sẽ dùng khóa chung:
KU,V = KV,U = f(rU,rV) = a + b(rU + rV) + crUrV mod p
U tính KU,V như sau: f(rU,rV) = gU(rV)
V tính KV,U như sau: f(rV,rU) = gV(rU)
Trang 22Và V tính KV,U
gV(rU) = 6 + 412 mod 17 = 3Tương tự các khóa khác
Sơ đồ Diffie-Hellman
Trong phần này ta sẽ mô tả một sơ đồ phân phối khóa trước là cải tiếncủa giao thức trao đổi khóa Diffie – Hellman và gọi nó là sơ đồ phân phốitrước khóa Diffie Hellman Sơ đồ này an toàn về mặt tính toán vì nó liên quanđến bài toán logarithm rời rạc không Zp, p là số nguyên tố, mặc dù có thể thựchiện nó trên nhóm hữu hạn bất kỳ, trong đó bài toán logarihm rời rạc khônggiải được Giả sử rằng, là phần tử nguyên thủy của Zp và các giá trị của p vàcủa là công khai và mỗi người trên mạng đều biết
Trong sơ đồ này, ID (U) là thông tin định danh nào đó cho mỗi người
sử dụng U trên mạng, chẳng hạn tên, địa chỉ thư điện tử, số điện thoại…Cũngnhư vậy, mỗi người sử dụng U đều có số mũ aU (trong đó 0 aU p – 2) vàmột giá trị công khai tương ứng
TA sẽ có sơ đồ chữ ký với thuật toán xác minh (công khai) Ver TA vàthuật toán kí mật SigTA Cuối cùng, ta giả thiết ngầm rằng tất cả thông tin đềuđược chia nhỏ ra nhờ dùng hàm Hash công khai trước khi nó được ký Để đơngiản, ta sẽ không đưa hàm hash trong phần mô tả thủ tục
Thông tin chắc chắn về người sử dụng U sẽ được xác thực bằng cáchdùng dấu xác nhận (certificate) của TA và được TA ký Mỗi người sử dụng U
sẽ có một dấu xác nhận
C(U) = (ID(U).bU,sigTA(ID (U),bU))Trong đó bU được thiết lập theo mô tả ở phần trên (chú ý rằng TAkhông cần biết giá trị của aU) Dấu xác nhận của người sử dụng U sẽ đượcđóng vào khi U nối vào mạng Có thể lưu các dấu xác nhận trong cơ sở dữ
Trang 23liệu công khai hoặc mỗi người sử dụng có thể tự lưu dấu xác nhận của chính
họ Chữ ký của TA trên dấu xác nhận cho phép bất kỳ ai trên mạng đều có thểxác minh được thông tin trên nó U và V rất dễ dàng tính ra khóa chung:
1 Số nguyên tố p và phần tử nguyên thủy € Zp công khai
= 23578 mod 25307 = 6113Đặt trên dấu xác nhận Giả thiết V chọn aV = 19956 Sau đó tính:
Đóng trên dấu xác thực của V
Bây giờ U có thể tính khóa:
mod p = 79843578 mod 25307 = 3694 Còn V tính cũng khóa đó:
mod p = 611319956 mod 25307 = 3694
Trang 24Ta xét sự an toàn của sơ đồ này trước cả đối phương thụ động lẫn chủđộng Chữ ký của TA trên dấu xác thực của người sử dụng ngăn chặn hiệuquả W khỏi biến đổi bất kỳ thông tin nào trên dấu xác thực của người sử dụngnào đó Vì thế ta chỉ lo lắng trước những tấn công thụ động Như vậy vấn đềđặt ra là liệu W có thể tính KU,V nếu W khác U, V hay không? Mặt khác khicho trước mod p và mod p thì có khả năng tính được mod pkhông? Đây là bài toán Diffie – Hellman được định nghĩa như sau:
Sơ đồ phân phối khóa trước Diffie – Hellman an toàn trước đốiphương thụ động khi bài toán Diffie – Hellman khó giải
Nếu W có thể tính aU, bU thì anh ta có thể tính KU,V một cách chính xácnhư U, V Nhưng tính toán này là các trường hợp của bài toán logarithm rờirạc Vì thế chỉ cần bài toán logarithm rời rạc trong ZP khó giải thì sơ đồDiffie-Hellman sẽ an toàn
Sơ đồ Kerboros
Trong các phương pháp phân phối trước khoá xem xét trong các phầntrước đó, mỗi cặp người sử dụng cần tính một khoá cố định Nếu dùng cùngmột khoá trong một thời gian dài sẽ dễ bị tổn thương, vì thế người ta thườngthích dùng phương pháp trực tiếp trong đó khoá của phiên làm việc mới chỉđược tạo ra mỗi khi hai ngưới sử dụng muốn liên lạc với nhau (gọi là tính tươimới của khoá)
Nếu dùng phân phối khoá trực tiếp thì người sử dụng mạng không cầnphải lưu các khoá khi muốn liên lạc với những người sử dụng khác (Tuynhiên mỗi người đều được chia sẻ khoá với TA) Khoá của phiên làm việc(khóa session) sẽ được truyền đi theo yêu cầu của TA Đó là sự đáp ứng của
TA để đảm bảo khoá tươi
I = (p, , , ) trong đó p là số nguyên tố lớn, , , Zp* , phần tửnguyên thủy
Mục tiêu tính:
Trang 25Korobos là hệ thống dịch vụ khóa phổ cập dựa trên mã khoá riêng.Mỗi người sử dụng U sẽ chia sẻ khoá DES mật KU cho TA
Khi có yêu cầu khoá session gửi đến TA, TA sẽ tạo ra một khoásession mới ngẫu nhiên K Cũng vậy, TA sẽ ghi lại thời gian khi có yêu cầu T
và chỉ ra thời gian (thời gian tồn tại) L để K có hiệu lực Điều đó có nghĩa làkhoá K chỉ có hiệu lực từ T đến T+L Tất cả thông tin này đều được mã hoá
và được truyền đến U và V
1 U hỏi TA khóa session để liên lạc với V
2 TA chọn 1 khóa session ngẫu nhiên K, thời gian hệ thống T và thờigian khóa tồn tại L
3 TA tính
Sau đó gửi m1, m2 đến U
4 U dùng hàm giải mã để tính K, T, L và ID(V) từ m1, và tính:
m3 = eK (ID(U),T) Sau đó gửi m2, m3 đến V
5 V dùng hàm giải mã để tính K, T, L và ID(U) từ m2, sau đó dùng
dk để tính ID(U) và T từ m3 Kiểm tra 2 giá trị T và 2 giá trị ID(U) cógiống nhau không, nếu đúng thì V tính: m4 = eK (T+1) và gửi nó đến U
6 U Giải mã m4 bằng dk để kiểm tra xem kết quả có băng T +1 không?
Hình 1.8 Sơ đồ truyền khoá session trong Korobos
TA tạo ra K, T và L trong bước 2 Trong bước 3, thông tin này cùngvới ID(V) được mã hoá bằng khoá KU (được U và TA chia sẻ) để tạo lập m1
Cả hai bức điện đã mã hoá này được gửi đến U
U có thể dùng khoá của mình giải mã m1, nhận được K, T và L U sẽxác minh xem thời gian hiện tại có nằm trong khoảng T đến T + L hay không
Trang 26U cũng kiểm tra khoá session K được phát ra cho liên lạc giữa U và V bằngcách xác minh thông tin ID(V) đã giải mã từ m2.
Tiếp theo, U sẽ làm trễ thời gian m2 và m3 đến V Cũng như vậy, U sẽdùng khoá session K mới để mã T và ID(U) và gửi kết quả m3 đến V
Khi V nhận được m3 và m3 từ U, V giải mã m2 thu được T, K, L vàID(U) Khi đó, V sẽ dùng khoá session mới K để giải mã m3 và xác minh xem
T và ID(U) nhận được từ m2 và m3 có như nhau không Điều này đảm bảo cho
V rằng khoá session được mã bằng m2 cũng là khoá đã dùng để mã m3 Khi đó
V dùng K để mã T+1 và gửi kết quả m4 trở về U
Khi U nhận được m4, U dùng K giải mã nó và xác minh xem kết quả
có bằng T+1 không Công đoạn này đảm bảo cho U rằng khoá session K đãđược truyền thành công đến V vì K đã được dùng để tạo ra m4
Điều quan trọng cần lưu ý là các chức năng khác nhau của các thôngbáo dùng trong giao thức, m1 và m2 dùng để bảo đảm an toàn trong việctruyền khoá session Còn m3 và m4 dùng để khẳng định khoá, nghĩa là chophép U và V có thể thuyết phục nhau rằng họ sở hữu cùng một khoá session
K Trong hầu hết các sơ đồ phân phối khoá, sự khẳng định khoá đựoc coi nhưmột đặc tính Thường thì nó được thực hiện tương tự kiểu Kerobos, U dùng K
để mã ID(U) và T dùng để mã trong m2 Tương tự, V dùng K để mã T+1
Mục đích của thời gian hệ thống T và thời hạn L để ngăn đối phươngtích cực khỏi “lưu” thông báo cũ nhằm tái truyền lại sau này (đây được gọi làkiểu tấn công lại - relay attack) Phương pháp này hiệu quả vì các khoá khôngđược chấp nhận là hợp lệ một khi chúng quá hạn
Một trong hạn chế của Kerobos là mọi người sử dụng trong mạng đềuphải có đồng hồ đồng bộ với nhau vì cần có thời gian hiện tại để xác địnhkhoá session K cho trước là hợp lệ Thực tế, rất khó có được sự đồng bộ hoànhảo nên phải cho phép có khoảng thay đổi nào đó về thời gian
Trang 271.2.2 Mã hóa và giải mã
Mã hóa
Giả sử Bob muốn gửi đoạn thông tin M cho Alice Đầu tiên Bob chuyển
M thành một số m<n theo một hàm có thể đảo ngược (từ m có thể xác định lạiM) được thỏa thuận trước
Lúc này Bob có m và biết n cũng như e do Alice gửi Bob sẽ tính c làbản mã hóa của m theo công thức:
c = mc mod nHàm trên có thể tính dễ dàng sử dụng phương pháp tính hàm mũ (theomôđun) bằng (thuật toán bình phương và nhân) Cuối cùng Bob gửi c choAlice
Giải mã
Alice nhận c từ Bob và biết khóa bí mật d Alice có thể tìm được m từ ctheo công thức sau:
m = cd mod nBiết m, Alice tìm lại M theo phương pháp đã thỏa thuận trước Quá trìnhgiải mã hoạt động vì ta có:
Giả sử Bob chọn p = 101 và q = 113 Khi đó n = 11413 và (n) = 100 x
112 = 11200 Vì 11200 = 26527, nên có thể dùng một số nguyên b như một số
mũ hóa khi và chỉ khi b không chia hết cho 2,5 hoặc 7 (Vì thế trong thực tếBob sẽ không phân tích (n)), anh ta sẽ kiểm tra điều kiện UCLN((n), b) = 1
Trang 28bằng thuật toán Euclide Giả sử Bob chọn b = 3533, khi đó theo thuật toánEuclide mở rộng:
b-1 = 6597 mod 11200Bởi vậy, số mũ mật để giải mã của Bob là a = 6597
Bob sẽ công bố n = 11413 và b = 3533 trong một danh bạ Bây giờ, giả
sử Alice muốn gửi bản rõ 9726 tới Bob Cô ta sẽ tính
97263533 mod 11413 = 5761Rồi gửi bản mã 5761 trên kênh Khi Bob nhận được bản mã 5761, anh ta
sử dụng số mũ a mật để tính:
57616597 mod 11413 = 9726
Độ mật của hàm RSA được dựa trên giả thiết là hàm mã ek(x) = xb mod n
là hàm một chiều Bởi vậy thám mã sẽ không có khả năng về mặt tính toán đểgiải mã một bản mã Cửa sập cho phép Bob giải mã được chính là thông tin
về phép phân tích thừa số n (n = pq) Vì Bob biết phân tích này, anh ta có thểtính (n) = (p -1)(q -1) và rồi tính số mũ giải mã a bằng cách sử dụng thuậttoán Euclide mở rộng
1.2.3 Chữ ký số, Hàm Băm
Thông thường khi nhận được một văn bản bằng giấy, các vấn đề sau đâyđược đặt ra và cần được giải quyết với người nhận:
Ai là người gửi văn bản này?: Kiểm tra họ, tên người ký văn bản
Nội dung văn bản trong quá trình gửi có bị thay đổi hay không?: xemcác chữ ký nháy trên từng trang, tính liên tục của số trang…
Người viết có thể phủ nhận nội dung văn bản không?: kiểm tra chữ kýcủa người ký gửi văn bản có còn nguyên trạng không?
Những vấn đề này cũng xảy ra và cần được giải quyết trong quá trìnhtrao đổi thông tin điện tử (như thư điện tử, file dữ liệu….) và đó gọi là
Tính xác thực – Authentication
Trang 29 Tính toàn vẹn dữ liệu – Integrity
Tính chống chối bỏ - Non – repudiation
Tính bí mật – Privacy
Qua trình giải quyết 4 vấn đề trên được sử lý như sau:
Đoạn dữ liệu cần được bảo mật được đưa qua hàm băm (hashing), kếtquả của hàm băm là một đoạn bit đảm bảo 2 tính chât
oTính duy nhât: Mỗi một đoạn dữ liệu khác nhau thì sẽ có mộtđoạn bit khác nhau, không trung lặp, có độ dài không đổi
oTính một chiều: từ đoạn bit đặc trưng này, không suy ngược lạiđược nội dung đoạn văn
Đoạn bit đặc trưng này được mã hóa bằng khóa bí mật của người gửi và được đính kèm vào “văn bản”, rồi gửi đến người nhận; đoạn bít được mã hóa này chính là chữ ký số (digital signature)
Hình 1.9 Mô tả quá trình ký, xác thực chữ ký
Môi trường truyền
Bản Rõ
Hàm Băm
Kết Luận
Kết quả băm văn bản
Kết quả giải mã chữ ký
Khóa công khai Bob
Trang 30Từ phía người nhận, khi nhận được “văn bản” kèm chữ ký số, tiến trìnhkiểm tra sẽ như sau:
Lấy đoạn dữ liệu gốc, đưa qua hàm băm đã nói ở trên, thu được mộtđoạn bit là kết quả hàm băm
Lấy đoạn bit được mã hóa (chữ ký số), giải mã bằng khóa công khaicủa người gửi, thu được đoạn bit đặc trưng
So sánh đoạn bit vừa thu được với đoạn bit thu được trong bước 1, nếu
2 đoạn trùng nhau và tin rằng khóa công khai chắc chắn là do người gửi pháthành thì kết luận:
oDữ liệu nhận được có tính toàn ven (vì kết quả băm là duy nhất,một chiều)
oDữ liệu nhận dược là do chính người gửi gửi đi vì chỉ duy nhấtanh ta mới có khóa bí mật phù hợp với khóa công khai đã được sửdụng để giải mã Như vậy tính chống từ chối và tính xác thực đượckiểm tra và xác nhận Lúc này người nhận tin rằng, khóa công khai
đó đại diện hợp pháp cho người gửi
Sau khi ký “văn bản” nếu cần thiết phải cho vào “phong bì” nhằm bảođảm tính bí mật khi gửi đi, toàn bộ dữ liệu gốc và chữ ký có thể được đưa vào
mã hóa bằng khóa đối xứng, chìa khóa của mã khóa đối xứng được mã mộtlần bởi khóa công khai của người sẽ nhận “văn bản” Khi nhận được, ngườinhận sẽ sử dụng khóa bí mật mình đang sở hữu để giải mã và lấy được khóa
mã, tiếp tục sử dụng khóa mã này sẽ giải mã được văn bản Như vậy, tính bímật của giao dịch sẽ được đảm bảo từ người gửi đến người nhận
Sơ đồ chữ ký số được định nghĩa như sau:
Sơ đồ gồm bộ năm thành phần (P, A, K, S, V), trong đó:
1 P là một tập hữu hạn các văn bản có thể
2 A là một tập hữu hạn các chữ ký có thể
Trang 313 K là một tập hữu hạn các khóa có thể
4 S là tập các thuật toán ký
5 V là tập các thuật toán kiểm thử
Với mỗi k K, có một thuật toán sigk S, sigk: PA là một thuật toánkiểm thử Verk V, Verk: PA {Đúng, Sai} thỏa mãn điều kiện sau đâyvới x P, y A:
RSA cũng là một thuật toán được dùng nhiều cho mục đích ký số Ngoài
ra, còn có một số thuật toán công khai khác được dùng để ký số, ví dụ nhưchuẩn chữ ký số DSS
Tuy nhiên, vấn đề đặt ra là: khóa công khai đó có đúng là của người gửivăn bản không, và ai là người chứng thực vấn đề này?
Trong đó, vai trò của khóa công khai của người gửi có thể được coi nhưchữ ký mẫu của người gửi khi làm việc với văn bản giấy, chữ ký mẫu nàyđược công nhận và công bố công khai trong toàn hệ thống giao dịch điện tử
Hàm băm
Việc sử dụng các hệ mật mã và sơ đồ chữ ký thường là mã hóa và ký sốtrên từng bit của thông tin, thời gian để mã hóa và ký sẽ tỷ lệ thuận với dunglượng của thông tin Thêm vào đó có thể xảy ra trường hợp: với nhiều bứcthông điệp đầu vào khác nhau, sử dụng hệ mật mã, sơ đồ ký số giống nhau (cóthể khác nhau) thì cho ra kết quả bảng mã, bản ký số giống nhau (ánh xạ N –1; nhiều – một Điều này sẽ dẫn đến một số rắc rối về sau cho việc xác thựcthông tin
Các sơ đồ ký số thường chỉ được sử dụng để ký các bức thông điệp(thông tin) có kích thước nhỏ và sau khi ký, bảnký số có kích thước gấp đôibản thông điệp gốc – ví dụ với sơ đồ chữ ký chuẩn DSS ký trên các bức thôngđiệp có kích thước 160 bit, bản ký số sẽ có kích thước 320 bits Trong khi đó
Trang 32trên thực tế, ta cần phải ký các thông điệp có kích thước lớn hơn nhiều, chẳnghạn như vài chục MegaByte.
Hơn nữa, để đáp ứng yêu cầu xác thực sau khi thông tin đến người nhận,
dữ liệu truyền qua mạng không chỉ là bản thông điệp gốc, mà còn bao gồmbản ký số (có dung lượng gấp đôi dung lượng bản thông điệp gốc) Một cáchđơn giản để giải quyết vấn đề trên ( với thông điệp có kích thước lớn) này làchặt thông điệp thành nhiều đoạn 160 bits, sau đó ký lên các đoạn đó độc lậpnhau Nhưng sử dụng biện pháp này sẽ có một số vấn đề gặp phải trong việctạo ra chữ ký số:
- Thứ nhất: Với thông điệp có kích thước a, thì sau khi ký kích thướccủa chữ ký sẽ là 2a (trong trường hớpử dụng DSS)
- Thứ hai: Với các chữ ký “an toàn” thì tốc độ chậm vì chúng dùngnhiều phép tính số học phức tạp như số mũ modulo
- Thứ ba: Vấn đề nghiêm trọng hơn đó là kết quả sau khi ký, nộidung của thông điệp có thể bị xáo trộn các đoạn với nhau, hoặc một
số đoạn trong chúng có thể bị mất mát, trong khi người nhận cần xácminh lại thông điêp Do đó, ta cần phải bảo đảm tính toàn vẹn củathông điệp
Giải pháp cho các vấn đề vướng mắc đến chữ ký số là dùng hàm băm đểtrợ giúp cho việc ký số
Hàm băm – hiểu theo một nghĩa đơn giản là hàm cho tương ứng mộtmảng dữ liệu lớn với một mảng dữ liệu nhỏ hơn – được sử dụng rộng rãitrong nhiều ứng dụng khác nhau của tin học, không chỉ thuộc phạm vi mật mãhọc
Hàm băm được đề cập đến trong phạm vi luận văn là hàm băm mộtchiều, có tác dụng trợ giúp cho các sơ đồ ký nhằm làm giảm dung lượng của
dữ liệu cần thiết để truyền qua mạng Hàm băm ở đây được hiểu là các thuật
Trang 33toán không sử dụng khóa để mã hóa (ở đây ta dùng thuật ngữ “băm” thay cho
“mã hóa”), nó có nhiệm vụ băm thông tin được đưa vào theo một thuật toán hmột chiều nào đó, rồi đưa ra một văn bản – văn bản đại diện – có kích thước
cố định Giá trị của hàm băm là duy nhất và không thể suy ngược lại nội dungthông điệp từ giá trị băm này Hàm băm một chiều h có một số đặc tính quantrọng sau:
- Với thông điệp đầu vào x thu được bản băm z = h(x) là duy nhất
- Nếu dữ liệu trong thông điệp x thay đổi hay bị xóa để thành thôngđiệp x’ thì h (x’) khác h (x) Cho dù chỉ là một sự thay đổi nhỏ haychỉ là xóa đi 1 bit dữ liệu của thông điệp thì giá trị băm cũng vẫn thayđổi Điều này có nghĩa là hai thông điệp hoàn toàn khác nhau thì giátrị hàm băm cũng khác nhau
- Nội dung của thông điệp gốc không thể bị suy ra từ giá trị hàm băm.Nghĩa là: với thông điệp x thì dễ dàng tính được z = h(x), nhưng lạikhông thể (thực chất là khó) suy ngược lại được x nếu chỉ biết giá trịhàm băm h(x)
Một số thuật toán băm được biết đến nhiều là hàm băm dòng và hàmbăm chuẩn như: [MD2], [MD4], [MD5], [SHA-1]…
1.2.4 Chứng chỉ số và giải pháp quản lý
1.2.4.1 Chứng chỉ số
Để giải quyết vấn đề “khóa công khai đó có đúng là của ngưởi gửi vănbản không và ai là người chứng thực vấn đề này?”, về mặt công nghệ, vấn đềđược giải quyết như sau:
Xây dựng một hệ thống tập trung làm nhiệm vụ chứng thực, cấpphát cặp khóa bí mật – công khai cho người sử dụng (Gắn thông tin cá nhânnhư họ tên, cơ quan, … của người sở hữu cặp khóa vào phần khóa công khaitạo thành một file dữ liệu, đây chính là phần nội dung của chứng chỉ số)
Trang 34 Để đảm bảo tính toàn vẹn và tin cậy của file dữ liệu này, hệ thốngphát hành sử dụng khóa bí mật của mình khởi tạo chữ ký điện tử và đính kèmlên file dữ liệu trên tạo ra chứng chỉ số (digital certificate) cho người sở hữucặp khóa.
Hệ thống cung cấp và chứng thực khóa đó đại diện cho người thamgia giao dịch được gọi là hệ thống chứng thực số (Certificate Authority – CA)
Tất cả các bên giao dịch muốn kiểm tra tính đúng đắn, hợp lệ về nộidung của chứng chỉ số đều xuất phát từ việc tin cậy vào chữ ký số của CAtrên chứng chỉ số (điều này cũng hoàn toàn tự nhiên như khi ta xem xét mộtchứng minh thư nhân dân để tin cậy vào một cá nhân, ta tin cậy vào chữ ký vàdấu của người ký chứng minh thư đó) Như vậy, có thể thấy rằng:
Chứng chỉ số có ba thành phần chính:
Thông tin cá nhân của người được cấp
Khóa công khai (Public Key) của người được cấp
Chữ ký số của CA cấp chứng chỉ
Chứng thực điện tử có các chức năng chính sau:
Tính xác thưc: Đảm bảo được thực thể hợp pháp
Tính toàn vẹn dữ liệu: Xác định được thông tin nhận được cóđúng như thông tin gửi đi không hay đã bị thay đổi
Tính không chối bỏ: Chứng thực điện tử đảm bảo cho người sửdụng không thể chối bỏ về các dữ liệu của mình đã gửi
Tính bí mật: Mã hóa thông tin gửi đi trên mạng, đảm bảo bí mậtthông tin
Với những tính năng như vậy chứng thực điện tử được sử dụng trongkhá nhiều ứng dụng như:
- Ký vào tài liệu điện tử
- Thư điện tử bảo đảm
Trang 35- Thương mại điện tử
- Bảo vệ mạng không dây (WLAN – Wireless Lan Area Network)
- Bảo đảm an toàn cho máy chủ và các dịch vụ Web
- Chứng chỉ Pretty Good Privacy (PGP)
- Chứng chỉ thuộc tính (Attribute Certifcates – AC)
Tất cả các loại chứng chỉ này đều có cấu trúc định dạng riêng Hiệnnay chứng chỉ khóa công khai X.509 được sử dụng phổ biến trong hầu hết các
hệ thống PKI Hệ thống chương trình cấp chứng chỉ số thử nghiệm cũng sửdụng định dạng chứng chỉ theo X.509
Chứng chỉ khóa công khai X.509
Chứng chỉ X.509 v3 là định dạng chứng chỉ phổ biến và được hầu hếtcác nhà cung cấp sản phẩm PKI triển khai
Chứng chỉ khóa công khai X.509 được Hội viễn thông quốc tế (ITU)đưa ra lần đầu tiên vào năm 1988 như là một bộ phận có dịch vụ thư mụcX.500
Chứng chỉ gồm hai phần Phần đầu là những trường cơ bản cần thiếtphải có trong chứng chỉ Phần thứ hai thêm một số trường phụ, những trườngnày được gọi là trường mở rộng dùng để xác định và đáp ứng những yêu cầu
bổ sung của hệ thống Khuôn dạng của chứng chỉ X.509 được chỉ ra tronghình 1.10
Version number Seriant number
Trang 36Signature Issuer Validity Period Subject
Subject Public key Information Issuer Unique ID
Subject Unique ID Extensions
Hình 1.10 Khuôn dạng chứng chỉ X.509
Những trường cơ bản của chứng chỉ X.509
Version: Xác định sô phiên bản của chứng chỉ
Certificate serianl Number: Do CA gán, là định danh duy nhất củachứng chỉ
Signature Algorithm ID: Chỉ ra thuật toán CA sử dụng để ký trênchứng chỉ (thuật toán RSA, DSA,…)
Issuer Unique ID (Optional): là trường không bắt buộc, trường nàycho phép sử dụng tại tên người cấp Trường này hiếm được sử dụng trongtriển khai thực tế
Trang 37 Subject Unique ID (Optional): Là trường tùy chọn cho phép sửdụng lại tên của Subject khi quá hạn Trường này cũng ít được sử dụng.
Extension (Optional): Chỉ có trong chứng chỉ v.3
Certification Authority’s Digital Signature: Chữ ký số của CA đượctính từ những thông tin trên chứng chỉ với khóa riêng và thuật toán ký sốđược chỉ ra trong trường Signature Algorithm Identifier của chứng chỉ
Tính toàn vẹn của chứng chỉ được đảm bảo bằng chữ ký số của CAtrên chứng chỉ Khóa công khai của CA được phân phối đến người sử dụngchứng chỉ theo một cơ chế bảo mật trước khi thực hiện các thao tac PKI.Người sử dụng kiểm tra hiệu lực của chứng chỉ được cấp với chữ ký của CA
và khóa công khai của CA
Những trường mở rộng của chứng chỉ X.509
Phần mở rộng là những thông tin về các thuộc tính cần thiết được đưavào để gắn những thuộc tính này với người sử dụng hay khóa công Nhữngthông tin trong phần mở rộng thường được dùng để quản lý xác thực phâncấp, chính sách chứng chỉ, thông tin về chứng chỉ bị thu hồi… Nó cũng cóthể được sử dụng để định nghĩa phần mở rộng riêng chứa những thông tin đặctrưng cho cộng đồng nhất định Mỗi trường mở rộng trong chứng chỉ đượcthiết kế với cờ “critical” hoặc “unuritical”
Authority Key Indentifier: Chứa ID khóa công khai của CA, ID này
là duy nhất và được dùng để kiểm tra chữ ký số trên chứng chỉ Nó cũng được
sử dụng để phân biệt giữa các cặp khóa do CA sử dụng (trong trường hợp nếu
CA có nhiều hơn một khóa công khai) Trường này được sử dụng cho tất cảcác chứng chỉ tự ký số (CA – Certificates)
Subject key Identifier: Chứa ID khóa công khai có trong chứng chỉ
và được sử dụng để phân biệt giữa các khóa nếu như có nhiều khóa được gắn
Trang 38vào trong cùng chứng chỉ của người sử dụng (Nếu chủ thể có nhiều hơn mộtkhóa công khai).
Key Usage: Chứa một chuỗi bít được sử dụng để xác định (hoặchạn chế) chức năng hoặc dịch vụ được hỗ trợ qua việc sử dụng khóa côngkhai trong chứng chỉ
Extended Key Usage: Chứa một hoặc nhiều OIDs (định danh đốitượng – Object Identifier) để xác định cụ thể việc sử dụng khóa công trongchứng chỉ Các giá trị có thể là (1) xác thực sever TLS, (2) xác thực clientTLS, (3) Ký mã, (4) bảo mật e – mail, (5) tem thời gian
CRL Ditribution Point: Chỉ ra vị trí CRL tức là nơi hiện có thôngtin thu hồi chứng chỉ Nó có thể là URI (Uniform Resource Indicator), địa chỉcủa X.500 hoặc LDAP server
Private Key Usage Period: Trường này có biết thời gian sử dụngcủa khóa riêng gắn với khóa công khai trong chứng chỉ
Certificate Policies: Trường này chỉ ra dãy các chính sách OIDs gắnvới việc cấp và sử dụng chứng chỉ
Policy Mapping: Trường này chỉ ra chính sách thực tương đươnggiữa hai miền CA Nó được sử dụng trong việc xác thực chéo và kiểm trađường dẫn chứng chỉ Trường này chỉ có trong chứng chỉ CA
Subject Attributes Name: chỉ ra những dạng tên lựa chọn gắn vớingười sở hữu chứng chỉ Những giá trị có thể là: địa chỉ e – mail, địa chỉ IP,địa chị URI…
Issuer Alternative Name: chỉ ra những dạng tên lựa chọn gắn vớingười cấp chứng chỉ
Subject Directory Attributes: trường này chỉ ra dãy các thuộc tínhgắn với người sử hữu chứng chỉ Trường mở rộng này không được sử dụngrộng rãi Nó được dùng để chứa những thông tin liên quan đến đặc quyền
Trang 39 Basic Constraints Field: Trường này cho biết đây có phải là chứngchỉ CA hay không bằng các thiết lập giá trị logic (true) Trường này chỉ cótrong chứng chỉ CA.
Chứng chỉ CA dùng để thực hiện một số chức năng Chứng chỉ này cóthể là một trong hai dạng Nếu CA tạo ra chứng chỉ để tự sử dụng, chứng chỉnày được gọi là chứng chỉ CA tự ký Khi một CA mới được thiết lập, CA tạo
ra một chứng chỉ CA tự ký để ký lên chứng chỉ của người sử dụng cuối trong
hệ thống Và dạng thứ hai là CA cấp chứng chỉ cho những CA khác trong hệthống
Path Length Constraint: Trường này chỉ ra tối đa của đường dẫnchứng chỉ có thể được thiết lập Giá trị “zero” chỉ ra rằng CA chỉ có thể cấpchứng chỉ cho thực thể cuối, không cấp chứng chỉ cho những CA khác.(trường này chỉ có trong chứng chỉ của CA)
Name Constriansts: được dùng để bao gồm hoặc loại trừ các nhánhnhững miền khác nhau trong khi thiết lập môi trường tin tưởng giữa các miềnPKI
Policy Constraints: được dùng để bao gồm hoặc loại trừ một sốchính sách chứng chỉ trong khi thiết lập môi trường tin tưởng giữa các miềnPKI
Trang 40Hình 1.11 Nội dung chi tiết một chứng chỉ số được cấp bởi trung tâm CA
Phòng TNTDATTT
1.2.4.2 Thu hồi chứng chỉ
Trong một số trường hợp như khóa bị xâm hại hoặc người sở hữuchứng chỉ thay đổi vị trí, cơ quan … thì chứng chỉ đã được cấp không có hiệulực Do đó, cần phải có một cơ chế cho phép người sử dụng chúng chỉ kiểmtra được trạng thái thu hồi chứng chỉ X.509 cho phép kiểm tra chứng chỉtrong các trường hợp sau:
- Chứng chỉ không bị thu hồi
- Chứng chỉ đã bị CA cấp thu hồi
- Chứng chỉ do một tổ chức có thẩm quyền mà CA ủy thác có tráchnhiệm thu hồi chứng chỉ thu hồi