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ăm2000 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ứngchỉ 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 đượcgiá trị của PKI) Mặc dù vậy, sau một thời gian, PKI lại trở thành một trongnhữ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à khicác công nghệ truyền thông di động trở thành một ngành kinh doanh chodoanh nghiệp, điều đó có nghĩa rằng các chứng chỉ và PKI đã sẵn sàng choxu 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ểnhạ 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 đó:
P là tập hữu hạn các bản rõ có thểC là tập hữu hạn các bản mã có thểK là tập hữu hạn các khóa có thểE là tập hữu hạn các hàm lập mãD là tập các hàm giải mã
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ànbộ 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ứng
Chuẩ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ảnrõ đầ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ứ bavà kết quả của quá trình giải mã trên để mã hóa:
C = EK3(DK2(EK1(P)))P = DK1EK2(DK3(C)))
Môi trường truyền
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ộthệ 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ậtmã 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óaK 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ấtkỳ 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ướcvề khóa mật) bằng cách dùng luật mã công khai ek Bob sẽ là người duy nhấtcó 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ừasố 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ấtcả 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áchệ 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
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 = ZnTa đị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ã RSA
Khả 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ếu2 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ìmsố m sao cho me = c mod n, trong đó (e,n) chính là khóa công khai và c là bảnmã 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óa4096 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ănbả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ớnbằ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
K={(n , p , q , B): 0 B n-1}Với K = (n , p , q , B) ta định nghĩa:
ek(x) = x( x+B) mod n và
Các giá trị n và B được công khai trong khi p và q được giữ kín.
Môi trường truyền
Khóa mật
Khóa mật
Khóa mật
Khóa bí mật của
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ạibỏ 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 moduloq 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à moduloq 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 haivà 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) C(mod p)
Ở đây ta lại một lần nữa sử dụng tiêu chuẩn Eucler, hai tiêu chuẩn nàyphát biểu rằng, nếu C là một thặng dư bậc hai theo modulo p thì:
C(p+1)/2 1(mod p).
Vì thế , hai căn bậc hai của C modulo p là ±C(p+1)/4mod p Tương tự,hai căn bậc hai của C modulo q là ±C(p+1)/4mod q Sau đó ta có thể thu đượcbốn căn bậc hai của x1 của C modulo n bằng cách dùng định lý phần dưChina.
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ặngdư 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ảimã 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ảnmã 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ó đúnglà 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ủanó 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.
- Tạm dừng hay kích hoạt chứng chỉ.- Thẩm định các client PKI
1.2.1 Sinh khóa, phân phối khóa
1.2.1.1 Sinh khóa:
Giả sử Alice và Bob cần trao đổi thông tin bí mật thông qua một kênhkhông an toàn (ví dụ như Internet) Với thuật toán RSA, Alice đầu tiên cầntạo ra cho mình cặp khóa gồm khóa công khai và khóa bí mật theo các bướcsau:
B1 Chọn 2 số nguyên tố lớn p và q với p ≠ qB2 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ênmà 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áchệ 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ườisử 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ểuan 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ườisử 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ảmtừ 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ấtkì 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 TAsẽ 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 21f(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:
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 p4 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ườisử 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 Usẽ 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ínhhọ 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.
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ủaTA để đả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 Tvà 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ùngdk để 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 U6 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 xemT và ID(U) nhận được từ m2 và m3 có như nhau không Điều này đảm bảo choV 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á sessionK 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ểnM 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 n
Hà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.
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
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 đínhkè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
Khóa mật của Bob
Bob ký
Hàm Băm
Kết quả băm văn
Hàm Băm
Kết quả băm vă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ếu2 đ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àomã 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óamã, 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àira, 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ộtsố đ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ủadữ 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ướccố đị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áchệ 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ầubổ 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 numberSeriant number
Trang 36Validity PeriodSubject
Subject Public key InformationIssuer Unique ID
Subject Unique IDExtensions
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 CAvà 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àylà duy nhất và được dùng để kiểm tra chữ ký số trên chứng chỉ Nó cũng đượcsử 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ếuCA 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ạora một chứng chỉ CA tự ký để ký lên chứng chỉ của người sử dụng cuối tronghệ 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 CAPhò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.