Quá trình bắt tay giữa Client và Server nhằm thương lượng các thuật toán bảo vệ dữ liệu và tạo một số khóa mật mã dùng bởi các thuật toán này.
a. Mật mã khóa công khai (Public Key Crytography):
Để làm giảm bớt khó khăn cho người quản trị với những cách tiếp cận Khóa dùng chung, ta có thể sử dụng Mật mã Khóa công khai.
- Những khóa không cân đối:
Những cặp khóa không cân đối từng cặp là những khóa (thông thường của độ dài cố định) được tham chiếu tới như khóa công khai và khóa riêng tư mà có liên quan toán học đến lẫn nhau. Chúng thông thường được đại diện trong hệ mười sáu (hexa) và có những đặc trưng sau đây:
+ Chỉ có khóa công khai tương ứng mới có thể giải mã dữ liệu mà được mã hóa với một khóa riêng tư.
+ Chỉ có cặp khóa riêng tư tương ứng mới có thể giải mã dữ liệu mà được mã hóa với một khóa công khai.
+ Có mối quan hệ một-một giữa những khóa.
+ Khóa riêng tư được giữ bí mật, còn khóa công khai thì được chia sẻ với mọi người.
+ Đối với sự chứng thực, một người gửi có thể sử dụng khóa riêng tư của riêng mình để mã hóa thông điệp. Thông điệp chỉ có thể được giải mã với khóa công khai tương ứng.
Người nhận có thể giải mã thông điệp miễn là có sự truy nhập tới khóa công khai của người gửi. Vì chỉ có người gửi mới biết khóa riêng tư nên buộc phải mã hóa thông điệp.
+ Đối với truyền thông an toàn, một người gửi có thể mã hóa nội dung thông báo bằng cách sử dụng kỹ thuật mật mã khóa- công khai. Người gửi làm điều này bằng cách sử dụng khóa công khai của người nhận.
Người nhận sau đó có thể giải mã thông điệp với khóa riêng tư tương ứng. Bởi vì người nhận đã dự định có khóa riêng tư nên có thể giải mã thông điệp. Không có bên thứ ba nào khác có thể giải mã thông báo này, bởi vì không ai khác biết khóa riêng tư của người nhận.
Chú ý rằng người gửi phải sử dụng khóa riêng tư để mã hóa thông điệp cho những mục đích chứng thực, trong khi mà người nhận phải sử dụng khóa công khai để mã hóa thông điệp cho sự truyền thông an toàn. Trong thế giới thực, pha chứng thực đến đầu tiên. Sau khi người gửi và người nhận xác nhận lẫn nhau thì họ chuyển tới pha truyền thông an toàn.
Sự mã hóa sử dụng những khóa không cân đối là một tiến trình cường độ cao của CPU. Bởi vậy, khi mà bao gồm rất nhiều dữ liệu, những người quản lý nói chung sử dụng mật mã khóa công khai để đàm phán một bí mật dùng chung duy nhất trên phiên họp. Họ dùng những ký số khóa cân đối bằng cách sử dụng bí mật dùng chung này cho phần còn lại của phiên họp.
* Thuật toán RSA:
Thuật toán RSA được đề xuất bởi Rivest, Shamir và Adleman. Gọi p và q là hai số nguyên tố lớn ngẫu nhiên phân biệt. Mô-đun n là tích của hai số nguyên tố này: n = pq. Hàm phi Euler (Euler's totient function) của n cho bởi:
và tính d với:
sử dụng thuật toán Euclid mở rộng . Ở đây, e là số mũ công khai (public exponent) và d là số mũ bí mật (private exponent). Thông thường, người ta chọn số mũ công khai nhỏ. Giá trị của d và hai số nguyên tố p và q được giữ bí mật. Việc mã hóa được thực hiện bằng cách tính:
với M là bản rõ (plaintext) thỏa 0 ≤ M < n. Số C là bản mã (ciphertext) tương ứng của M. Từ C, M được tính bằng:
Trao đổi các thông điệp bí mật:
Thư mục khóa công khai chứa các cặp (e,n) cho mỗi người dùng. Những người dùng muốn gởi các thông điệp bí mật đến người dùng khác sẽ tham khảo thư mục này để nhận các tham số này.
Cặp na , nb và ea , eb tương ứng là mô-đun và số mũ công khai cho người dùng. Ví dụ Alice muốn gửi thông điệp bí mật M cho Bob, Alice thực hiện các bước sau đây:
- Alice xác định tên của Bob trong thư mục và nhận số mũ công khai vùng với mô-đun: (eb,nb).
- Alice tính:
- Alice gởi C cho Bob thông qua mạng. - Bob tiếp nhận C.
- Bob sử dụng số mũ bí mật và mô-đun của anh ấy, và tính để thu được M.
Ký văn bản điện tử
Thuật toán RSA cung cấp một tiến trình để ký văn bản điện tử và kiểm tra chữ ký có xác thực không. Việc ký văn bản điện tử khác với ký văn bản giấy, ở chỗ các văn bản giấy đều dùng một chữ ký. Chữ ký điện tử không thể bất biến, nó là một hàm số của văn bản điện tử khi được tạo. Sau khi chữ ký (chỉ là một phần nhỏ khác của dữ liệu điện tử) của một văn bản điện tử được tạo ra, nó được đính kèm vào văn bản để cho những ai muốn kiểm tra sự xác thực của văn bản và chữ ký.
Giả sử Alice muốn ký một thông điệp, và Bob muốn có bằng chứng rằng thông điệp này được ký bởi Alice. Trước tiên, Alice thực hiện các bước sau:
- Alice tạo thông điệp M và tính
- Alice làm cho thông điệp M và chữ ký S luôn sẵn sàng để được xác thực. Bob thực hiện các bước sau để xác thực chữ ký của Alice trên văn bản M: - Bob nhận M và S, xác định tên của Alice trong danh bạ để lấy các thông số
e và n (ea, na) - Bob tính
Nếu M’ = M thì chữ ký được xác thực. Nếu không, hoặc thông điệp gốc M
hoặc chữ ký S bị sửa đổi, vì vậy chữ ký không hợp lệ. * Chữ ký số hóa:
Một chữ ký số hóa là một thuộc tính nội dung của thông điệp và người ký của thông điệp đó. Một chữ ký số hóa phục vụ một mục đích tương tự tới một chữ ký trong thế giới thực nó thực sự là một công cụ để xác nhận một thông điệp hay mẩu dữ liệu nào đó. Những chữ ký số hóa sử dụng một tập hợp của những giải thuật bổ sung một để ký tên và để xác minh.
Đầu tiên, một chức năng hash được chạy qua nội dung của thông điệp. Rồi kết quả của hash được thay đổi vào trong một chữ ký số hóa bằng cách sử dụng khóa riêng tư của người ký. Một chữ ký số hóa điển hình được bổ sung vào thông báo.
Người nhận xác minh chữ ký bằng việc chạy giải thuật xác minh qua nội dung nguyên bản của thông điệp (loại trừ chính chữ ký) và khóa công khai của người ký.
Những chữ ký số hóa cung cấp sự chứng thực. (Người ký phải có khóa riêng tư.) Những chữ ký số hóa cũng cung cấp sự toàn vẹn của thông điệp, bởi vì bất kỳ sự thay đổi nào tới nội dung của thông điệp đang vận chuyển đều dẫn đến một sự thất bại của giải thuật xác minh chữ ký.
Tuy nhiên, một chữ ký số hóa không cung cấp sự riêng tư bởi chính bản thân nó. Chữ ký được bổ sung vào thông điệp, mà được gửi đến văn bản trống và có thể được nhìn thấy khi đang vận chuyển.
b. Chứng thực và căn cứ chứng thực:
Câu hỏi đặt ra là khóa công khai được sinh ra như thế nào tới những người nhận có khả năng. Những cặp khóa không cân đối thì chắc chắn để bảo trì và định hình. Những chứng thực được định nghĩa là như một giải pháp đối với vấn đề phân phối khóa công khai.
Tại thời điểm của sự phát sinh khóa, khóa công khai của thực thể (gọi là subject) được gửi tới căn cứ chứng thực (CA). CA xác minh lai lịch của requestor (có khả năng là sự can thiệp bằng tay) và phát hành một chứng thực mà khẳng định lai lịch của requestor và khóa công khai của nó.
Điều này chứng thực rằng những vấn đề của CA bao gồm thông tin về căn cước của subject, trong số những thứ khác, và được ký bởi CA.
Mỗi thiết bị trong hệ thống được chuẩn bị với khóa công khai của CA (Nếu có nhiều CA, khóa công khai của mỗi nhu cầu được chuẩn bị trên mỗi thiết bị) và tin cậy những chứng thực đã được phát hành bởi CA.
Tại sự bắt đầu của việc thiết lập phiên họp, subject giới thiệu chứng thực của nó tới sự tương đương của nó. Sự tương đương chạy một giải thuật xác minh chữ ký để xác minh rằng một CA tin cậy đã ra hiệu chứng thực. Nếu chữ ký được làm cho có hiệu lực, khóa công khai và căn cước của subject (gọi là subject name) được lưu trữ cục bộ.
Nói chung, khóa công khai của CA đã tin cậy được chuẩn bị trên những thiết bị. Mọi thực thể khác được xác nhận bằng phương pháp chứng thực và không yêu cầu chuẩn bị bằng tay. Sau những chứng thực (mà chứa đựng những khóa công khai) được truyền lan, sự truyền thông giữa những thực thể trong hệ thống có thể được giữ an toàn.
2.2. Đảm bảo an ninh cho dữ liệu thoại sử dụng SRTP (Secure Real-time Transport Protocol):
Giao thức vận chuyển thời gian thực an toàn (SRTP), được định nghĩa ở RFC 3711, là một profile của giao thức vận chuyển thời gian thực (RTP). SRTP cung cấp sự toàn vẹn, tính xác thực, và sự bảo vệ riêng tư tới lưu thông RTP và tới điều khiển lưu thông cho RTP, RTCP (giao thức điều khiển vận chuyển thời gian thực) SRTP không chỉ rõ những khóa được trao đổi giữa người gửi và người nhận như thế nào. Những hệ thống quản lý khóa thì nằm bên ngoài phạm vi của SRTP. Trong trường hợp của VoIP, giao thức báo hiệu có thể trao đổi những khóa trước khi SRTP thực hiện. Nếu bạn sử dụng giao thức báo hiệu cho sự trao đổi khóa, bạn cần bảo mật nó bằng cách sử dụng TLS, ngược lại, những khóa mà SRTP sử dụng có thể bị phơi bày ra cho hackers.