Nghiên cứu thuật toán mã hóa đối xứng RSA

Một phần của tài liệu nghiên cứu giải pháp bảo mật mạng không dây wlan (Trang 82)

Ở phần trên chúng ta đã nghiên cứu về các phương pháp mã hóa đối xứng. Ứng dụng trong luận văn này, khi phối hợp sử dụng token key, em áp dụng thuật toán mã hóa RSA, mã hóa từng gói tin với khóa công khai và khóa bí mật nằm trong token của mỗi Client.

2.3.4.1. Mô tả sơ lược

Thuật toán RSA có hai khóa: khóa công khai (hay khóa công cộng) và khóa bí mật (hay khóa cá nhân). Mỗi khóa là những số cố định sử dụng trong quá trình mã hóa và giải mã. Khóa công khai được công bố rộng rãi cho mọi người và được dùng để mã hóa. Những thông tin được mã hóa bằng khóa công khai chỉ có thể được giải mã bằng khóa bí mật tương ứng. Nói cách khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá nhân (bí mật) mới có thể giải mã được.

Ta có thể mô phỏng trực quan một hệ mật mã khoá công khai như sau: Bob muốn gửi cho Alice một thông tin mật mà Bob muốn duy nhất Alice có thể đọc được. Để làm được điều này, Alice gửi cho Bob một chiếc hộp có khóa đã mở sẵn và giữ lại chìa khóa. Bob nhận chiếc hộp, cho vào đó một tờ giấy viết thư bình thường và khóa lại (như loại khoá thông thường chỉ cần sập

chốt lại, sau khi sập chốt khóa ngay cả Bob cũng không thể mở lại được không đọc lại hay sửa thông tin trong thư được nữa). Sau đó Bob gửi chiếc hộp lại cho Alice. Alice mở hộp với chìa khóa của mình và đọc thông tin trong thư. Trong ví dụ này, chiếc hộp với khóa mở đóng vai trò khóa công khai, chiếc chìa khóa chính là khóa bí mật.

2.3.4.2. Nguyên tắc thuật toán Tạo khóa

Hình 2.29. RSA – Tạo khóa Mã hóa

Giải mã

Hình 2.31. RSA – Giải mã Ví dụ

Sau đây là một ví dụ với những số cụ thể. Ở đây chúng ta sử dụng những số nhỏ để tiện tính toán còn trong thực tế phải dùng các số có giá trị đủ lớn.

Lấy:

p = 61 — số nguyên tố thứ nhất (giữ bí mật hoặc hủy sau khi tạo khóa) q = 53 — số nguyên tố thứ hai (giữ bí mật hoặc hủy sau khi tạo khóa) n = p*q = 3233— môđun (công bố công khai)

e = 17 — số mũ công khai d = 2753— số mũ bí mật

Khóa công khai là cặp (e, n). Khóa bí mật là d. Hàm mã hóa là: encrypt(m) = m^e mod n = m^17 mod 3233

với m là văn bản rõ. Hàm giải mã là:

decrypt(c) = c^d mod n = c^2753 mod 3233 với c là văn bản mã.

Để mã hóa văn bản có giá trị 123, ta thực hiện phép tính: encrypt(123) = 12317 mod 3233 = 855

Để giải mã văn bản có giá trị 855, ta thực hiện phép tính: decrypt(855) = 8552753 mod 3233 = 123

Cả hai phép tính trên đều có thể được thực hiện hiệu quả nhờ thuật toán bình phương và nhân.

2.4. Kết chương

Chương này đã trình bày thực trạng mất an ninh an toàn của mạng không dây, các kỹ thuật mật mã ứng dụng để bảo mật mạng không dây và một số giải pháp cho việc đảm bảo an ninh an toàn cho mạng không dây mà cụ thể là mạng WLAN. Giải thích hoạt động của WEP và lý do tại sao không nên sử dụng nó. Khi chuẩn IEEE 802.11 được công bố ra công chúng thì đi kèm với nó là WEP, một biện pháp bảo mật mạng không dây đầu tiên. Phần này cũng cho ta thấy những điểm yếu của WEP, những lỗ hổng mà khi thiết kế đã không được những nhà chuyên gia bảo mật quan tâm đến. Tuy nhiên, cũng qua đó, ta càng hiểu thêm được tại sao những phương pháp bảo mật sau này lại đảm bảo an toàn hơn.

