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 mật và giải pháp đảm bảo an ninh cho mạng di động băng thông rộng này.
Đề tài đã đề cập đến những khái niệm cơ bản về mạng di động băng thông rộng, công nghệ WIMAX là công nghệ chủ yếu trong mạng này, cũng nhƣ đã nêu ra đƣợc một số nhƣợc điểm về bảo mật và đề xuất giải pháp khắc phục. Trong các giải pháp đó, đề tài cũng tìm hiểu, đánh giá và chọn kỹ thuật mã hóa RSA , cải tiến thuật toán để viết chƣơng trình mô phỏng minh họa.
Do sự công nghệ khá mới mẻ và đang đƣợc nghiên cứu và phát triển cùng với sự giới hạn về kiến thức nên luận văn còn nhiều thiếu sót. Tôi chƣa đề cập đƣợc đầy đủ các vấn đề cần nêu. Do đó rất mong thầy cô và các đồng nghiệp đánh giá, giúp đỡ cũng nhƣ tạo điều kiện cho tôi tìm hiểu thêm về đề tài này trong thời gian tới, nhằm phần nào giúp cho việc đảm bảo an ninh mạng di động băng thông rộng ngày một tốt hơn.
73
TÀI LIỆU THAM KHẢO
Tiếng Việt
[1]. PHẠM HUY ĐIỀN, HÀ HUY KHOÁI, Mã hoá thông tin cơ sở toán học và ứng dụng, Viện toán học,2004.
[2]. NGUYỄN NAM HẢI, PHẠM NGỌC THUÝ, ĐÀO THỊ HỒNG
VÂN, Chứng thực trong thương mại điện tử, Nhà xuất bản khoa học và kỹ thuật, 2004.
[3]. PHAN ĐÌNH DIỆU, Giáo trình lý thuyết mật mã và an toàn thông tin, Nhà xuất bản Đại học Quốc Gia Hà nội, 1999.
[4] Trần Duy Lai, "Mã hóa dựa trên định danh", Tạp chí An toàn thông tin số 4/2009 - ISSN 1859-1256
Tiếng Anh
[5]. A.MENEZES, P.VAN OORSCHOT, AND S. VANSTONE, Handbook of Applied Cryptography, CRC Press, 1996. See www.cacr.math.uwaterloo.ca/hac
[6]. CAY S.HORSTMANN GARY CORNELL, Core Java2Volume II, Advanced Features, The Sun Microsystem press Java Series, 1996
[7]. DOUGLAS R.STINSON, Cryptography theory and practice Second Edition, It was published in March, 1995, by CRC Press, inc
[8]. Website: CHILKAT SOFTWARE INC., http://www.chilkatsoft.com/
[9]. Jeffrey G. Andrews, Arunabha Ghosh, Rias Muhamed, Fundamentals of
WIMAX, Prentice Hall Communications Engineering and Emerging Technologies Series,
2007.
[10] Mohammad Hossain, Analysis and Assessment the Security Issues of IEEE 802.16/WiMax Network. School of Electrical Engineering Blekinge Institute of Technology SE – 371 79 Karlskrona, Sweden, 2011.
74
PHỤ LỤC MÃ NGUỒN CỦA CHƢƠNG TRÌNH Mã nguồn của máy SS:
<!DOCTYPE html> <html>
<head>
<title><%= title %></title> <!--Import materialize.css-->
<link type="text/css" rel="stylesheet" href="css/materialize.min.css" media="screen,projection" />
<!--Let browser know website is optimized for mobile-->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> </head>
<body> <nav>
<div class="nav-wrapper">
<a href="/" class="brand-logo">Lê Đức Huy</a>
<ul id="nav-mobile" class="right hide-on-med-and-down"> <li><a href="/client">SS</a></li>
<li><a href="/server">BS</a></li> <li><a href="/keytool">Giải mã</a></li> <li><a href="/generate">Tạo Key</a></li> </ul>
</div> </nav>
<div class="container"> <div class="row"></div>
75 <div class="row"> <h4>SS (<%- computerName %>)</h4> </div> <form class="col s12"> <div class="row">
<div class="input-field col s4">
<input id="username" type="text" name="username" value="admin"> <label for="username">Username</label>
</div> </div>
<div class="row">
<div class="input-field col s4">
<input id="password" type="password" name="password" value="admin"> <label for="password">Password</label>
</div> </div>
<div class="row">
<button class="btn waves-effect waves-light" type="submit"> Gửi đến BS <i class="material-icons"></i>
</button> </div> </form>
<div class="row" id="client-message"> <h5>Dữ liệu đi</h5>
<!-- <p class="flow-text truncate"></p> --> <div class="input-field col s12">
76
<label for="sent">Dữ liệu đi</label> </div>
</div> <hr/>
<div class="row" id="server-message"> <h5>Dữ liệu đến</h5>
<!-- <p class="flow-text truncate"></p> --> <div class="input-field col s12">
<textarea id="received" class="materialize-textarea"></textarea> <label for="received">Dữ liệu đến</label>
</div> </div>
<div class="row" id="decrypt"> <h5>Dữ liệu đến (giải mã)</h5> <p class="flow-text truncate"></p> </div>
</div>
<!-- Modal Structure -->
<div id="notify" class="modal">
<div class="modal-content center-align"> <h4></h4>
</div> </div>
<!--Import jQuery before materialize.js-->
<script type="text/javascript" src="js/jquery.js"></script>
77
<script src="/socket.io/socket.io.js"></script> <script type="text/javascript">
var socket = io();
jQuery('form').bind('submit', function(e) { e.preventDefault(); jQuery.ajax('/encrypt', { type: "POST", data: jQuery(this).serialize(), success: function(response) {
Materialize.toast('Message sent to server', 4000); jQuery('#client-message #sent').text(response.encrypt); socket.emit('client2server', response.encrypt); } }); return false; }); socket.on('client', function(data) { jQuery('#server-message #received').text(data.serverMessage); jQuery('#decrypt > p').text(data.decrypt); jQuery('#notify h4').text(data.message); jQuery('#notify').openModal(); }); </script> </body> </html>
78
Mã nguồn máy BS:
<!DOCTYPE html> <html>
<head>
<title><%= title %></title> <!--Import materialize.css-->
<link type="text/css" rel="stylesheet" href="css/materialize.min.css" media="screen,projection" />
<!--Let browser know website is optimized for mobile-->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> </head>
<body> <nav>
<div class="nav-wrapper">
<a href="/" class="brand-logo">Lê Đức Huy</a>
<ul id="nav-mobile" class="right hide-on-med-and-down"> <li><a href="/client">SS</a></li>
<li><a href="/server">BS</a></li> <li><a href="/keytool">Giải mã</a></li> <li><a href="/generate">Tạo Key</a></li> </ul> </div> </nav> <div class="container"> <div class="row"></div> <div class="row"> <h4>BS</h4>
79
</div>
<form class="col s12"> <div class="row">
<div class="input-field col s4">
<input id="ip" type="text" name="ip" value="http://168.200.210.2"> <label for="ip">IP</label>
</div> </div>
<div class="row">
<div class="input-field col s4">
<input id="port" type="text" name="port" value="6550"> <label for="port">Port</label>
</div> </div>
<div class="row">
<div class="input-field col s4">
<input id="series" type="text" name="series" value="user is ok"> <label for="series">Series</label>
</div> </div>
<div class="row">
<button class="btn waves-effect waves-light" type="submit"> Gửi đến SS <i class="material-icons"></i>
</button> </div> </form>
80
<div class="row" id="client-message"> <h5>Dữ liệu đến</h5>
<!-- <p class="flow-text truncate"></p> --> <div class="input-field col s12">
<textarea id="received" class="materialize-textarea"></textarea> <label for="received">Dữ liệu đến</label>
</div> </div>
<div class="row" id="decrypt"> <h5>Dữ liệu đến (giải mã)</h5> <p class="flow-text truncate"></p> </div>
<hr/>
<div class="row" id="server-message"> <h5>Dữ liệu đi</h5>
<!-- <p class="flow-text truncate"></p> --> <div class="input-field col s12">
<textarea id="sent" class="materialize-textarea"></textarea> <label for="sent">Dữ liệu đi</label>
</div> </div> <table class="bordered"> <thead> <tr> <th data-field="id">Username</th> <th data-field="name">Password</th> </tr>
81 </thead> <tbody> <tr> <td>admin</td> <td>admin</td> </tr> </tbody> </table> </div> <!-- Modal Structure -->
<div id="notify" class="modal">
<div class="modal-content center-align"> <h4></h4>
</div> </div>
<!--Import jQuery before materialize.js-->
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/materialize.min.js"></script> <script src="/socket.io/socket.io.js"></script>
<script type="text/javascript"> var socket = io();