Luận văn Nghiên cứu các giải pháp đảm bảo an ninh an toàn cho mạng không dây

Trình bày tổng quan về sự phát triển của mạng không dây, các công nghệ ứng dụng trong mạng không dây cũng như các kỹ thuật điều chế trải phổ. Chúng ta cũng có thể hiểu một cách khái quát cơ chế hoạt động của mạng WLAN, ưu điểm cũng như các mô hình hoạt động của mạng WLAN. Ngoài ra, chúng ta cũng tìm hiểu về chuẩn 802.11 cho mạng WLAN, nắm được những gì diễn ra trong quá trình thiết lập kết nối với một hệ thống WLAN đơn giản (chưa có chứng thực và mã hóa).

pdf108 trang | Chia sẻ: lylyngoc | Ngày: 26/10/2013 | Lượt xem: 1877 | Lượt tải: 4download
Bạn đang xem nội dung tài liệu Luận văn Nghiên cứu các giải pháp đảm bảo an ninh an toàn cho mạng không dây, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
n trọng trong việc bảo mật. Dữ liệu quan trọng sẽ được mã hóa trước khi được chuyển đi qua mạng hay qua lưu trữ. Với sự phát triển các giao dịch điện tử việc mã hóa và bảo mật các thông tin thương mại trên mạng là hết sức cần thiết. Đây là một vấn đề nóng hổi đối với các nhà phát triển trên thế giới và cũng là một đề tài cần phải nghiên cứu và phát triển. Đối với mạng máy tính nói chung và mạng WLAN trong ngành công an nói riêng có những đặc thù riêng đòi hỏi phải có cơ chế đảm bảo an ninh an toàn thông tin cao nhằm bảo mật thông tin ở mức cao nhất. Trong chương này sẽ trình bày các yêu cầu đặt ra đối với mạng WLAN ngành công an và đề xuất giải pháp, phát triển ứng dụng nhằm đảm bảo an ninh an toàn cho mạng WLAN ngành công an. 3.1.2. Thực trạng và các yêu cầu đặt ra đối với mạng WLAN ngành công an Với những thuận tiện và lợi ích to lớn mà công nghệ thông tin đem lại, nhằm ứng dụng công nghệ thông tin nâng cao hiệu quả công việc, ngành công an đã chú trọng xây dựng phát triển hệ thống mạng máy tính nội bộ kết nối giữa các đơn vị đáp ứng nhu cầu trao đổi, xử lý tin tức nhanh chóng kịp thời phục vụ tốt các mặt công tác của lực lượng công an. Thời gian gần đây khi các thiết bị không dây trở nên phổ biến rộng rãi vì tính tiện lợi của nó, ngành công an cũng đặt ra yêu cầu phát triển mạng 75 WLAN nhằm nâng cao tính linh động, kịp thời, tiện lợi, cùng với hệ thống mạng LAN sẵn có đảm bảo phục vụ tốt các mặt công tác. Hình 3.1: Mô hình tổng thể mạng máy tính BCA Tuy nhiên khi xây dựng mạng WLAN cần phải tính đến các yêu cầu về đảm bảo an ninh an toàn thông tin và các yêu cầu khác như: - Các máy tính trong mạng WLAN khi kết nối, trao đổi thông tin đảm bảo bảo mật thông tin, chỉ những máy tính được phép mới kết nối được với hệ thống. - Từ mạng WLAN có thể kết nối được tới mạng LAN đã có đảm bảo an ninh an toàn thông tin. - Với những trường hợp cần thiết có thể cho phép kết nối không dây hoặc có dây thông qua mạng công cộng (Internet) trao đổi tin tức với mạng nội bộ mà vẫn đảm bảo an ninh, bảo mật thông tin. - Do công tác nghiệp vụ cần trao đổi thường xuyên các tài liệu qua hệ thống mạng (chủ yếu qua hệ thống thư điện tử nội bộ) như: báo cáo tuần, báo cáo tháng, chỉ đạo tình hình công việc, … nên cần có cơ chế bảo mật những tài liệu này khi trao đổi qua mạng WLAN cũng như khi lưu trữ. 3.1.3. Đề xuất giải pháp đảm bảo an ninh cho mạng WLAN ngành công an Như chúng ta đã biết, giải pháp phổ biến nhất và hữu hiệu nhất để chống lại các mối đe dọa đến an ninh mạng là mã hóa. Để thực hiện mã hóa, chúng ta cần xác định các vấn đề như mã hóa những gì và công cụ mã hóa nên được bố trí ở đâu. Có hai sự 76 lựa chọn cơ bản: mã hóa liên kết và mã hóa đầu cuối. Hai phương án này được minh họa sử dụng qua một mạng chuyển mạch gói trong hình 3.2. Với mã hóa liên kết, mỗi liên kết truyền thông có nguy cơ bị tấn công được trang bị ở cả hai đầu của liên kết bằng một công cụ mã hóa. Vì vậy, mọi sự lưu chuyển thông tin qua tất cả các liên kết truyền thông được đảm bảo an ninh. Mặc dù vậy, mã hóa liên kết cần đến rất nhiều công cụ mã hóa trong một mạng lớn, nó cung cấp một mức bảo mật cao. Một bất lợi của giải pháp này là các thông điệp cần phải được giải mã mỗi lần nó đi vào một chuyển mạch gói. Việc này là cần thiết bởi vì chuyển mạch cần phải đọc địa chỉ (số mạch ảo) trong phần đầu gói tin để định tuyến gói tin. Do đó, các thông điệp có nguy cơ bị tấn công tại mỗi chuyển mạch. Nếu trong trường hợp là một mạng chuyển mạch gói công cộng thì người dùng không thể kiểm soát được toàn bộ an ninh tại các nút mạng. Với mã hóa đầu cuối, quá trình mã hóa được thực hiện ở hai hệ thống đầu cuối. Máy chủ hoặc thiết bị đầu cuối nguồn thực hiện mã hóa dữ liệu. Dữ liệu đã được mã hóa sau đó được truyền nguyên vẹn qua mạng tới máy chủ hoặc thiết bị đầu cuối đích. Các thiết bị đích dùng chung một khóa với các thiết bị nguồn và vì vậy nó có thể giải mã được dữ liệu. Giải pháp này được cho là đảm bảo an ninh trong quá trình truyền dữ liệu chống lại các sự tấn công vào các liên kết mạng hoặc các chuyển mạch. Tuy nhiên giải pháp này vẫn còn điểm yếu. Chúng ta cùng xem xét tình huống sau đây. Một máy trạm kết nối tới một mạng chuyển mạch gói X.25, thiết lập một mạch ảo tới máy trạm khác và chuẩn bị truyền dữ liệu tới máy trạm kia sử dụng phương pháp mã hóa đầu cuối. Dữ liệu được truyền qua mạng dưới dạng các gói tin, gồm có phần đầu và một vài dữ liệu người dùng. Vậy phần nào của mỗi gói tin máy trạm sẽ mã hóa? Giả sử máy trạm mã hóa toàn bộ gói tin bao gồm cả phần đầu gói tin. Điều này không thể tiến hành được bởi vì chúng ta nhớ lại rằng chỉ có máy trạm đích mới có thể thực hiện giải mã được. Các nút chuyển mạch gói sẽ nhận gói tin đã được mã hóa và không thể đọc được phần đầu gói tin. Vì vậy, nó sẽ không thể định tuyến gói tin. Điều này dẫn đến việc máy trạm chỉ có thể mã hóa phần dữ liệu người dùng của gói tin và phải để lại phần đầu gói tin ở dạng tường minh, có như vậy các nút chuyển mạch mới có thể đọc được phần đầu gói tin để định tuyến gói tin. Như vậy, với mã hóa đầu cuối dữ liệu người dùng được đảm bảo an toàn. Tuy nhiên, mẫu lưu chuyển thông tin không được bảo vệ bởi vì các phần đầu gói tin được truyền tải tường minh. Để đạt được sự an toàn cao hơn, cả mã hóa liên kết và mã hóa đầu cuối là cần thiết, như là được chỉ ra trong hình dưới đây: 77 Hình 3.2: Kết hợp các phương án mã hóa Tóm lại, khi cả hai hình thức mã hóa này được dùng, máy trạm mã hóa phần dữ liệu người dùng của gói tin sử dụng khóa mã hóa đầu cuối. Sau đó toàn bộ gói tin được mã hóa sử dụng khóa mã hóa liên kết. Khi gói tin đi qua mạng, mỗi chuyển mạch sử dụng khóa mã hóa liên kết giải mã gói tin để đọc phần đầu gói tin và sau đó mã hóa toàn bộ gói tin lại để gửi nó tới liên kết tiếp theo. Lúc này toàn bộ gói tin được đảm bảo an toàn ngoại trừ thời gian mà gói tin thực sự ở trong bộ nhớ của một chuyển mạch gói bởi vì tại thời gian này phần đầu gói tin ở dạng tường minh. Theo như phân tích ví dụ ở trên chúng ta có thể thấy đối với mạng không dây cũng có thể bố trí các công cụ mã hóa theo hai hình thức là mã hóa đầu cuối và mã hóa liên kết. Việc kết hợp được cả hai hình thức mã hóa này là cần thiết giúp đảm bảo an ninh an toàn cao hơn. Đối với các yêu cầu như từ mạng WLAN có thể kết nối được tới mạng LAN đã có đảm bảo an ninh an toàn thông tin. Với những trường hợp cần thiết có thể cho phép kết nối không dây hoặc có dây thông qua mạng công cộng (Internet) trao đổi tin tức với mạng nội bộ mà vẫn đảm bảo an ninh, bảo mật thông tin chúng ta có thể sử dụng công nghệ mạng riêng ảo (VPN). Một mạng riêng ảo kết nối tới các thành phần và tài nguyên của một mạng thông qua mạng khác. VPN thực hiện điều này bằng cách cho phép người dùng tạo đường hầm xuyên qua mạng không dây hoặc mạng công cộng khác, theo cách này những người tham gia đường hầm được hưởng ít nhất là cùng mức bảo mật và các tính năng như là khi họ tham gia mạng có dây riêng tư. Một VPN là một nhóm gồm có hai hay nhiều hơn nữa các hệ thống máy tính đã được kết nối tới một mạng riêng tư, mạng mà được xây dựng và duy trì bởi tổ chức với mục đích sử dụng của riêng họ cùng với những hạn chế khi truy cập mạng công cộng. Giải pháp 78 VPN cho truy cập không dây là sự lựa chọn phù hợp nhất hiện nay. Nó đã được triển khai rộng rãi để cung cấp cho những người làm việc từ xa truy cập đảm bảo an toàn tới mạng riêng thông qua Internet. Trong ứng dụng người dùng từ xa, VPN cung cấp một đường chuyên dụng, đảm bảo an toàn được gọi là đường hầm vượt qua mạng không tin cậy. Một VPN toàn diện cần phải có ba thành phần kỹ thuật chính: bảo mật, điều khiển lưu lượng và quản lý tập trung. Có ba dạng giao thức tạo đường hầm nổi bật được sử dụng trong VPN để đảm bảo an ninh là: Point-to-Point Tunneling Protocol (PPTP), Layer-2 Transport Protocol (L2TP) và Internet Protocol Security (IPSec). Khi sử dụng công nghệ VPN để đảm bảo an ninh cho mạng không dây vấn đề xác thực và mã hóa qua mạng không dây được cung cấp bởi máy chủ dịch vụ VPN, máy này cũng làm công việc như là cổng nối với mạng riêng. Dưới đây là mô hình đề xuất giải pháp bảo mật cho mạng WLAN ngành công an đáp ứng các yêu cầu đã đặt ra: Hình 3.3: Giải pháp đảm bảo an ninh mạng WLAN ngành công an Như trong hình vẽ trên chúng ta thấy các yêu cầu đặt ra cần đảm bảo an ninh đều đã cơ bản được giải quyết. Với yêu cầu các máy tính trong mạng WLAN khi kết nối, trao đổi thông tin đảm bảo bảo mật thông tin, chỉ những máy tính được phép mới kết nối được với hệ thống chúng ta sử dụng chuẩn bảo mật mới cho mạng WLAN là WPA hoặc WPA2. 79 WPA khắc phục được những điểm yếu của WEP. Nó cũng cung cấp khả năng chứng thực người dùng bao gồm cả IEEE 802.1X/EAP (Extensible Authentication Protocol) và PSK (pre-shared key), đó cũng là một tính năng không xuất hiện trong WEP. Là một phần của chuẩn 802.11i, WPA được thiết kế nhằm tăng cường khả năng bảo mật cho các dòng thiết bị tương thích với chuẩn 802.11. WPA đã được thiết kế và được kiểm chứng bởi những chuyên gia về mã hóa. Nó có thể được cài đặt nhanh gọn và dễ dàng thông qua các phần mềm nâng cấp cho hầu hết các AP (Access Point) đã được chứng nhận (Wi-Fi CERTIFIEDTM) và các thiết bị phía người sử dụng mà không làm ảnh hưởng nhiều đến khả năng của mạng. Khi được cài đặt đúng, WPA cung cấp một mức bảo mật cao cho mạng không dây của các doanh nghiệp cũng như của các hộ gia đình, nó mã hóa dữ liệu trước khi truyền đi và đảm bảo rằng chỉ có những ai được phép mới có khả năng truy cập vào mạng. Đối với các doanh nghiệp đã triển khai IEEE 802.1X để chứng thực thì WPA có khả năng dung hòa được cơ sở dữ liệu hạ tầng mạng sẵn có. Được Wi-Fi Alliance công bố vào tháng 11 năm 2004, WPA2 là một phiên bản đã được chứng nhận dựa trên của chuẩn 802.11i đầy đủ, công bố vào tháng 6 năm 2004. Giống như WPA, WPA2 cũng hỗ trợ khả năng chứng thực IEEE 802.1X/EAP và PSK. Ngoài ra, nó dụng giao thức CCMP với thuật toán mã hóa AES. Khi triển khai WPA hoặc WPA2 cần lưu ý: Có hai mode của WPA và WPA2 là mode dùng cho các tổ chức doanh nghiệp (Enterprise mode) và mode dùng cho cá nhân (Personal mode). Cả hai đều cung cấp giải pháp bảo mật và chứng thực. WPA WPA2 Enterprise Mode (Business and Government) Authentication: IEEE 802.1X/EAP Encryption: TKIP/MIC Authentication: IEEE 802.1X/EAP Encryption: AES-CCMP Personal Mode (SOHO/peronal) Authentication: PSK Encryption: TKIP/MIC Authentication: PSK Encryption: AES-CCMP Bảng 3.1: Các mode của WPA và WPA2 Personal mode được thiết kế cho các hộ gia đình hay văn phòng có quy mô nhỏ (tương đương với hộ gia đình), nơi mà không dùng server chứng thực. Nó hoạt động theo dạng không quản lý tức là nó sử dụng khóa dùng chung (PSK - Pre-share key) để chứng thực thay vì dùng IEEE 802.X. Mode này sử dụng kiểu chứng thực như sau: một mật khẩu (PSK) được nhập vào AP để tạo khóa mã. Vì vậy mà nó không thích hợp trong môi trường doanh nghiệp. PSK thường được người sử dụng dùng chung. Một PSK đủ mạnh phải bao gồm cả chữ, số và các ký tự đặc biệt. Personal mode sử dụng phương pháp mã hóa giống như Enterprise mode. Nó hỗ trợ việc mã hóa cho từng người dùng, từng phiên và từng gói tin thông qua TKIP (WPA) hay AES (WPA2). Enterprise mode hoạt động theo một chế độ được quản lý và thỏa mãn những yêu cầu khắt khe về bảo mật cho một mạng doanh nghiệp. Nó thúc đẩy môi trường 80 chứng thực IEEE 802.1X, môi trường này sử dụng giao thức chứng thực mở rộng (EAP – Extensible Authentication Protocol) với một server chứng thực để cung cấp khả năng chứng thực mạnh đối với cả hai phía giữa máy trạm và server chứng thực thông qua AP. Trong mode này, mỗi người sử dụng được cung cấp một cơ chế khóa duy nhất để truy cập vào mạng. Điều này mang lại một mức bảo mật cao đối với dữ liệu mang tính cá nhân. Mạng WLAN ngành công an được triển khai ở dạng Enterprise Mode, ở đây ta thực hiện việc triển khai một mạng không dây sử dụng phương pháp chứng thực PEAP-MS-CHAP v2 cùng với WPA hoặc WPA2. Mô hình triển khai như ở hình 3.4: Hình 3.4: Mô hình triển khai mạng WPA (WPA2) Enterprise Mode Ở mô hình trên các thiết bị được triển khai bao gồm: 1. STA: là Notebook có wireless card hỗ trợ WPA, WPA2 và chạy hệ điều hành Windows XP SP2. 2. Access Point: là Wireless Broadband Router của hãng Linksys. 3. AAA Server: Windows Server 2003 SP2 được cài dịch vụ IAS với chức năng là một RADIUS Server. 4. Authentication Database: Windows Server 2003 SP2 được cài đặt Active Directory, Domain Controller, DNS server, DHCP server, CA và IIS server. Một số bước tiến hành triển khai thực tế như sau: 1. Thực hiện các công việc sau trên máy chủ Authentication Database:  Cài đặt hệ điều hành Windows Server 2003 SP2.  Đổi tên Server là BCAAuth.  Thiết lập địa chỉ IP: 192.168.0.10/24.  Kích hoạt Active Directory với tên miền được chọn lựa là bca.local. 81  Cài đặt dịch vụ DHCP với dải địa chỉ: 192.168.0.20-192.168.0.254  Cài đặt CA với dạng Enterprise root CA và đặt tên là BCA CA.  Tạo nhóm mới: WirelessUsers.  Tạo các User mới: w1, w2 rồi thêm các user này vào nhóm WirelessUsers.  Cài đặt dịch vụ IIS để người dùng có thể truy cập thông qua Web browser. 2. Thực hiện các công việc sau trên máy chủ chạy IAS:  Cài đặt hệ điều hành Windows Server 2003 SP2.  Đổi tên Server là IAS.  Thiết lập địa chỉ IP: 192.168.0.11/24.  Chọn Prefered DNS: 192.168.0.10  Cài đặt dịch vụ IAS.  Thiết lập Certificate cho chính máy IAS này.  Tạo RADIUS client với tên gọi là Wireless AP và địa chỉ IP của AP là 192.168.0.1. Thiết lập mật khẩu liên lạc giữa AP và IAS server.  Thiết lập chính sách bảo mật cho cả nhóm WirelessUsers với phương pháp chứng thực là PEAP. 3. Thực hiện thiết lập thông số trên AP:  Đặt SSID: e15bca  Địa chỉ IP: 192.168.0.1/24  Security Mode: WPA Enterprise / WPA2 Enterprise  WPA Algorithms: TKIP/AES/TKIP+AES  Địa chỉ của RADIUS server: 192.168.0.11  RADIUS port: 1812  Shared Key: khóa này chính là khóa tạo cho RADIUS client trên IAS server. 4. Thực hiện thiết lập trên Notebook :  Notebook đã được cài đặt sẵn Windows XP SP2.  Đăng nhập vào Domain để trở thành máy tính thành viên của bca.local qua đường Ethernet.  Ngắt kết nối qua đường Ethernet, thiết lập cấu hình cho Wireless: chọn đúng SSID là e15bca, Network Authentication là WPA/WPA2, Data encryption là TKIP/AES. EAP type là PEAP. Đối với các yêu cầu như từ mạng WLAN có thể kết nối được tới mạng LAN đã có đảm bảo an ninh an toàn thông tin. Với những trường hợp cần thiết có thể cho phép kết nối không dây hoặc có dây thông qua mạng công cộng (Internet) trao đổi tin tức với mạng nội bộ mà vẫn đảm bảo an ninh, bảo mật thông tin chúng ta có thể sử dụng công nghệ mạng riêng ảo (VPN). Có một số tình huống thông dụng của VPN: - Remote Access: Đáp ứng nhu cầu truy cập dữ liệu và ứng dụng cho người dùng ở xa, bên ngoài đơn vị thông qua Internet. Ví dụ khi người dùng muốn truy cập 82 vào cơ sở dữ liệu hay các file server, gửi nhận email từ các mail server nội bộ của đơn vị. - Site To Site: Áp dụng cho các tổ chức có nhiều văn phòng chi nhánh, giữa các văn phòng cần trao đổi dữ liệu với nhau. Ví dụ một công ty đa quốc gia có nhu cầu chia sẻ thông tin giữa các chi nhánh đặt tại Singapore và Việt Nam, có thể xây dựng một hệ thống VPN Site-to-Site kết nối hai site Việt Nam và Singapore tạo một đường truyền riêng trên mạng Internet phục vụ quá trình truyền thông an toàn, hiệu quả. - Intranet/ Internal VPN: Trong một số tổ chức, quá trình truyền dữ liệu giữa một số bộ phận cần bảo đảm tính riêng tư, không cho phép những bộ phận khác truy cập. Hệ thống Intranet VPN có thể đáp ứng tình huống này. Đối với mạng WLAN ngành công an như trên hình 3.3 được triển khai giải pháp truy cập từ xa VPN trên Windows Server 2003 có cơ chế mã hóa dựa trên giao thức IPSec nhằm đảm bảo an toàn thông tin: Như chúng ta biết, để các máy tính trên hệ thống mạng LAN/WAN hay Internet truyền thông với nhau, chúng phải sử dụng cùng một giao thức (giống như ngôn ngữ giao tiếp trong thế giới con người) và giao thức phổ biến hiện nay là TCP/IP. Khi truyền các gói tin, chúng ta cần phải áp dụng các cơ chế mã hóa và chứng thực để bảo mật. Có nhiều giải pháp để thực hiện việc này, trong đó cơ chế mã hóa IPSEC hoạt động trên giao thức TCP/IP tỏ ra hiệu quả và tiết kiệm chi phí trong quá trình triển khai. Trong quá trình chứng thực hay mã hóa dữ liệu, IPSEC có thể sử dụng một hoặc cả hai giao thức bảo mật sau: - AH (Authentication Header): header của gói tin được mã hóa và bảo vệ phòng chống các trường hợp "ip spoofing" hay "man in the midle attack", tuy nhiên trong trường hợp này phần nội dung thông tin chính không được bảo vệ. - ESP (Encapsulating Security Payload): Nội dung thông tin được mã hóa, ngăn chặn các trường hợp hacker đặt chương trình nghe lén và chặn bắt dữ liệu trong quá trình truyền. Phương thức này rất hay được áp dụng, nhưng nếu muốn bảo vệ luôn cả phần header của gói tin thì phải kết hợp cả 2 giao thức AH và ESP. Để triển khai IPSec/VPN trên Windows Server 2003 chúng ta sẽ dùng 1 máy Windows Server 2003 làm VPN Sever (đặt tên là BCAVPN), có 1 card mạng kết nối với hệ thống mạng nội bộ và một card mạng khác để kết nối với bên ngoài (Internet). Để quản lý người dùng trên hệ thống và tài nguyên chúng ta cần có 1 domain controler cài đặt trên Windows Server 2003. Trong mô hình này, chúng ta sử dụng một máy client bên ngoài chạy hệ điều hành Windows XP, kết nối VPN với cơ chế chứng thực và mã hóa dữ liệu dựa trên IPSec ESP. Giải pháp VPN "mềm" áp dụng ở đây chỉ thích hợp cho số lượng người dùng nhỏ, để đáp ứng số lượng người dùng lớn hơn, có thể phải cần đến giải pháp VPN phần cứng. 83 Ngoài ra với yêu cầu công tác nghiệp vụ cần trao đổi thường xuyên các tài liệu qua hệ thống mạng (chủ yếu qua hệ thống thư điện tử nội bộ) như: báo cáo tuần, báo cáo tháng, chỉ đạo tình hình công việc, … nên cần có cơ chế bảo mật những tài liệu này khi trao đổi qua mạng WLAN cũng như khi lưu trữ. Vì vậy cần nghiên cứu, phát triển một ứng dụng mã hóa đầu cuối triển khai trên các máy tính tham gia mạng WLAN cho phép người dùng trao đổi tin an toàn qua mạng WLAN đồng thời giúp cho người dùng bảo vệ số liệu lưu trữ trên các thiết bị lưu trữ sử dụng các thuật toán mã mạnh thông dụng hiện nay hay thuật toán riêng của người dùng cho vào (tùy chọn). Bên cạnh đó cần nghiên cứu các biện pháp tích hợp hệ thống chứng thực điện tử để đảm bảo an toàn thông tin, xây dựng hệ thống cung cấp chứng chỉ số … Tuy nhiên, vì thời gian có hạn trong khuôn khổ một luận văn, phần tiếp theo sẽ tập trung trình bày về phát triển ứng dụng mã hóa đầu cuối nhằm đảm bảo yêu cầu nghiệp vụ đặt ra đối với mạng WLAN ngành công an. 3.2. Thiết kế và lập trình ứng dụng 3.2.1. Thiết kế ứng dụng Với mục đích phát triển một ứng dụng mã hóa đầu cuối như phân tích đã nêu ở phần trước nên chương trình được thiết kế có cấu trúc theo Module bao gồm ba phần chính: mã hóa, giải mã và gửi thư mật. Hình 3.5: Các Module chính của chương trình Các thuật toán đều được viết dưới dạng các thư viện liên kết động, trong chương trình có dùng các thuật toán mã thông dụng hiện nay. Người sử dụng có thể chọn các thuật toán mã như: AES, Blowfish, GOST, TEA, RC-6, Serpent, Triple-DES và Twofish. Ngoài ra người sử dụng có thể bổ sung hoặc thay đổi thuật toán riêng của mình vào chương trình: Chương trình được thiết kế theo module, do vậy người sử dụng có thể bổ sung hoặc thay đổi thuật toán riêng của mình vào mà không cần phải chi phí mất nhiều thời gian. 3.2.2. Lập trình ứng dụng 3.2.2.1. Thiết kế và mã nguồn cửa sổ chính của chương trình Chương trình chính Module Mã hóa Module Giải mã Module Gửi thư mật 84 Cửa sổ chính của chương trình được thiết kế như giao diện của Windows Explorer và tích hợp với các tính năng cơ bản của Windows. Dưới đây là giao diện cửa sổ chính của chương trình, được tổ chức bao gồm trên cùng là Menu để lựa chọn các chức năng chi tiết. Dưới đó là thanh công cụ (Toolbar) với các chức năng cơ bản. Phần chính là hai cửa sổ xếp ngang nhau, bên trái hiển thị các ổ đĩa và thư mục (folder) có trong máy tính của người sử dụng; bên phải hiển thị cửa sổ thư mục và File có trong ổ đĩa và thư mục được chọn từ cửa sổ bên trái. Dưới cùng là thanh trạng thái, thể hiện các thuộc tính của ổ đĩa, thư mục hiện hành được chọn hoặc các hoạt động của chương trình. Hình 3.6: Thiết kế cửa sổ chính của chương trình Dưới đây là một phần mã nguồn của form này: Option Explicit Private HidenFile As String '------------------------------------ Private WinDir As String Private SysDir As String Private TempDir As String 85 Private SourcePath As String Private sFolder As String 'Private sFile As String Private sName As String Private sExtension As String Private sSize As String Private sType As String Private sModified As String Private sTime As String Private sCreated As String Private sAccessed As String Private sAttribute As String Private sMsDos As String Private sNone As String Private m_MyDocs As String '------------------------------ Private Start As Long Private FvFilter As Variant Private TypeNew() As FTs Private NodeIdx As Integer Private TaskFld As String Private CutCopy As Long '------------------------------ Private Enum CBoolean CFalse = 0 CTrue = 1 End Enum Private m_cxyAutoScroll As Long '------------------------------ Private Const SM_CXDRAG = 68 Private Const SM_CYDRAG = 69 '------------------------------ Private Const SHGFI_DISPLAYNAME = &H200 Private Const TVGN_ROOT = &H0 '-------------------------------------- Private Const TVIS_EXPANDED = &H20 Private Const TV_FIRST = &H1100 Private Const TVM_EXPAND = (TV_FIRST + 2) Private Const TVM_GETITEMRECT = (TV_FIRST + 4) Private Const TVM_GETNEXTITEM = (TV_FIRST + 10) 86 Private Const TVM_SELECTITEM = (TV_FIRST + 11) Private Const TVM_GETITEM = (TV_FIRST + 12) Private Const TVM_SETITEM = (TV_FIRST + 13) Private Const TVM_HITTEST = (TV_FIRST + 17) Private Const TVM_CREATEDRAGIMAGE = (TV_FIRST + 18) '------------------------------------------------- Const MyComputer$ = "MyComputer" Const Desktop$ = "Desktop" Private Type RECT ' rct Left As Long Top As Long Right As Long Bottom As Long End Type Private m_hwndTV As Long ' TV.hWnd Private m_szDrag As Size Private ResetNodepic(1 To 20) As ParentPic '----------------------------- Private Type Size cx As Long cy As Long End Type Private Type ParentPic NodeId As Integer NodePic As String End Type '--------------------------------------------------- 'For monitor comport Private Const GENERIC_WRITE = &H40000000 Private Const GENERIC_READ = &H80000000 Private Const FILE_ATTRIBUTE_NORMAL = &H80 Private Const CREATE_NEW = 1 Private Const CREATE_ALWAYS = 2 Private Const OPEN_EXISTING = 3 Private Const OPEN_ALWAYS = 4 Private Const TRUNCATE_EXISTING = 5 Private Declare Function CreateFile Lib "kernel32" _ Alias "CreateFileA" (ByVal lpFileName As String, _ ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, _ ByVal lpSecurityAttributes As Long, _ 87 ByVal dwCreationDisposition As Long, _ ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) _ As Long Private Declare Function CloseHandle Lib "kernel32" ( _ ByVal hObject As Long) As Long Private Declare Function GetCurrentProcess Lib "kernel32" () As Long '------------------------------------ Private cFolderSize As Double Private Function TreeView_GetRoot(hwnd As Long) As Long TreeView_GetRoot = TreeView_GetNextItem(hwnd, 0, TVGN_ROOT) End Function Private Function TreeView_GetNextItem(ByVal hwnd As Long, hitem As Long, Flag As Long) As Long TreeView_GetNextItem = SendMessage(hwnd, TVM_GETNEXTITEM, ByVal Flag, ByVal hitem) End Function Private Function TreeView_GetItemRect(ByVal hwnd As Long) As Boolean prc.Left = hitem TreeView_GetItemRect = SendMessage(hwnd, TVM_GETITEMRECT, ByVal fItemRect, prc) End Function Private Function NiceCase(ByVal Nam As String) As String Dim UNam As String, LNam As String On Error GoTo ProcedureError UNam = Nam: LNam = Nam CharUpper UNam: CharLower LNam If Nam = UNam Or Nam = LNam Then ' If Nam = UCase$(Nam) Or Nam = LCase$(Nam) Then NiceCase = StrConv(Nam, vbProperCase) Else NiceCase = Nam 'already mixed case so leave alone End If ProcedureExit: Exit Function ProcedureError: If ErrMsgBox(Me.Name & ".NiceCase") = vbRetry Then Resume Next End Function Private Function BinarySearchTypeNew(sExt As String) As Integer Dim iLow As Integer Dim iHigh As Integer 88 3.2.2.2. Thiết kế và mã nguồn của Form mã hóa Từ cửa số chính sau khi đã lựa chọn Mã hóa, sẽ xuất hiện cửa sổ hội thoại dưới đây. Trên cửa sổ hiển thị danh sách, tổng số và dung lượng của các file và thư mục sẽ được mã. Ngoài ra còn có các lựa chọn thêm, bớt các file vào danh sách, chọn vị trí sẽ cất giữ file mã trên ổ đĩa. Hình 3.7: Thiết kế Form mã hóa Ở đây, người sử dụng cũng có thể đặt lại cấu hình cho chương trình như: - Tự động tạo file mã: Chương trình sẽ tự động tạo ra file mã là tên của thư mục hay file gắn thêm đuôi của chương trình, lúc này người sử dụng không cần vào tên file mã. - Xóa file gốc sau khi mã xong: Ngay sau khi mã xong file hoặc thư mục, chương trình sẽ xóa file hay thư mục gốc. - Mã và nén dữ liệu: Ngoài việc thư mục và file được mã, chương trình còn nén file và thư mục nhằm giảm dung lượng lưu trữ cũng như khi gửi file đi. - Người sử dụng có thể lựa chọn thuật toán mã dữ liệu của thư mục và file. - Đặt cấu hình cho khóa phiên: Khi chọn khóa hay mật khẩu theo phiên, người dùng chỉ cần vào mật khẩu lúc đầu còn trong phiên làm việc chương trình sẽ mã mà không yêu cầu người sử dụng vào khóa hay mật khẩu. Tùy chọn này giúp thao tác nhanh, đơn giản song về mặt bảo mật tính an toàn không cao do phải lưu khóa phiên trong bộ nhớ. - Đặt thuộc tính cho Smartcard 89 - … Cuối cùng, người sử dụng sẽ chọn phương thức mã:  Mã sử dụng khóa  Mã sử dụng thẻ thông minh - Smartcard  Mã dùng mật khẩu - password hoặc thoát ra khỏi cửa sổ mã hóa trở về cửa sổ chính mà không thực hiện một công việc nào. Dưới đây là một phần mã nguồn của Module mã hóa: Option Explicit Private nActiveTime As Integer Private WithEvents CpBlf1 As clsBlowfish Private WithEvents CpGost As clsGost Private WithEvents Cp3Des As cls3DES Private WithEvents CpTwf1 As clsTwofish Private WithEvents CpSkj As clsSkipjack Private WithEvents CpSrp As clsSerpent Private WithEvents CpTea As clsTEA Private WithEvents CpRjd1 As clsRijndael Private WithEvents CpRC6 As clsRC6 '------------------------------------ Private WinDir As String Private SysDir As String Private TempDir As String Private SourcePath As String Private sFolder As String 'Private sFile As String Private sName As String Private sExtension As String Private sSize As String Private sType As String Private sModified As String Private sTime As String Private sCreated As String Private sAccessed As String Private sAttribute As String Private sMsDos As String Private sNone As String Private m_MyDocs As String '------------------------------ Private Start As Long Private FvFilter As Variant 90 Private TypeNew() As FTs '------------------------------ Private Enum CBoolean CFalse = 0 CTrue = 1 End Enum Private m_cxyAutoScroll As Long '------------------------------ Private Const SM_CXDRAG = 68 Private Const SM_CYDRAG = 69 '------------------------------ Private Const SHGFI_DISPLAYNAME = &H200 Private Type Size cx As Long cy As Long End Type Private FileCollection As Collection Private Sub cmdOK_Click() cTypeEnc = "S" EncOrNo = True Me.EncryptAll 'reset after encrypted cCurEncFile = "" EncOrNo = True End Sub Private Sub Command10_Click() cTypeEnc = "P" EncOrNo = True Me.EncryptAll 'reset after encrypted cCurEncFile = "" EncOrNo = True End Sub Private Sub Command6_Click() Unload Me End Sub Private Sub Command9_Click() MsgBox "OK click" End Sub Private Sub ApplySin(cFileSkin As String) 91 If cFileSkin "" Then Skin1.LoadSkin cFileSkin Skin1.ApplySkin Me.hwnd End If End Sub Private Sub Command8_Click() cTypeEnc = "K" cCancelFolder = True Me.EncryptAll 'reset after encrypted cCurEncFile = "" EncOrNo = True End Sub Private Sub LVEncFiles_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 Then Me.PopupMenu Me.MnuFile End If End Sub Private Sub mnuAddDir_Click() cCurEncFile = GetBrowseFolder("Select the folder for find decrypttion key", Me) cCurFileOnly = Replace(cCurEncFile, FileNameOnly(cCurEncFile), "") ReActiveForm End Sub Private Sub mnuAddFile_Click() On Error Resume Next DiaOpen.CancelError = True DiaOpen.ShowOpen cCurEncFile = DiaOpen.Filename cCurFileOnly = Replace(cCurEncFile, FileNameOnly(cCurEncFile), "") ReActiveForm End Sub Private Sub mnuDelete_Click() If LVEncFiles.ListItems.Count = 0 Then Exit Sub txtTotalsize.Text = Val(txtTotalsize.Text) - FileLen(LVEncFiles.SelectedItem.key) Me.txtTotalsizeNew.Caption = FormatSize(txtTotalsize.Text) LVEncFiles.ListItems.Remove LVEncFiles.SelectedItem.Index txtTotalFile.Caption = Val(txtTotalFile.Caption) - 1 End Sub Private Sub mnuDeleteAll_Click() 92 LVEncFiles.ListItems.Clear txtTotalFile.Caption = 0 txtTotalsize.Text = 0 txtTotalsizeNew.Caption = 0 End Sub Private Sub mnuExit_Click() Unload Me End Sub Private EncryptFolderName As String Private Sub cmdBrow_Click() On Error Resume Next DiaOpen.ShowSave txtEncFileName.Text = Mid(DiaOpen.Filename, 1, Len(DiaOpen.Filename) - 3) & "dvd" End Sub Private Sub cmdExtCancel_Click() SelfExtrac = False Unload Me End Sub Private Sub cmdExtOK_Click() Dim cFileSaveAs As String Dim cFileAdd As String Dim TempCipherAl As String Dim TempComp As Boolean cFileAdd = Me.txtEncFileName.Text cFileSaveAs = Mid(cFileAdd, 1, Len(cFileAdd) - 3) & "exe" TempCipherAl = CipherAlgorithm cTypeEnc = "P" TempComp = CompressOrNo CompressOrNo = False CipherAlgorithm = "TWF" Me.EncryptAll AddToSelfExtract App.Path & "\SelfExtract.dve", cFileAdd, cFileSaveAs SelfExtrac = False Kill cFileAdd CipherAlgorithm = TempCipherAl CompressOrNo = TempComp Unload Me End Sub Private Sub CpBlf1_Progress(Percent As Long) 93 ProgressBar.Value = Percent End Sub Private Sub Cp3Des_Progress(Percent As Long) ProgressBar.Value = Percent End Sub Private Sub CpGost_Progress(Percent As Long) ProgressBar.Value = Percent End Sub Private Sub CpRC6_Progress(Percent As Long) ProgressBar.Value = Percent End Sub 3.2.2.3. Thiết kế và mã nguồn của Form giải mã Khi người dùng cần giải mã, chương trình sẽ hỏi người dùng vào khóa (mật khẩu) tuỳ theo phương thức mã bằng mật khẩu, bằng khóa hay bằng thẻ thông minh. Chương trình sẽ tự động nhận dạng mã bằng phương pháp nào, bằng thuật toán gì, và yêu cầu người dùng vào thông tin thích hợp. Ví dụ nếu người dùng đã mã bằng mật khẩu, chương trình sẽ yêu cầu nhập vào mật khẩu thích hợp, nếu mã dùng Smart card chương trình tự động tìm khóa trên thẻ, nếu thẻ không đúng sẽ thoát ra. Trong trường hợp được mã bằng khóa do người dùng tạo ra, chương trình sẽ hiển thị cửa sổ đọc khóa vào (có cả tiện ích tìm kiếm khoá). Hình 3.8: Thiết kế Form giải mã Trên cửa sổ giải mã phía bên trái chương trình hiển thị toàn bộ cấu trúc của thư mục mã, người dùng có thể chọn riêng từng thư mục con để giải mã hay xem cấu trúc thư 94 mục. Phía bên phải là danh sách các file mã bao gồm các thông tin như kích thước, tên file, … có thể chọn một hay nhiều file để giải mã tùy theo yêu cầu. Dưới đây là một phần mã nguồn của Module giải mã: Private WithEvents CpBlf As clsBlowfish Private WithEvents CpGost As clsGost Private WithEvents CpDes As cls3DES Private WithEvents CpTwf1 As clsTwofish Private WithEvents CpRjd1 As clsRijndael Private WithEvents CpSkj As clsSkipjack Private WithEvents CpSrp As clsSerpent Private WithEvents CpTea As clsTEA Private WithEvents CpRC6 As clsRC6 Private FilesSeleted As Collection Private FolderSeleted As Collection Private Node1 As ComctlLib.Node Private NodeIdx As Integer Private SLCryptError As Boolean Private Sub cmdNewFolder_Click() diaNewFolder.ShowOpen FolderToDec = diaNewFolder.Filename End Sub Private Sub ReUpdateIcon(LVview As ComctlLib.ListView) Dim I As Integer Dim J As Integer Dim Ext As String Dim sloop As Integer Dim sFlderPos As Integer Dim sFldrName As String Dim nChilds As Integer For I = 1 To LVview.ListItems.Count Ext = UCase(GetExt(LVview.ListItems(I).Text)) Select Case Ext Case "TXT", "INI" LVview.ListItems(I).SmallIcon = "TXT" Case "DOC" LVview.ListItems(I).SmallIcon = "WORD" Case "OCX", "OCA", "DLL", "SYS", "DLL" LVview.ListItems(I).SmallIcon = "OCX" Case "ZIP" LVview.ListItems(I).SmallIcon = "ZIP" 95 Case "EXE" LVview.ListItems(I).SmallIcon = "EXE" Case "HTM", "HTML" LVview.ListItems(I).SmallIcon = "IE" Case "BMP", "JPG", "GIF", "ICO" LVview.ListItems(I).SmallIcon = "BMP" Case "MDB" LVview.ListItems(I).SmallIcon = "ACES" Case "XLS" LVview.ListItems(I).SmallIcon = "XLS" Case "AVI", "MP3", "WAV", "WMV", "MPEG" LVview.ListItems(I).SmallIcon = "MEDIA" Case "PPT" LVview.ListItems(I).SmallIcon = "PPT" Case "HLP", "CHM" LVview.ListItems(I).SmallIcon = "HLP" Case Else LVview.ListItems(I).SmallIcon = "OTHER" End Select Next End Sub Private Sub cboPath_Change() If Right(cboPath.Text, 2) = "\\" Then cboPath.Text = Mid(cboPath.Text, 1, Len(cboPath.Text) - 1) End Sub Private Sub CpBlf_Progress(Percent As Long) Me.ProgressBar.Value = Percent End Sub Private Sub CpDes_Progress(Percent As Long) Me.ProgressBar.Value = Percent End Sub Private Sub CpGost_Progress(Percent As Long) Me.ProgressBar.Value = Percent End Sub Private Sub CpRC6_Progress(Percent As Long) Me.ProgressBar.Value = Percent End Sub Private Sub CpSkj_Progress(Percent As Long) Me.ProgressBar.Value = Percent End Sub 96 Private Sub CpTea_Progress(Percent As Long) Me.ProgressBar.Value = Percent End Sub Private Sub CpTwf1_Progress(Percent As Long) Me.ProgressBar.Value = Percent End Sub Private Sub Form_Activate() ReUpdateIcon Me.LvDecFile Screen.MousePointer = 0 OperateMode = 1 'frmMain.StatusBar.Panels(1).Text = cEncFileName MakeTree EncOrNo = False Dim nFileS As Integer Dim nToatlS As Long Dim I As Integer For I = 1 To Me.LvDecFile.ListItems.Count nTotals = nTotals + Val(LvDecFile.ListItems(I).Tag) Next Me.StatusBar1.Panels(2).Text = "Tæng céng: " & Me.LvDecFile.ListItems.Count & _ " Files -> " & FormatSize(nTotals) GetFolderStr 'If LVDecFile.ListItems.Count = 0 And cCurFilename "" Then ' MsgBox "Sai mËt khÈu, hoÆc sai ®Þnh d¹ng file", vbCritical, "SLCrypt error" ' Unload Me 'End If End Sub Private Sub Form_Load() ApplySin App.Path & "\Skin\winaqua.skn" 'If ValidLicense = False Then End 'For ADODB--------------------- Set ConnectDB = New ADODB.Connection ConnectDB.CursorLocation = adUseClient ConnectDB.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" _ & App.Path & "\SLCrypt.mdb;Jet OLEDB:Database Password=E15@SLCrypt54;" GetSMConfig Set FilesSeleted = New Collection Set FolderSeleted = New Collection cboPath.Text = App.Path & "\" & CurCardHolder & "\Thu muc tep ro\" DecRootFolder = FullPathDes 97 'Init treeview SLCryptError = False Dim Node2 As ComctlLib.Node Set Node1 = tvDir.Nodes.Add(, , "RootFolder", "Root", 4) Set Node2 = tvDir.Nodes.Add(, , "All file", "All Files", 1) 'Check the command line If Len(Command) > 0 Then ListFolderAndFiles Command cEncFileName = Command MakeTree ReUpdateIcon LvDecFile End If End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) On Error Resume Next If Y > tvDir.Top Then If Y < tvDir.ToolTipText + tvDir.Height Then If X > tvDir.Left Then If X < Me.LvDecFile.Left + LvDecFile.Width Then Me.MousePointer = 9 If Button = 1 Then tvDir.Width = X LvDecFile.Left = X + 100 LvDecFile.Width = Me.Width - tvDir.Width - 400 End If End If End If End If End If End Sub 3.2.2.4. Thiết kế và mã nguồn của Form gửi thư Chương trình được thiết kế có module gửi thư mật cho những thành viên trong nhóm. Người sử dụng chỉ cần chọn tệp cần gửi, nhấn vào Menu hay phím phải chuột, chọn người cần gửi, chương trình sẽ tự động mã hóa với khóa của người gửi và gửi đi. 98 Hình 3.9: Chọn người nhận mail trong danh sách Hình 3.10: Thiết kế Form gửi thư Dưới đây là một phần mã nguồn của Module gửi thư: Option Explicit Private WithEvents CpBlf1 As clsBlowfish 99 Private WithEvents CpGost As clsGost Private WithEvents CpDes As clsDES Private WithEvents CpTwf1 As clsTwofish Private WithEvents CpSkj As clsSkipjack Private WithEvents CpRC6 As clsRC6 Private WithEvents CpTea As clsTEA Private WithEvents CpRjd1 As clsRijndael Private InetConn As clsInternetCon 'For send Mail Private WithEvents poSendMail As clsSendMail Private MaskSend As Boolean '----------- Private cEncFileAtt As String Private NumberOfRcp As Integer Private cEncTypeToSend As String * 1 ' misc local vars Dim bAuthLogin As Boolean Dim bPopLogin As Boolean Dim bHtml As Boolean Dim MyEncodeType As ENCODE_METHOD Dim etPriority As MAIL_PRIORITY Dim bReceipt As Boolean Const WM_CUT = &H300 Const WM_COPY = &H301 Const WM_PASTE = &H302 Const WM_CLEAR = &H303 Const WM_UNDO = &H304 Const mUndo = 0 Const mCut = 2 Const MCopy = 3 Const mPaste = 4 Const mDelete = 5 Private SendOrReceive As Boolean Private FontNameIndex%, FontPointsIndex% Private ResetFocusAllowed As Integer, ButtonColor As Long Private MemoBoxBold%, MemoBoxItalic%, MemoBoxUL% Private m_ControlKey As Boolean Private AutoDis As Boolean Dim rsAddessBook As ADODB.Recordset Private Sub CpBlf1_Progress(Percent As Long) 100 Me.ProBar.Value = Percent End Sub Private Sub CpDes_Progress(Percent As Long) Me.ProBar.Value = Percent End Sub Private Sub CpGost_Progress(Percent As Long) Me.ProBar.Value = Percent End Sub Private Sub Form_Load() Dim Clt As Control SendOrReceive = True 'CurSendMailInfo.Email = "" '-------------------------------------------- Set poSendMail = New clsSendMail '-------------------------------------------- Set InetConn = New clsInternetCon 'Generate session key GenerateSSKey App.CompanyName MaskSend = False EncOrNo = True AutoDis = True If CompressOrNo = True Then cEncTypeToSend = "T" Else cEncTypeToSend = "S" End If Me.StatusBar1.Panels(1).Width = Me.Width / 2 Me.StatusBar1.Panels(2).Width = Me.Width / 2 For Each Clt In Me.Controls If TypeOf Clt Is TextBox Then Clt.Text = "" Next Clt Dim I As Integer For I% = 0 To Screen.FontCount - 1 MemoFontName.AddItem Screen.Fonts(I%) Next If FontNameIndex% > Screen.FontCount - 1 Then FontNameIndex% = 0 End If '* set selected 'MemoFontName.ListIndex = FontNameIndex% 101 MemoFontName.Text = "Arial" txtMsg.SelFontName = MemoFontName.Text For I% = 8 To 72 Step 2 MemoFontPoints.AddItem I% Next '* set selected 'MemoFontPoints.ListIndex = FontPointsIndex% MemoFontPoints.Text = 10 txtMsg.SelFontSize = MemoFontPoints Me.txtSender.Caption = CurUserInfo.Fullname Me.txtEMail.Caption = CurUserInfo.Email etPriority = NORMAL_PRIORITY End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) LbMouseMove 10 End Sub Private Sub Form_Resize() On Error Resume Next Dim I As Integer I = Me.ScaleMode Me.ScaleMode = 1 Dim Clt As Control For Each Clt In Me.Controls If TypeOf Clt Is TextBox Then Clt.Width = Me.Width - Clt.Left - 150 Next Clt txtMsg.Width = Me.Width - txtMsg.Left - 150 Me.LstAtt.Width = Me.Width - txtMsg.Left - 150 txtMsg.Height = Me.Height - 3600 - Me.StatusBar1.Height - 60 StatusBar1.Panels(1).Width = Me.Width / 2 - 500 StatusBar1.Panels(2).Width = Me.Width - StatusBar1.Panels(1).Width - 500 Me.ScaleMode = I MoveProgressBarIntoPanel ProBar, StatusBar1, 2 Me.Refresh End Sub 3.3. Một số tính năng đạt được của chương trình Ngoài các tính năng chính là mã hóa, giải mã và gửi thư mật chương trình còn có một số tính năng như: - Hỗ trợ tính năng nhiều người dùng: Chương trình cho phép nhiều người sử dụng trên một máy, trong khi vẫn đảm bảo an toàn thông tin cho từng cá nhân riêng rẽ. 102 Khi dùng tài khoản riêng của mình sẽ không thấy được các thư mục của người khác và ngược lại. Chương trình dùng kỹ thuật giấu thư mục (không phải mã) để khi thoát khỏi chương trình thư mục đã giấu sẽ không vào được, nếu nhấn chuột vào hệ thống sẽ chạy chương trình Control Panel của Windows. - Người sử dụng có thể lựa chọn một trong các phương thức mã: Mã sử dụng khóa, Mã sử dụng thẻ thông minh (Smartcard) hay Mã dùng mật khẩu (password):  Mã sử dụng khóa: Module tạo khóa cho phép người sử dụng có thể trao đổi khóa với nhau theo thỏa thuận (gửi File, thư mục hay gửi thư) sử dụng thuật toán mã đối xứng, yêu cầu người gửi và người nhận có chung và giữ bí mật khóa mã. Đặc biệt người dùng có thể lưu khóa vào các ổ đĩa ngoài rất phổ biến hiện nay (qua cổng USB) và giữ an toàn khóa. Dùng mật khẩu để mã và giải mã có rất nhiều nhược điểm. Nếu dùng mật khẩu dễ nhớ (thường hay dùng ngày tháng năm sinh, tên người thân ... rất dễ bị tấn công), ngược lại nếu dùng mật khẩu phức tạp thì ngay chính người sử dụng cũng dễ bị quên, lúc đó không thể lấy lại được các số liệu ban đầu. Mặt khác, khi mã hóa việc nhớ rất nhiều mật khẩu sẽ dễ gây nên nhầm lẫn. Bộ tạo khóa và quản lý khóa giúp khắc phục được 2 vấn đề cơ bản đó là: + Không cần phải nhớ mật khẩu, thay vào đó người dùng chỉ cần ghi vào thiết bị lưu trữ rồi cất đi (chẳng hạn như ổ đĩa mềm, ổ cắm ngoài, ...) khi nào cần sử dụng sẽ lấy lại. + Bộ tạo khóa sẽ tạo ra các chuỗi khóa phức tạp hơn nhiều so với dùng mật khẩu, do vậy nâng cao được độ an toàn của dữ liệu. Sử dụng bộ tạo khóa rất đơn giản, người dùng chỉ cần nhấn vào nút "tạo khóa" chương trình sẽ tự động tạo ra chuỗi khóa sử dụng. Nguyên tắc tạo khóa của chương trình dựa trên hai yếu tố cơ bản là thời điểm (timestamp) tạo khóa và nơi người tạo khóa (phân theo vùng như đánh địa chỉ IP) để đảm bảo khóa được tạo ra là duy nhất. Sau khi tạo khóa người dùng phải nhớ lưu kết quả lại nếu không khi đó sẽ không thể giải mã được sau khi mã xong. Để ghi kết quả nhấn vào nút "ghi". Người dùng có thể dùng khóa được tạo sẵn để mã dữ liệu, khi đó phải nhấn vào mục "đọc khóa" để xem khóa mình muốn sử dụng.  Mã sử dụng thẻ thông minh – Smartcard Khi người dùng chọn mã sử dụng thẻ thông minh (nếu không có mục đích riêng như: Mã để mang đi không dùng thẻ, mã để gửi cho người khác ngoài nhóm, ...) người sử dụng nên chọn tuỳ chọn này. Lúc đó chương trình sẽ tự chọn lấy khóa riêng của mình lưu trên thẻ và thực hiện mã. Nếu chọn chế độ mã để gửi đi một cửa sổ hiển thị 103 danh sách các thành viên trong nhóm để người dùng lựa chọn, lúc này chỉ có người dùng và người được chọn có thể giải mã được mà thôi.  Mã dùng mật khẩu – password Khi lựa chọn phương thức này, chương trình sẽ yêu cầu người sử dụng vào mật khẩu với độ dài tối thiểu là 6 ký tự, sau khi vào xong chọn phím “OK” chương trình sẽ tiến hành mã. - Quản lý khóa: Chương trình dùng trung tâm quản lý và phân phối khóa, khóa tạo ra đảm bảo duy nhất, được quản lý theo ID và phân phối cho người dùng. - Sử dụng phương pháp trao đổi khóa mã bằng khóa công khai RSA 1024 bit khi gửi và nhận thư: Khi trao đổi qua hệ thống thư chương trình sử dụng khóa công khai RSA. Cặp khóa Chung/Riêng của người sử dụng do trung tâm tạo khóa cấp phát. Khóa riêng của từng người được lưu giữ an toàn trên thẻ thông minh (Smart Card), khóa chung được trung tâm phân phối đi trong nhóm. Khóa phiên được tạo ra và mã hóa bởi khóa công khai của người nhận (khóa này được công khai đối với toàn thể thành viên trong nhóm). 3.4. Kết chương Chương này đã nêu lên hai vấn đề an ninh chính trong hệ thống WLAN đó là: vấn đề chứng thực (chỉ những người được phép mới kết nối được với hệ thống) và vấn đề mã hoá (giúp thông tin khi trao đổi trong hệ thống không bị đánh cắp). Trong đó nhấn mạnh việc mã hoá dữ liệu là một phần quan trọng trong việc bảo mật. Trong chương này cũng trình bày thực trạng và yêu cầu đặt ra cần đảm bảo an ninh an toàn đối với mạng WLAN ngành công an, phân tích và đề xuất giải pháp đảm bảo an ninh mạng WLAN ngành công an. Có thể coi đây là một giải pháp tổng thể áp dụng các chuẩn bảo mật mới, bảo mật tại tất cả các thành phần của mạng WLAN. Phần tiếp theo tập trung nghiên cứu, phát triển một ứng dụng mã hóa đầu cuối cho phép người dùng trao đổi tin an toàn qua mạng WLAN đồng thời giúp cho người dùng bảo vệ số liệu lưu trữ trên các thiết bị lưu trữ sử dụng các thuật toán mã mạnh thông dụng hiện nay hay thuật toán riêng của người dùng cho vào (tùy chọn) góp phần giải quyết yêu cầu nghiệp vụ đặt ra khi trao đổi tài liệu qua mạng WLAN ngành công an. 104 KẾT LUẬN 1. Các vấn đề được tìm hiểu trong luận văn Trong luận văn này đã tìm hiểu các vấn đề chính sau đây: - Trình bày tổng quan về sự phát triển của mạng không dây, các công nghệ ứng dụng trong mạng không dây cũng như các kỹ thuật điều chế trải phổ. Chúng ta cũng có thể hiểu một cách khái quát cơ chế hoạt động của mạng WLAN, ưu điểm cũng như các mô hình hoạt động của mạng WLAN. Ngoài ra, chúng ta cũng tìm hiểu về chuẩn 802.11 cho mạng WLAN, nắm được những gì diễn ra trong quá trình thiết lập kết nối với một hệ thống WLAN đơn giản (chưa có chứng thực và mã hóa). - 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 kiểu tấn công trong 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 như: Phương pháp bảo mật dựa trên WEP, TKIP, AES-CCMP. - Nghiên cứu, đề xuất giải pháp đảm bảo an ninh mạng WLAN ngành công an, từ yêu cầu nghiệp vụ đặt ra phát triển một ứng dụng mã hóa đầu cuối cho phép người dùng trao đổi tin an toàn qua mạng WLAN đồng thời giúp cho người dùng bảo vệ số liệu lưu trữ trên các thiết bị lưu trữ sử dụng các thuật toán mã mạnh thông dụng hiện nay hay thuật toán riêng của người dùng cho vào (tùy chọn) góp phần đảm bảo bảo mật khi trao đổi tài liệu qua mạng WLAN ngành công an. Luận văn đã đóng góp một số kết quả sau: - Đã trình bày một cách có hệ thống về sự phát triển của mạng không dây, các nguy cơ mất an ninh an toàn trong mạng không dây, phân tích, đánh giá một số giải pháp đảm bảo an ninh an toàn cho mạng WLAN. Từ đó giúp người sử dụng có cái nhìn tổng quan, đánh giá được ưu nhược điểm của các phương pháp bảo mật WLAN đã và đang được sử dụng. - Từ các kiến thức đã tìm hiểu ứng dụng đề xuất giải pháp, phát triển ứng dụng đảm bảo an ninh an toàn cho mạng WLAN ngành công an góp phần bảo mật thông tin khi trao đổi qua mạng WLAN của ngành đáp ứng yêu cầu đặt ra. 2. Hướng nghiên cứu tiếp theo - Tiếp tục nghiên cứu sâu hơn về vấn đề mã hóa trong mạng không dây. - Nghiên cứu vấn đề chứng thực trong mạng không dây. - Nghiên cứu các biện pháp tích hợp hệ thống chứng thực điện tử cho việc đảm bảo an toàn thông tin. - Nghiên cứu mạng Wireless VLAN. 105 TÀI LIỆU THAM KHẢO Tiếng Việt 1. Phạm Huy Điển, Hà Huy Khoái (2003), Mã hóa thông tin cơ sở toán học và ứng dụng, Nhà xuất bản Đại học Quốc gia Hà Nội. 2. Phan Đình Diệu (1999), Lý thuyết mật mã và an toàn thông tin, Đại học Quốc Gia Hà Nội, Hà Nội. 3. Trịnh Nhật Tiến (2004), Bài giảng: “Một số vấn đề về an toàn dữ liệu”. 4. Nguyễn Thúy Vân (1999), Lý thuyết mã, Nhà xuất bản Khoa học và kỹ thuật. Tiếng Anh 5. Aaron E. Earle (2006), Wireless Security Handbook, Auerbach Publications Taylor & Francis Group, New York. 6. Cyrus Peikari, Seth Fogie (2002), Maximum Wireless Security, Sams Publishing, USA. 7. Jahanzeb Khan, Anis Khwaja (2003), Building Secure Wireless Networks with 802.11, Wiley Publishing, Indianapolis, Indiana. 8. Jon Edney, William A. Arbaugh (2003), Real 802.11 Security: Wi-Fi Protected Access and 802.11i, Addison Wesley, Boston. 9. Lee Barken (2003), How Secure Is Your Wireless Network? Safeguarding Your Wi-Fi LAN, Prentice Hall PTR, New Jersey. 10. P. Nicopolitidis, M. S. Obaidat, G. I. Papadimitriou and A. S. Pomportsis (2003), Wireless Networks, John Wiley & Sons. 11. Pejman Roshan, Jonathan Leary (2003), 802.11 Wireless LAN Fundamentals, Cisco Press, Indianapolis, Indiana. 12. Wi-Fi Alliance (2003), Wi-Fi Protected Access: Strong, standards-based, interoperable security for today’s Wi-Fi networks, USA. 13. Wi-Fi Alliance (2004), Enabling the Future of Wi-Fi Public Access, USA. 14. William Stallings (2003), Network security essentials: Applications and standards, Second Edition, Alan Apt. 15. William Stallings (2005), Cryptography and Network Security Principles and Practices, Fourth Edition, Prentice Hall.

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

  • pdfLUẬN VĂN- NGHIÊN CỨU CÁC GIẢI PHÁP ĐẢM BẢO AN NINH AN TOÀN CHO MẠNG KHÔNG DÂY.pdf