Các nhà thiết kế đã tìm cách khắc phục những hạn chế của WEP và tạo ra một giao thức bảo mật mới phù hợp với nó. TKIP là một biện pháp quan trọng cung cấp chế độ bảo mật thực sự mà WEP không thể có được. Mọi điểm yếu cơ bản của WEP đã được khắc phục, bao gồm cả tấn công vào khóa yếu, nghe lén, gửi lại gói tin cũng như các điểm yếu khác. Thêm vào đó, TKIP được thiết kế bởi những chuyên gia cao cấp trong lĩnh vực bảo mật và đảm bảo được tính toàn vẹn dữ liệu cho người sử dụng.

Một lượng lớn các hệ thống WLAN trên thế giới đã được triển khai với thức bảo mật dựa trên thuật toán RC4. Các hệ thống này sử dụng WEP hoặc TKIP. Tuy nhiên, khi ủy bản về IEEE 802.11 tìm kiếm một giải pháp bảo mật mới và muốn xây dựng nó từ đầu thì họ đã lựa chọn AES. AES là một thuật

toán mã hóa được dùng theo nhiều cách khác nhau để tạo ra các giao thức bảo mật.

Phần tiếp theo sẽ nghiên cứu, xây dựng một mô hình, đề xuất giải pháp, phát triển thử nghiệm một ứng dụng nhằm đảm bảo an ninh an toàn cho mạng WLAN.

Chương 3

XÂY DỰNG PHẦN MỀM BẢO MẬT MẠNG KHÔNG DÂY WLAN SỬ DỤNG USB ETOKEN

3.1. Phân tích yêu cầu, đề xuất giải pháp 3.1.1. Bài toán đặt ra

Với người dùng hiện nay, mạng Wifi đang trở nên rất phổ biến và dần dần thay thế mạng không dây. Ở những nơi mạng LAN khó triển khai như bệnh viện, trường học, quán cafe, các công ty… thì mạng WLAN như một cứu cánh tuyệt vời, giảm thiểu tối đa các thiết bị cứng như đường dây, switch… Song hành với lợi ích mang lại là những hiểm họa như lộ thông tin, xâm nhập trái phép… Do mạng không dây là vô tuyến, ai bắt được mạng thì cũng “có thể” xâm nhập vào mạng. Với những công ty thì điều này là rất nguy hiểm, hoàn toàn có thể bị đánh cắp, gây rò rỉ thông tin. Các phương thức bảo mật được áp dụng hiện nay thường thấy là đặt pass wifi bằng WPA hoặc WPA2, nhưng trên mạng internet ta dễ dàng tìm thấy những video, các tut chia sẻ cách “hack WPA2” sử dụng linux. Bài toán đặt ra ở đây là làm cách nào, thông tin chia sẻ trong mạng WLAN được bảo vệ, mã hóa, quản lý được số người truy cập mạng LAN một cách cẩn thận tới từng đơn vị sử dụng mà vẫn có sự linh động khi di chuyển.

Để giải quyết yêu cầu trên, em đã xây dựng phần mềm bảo mật mạng không dây WLAN sử dụng USB eToken để quản lý đăng nhập và mã hóa gói tin khi di chuyển trong WLAN. Mục đích đặt ra: muốn sử dụng phần mềm phải có eToken, mỗi gói tin khi các client giao tiếp với nhau đều được mã hóa đảm bảo dù có bị nghe trộm hay bắt gói tin, nếu không có eToken thì không thể giải mã được những gói tin đã nhận. Nâng cao bảo mật an toàn, phù hợp với các công ty có nhu cầu bảo mật, hạn chế số người sử dụng phần mềm bằng cách phát cho nhân viên USB eToken.

3.1.2. Sơ đồ ứng dụng 3.1.2.1. Đăng kí 3.1.2.1. Đăng kí (adsbygoogle = window.adsbygoogle || []).push({});

Hình 3.1 Sơ đồ đăng kí token đăng kí tài khoản

Người dùng muốn đăng kí phải cầm token lên Server để đăng kí, Database do Server quản lý sẽ lưu trữ tên đăng nhập, mật khẩu và khóa công khai của từng token. Sau khi đăng kí thành công, người dùng mới có thể mang token về client của mình và sử dụng phần mềm. Điều này hướng tới mục đích đăng kí token một cách tập trung tại một phòng nào đó trong công ty, chuyển quản lý token (tức quản lý người dùng, tránh người dùng tự đăng kí tại client).

Hình 3.2. Đăng nhập 3.1.2.3.Trao đổi giữa Client và Client

Hình 3.3. Trao đổi giữa Client A và Client B

Ở đây ta xét trường hợp tin tổng quát. Chat hay gửi file giữa các Client với nhau qua socket đều quy thành các “gói”. Server quản lý tất cả Public Key của các Client đang online. Client A lấy khóa công khai của Client B và

