3.1.1. Đặt vấn đề bài toán
Trong Wimax, một SS khi kết nối vào mạng di động băng rộng, nó cố gắng bằng mọi cách để có đƣợc chứng thực từ BS. Tuy nhiên, lại không có quy định cho việc xác thực chính BS đó.Bởi vì sự khiếm khuyết này, một BS giả mạo có thể giả dạng nhƣ một BS hợp pháp mà một SS không thể nhận ra.Vì vậy, BS cũng phải đƣợc xác thực nhƣ là SS. Giao thức xác nhận hiện tại của tiêu chuẩn IEEE 802.16 đƣợc thể hiện nhƣ trong các bƣớc dƣới đây.
Message 1: SS BS: User/Password Message :2 BS SS: IP/Port/Series
Giao thức này hiện tại không có phƣơng pháp tiếp cận để xác định sự xác thực BS.Một BS giả mạo có thể nắm bắt đƣợc tin nhắn từ SS thay vì BS hợp pháp và có thể xuất hiện nhƣ chính nó là một BS hợp pháp. Có thể các BS giả mạo không thể mở thông điệp dữ liệu đƣợc mã hóa nhƣng nó có thể dễ dàng phát lại các thông điệp đó đến BS lặp đi lặp lại, và có thể làm cho các SS không đƣợc thẩm định bởi BS hợp pháp. Do đó các dữ liệu quan trọng sẽ không đƣợc bảo đảm nếu dựa trên giao thức này.
Đề xuất của tôi ở đây là việc xác thực SS và BS cần có hai chiều , nghĩa là BS cũng phải đƣợc xác thực bởi SS thông qua một máy chủ xác thực có chứa thông tin xác thực. Hay nói cách khác, giao thức xác thực này sẽ có mặt ở tầng vật lý của các thực thể truyền thông trong mạng di động băng thông rộng.Authentication Server (AS) có chứa series của BS.Mỗi thiết bị BS đƣợc gán một mã bí mật và duy nhất.Ở đây tôi đề xuất một thuật toán để làm cho mạng trở nên đáng tin cậy.
3.1.2. Mô tả thuật toán
Trong phiên truyền dẫn, một SS sẽ khởi đầu phiên.Nó gửi các định danh, các khả năng và các yêu cầu khác của mình đến BS.Sau khi kiểm tra các tài liệu đó, BS gửi trả lời cấp phép cho SS. Thông tin trả lời này phải đƣợc kiểm tra cho dù đó là từ các BS hợp pháp hoặc BS giả mạo.Bên trong của SS đã chứa một cơ sở dữ liệu
57 bao gồm các code series của toàn bộ các BS trong hệ thống . Cơ sở dữ liệu này sẽ đƣợc update liên tục từ máy chủ xác thực ( AS) . Nếu BS không phải là gỉa mạo , SS sẽ kết nối đến BS đó và nhận IP, Port thực hiện quá trình nhận truyền dữ liệu qua mạng. Các bƣớc của thuật toán đƣợc hiển thị ở trong hình dƣới đây:
Bƣớc 1:
Bƣớc 2:
Bƣớc 3:
Hình 17: Quá trình xác thực lẫn nhau để tránh BS giả mạo tấn công
Hình 3.1 cho thấy giao thức xác thực mới để tránh giả mạo BS.Ở đây BS gửi lại thông điệp trả lời xác thực cho SS hợp lệ, bao gồm BS_series của nó mà SS sẽ đối chiếu với các BS_series có trong cơ sở dữ liệu luôn đƣợc cập nhật từ Authentication Server(AS). Nếu một BS của kẻ tấn công nào đó cố gắng để kết nối đến mạng, nó sẽ bị phát hiện. Cho dù BS muốn hay không muốn, nhƣng SS hợp pháp sẽ kiểm tra BS_series của nó và các thông tin khác. Việc mã hóa đƣợc sử dụng trong tất cả các trƣờng hợp sử dụng khóa riêng cũng nhƣ khóa công khai.
Xác thực SS
Quá trình xác thực sẽ diễn ra tại BS dựa vào cơ sở dữ liệu đã đƣợc cập nhật từ máy chủ AS. SS sẽ gửi thông tin đăng nhập đã đƣợc mã hóa bằng RSA tới BS. BS giải mã thông tin bằng khóa riêng bí mật. Nếu đúng tài khoản , mật khẩu thì
SS BS SS BS SS BS Login – RSA (ID,Password) Information-RSA (IP,Port,Series) Connect
58 cho phép kết nối và gửi thông tin cấu hình , mã BS tới cho SS. Nếu không đúng thì không cho phép kết nối. Sơ đồ xác thực SS:
Đúng Sai Đã nhận đƣợc KpubSS (ID+Port+Serie) Giải mã KprvSS
(KpubSS(ID+Port+Serie))
Thoát User KpubBS (ID+Pass) ID+Pass CA Certificate_BS Gửi KpubBS (ID+Pass) cho BS Kiểm tra (ID+Port+Serie) Đúng Cấu hình (ID+Port+Serie) Sai Bắt đầu
Thông báo lỗi
59
Xác thực BS
Quá trình xác thực sẽ diễn ra tại SS dựa vào cơ sở dữ liệu đã đƣợc cập nhật từ máy chủ AS. SS sẽ nhận thông tin cấu hình để kết nối từ phía AS bao gồm : địa chỉ IP, thông tin cổng ( Port) và một đoạn code BS. Toàn bộ thông tin này sẽ đƣợc mã hóa bởi RSA. Khi SS nhận đƣợc , nó sẽ chƣa kết nối tới BS mà sẽ kiểm tra đoạn code BS bằng cách so sánh với một cơ sở dữ liệu chứa toàn bộ các đoạn code BS – đƣợc cập nhật thƣờng xuyên từ máy chủ AS. Nếu đoạn code giải mã ra mà đúng , tức là BS không phải là giả mạo, lúc nào SS sẽ cấu hình theo thông tin mà BS gửi , kết nối và thực hiện quá trình truyền dữ liệu.
Hình 19: Lƣu đồ thuật toán BS
Đúng Sai Kiểm tra ID+Pass Mã hóa KpubSS (ID+Port+Serie) Thoát SS BS giải mã KprvBS (KpubBS (ID+Pass)) KpubBS (ID+Pass) CA Certificate_SS Nhận đƣợc xác thực SS Đúng Kết nối Sai Bắt đầu
Thông báo lỗi
Gửi KprvSS (ID+Port+Serie) cho SS
60
Truyền thông SS và BS
BS khi sản xuất ra luôn tồn tại BS_series và đƣợc cập nhật ngay vào AS . Một AS chỉ cho phép BS hợp pháp hoạt động và không có các phần tử đáng lo ngại khác. SS cập nhật dữ liệu từ AS, vì thế nó có thể xác minh BS từ các dữ liệu có trong AS đáng tin cậy. Hình 3.2 cho thấy sơ đồ thông điệp tổng thể của một phiên truyền thông xác thực thành công giữa một SS và BS, nơi mà cả hai có đƣợc sự giúp đỡ từ bên thứ ba đáng tin cậy là AS (Authentication Server). Tất cả các thông điệp đƣợc mô tả trong sơ đồ trao đổi thông điệp dƣới đây.
Hình 20: Quy trình truyền thông tổng thể.
Message 1: SS bắt đầu phiên truyền thông xuất trình chứng nhận và các thông tin của nó có đánh dấu thời gian (time stamp) cho BS
Message 2: BS mã hóa các thông tin riêng của mình bằng khóa công khaicủa SS rồi gửi lại cho SS.
Message 3: SS xác thực BS và phiên truyền thông an toàn của SSđƣợc bắt đầu.
3.2 Xây dựng chƣơng trình mô phỏng 3.2.1 Lựa chọn công cụ và ngôn ngữ 3.2.1 Lựa chọn công cụ và ngôn ngữ
Chƣơng trình sử dụng công nghệ Web nên không yêu cầu quá cao về cấu hình đối với với máy tính có cấu hình nhƣ sau:
CPU: Intel (R) Core (TM) i3 CPU - M 370 @ 2.40 GHz
Memory Type: DDR3
Memory Size: 4096 Mbytes (4 GB) Message 1: SS BS: SSID
Message 2: BS SS: | BSID | BS_SERIES Message 3: SS BS: (Tiếp tục truyền thông)
61
HDD: 320 GB
Chƣơng trình đƣợc cài đặt trên Môi trƣờng Microsoft Windows, sử dụng Node.js . Node.js là cross-platform runtime environment cho phía máy chủ và các ứng dụng mạng. Ứng dụng Node.js đƣợc viết bằng JavaScript, và có thể hoạt động trên các hệ điều hành phổ biến nhƣ OS X, Microsoft Windows, Linux và FreeBSD.
Các ngôn ngữ đƣợc sử dụng trong chƣơng trình là các ngôn ngữ trong công nghệ Web:
HTML (tiếng Anh, viết tắt cho HyperText Markup Language, tức là "Ngôn ngữ Đánh dấu Siêu văn bản") là một ngôn ngữ đánh dấu đƣợc thiết kế ra để tạo nên các trang web, nghĩa là các mẩu thông tin đƣợc trình bày trên World Wide Web. Đƣợc định nghĩa nhƣ là một ứng dụng đơn giản của SGML, vốn đƣợc sử dụng trong các tổ chức cần đến các yêu cầu xuất bản phức tạp, HTML giờ đây đã trở thành một chuẩn Internet do tổ chức World Wide Web Consortium (W3C) duy trì. Phiên bản chính thức mới nhất của nó hiện là HTML 4.01 (1999). Sau đó, ngƣời ta đã thay thế nó bằng XHTML. Hiện nay, HTML đang đƣợc phát triển tiếp với phiên bản HTML5 hứa hẹn mang lại diện mạo mới cho Web. 2. Web Programming Language.
Trong tin học, các tập tin định kiểu theo tầng – dịch từ tiếng Anh là Cascading Style Sheets (CSS) – đƣợc dùng để miêu tả cách trình bày các tài liệu viết bằng ngôn ngữ HTML và XHTML. Ngoài ra ngôn ngữ định kiểu theo tầng cũng có thể dùng cho XML, SVG, XUL v.v...Các đặc điểm kỹ thuật của CSS đƣợc duy trì bởi World Wide Web Consortium (W3C).Thay vì đặt các thẻ qui định kiểu dáng cho văn bản HTML (hoặc XHTML) ngay trong nội dung của nó, bạn nên sử dụng CSS.
JavaScript [6] theo phiên bản hiện hành, là một ngôn ngữ lập trình kịch bản dựa trên đối tƣợng đƣợc phát triển từ các ý niệm nguyên mẫu. Ngôn ngữ này đƣợc dùng rộng rãi cho các trang web, nhƣng cũng đƣợc dùng để tạo khả năng viết script sử dụng các đối tƣợng nằm sẵn trong các ứng dụng. Nó vốn đƣợc phát triển bởi Brendan Eich tại Hãng truyền thông Netscape với cái tên đầu tiên Mocha, rồi sau đó đổi tên thành LiveScript, và cuối cùng thành JavaScript. Giống Java, JavaScript có cú pháp tƣơng tự C, nhƣng nó gần với Self hơn Java. .js là phần mở rộng thƣờng đƣợc dùng cho tập tin mã nguồn JavaScript .
62 Cùng thời điểm Netscape bắt đầu sử dụng công nghệ Java trên trình duyệt Netscape, LiveScript đã đƣợc đổi tên thành JavaScript để đƣợc chú ý hơn bởi ngôn ngữ lập trình Java lúc đó đang đƣợc coi là một hiện tƣợng. JavaScript đƣợc bổ sung vào trình duyệt Netscape bắt đầu từ phiên bản 2.0b3 của trình duyệt này vào tháng 12 năm 1995. Trên thực tế, JavaScript không đƣợc phát triển dựa từ Java. Do đó JavaScript chỉ dựa trên các cách đặt tên của Java. Java Script gồm 2 mảng là client-server thực hiện lệnh trên máy của end-user và web-server.
Sau thành công của JavaScript, Microsoft bắt đầu phát triển JScript, một ngôn ngữ có cùng ứng dụng và tƣơng thích với JavaScript. JScript đƣợc bổ sung vào trình duyệt Internet Explorer bắt đầu từ Internet Explorer phiên bản 3.0 đƣợc phát hành tháng 8 năm 1996.
DOM (Document Object Model), một khái niệm thƣờng đƣợc nhắc đến với JavaScript trên thực tế không phải là một phần của chuẩn ECMAScript, DOM là một chuẩn riêng biệt có liên quan chặt chẽ với XML.
Trên trình duyệt, rất nhiều trang web sử dụng JavaScript để thiết kế trang web động và một số hiệu ứng hình ảnh thông qua DOM. JavaScript đƣợc dùng để thực hiện một số tác vụ không thể thực hiện đƣợc với chỉ HTML nhƣ kiểm tra thông tin nhập vào, tự động thay đổi hình ảnh,... Ở Việt Nam, JavaScript còn đƣợc ứng dụng để làm bộ gõ tiếng Việt giống nhƣ bộ gõ hiện đang sử dụng trên trang Wikipedia tiếng Việt. Tuy nhiên, mỗi trình duyệt áp dụng JavaScript khác nhau và không tuân theo chuẩn W3C DOM, do đó trong rất nhiều trƣờng hợp lập trình viên phải viết nhiều phiên bản của cùng một đoạn mã nguồn để có thể hoạt động trên nhiều trình duyệt. Một số công nghệ nổi bật dòng JavaScript để tƣơng tác với DOM bao gồm DHTML, Ajax và SPA.
Bên ngoài trình duyệt, JavaScript có thể đƣợc sử dụng trong tập tin PDF của Adobe Acrobat và Adobe Reader. Điều khiển Dashboard trên hệ điều hành Mac OS X phiên bản 10.4 cũng có sử dụng JavaScript. Công nghệ kịch bản linh động (active scripting) của Microsoft có hỗ trợ ngôn ngữ JScript làm một ngôn ngữ kịch bản dùng cho hệ điều hành. JScript.NET là một ngôn ngữ tƣơng thích với CLI gần giống JScript nhƣng có thêm nhiều tính năng lập trình hƣớng đối tƣợng.
63
3.2.2 Hoạt động và giao diện của chƣơng trình
Chƣơng trình khởi động sẽ có giao diện chính bao gồm:
Máy khách giao diện bao gồm : thông tin xác thực ( Tài khoán , mật khẩu , dữ liệu gửi đi , dữ liệu nhận về , giải mã dữ liệu).
64 Máy chủ bao gồm các thông tin sẽ sinh ra để gửi đến cho máy khách cấu hình: địa chỉ IP,Port, Series, dữ liệu gửi đi , dữ liệu đến, giải mã dữ liệu.
65 Sau khi điền thông tin kết nối bao gồm Username và Password và gửi dữ liệu đi thì dữ liệu sẽ đƣợc mã hóa bằng RSA và gửi đi :
66 BS khi nhận đƣợc dữ liệu sẽ giải mã và kiểm tra tài khoản đó nếu đúng sẽ cho phép đăng nhập :
67 Sai thì từ chối đăng nhập :
68 Trƣờng hợp đúng tài khoản mật khẩu BS sẽ gửi lại cho SS thông tin để kết nối bao gồm IP, Port và một đoạn series của BS. Nếu đoạn series đúng thì SS sẽ thực hiện xác thực và bắt đầu truyền thông:
69 Còn nếu không đúng Series tức là BS giả mạo SS sẽ không kết nối và thông báo BS này là giả mạo:
70
3.3 Đánh giá hiệu quả của giải pháp cải tiến 3.3.1 Phòng chống tấn công Replay 3.3.1 Phòng chống tấn công Replay
Khi SS gửi ID và các thông tin ban đầu của nó cho BS, kẻ tấn công có thể có đƣợc các thông tin này và sau đó liên tục gửi đến BS. BS xem xét tính hợp pháp của SS, phát hiện ra sự giả dối và từ chối. Khi SS hợp pháp cố gắng để kết nối sau đó, các BS có thể chặn nó vĩnh viễn. Đây là cuộc tấn công replay trong đó kẻ tấn công mặc dù không thể đọc dữ liệu của SS hợp pháp nhƣng có thể khiến cho SS bị vô hiệu. Một dấu thời gian (time stamp) đƣợc sử dụng ở đây là rất cần thiết cho nó.Time stamp chỉ đơn giản là xác định thời điểm hành động, khi thông điệp hoặc truyền tải diễn ra.Time stamp thƣờng có chiều dài khoảng thời gian cố định. Một chữ ký trên một số dữ liệu (trong chứng nhận hay thông điệp) bao gồm một thời hạn (chiều dài có thể là trong mili giây), đƣợc gọi là một dấu thời gian time stramp. Bất kỳ một sự chuyển giao hay truyền thông sau khoảng thời gian này hệ thống sẽ không cho hoạt động,và điều này làm cho hệ thống an toàn đối với các cuộc tấn công từ bên ngoài vì những kẻ tấn công sẽ cố gắng để đạt đƣợc mục đích khi thời gian đã hết hạn (chẳng hạn nhƣ kẻ tấn công cần có thời gian để xử lý và truyền lại). Điều này sẽ thông báo cho BS về thời gian và một kẻ tấn công sẽ không thu đƣợc thành công trong động cơ xấu của mình. Thủ tục này có thể đƣợc hiển thị trong hình 21. Trong hình này, nó cho thấy một SS liên lạc với BS bằng cách sử dụng một time stamp.
Hình 21: Phòng chống tấn công phát lại bằng cách sử dụng Timestamp
3.3.2 Phòng chống tấn công Man in Middle Attack và Denial of Service
Với kịch bản trên, cả hai cuộc tấn công này đều đƣợc phòng tránh. Chúng ta có thể xem lại các cuộc tấn công có thể xảy ra nhƣ thế nào cho các thuê bao. Khi kẻ tấn công có đƣợc các dữ liệu ban đầu mà một thuê bao gửi đến BS lần đầu tiên,
Message 1: SS BS: Cert (SS) (Auth Req message) | Capabilities | SSID | TS
Message 2: BS SS: KUSS (AK) | SeqNo | Lifetime | SAIDList | BSID | BS_Code
71 kẻ tấn công có thể có đƣợc một bản sao của nó và cố gắng để gửi dữ liệu đó đến BS nhiều lần. BS sau đó xem xét SS ban đầu nhƣ là một một SS giả mạo và từ chối dịch vụ. Tuy nhiên, trong kịch bản đề xuất này, những kẻ tấn công không thể gửi dữ liệu đó đến BS có sử dụng một dấu thời gian (time stamp). Vì sử dụng time stamp, các BS sẽ không cho phép bất kỳ dữ liệu không đƣợc mã hóa nào gửi đến nó. BS biết khóa công khai của SS, BS sẽ chấp nhận các dữ liệu đƣợc mã hóa từ SS đó.Và kẻ tấn công sẽ không dễ để giải quyết vấn đề dấu thời gian. Vì vậy, cuộc tấn công man in middle attack và từ chối dịch vụ có thể dễ dàng đƣợc phòng tránh.
72
KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN
Hiện nay, thế giới công nghệ nói chung, mạng máy tính có dây và mạng không dây nói riêng phát triển với tốc độ chóng mặt. Công nghệ mạng di động băng thông rộng còn khá mới mẻ đối với nƣớc ta, một đất nƣớc có nền công nghệ thông tin mới ở mức đang phát triển so với mặt bằng chung của thế giới trong thời điểm hiện tại. Nhƣng với tốc độ phát triển nhanh chóng của công nghệ mạng không dây, cũng nhƣ ngành học cần tới sự tiên phong tìm hiểu công nghệ mới, tôi đã lựa chọn tìm hiểu và làm luận văn tốt nghiệp về vấn đề tìm hiểu điểm yếu bảo