Thí dụ: Mật mã RSA, được bắt đầu bằng thực hiện các phép tính để tạo ra một cặp khóa mã sau đó thực hiện mã hóa và giải mã. Bước đầu tiên trong việc tính các khóa là tìm hai số ngun tố có kích cỡ đủ lớn phù hợp với ứng dụng. Ta có bản tóm tắt q trình mật mã RSA.
Bên gửi biết Cơng khai Bên nhận biết
m e m e Các số nguyên tố: p,q m = p.q
Các khóa mã d,e nguyên tố với p-1, q-1 d.e = 1 (module k) k = BSCNN (p-1, q-1) Đoạn tin x y = xe (modulo m) Đã được mã hóa y Đã được giải mã x = yd (modulo m) Hình 3.9 Mơ tả tóm tắt q trình mật mã RSA.
Thí dụ: Bên nhận chọn hai số nguyên tố là p = 5 ; q = 7 . Tính m = p.q = 35
k = BSCNN (4,6) = 12
Chọn cặp mã e, d : Chọn 133 = e.d (modulo k) = e.d (modulo 12) = 1 Ta chọn e = 19 ; d = 7
Bên gửi mã hóa x và gửi cho người nhận y = xe (modulo m). Ta giả sử x = 2 , thì ta tính được y = 219 (modulo 35) = 524288 = 23. Giá trị y=23 này được gửi cho bên nhận.
Bên nhận giải mã bản tin nhận được:
x = yd (modulo 35). Thay số ta có mã giải được là x = 237 (modulo 35)= 3404825447(modulo 35) = 2.
Như vậy kết quả giải mã hồn tồn chính xác với kết quả đã gửi.
3.1.5.4 Ký hiệu số
Ký hiệu số (digital signature) là đoạn dữ liệu ngắn đính kèm với văn bản gốc để chứng thực tác giả của văn bản và giúp người nhận kiểm tra tính tồn vẹn của nội dung văn bản gốc. Chữ ký điện tử hoạt động dựa trên hệ thống mã hóa khóa cơng khai. Hệ thống mã hóa này gồm hai khóa, khóa bí mật và khóa cơng khai.
Mơ hình kí hiệu số và kiểm tra:
Hình 3.10 Mã hóa và kiểm tra kí hiệu số.
1. Dùng giải thuật băm để thay đổi thông điệp cần truyền đi. Kết quả ta được một bản phân tích. Dùng giải thuật MD5 (Message Digest 5) ta được bộ chuỗi có chiều dài 128-bit, dùng giải thuật SHA (Secure Hash Algorithm) cho ta bộ chuỗi có chiều dài 160-bit.
2. Sử dụng khóa riêng của người gửi để mã hóa bản phân tích thu được ở bước 1. Thơng thường ở bước này ta dùng giải thuật RSA. Kết quả thu được gọi là kí hiệu số của bản tin ban đầu.
3. Gộp kí hiệu số vào bản tin ban đầu. Công việc này gọi là “ký nhận” vào bản tin. Sau khi đã ký nhận vào bản tin, mọi sự thay đổi trên bản tin sẽ bị phát hiện trong giai đoạn kiểm tra. Ngoài ra, việc ký nhận này đảm bảo người nhận tin tưởng bản tin này xuất phát từ người gửi chứ không phải là người khác.
Các bước kiểm tra:
1. Dùng khóa chung của người gửi (khóa này được thơng báo đến mọi người) để giải mã chữ ký số của bản tin.
2. Dùng giải thuật (MD5 hoặc SHA) băm bản tin đính kèm.
3. So sánh kết quả thu được ở bước 1 và 2. Nếu trùng nhau, ta kết luận bản tin này không bị thay đổi trong quá trình truyền và bản tin này là của người gửi.
3.5.2.5 Kỹ thuật S/MIME
a. Giới thiệu kỹ thuật S/MIME
Việc thực hiện bảo mật thông tin có thể thực hiện trong SIP bằng cách thực hiện mã hóa hoặc là ký kiệu số bản tin SIP hoặc là thực hiện cả hai. Với việc bổ sung các nội dung (thực thể) cho bản tin SIP cùng với các khai báo về các trường header để thực hiện những kỹ thuật cần thiết để đảm bảo cho việc thực hiện bảo vệ thông tin trong SIP tớt hơn. S/MIME có nghĩa là đảm bảo MIME.
MIME là mở rộng hợp thư điện tử đa mục đích. Mục đích chính của việc mở rộng chuẩn này đó là để giải quyết vấn đề mã hóa và giải mã trong các khuôn dạng file khác nhau và đặc điểm ngôn ngữ.
Để sử dụng mã hóa, bản tin SIP lúc này phải chứa kiểu MIME là “multipart/signed” (đa phần/kí hiệu) và “application/pkcs7-mime”. Các kiểu này là dấu hiệu để nhận biết rằng bản tin SIP được mã hóa hay kí hiệu hoặc là vừa kí hiệu vừa mã hóa.
Trường header Ý nghĩa của các giá trị Content-Type (kiểu nội
dung)
Mô tả dữ liệu trong phần thân của bản tin và sẽ được khai báo đầy đủ, bộ nhận có thể quyết định cách thức trình bày dữ liệu với người dùng. Header này cũng có thể được mở rộng với một vài thơng số
Content-Transfer- Encoding
Chỉ ra loại hình chủn đởi thơng tin mà được áp dụng cho dữ liệu trước khi nó được gửi. Thí dụ mã hóa nhị phân hoặc mã hoá hệ cơ số 64.
Bảng 3.4 Các header dùng với MIME
Header Content-Type là header quan trọng nhất trong MIME và giá trị của nó được sắp xếp với nhiều kiểu nội dung. Mỗi kiểu nội dung được sắp xếp với nhiều kiểu con.
S/MIME đưa ra các khả năng kí hiệu, mã hóa hoặc là cả kí hiệu và mã hóa thực thể MIME. Tùy vào từng trường hợp, nó có thể ưu tiên mã hóa trước rồi sau đó mới kí hiệu, hoặc là ngược lại.
Để đưa ra các khả năng này, S/MIME đưa ra một số kiểu phụ MIME mới cho các kiểu nội dung khác nhau.
Kiểu S/MIME Ý nghĩa của các giá trị
multipart/signed Kiểu này được đưa ra để chỉ thị gồm 2 phần. Phần thứ nhất là nội dung MIME và phần thứ hai là kí hiệu số của phần thứ nhất. Mục đích chính đó là phân chia dữ liệu được kí hiệu với phần kí hiệu số.
application/pkcs7- mime
(dùng trong trường hợp mã hóa)
Một thực thể S/MIME được mã hóa, kí hiệu hoặc chỉ là một thực thể mà chứa một chứng nhận khóa công khai, điều này tùy thuộc vào thông số mà đã được chỉ ra cho kiểu nội dung.
application/pkcs7- signature
Kiểu nội dung của phần thứ hai trong phần multipart/signed, có ý nghĩa cho phép kí hiệu phần nội dung.
application/pkcs10- mime
Kiểu nội dung dùng để yêu cầu chứng nhận khóa công khai từ một đơn vị chứng thực.
text/plain Dạng hiển thị rõ
Thực thể application/pkcs10-mime thì hiếm khi được dùng. Thực thể application/pkcs7-mime có thông số smime-type (kiểu S/MIME) được định nghĩa với một giá trị, dựa vào đó quyết định kết quả của q trình xử lý S/MIME bao gồm những gì, có thể là dữ liệu mã hóa, dữ liệu kí hiệu hoặc là xác nhận khóa chung. Kết quả của q trình xử lý S/MIME được gọi là một đối tượng (object). Các giá trị khác nhau của thông số smime-type được mô tả trong bảng dưới đây.
Giá trị smime- type
Ý nghĩa của các giá trị
signed-data Thực thể S/MIME chứa một đối tượng mà nằm giữa các đối tượng khác chứa kí hiệu thực thể SIP.
enveloped-data Thực thể S/MIME chứa một đối tượng nằm giữa các đối tượng khác bao gồm thực thể được mã hóa.
certs-only Thực thể MIME chứa một đối tượng mà chỉ chứa một chứng nhận khóa công khai.
Bảng 3.6 Giá trị thông số smime-type
Sự khác biệt giữa hai đối tượng application/pkcs7-signature và application/pkcs7-mime, đó là application/pkcs7-mime có chứa thông số “smime- tupe”(kiểu S/MIME) với giá trị là “signed-data”, còn application/pkcs7-signature thì khơng.
Thí dụ MIME được mã hóa: Dấu hiệu MIME được mã hóa được chỉ ra trong trường content-type với giá trị là “application/pkcs7-mime”; smime-type=enveloped- data.
b. Chứng nhận khóa cơng khai
SIP UA hỡ trợ S/MIME phải có ”keyring” (hộp khóa) để chứng nhận khóa cơng khai của đầu ći người dùng (hình 3.11). Hộp khóa gắn phần tên người dùng và tên miền của SIP URI của đầu cuối người dùng (thí dụ duongtien@vt1.com), tới chứng
Content-Type: application/pkcs7-mime; smime-type=enveloped-data; name = smime.p7m
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename-smime.p7m
567GhIGfHfYT6ghyHhHUujpfyF4f8HHGTrfvhJhjH776tbB9HG4VQbnj7 77n8HHGT9HG4VQpfyF467GhIGfHfYT6rfvbnj756tbBghyHhHUujhJhjH HUujhJh4VQpfyF467GhIGfHfYGTrfvbnjT6jH7756tbB9H7n8HHGghyHh 6YT64V0GhIGfHfQbnj75
nhưng người dùng có thể tạo các chứng nhận khóa cơng khai kí hiệu cho chính mình. Chứng nhận khóa công khai hỗ trợ kỹ tḥt kí hiệu sớ. Sau đây là hình minh họa việc thu được, lưu trữ và tải lên chứng nhận khóa cơng khai. Chứng nhận được thực hiện với chuẩn chứng nhận X.509.
Chứng nhận điện tử X.509
X.509 là một định dạng chuẩn – đưa ra bởi International Telecommunication Union-Telecommunication Standardization Sector (ITU-T) và ISO/International Electrotechnical Commission (IEC) – công bố lần đầu tiên vào năm 1988 như là một phần khuyến cáo của dịch vụ thư mục X.500. Định dạng chuẩn X.509 phiên bản 2 (v2) là sự mở rộng của khuôn dạng chuẩn X.509 phiên bản 1 (v1) năm 1993, kết hợp thêm hai trường mới hỗ trợ quản lý quyền truy nhập thư mục. Chuẩn X.509 v2 đã được xem xét lại cho phép bổ xung thêm các trường mở rộng. X.509 version 3 được đưa ra tháng 6-1996.
Hình 3.11 Thu nhận, lưu trữ và tải lên các chứng nhận khóa cơng khai.
Việc thực hiện chứng nhận điện tử X.509 nhằm thực hiện các thủ tục chuẩn như là:
- Đăng kí đối tượng: thực hiện theo thủ tục như là qui định về tên đối tượng, chẳng hạn như tên địa chỉ thư tín điện tử, tên domain, địa chỉ IP…, đăng kí tên các thuật tốn cho một lớp đối tượng liên quan tới thương mại điện tử.
- Thực hiện phát hành, phân phối, thu hồi các chứng nhận.
- Quản lý khóa cơng khai và khóa riêng: bao gồm các vấn đề như là sinh khóa, bảo vệ khóa riêng, cập nhật khóa.
Sau đây là khn dạng các trường trong chứng nhận X.509
Phiên bản: chỉ ra khuôn dạng của phiên bản.
Chỉ số chứng nhận: Số hiệu nhận dạng duy nhất của chứng chỉ này, có giá trị là một số nguyên. Nó được CA phát hành gán cho.
Bộ nhận dạng thuật tốn kí hiệu số: Tên thuật toán ký được CA sử dụng để ký chứng nhận, nó có các thơng số của nó.
Người phát hành : Tên X.500 của CA mà tạo ra và kí chứng nhận này.
Thời gian hợp lệ: Thời gian bắt đầu và kết thúc của một chứng nhận
Tên đối tượng: Tên người dùng mà chứng nhận này chỉ tới. Do đó, chứng nhận xác nhận khóa cơng khai của đối tượng mà nắm giữ khóa riêng tương ứng.
Thông tin về khóa công khai của chủ thể: Gồm có: giá trị khóa công khai của chủ thể cùng với một tên thuật toán sử dụng khóa công khai này.
Bộ nhận dạng người phát hành duy nhất: Là một chuỗi bít tùy chọn, được sử dụng để chỉ ra tính duy nhất của CA phát hành trong việc dạng tên X.500 được dùng cho các thực thể khác nhau.
Bộ nhận dạng chủ thể duy nhất: Là một chuỗi bít tùy chọn, được sử dụng để chỉ ra tính duy nhất của CA phát hành trong việc dạng tên X.500 được dùng cho các thực thể khác nhau.
Phần mở rộng: gồm một hoặc một nhiều các trường mở rộng. Phần mở rộng này được thêm vào trong phiên bản 3.
Kí hiệu: nó chứa mã băm của các trường khác, mã hóa với khóa cơng khai của CA. Trường này chứa cả bộ nhận dạng thuật tốn kí hiệu số. (cả ba phiên bản đều có trường này).
Hình 3.12 Khn dạng X.509.
c. Kỹ thuật gửi và nhận bản tin SIP được kí hiệu:
Các bước được minh họa:
1. SIP UA tạo bản tin SIP và gắn thân MIME vào bản tin.
2. SIP UA tạo thực thể S/MIME multipart/sighned, mà chứa thân MIME và một thực thể S/MIME application/pkcs7-signature.
3. SIP UA kí hiệu thân MIME bằng cách dùng khóa riêng của và bao gồm cả các chứng nhận khóa công khai trong đối tượng cú pháp bản tin mã hóa CMS của thực thể S/MIME application/pkcs7-signature.
4. SIP UA gửi bản tin. Nếu như SIP UA bên nhận khơng hỗ trợ S/MIME, thì các bước từ 5 tới 8 bỏ qua.
Hình 3.13 Kỹ thuật gửi và nhận bản tin SIP được kí hiệu
5. SIP UA nhận lấy bản tin và cớ gắng tìm chứng nhận khóa cơng khai ở bên trong hợp khóa (keyring) của nó. Nếu như chứng nhận khóa cơng khai trong hợp khóa có một đối tượng mà khớp với trong header From trong bản tin SIP (vì đây là bản tin yêu cầu, cịn với trường hợp là đáp ứng SIP thì sẽ so sánh trường header To với đối tượng chứng nhận khóa cơng khai), thì SIP UA phía nhận sẽ so sánh nó với chứng nhận mà nó nhận được. Nếu chúng khác nhau, thì SIP UA có thể cảnh báo người dùng và yêu cầu sự xác nhận của người dùng trước khi tiếp tục phiên. Nếu người dùng chấp nhận chứng nhận khóa công khai mà nhận được, thì phải thêm khóa đó vào trong hợp khóa cùng với các chứng nhận khóa công khai khác được lưu trữ trong danh mục lúc trước. Sau đó các bước 6 và 7 có thể bỏ qua.
6. Nếu như chứng nhận khóa cơng khai nhận được khơng được tìm thấy trong hợp khóa, thì khi đó SIP UA phía nhận sẽ kiểm tra kí hiệu đó của nó với bất kỳ CA
khai, thì SIP UA phía nhận sẽ so sánh đối tượng trong chứng nhận khóa công khai (với header From). Nếu như SIP UA phía nhận khơng thể kiểm tra chứng nhận khóa cơng khai (do nó tự kí hiệu, hoặc là kí hiệu bởi CA mà nó khơng biết), thì người dùng phải được cảnh báo với trạng thái của chứng nhận khóa cơng khai. Và SIP UA phía nhận phải được sự cho phép từ người dùng để chấp nhận nó.
7. Nếu chứng nhận khóa cơng khai được sự đồng ý của người dùng hoặc là trực tiếp từ SIP UA phía nhận, thì chứng nhận khóa cơng khai sẽ được thêm vào trong ổ khóa, nó được đánh chỉ số với SIP URI trong header From.
8. Khi kí hiệu của khóa xác nhận dùng chung là hợp lệ và đã lưu trong keyring, SIP UA phía nhận xác nhận kí hiệu của thân MIME hợp lệ.
9. SIP UA phía nhận khởi tạo và gửi một đáp ứng tới SIP UA khác. Nếu đáp ứng chứa thân bản tin và SIP UA phía nhận hỗ trợ S/MIME, thì thân bản tin có thể bao gồm thực thể S/MIME.
10. Nếu SIP UA nhận đáp ứng SIP với thân bản tin mà bao gồm có một thực thể MIME, thì nó có thể cảnh báo người là phiên có thể khơng được bảo đảm.
Cách thức mã hóa bản tin cũng tương tự như trên, tuy nhiên có một số nét khác:
• Phần đầu tiên của thực thể S/MIME multipart/signed không chứa thân MIME ở dạng hiển thị text. Thay vào đó là thực thể MIME đã mã hóa được thay thế, có nghĩa lúc này thực thể S/MIME kiểu application/pkcs7-mime với giá trị smime- type là “enveloped-data”.
• SIP UA có thể truy nhập vào danh mục chung để lấy chứng nhận khóa cơng khai cho SIP UA phía nhận. Sau đó khóa chung được dùng để mã hóa (tuân theo ḷt mã hóa).
• Nếu như SIP UA phía nhận khơng thể giải mã hóa thân MIME, thì SIP UA phía nhận sẽ từ chối yêu cầu và gửi một đáp ứng 493 (Undecipherable: không thể giải mã được). Đáp ứng 493 có thể chứa một chứng nhận khóa cơng khai trong một thực thể S/MIME application/pkcs7-mime với thông số smime-type để là “certs- only”. Khóa xác nhận chung được chọn có thể phù hợp với header To trong yêu cầu.
Trong S/MIME, mã hóa thực thể MIME được giải quyết bằng cách tạo một thực thể application/pkcs7-mime với thông số “smime-type” là ”enveloped-data” và sau đó gắn cho một đối tượng mà nằm giữa các thành phần khác chứa chứa mã hóa thực thể MIME.
Hình 3.14 Ngun lý mã hóa S/MIME.
Hình 3.15 Nguyên lý giải mã thực hiện trong S/MIME.
S/MIME trong SIP được IETF khuyến nghị với một số đặc điểm như sau:
• “multipart/signed” phải được gắn vào trong cú pháp bản tin mã hóa (CMS).
• Thân bản tin S/MIME có header Content-Dispostion và giá trị thơng sớ handling (điều khiển) sẽ là “required”.
• UAC khơng có ở khóa của nó kết hợp với bản ghi địa chỉ để gửi một yêu cầu, thì nó không thể gửi bản tin MIME được mã hóa kiểu “application/pkcs-7mime”. UAC có thể gửi yêu cầu ban đầu chẳng hạn như bản OPTIONS, với cú pháp bản