mã hóa gói tin cần gửi. Client B khi nhận gói tin, lấy khóa bí mật của mình để giải mã gói tin. Như vậy ai cũng có thể mã hóa gói tin nhưng muốn giải mã thì chỉ có thể giải mã bằng khóa bí mật, nằm trong token của người nhận

3.1.2.4. Trao đổi giữa Server – Client

Hình 3.4. Trao đổi giữa Server – Client

Về vấn đề trao đổi file giữa Server và Client có đôi chút khác biệt khi trao đổi file giữa Client và Client. Ở đây khi trao đổi file, ta không mã hóa bằng token vì hai lý do sau:

- Do Server bật liên tục và là duy nhất, không cần phải sử dụng eToken

- Muốn tự viết phần mã hóa RSA như đã trình bày ở trên.

Với những lý do đó, khi trao đổi giữa Server và Client, em sử dụng một file key.dat có lưu trữ 3 giá trị e, p, q để phục vụ cho thuật toán RSA tự viết.

Việc sử dụng key.dat hay token là tương đương nhau. Tùy theo nhu cầu của công ty mà ta có thể chuyển giữa việc dùng token hay dùng key.dat.

3.1.3. Môi trường hệ thống 3.1.3.1. Các tác nhân của hệ thống 3.1.3.1. Các tác nhân của hệ thống

- Quản trị Server: Là người được quản lý server, khởi động, tắt Server. Quản lý thêm sửa xóa các tài khoản người sử dụng. Có thể chat và gửi file đồng thời tới mọi Client đang online.

- Người dùng: Mỗi người dùng là một client, tham gia sử dụng phần mềm, họ phải đăng nhập bằng token để sử dụng phần mềm. Có thể chat, gửi file tới Server hoặc Client khác đang online.

3.1.3.2. Đặc tả các Usecase:

Các chức năng cho người quản trị Server

Hình 3.5. Usecase chức năng người quản trị Server

Hình 3.6. Usecase Quản lý thông tin tài khoản Usecase Giao tiếp với mọi Client

Hình 3.7. Usecase giao tiếp với mọi Client Các chức năng cho người dùng Client

Hình 3.8. Chức năng người dùng Client Usecase giao tiếp với Server

Hình 3.9. Usecase Client giao tiếp với Server 3.1.4. Thiết kế cơ sở dữ liệu

Với mục đích sử dụng cho các công ty là chính, cơ sở dữ liệu của chương trình khá đơn giản, lưu trữ tài khoản, mật khẩu, tên nhân viên, khóa công khai của nhân viên và có thể thêm thắt các thông tin khác tùy ý. Ở đây hướng chính của phần mềm là demo luận văn, em chỉ thêm một trường là ngày tháng, không có ý nghĩa gì với chương trình, chỉ mang tính demo. Bảng cơ sở dữ liệu trên là bảng của các Client. Server chỉ có một nên không có đăng nhập và quản lý bằng cơ sở dữ liệu.

3.1.5. USB Token

3.1.5.1. Đôi nét về USB Token

eToken Pro USB là một sản phẩm thuộc dòng sản phẩm eTokenTM của Aladdin Knowledge Systems Ltd., Israel.

eToken Pro USB là một thiết bị bảo mật cao, giao tiếp với máy tính qua cổng USB, sử dụng tiện lợi, an toàn, dễ mở rộng. eToken Pro USB hỗ trợ tất cả hạ tầng khóa công khai eToken PKI như xác thực người dùng, quản lý mật khẩu, bảo mật chữ ký số và bảo mật dữ liệu...

Ngoài ra, do eToken Pro USB hỗ trợ các giao diện và hệ thống bảo mật theo tiêu chuẩn công nghiệp, nên eToken Pro USB còn đảm bảo việc tích hợp dễ dàng với hạ tầng và các chính sách bảo mật.

Đặc tính kỹ thuật của eToken Pro USB được thể hiện trong bảng dưới đây: (adsbygoogle = window.adsbygoogle || []).push({});

Hình 3.11. Đặc tính kĩ thuật của USB eToken

Dựa trên các tiêu chí đánh giá, eToken có tính năng nổi trội về khả năng hỗ trợ hệ điều hành, hỗ trợ các ứng dụng PKI, hỗ trợ các chuẩn bảo mật và khả năng tích hợp.

3.2. Xây dựng ứng dụng

3.2.1. Giới thiệu chung về ứng dụng

Ứng dụng là một hệ thống Server – Client chạy trong mạng LAN nội bộ, có thể là mạng có dây hoặc không dây. Do hướng của luận văn là bảo mật mạng không dây, phần mềm được thiết kế để có thể mã hóa các gói tin, hạn chế người dùng…chống lại các cuộc tấn công nghe trộm, bắt gói tin, đảm bảo một mức độ bảo mật của các công ty. Hệ thống sử dụng ngôn ngữ lập trình Java và quản trị cơ sở dữ liệu SQL Server. Các chức năng chính của chương trình là chat và gửi file giữa các người dùng trong mạng. Các gói tin đều được mã hóa trước khi gửi đi và giải mã khi nhận về. Sau đây là sơ đồ ứng dụng:

