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).
108 trang |
Chia sẻ: lylyngoc | Lượt xem: 2733 | Lượt tải: 4
Bạn đang xem trước 20 trang 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, để xem tài liệu hoàn chỉnh 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:
- 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.pdf