Bảo mật trong VPN

Tài liệu Bảo mật trong VPN: CHƯƠNG 4 BẢO MẬT TRONG VPN Một trong những mối quan tâm chính của bất kỳ công ty nào là việc bảo mật dữ liệu của họ. Bảo mật dữ liệu chống lại các truy nhập và thay đổi trái phép không chỉ là một vấn đề trên các mạng. Việc truyền dữ liệu giữa các máy tính hay giữa các mạng LAN với nhau có thể làm cho dữ liệu bị tấn công và dễ bị thâm nhập hơn là khi dữ liệu vẫn còn trên một máy tính đơn. Bảo mật không phải là vấn đề riêng của VPN mà thực tế là mối quan tâm và thách thức của tất cả các tổ chức có nhu cầu sử dụng môi trường mạng Internet để trao đổi thông tin. Để thực hiện bảo mật cho dữ liệu trong mạng VPN người ta thực hiện hai quá trình đó là xác thực (Authentication) và mật mã (Encryption). 4.1 Quá trình xác thực Xác thực là một phần không thể thiếu được trong kiến trúc bảo mật của một mạng VPN. Xác thực được dựa trên ba thuộc tính: Cái gì ta có (một khoá hay một card token); cái gì chúng ta biết (một mật khẩu); hay cái gì chúng ta nhận dạng (giọng nói, quét võng mạc, dấu vân ...

doc18 trang | Chia sẻ: hunglv | Lượt xem: 1518 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Bảo mật trong VPN, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
CHƯƠNG 4 BẢO MẬT TRONG VPN Một trong những mối quan tâm chính của bất kỳ công ty nào là việc bảo mật dữ liệu của họ. Bảo mật dữ liệu chống lại các truy nhập và thay đổi trái phép không chỉ là một vấn đề trên các mạng. Việc truyền dữ liệu giữa các máy tính hay giữa các mạng LAN với nhau có thể làm cho dữ liệu bị tấn công và dễ bị thâm nhập hơn là khi dữ liệu vẫn còn trên một máy tính đơn. Bảo mật không phải là vấn đề riêng của VPN mà thực tế là mối quan tâm và thách thức của tất cả các tổ chức có nhu cầu sử dụng môi trường mạng Internet để trao đổi thông tin. Để thực hiện bảo mật cho dữ liệu trong mạng VPN người ta thực hiện hai quá trình đó là xác thực (Authentication) và mật mã (Encryption). 4.1 Quá trình xác thực Xác thực là một phần không thể thiếu được trong kiến trúc bảo mật của một mạng VPN. Xác thực được dựa trên ba thuộc tính: Cái gì ta có (một khoá hay một card token); cái gì chúng ta biết (một mật khẩu); hay cái gì chúng ta nhận dạng (giọng nói, quét võng mạc, dấu vân tay,..). Xác thực là thuật ngữ dùng chung, nó bao gồm hai khái niệm: Xác thực nguồn gốc dữ liệu và xác thực tính toàn vẹn dữ liệu. 4.1.1 Xác thực nguồn gốc dữ liệu a) Mật khẩu truyền thống Thực tế cho thấy, các loại xác thực đơn giản, như số nhận dạng ID của người dùng, mật khẩu không đủ mạnh cho việc bảo mật truy cập mạng. Mật khẩu có thể bị đón bắt và giữ lấy trong suốt quá trình truyền dữ liệu của mạng. Hệ thống mật khẩu một lần là phương pháp tốt sử dụng mật khẩu truyền thống. * Hệ thống mật khẩu một lần Để ngăn chặn việc sử dụng trái phép, các mật khẩu bị giữ lại và ngăn không cho chúng không được dùng trở lại, bằng cách cầu một mật khẩu mới cho phiên làm việc mới. Những hệ thống này, thì mỗi khi người dùng đăng nhập vào mạng thì luôn luôn phải chọn một mật khẩu mới cho mỗi phiên làm việc kế tiếp. Do đó để khắc phục khó khăn này bằng cách tạo ra một cách tự động một danh sách mật khẩu có thể chấp nhận được cho người dùng. Nhược điểm của các hệ thống này là khó có thể quản trị những danh sách mật khẩu cho một số lượng lớn người dùng. b) Giao thức xác thực mật khẩu PAP Giao thức xác thực mật khẩu PAP (Passwork Authentication Protocol) được thiết kế một các đơn giản cho một máy tính tự xác thực đến một máy tính khác khi giao thức điểm-điểm PPP được sử dụng làm giao thức truyền thông. PAP là một giao thức bắt tay hai chiều; đó là, máy tính chủ tạo kết nối gửi nhận dạng người dùng và mật khẩu kép (passwork pair) đến hệ thống đích mà nó cố gắng thiết lập một kết nối và sau đó hệ thống đích xác thực rằng máy tính đó được xác thực đúng và được chấp nhận cho việc truyền thông. Xác thực PAP có thể được dùng khi bắt đầu của kết nối PPP, cũng như trong suốt một phiên làm việc của PPP để xác thực kết nối. Khi một kết nối PPP được thiết lập, xác thực PAP có thể có thể được diễn ra trong kết nối đó. Điểm ngang hàng gửi một nhận dnạg người dùng và mật khẩu đến bộ xác thực cho đến khi bộ xác thực chấp nhận kết nối hay kết nối bị huỷ bỏ. PAP không bảo mật bởi vì thông tin xác thực được truyền đi rõ ràng và không có khả năng bảo mật chống lại tấn công trở lại hay lặp lại quá nhiều bởi những người tấn công nhằm cố gắng dò ra mật khẩu đúng hay một cặp nhận dạng người dùng. c) Giao thức xác thực yêu cầu bắt tay CHAP Giao thức xác thực mật khẩu yêu cầu bắt tay CHAP (Challenge Handshake Authentication Protocol) được thiết kế cho việc sử dụng tương tự như PAP nhưng là một phương pháp bảo mật tốt hơn đối với xác thực các kết nối PPP. Hình 4.1: Hệ thống đáp ứng thách đố người dùng CHAP là một giao thức bắt tay ba chiều bởi vì nó bao gồm ba bước để thực hiện kiểm tra một kết nối, sau khi kết nối được khởi tạo đầu tiên hay tại bất kỳ thời điểm nào sau khi kết nối được thiết lập. Thay vì dùng một mật khẩu hay tiến trình chấp nhận giống như trong PAP, CHAP sử dụng một hàm băm một chiều (one-way hashing function). Máy tính xác thực gửi một bản tin thách đố (challenge massage) đến máy tính ngang cấp (peer). Máy tính ngang cấp tính toán một giá trị sử dụng một hàm băm một chiều và gửi lại cho máy tính xác thực. Máy tính xác thực có thể đáp ứng chấp nhận nếu giá trị gửi lại tương ứng với giá trị mong muốn. Tiến trình này có thể lặp lại tại bất kỳ thời điểm nào trong suốt quá trình kết nối để đảm bảo rằng kết nối luôn được nắm quyền và không bị suy yếu trong mội trường hợp. Máy chủ điều khiển quá trình xác thực tại CHAP. PAP và CHAP có nhược điểm giống nhau, đó là: Đều phụ thuộc vào một mật khẩu bí mật được lưu trữ trên máy tính của người dùng ở xa và máy tính nội bộ. Nếu bất kỳ một máy tính nào chịu sự điều khiển của một kẻ tấn công mạng và bị thay đổi mật khẩu bí mật thì không thể xác thực được. Không thể đăng ký chỉ định những đặc quyền truy cập mạng khác nhau đến những người dùng ở xa khác nhau sử dụng cùng một máy chủ. CHAP là một phương pháp mạnh hơn PAP cho việc xác thực người dùng quay số nhưng CHAP không thể đáp ứng những yêu cầu mang tính mở rộng mạng. Cho dù khi không có bí mật nào truyền qua mạng thì phương pháp này vẫn yêu cầu một lượng lớn các bí mật dùng chung chạy qua hàm băm, nên yêu cầu băng thông lớn nhưng hiệu suất mạng lại thấp. d) Hệ thống điều khiển truy cập bộ điều khiển truy cập đầu cuối TACACS TACACS (Terminal Access Controler Access Control System) là hệ thống được phát triển để không chỉ cung cấp cơ chế xác thực mà còn thực hiện chức năng: cho phép (authorization) và tính cước (accouting). TACACS được thiế kế như một hệ thống client/server mềm dẻo hơn và đặc biệt trong việc quản lý bảo mật mạng. Trung tâm hoạt động của TACACS là một máy chủ xác thực TACACS. Máy chủ xác thực TACACS giữ các yêu cầu xác thực từ phần mềm client được cài đặt tại một gateway hay một điểm truy cập mạng. Máy chủ duy trì một cơ sở dữ liệu nhận dạng người dùng, mật khẩu, PIN và các khoá bí mật được sử dụng để được chấp nhận hay bị từ chối các yêu cầu truy cập mạng.Tất cả xác thực, cấp quyền và dữ liệu tính cước được hướng đến máy chủ trung tâm khi một người dùng truy nhập mạng. Ưu điểm của TACACS là nó hoạt động như một máy chủ Proxy đối với những hệ thống xác thực khác. Các khả năng của Proxy làm cho việc chia sẻ dữ liệu bảo mật của VPN với ISP được dễ dàng hơn, điều này cần thiết khi một VPN là nguồn xuất. e) Dịch vụ xác thực người dùng quay số từ xa- RADIUS RADIUS (Remote Authentication Dial-In Use Service) cũng sử dụng kiểu client/server để chứng nhận một cách bảo mật và quản trị các kết nối mạng từ xa của các người dùng với các phiên làm việc. RADIUS giúp cho việc điều khiển truy cập dễ quản lý hơn và nó có thể hỗ trợ các kiểu xác thực người dùng khác nhau bao gồm PAP, CHAP. Kiểu RADIUS client/server dùng một máy chủ truy cập mạng NAS để quản lý các kết nối người dùng. NAS có trách nhiệm chấp nhận các yêu cầu kết nối của người dùng, thu thập các thông tin nhận dạng người dùng, mật khẩu đồng thời chuyển thông tin này một cách bảo mật tới máy chủ RADIUS. Máy chủ RADIUS thực hiện xác thực để chấp nhận hay từ chối cũng như khi có bất kỳ dữ liệu cấu hình nào được yêu cầu để NAS cung cấp các dịch vụ đến đầu cuối người dùng. Các client RADIUS và máy chủ RADIUS truyền thông với nhau thông với nhau một cách bảo mật bằng việc sử dụng các bí mật dùng chung cho việc xác thực và mã hoá trong truyền mật khẩu người dùng. RADIUS tạo cơ sở dữ liệu đơn và tập trung và được lưu giữ tại máy chủ RADIUS nhằm quản lý việc xác thực người dùng và các dịch vụ. Một người dùng ở xa sử dụng RADIUS client sẽ có quyền truy cập đến các dịch vụ như nhau từ bất kỳ một máy chủ nào đang truyền thông với máy chủ RADIUS. f) Các hệ thống phần cứng cơ bản + Smart card Card thông minh (Smart card) là thiết bị có kích thước giống như một thẻ tín dụng, bao gồm: một bộ vi xử lý được gắn chặt vào card và một bộ nhớ. Một thiết bị đọc tương đương cho Smart card được yêu cầu để giao tiếp với Smart Card. Smart Card có thể lưu giữ một khoá riêng của người dùng cùng với một số ứng dụng nhằm đơn giản hoá tiến trình xác thực. Một số Smart Card hiện nay gồm một bộ đồng xử lý mã hoá và giải mã làm cho việc mã hoá dữ liệu dễ dàng hơn và nhanh hơn. Các hệ thống chứng nhận điện tử được sử dụng trong Smart Card, nó yêu cầu người dùng nhập vào một số nhận dạng cá nhân PIN để tiến hành quá trình xác thực, thường thì số PIN được lưu trên Smart Card. + Các thiết bị thẻ bài (Token Devices) Các hệ thống thẻ bài thường được dựa trên các phần cứng riêng biệt dùng để hiển thị các mã nhận dạng (passcode) thay đổi mà người dùng sau đó phải nhập vào máy tính để thực hiện việc xác thực. Cơ chế hoạt động của thẻ bài: một bộ xử lý bên trong thẻ bài lưu giữ một tập các khoá mã hoá bí mật được dùng để phát cho các mã nhận dạng một lần. Các mã nhận dạng náy chuyển đến một máy chủ bảo mật trên mạng, máy chủ này kiển tra tính hợp lệ từ đó đưa ra các quyết định cấp quyền hay không? Sau khi các mã được lập trình, không có người dùng hay nhà quản trị nào có quyền truy cập đến chúng. Trước khi các người dùng được phép xác thực, các thết bị thẻ bài yêu cầu một PIN, sau đó sử dụng một trong ba cơ chế khác nhau để xác định người dùng là ai. - Cơ chế đáp ứng thách đố (Challenge response): là cơ chế thông dụng nhất, theo cơ chế này thì máy chủ sẽ phát ra một con số ngẫu nhiên khi người dùng đăng nhập vào mạng. Một số thách đố xuất hiện trên màn hình của người dùng và người dùng nhập vào các con số trong thẻ bài. Thẻ bài mã hoá con số thách đố này với khoá bí mật của nó và hiển thị kết quả lên màn hình và sau đó người dùng nhập kết quả đó vào trong máy tính. Trong khi đó, máy chủ mã hoá con số thách đố với cùng một khoá và nếu như hai kết quả này phù hợp thì người dùng sẽ được phép truy cập vào mạng. - Cơ chế sử dụng sự đồng bộ thời gian (Time Synchronization), cơ chế này thẻ hiển thị một số được mã hoá với khoá bí mật mà khoá này sẽ thay đổi sau 60 giây. Người dùng được nhắc cho con số khi cố gắng đăng nhập vào máy chủ. Do các đồnghồ trên máy chủ và thẻ được đồng bộ nên máy chủ có thẻ xác thực người dùng bằng cách giải mã con số thẻ và so sánh các kết quả. - Cơ chế đồng bộ sự kiên (event Synchronzation); theo cơ chế này, một bộ đếm ghi lại số lần vào mạng được thực hiện bởi người dùng. Sau đó mỗi lần vào mạng, bộ đếm được cập nhật và một mã nhận dạng khác được tạo ra cho lần đăng nhập sau. g) Hệ hống sinh trắc học Hệ thống sinh trắc học dựa vào một số dấu vết cá nhân duy nhất để xác thực người dùng như: vân tay, giọng nói, võng mạc…Tuy nhiên hệ thống được sử dụng rộng rãi trong thực tế bởi vì giá thành đắt và các hệ thống bảo mật này thường tích hợp trong một, làm cho chúng khó khăn trong việc giao tiếp với các hệ thống khác. Hệ thống sinh trắc học chỉ phù hợp cho những nơi cần độ bảo mật cao nhất và trong một phạm vi nhỏ. 4.1.2 Xác thực tính toàn vẹn dữ liệu Xác thực tính toàn vẹn dữ liệu (Data integrity) bao gồm hai vấn đề: Phát hiện các bản tin bị lỗi (corrupted message): Phát hiện các lỗi bit đồng thời xác định nguyên nhân lỗi là do phương tiện truyền dẫn hoặc do thiết bị xử lý, lưu trữ. Giải pháp cho vấn đề này là sử dụng một giản lược thông điệp MD (Message Digest) cho mỗi bản tin. MD hoạt động như một dấu vân tay cho phép xác định duy nhất một bản tin. Bảo vệ chống sửa đổi bất hợp pháp bản tin (unauthorized modification): Phát hiện ra những bản tin đã bị sửa đổi một cách bất hợp pháp trong quá trình truyền dẫn. Có hai giải pháp cho vấn đề này trên cơ sở sử dụng mật mã khoá đối xứng và mật mã khoá công cộng. Giải pháp khoá đối xứng tạo ra một mã xác thực bản tin MAC (Message Authentication Code) dựa trên một hàm giản lược thông điệp có khoá tác động (Keyed message digest function). Giải pháp khoá công cộng tạo ra một chữ ký số (digital signature) bằng cách mật mã giản lược thông điệp MD với khoá công khai của người gửi. Giản lược thông điệp MD dựa trên hàm băm một chiều MD là phương pháp sử dụng để phát hiện lỗi truyền dẫn, nó được thực hiện bằng các hàm băm một chiều. Các hàm băm một chiều được sử dụng để tính MD. Một hàm băm được coi là tốt nếu thoả mã các yêu cầu: Việc tính MD đơn giản, hiệu quả cho phép tính MD của các bản tin có kích thước nhiều GB. Không có khả năng tính ngược lại bản tin ban đầu khi biết giá trị MD của nó. Đây là lý do có tên gọi là hàm băm một chiều. Giá trị MD phải phụ thuộc vào tất cả các bit của bản tin tương ứng. Dù chỉ một bit trong bản tin bị thay đổi, thêm vào hoặc xoá bớt thì sẽ có khoảng 50% các bit trong MD sẽ thay đổi giá trị một cách ngẫu nhiên. Hàm băm có khả năng thực hiện ánh xạ message-to-digest giả ngẫu nhiên, nghĩa là với hai bản tin gần giống hệt nhau thì mã hash của chúng lại hoàn toàn khác nhau. Do bản chất ngẫu nhiên của hàm băm và số lượng cực lớn các giá trị hash có thể, nên hầu như không có khả năng hai bản tin phân biệt có cùng giá trị hash. Với các ứng dụng thực tế hiện nay có thể coi đầu ra của hàm băm thực hiện trên một bản tin là dấu vân tay duy nhất cho bản tin đó. Hình 4.2: Hàm băm thông dụng MD5, SHA-1 MD có độ dài cố định hoạt động như một dấu vân tay duy nhất cho một bản tin có độ dài tuỳ ý. Với độ dài thông thường của một MD từ 128 đến 256 bit thì có thể đại diện cho 1038÷1070 giá trị vân tay khác nhau. Có hai hàm băm thông dụng là MD5 (Message Digest #5) và SHA (Security Hash Function). MD5 do Ron Rivest (RSA Security Inc) phát minh, tính giá trị hash 128 bit (16 Byte) từ một bản tin nhị phân có độ dài tuỳ ý. SHA được phát triển bởi NIST (US National Institute of Standards and Technology) với sự cộng tác của NSA (National Security Agency). SHA-1 tính giá trị hash 160 bit (20 Byte) từ một bản tin nhị phân có độ dài tuỳ ý. Thuật toán này tương tự như MD5 nhưng an toàn hơn vì kích thước lớn hơn. Thuật toán SHA-2 với kích thước hash là 256, 384, và 512 bit đã được NIST công bố vào tháng 10 năm 2000 để thích ứng với các khoá có độ dài lớn của thuật toán mã hoá AES. * Cấu trúc cơ bản của hàm băm một chiều MD5/SHA Cả MD5 và SHA đều làm việc với khối dữ liệu đầu vào 512 bit. Như vậy bản tin ban đầu được phân thành số nguyên lần các khối dữ liệu này. Điều này được thực hiện bằng cách thêm một trương Length 64 bit vào cuối bản tin, sau đó chèn 0÷512 bit đệm vào trước trường Length để khối dữ liệu cuối cùng có độ dài đúng 512 bit. Hình 4.3: Cấu trúc cơ bản của MD5/SHA Việc xử lý theo từng khối này cho phép tính giá trị hash của các bản tin lớn theo kiểu nối tiếp. Vector khởi tạo IV (initialization Vector) và giá trị hash: Ngoài 512 bit khối dữ liệu đầu vào, hàm băm còn yêu cầu một vector khởi tạo IV có kích thước bằng kích thước của hash (128 bit đối với MD5, 160 bit đối với SHA-1). Trong vòng đầu tiên, IV lấy giá trị định nghĩa trước trong các chuẩn MD5, SHA. Một giá trị hash sẽ được tính dựa trên khối 512 bit đầu vào đầu tiên. Giá trị hash này đóng vai trò IV trong vòng thứ hai. Quá trình tiếp tục với giá trị hash vòng trước là IV của vòng sau. Sau khi khối dữ liệu 512 bit cuối cùng được xử lý thì giá trị hash tính được là MD của toàn bộ bản tin. Mã xác thực bản tin MAC (Message Authentication Code) Lý do xây dựng mã xác thực bản tin MAC là vì bản thân MD không cung cấp bất kỳ bảo vệ nào chống lại việc thay đổi bất hợp pháp nội dung của bản tin. Khi một người nào đó thay đổi nội dung của bản tin trên đường truyền thì anh ta có thể tính lại giá trị hash MD5 hoặc SHA dựa trên nội dung của bản tin đã thay đổi đó và như vậy tại phía thu, giá trị hash vẫn hoàn toàn hợp lệ. MAC là phương pháp bảo vệ chống sửa đổi bất hợp pháp nội dung của bản tin. MAC được thực hiện dựa trên hàm băm một chiều kết hợp với khoá bí mật. Hình 4.4: Xác thực tính toàn vẹn dữ liệu dựa trên xác thực bản tin MAC Để giải quyết vấn đề này, MAC sử dụng một khoá bí mật trong quá trình tính MD của bản tin thì mới đảm bảo chống lại những những thay đổi bất hợp pháp. Phía phát, nơi có khoá bí mật tạo ra một giản lược thông điệp hợp lệ (valid MD) và được gọi là mã xác thực bản tin MAC. Phía thu sử dụng khoá bí mật để sử dụng khóa bí mật để xác định tính hợp lệ của bản tin bằng cách tính lại giá trị MAC và so sánh với giá trị MAC mà phía phát truyền tới. Thông thường giá trị MAC cuối cùng được tạo ra bằng cách cắt ngắn giá trị hash thu được bởi MD5 (128 bit) hay SHA-1 (160 bit) xuống còn 96 bit. Mặc dù việc cắt giảm này làm giảm đáng kể số các tổ hợp cần thử đối với một tấn công kiểu brute force, nhưng nó có tác dụng che dấu trạng thái bên trong của thuật toán băm và sẽ khó khăn hơn rất nhiều cho kẻ tấn công để có thể đi từ đầu ra của vòng băm thứ hai tới kết quả trung gian của vòng băm thứ nhất. Phương pháp mã xác thực tính toàn vẹn sử dụng MAC có ưu điểm là thực hiện nhanh và hiệu quả vì việc tạo MAC dựa trên hàm băm tương đối đơn giản, do đó thường được sử dụng để xác thực các cụm dữ liệu tốc độ cao (sử dụng cho các gói tin IPSec). Nhược điểm của phương pháp này là phía thu phải biết được khoá bí mật thì mới kiểm tra được tính toàn vẹn của bản tin, dẫn đến vấn đề phải phân phối khoá một cách an toàn. Chữ ký số (Digital Signature) Chữ ký số là một phương pháp khác để để bảo vệ chống sửa đổi bất hợp pháp nội dung bản tin. Chữ ký số được thực hiện bằng cách mật mã giá trị hash thu được từ một hàm băm một chiều. Giá trị hash (MD5 hoặc SHA) của bản tin được mật mã với khoá bí mật của phía phát để tạo thành chữ ký số và được truyền đi cùng với bản tin tương ứng. Hình 4.5: Chữ ký số Phía thu tính lại mã hash từ bản tin thu được, đồng thời giải mã chữ ký số đi kèm với bản tin. Nếu giá trị giải mã trùng khớp với giá trị hash tính được thì kết luận được tính toàn vẹn của bản tin, vì chỉ có phía phát mới có đúng khoá bí mật để mật mã chữ ký đó. Do khoá công cộng được phân phối rộng rãi, nên bất cứ người dùng nào cũng có thể xác định tính toàn vẹn của bản tin. Phương pháp này tránh được vấn đề phân phối khoá an toàn, nhưng quá trình mật mã và giải mã sử dụng khoá bí mật/công khai thực hiện rất chậm. Vì vậy phương pháp này chỉ được sử dụng để xác thực đối tác tại mọi thời điểm ban đầu của phiên trao đổi thông tin. 4.2 Mã hoá Mã hoá được thực hiện dựa trên hai thành phần: đó là một thuật toán và một khoá. Một thuật toán mã hoá là một chức năng toán học nối phần văn bản hay các thông tin dễ hiểu với một chuỗi các số gọi là khoá để tạo ra một văn bản mật mã khó hiểu. Có rất nhiều thuật toán mã hoá khác nhau, có một vài thuật toán mã hoá đặc biệt không sử dụng khoá có sẵn nhưng với các thuật toán sử dụng các khoá được sử dụng nhiều hơn. Mã hoá trên một hệ thống khoá cơ bản cung cấp hai ưu điểm quan trọng đó là: bằng việc dùng một khoá thì có thể sử dụng cùng một thuật toán để truyền thông với nhiều người, mỗi một người dùng sử dụng một khoá. Nếu như bản tin được mã hoá bị bẻ gãy, chỉ cần chuyển một khoá mới để bắt đầu mã hoá bản tin đó lại mà không cần phải đổi một thuật toán mới để thực hiện quá trình đó Một thuật toán mã hoá tốt phải có được các tính chất: Bảo mật chống lại các tấn công tới cryptographic. Khả năng mở rộng, các chiều dài khoá thây đổi. Bất kỳ thay đổi tới văn bản lối vào mã hoá sẽ làm thay đổi lớn ở lối ra đã được mã hoá. Không hạn chế nhập vào hay xuất ra. Có nhiều kiểu thuật toán mã hoá khác nhau được sử dụng. Tuy nhiên, có hai kiểu thuật toán mã hoá sử dụng khoá được sử dụng phổ biến đó là: thuật toán mã hoá khoá bí mật (secret key) hay còn gọi là mã hoá đối xứng (symmetric) và thuật toán mã hoá khoá công cộng (Public key). Số khoá mà thuật toán có thể cung cấp phụ thuộc vào số bit trong khoá. Ví dụ, một khoá dài 8 bit cho phép có 28=256 khoá, khoá dài 40 bit cho phép có 240 khoá. Số khoá càng lớn thì khả năng một bản tin đã được mã hoá bị bẻ khoá càng thấp. Mức độ khó phụ thuộc vào chiều dài của khoá. 4.2.1 Thuật toán mã hoá khoá bí mật (hay đối xúng) Hình 4.6: Mã hoá khoá bí mật hay đối xứng Thuật toán đối xứng đựoc định nghĩa là một thuật toán khoá chia sẻ sử dụng để mã hoá và giải mã một bản tin. Các thuật toán mã hoá đối xứng sử dụng chung một khoá để mã hoá và giải mã bản tin, điều đó có nghĩa là cả bên gửi và bên nhận đã thoả thuận, đồng ý sử dụng cùng một khoá bí mật để mã hoá và giải mã. Khi ta có nhiều sự trao đổi với N người khác nhau thì ta phải giữ và dấu N khoá bí mật với mỗi khoá được dùng cho mỗi sự trao đổi. Ưu điểm của mã hoá khoá đối xứng: Thuật toán này mã hoá và giải mã rất nhanh, phù hợp với một khối lượng lớn thông tin Chiều dài khoá từ 40÷168 bit. Các tính toán toán học dễ triển khai trong phần cứng. Người gửi và người nhận chia sẻ chung một mật khẩu. Cơ chế mã hoá đối xứng nảy sinh vấn đề đó là: việc nhận thực bởi vì đặc điểm nhận dạng của nhận dạng của một bản tin không thể chúng minh được. Do hai bên cùng chiếm giữ một khoá giống nhau nên đều có thể tạo và mã hoá và cho là người khác gửi bản tin đó. Điều này gây nên cảm giác không tin cậy về nguồn gốc của bản tin đó. Một số thuật toán đối xứng như DES (Data Encryption Standard) có độ dài khoá là 56 bit, 3DES có độ dài khoá là 168 bit và AES (Advanced Encryption Standard) có độ dài khoá là 128 bit, 256 bit hoặc 512 bit. Tất cả các thuật toán này sử dụng cùng một khoá để mã hoá và giải mã thông tin. Thuật toán DES (Data Encryption Standard) Chuẩn mật mã dữ liệu DES được đưa ra từ năm 1977 tại Mỹ và đã được sử dụng rộng rãi. DES là cơ sở để xây dựng thuật toán tiên tiến hơn là 3DES. Hiện nay DES vẫn được sử dụng cho những ứng dụng không đòi hỏi tính an toàn cao, và khi chuẩn mật mã AES chưa chính thức thay thế nó. Hình 4.7: Sơ đồ thuật toán DES DES là sự kết hợp của hai kỹ thuật cơ bản trong mật mã là xáo trộn (confusion) và xếp lại (defusion). Hai kỹ thuật này được thực hiện trong một vòng (round) với đầu vào là khối dữ liệu plaintext và khoá. DES có 16 vòng, và hai kỹ thuật trên được thực hiện trên khối plaintext 16 lần. Mỗi vòng của thuật toán DES đều có một khoá 48 bit riêng bằng cách liên tục dịch và hoán vị khoá 56 bit trong từng vòng một. Độ dài khoá là 56 bit nhưng thực chất là 64 bit, trong đó có 8 bit kiểm tra chẵn lẻ và các bit này bị loại bỏ khi khoá được đưa vào thuật toán DES. Trước khi thực hiện thuật toán DES, khối plaintext 64 bit đi qua bước hoán vị khởi tạo IP (Initial Permutation), không phụ thuộc vào khoá. Sau khi thực hiện 16 vòng lặp, dữ liệu đi qua bước hoán vị đảo RP (Reversed Permutation) và tạo thành một khối bản tin mã hoá (ciphertext). Thực chất các bước hoán vị này không làm tăng tính an toàn cho DES. Trung tâm của vòng xử lý DES là mạng Fiestel (tên của nhà khoa học tại IBM). Sơ đồ mạng Fiestel như hình vẽ: Hình 4.8: Mạng Fiesel Khối 64 bit plaintext đầu vào được chia thành hai khối 32 bit: khối phải (Ri-1) và khối trái (Li-1). Khối phải đầu vào thành khối trái đầu ra (Li). Khối phải cũng đi vào một mạch xử lý: Đầu tiên, nó được chuyển thành 48 bit bởi hoán vị mở rộng EP (Expansion Permutation); sau đó thực hiện phép toán logic XOR với một khoá 48 bit; 48 bit sau khi đã XOR với khoá được đưa tới 8 khối thay thế S-Box (Box substitution), mỗi khối có 6 đầu vào, 4 đầu ra; 32 bit sau khi đi ra khỏi các khối thay thế S được đưa tới khối hoán vị P-Box (P_ Box permutation). Đầu ra của mạch xử lý được XOR với khối trái (Li-1) và trở thành khối phải của dữ liệu đầu ra (Ri). Mỗi vòng trong thuật toán DES đều có một khoá 48 bằng cách liên tục dịch và hoán vị khoá 56 bit trong từng vòng một. Một phiên bản của DES là 3 DES được gọi như thế bởi vì thuật toán thực hiện ba hoạt động mã hoá dữ liệu. Nó thực hiện một quá trình mã hoá, một quá trình giải mã và sau đó là quá trình mã hoá khác, mỗi quá trình thực hiện với một khoá 56 bit khác nhau. Qúa trình này tạo ra một khoá kết hợp 168 bit, cung cấp phương thức mã hoá mạnh. Tất cả các sản phẩm và phần mềm Cisco VPN đều hỗ trợ thuật toán mã hoá 3DES với khoá 168 bit và thuật toán DES 56 bit. Giới thiệu về AES Hiện nay có nhiều tổ chức uy tín đề nghị đưa ra thuật toán cho AES ví dụ như: thuật toán MARS (IBM), RC6 (RSA), Twofish (Bruce Schneier), Rijndael (Joan Daemen/ Vincent Rijmen).v.v. Năm 2000 NIST (US National Institute of Standard and Technology) đã chọn thuật toán Rijndael: thực hiện mạng hoán vị thay thế cải tiến, 10 vòng cho chuẩn AES. Trong tương lai, AES sẽ là chuẩn mật mã khối đối xứng và sẽ được thực hiện trên cả phần cứng và phần mềm. AES sẽ được thiết kế để tăng độ dài khoá khi câng thiết. Độ dài khối dữ liệu của AES là 128 bit, còn độ dài khoá k=128, 192, 256 bit. 4.2.2 Thuật toán mã hoá khoá công cộng Thuật toán mã hoá khoá công cộng được định nghĩa là một thuật toán sử dụng một cặp khoá để mã hoá và giải mã bảo mật một bản tin. Theo thuật toán này thì sử dụng một khoá để mã hoá và một khoá khác để giải mã nhưng hai khoá này có liên quan với nhau tạo thành một cặp khoá duy nhất của một bản tin, chỉ có hai khoá này mới có thể mã hoá và giải mã cho nhau. Hình 4.9: Thuật toán mã hoá khoá công cộng Ưu điểm của thuật toán mã hoá khoá công cộng Khoá công cộng của khoá đôi có thể được phân phát một các sẵn sang mà không sợ rằng điều này làm ảnh hưởng đến việc sử dụng các khoá riêng. Không cần phải gửi một bản sao chép khoá công cộng cho tất cả các đáp ứng mà chúng ta có thể lấy nó từ một máy chủ được duy trì bởi một công ty hay là nhà cung cấp dịch vụ. Cho phép xác thực nguồn phát của bản tin. Nhươc điểm của mã hoá khoá công cộng là quá trình mã hoá và giải mã rất châm, chậm hơn nhiều so với mã hoá khoá bí mật. Do đó nó thường được sử dụng để mã hoá các khoá phiên, một lượng dữ liệu nhỏ. Một số thuật toán sử dụng mã hoá khoá công cộng như RSA, Diffie-Hellman. Hệ thống mật mã khoá công khai RSA Kỹ thuật mã hoá khoá công cộng RSA được phát triển năm 1977, và cái tên RSA bắt nguồn từ tên của ba nhà phát triển là: Ron Rivest, Adir Shamir và Leonard Adleman. Cơ sở của thuật toán dựa trên tính phức tạp của phép phân tích một số tự nhiên lớn thành các ước số nguyên tố, được hiểu là có thể dễ dàng nhân A và B được kết quả là C nhưng không dễ dàng suy ra A và B khi biết C, với A, B là những số tương đối lớn. Hàm một chiều trong thuật toán RSA có dạng y= f(x)= Xe Các bước thực hiện thuật toán RSA Bước 1: Tạo khoá Tạo hai số nguyên lớn p,q Tính n = p.q; 0(n)=(p-1)(q-1) Chọn ngẫu nhiên 1<e<0(n) thoả gcd (0(n), e)=1 Tính d=e-1mod 0(n) Khoá công khai Ku=[e,n] Khoá bí mật Kr=[d,n] Bước 2: Mật mã Đoạn tin x<n Mật mã y=Xemod n Bước 3 Giải mã Khối tin mã:y Giải mã y=Xemod n. Khoá RSA bao gồm ba giá trị số đặc biệt được sử dụng trong các cặp để mã hoá và giải mã dữ liệu. Khoá công cộng RSA gồm một giá trị khoá công cộng (thường là 317 hay 65.537) và một mạch toán modulus để lấy giá trị tuyệt đối. Modulus là sản phẩm của hai số lớn chính được chọn một cách ngẫu nhiên, được liên kết một cách toán học đến khoá công công được chọn. Khoá riêng được tính toán từ hai số chính phát ra từ modulus và giá trị khoá công cộng. Thực tế, để thực hiện thuật toán mật mã khoá công khai RSA còn phải liên quan đến một loạt các vấn đề lý thuyết số phức tạp, như thuật toán Euclide để tìm ƯSCLN của hai số nguyên, thuật toán Miller-Rabin để kiểm tra tính nguyên tố của các số tự nhiên lớn. Kỹ thuật này tạo ra các khoá công cộng phù hợp với các khoá riêng đặc biệt. Điều này tạo cho RSA những ưu điểm là cho phép người giữa một khoá riêng mã hoá dữ liệu với khoá đó, vì thế bất kỳ người nào có một bản sao của khoá công cộng đều có thể giải mã nó sau đó. Kỹ thuật Diffie-Hellman Kỹ thuật Diffie-Hellman là thuật toán mã hoá khoá công cộng thực tế đầu tiên và trong thực tế kỹ thuật này được úng dụng rất nhiều cho việc quản lý khoá. Thuật toán DH cho phép tự động bảo mật trao đổi khoá qua một mạng không an toàn. Với DH, mỗi đối tượng ngang hàng tạo ra một cặp khoá chung và riêng. Khoá riêng được tạo ra bởi mỗi đối tượng ngang hàng và được giữ bí mật, không bao giờ chia sẻ. Khoá chung được tính toán từ khoá riêng bởi mỗi đối tượng ngang hàng và được truyền trên kênh không an toàn. Mỗi đối tượng tổ hợp khoá chung của đối tượng ngang hàng khác với khoá riêng của chúng, và tính toán để tao ra cùng một số mật mã chia sẻ. Số mật mã chia sẻ đựoc biến đổi thành một khoá chia sẻ. Khoá mật mã chia sẻ luôn truyền trên một kênh không an toàn. Trao đổi khoá DH là một phương thức trao đổi khoá chung cung cấp cho hai đối tượng ngang hàng IPSec thiết lập một mật mã chia sẻ mà chỉ chúng biết. Quá trình DH có thể chia thành 5 bước: Quá trình DH bắt đầu với mỗi đối tượng ngang hàng tạo ra một số nguyên lớn p và q. Mỗi đối tượng ngang hàng gửi cho đối tượng khác số nguyên này của chúng. Ví dụ, A gửi p tới B. Mỗi đối tượng ngang hàng sau đó sẽ sử dụng giá trị p, q để tạo ra g, p là primitive root. Mỗi đối tượng tạo ra một khoá DH riêng A là Xa, B là Xb. Mỗi đối tượng ngang hàng tạo ra một khoá DH chung. Khoá riêng của mỗi đối tượng là sự kết hợp của số Prime p và primitive root g. Đối với A là Ya = g^Xa mod p, với B là Yb=g^Xb mod p. Các khoá chung Ya và Yb được trao đổi trong công cộng. Mỗi đối tượng ngang hàng tạo ra một số mật mã chia sẻ ZZ bằng cách tổ hợp khoá chung nhận được từ đối tượng ngang hàng tương ứng với khoá riêng của nó. Đối với A là ZZ= YbXa mod p, đối với B là ZZ= YaXb mod p. Số mật mã chia sẻ ZZ được sử dụng trong việc tìm ra các khoá mật mã và xác thực. Ví dụ mô tả hoạt động của thuật toán trao đổi khoá DH

Các file đính kèm theo tài liệu này:

  • docchuong 4.doc