Ở phần trên chúng ta đã nghiên cứu về các phương pháp mã hóa đối
xứng. Ứng dụng trong luận văn này, khi phối hợp sử dụng token key, em áp
dụng thuật toán mã hóa RSA, mã hóa từng gói tin với khóa công khai và khóa
bí mật nằm trong token của mỗi Client.
2.3.4.1. Mô tả sơ lược
Thuật toán RSA có hai khóa: khóa công khai (hay khóa công cộng) và
khóa bí mật (hay khóa cá nhân). Mỗi khóa là những số cố định sử dụng trong
quá trình mã hóa và giải mã. Khóa công khai được công bố rộng rãi cho mọi
người và được dùng để mã hóa. Những thông tin được mã hóa bằng khóa
công khai chỉ có thể được giải mã bằng khóa bí mật tương ứng. Nói cách
khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá nhân (bí
mật) mới có thể giải mã được.
105 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 3393 | Lượt tải: 5
Bạn đang xem trước 20 trang tài liệu Luận văn Nghiên cứu giải pháp bảo mật 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
a có thể ngăn chặn việc gửi lại gói tin bằng cách hủy tất cả những gói
47
tin nào có TSC đã nhận. Quy tắc này khiến cho việc gửi lại gói tin cũ không
thực hiện được.
Cách đơn giản nhất để ngăn chặn kiểu dùng lại gói tin là hủy bất cứ gói
tin nào có TSC không lớn hơn TSC của gói tin vừa nhận được 1 đơn vị.
Tuy nhiên có rất nhiều lý do giải thích tại sao cách đơn giản như vậy lại
không áp dụng được vào thực tế. Trước hết là do khả năng các gói tin bị thất
lạc trong quá trình truyền bởi nhiễu. Ví dụ, nếu thu được một khung có số
TSC là 1234 và khung tiếp theo (1235) bị mất, nhưng vẫn thu được khung
kế tiếp có TSC là 1236, nó lớn hơn 1234 là 2 đơn vị. Bởi vì khung 1235 bị
thất lạc nên tất cả các khung sau đó bị hủy bởi vì TSC có giá trị tăng lên
không phải là 1.
Với quy tắc: hủy bất cứ gói tin nào có TSC nhỏ hơn hoặc bằng TSC
của gói tin trước đó, nhưng khi phải truyền lại thì làm thế nào? Theo chuẩn,
các gói tin phải được bên thu xác nhận bằng gói tin ACK. Nếu không nhận
được sự xác nhận từ phía bên kia, gói tin đó cần được truyền lại với một bit
được thiết lập để chỉ rằng nó là gói tin được gửi lại. Bởi là gói tin gửi lại nên
nó có TSC trùng với gói tin trước. Thực tế thì nó vẫn được chấp nhận bởi
chỉ có một bản copy duy nhất mà bên thu cần. Do có khả năng phải truyền lại
nên các gói tin có TSC giống nhau không phải lúc nào cũng được coi là do kẻ
gian gửi đến.
Có một vấn đề nan giải hơn liên quan đến khái niệm burst-ack. Trong
chuẩn IEEE 802.11, mỗi gói dữ liệu được gửi đi phải có một gói tin xác nhận
riêng. Như vậy dường như không hiệu quả cho lắm vì bên phát phải dừng và
đợi cho đến khi nhận được xác nhận do bên thu gửi thì mới được truyền
tiếp. Ý tưởng của burst-ack là gửi 16 gói tin liên tiếp rồi mới gửi trả lại xác
nhận cho 16 gói tin đó. Nếu có một số gói tin không nhận được, bên thu sẽ
48
báo lại chính xác gói tin nào cần truyền lại. Burst-ack chưa được đưa vào
chuẩn nhưng nó chắc chắn sẽ được đưa vào trong tương lai.
Với burst-ack, thì vấn đề đối với TSC là quá rõ ràng. Giả sử 16 gói tin
đã được gửi đi, mỗi gói lại có TSC lớn hơn gói trước và bên thu không nhận
được gói đầu tiên. Nó yêu cầu gửi lại gói đầu tiên đó, điều gì sẽ xảy ra với số
TSC ban đầu. Nó nhỏ hơn 15 đơn vị so với gói tin nó nhận được cuối cùng
và sẽ bị hủy nếu tuân theo quy tắc TSC phải lớn hơn.
Để khắc phục, TKIP sử dụng một khái niệm gọi là cửa sổ truyền lại.
Bên thu theo dõi TSC cao nhất nhận được và 16 TSC sau cùng. Nếu nhận
được một gói mới, nó phân loại gói đó ra thành một trong 3 dạng:
Chấp nhận (accept): nếu TSC lớn hơn số lớn nhất mà nó đã biết.
Hủy (reject): nếu TSC nhỏ hơn số lớn nhất trừ đi 16.
Cửa sổ (window): nếu TSC nhỏ hơn số lớn nhất và lớn hơn số lớn
nhất trừ đi 16.
Đối với dạng cửa sổ, nó kiểm tra xem liệu có gói tin nào mà có TSC
đã được nhận trước đó, nếu đã có rồi thì nó hủy luôn. Bên thu phải lưu lại 16
giá trị TSC và kiểm tra từng cái khi nó nhận được.
Quy tắc này phức tạp hơn quy tắc ban đầu, nhưng nó ngăn chặn một
cách có hiệu quả các gói tin do kẻ gian truyền lại trong khi vẫn đảm bảo
giao thức hoạt động tốt.
2.3.2.2. Những quá trình diễn ra trong TKIP
Phần này mô tả chi tiết cách hoạt động của thuật toán TKIP. Trước
hết, ta coi các khóa chính đã được đưa đến các thiết bị và các khóa phiên
được tạo ra từ khóa chính đã được tạo ra. Khóa chính được cung cấp thông
qua các lớp trên theo phương pháp EAP, hoặc sử dụng khóa chính được thiết
lập từ trước.
Có 3 loại khóa được tạo ra đối với TKIP :
49
Khóa được dùng để mã gói tin trao đổi EAPOL-Key.
Khóa được dùng để mã các gói tin unicast (Pairwise key).
Nhóm khóa dùng để mã các gói tin broadcast (Group key).
Pairwise key này lại bao gồm các khóa:
Khóa tạm thời (128bit): được dùng như là một khóa đầu vào cho
giai đoạn tạo khóa hỗn hợp trước khi đi qua RC4.
Khóa MIC TX chứng thực tạm thời: được dùng để tạo ra MIC
(bằng phương pháp chứng thực Michael) cho các khung do AP gửi đi.
Khóa MIC RX chứng thực tạm thời: dùng trong thuật toán Michael
để tạo ra MIC trong các khung do STA gửi đi.
Đối với các khóa nhóm (khóa dùng để mã các gói tin multicast hoặc
broadcast), chỉ cần có 2 kiểu đầu tiên bởi vì chỉ có AP gửi broadcast và
multicast, STA không bao giờ gửi những gói tin này.
Nhiệm vụ của TKIP là cung cấp dịch vụ bảo mật để xác nhận tính
hợp lệ của gói tin nhận được và làm giảm lượng thông tin cần thiết để xác
thực. Để làm được điều này, TKIP sử dụng các công cụ sau:
Tạo ra IV và kiểm tra.
Tạo ra MIC và kiểm tra.
Mã hóa và giải mã.
Đứng từ phía phát, vị trí của những thành phần trên liên quan tới
những hoạt động khác trong MAC như mô tả trong hình 2.16. Bốn quá
trình xử lý trong TKIP được mô tả dưới đây:
Michael
Tạo khóa phái sinh.
IV/TSC
RC4
50
Hình 2.16: Quá trình xử lý ở bên phát
Lưu ý rằng, giá trị kiểm tra tính toàn vẹn MIC được tính đầu tiên và
được gắn vào MSDU trước khi nó được chia nhỏ. Vì thế mà các byte kiểm
tra này sẽ nằm ở MPDU cuối cùng và nằm trong phần dữ liệu được mã hóa.
ICV của WEP vẫn được tính toán và thêm vào cho mỗi MPDU cho dù nó
không nằm trong phần kiểm tra tính toàn vẹn của TKIP.
Bởi MIC được tính toán ở mức MSDU, không bảo vệ được IV,
khiến cho kẻ tấn công ngăn chặn STA bằng cách gửi các gói tin cũ với một
IV mới. Vấn đề này gia tăng bởi IV có giá trị 48 bit, bằng TSC, giá trị dùng
để tránh bị tấn công theo kiểu gửi lại gói tin cũ. Những gói tin giả mạo này
đương nhiên sẽ không được giải mã và bị hủy, chúng không tác động đến
tính toàn vẹn của giao thức. Tuy nhiên, nó khiến cho các gói tin hợp lệ sau
đó giống như một kiểu tấn công gửi lại gói tin. Khi một gói tin hợp lệ tới, nó
51
có thể bị từ chối bởi TSC của nó đã bị STA của tin tặc dùng. Đây là một kiểu
tấn công DOS. Trong môi trường mạng không dây, có rất nhiều cách đơn
giản để thực hiện kiểu tấn công này, không thể nào ngăn chặn được nó và
hiện đang là mối nguy hại khó tránh khỏi.
Phần mã hóa trong hình 2.16 giống quá trình mã hóa RC4 trong WEP.
Hầu hết các nhà sản xuất đã thực hiện quá trình mã hóa này theo cách mà
không thể nâng cấp được bằng firmware. Các thiết bị dùng WEP thường có
RC4 S-box tạo bởi phần cứng, không thể thay đổi đổi được, chính nó là vấn
đề khó giải quyết nhất khi thiết kế TKIP. Quá trình xử lý diễn ra tại phía đầu
thu được mô tả như trong hình 2.17:
Hình 2.17: Quá trình xử lý ở bên thu
Quá trình xử lý diễn ra ở đây không hoàn toàn ngược lại với bên phát.
Có một điều, việc giải mã không phải được thực hiện trước tiên, mà là
kiểm tra TSC nhằm ngăn chặn khả năng bị tấn công kiểu gửi lại gói tin. ICV
52
cũng được dùng để kiểm tra nhằm loại những gói tin không hợp lệ. Nó
không phải là một kỹ thuật kiểm tra tính toàn vẹn, nhưng nó là một cách
để tìm câu trả lời cho câu hỏi liệu việc giải mã có thành công hay không,
vì giải mã một gói tin không đúng khóa hay không đúng IV thường chắc
chắn tạo ra một ICV sai.
MIC được kiểm tra sau khi toàn bộ các fragment đã nhận đủ và được
ghép lại thành một MSDU. Nếu MIC sai, MSDU đó sẽ bị hủy. Cho dù là có
khả năng xảy ra nhưng gần như chắc chắn là khó có khả năng các lỗi ngẫu
nhiên trong quá trình truyền có thể qua được quá trình kiểm tra CRC và giải
mã thành công ra ICV hợp lệ. Nếu nhận sai MIC, ta có thể tin chắc rằng đó
là do sự can thiệp có chủ ý và không phải do nhiễu hay lỗi đường truyền.
2.3.3. Phương pháp bảo mật dựa trên AES-CCMP
2.3.3.1. Giới thiệu về AES-CCMP
AES-CCMP có độ an toàn cao nhất trong chuẩn IEEE 802.11i. Các
hệ thống bảo mật sử dụng thuật toán AES cùng với một mode hoạt động nào
đó, một số mode đơn giản và phổ biến nhất sẽ được nói đến ở đây. Sau đó
chúng ta sẽ tìm hiểu CCMP, giao thức được sử dụng trong IEEE 802.11 và
tìm hiểu cách thức hoạt động của giao thức này. Phần này cũng cho thấy làm
thế nào mà CCMP lại phù hợp với IEEE 802.11 framework và cung cấp chế
độ bảo mật hợp lý mà thỏa mãn hầu hết nhu cầu của người sử dụng.Phần
trước đã tìm hiểu về TKIP, một trong những phương pháp dùng để mã hóa và
chứng thực gói tin nằm trong RSN. TKIP là phần không thể thiếu được trong
WPA, nó được sử dụng khá rộng rãi để đảm bảo an toàn trong quá trình sử
dụng mạng không dây dựa trên những thiết bị chạy trên nền tảng của WEP.
Tuy nhiên, nó lại không phải là mode mặc định đối với IEEE 802.11i mà là
mode dựa trên chuẩn mã hóa AES. Việc mã hóa dựa trên AES mạnh hơn so
với TKIP. Vấn đề tại sao nó lại được chọn lựa và vì lí do gì? Khi nói đến
53
RSN dựa trên AES thì AES không phải là một giao thức bảo mật,nó chỉ là
thuật toán mã khối. Trong RSN, giao thức bảo mật có sử dụng thuật toán
AES được gọi là giao thức Counter Mode-CBC MAC hay CCMP. CCMP
bao gồm một loạt các quy tắc trong đó có sử dụng thuật toán mã hóa khối
AES để bảo vệ các khung dữ liệu IEEE 802.11. AES chỉ là thuật toán dùng
trong CCMP giống như RC4 là thuật toán dùng trong TKIP.Một lý do mà
CCMP được cho là mạnh hơn TKIP bởi nó được xây dựng từ đầu, tức là
nó được tạo ra hoàn toàn mới với những kỹ thuật tốt nhất. Khác hoàn toàn
với TKIP, bởi TKIP là một giải pháp tình thế được tạo ra nhằm khắc phục
những điểm yếu của WEP.
2.3.3.2. Thuật toán AES và các mode mã hóa
AES là thuật toán mã hóa khối, nó sử dụng các phép toán thông
thường, các phép toán logic và khóa để biến một khối dữ liệu rõ 128 bit thành
một khối dữ liệu mã. AES dựa trên thuật toán Rijdael do Joan Daeman và
Vincent Rijmen tìm ra. Thuật toán này được chứng minh bằng tài liệu rất
rõ ràng, bao gồm cả phần thuật toán và cách sử dụng rất chi tiết và đầy đủ
(Daeman and Rijmen, 2000, 2001).Thuật toán Rijdael cho phép chọn các
kích thước của khối và khóa khác nhau,có thể chọn 128, 192 hay 256 bit.
Khi NIST quyết định chọn Rijdael cho AES thì ban đầu chỉ với độ lớn của
khối là 128 bit nhưng vẫn cho phép chọn lựa 3 độ dài khóa khác nhau. IEEE
802.11i tiếp tục hạn chế thêm tức là chỉ chọn kích thước khóa và khối có độ
dài 128 bit, điều này làm đơn giản hóa việc triển khai và tránh gây rắc rối
cho người sử dụng phải chọn lựa khi cài đặt. Có thể dùng AES để mã hóa và
giải mã một khối dữ liệu riêng biệt có độ dài cố định tuy nhiên dữ liệu thực tế
lại không phải như vậy. Ví dụ, dữ liệu của WLAN được truyền đi với các
khung có độ dài khác nhau, từ 512 đến 12000 bit. Vì thế, để sử dụng thuật
toán mã hóa khối như AES chẳng hạn, chúng ta cần phải tìm cách tách ghép
54
dữ liệu sao cho nó có thể tạo thành được các khối có độ dài cố định trước
khi mã, cũng như làm sao tái tạo lại khung dữ liệu như ban đầu sau khi giải
mã. Phương pháp dùng để biến đổi dữ liệu thành các khối và ngược lại gọi là
mode mã hóa. Việc chọn lựa một mode nào đó là rất quan trọng bởi nó liên
quan đến cả độ phức tạp trong quá trình triển khai cũng như đối với vấn đề
bảo mật. Các mode không hợp lý có thể tạo ra những lỗ hổng ngay cả khi
được mã bởi AES.
Để hiểu được các mode hoạt động, chúng ta sẽ tìm hiểu một trong
những mode đơn giản và dễ hiểu nhất: ECB (Electronic Code Book). Mode
này khi được sử dụng cùng với thuật toán AES có tên gọi là AES/ECB.
a. Electronic Code Book (ECB)
Mode này đơn giản chỉ việc chia dữ liệu ban đầu ra thành các khối, sau
đó thực hiện việc mã hóa đối với từng khối riêng biệt nhưng với cùng một
khóa cho đến khi khối cuối cùng được mã hóa hết. Hình dưới đây mô tả
quá trình thực hiện theo cả phương pháp nối tiếp và song song.
Hình 2.18: Quá trình hoạt động của ECB Mode
55
Cách này thực hiện rất đơn giản nhưng lại gặp phải một số vấn đề.
Trước hết đó là do dữ liệu đầu vào không phải lúc nào cũng vừa đủ chia thành
cách khối, vì thế phải thêm các bit và phải nhớ độ dài thực sự của dữ liệu ban
đầu. Tiếp đến là vấn đề về bảo mật: nếu hai khối có nội dung như nhau thì
sau khi mã sẽ có bản mã tương tự nhau do cùng khóa.
Ví dụ xét một chuỗi có 64 ký tự giống nhau “AAAAAA…”, nếu kích
thước của khối AES là 128 bit (hay 16 byte) thì khi dùng ECB chuỗi đó sẽ
được chia ra thành 4 khối, mỗi khối gồm 16 chữ A. Sau khi mã hóa, 4 khối
này sẽ cho ra 4 khối bản mã giống hệt nhau, từ bản mã đó dưới con mắt của
người ngoài sẽ dễ dàng nhận ra là 4 khối đó có dữ liệu ban đầu giống nhau.
Do đặc điểm này và một số đặc điểm khác nữa của ECB nên trong thực tế nó
không được sử dụng. Ngay cả NIST cũng khuyến cáo không nên dùng mode
này, ngay cả khi nó được bảo vệ bằng thuật toán mạnh nhất.
b. Counter Mode
Counter mode phức tạp hơn ECB và nó hoạt động theo cách hoàn toàn
khác, nó không trực tiếp sử dụng khối mã AES, thay vào đó, nó mã giá trị
của số đếm tương ứng rồi sau đó XOR kết quả mã với khối dữ liệu để
được khối mã. Các số đếm này được tăng lên một đơn vị ứng với mỗi khối
được mã. Quá trình này được mô tả trên hình sau:
Hình 2.19: Ví dụ về Counter Mode
Trên hình vẽ ta thấy, dữ liệu được chia thành các khối, mỗi khối được
XOR với kết quả mã của số đếm. Ở đây, giá trị của bộ đếm tăng từ 1 đến 11
56
ứng với 11 khối dữ liệu. Thực tế, bộ đếm có thể bắt đầu từ một số bất kỳ và
tăng theo một quy luật khác. Điều quan trọng là bên thu nếu muốn mã hóa
được dữ liệu thì phải biết giá trị ban đầu của bộ đếm cũng như quy luật tăng
của nó.
Do bộ đếm thay đổi giá trị khác nhau ứng với mỗi khối nên vấn đề về
các khối mã giống nhau mà ECB gặp phải đã được giải quyết. Ngay cả với
hai khối dữ liệu đầu vào giống hệt nhau thì kết quả sau của bản mã thu
được vẫn khác nhau nhờ vào bộ đếm. Tuy nhiên, có trường hợp phương
pháp này vẫn mã hóa hai khối giống hệt nhau, tách biệt hẳn nhau nhưng vẫn
cho giá trị mã giống nhau, điều này giải thích tại sao bộ đếm không bắt đầu
từ một mà nó thường bắt đầu từ một giá trị bất kỳ rồi thay đổi ứng với mỗi
khối.Counter mode có một số đặc điểm khá thú vị. Việc giải mã được thực
hiện y hệt như quá trình mã bởi vì XOR cùng một giá trị 2 lần sẽ trả lại kết
quả như ban đầu. Điều đó có nghĩa là khi thực hiện chỉ cần mỗi khối mã
hóa AES mà không cần đến khối giải mã. Một đặc điểm khác là quá trình mã
hóa có thể được thực hiện song song, do tất cả các giá trị của bộ đếm được
biết trước nên giá trị mã hóa AES của các bộ đếm có thể được tính toán
trước, nhờ đó có thể mã hóa toàn bộ dữ liệu cùng một lúc. Không phải
mode nào cũng thực hiện được giống như vậy. Và một đặc điểm nữa là dữ
liệu không phải chia chính xác đúng độ dài của một khối. Đơn giản chỉ cần
lấy một khối (ví dụ chỉ là 100 bit chứ không phải là 128 bit) và XOR nó với
giá trị mã của số đếm rồi lấy đúng số bit mà ta cần (lấy 100 bit chứ không
phải là 128 bit, bỏ 28 bit). Do vậy mà độ dài của bản mã bằng đúng độ dài
của bản rõ. Do việc mã hóa mỗi khối phụ thuộc vào giá trị của khối trước đó
nên counter mode cần cho mã hóa chuỗi.Counter mode đã được sử dụng trên
20 năm và khá phổ biến cũng như được cộng đồng những nhà mật mã tin
cậy. Tính đơn giản và chín muồi của nó là một lựa chọn hấp dẫn đối với
57
RSN. Tuy nhiên, mode này không cung cấp khả năng chứng thực, vì thế
mà RSN đã phải đưa thêm tính năng mới này vào.
c. Counter Mode + CBC MAC (CCM)
CCM mode được tạo ra dành riêng cho IEEE 802.11i RSN, nhưng nó
cũng có thể được áp dụng cho các hệ thống khác và là mode chính sử dụng
với AES. Nó cũng được đệ trình lên IETF để dùng cho bảo mật IP. CCM
được 3 nhà mật mã học trong nhóm IEEE 802.11i tìm ra, đó là: Doug
Whiting, Russ Housley và Niels Ferguson. Nó được tạo ra dựa trên counter
mode.CCM sử dụng counter mode cùng với một phương pháp chứng thực dữ
liệu gọi là CBC (Cipher Block Chaining). CBC được dùng để tạo ra MIC.
MIC được gọi là mã chứng thực gói tin, vì thế mà có tên là CBC-MAC.CBC-
MAC là một kỹ thuật khác cũng được dùng trong rất nhiều năm và được
chuẩn hóa trên toàn thế giới. Nó được thực hiện như sau:
1. Lấy một khối dữ liệu đầu tiên và mã hóa nó bằng AES (hay bằng
phương pháp mã khối nào đó).
2. XOR kết quả với khối thứ 2 và lại mã tiếp.
3. Lại tiếp tục XOR kết quả trước với khối tiếp theo và mã kết quả
vừa XOR, cứ lặp lại quá trình như vậy cho đến khi toàn bộ dữ liệu được mã
hết. Kết quả cuối cùng là một khối (trong trường hợp này là 128 bit) là sự
kết hợp của tất cả dữ liệu. Nếu chỉ cần một hay một số bit bị thay đổi, kết quả
thu được sẽ hoàn toàn khác (xác suất trùng nhau chỉ là 2-128). CBC-MAC
rất đơn giản nhưng lại không thực hiện được theo kiểu song song, việc mã
hóa phải thực hiện tuần tự. Thêm vào đó, nó chỉ có thể sử dụng đối với dữ
liệu có số khối chính xác. CCMP cung cấp một giải pháp là thêm bit (pading)
nhưng nó lại khiến cho một số nhà mật mã học lo lắng.CCM mode dùng cả
hai kỹ thuật nổi tiếng, đó là counter mode và CBC-MAC. Nó thêm vào
58
những đặc điểm rất hữu ích cho các ứng dụng như là đối với RSN. Các đặc
điểm đó là:
Tạo ra số nonce nên các dữ liệu là hoàn toàn khác nhau.
Việc mã hóa và chứng thực chỉ sử dụng một khóa.
Mở rộng việc chứng thực đối với dữ liệu không được mã hóa.
Đặc điểm cuối cùng cần phải tìm hiểu kỹ và khá quan trọng đối với
RSN. Trong hầu hết các phương pháp đang được sử dụng để thực hiện mã
hóa và chứng thực, thường giả định rằng toàn bộ dữ liệu sẽ được mã hóa.
Tuy nhiên, trong IEEE 802.11 chỉ có một phần dữ liệu là được mã. Phần
header của khung IEEE 802.11 có chứa địa chỉ MAC để chuyển gói tin đến
đích cũng như các thông tin về hoạt động của WLAN cần phải được ở dạng
rõ, tức là không mã hóa. Vì thế mà chỉ có phần dữ liệu là được mã mà thôi.
Tuy nhiên, dù phần header không được mã thì bên thu vẫn muốn đảm bảo nó
không bị thay đổi. Ví dụ, ta không muốn một kẻ nào đó thay đổi địa chỉ
nguồn, vì nếu xảy ra như vậy, ta sẽ gửi trả lại dữ liệu cho kẻ gian thay vì gửi
cho chính người ta muốn gửi. Để làm được điều này, người ta sử dụng CCM,
nó cho phép việc mã hóa được thực hiện ở một phần của gói tin được chứng
thực bởi CBC-MAC.
Nhìn chung việc sử dụng cùng một khóa để thực hiện hai chức năng
mã hóa là không hay cho lắm. Ở đây chính là việc dùng một khóa để mã hóa
và chứng thực. Tuy dùng chung một khóa nhưng trong mỗi trường hợp lại
dùng cùng với IV. Cấu trúc của IV là khác nhau đối với các phần counter
mode và CBC-MAC, vì thế dẫn đến hai khóa tách riêng biệt.
2.3.3.3. Sử dụng CCMP trong quá trình mã hóa và giải mã
Phần này mô tả cách mà các gói WLAN được mã hóa và giải mã sử
dụng CCMP. Điều quan trọng đầu tiên là CCMP mã hóa dữ liệu ở cấp
MPDU chứ không phải là ở MSDU. Mỗi một MPDU ứng với một khung
59
truyền và nó là một phần của MSDU do MSDU được chia ra thành các
MPDU.
a. Các bước mã hóa tổng quát
Dữ liệu đầu MSDU được chia ra thành các fragment. Mỗi fragment tạo
nên một MPDU và có phần header IEEE 802.11 bao gồm địa chỉ nguồn, địa
chỉ đích và các thông số khác. Mỗi MPDU được xử lý bằng thuật toán
CCMP để tạo ra một MPDU mã. Chỉ có phần dữ liệu là được mã, còn phần
header thì không. Tuy nhiên, CCMP thực hiện nhiều việc khác chứ không
chỉ mã hóa các phần của MPDU. Nó còn thêm vào các trường, khiến cho độ
dài của MPDU sau khi mã lớn hơn MPDU trước 16 byte.
Hình 2.20 mô tả quá trình của dữ liệu từ MSDU đến MPDU và truyền
dữ liệu đi.
Hình 2.20: Quá trình xử lý gói tin trong CCMP
60
Trình tự xử lý với một MPDU được thể hiện như trong hình 2.21 và
được mô tả như sau:
1. Ban đầu là với MPDU chưa được mã, có đầy đủ phần IEEE
802.11 MAC header. Phần header này bao gồm cả địa chỉ nguồn, địa chỉ
đích, một số trường được gán giá trị sau nên tại thời điểm này nó có giá trị
0.Thông tin chứa trong header được trích ra và được sử dụng trong quá trình
tạo ra số MIC 8 byte. Trong giai đoạn này phần CCMP header 8byte được
tạo ra để sau đó ghép vào MPDU.
3. MIC đã được tính toán nhằm bảo vệ CCMP header, dữ liệu và
các phần khác của IEEE 802.11 header. Những giá trị của trạng thái hiện tại
được đưa vào trong số nonce. MIC sau đó được ghép với dữ liệu.
4. Cả phần dữ liệu và MIC đều được mã hóa. Sau khi mã hóa, phần
CCMP
header được gắn vào.
5. Cuối cùng, phần MAC header được phục hồi và gắn vào phần
đầu của MPDU vừa mã ở trên, đến thời điểm này, nó đã sẵn sàng trong hàng
đợi để truyền đi. Trong quá trình truyền, chỉ có phần MAC header được quan
tâm và cập nhật, không có thay đổi gì đối với CCMP header.
61
Hình 2.21: Trình tự xử lý một MPDU
Các MPDU được mã được đưa đến hàng đợi trước khi truyền. Có thể
có một vài hàng đợi khác nhau và thứ tự của các hàng đợi dựa trên một số
chính sách ưu tiên. Điều này cho phép mở rộng về sau đối với các lớp dữ
liệu khác nhau trong IEEE 802.11e. Ngay trước khi truyền, một số trường
của IEEE 802.11 header được thay đổi để phù hợp với quy tắc truyền. Các
trường bị thay đổi được gọi là các trường có thể biến đổi và chúng không
được dùng để tính lại số MIC nữa.
Ở đây ta tìm hiểu một chút về CCMP header. Nó được tạo ra và được
gắn vào dữ liệu sau khi mã và được truyền đi dưới dạng không mã hóa.
CCMP header được sử dụng với hai mục đích, trước hết, nó cung cấp một số
thứ tự gói (PN-Packet Number) 48 bit để ngăn chặn việc sử dụng lại gói tin
và cho phép bên thu tạo ra được số nonce dùng trong việc mã hóa. Thứ hai,
trong trường hợp multicast, nó sẽ thông báo cho bên thu biết sử dụng khóa
nhóm nào. Định dạng của CCMP header giống như định dạng của TKIP
header, điều này nhằm mục đích đơn giản hóa cho AP vì nó nhận cả TKIP
và CCMP từ các STA. Định dạng này được mô tả trong hình 2.22.
Hình 2.22: Phần đầu CCMP
62
Trong số 8 byte thì 6 byte là dành cho số PN (48 bit), 1 byte dự phòng,
byte còn lại có các bit của KeyID. Lưu ý rằng bit bên cạnh KeyID được
thiết lập giá trị 1 ứng với bit IV mở rộng trong TKIP. Nó cũng chỉ ra rằng đó
là khung định dạng của RSN chứ không phải của WEP.
b. Quá trình thực hiện
Quá trình làm việc của khối CCMP có thể được xem như là một quá
trình xử lý với các đầu vào và đầu ra như hình 2.23 đã thể hiện:
Hình 2.23: Mã hóa và giải mã
Quá trình giải mã có các đầu vào giống như quá trình mã, chỉ khác mỗi
MPDU mã chứ không phải là MPDU rõ. Ta có thể tách được các thông tin
đầu vào giống như bên phát vì phần header chứa đầy đủ các thông tin cần
thiết, bao gồm cả CCMP header.
Việc thực hiện CCMP phải luôn đúng thứ tự của gói bởi nó luôn có giá
trị khác nhau đối với mỗi gói. Điều này nhằm ngăn không cho kẻ gian sử
dụng lại gói tin đã được gửi trước đó. Số PN này có độ dài là 48 bit, đủ lớn
để đảm bảo rằng nó không bị cạn kiệt trong khoảng thời gian dài, không
bao giờ có hai gói tin có cùng số này. Đương nhiên nếu ta tắt nguồn và
khởi động lại thiết bị, PN cũng sẽ được gán giá trị lại từ đầu, nhưng với giá trị
khóa hoàn toàn khác nên cũng không đáng ngại.
Những gì diễn ra trong khối mã CCMP được mô tả trong hình 2.24.
63
Hình 2.24: Bên trong khối mã hóa CCMP
Có hai giai đoạn tính toán: đầu tiên là tính ra số MIC để gắn vào
MPDU, sau đó cả MPDU bao gồm cả MIC được mã hóa.
Một MPDU đã được mã lại có thêm hai trường nữa, đó là CCMP
header và MIC. Trường MIC (64 bit) và chỉ bằng một nửa kích thước của
khối AES nhưng cũng đủ lớn để giảm khả năng giả số MIC xuống còn 10 19.
Thứ tự của các trường trong MPDU mã được mô tả trong hình 2.25.
Hình 2.25: MPDU sau quá trình mã (CH=CCMP Header)
Các bước mã hóa một MPDU:
64
Trước khi bắt đầu việc mã hóa, cần phải chuẩn bị tất cả những gì cần
thiết của MPDU để nó thực hiện đúng thứ tự. Bắt đầu với 3 phần: MAC
header, CCMP header và dữ liệu rõ. Các trường có thể thay đổi của MAC
header được thiết lập toàn 0. CCMP header được gán các giá trị PN và các
bit KeyID. Lưu ý một điều là PN tăng đối với mỗi MPDU. Phần dữ liệu là
phần chứa dữ liệu chưa mã.
Phần MAC header và CCMP header sẽ không được mã nhưng lại cần
trong quá trình tạo ra số MIC. Hai header này được nhóm lại tạo ra dữ liệu
chứng thực. Việc đầu tiên sau khi ghép nối các phần lại với nhau là tính toán
MIC.
Việc tính ra số MIC được thực hiện bằng cách sử dụng CBC-MAC, nó
mã khối đầu tiên, XOR kết quả đó với khối tiếp theo và lại mã, quá trình
được lặp lại cho đến hết. Kết quả cuối cùng là số MIC 128 bit, nhưng chỉ cần
có 64 bit đối với CCMP nên 64 bit thấp bị loại bỏ.
Đối với CCMP khối đầu tiên trong quá trình tính CBC-MAC không
phải lấy từ MPDU mà là chính số nonce. Định dạng của khối đầu tiên này
(hình 2.26) bao gồm số nonce và hai trường: Flag và Dlen.
Hình 2.26: Định dạng của khối đầu tiên để đưa vào CBC-MAC
Số nonce luôn ứng với các trạng thái hiện thời và đảm bảo rằng dữ liệu
mã hóa không bao giờ giống nhau sau khi mã. Ta có thể cho rằng chỉ cần sử
dụng số PN là đủ vì mỗi gói có một giá trị PN khác nhau, tuy nhiên, cần nhớ
rằng khóa được dùng cho ít nhất là bên thu và bên phát (có thể nhiều hơn đối
với khóa nhóm), các bên này vào một thời điểm nào đó, sử dụng số PN đã
65
được dùng ở nơi khác, như vậy là vi phạm quy tắc mỗi khóa chỉ dùng một
lần. Để tránh vấn đề này, số nonce được tạo ra bởi sự kết hợp giữa PN với địa
chỉ MAC của bên gửi. Không chỉ có vậy, trường thứ 3 trong nonce là trường
Priority (trường ưu tiên). Trường này được dự trữ dùng sau này khi có nhiều
luồng dữ liệu khác nhau cần độ ưu tiên khác nhau (ví dụ: audio, video
…). Trong trường hợp đó, nên tách PN ứng với mỗi loại dữ liệu khác nhau
sẽ hiệu quả hơn. Cả 3 trường kết hợp lại tạo ra số nonce 104 bit (hình 2.27).
Hình 2.27: Thành phần của khối đầu tiên để đưa vào CBC-MAC
Hai trường còn lại là Flag và Dlen cùng với số nonce tạo nên khối
đầu tiên để tính CBC-MAC. Trường flag có giá trị cố định là 01011001 và
chỉ ra rằng số MIC là 64 bit. Trong các ứng dụng CCM khác không phải là
RSN thì flag này có giá trị khác và không được đề cập đến ở đây. Trường
cuối cùng, Dlen chỉ độ dài của dữ liệu chưa mã. Khi khối đầu tiên đã sẵn
sàng, số MIC được tính dựa trên dữ liệu chứng thực và dữ liệu cần mã. Một
đặc điểm của CBC-MAC là nó chỉ làm việc với đúng kích thước khối quy
định. Nếu dữ liệu chia không đủ một khối thì phải thêm các bit cho đủ. Đối
với IEEE 802.11, chắc chắn rằng cả dữ liệu chứng thực và dữ liệu chưa mã
sẽ không vừa đủ các khối và như vậy các bit 0 được thêm vào. Vì thế nhiều
lúc số MIC được tính bao gồm cả khối đầu tiên, dữ liệu chứng thực, dữ liệu
ban đầu và cả các byte toàn 0. Các byte thêm vào này chỉ dùng để tính ra
số MIC chứ không được thêm vào MPDU.
66
Ngay khi MIC được tính và gắn vào dữ liệu rõ thì quá trình mã có thể
bắt đầu được thực hiện. Việc mã hóa sử dụng counter mode và bắt đầu ngay
với dữ liệu theo sau CCMP header. Nhớ rằng do phải chèn thêm bit trong quá
trình tính MIC, các khối được mã sẽ tương ứng với các khối trong quá trình
tính MIC. Phần dữ liệu được mã sẽ thay thế toàn bộ dữ liệu ban đầu và số
MIC, tạo ra một MPDU hoàn chỉnh sẵn sàng đợi để truyền đi. Không phải
thêm bit trong quá trình mã vì counter mode cho phép loại bỏ các bit thừa
trong khối cuối cùng.
Một bước quan trọng trong counter mode là thiết lập giá trị đếm
theo cách không bao giờ tạo ra hai số giống nhau. Vì thế mà bộ đếm được
tạo nên từ một số nonce theo một cách gần giống với việc tạo ra số MIC,
bao gồm số thứ tự, địa chỉ MAC nguồn và các trường ưu tiên. Sau đó nó kết
hợp với hai trường Flag và Counter (“Ctr”) (hình 2.28).
Hình 2.28: Kết hợp số đếm Ctr trong CCMP AES Counter Mode
Ctr bắt đầu từ 1 và tăng dần lên, do số nonce là giá trị duy nhất và
trường ctr có độ lớn 16 bit nên ta đảm bảo chắc chắn rằng các giá trị bộ đếm
là duy nhất đối với tất cả các gói tin dưới 65536 khối. Điều này dễ dàng xác
định được số MPDU lớn nhất trong IEEE 802.11.
Như vậy quá trình mã hóa đã gần hoàn tất. Ta cần phải đặt lại tất cả
các trường trong MAC header vào vị trí của nó. Cho dù các trường này
không dùng cho MIC nhưng chúng vẫn quan trọng.
67
Khi bộ đếm được thiết lập, quá trình mã hóa được thực hiện như đã nói
trong phần counter mode ở phần trước. Mỗi giá trị của counter được mã hóa
bằng khóa rồi sau đó được XOR với dữ liệu để tạo ra dữ liệu được mã.
Giải mã các MPDU:
Khi các MPDU mã được đưa tới bên thu, công việc đầu tiên là chọn
đúng khóa để giải mã. Khóa dùng để giải mã được chọn dựa vào địa chỉ
MAC nguồn trong MAC header. Bên thu phải thực hiện một loạt các bước để
có được dữ liệu ban đầu và kiểm tra sự hợp lệ của dữ liệu đó.
Số PN được gắn vào phần CCMP header nên không được mã hóa.
Khi nhận được một gói tin, việc đầu tiên bên thu kiểm tra chính là số PN
và so sánh nó với khung nhận được trước đó, nếu nó nhỏ hơn hoặc bằng thì
khung đó sẽ bị hủy và bên thu sẽ tạm dừng xử lý với MPDU. Giả sử rằng
số PN là hợp lệ, bước tiếp theo sẽ là quá trình giải mã AES/counter mode.
Yêu cầu đặt ra là giá trị của bộ đếm phải trùng khớp với giá trị của nó sau khi
giải mã. Tất cả thông tin cần thiết giờ đã nhận được đầy đủ. Số thứ tự được
kết hợp với địa chỉ MAC nguồn và giá trị ưu tiên tạo nên số nonce. Sau đó giá
trị của flag và ctr được thêm vào để tạo số ban đầu cho bộ đếm. Lưu ý rằng
chẳng có tý bảo mật nào ở đây cả, bất kỳ ai cũng có thể tính ra được giá trị
này. Tuy nhiên, nó chẳng có nghĩa lý gì nếu không biết khóa. Quá trình giải
mã cũng được dùng giống như quá trình mã. Các giá trị đúng của bộ đếm
được giải mã và XOR với MPDU nhận được, kết quả thu được là MPDU rõ
cùng với số MIC.
Bước tiếp theo là kiểm tra lại xem liệu số MIC có đúng hay không.
MIC được tính lại với cùng dữ liệu vừa giải mã (bao gồm cả phần padding)
giống như ở bên gửi. Các trường có thể thay đổi được trong phần header
không được tính đến và việc tính toán được thực hiện đối với toàn bộ
MPDU, đương nhiên là không tính phần MIC. Nếu dữ liệu không có sự
68
khác biệt so với lúc gửi đi, cộng với khóa chính xác, ta sẽ thu lại được kết
quả như mong muốn. Giá trị MIC sẽ được so sánh, nếu trùng khớp, kết quả
thu được là hợp lệ. Nếu không, gói tin có thể bị cho là của kẻ tấn công và
sẽ bị hủy.
Khi MPDU đã được giải mã, số MIC và CCMP header được loại bỏ,
phần dữ liệu còn lại cùng với các phần dữ liệu giải mã ở các MPDU khác sau
đó sẽ được kết hợp lại, tái tạo lại thành MSDU. Như vậy quá trình thực hiện
với CCMP cho thấy độ an toàn rất cao, chống lại các kiểu tấn công như giả
mạo, nghe lén hay dùng lại gói tin.
2.3.4. Nghiên cứu thuật toán mã hóa đối xứng RSA
Ở phần trên chúng ta đã nghiên cứu về các phương pháp mã hóa đối
xứng. Ứng dụng trong luận văn này, khi phối hợp sử dụng token key, em áp
dụng thuật toán mã hóa RSA, mã hóa từng gói tin với khóa công khai và khóa
bí mật nằm trong token của mỗi Client.
2.3.4.1. Mô tả sơ lược
Thuật toán RSA có hai khóa: khóa công khai (hay khóa công cộng) và
khóa bí mật (hay khóa cá nhân). Mỗi khóa là những số cố định sử dụng trong
quá trình mã hóa và giải mã. Khóa công khai được công bố rộng rãi cho mọi
người và được dùng để mã hóa. Những thông tin được mã hóa bằng khóa
công khai chỉ có thể được giải mã bằng khóa bí mật tương ứng. Nói cách
khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá nhân (bí
mật) mới có thể giải mã được.
Ta có thể mô phỏng trực quan một hệ mật mã khoá công khai như sau:
Bob muốn gửi cho Alice một thông tin mật mà Bob muốn duy nhất Alice có
thể đọc được. Để làm được điều này, Alice gửi cho Bob một chiếc hộp có
khóa đã mở sẵn và giữ lại chìa khóa. Bob nhận chiếc hộp, cho vào đó một tờ
giấy viết thư bình thường và khóa lại (như loại khoá thông thường chỉ cần sập
69
chốt lại, sau khi sập chốt khóa ngay cả Bob cũng không thể mở lại được
không đọc lại hay sửa thông tin trong thư được nữa). Sau đó Bob gửi chiếc
hộp lại cho Alice. Alice mở hộp với chìa khóa của mình và đọc thông tin
trong thư. Trong ví dụ này, chiếc hộp với khóa mở đóng vai trò khóa công
khai, chiếc chìa khóa chính là khóa bí mật.
2.3.4.2. Nguyên tắc thuật toán
Tạo khóa
Hình 2.29. RSA – Tạo khóa
Mã hóa
Hình 2.30. RSA – Mã hóa
70
Giải mã
Hình 2.31. RSA – Giải mã
Ví dụ
Sau đây là một ví dụ với những số cụ thể. Ở đây chúng ta sử dụng
những số nhỏ để tiện tính toán còn trong thực tế phải dùng các số có giá trị đủ
lớn.
Lấy:
p = 61 — số nguyên tố thứ nhất (giữ bí mật hoặc hủy sau khi tạo khóa)
q = 53 — số nguyên tố thứ hai (giữ bí mật hoặc hủy sau khi tạo khóa)
n = p*q = 3233— môđun (công bố công khai)
e = 17 — số mũ công khai
d = 2753— số mũ bí mật
Khóa công khai là cặp (e, n). Khóa bí mật là d. Hàm mã hóa là:
encrypt(m) = m^e mod n = m^17 mod 3233
với m là văn bản rõ. Hàm giải mã là:
decrypt(c) = c^d mod n = c^2753 mod 3233
với c là văn bản mã.
Để mã hóa văn bản có giá trị 123, ta thực hiện phép tính:
encrypt(123) = 12317 mod 3233 = 855
71
Để giải mã văn bản có giá trị 855, ta thực hiện phép tính:
decrypt(855) = 8552753 mod 3233 = 123
Cả hai phép tính trên đều có thể được thực hiện hiệu quả nhờ thuật toán
bình phương và nhân.
2.4. Kết chương
Chương này đã trình bày thực trạng mất an ninh an toàn của mạng
không dây, các kỹ thuật mật mã ứng dụng để bảo mật mạng không dây và một
số giải pháp cho việc đảm bảo an ninh an toàn cho mạng không dây mà cụ thể
là mạng WLAN. Giải thích hoạt động của WEP và lý do tại sao không nên sử
dụng nó. Khi chuẩn IEEE 802.11 được công bố ra công chúng thì đi kèm với
nó là WEP, một biện pháp bảo mật mạng không dây đầu tiên. Phần này cũng
cho ta thấy những điểm yếu của WEP, những lỗ hổng mà khi thiết kế đã
không được những nhà chuyên gia bảo mật quan tâm đến. Tuy nhiên, cũng
qua đó, ta càng hiểu thêm được tại sao những phương pháp bảo mật sau này
lại đảm bảo an toàn hơn.
Các nhà thiết kế đã tìm cách khắc phục những hạn chế của WEP và tạo
ra một giao thức bảo mật mới phù hợp với nó. TKIP là một biện pháp quan
trọng cung cấp chế độ bảo mật thực sự mà WEP không thể có được. Mọi
điểm yếu cơ bản của WEP đã được khắc phục, bao gồm cả tấn công vào khóa
yếu, nghe lén, gửi lại gói tin cũng như các điểm yếu khác. Thêm vào đó,
TKIP được thiết kế bởi những chuyên gia cao cấp trong lĩnh vực bảo mật và
đảm bảo được tính toàn vẹn dữ liệu cho người sử dụng.
Một lượng lớn các hệ thống WLAN trên thế giới đã được triển khai với
thức bảo mật dựa trên thuật toán RC4. Các hệ thống này sử dụng WEP hoặc
TKIP. Tuy nhiên, khi ủy bản về IEEE 802.11 tìm kiếm một giải pháp bảo mật
mới và muốn xây dựng nó từ đầu thì họ đã lựa chọn AES. AES là một thuật
72
toán mã hóa được dùng theo nhiều cách khác nhau để tạo ra các giao thức bảo
mật.
Phần tiếp theo sẽ nghiên cứu, xây dựng một mô hình, đề xuất giải pháp,
phát triển thử nghiệm một ứng dụng nhằm đảm bảo an ninh an toàn cho mạng
WLAN.
73
Chương 3
XÂY DỰNG PHẦN MỀM BẢO MẬT MẠNG KHÔNG DÂY WLAN
SỬ DỤNG USB ETOKEN
3.1. Phân tích yêu cầu, đề xuất giải pháp
3.1.1. Bài toán đặt ra
Với người dùng hiện nay, mạng Wifi đang trở nên rất phổ biến và dần
dần thay thế mạng không dây. Ở những nơi mạng LAN khó triển khai như
bệnh viện, trường học, quán cafe, các công ty… thì mạng WLAN như một
cứu cánh tuyệt vời, giảm thiểu tối đa các thiết bị cứng như đường dây,
switch… Song hành với lợi ích mang lại là những hiểm họa như lộ thông tin,
xâm nhập trái phép… Do mạng không dây là vô tuyến, ai bắt được mạng thì
cũng “có thể” xâm nhập vào mạng. Với những công ty thì điều này là rất
nguy hiểm, hoàn toàn có thể bị đánh cắp, gây rò rỉ thông tin. Các phương thức
bảo mật được áp dụng hiện nay thường thấy là đặt pass wifi bằng WPA hoặc
WPA2, nhưng trên mạng internet ta dễ dàng tìm thấy những video, các tut
chia sẻ cách “hack WPA2” sử dụng linux. Bài toán đặt ra ở đây là làm cách
nào, thông tin chia sẻ trong mạng WLAN được bảo vệ, mã hóa, quản lý được
số người truy cập mạng LAN một cách cẩn thận tới từng đơn vị sử dụng mà
vẫn có sự linh động khi di chuyển.
Để giải quyết yêu cầu trên, em đã xây dựng phần mềm bảo mật mạng
không dây WLAN sử dụng USB eToken để quản lý đăng nhập và mã hóa gói
tin khi di chuyển trong WLAN. Mục đích đặt ra: muốn sử dụng phần mềm
phải có eToken, mỗi gói tin khi các client giao tiếp với nhau đều được mã hóa
đảm bảo dù có bị nghe trộm hay bắt gói tin, nếu không có eToken thì không
thể giải mã được những gói tin đã nhận. Nâng cao bảo mật an toàn, phù hợp
với các công ty có nhu cầu bảo mật, hạn chế số người sử dụng phần mềm
bằng cách phát cho nhân viên USB eToken.
74
3.1.2. Sơ đồ ứng dụng
3.1.2.1. Đăng kí
Hình 3.1 Sơ đồ đăng kí token đăng kí tài khoản
Người dùng muốn đăng kí phải cầm token lên Server để đăng kí,
Database do Server quản lý sẽ lưu trữ tên đăng nhập, mật khẩu và khóa công
khai của từng token. Sau khi đăng kí thành công, người dùng mới có thể
mang token về client của mình và sử dụng phần mềm. Điều này hướng tới
mục đích đăng kí token một cách tập trung tại một phòng nào đó trong công
ty, chuyển quản lý token (tức quản lý người dùng, tránh người dùng tự đăng
kí tại client).
3.1.2.2. Đăng nhập
75
Hình 3.2. Đăng nhập
3.1.2.3.Trao đổi giữa Client và Client
Hình 3.3. Trao đổi giữa Client A và Client B
Ở đây ta xét trường hợp tin tổng quát. Chat hay gửi file giữa các Client
với nhau qua socket đều quy thành các “gói”. Server quản lý tất cả Public
Key của các Client đang online. Client A lấy khóa công khai của Client B và
76
mã hóa gói tin cần gửi. Client B khi nhận gói tin, lấy khóa bí mật của mình để
giải mã gói tin. Như vậy ai cũng có thể mã hóa gói tin nhưng muốn giải mã
thì chỉ có thể giải mã bằng khóa bí mật, nằm trong token của người nhận
3.1.2.4. Trao đổi giữa Server – Client
Hình 3.4. Trao đổi giữa Server – Client
Về vấn đề trao đổi file giữa Server và Client có đôi chút khác biệt khi
trao đổi file giữa Client và Client. Ở đây khi trao đổi file, ta không mã hóa
bằng token vì hai lý do sau:
- Do Server bật liên tục và là duy nhất, không cần phải sử dụng
eToken
- Muốn tự viết phần mã hóa RSA như đã trình bày ở trên.
Với những lý do đó, khi trao đổi giữa Server và Client, em sử dụng một
file key.dat có lưu trữ 3 giá trị e, p, q để phục vụ cho thuật toán RSA tự viết.
Việc sử dụng key.dat hay token là tương đương nhau. Tùy theo nhu cầu
của công ty mà ta có thể chuyển giữa việc dùng token hay dùng key.dat.
3.1.3. Môi trường hệ thống
3.1.3.1. Các tác nhân của hệ thống
77
- Quản trị Server: Là người được quản lý server, khởi động, tắt Server.
Quản lý thêm sửa xóa các tài khoản người sử dụng. Có thể chat và gửi file
đồng thời tới mọi Client đang online.
- Người dùng: Mỗi người dùng là một client, tham gia sử dụng phần
mềm, họ phải đăng nhập bằng token để sử dụng phần mềm. Có thể chat, gửi
file tới Server hoặc Client khác đang online.
3.1.3.2. Đặc tả các Usecase:
Các chức năng cho người quản trị Server
Hình 3.5. Usecase chức năng người quản trị Server
Usecase Quản lý thông tin tài khoản
78
Hình 3.6. Usecase Quản lý thông tin tài khoản
Usecase Giao tiếp với mọi Client
Hình 3.7. Usecase giao tiếp với mọi Client
Các chức năng cho người dùng Client
Hình 3.8. Chức năng người dùng Client
Usecase giao tiếp với Server
79
Hình 3.9. Usecase Client giao tiếp với Server
3.1.4. Thiết kế cơ sở dữ liệu
Với mục đích sử dụng cho các công ty là chính, cơ sở dữ liệu của
chương trình khá đơn giản, lưu trữ tài khoản, mật khẩu, tên nhân viên, khóa
công khai của nhân viên và có thể thêm thắt các thông tin khác tùy ý. Ở đây
hướng chính của phần mềm là demo luận văn, em chỉ thêm một trường là
ngày tháng, không có ý nghĩa gì với chương trình, chỉ mang tính demo. Bảng
cơ sở dữ liệu trên là bảng của các Client. Server chỉ có một nên không có
đăng nhập và quản lý bằng cơ sở dữ liệu.
3.1.5. USB Token
3.1.5.1. Đôi nét về USB Token
Hình 3.10. USB Token của Viettel
80
eToken Pro USB là một sản phẩm thuộc dòng sản phẩm eTokenTM
của Aladdin Knowledge Systems Ltd., Israel.
eToken Pro USB là một thiết bị bảo mật cao, giao tiếp với máy tính qua
cổng USB, sử dụng tiện lợi, an toàn, dễ mở rộng. eToken Pro USB hỗ trợ tất
cả hạ tầng khóa công khai eToken PKI như xác thực người dùng, quản lý mật
khẩu, bảo mật chữ ký số và bảo mật dữ liệu...
Ngoài ra, do eToken Pro USB hỗ trợ các giao diện và hệ thống bảo mật
theo tiêu chuẩn công nghiệp, nên eToken Pro USB còn đảm bảo việc tích hợp
dễ dàng với hạ tầng và các chính sách bảo mật.
Đặc tính kỹ thuật của eToken Pro USB được thể hiện trong bảng dưới
đây:
81
Hình 3.11. Đặc tính kĩ thuật của USB eToken
Dựa trên các tiêu chí đánh giá, eToken có tính năng nổi trội về khả
năng hỗ trợ hệ điều hành, hỗ trợ các ứng dụng PKI, hỗ trợ các chuẩn bảo mật
và khả năng tích hợp.
3.2. Xây dựng ứng dụng
3.2.1. Giới thiệu chung về ứng dụng
Ứng dụng là một hệ thống Server – Client chạy trong mạng LAN nội
bộ, có thể là mạng có dây hoặc không dây. Do hướng của luận văn là bảo mật
mạng không dây, phần mềm được thiết kế để có thể mã hóa các gói tin, hạn
chế người dùng…chống lại các cuộc tấn công nghe trộm, bắt gói tin, đảm bảo
một mức độ bảo mật của các công ty. Hệ thống sử dụng ngôn ngữ lập trình
Java và quản trị cơ sở dữ liệu SQL Server. Các chức năng chính của chương
trình là chat và gửi file giữa các người dùng trong mạng. Các gói tin đều được
mã hóa trước khi gửi đi và giải mã khi nhận về. Sau đây là sơ đồ ứng dụng:
Hình 3.12. Mô hình ứng dụng
3.2.2. Server
Server của hệ thống là nơi khởi tạo kết nối. Các chức năng của
Server:
82
1. Khởi tạo kết nối, làm điểm truy nhập của các Client
2. Lưu giữ các PublicKey của các Client đang kết nối
3. Đăng kí mới, sửa, xóa các eToken đã đăng kí tài khoản
4. Chat với mọi Client
5. Gửi file cho mọi Client
Trước tiên, người dùng vào màn hình chính của chương trình. Do
mỗi lần sử ở một mạng WLAN khác nhau, máy làm Server sẽ được cấp
một địa chỉ IP khác nhau. Trên thực tế nếu dự án được triển khai thực sự.
Server sẽ nằm cố định ở một máy và kết nối với một mạng WLAN cũng cố
định, ta sẽ không cần quan tâm tới giải IP của Server nữa. Để vào mục
quản lý tài khoản, ta ấn nút Account Manager, để bắt đầu Server. Ta ấn
nút Start. Các Client sau khi kết nối tới Server này sẽ hiển thị ở ô bên trái
màu vàng.
Hình 3.13. Màn hình chính của Server
Dưới đây là màn hình quản lý tài khoản, cũng chính là cơ sở dữ liệu
của hệ thống. Lưu trữ lại các thông tin cùng với khóa công khai.
83
Hình 3.14. Màn hình quản lý tài khoản
Với mục tiêu hạn chế và quản lý người dùng. Những ai muốn sử
dụng phần mềm phải có token và phải mang token đó để cho Server để
đăng kí sử dụng.
Hình 3.15. Màn hình thêm tài khoản
84
Sau khi thêm tài khoản, người quản trị Server có thể sửa đổi thông
tin của tài khoản đó, trừ tên đăng nhập.
3.2.3. Client
Client của hệ thống là những người sử dụng mạng nội bộ. Họ bắt
buộc phải có token, ở đây đóng vai trò như chìa khóa để sử dụng phần
mềm này. Nếu trong quá trình sử dụng, rút token, Client sẽ kết thúc. Các
chức năng của Client:
1. Chat với Server, Client
2. Gửi file tới Server, Client
3. Hiển thị danh sách các Client đang sử dụng phần mềm
Trước tiên, người dùng cần cắm token vào máy tính chạy Client, sau
đó chạy phần mềm để đăng nhập:
Hình 3.16. Màn hình đăng nhập
Nếu đăng nhập thành công, ta sẽ vào được giao diện chính của
Client. Đây là màn hình có thể xem danh sách Client đang online và cũng
nơi giao tiếp trực tiếp với Server.
85
Hình 3.17. Màn hình chính của Client
Với giao diện trên ta có thể chat và gửi file tới Server hoặc Client
khác. Do kết nối socket không ổn định và mã hóa RSA làm giảm tốc độ
nên bạn không được gửi file quá lớn. Để đảm bảo tính ổn định của chương
trình, bạn nên gửi những file được cung cấp trong thư mục “test” có trong
thư mục chương trình.
Hình 3.18. Màn hình chọn file
86
Khi nhận được file, sẽ có thông báo nhận file
Hình 3.19. Màn hình lưu file
Tất cả các Client đều phải cắm token khi sử dụng, trong quá trình sử
dụng, vì bất kì lý do gì không tìm thấy token, chương trình lập tức hiện ra
cảnh báo và thoát khỏi chương trình ngay lập tức
Hình 3.20. Màn hình cảnh báo không thấy token
Ứng dụng hướng đến đối tượng sử dụng là các công ty hoặc các trường
học, rất cần sự trao đổi thông tin nội bộ, bảo mật và kiểm soát người dùng.
USB eToken là chìa khóa để sử dụng phần mềm nội bộ này. Mạng WLAN
vẫn bật, mọi người có thể truy cập vào mạng, nhưng để trao đổi với nhau thì
phải có token. Tin tặc có thể bắt được gói tin nhưng nếu không có USB
eToken, hắn sẽ không thể giải mã gói tin vì không có PrivateKey. Đây là hình
ảnh file đã mã hóa, cũng chính là file mà tin tặc bắt được nhưng không thể
giải mã:
87
Hình 3.21. So sánh 2 file mã hóa và gốc
Phần mềm đã giải quyết được các vấn đề:
1. Quản lý người dùng bằng cách cấp phát token.
2. Quản lý tài khoản token để quyết định có cho phép truy cập hay
không, kể cả khi có token.
3. Người dùng có thể chat và trao đổi file.
4. Mã hóa và giải mã các gói tin trao đổi trong mạng nội bộ.
Những điều phần mềm chưa giải quyết được:
5. Chưa có chứng thực gói tin (kí và kiểm tra chữ kí).
6. Do sử dụng thuật toán để mã hóa và đường truyền bằng socket không
ổn định nên chưa thể gửi được file có dung lượng lớn.
88
KẾT LUẬN
Với sự phổ biến của mạng WLAN như hiện nay, vừa mang lại lợi ích
cũng như các hiểm họa. Với mạng không dây, bạn có thể giảm bớt gánh nặng
khi thiết kế các mạng WLAN, không còn phải thấy các đường dây mạng
chằng chịt. Đồng nghĩa với việc thông tin “trôi nổi” trong không khí thì ai
cũng có thể “tóm” được gói tin của bạn. Các kĩ thuật tấn công ngày càng tinh
vi, thực hiện trên diện rộng và nhiều cách khác nhau. Kết hợp với những
phương thức bảo mật sẵn có của mạng WLAN như WPA, WPA2…việc mã
hóa gói tin là hướng giải quyết tốt nhất. Thỏa mãn được hai vấn đề: bảo mật
đường truyền và bảo mật mức độ gói tin.
Luận văn lần này đã đóng góp được các vấn đề chính sau đây:
1. Trình bày tổng quan 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. Tìm hiểu một cách khái quát cơ chế
hoạt động của mạng WLAN, ưu điểm, nhược điểm cũng như các mô hình
hoạt động của mạng WLAN. Tìm hiểu 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
2. 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 mã hóa
đối xứng, mã hóa công khai, bảo mật đường truyền WEP, WPA, WPA2…
3. Nghiên cứu đề xuất giải pháp mã hóa gói tin kết hợp mã hóa đường
truyền sẵn có để xây dựng phần mềm ứng dụng eToken, bảo mật mạng
WLAN nội bộ. Một ứng dụng hoàn toàn mới và thiết thực cho các công ty,
trường học, quân sự…
Đóng góp của phần mềm:
89
1. Đã tích hợp được thiết bị eToken trong việc sử dụng toàn bộ hệ
thống,thiết bị lưu trữ khóa bí mật, đảm bảo người dùng đã đăng kí mới có khả
năng truy cập vào hệ thống.
2. Áp dụng được việc sự dụng mật mã khóa đối xứng trong việc mã hóa
gói tin.
3. Chống được các cuộc tấn công sniffing, passive…Việc trao đổi
thông tin trong mạng nội bộ được quy thành các “gói tin”. Mỗi gói tin sẽ được
mã hóa trước khi gửi đi và giải mã trước khi nhận về. Kết hợp với các phương
pháp bảo mật đường truyền có sẵn như WEP, WPA, WPA2… sẽ là một thách
thức không nhỏ với tin tặc. Dù có tóm được gói tin cũng không thể giải mã
được.
Hạn chế của ứng dụng:
1. Ứng dụng hoạt động là Windows Application, muốn sử dụng phải
cài phần mềm vào máy.
2. Mã hóa và truyền gói tin còn chậm, không truyền được file lớn.
3. Chưa tích hợp khả năng kí để xác thực gói tin.
4. Giao diện có sơ sài, chưa bắt mắt.
5. Do tích hợp eToken nên việc nhập mã PIN sai quá 3 lần sẽ khóa
eToken lại, gây phiên phức cho người dùng vì nó mang tính bảo mật
cao, yêu cầu phải thực hiện đúng
Hướng phát triển tiếp theo:
1. Chuyển phần mềm thành ứng dụng webbase. Có thể sử dụng không
cần cài đặt, có thể sử dụng trên các thiết bị di động.
2. Cải tiến khả năng truyền tải file giữa các người dùng với nhau.
3. Tích hợp khả năng kí xác thực.
4. Cải tiến giao diện, tích hợp vào cổng thông tin điện tử.
90
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]. William Stallings (2005), Cryptography and Network Security
Principles and Practices, Fourth Edition, Prentice Hall.
91
LÝ LỊCH TRÍCH NGANG
Họ và tên: Phan Thành Vinh
Ngày tháng năm sinh: 21/10/1981 Nơi sinh: Thanh Hoá
Địa chỉ liên lạc: Thôn Cầu - Bãi Trành – Như Xuân – Thanh Hóa
Quá trình đào tạo:
- 2000 - 2005: Học CNTT tại Đại Học Vinh.
- 2012 - 2014: Học Cao học CNTT tại Học viện Kỹ thuật Quân sự.
Quá trình công tác:
- 2006 - 2012: Giáo viên Trường THPT Như Xuân 2.
- 2012 - 2014: Giảng Viên Trường Đại Học Kinh Doanh Và Công
Nghệ Hà Nội.
XÁC NHẬN QUYỂN LUẬN VĂN ĐỦ ĐIỀU KIỆN NỘP LƯU CHUYỂN
CHỦ NHIỆM KHOA (BỘ MÔN) CÁN BỘ HƯỚNG DẪN
QUẢN LÝ CHUYÊN NGÀNH (Ký và ghi rõ họ tên)
(Ký và ghi rõ họ tên)
Các file đính kèm theo tài liệu này:
- mauluanvan_2076.pdf