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 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 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.
2.3.3.2.1. 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
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.
2.3.3.2.2. 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 ứ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 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.
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 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 truyền và nú là một phần của MSDU do MSDU được chia ra thành cỏc MPDU.
2.3.3.3.1. 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
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.
2. Phần MAC header khụng liờn quan gỡ đến MPDU và được tỏch riờng. 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.
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.