Hình 3.12. Mô hình ứng dụng 3.2.2. Server

Server của hệ thống là nơi khởi tạo kết nối. Các chức năng của Server:

1. Khởi tạo kết nối, làm điểm truy nhập của các Client 2. Lưu giữ các PublicKey của các Client đang kết nối 3. Đăng kí mới, sửa, xóa các eToken đã đăng kí tài khoản 4. Chat với mọi Client

5. Gửi file cho mọi Client

Trước tiên, người dùng vào màn hình chính của chương trình. Do mỗi lần sử ở một mạng WLAN khác nhau, máy làm Server sẽ được cấp một địa chỉ IP khác nhau. Trên thực tế nếu dự án được triển khai thực sự. Server sẽ nằm cố định ở một máy và kết nối với một mạng WLAN cũng cố định, ta sẽ không cần quan tâm tới giải IP của Server nữa. Để vào mục quản lý tài khoản, ta ấn nút Account Manager, để bắt đầu Server. Ta ấn nút Start. Các Client sau khi kết nối tới Server này sẽ hiển thị ở ô bên trái màu vàng.

Hình 3.13. Màn hình chính của Server

Dưới đây là màn hình quản lý tài khoản, cũng chính là cơ sở dữ liệu của hệ thống. Lưu trữ lại các thông tin cùng với khóa công khai.

Hình 3.14. Màn hình quản lý tài khoản

Với mục tiêu hạn chế và quản lý người dùng. Những ai muốn sử dụng phần mềm phải có token và phải mang token đó để cho Server để đăng kí sử dụng.

Sau khi thêm tài khoản, người quản trị Server có thể sửa đổi thông tin của tài khoản đó, trừ tên đăng nhập.

3.2.3. Client

Client của hệ thống là những người sử dụng mạng nội bộ. Họ bắt buộc phải có token, ở đây đóng vai trò như chìa khóa để sử dụng phần mềm này. Nếu trong quá trình sử dụng, rút token, Client sẽ kết thúc. Các chức năng của Client:

1. Chat với Server, Client 2. Gửi file tới Server, Client

3. Hiển thị danh sách các Client đang sử dụng phần mềm

Trước tiên, người dùng cần cắm token vào máy tính chạy Client, sau đó chạy phần mềm để đăng nhập:

Hình 3.16. Màn hình đăng nhập

Nếu đăng nhập thành công, ta sẽ vào được giao diện chính của Client. Đây là màn hình có thể xem danh sách Client đang online và cũng nơi giao tiếp trực tiếp với Server.

Hình 3.17. Màn hình chính của Client

Với giao diện trên ta có thể chat và gửi file tới Server hoặc Client khác. Do kết nối socket không ổn định và mã hóa RSA làm giảm tốc độ nên bạn không được gửi file quá lớn. Để đảm bảo tính ổn định của chương trình, bạn nên gửi những file được cung cấp trong thư mục “test” có trong thư mục chương trình.

Khi nhận được file, sẽ có thông báo nhận file

Hình 3.19. Màn hình lưu file

Tất cả các Client đều phải cắm token khi sử dụng, trong quá trình sử dụng, vì bất kì lý do gì không tìm thấy token, chương trình lập tức hiện ra cảnh báo và thoát khỏi chương trình ngay lập tức

Hình 3.20. Màn hình cảnh báo không thấy token

Ứng dụng hướng đến đối tượng sử dụng là các công ty hoặc các trường học, rất cần sự trao đổi thông tin nội bộ, bảo mật và kiểm soát người dùng. USB eToken là chìa khóa để sử dụng phần mềm nội bộ này. Mạng WLAN vẫn bật, mọi người có thể truy cập vào mạng, nhưng để trao đổi với nhau thì phải có token. Tin tặc có thể bắt được gói tin nhưng nếu không có USB eToken, hắn sẽ không thể giải mã gói tin vì không có PrivateKey. Đây là hình ảnh file đã mã hóa, cũng chính là file mà tin tặc bắt được nhưng không thể giải mã:

Hình 3.21. So sánh 2 file mã hóa và gốc Phần mềm đã giải quyết được các vấn đề: (adsbygoogle = window.adsbygoogle || []).push({});

1. Quản lý người dùng bằng cách cấp phát token.

Một phần của tài liệu nghiên cứu giải pháp bảo mật mạng không dây wlan (Trang 82)