Luận Văn: Giới thiệu chung về ATM
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ệt nam 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ách hành chính, nhu cầu hội nhập quốc tế, an ninh kinh doanh của các doanh nghiệ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ệp cò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 ứng dụng Tuy nhiên việc ứng dụng chỉ nằm trong phạm vi một tổ chức hoặc một nhó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ài toá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á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, giới thiệu một số mô hình giao tiếp trong hệ thống liên trung tâm xác thực Xây dựng thành công mô hình trung tâm xác thực ứng dụng trong phạm vi doanh nghiệp vừ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âm xá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úc trung 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ạm dừng, khôi phục chứng chỉ, xác thực chứng chỉ số đa cấp và các trung tâm ngang 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 trung tâ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 động tươ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ột hà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ột chuỗ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ũng như giải mã Trước khi hai phía trao đổi dữ liệu, khóa phải được chia sẻ giữa chúng Sau đó phía gửi mã hóa bản tin ban đầu sử dụng khóa riêng đó và gửi bản tin đã được mã hóa cho phía nhận Tại phía nhận bản tin mã hóa được giả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ách dùng chung khóa đó là người gửi cung cấp khóa mã cho đích danh người nhậ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ời gian 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êu chuẩ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ên thế giới Hiện tại DES không còn được đánh giá cao do kích thước của khóa quá 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:
C = EK3(DK2(EK1(P)))P = DK1EK2(DK3(C)))
Môi trường
Mã Key BảnRõ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ẫu nhiê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ếu cầ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ối hay bằng thuật toán sinh khóa như đã nêu ở trên thì vấn đề phân phối và thỏa thuậ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 đối xứ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 được nghiê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ằng cách công bố nó trong một danh bạ (bởi vậy nên có thuật ngữ hệ mật khóa cô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ủa mình.
Có thể hình dung tương tự như sau Alice đặt một vật vào một họp kim 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ủa khó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ì do Rivest 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úng dự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ổng cá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
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ực và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 = y thì 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 theo modulo p thì ta được một số trong nhóm đó Quá trình này được gọi là lũy thừ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ên trong 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ệp chấ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ủa thuậ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ài toá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 ra thừ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ật toá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 trong thời gian đa thức (polynomial – time) Tuy nhiên người ta cũng chưa chứng minh đượ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ủa RSA có độ dài từ 1024 đến 2048 bits Một số chuyên gia cho rằng khóa 1024 bits 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ài giờ 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 521 bits, 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ột thié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 ta khuyế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ính lượ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 Tuy nhiên, máy tính lượng tử vẫn chưa thể phát triển được tới mức độ này trong nhiề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ách mạng trong công nghệ an toàn thông tin điện tử Nhưng thực tiễn triển khai cho 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 khai chậ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ách tấ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à ( )
dK = + −
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
AliceNhận
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ột modulo n Giả sử xєZn Ta kiểm tra các phương trình sau:
+
+=
+
( )xe
+=
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 chung Bob 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)
thì có thể viết lại phương trình đồng dư như sau:
x1 ≡ C (mod n)
Trang 14Như vậy phép giải mã sẽ chỉ còn là thực hiện phép khai căn bậc hai theo 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)
Có 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ết hợ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ông giú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ậc hai 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) ≡ 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ày phá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 được bố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ặng dư bậc hai theo modulo p Tuy nhiên, vẫn có thuật toán Las Vegas với thời gian đ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ình x=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:
( )
dK = − −
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ào việ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ính nhược điểm này làm cho các hệ mật mã khóa công khai khó được dùng một cá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ác khóa sử dụng trong quá trình mã (khóa công khai) được công bố một cách cô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ý để đảm bả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ênh không an toàn (ví dụ như Internet) Với thuật toán RSA, Alice đầu tiên cần tạo ra cho mình cặp khóa gồm khóa công khai và khóa bí mật theo các bước sau:
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ủa mì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 n bằ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ần dù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án cũ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àn Rand 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 p hay q thì chúng có thể dễ dàng tìm ra nửa còn lại (theo nghiên cứu của Donald 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ông còn được sử dụng do có thể tạo nên những lỗ hổng Giá trị thường dùng hiện nay là 65537 vì được xem là đủ lớn và cung không quá lớn ảnh hưởng tới việc thự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 Trong một số sơ đồ, ta có người uỷ quyền được tín nhiệm (TA) để đáp ứng những việ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 đối phương Đối phương (Oscar) có thể là người bị động, có nghĩa là hành động của anh ta chỉ hạn chế ở mức nghe trộm bức điện truyền trên kênh Song mặt khác, anh ta có thể là người chủ động Một đối phương chủ động có thể làm nhiề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êu sau đâ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ương chọ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ác nà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ặp ngườ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ông xả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àn khô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 -1 khoá và TA cần truyền tổng cộng ( )n
2 khoá một cách an toàn (đôi khi bài toán nà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ực tế.
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ên mạ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ô ta yê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 2
khoá và đưa mỗi khoa cho
duy 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 đi cá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ừ 2
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ụng khác) Như vậy, điều cần quan tâm là cố gắng giảm được lượng thông tin cần truyề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ầu nà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ận tiệ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ước lớ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 -1 trong 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à
Trang 21ngườ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 W≠U,V Sơ đồ Blom với k=1 được đưa ra như 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 = 4
1 Số nguyên tố P công khai, còn với mỗi người sử dụng U phần tử rU∈Zp là công khai Phần tử rU phải khác biệt.
2 Ta chọn 3 phần tử ngẫu nhiên a,b,c∈Zp (không cần khác biệt) và thiết lập đa thức:
f(x,y) = a + b(x+y) +cxy mod p3 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 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 22KV,W = KW,V = 10Khi đó U tính KU,V như sau:
gU(rV) = 7 + 14×7 mod 17 = 3Và V tính KV,U
gV(rU) = 6 + 4×12 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ến của giao thức trao đổi khóa Diffie – Hellman và gọi nó là sơ đồ phân phối trướ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ực hiện nó trên nhóm hữu hạn bất kỳ, trong đó bài toán logarihm rời rạc không giả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ũng như 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ý Để đơn giả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ách dù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))
Trang 23Trong đó bU được thiết lập theo mô tả ở phần trên (chú ý rằng TA khô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ữ liệ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:
pbaU
Trang 24Còn V tính cũng khóa đó:
Ta 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ệu quả 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ụng nà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 khi cho trước αaU mod p và αaV mod p thì có khả năng tính được αaVaU mod p khô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 đối phươ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ác như 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ời rạ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ần trước đó, mỗi cặp người sử dụng cần tính một khoá cố định Nếu dùng cùng một khoá trong một thời gian dài sẽ dễ bị tổn thương, vì thế người ta thường thí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ươi mớ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ần phải lưu các khoá khi muốn liên lạc với những người sử dụng khác (Tuy 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: βlogαγ mod p(=γlogαβ mod p)
Trang 25nhiê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.
Korobos 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ời gian 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ã d để tính K, T, L và ID(V) từ mKU 1, và tính:m3 = eK (ID(U),T)
Sau đó gửi m2, m3 đến V
5. V dùng hàm giải mã d để tính K, T, L và ID(U) từ mKV 2, 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
Trang 26TA tạo ra K, T và L trong bước 2 Trong bước 3, thông tin này cùng vớ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 U cũng kiểm tra khoá session K được phát ra cho liên lạc giữa U và V bằng cá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ông báo dùng trong giao thức, m1 và m2 dùng để bảo đảm an toàn trong việc truyền khoá session Còn m3 và m4 dùng để khẳng định khoá, nghĩa là cho phé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ương tí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à
Trang 27kiể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 đều phải có đồng hồ đồng bộ với nhau vì cần có thời gian hiện tại để xác định khoá session K cho trước là hợp lệ Thực tế, rất khó có được sự đồng bộ hoàn hảo nên phải cho phép có khoảng thay đổi nào đó về thời gian
Trang 281.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ại M) đượ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ũ (theo môđun) bằng (thuật toán bình phương và nhân) Cuối cùng Bob gửi c cho Alice.
Mặt khác p,q là 2 số nguyên tố cùng nhau, nên theo định lý số dư Trung Quốc, ta có: med ≡ m (mod pq) hay cd ≡ m (mod n)
Ví dụ:
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ế
Trang 29Bob sẽ không phân tích φ(n)), anh ta sẽ kiểm tra điều kiện UCLN(φ(n), b) = 1 bằng thuật toán Euclide Giả sử Bob chọn b = 3533, khi đó theo thuật toán Euclide 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?: xem các chữ ký nháy trên từng trang, tính liên tục của số trang…
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ình trao đổi thông tin điện tử (như thư điện tử, file dữ liệu….) và đó gọi là
Trang 30• Tính xác thực – Authentication
• 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ết quả của hàm băm là một đoạn bit đảm bảo 2 tính chât
o Tí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
o Tí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
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 31Từ phía người nhận, khi nhận được “văn bản” kèm chữ ký số, tiến trình kiể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 khai củ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át hành thì kết luận:
o Dữ 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)
o Dữ liệu nhận dược là do chính người gửi gửi đi vì chỉ duy nhất anh 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 được kiể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ột lần bởi khóa công khai của người sẽ nhận “văn bản” Khi nhận được, người nhậ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 323 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: P→A là một thuật toán kiểm thử Verk ∈ V, Verk: P×A → {Đúng, Sai} thỏa mãn điều kiện sau đây vớ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ửi vă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 dung lượng của thông tin Thêm vào đó có thể xảy ra trường hợp: với nhiều bức thô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ực thô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 đôi bả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
Trang 33điệp có kích thước 160 bit, bản ký số sẽ có kích thước 320 bits Trong khi đó trê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ẳng hạ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ồm bả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ập nhau Nhưng sử dụng biện pháp này sẽ có một số vấn đề gặp phải trong việc tạo ra chữ ký số:
thước củ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ùng nhiều phép tính số học phức tạp như số mũ modulo.
dung 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ác minh lại thông điêp Do đó, ta cần phải bảo đảm tính toàn vẹn của thô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ột mả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ãi trong 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ột chiề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
Trang 34dữ liệu cần thiết để truyền qua mạng Hàm băm ở đây được hiểu là các thuật toá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 h mộ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 dung thô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 quan trọ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ỏ hay chỉ 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ại khô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àm bă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ăn bả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:
phát cặp khóa bí mật – công khai cho người sử dụng (Gắn thông tin cá nhân như họ tên, cơ quan, … của người sở hữu cặp khóa vào
Trang 35phần khóa công khai tạo thành một file dữ liệu, đây chính là phần nội dung của chứng chỉ số).
• Để đảm bảo tính toàn vẹn và tin cậy của file dữ liệu này, hệ thống phá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èm lên file dữ liệu trên tạo ra chứng chỉ số (digital certificate) cho người sở hữu cặp khóa.
Hệ thống cung cấp và chứng thực khóa đó đại diện cho người tham gia 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ội dung của chứng chỉ số đều xuất phát từ việc tin cậy vào chữ ký số của CA trê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ột chứ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
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.
đúng như thông tin gửi đi không hay đã bị thay đổi.
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ật thông tin.
Với những tính năng như vậy chứng thực điện tử được sử dụng trong khá nhiều ứng dụng như:
Trang 36- Ký vào tài liệu điện tử- Thư điện tử bảo đảm- 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ện nay 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ết cá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ục X.500.
Chứng chỉ gồm hai phần Phần đầu là những trường cơ bản cần thiết phải có trong chứng chỉ Phần thứ hai thêm một số trường phụ, những trường nà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 trong hình 1.10.
Trang 37Version numberSeriant numberSignature
Validity 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ủa chứng chỉ.
• Signature Algorithm ID: Chỉ ra thuật toán CA sử dụng để ký trên chứng chỉ (thuật toán RSA, DSA,…)
• Issuer: Chỉ ra CA cấp và ký trên chứng chỉ.
• Validity Period: Khoảng thời gian chứng chỉ có hiệu lực Trường này xác định thời gian chứngchỉ bắt đầu có hiệu lực và thời điểm hết hạn.
được xác nhận Tên của Subject phải duy nhất đối với mỗi thực thể CA xác nhận.
tham số liên quan; xác định thuật toán (ví dụ RSA hay DSA) được sử dụng cùng với khóa.
Trang 38• Issuer Unique ID (Optional): là trường không bắt buộc, trường này cho phép sử dụng tại tên người cấp Trường này hiếm được sử dụng trong triển khai thực tế.
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 được tí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 CA trên chứng chỉ Khóa công khai của CA được phân phối đến người sử dụng chứ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 đưa vào để gắn những thuộc tính này với người sử dụng hay khóa công Những thông tin trong phần mở rộng thường được dùng để quản lý xác thực phân cấ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 đặc trưng cho cộng đồng nhất định Mỗi trường mở rộng trong chứng chỉ được thiết kế với cờ “critical” hoặc “unuritical”.
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ử
Trang 39dụ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 vào trong cùng chứng chỉ của người sử dụng (Nếu chủ thể có nhiều hơn một khóa công khai).
hạn chế) chức năng hoặc dịch vụ được hỗ trợ qua việc sử dụng khóa công khai trong chứng chỉ.
tượng – Object Identifier) để xác định cụ thể việc sử dụng khóa công trong chứng chỉ Các giá trị có thể là (1) xác thực sever TLS, (2) xác thực client TLS, (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ông tin 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ụng củ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ắn với việc cấp và sử dụng chứng chỉ.
giữ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.
Trang 40• Subject Attributes Name: chỉ ra những dạng tên lựa chọn gắn với ngườ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ới người cấp chứng chỉ.
• Subject Directory Attributes: trường này chỉ ra dãy các thuộc tính gắn với người sử hữu chứng chỉ Trường mở rộng này không được sử dụng rộng rãi Nó được dùng để chứa những thông tin liên quan đến đặc quyền.
• Basic Constraints Field: Trường này cho biết đây có phải là chứng chỉ 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ẫn chứng chỉ có thể được thiết lập Giá trị “zero” chỉ ra rằng CA chỉ có thể cấp chứ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ánh những miền khác nhau trong khi thiết lập môi trường tin tưởng giữa các miền PKI.