IPSec là một phương pháp được đánh giá có nhiều ưu điểm cho vấn đề bảo mật mạng internet hiện nay, đặc biệt trong bối cảnh có nhiều cuộc tấn công mạng và an toàn thông tin trên mạng
Đặt vấn đề
Trong thời đại ngày nay, mạng internet đóng vai trò quan trọng và không thể thiếu trong mọi lĩnh vực của đời sống xã hội Do đó vấn đề an ninh mạng được đặt lên hàng đầu và then chốt Hiện nay, trên thế giới đã có rất nhiều chuẩn mã hóa thông tin thực hiện được trên phần cứng lẫn phần mềm, cung cấp các giải pháp bảo mật khác nhau cho mạng internet trong đó, nổi trội hơn cả là IPSec hay còn gọi là IP security Ở Việt Nam hiện nay, vấn đề an ninh mạng cũng không nằm ngoài xu hướng chung, vấn đề đảm bảo an toàn thông tin, bảo mật cơ sở hạ tầng mạng của các lĩnh vực trọng yếu là cần kíp Trong bối cảnh đó, để đáp ứng nhu cầu về bảo mật hạ tầng mạng, cần thiết phải có thiết bị bảo mật phần cứng như router bảo mật chuyên dụng, có hỗ trợ chức năng bảo mật như IPSec Do đó, đề tài được xây dựng dựa trên nhu cầu thực tế, về một lõi IP có chức năng mã hóa xác thực và giải mã xác thực được thực hiện trên FPGA và ứng dụng vào mô-đun tăng tốc dữ liệu trên router bảo mật trong tương lai.
Đối tượng và phạm vi nghiên cứu
Đối tượng nghiên cứu
Để thực hiện một lõi IP có chức năng mã hóa xác thực và giải mã xác thực cần khảo sát các đối tượng nghiên cứu sau:
- Nghiên cứu IPSec và các giải thuật mật mã
- Các phần mềm phục vụ mô phỏng
- Lựa chọn phần cứng FPGA
Phạm vi nghiên cứu
- Nghiên cứu các bài báo khoa học, tạp chí liên quan đến đề tài
- Nghiên cứu giải thuật mã hóa xác thực và giải mã xác thực AES-GCM
- Thiết kế bằng ngôn ngữ RTL và kiểm tra thiết kế
- Thực hiện trên kit FPGA đảm bảo chức năng cũng như tốc độ của thiết kế
Mục tiêu và nội dung đề tài
Dựa trên nhu cầu thực tế về vấn đề bảo mật mạng, cũng như đối tượng và phạm vi nghiên cứu trình bày ở các phần trên, ta có thể xây dựng các bước để tiến hành đề tài: “Nghiên cứu, cải tiến IPSec trên nền tảng FPGA” với mục tiêu và nội dung như sau:
✓ Mục tiêu đề tài: thực hiện một lõi IP có chức năng mã hóa xác thực, giải mã xác thực bằng giải thuật AES-GCM cải tiến, thực hiện được trên FPGA và lõi IP có chức năng tăng tốc việc tính toán trong ứng dụng router bảo mật
✓ Nội dung đề tài: o Thực hiện giải thuật mã hóa xác thực và giải mã xác thực AES-GCM cải tiến sử dụng 2 nhân AES gọi là AES-GCM dual core bằng ngôn ngữ RTL o Kiểm tra chức năng của lõi IP bằng các test case chuẩn o Tổng hợp và chạy thử trên kit FPGA o So sánh thông lượng và hiệu năng của thiết kế đã nâng cấp so với các đề tài đã có
Bố cục của luận văn
Dựa trên yêu cầu và nhiệm vụ của đề tài, luận văn sẽ trình bày các chương với các ý chính được tóm tắt như sau:
Chương này trình bày các phần đặt vấn đề, đối tượng và phạm vi nghiên cứu, mục tiêu và nội dung của đề tài và bố cục luận văn
Chương này trình bày sơ lược về chuẩn IPSec, các giao thức cốt lõi của chuẩn IPSec cũng như ưu, nhược điểm và các ứng dụng trong thực tế của IPSec
Chương 3: Tình hình nghiên cứu trong và ngoài nước
Chương này đánh giá tình hình bảo mật mạng hiện nay, tóm tắt các đề tài nghiên cứu ngoài nước làm cơ sở cho việc tham khảo và chọn giải thuật của luận văn
Chương 4: Cơ sở lý thuyết
Chương này trình bày lý thuyết bảo mật, trong đó có 2 nội dung chính là AES và GCM để kết hợp tạo thành giải thuật AES-GCM theo chuẩn Đồng thời, trình bày giải thuật mới sử dụng 2 nhân AES gọi là AES-GCM dual core
Chương cũng trình bày các kiểu kiến trúc bảo mật và định dạng gói dữ liệu ESP khác nhau
Chương 5: Thiết kế và thực hiện
Chương này trình bày quy trình thiết kế lõi IP Chi tiết việc thiết kế đường dữ liệu (data-path) và máy trạng thái
Thực hiện kết quả trên phần mềm mô phỏng VCS và tổng hợp trên FPGA
Tiến hành phân tích hiệu năng dựa trên kết quả thu dược từ VCS và FPGA
Chương 6: Kết luận và hướng phát triển
Chương này trình bày những kết quả đạt được của đề tài và hướng phát triển cho đề tài
Chương 7: Tài liệu tham khảo
Chương này trình bày các tài liệu tham khảo sử dụng trong luận văn
Các test bench và mẫu test case chuẩn phục vụ cho việc kiểm tra chức năng của thiết kế
Sơ lược về IPSec
Tổng quan về lịch sử của IPSec
Vấn đề lớn với phiên bản IP gốc (IPv4) là sự giới hạn không gian địa chỉ Tình trạng này phát sinh do sự mở rộng và phát triển nhanh chóng của mạng Internet toàn cầu vượt quá mong đợi của con người khi IPv4 được phát minh Người ta đã không tính đến sự bùng nổ của Internet như hiện nay Và hiện tại nó đã dẫn đến một vấn đề khác lớn hơn: thiếu phương tiện để đảm bảo an ninh trên mạng nội bộ IP [1]
Một số phương pháp đã phát triển qua nhiều năm để giải quyết nhu cầu về bảo mật Hầu hết trong số này đều tập trung ở những lớp cao trong sơ đồ OSI 7 lớp để bù đắp cho sự thiếu bảo mật của IP Những giải pháp này chỉ có giá trị tình huống nhất định, nhưng chúng không dễ dàng để tổng quát hóa cho toàn bộ thiết bị và ứng dụng bởi vì chúng đặc biệt khác nhau cho các ứng dụng Ví dụ: chúng ta có thể sử dụng lớp cổng bảo mật – Secure Sockets Layer (SSL) cho một số ứng dụng nhất định như truy cập
“World Wide Web” hoặc giao thức truyền tệp – File Transfer Protocol (FTP), nhưng có rất nhiều các ứng dụng khác mà loại bảo mật này không thể làm việc được [1]
Do đó, điều thật sự cần thiết là một giải pháp cho phép bảo mật ở cấp độ IP, các giao thức lớp cao hơn trong TCP/IP có thể tận dụng được lợi thế của nó Khi quyết định tạo ra chuẩn IP mới (IPv6), sự thiếu bảo mật như IPv4 vẫn chưa được khắc phục triệt để và đây là cơ hội vàng để IPSec giải quyết vấn đề bảo mật Công nghệ bảo mật mới được phát triển với IPv6, nhưng do mất nhiều năm để phát triển và triển khai, và nhu cầu bảo mật hiện nay, thì giải pháp được thiết kế để có thể sử dụng cho cả IPv4 và IPv6 [1]
Công nghệ mang lại sự an toàn, bảo mật trong giao tiếp mạng IP được gọi là “IP Security”, viết tắt là IPSec hay IPSEC.
Tổng quan về chức năng của IPSec
IPSec không phải là một giao thức đơn lẻ mà là một tập hợp các dịch vụ và giao thức cung cấp một giải pháp bảo mật hoàn chỉnh cho mạng IP Những dịch vụ và giao thức kết hợp để cung cấp tính bảo mật cho hệ thống Vì IPSec hoạt động ở lớp IP (hay lớp Network), nên nó có thể cung cấp các biện pháp bảo vệ này cho mọi ứng dụng hoặc giao thức TCP/IP lớp cao hơn mà không cần các phương pháp bảo mật bổ sung, đó là một lợi thế chính của phương pháp này so với các phương pháp khác [1] Một số loại bảo mật cung cấp bởi IPSec bao gồm:
- Mã hóa dữ liệu người dùng để bảo mật
- Xác thực tính toàn vẹn của tin nhắn để đảm bảo rằng nó không bị thay đổi trên đường truyền
- Bảo vệ trước sự tấn công mạng, chẳng hạn như tấn công lặp lại (replay attack)
- Thiết bị bảo mật có khả năng trao đổi các thuật toán bảo mật và khóa cần thiết để đáp ứng nhu cầu bảo mật của chúng
- Hai chế độ bảo mật, chế độ đường hầm (tunnel mode) và chế độ vận chuyển (transport mode), để đáp ứng các nhu cầu bảo mật khác nhau trên các mạng khác nhau.
Chuẩn IPSec
Vì IPSec thực sự là một tập hợp các kỹ thuật và giao thức nên nó không được định nghĩa như một tiêu chuẩn Internet duy nhất Thay vào đó, sẽ có một bộ RFC định nghĩa kiến trúc, dịch vụ và giao thức cụ thể được sử dụng trong IPSec Các thông số này được thống kê ở bảng dưới, tất cả đều được công bố vào tháng 11 năm 1998 [1]:
Số RFC Tên Mô tả
2401 Kiến trúc bảo mật cho giao thức Internet
Tài liệu chính IPSec, mô tả kiến trúc và hoạt động chung của công nghệ, cho thấy các thành phần khác nhau khớp với nhau như thế nào
Xác định giao thức AH (Authentication Header), được sử dụng cho việc đảm bảo tính toàn vẹn dữ liệu và xác minh nguồn gốc dữ liệu
MD5-96 với ESP và AH
Mô tả một thuật toán mã hóa cụ thể để sử dụng qua
AH và giao thức ESP (Encapsulation Security Payload) được gọi là MD5 (Message Digest 5), biến thể HMAC
SHA1-96 với ESP và AH
Mô tả một thuật toán mã hóa cụ thể để sử dụng qua
AH và giao thức ESP gọi là SHA-1 (Security Hash Algorithm 1), biến thể HMAC
Mô tả giao thức IPSec ESP, cung cấp bảo mật dữ liệu bằng việc mã hóa
Association and Key Management Protocol
Xác định các phương thức trao đổi khóa và đàm phán bảo mật
Mô tả giao thức IKE được sử dụng để đàm phán bảo mật và trao đổi khóa giữa các thiết bị để giao tiếp an toàn Dựa trên ISAKMP và Oakley
Mô tả một giao thức chung để trao đổi khóa
Hoạt động chung, các thành phần và giao thức của IPSec
Giao thức cốt lõi IPSec
AH và ESP là hai giao thức chính được sử dụng bởi IPSec, chúng hoạt động ở wire-level, như trong hình dưới, hai thành phần được gọi là giao thức cốt lõi - “core protocol” của IPSec [1]:
Hình 2.1 Giao thức cốt lõi IPSec
IPSec Authentication Header (AH) [1]: được sử dụng để xác thực – nhưng không mã hóa – lưu lượng IP Nó xác thực bằng cách tính toán một mã xác thực tin nhắn dựa trên mã hóa băm trên hầu hết các trường của gói IP (không bao gồm những trường có thể được sửa đổi trong quá trình chẳng hạn như header checksum), và lưu trữ như một tiêu đề (AH header) mới được thêm vào và gửi đến đầu kia Tiêu đề này được chèn vào giữa bản gốc IP header và payload
Encapsulating Security Payload (ESP) [1]: cung cấp mã hóa và xác thực tùy chọn
Nó bao gồm các trường tiêu đề và trailer để hỗ trợ mã hóa và xác thực lại tùy chọn Mã hóa cho gói IP được hỗ trợ trong chế độ transport và cho toàn bộ gói trong chế độ tunnel Xác thực áp dụng cho tiêu đề ESP và mã hóa dữ liệu.
Chế độ hoạt động của IPSec
IPSec có hai chế độ hoạt động:
- IPSec Transport mode: chế độ transport cung cấp một kết nối an toàn giữa hai điểm cuối vì nó đóng gói IP payload
+ Mã hóa và tùy chọn xác thực dữ liệu IP
+ Có thể phân tích lưu lượng
+ Tốt cho lưu lượng máy chủ ESP host to host
- IPSec Tunnel mode: có chức năng tương tự như VPN, trong đó, toàn bộ gói IP packets được đóng gói bên trong và gửi đến đích Nó đóng gói đầy đủ header IP cũng như payload
+ Mã hóa toàn bộ IP packet
+ Thêm header mới cho bước tiếp theo
+ Không có bộ định tuyến nào có thể kiểm tra được header IP bên trong
+ Tính bảo mật cao cho mạng VPNs, gateway to gateway.
Vai trò và lợi ích của IPSec
Cho phép xác thực hai chiều, trước và trong quá trình truyền tải dữ liệu
Mã hóa đường truyền giữa 2 máy khi được gửi qua 1 mạng
7 Bảo vệ gói dữ liệu IP và phòng ngự trước các cuộc tấn công mạng không bảo mật Bảo vệ các lưu lượng bằng việc sử dụng mã hóa và đánh dấu dữ liệu
Chính sách IPSec cho phép định nghĩa ra các loại lưu lượng mà IPSec kiểm tra và các lưu lượng đó sẽ được bảo mật và mã hóa như thế nào
Do đó, IPSec cung cấp các gói phòng thủ chuyên sâu chống lại:
- Các cuộc tấn cộng mạng từ các máy tính không đáng tin cậy, và các cuộc tấn công có thể dẫn đến việc từ chối cung cấp dịch vụ của các ứng dụng hoặc dịch vụ mạng
- Trộm cắp thông tin người dùng
- Kiểm soát quản trị máy chủ (servers), máy tính khác và mạng
- Tính bảo mật: Bằng cách mã hóa dữ liệu
- Tính toàn vẹn: Bộ định tuyến (router) tại mỗi điểm cuối của đường hầm tính toán đảm bảo giá trị checksum hoặc giá trị băm (hash value) của dữ liệu được bảo toàn
+ Có chữ kí (signature) và chứng nhận (certificates)
+ Duy trì khả năng định tuyến thông qua kết nối mạng IP đang tồn tại
- Cung cấp bảo mật (mã hóa) dữ liệu, tính toàn vẹn, xác thực:
+ Dữ liệu được đánh dấu (signed) bởi người gửi và được ký (signature) và xác minh (verify) bởi người nhận
+ Sửa đổi dữ liệu có thể bị phát hiện bằng các nhận dạng chữ ký (signature verification)
+ Bởi vì chữ kí dựa trên bí mật được chia sẻ nên chỉ những nguồn được phép truy cập mới được xác thực
- Bảo vệ tự động phát lại (Anti-replay): Người gửi phải cung cấp nhưng người nhận có thể bỏ qua
+ IKE (Internet Key Exchange) – đàm phán và thiết lập
+ Gõ lại (rekeyed) hoặc xóa tự động
+ Khóa bí mật được thiết lập và xác thực một cách an toàn
+ Chế độ từ xa peer được xác thực thông qua các tùy chọn khác
2.4 Ưu điểm và tính ứng dụng của IPSec
Khi IPSec được triển khai trên bức tường lửa hoặc bộ định tuyến của một mạng riêng thì tính năng an toàn của IPSec có thể áp dụng cho toàn bộ gói dữ liệu vào ra mạng riêng đó mà các thành phần khác không cần phải xử lý thêm các công việc liên quan tới bảo mật
8 IPSec được thực hiện bên dưới lớp TCP và UDP, đồng thời nó hoạt động trong suốt đối với các lớp này Do vậy không cần phải thay đổi phần mềm hay cấu hình lại các dịch vụ khi IPSec được triển khai
IPSec có thể được cấu hình để hoạt động một cách trong suốt đối với các ứng dụng đầu cuối, điều này giúp che dấu những chi tiết cấu hình phức tạp mà người dùng phải thực hiện khi kết nối đến mạng nội bộ từ xa thông qua internet [2]
2.4.2 Một số ứng dụng của IPSec
Bảo mật kết nối giữa các chi nhánh qua internet: Một công ty có thể xây dựng một mạng bảo mật ảo qua internet hoặc qua mạng WAN
Bảo mật truy cập từ xa qua internet: người dùng cuối có hệ thống được trang bị bảo mật IPSec có thể thực hiện cuộc gọi nội bộ đến nhà cung cấp dịch vụ internet (ISP) và có quyền truy cập an toàn vào mạng công ty
Thiết lập kết nối extranet và mạng nội bộ với các đối tác: IPSec có thể được sử dụng để bảo mật liên lạc với các tổ chức khác, đảm bảo xác thực và bảo mật cũng như cung cấp cơ chế trao đổi khóa (key exchange)
Tăng cường bảo mật trong thương mại điện tử: mặc dù một số ứng dụng thương mại điện tử và các trang web thương mại điện tử đã tích hợp các giao thức bảo mật, tuy nhiên việc sử dụng IPSec sẽ củng cố thêm tính bảo mật và an toàn cho các hệ thống thương mại điện tử đang có [2]
Tất cả các gói được xử lý theo IPSec sẽ bị tăng kích thước do phải thêm vào các tiêu đề khác nhau, và điều này làm cho thông lượng hiệu dụng của mạng giảm xuống Vấn đề này có thể được khắc phục bằng cách nén dữ liệu trước khi mã hóa, song các kĩ thuật như vậy vẫn còn đang nghiên cứu và chưa được chuẩn hóa
IPSec được thiết kế chỉ để hỗ trợ bảo mật cho lưu lượng IP, không hỗ trợ các dạng lưu lượng khác
Việc tính toán nhiều giải thuật phức tạp trong IPSec vẫn còn là một vấn đề khó đối với các trạm làm việc và máy PC cấu hình yếu
Việc phân phối các phần cứng và phầm mềm mật mã vẫn còn bị hạn chế đối với chính phủ một số quốc gia [2]
3 TÌNH HÌNH NGHIÊN CỨU TRONG VÀ NGOÀI NƯỚC 3.1 Đánh giá tình hình bảo mật hiện tại
An ninh mạng là một vấn đề quan trọng đối với việc áp dụng các công nghệ mới trong mọi lĩnh vực của xã hội và nền kinh tế Điều này đặc biệt quan trọng đối với các giao dịch điện tử, đây là điều kiện tiên quyết để truyền đạt niềm tin vào người dùng [3] Tuy nhiên, các mối đe dọa hiện tại và tương lai đối với an ninh mạng vẫn còn nghiêm trọng và cần được nhìn nhận một cách nghiêm túc, điều này thúc đẩy cho việc tiếp tục đầu tư nghiên cứu vào lĩnh vực này [4]
Theo khảo sát của Computer Security Institute (CSI), chi phí trung bình hàng năm do tội phạm an ninh mạng tăng gấp đôi trong năm 2007 so với năm trước Các công ty báo cáo thiệt hại trung bình năm là $350.424 trong năm 2007, tăng mạnh so với
$168.000 trong năm 2006 [5] Các dữ liệu này đã phản ánh tình hình nghiêm trọng về an ninh mạng cũng như các thành tựu đạt được trong trận chiến này
Các cuộc tấn công có mục đích đã trở thành một xu hướng trong an ninh mạng Một cuộc tấn công có mục đích là một cuộc tấn công phần mềm độc hại nhằm vào một tổ chức hoặc các tổ chức trong một khu vực hay một thị trường nhất định [6] Khoảng 20% số người được hỏi của cuộc khảo sát của CSI đã trải qua sự cố an ninh này Các cuộc tấn công nhắm vào mục tiêu phạm vi hẹp như vậy đang trở nên phổ biến hơn bao giờ hết [6]
Là một loại tấn công có mục đích nổi tiếng nguy hiểm, Denial-of-Service (DoS) tiếp tục đe dọa đến an ninh mạng Từ năm 2000, các cuộc tấn công DoS đã phát triển nhanh chóng và là một trong những mối đe dọa chính đối với tính khả dụng và độ tin cậy của các dịch vụ trên mạng Kiểu tấn công này được liệt kê là nguyên nhân gây ra tổng chi phí do tội phạm an ninh mạng cao thứ hai trong năm 2004 Mặc dù tỷ lệ tổn thất do các cuộc tấn công DoS trực tiếp gây ra đã giảm trong những năm gần đây, nhưng tổng thiệt hại lại đang gia tăng Nguyên nhân là do tổn thất tài chính phát sinh mỗi phút sau khi mỗi trang web bị hỏng [5]
Ưu điểm và tính ứng dụng của IPSec
Đánh giá tình hình bảo mật hiện tại
An ninh mạng là một vấn đề quan trọng đối với việc áp dụng các công nghệ mới trong mọi lĩnh vực của xã hội và nền kinh tế Điều này đặc biệt quan trọng đối với các giao dịch điện tử, đây là điều kiện tiên quyết để truyền đạt niềm tin vào người dùng [3] Tuy nhiên, các mối đe dọa hiện tại và tương lai đối với an ninh mạng vẫn còn nghiêm trọng và cần được nhìn nhận một cách nghiêm túc, điều này thúc đẩy cho việc tiếp tục đầu tư nghiên cứu vào lĩnh vực này [4]
Theo khảo sát của Computer Security Institute (CSI), chi phí trung bình hàng năm do tội phạm an ninh mạng tăng gấp đôi trong năm 2007 so với năm trước Các công ty báo cáo thiệt hại trung bình năm là $350.424 trong năm 2007, tăng mạnh so với
$168.000 trong năm 2006 [5] Các dữ liệu này đã phản ánh tình hình nghiêm trọng về an ninh mạng cũng như các thành tựu đạt được trong trận chiến này
Các cuộc tấn công có mục đích đã trở thành một xu hướng trong an ninh mạng Một cuộc tấn công có mục đích là một cuộc tấn công phần mềm độc hại nhằm vào một tổ chức hoặc các tổ chức trong một khu vực hay một thị trường nhất định [6] Khoảng 20% số người được hỏi của cuộc khảo sát của CSI đã trải qua sự cố an ninh này Các cuộc tấn công nhắm vào mục tiêu phạm vi hẹp như vậy đang trở nên phổ biến hơn bao giờ hết [6]
Là một loại tấn công có mục đích nổi tiếng nguy hiểm, Denial-of-Service (DoS) tiếp tục đe dọa đến an ninh mạng Từ năm 2000, các cuộc tấn công DoS đã phát triển nhanh chóng và là một trong những mối đe dọa chính đối với tính khả dụng và độ tin cậy của các dịch vụ trên mạng Kiểu tấn công này được liệt kê là nguyên nhân gây ra tổng chi phí do tội phạm an ninh mạng cao thứ hai trong năm 2004 Mặc dù tỷ lệ tổn thất do các cuộc tấn công DoS trực tiếp gây ra đã giảm trong những năm gần đây, nhưng tổng thiệt hại lại đang gia tăng Nguyên nhân là do tổn thất tài chính phát sinh mỗi phút sau khi mỗi trang web bị hỏng [5]
Ngoài ra, xu hướng của các mối đe dọa nguy hiểm đã thay đổi theo hướng sâu rộng, phân tán mã độc hại trên internet và phần mềm gián điệp Khi kết hợp với các cuộc tấn công DoS, thiệt hại về tài chính có thể là rất cao Ví dụ, CodeRed, một con sâu nổi tiếng được tích hợp tấn công DoS, đã lây nhiễm hơn 250.000 hệ thống chỉ trong 9 giờ vào ngày 19 tháng 7 năm 2001 [7]; và nhiều loại sâu MyDoom mang các chương trình tấn công DoS kích hoạt theo thời gian, gây ra các hậu quả nặng nề vào năm 2004 [8].
Bảo mật cơ sở hạ tầng mạng
Việc bảo vệ cơ sở hạ tầng mạng đã được ưu tiên cao do các tính năng cơ bản của nó là để bảo vệ dữ liệu, thương mại điện tử và thậm chí cả an ninh quốc gia [9] Một mạng đáng tin cậy nên có ít nhất hai mức độ bảo mật: bảo mật thông tin và bảo mật cơ sở hạ tầng Bảo mật thông tin dựa trên lý thuyết thông tin và chủ yếu tập trung vào bảo vệ dữ liệu bằng các kỹ thuật như xác thực và mã hóa [10] Mặc dù quan trọng nhưng chủ đề này nằm ngoài phạm vi của bài báo của chúng tôi Mặt khác, bảo mật cơ sở hạ tầng tập trung vào việc bảo vệ tài nguyên mạng, thứ dùng để hỗ trợ chia sẻ thông tin [11] Tầm quan trọng và tính cấp thiết của nó dần dần được coi là tương đương với bảo mật thông tin với sự xuất hiện và tăng nhanh của các mối đe dọa nhắm vào cơ sở hạ tầng
10 mạng Trong thực tế, cơ sở hạ tầng và bảo mật thông tin bổ sung cho nhau; một mạng lưới tốt nên được bảo đảm ở cả hai để hoạt động đáng tin cậy
Từ quan điểm nghiên cứu này, tất cả các bộ phận thích hợp để kết nối với mạng có thể được coi là thành phần cơ sở hạ tầng mạng, bao gồm: máy chủ DNS, bộ định tuyến, bộ đệm và máy chủ đầu cuối Vì đây là những thành phần quan trọng để thu thập thông tin, trao đổi và phân phối trong mạng, chúng là những đối tượng bị tấn công có giá trị nhất Tương tự như thách thức lớn trong việc đảm bảo an toàn cho tất cả các điểm nhập cảnh có thể bị tấn công để chống lại một quốc gia, nó không thực tế cũng như không cần thiết để đáp ứng ở tất cả mọi nơi trong cơ sở hạ tầng mạng [12] Chỉ cần các thành phần cần bảo mật phải được bảo mật thì toàn bộ hạ tầng mạng có thể được coi là bảo mật Tóm lại, một chính sách bảo mật cơ sở hạ tầng mạng có ý nghĩa duy trì hoạt động tốt của các thành phần quan trọng bên trong mạng, ngăn cản chúng bị tấn công, do đó, duy trì tính khả dụng, độ tin cậy và tính ổn định của các dịch vụ mạng [13]
Rất ít vấn đề bảo mật đã được đưa vào tài khoản và được tiêu chuẩn hóa như là các giao thức trong thiết kế ban đầu của Internet Sự thiếu hụt bên trong này đã cho phép nhiều cơ hội tấn công Các nguyên nhân khác của lỗ hổng trong cơ sở hạ tầng mạng bao gồm lắp đặt thiếu sót, cấu hình sai và sai sót trong lựa chọn cấu trúc liên kết và giao thức Mặc dù tình hình đã được cải thiện nhờ sự xuất hiện của các giao thức bảo mật như IPSec (bảo mật IP) [14], cần có thời gian để chúng được áp dụng rộng rãi Ngoài ra, sự tăng trưởng theo cấp số nhân của Internet đã dẫn đến một cơ sở hạ tầng mạng không đồng nhất có thể làm chậm lại việc chấp nhận các giải pháp giao thức Kết quả là, các chiến lược bảo mật bị quá hạn để có thể bảo vệ cơ sở hạ tầng mạng Để cung cấp chất lượng dịch vụ cho người dùng, một cơ sở hạ tầng mạng mạnh mẽ là bắt buộc
Nhiều giải pháp bảo mật cơ sở hạ tầng dựa trên phân tích lưu lượng mạng [15]
Do đó, bất kỳ ứng dụng hữu ích nào cho phân tích lưu lượng có thể được coi là một ứng dụng bảo mật trong lĩnh vực an ninh mạng Xử lý dòng TCP, phân loại gói, đối chiếu mẫu, phòng thủ tấn công chuột chù và ngăn chặn sâu là đại diện cho các loại ứng dụng chính, tập trung vào các phần cụ thể trong bảo mật cơ sở hạ tầng mạng [16] [17] Hệ thống phát hiện xâm nhập mạng và hệ thống ngăn chặn xâm nhập mạng, ở phương diện khác, tập trung vào sự bảo mật của toàn bộ cơ sở hạ tầng [18]
3.3 Yêu cầu cho một ứng dụng bảo mật thành công
Sau khi khảo sát các ứng dụng bảo mật hiện tại liên quan đến cơ sở hạ tầng mạng, cho thấy rằng một giải pháp thành công thường mang các đặc điểm sau:
- Bảo vệ thời gian thực Đây là điều cần thiết cho một cơ chế bảo vệ hiệu quả để xử lý dữ liệu ở tốc độ cao với chi phí phải chăng Tất cả lưu lượng truy cập phải được kiểm tra một cách kịp thời, và tạo ra cảnh báo một cách chính xác khi các tình huống bất thường xảy ra
- Cập nhật linh hoạt Các cuộc tấn công nguy hiểm liên tục phát triển yêu cầu các giải pháp bảo mật phải thích nghi để duy trì hiệu quả Bản cập nhật có thể là cơ sở dữ liệu tri thức (signatures) mà phân tích bảo mật phụ thuộc vào, giải pháp mới để giải quyết hoặc thậm chí là chính hệ thống Việc cập nhật một ứng dụng thường sẽ thực tế hơn là thay thế nó
- Kiểm soát tốt khả năng mở rộng Khả năng mở rộng là một mối quan tâm quan trọng khác để triển khai thực tế Nhiều phương pháp được báo cáo hoạt động tốt trên một mạng lưới nghiên cứu có quy mô nhỏ, nhưng hiệu suất của chúng giảm đi nhanh
11 chóng khi được triển khai tới các mạng quy mô thực tế, chẳng hạn như mạng cấp trường hoặc lớn hơn Lý do chính cho điều này là sự phức tạp của hệ thống thường tăng nhanh hơn nhiều so với kích thước mạng mà nó hoạt động
3.4 Một số đề tài nghiên cứu ngoài nước tham khảo cho luận văn
3.4.1 Thực hiện bộ giao thức IPSec cho mạng multigigabits trên FPGA Đề tài: Mateusz Korona, Krzysztof Showron, Mateusz Trzepinski, Mariusz
Rawski (2017), “Thực hiện bộ giao thức IPSec cho mạng multigigabits trên FPGA”, Poland
IPSec là một bộ các giao thức bổ sung tính bảo mật cho giao tiếp ở cấp IP Tuy nhiên, sức mạnh tính toán cao được yêu cầu bởi các thuật toán IPSec giới hạn hiệu năng kết nối mạng Bài viết trình bày việc triển khai phần cứng cổng IPSec trong FPGA Hiệu quả của giải pháp được đề xuất cho phép sử dụng IPSec trong các mạng có tốc độ dữ liệu tầm vài Gbit/s
Cùng với sự phát triển không ngừng của internet, những trang web toàn cầu càng dễ bị tổn thương bởi nhiều cuộc tấn công mạng Dữ liệu được truyền qua nhiều bộ định tuyến (router), và kết quả là dễ bị chặn (packet sniffing) Các phương thức tấn công chủ động, bao gồm giả mạo gói dữ liệu, cũng được sử dụng Toàn cầu hóa về mặt kinh tế đã tăng nhu cầu về các cơ chế truyền thông an toàn cho các công ty quốc tế và bảo vệ lợi nhuận được tạo ra bởi kinh doanh điện tử, điều này đã thúc đẩy tạo ra các cơ chế an toàn thích hợp
Mặc dù các giải pháp nhúng được áp dụng trong các lớp cao hơn của mô hình OSI (như SSL hoặc SSH), công việc trên IPSec, bộ giao thức cung cấp bảo mật trong lớp thứ ba của OSI RM, đã được bắt đầu Ưu điểm chính của nó là “tính minh bạch” cho các lớp cao hơn Nó hoạt động với các giao thức mạng khác nhau và cho phép dễ dàng chuyển đổi giữa các thuật toán mã hóa (trong trường hợp vi phạm chuẩn an toàn) Với IPSec, có thể tạo ra VPN (Mạng riêng ảo – Virtual Private Networks) phù hợp với nhu cầu kinh doanh điện tử nói trên
Tồn tại một loạt các giải pháp IPSec có sẵn Việc triển khai phần mềm nguồn mở chỉ phù hợp cho sử dụng cá nhân (ví dụ: Linux OpenWRT distribution [19], được thiết kế cho các bộ định tuyến gia đình, cung cấp thông lượng hàng chục Mbit/s) Các giải pháp hiệu quả hơn đòi hỏi tài nguyên phần cứng nhiều hơn (hơn chục lõi bộ xử lý) để đạt được thông lượng tối đa là 1Gbit/s (dự án strongSwan [21]) Triển khai thương mại thường sử dụng hỗ trợ phần cứng (ví dụ: thư viện Intel IPSec được thiết kế cho bộ vi xử lý Intel Architecture với bộ lệnh mở rộng [22]) Những giải pháp này cung cấp thông lượng cao hơn (theo thứ tự của một số Gbit/s, [23] [24]), nhưng rất tốn kém Có các triển khai thương mại của IPSec bằng cách sử dụng FPGA [25] hoặc GPU [26] nhưng chúng không cung cấp tất cả các tính năng IPSec (ví dụ: xử lý tiêu đề lưu lượng IP hoặc bất kì chức năng cơ sở dữ liệu IPSec nào)
IPSec và đặc biệt là chuẩn con ESP (Encapsulating Security Payload) cung cấp tính bảo mật, tính toàn vẹn và tính xác thực của dữ liệu được truyền đi Chế độ hoạt động đường hầm (Tunnel operation mode) cho phép tạo mạng VPN
Hình 3.1 Gói IP bảo mật với giao thức ESP qua 2 chế độ tunnel - transport
Mã hóa khối
Điều kiện để mã hóa khối an toàn:
- Kích thước khối phải đủ lớn để ngăn cách phương án tấn công bằng phương pháp thống kê Tuy nhiên điều này dẫn đến thời gian mã hóa sẽ tăng
- Không gian khóa, tức chiều dài khóa phải đủ lớn để chống phương án tấn công vét cạn khóa Tuy nhiên khóa càng ngắn thì việc tạo ra lưu trữ, phân phối khóa càng dễ dàng
Khi thiết kế 1 mã khối cần đảm bảo 2 yêu cầu:
- Sự hỗn loạn: sự phụ thuộc giữa bản chính và bản mã phải thực sự phức tạp để gây khó khăn trong việc tìm quy luật thám mã Mối quan hệ này tốt nhất là phi tuyến
- Sự khuếch tán: mỗi bits trên thông tin và khóa phải ảnh hưởng đến nhiều bits mã càng tốt
Trong thực tế có rất nhiều thuật toán để mã hóa được thông tin truyền đi là mã hóa bits và mã hóa khối Vì trong mã hóa bits dễ bị thám mã hơn là mã hóa khối nên chọn phương án mã hóa khối để mã hóa thông tin nhằm đảm bảo an toàn, chống mất cắp dữ liệu.
Mã hóa AES
Giới thiệu AES
Năm 1999, Viện Tiêu Chuẩn và Công nghệ Quốc gia Hoa Kỳ (National Institue of Standard and Technology - NIST) đã chỉ rằng tiêu chuẩn DES (Data Encryption
26 Standard) chỉ nên được sử dụng cho các hệ thống cũ và thay vào đó là triple DES (3DES) 3DES có một số vấn đề khi triển khai trên phần mềm và 3DES chậm hơn ba lần so với DES Một nhược điểm khác tương đối lớn là kích thước khối dữ liệu ngắn 64 bits, đó là một nhược điểm trong một số ứng dụng nhất định Cuối cùng, là sự lo lắng về các cuộc tấn công với các dòng máy quantum, có thể trở thành hiện thực trong vài thập kỷ, độ dài khóa mong muốn là 256 bits Tất cả những yếu tố trên được xem xét và NIST đã kết luận rằng, cần có một mật mã khối hoàn toàn mới để thay thế cho DES [82]
Năm 1997, NIST kêu gọi đều xuất một chuẩn mã hóa mới – AES Không giống như sự phát triển của chuẩn DES, việc lựa chọn các thuật toán cho AES là một giải pháp mở được quản lý bởi NIST Trong ba vòng đánh giá tiếp theo, NIST và cộng đồng khoa học quốc tế đã thảo luận về những lợi thế và bất lợi của các mật mã được gửi và thu hẹp số lượng các giải pháp tiềm năng Năm 2001, NIST tuyên bố mật mã khối Rijndael là chuẩn AES mới và công bố nó dưới dạng một tiêu chuẩn chính thức (FIPS PUB 197) Rijndael được thiết kế bởi hai nhà mật mã trẻ người Bỉ [82]
Sau đây là tất cả các yêu cầu cho chuẩn AES [82]:
- Mật mã khối với kích thước 128 bits
- Ba độ dài khóa phải được hỗ trợ: 128, 192 và 256 bits
- Bảo mật các thuật toán dùng cho AES
- Có tính hiệu quả trong việc thực thi bằng phần cứng lẫn phần mềm
Dự kiến AES sẽ là thuật toán khóa đối xứng chi phối nhiều ứng dụng thương mại trong vài thập kỷ tới Điều đáng chú ý là vào năm 2003, Cơ quan an ninh quốc gia Hoa
Kỳ (National Security Agency – NSA) tuyên bố cho phép AES mã hóa tài liệu được phân loại ở cấp độ “SECRET” cho độ dài khóa là 192 hoặc 256 bits Trước đó, chỉ các thuật toán không được công bố (non-public algorithms) mới được sử dụng để mã hóa các tài liệu dạng tối mật này [82]
4.2.2 Tổng quan về giải thuật AES
Mật mã AES gần giống với mật mã khối Rijndael Khối Rijndael và kích thước khóa khác nhau giữa 128, 192 và 256 bits Tuy nhiên, chỉ có tiêu chuẩn AES gọi cho kích thước khối 128 bits Do đó, khối Rijndael với kích thước 128 bits được gọi là thuật toán AES Ở đây sẽ giới thiệu mã hóa theo chuẩn AES với kích thước 128 bits
Như đã đề cập, ba độ dài khóa phải được hỗ trợ theo yêu cầu thiết kế của NIST
Và số vòng xử lý của mật mã là một chức năng phụ thuộc vào độ dài khóa
Bảng 4.1 Bảng liên hệ giữa chiều dài khóa và số lượng vòng lặp của giải thuật AES
Chiều dài khóa Số vòng lặp (nr)
AES bao gồm các giải thuật con tạm gọi là các lớp Mỗi lớp thao tác tất cả 128 bits dữ liệu Mỗi đường dẫn dữ liệu được gọi là trạng thái của thuật toán Có 3 loại lớp khác nhau Sau đây, sẽ mô tả ngắn gọn từng lớp trong giải thuật AES [82]:
Key addition layer (Lớp bổ sung khóa): một khóa 128 bits, hoặc khóa con được lấy từ khóa chính trong trao đổi khóa được XOR trạng thái với nhau
Byte-Substitution layer (Lớp thay thế byte): Mỗi phần tử của trạng thái được biến đổi phi tuyến và sử dụng bảng tra cứu với các thuộc tính toán học đặc biệt Bước này giống như bước “trộn dữ liệu” (confusion data) với nhau, nó đảm bảo rằng những thay đổi trong các bits trạng thái riêng rẻ lan truyền nhanh chóng trên đường dẫn dữ liệu
Difussion layer (Lớp khuếch tán): cung cấp việc khuếch tán trên tất cả các bits trạng thái Bao gồm 2 lớp con và cả hai đều thực hiện tuyến tính với nhau:
- Lớp shiftRow: hoán vị dữ liệu ở mức byte
- Lớp mixColumn: ma trận kết hợp các khối của 4 bytes
Tương tự như DES, tác vụ “key schedule” có vai trò tính toán các khóa con (sub- keys) từ khóa gốc của AES Trước khi mô tả chức năng của từng lớp AES, chúng ta sẽ đi qua một số khái niệm tính toán cần cho tất cả các hoạt động của AES cụ thể là trường Galois (Galois field)
4.2.2.1 Biến đổi ngược Đảo ngược của 𝐺𝐹(2 8 ) là phép biến đổi toán chính của biến đổi thay thế bytes (bytes substitution), AES S-boxes Đối với một trường hữu hạn nhất định 𝐺𝐹(2 𝑚 ) và tương ứng với đa thức tối giản 𝑃(𝑥), nghịch đảo 𝐴 −1 của phần tử khác 0 , 𝐴 ∈ 𝐺𝐹(2 𝑚 ) định nghĩa như sau [82]:
𝐴 −1 (𝑥) 𝐴(𝑥) = 1 𝑚𝑜𝑑 𝑃(𝑥) Đối với các trường nhỏ - trong thực tế nghĩa là các trường 2 16 hoặc ít hơn – bảng tra cứu có chứa các nghịch đảo được tính toán trước của tất cả các phần tử trường được sử dụng Bảng dưới cho thấy các giá trị được sử dụng trong S-box của AES Bảng chứa tất cả các nghịch đảo trong 𝐺𝐹(2 8 ) với modulo 𝑃(𝑥) = 𝑥 8 + 𝑥 4 + 𝑥 3 + 𝑥 + 1 trong hệ hexa Một trường hợp đặc biệt là nghịch đảo của 0 sẽ không tồn tại Tuy nhiên, AES S-Box, một giá trị thay thế trong bảng tra cứu là cần thiết nên được định nghĩa cho mỗi giá trị đầu vào Do đó, người thiết kế định nghĩa S-Box có giá trị đầu vào 0 ứng với ngõ ra giá trị 0 [82]
1 74 B4 AA 4B 99 2B 60 5F 58 3F FD CC FF 40 EE B2
Bảng giá trị nghịch đảo 𝐺𝐹(2 8 ) cho bytes xy sử dụng trong AES S-box
Từ bảng tra cứu ta có thể tra được giá trị nghịch đảo của
(2𝐹) ℎ𝑒𝑥 = (00101111) 2 = 𝑥 5 + 𝑥 3 + 𝑥 2 + 𝑥 + 1 Kết quả có thể được xác nhận bởi phép nhân:
Sau đây chúng ta kiểm tra cấu trúc nội của AES Hình dưới cho thấy đồ thị của một vòng đơn AES
Với 16 bytes ngõ vào 𝐴 0 , … , 𝐴 15 và 16 bytes ngõ ra 𝐵 0 , … , 𝐵 15 được hoán đổi qua lớp ShiftRows và pha trộn trong bước MixColumn Cuối cùng, 128-bits khóa 𝑘 𝑖 được XORed với kết quả Lưu ý AES là một mật mã có định hướng bytes [82]
Hình 4.2 Sơ đồ khối các lớp AES Để hiểu cách dữ liệu di chuyển qua AES, trước tiên chúng ta tưởng tượng rằng trạng thái 𝐴 (đường dẫn 128 bits dữ liệu) bao gồm 16 bytes 𝐴 0 , … , 𝐴 15 được sắp xếp vào ma trận bytes 4 × 4 dưới đây [82]:
Bảng 4.3 Ma trận trạng thái A
Như chúng ta thấy trong phần sau, AES hoạt động dựa trên các phần tử cột hoặc hàng của ma trận trạng thái hiện tại Tương tự, các bytes chính được sắp xếp thành một ma trận có bốn hàng và bốn cột (khóa 128 bit), 6 cột (khóa 192 bit) hoặc 8 cột (khóa
256 bit) Đây là ví dụ ma trận trạng thái của khóa 192 bits [82]:
Bảng 4.4 Ma trận trạng thái của khóa 192 bits
Lớp đầu tiên của mỗi vòng bắt đầu bằng Sub-byte Lớp thay thế bytes có thể được xem như một hàng gồm 16 S-box song song, mỗi hộp có 8 ngõ vào và ngõ ra Lưu ý rằng, tất cả 16 S-box giống hệt nhau Trong Sub-byte, mỗi bytes trạng thái 𝐴 𝑖 được thay thế bởi một bytes 𝐵 𝑖 khác [82]:
Cấu trúc AES
Sau đây chúng ta kiểm tra cấu trúc nội của AES Hình dưới cho thấy đồ thị của một vòng đơn AES
Với 16 bytes ngõ vào 𝐴 0 , … , 𝐴 15 và 16 bytes ngõ ra 𝐵 0 , … , 𝐵 15 được hoán đổi qua lớp ShiftRows và pha trộn trong bước MixColumn Cuối cùng, 128-bits khóa 𝑘 𝑖 được XORed với kết quả Lưu ý AES là một mật mã có định hướng bytes [82]
Hình 4.2 Sơ đồ khối các lớp AES Để hiểu cách dữ liệu di chuyển qua AES, trước tiên chúng ta tưởng tượng rằng trạng thái 𝐴 (đường dẫn 128 bits dữ liệu) bao gồm 16 bytes 𝐴 0 , … , 𝐴 15 được sắp xếp vào ma trận bytes 4 × 4 dưới đây [82]:
Bảng 4.3 Ma trận trạng thái A
Như chúng ta thấy trong phần sau, AES hoạt động dựa trên các phần tử cột hoặc hàng của ma trận trạng thái hiện tại Tương tự, các bytes chính được sắp xếp thành một ma trận có bốn hàng và bốn cột (khóa 128 bit), 6 cột (khóa 192 bit) hoặc 8 cột (khóa
256 bit) Đây là ví dụ ma trận trạng thái của khóa 192 bits [82]:
Bảng 4.4 Ma trận trạng thái của khóa 192 bits
Lớp đầu tiên của mỗi vòng bắt đầu bằng Sub-byte Lớp thay thế bytes có thể được xem như một hàng gồm 16 S-box song song, mỗi hộp có 8 ngõ vào và ngõ ra Lưu ý rằng, tất cả 16 S-box giống hệt nhau Trong Sub-byte, mỗi bytes trạng thái 𝐴 𝑖 được thay thế bởi một bytes 𝐵 𝑖 khác [82]:
S-box là phần tử phi tuyến duy nhất trong AES, tức là, 𝐵𝑦𝑡𝑒𝑆𝑢𝑏(𝐴) +𝐵𝑦𝑡𝑒𝑆𝑢𝑏(𝐵) ≠ 𝐵𝑦𝑡𝑒𝑆𝑢𝑏(𝐴 + 𝐵) cho hai trạng thái A và B Thay thế S-box là ánh xạ, tức là mỗi 2 8 = 256 đầu vào thì có tương ứng 1-1 giá trị ngõ ra Điều này cho phép nghịch đảo S-box, trong đó là cần thiết để giải mã Trong triển khai phần mềm, S-box thường được nhận ra dưới dạng bảng tra cứu 256 bits với các mục cố định được cho bởi bảng dưới [82]:
5 53 D1 0 ED 20 FC B1 5B 6A CB BE 39 4A 4C 58 CF
S-box được xây dựng gồm 2 bước biến đổi toán học, do đó có cấu trúc đại số mạnh Mô tả toán học của S-box được xây dựng dưới dây [82]:
Hình 4.3 Hai phép biến đổi trong AES S-box tính toán hàm 𝐵 𝑖 = 𝑆(𝐴 𝑖 )
Phần đầu tiên của sub-bytes là một trường đảo ngược Galois, đã được giới thiệu ở phần trước
32 Phần thứ hai của sub-bytes là mỗi bytes 𝐵′ 𝑖 được nhân với một ma trận không đổi và cộng thêm một vector 8 bits Phép biến đổi được mô tả bên dưới [82]:
Chú ý rằng 𝐵 ′ = (𝑏 ′ 7 , … , 𝑏′ 0 ) là biểu diễn các bits dưới dạng vector của 𝐵 ′ 𝑖 (𝑥) 𝐴 𝑖 −1 (𝑥)
Bước thứ hai này được gọi là ánh xạ affine (Affine mapping)
Nếu một tính toán cho cả hai bước có 256 ngõ vào của S-box và các kết quả được lưu trữ, thì ta có được bảng tra cứu như trên Trong hầu hết các triển khai AES, đặc biệt trong hầu như tất cả các giải pháp phần mềm của AES, các ngõ ra S-box rõ ràng không được tính toán, bởi vì thường sử dụng các bảng tra Tuy nhiên, đối với việc triển khai bằng phần cứng đôi khi có những thuận lợi cho S-box như các mạch kĩ thuật số tính toán nghịch đảo theo ánh xạ [82]
Lợi thế của việc sử dụng biến đổi nghịch đảo trong 𝐺𝐹(2 8 ) làm chức năng cốt lõi trong lớp Sub-bytes là nó cung cấp một mức độ phi tuyến tính cao, do đó đem lại sự bảo vệ tối ưu chống lại các cuộc tấn công phân tích mã mạnh nhất được biết đến Bước ánh xạ affine phá hủy cấu trúc đại số của trường Galois, lần lượt là các bước cần thiết để ngăn chặn các cuộc tấn công sẽ khai thác vào việc biến đổi ngược trường hữu hạn [82]
Trong AES, lớp khuếch tán (diffusion layer) bao gồm 2 lớp con, biến đổi ShiftRows và biến đổi MixColumn Chúng ta gọi khuếch tán là sự lan rộng của ảnh hưởng các bits riêng lẻ trên toàn bộ trạng thái Không giống như biến đổi phi tuyến tính S-box, lớp khuếch tán thực hiện thao tác tuyến tính trên các ma trận trạng thái A, B tức là 𝐷𝑖𝑓𝑓(𝐴) + 𝐷𝑖𝑓𝑓(𝐵) = 𝐷𝑖𝑓𝑓(𝐴 + 𝐵)
Biến đổi ShiftRows thay đổi theo chu kỳ hàng thứ hai của ma trận trạng thái bằng
3 bytes ở bên phải, hàng thứ 3 bằng 2 bytes ở bên phải và hàng thứ 4 bằng 1 bytes ở bên phải Hàng đầu tiên không bị thay đổi Mục đích của phép biến đổi ShiftRows là tăng độ khuếch tán tính chất của AES Nếu đầu vào của lớp con ShifRows được đưa ra dưới dạng ma trận trạng thái 𝐵 0 , … , 𝐵 15 [82]:
Bảng 4.6 Ma trận trạng thái B
Bảng 4.7 Ngõ ra trạng thái mới sau biến đổi ShiftRows
MixColumn là một phép biến đổi tuyến tính trộn lẫn từng cột của ma trận trạng thái Vì mỗi bytes đầu vào ảnh hưởng đến 4 bytes đầu ra, MixColumn là yếu tố khuếch tán chính trong AES Sự kết hợp của ShiftRows và MixColumn cho phép chỉ sau 3 vòng mỗi bytes của ma trận trạng thái phụ thuộc vào tất cả 16 bytes của bản mã gốc
Sau đây, chúng ta biểu thị trạng thái đầu vào của 16 bytes bằng 𝐵 và đầu ra 16 bytes bằng 𝐶:
𝑀𝑖𝑥𝐶𝑜𝑙𝑢𝑚𝑛(𝐵) = 𝐶 Với 𝐵 là trạng thái sau khi ShiftRows
Bây giờ, mỗi cột 4 bytes được coi là một vector và nhân với một ma trận cố định
4 × 4 Ma trận chứa các số không đổi Nhân và cộng các hệ số thực hiện trong 𝐺𝐹(2 8 ) [82]
Cột thứ 2 của các bytes ngõ ra (𝐶 4 , 𝐶 5 , 𝐶 6 , 𝐶 7 ) được tính toán bởi phép nhân 4 bytes ngõ vào (𝐵 4 , 𝐵 9 , 𝐵 14 , 𝐵 3 ) với cùng một ma trận cố định 4 × 4
Mỗi bytes trạng thái 𝐶 𝑖 và 𝐵 𝑖 là giá trị 8 bits đại diện cho phần tử trong 𝐺𝐹(2 8 ) Tất cả các số học liên quan đến các hệ số được thực hiện trong trường Galois Đối với các hằng số trong ma trận, ký hiệu hexa được sử dụng: “01” trong trường 𝐺𝐹(2 8 ) đa thức với hệ số (0000 0001) đó là phần tử 1 trong trường Galois Tương tự “02” ứng với (0000 0010) trong tường Galois và “03” ứng với hệ số (0000 0011) tương đương với đa thức 𝑥 + 1 trong trường Galois [82]
34 Phép nhân ma trận vector là các phép cộng của 𝐺𝐹(2 8 ), nghĩa là các phép XOR bitwise đơn giản của các bytes tương ứng Để nhân các hằng số, chúng ta phải nhận các phép nhân hằng số 01, 02, 03 là các hằng số đã được chọn sao cho phần mềm thực hiện dễ dàng
Hai đầu vào của lớp bổ sung khóa (Key addition) là ma trận trạng thái 16 bytes hiện tại và một khóa con cũng bao gồm 16 bytes (128 bit) Hai đầu vào được kết hợp thông qua bitwise XOR Lưu ý rằng, XOR bằng với phép cộng trong trường Galois 𝐺𝐹(2) Các khóa con sẽ được trình bày trong phần tiếp theo [82]
“Key schedule” – Tác vụ quản lý khóa này lấy khóa gốc đầu vào (128, 192 hoặc
Giải mã AES
Quá trình giải mã AES được thực hiện trên các hàm đảo ngược: lớp Sub-Bytes thành Inv-Sub-Byte, lớp ShiftRows thành lớp Inv-ShiftRows, lớp MixColumn thành Inv-MixColumn Tuy nhiên, như chúng ta đã thấy, nghịch đảo (Inv) khá giống với các hoạt động cho phần mã hóa Ngoài ra, thứ tự của các khóa con đảo ngược, tức là chúng ta cần một tác vụ quản lý khóa đảo ngược Sơ đồ khối chức năng giải mã được mô tả bên dưới [82]:
Inv MixColumn Layer Inv ShiftRows Layer
Inv Byte Substitution Key Addition Layer
Inv MixColumn Layer Inv ShiftRows Layer Key Addition Layer
Key Addition Layer Inverse of round 1
Hình 4.7 Sơ đồ khối giải mã AES
Do vòng mã hóa cuối cùng không thực hiện thao thác MixColumn nên vòng giải mã đầu tiên cũng không chứa lớp Inv-MixColumn tương ứng Tất cả vòng giải mã khác chứa tất cả các lớp AES Hình sau đây chứa các lớp nghịch đảo của giải mã AES Do phép XOR là nghịch đảo của chính nó nên lớp bổ sung khóa trong chế độ giải mã là chính nó: bao gồm các cổng XOR [82]
Hình 4.8 Các lớp nghịch đảo của giải mã AES Lớp Inv-MixColumn
Sau khi thêm các khóa con, bước Inv-MixColumn được áp dụng Để tạo hàm đảo ngược MixColumn, nghịch dảo của ma trận được sử dụng Đầu vào là một cột 4 bytes của trạng thái 𝐶 được nhân với ma trận 4x4 nghịch đảo Ma trận chứa các hằng số PHép nhân và cộng các hệ số được thực hiện trong 𝐺𝐹(2 8 ) [82]
Cột thứ hai của bytes đầu ra (𝐵 4 , 𝐵 5 , 𝐵 6 , 𝐵 7 ) được tính bằng cách nhân 4 bytes đầu vào (𝐶 4 , 𝐶 5 , 𝐶 6 , 𝐶 7 ) với một ma trận hằng số Mỗi giá trị 𝐵 𝑖 và 𝐶 𝑖 là một phần tử từ 𝐺𝐹(2 8 ) Ngoài ra, các hằng số cũng đến từ 𝐺𝐹(2 8 ) Các hằng số biểu diễn dưới dạng Hexa và giống như được sử dụng ở lớp MixColumn Ví dụ:
0𝐵 = (0𝐵) ℎ𝑒𝑥 = (00001011) 2 = 𝑥 3 + 𝑥 + 1 Các phép cộng trong phép nhân ma trận vector là các bitwise XOR
Lớp nghịch đảo ShiftRows – InvShirtRows Để đảo ngược biến đổi ShiftRows của giải thuật mã hóa, chúng ta phải dịch chuyển các hàng của ma trận theo trạng thái ngược lại Hàng đầu tiên không thay đổi bởi phép biến đổi ShiftRow ngược Nếu đầu vào của ShiftRows là khóa con cho dưới dạng ma trận trạng thái 𝐵 = (𝐵 0 , 𝐵 1 , 𝐵 2 , … , 𝐵 15 ) [82]
Bảng 4.8 Ma trận trạng thái B
Bảng 4.9 Ngõ ra Inv-ShiftRow
Lớp biến đổi nghịch Subbytes (Inv-Subbyte)
S-box nghịch đảo được sử dụng khi giải mã một bản mã Vì AES S-box là một ánh xạ 1-1 nên ta cũng có thể xây dựng bảng mã giải mã ngược như vậy:
𝐴 𝑖 = 𝑆 −1 (𝐵 𝑖 ) = 𝑆 −1 (𝑆(𝐴 𝑖 )) Với 𝐴 𝑖 và 𝐵 𝑖 là các phần tử của ma trận trạng thái Bảng inv-S-box dưới đây [82]
Bảng 4.10 Bảng tra biến đổi ngược Sub-bute y
Với (𝑏 7 , … , 𝑏 0 ) là các bits trong vector 𝐵 𝑖 (𝑥), và (𝑏′ 7 , … , 𝑏′ 0 ) là kết quả sau khi thực hiện phép biến đổi affine nghịch đảo
42 Trong bước thứ hai của biến đổi Inv-Sbox, trường Galois sẽ lấy nghịch đảo Lưu ý rằng: 𝐴 𝑖 = (𝐴 𝑖 −1 ) −1 Điều này có nghĩa là biến đổi nghịch đảo của nghịch đảo sẽ bằng chính nó Do đó:
Với đa thức tối giản 𝑃(𝑥) = 𝑥 8 + 𝑥 4 + 𝑥 3 + 𝑥 + 1 Một lần nữa, phần tử 0 được ánh xạ với chính nó Vector 𝐴 𝑖 = (𝑎 7 , … , 𝑎 0 ) (đại diện cho đa thức 𝑎 7 𝑥 7 + ⋯ + 𝑎 1 𝑥 +
𝑎 0 ) có kết quả thay thế là:
Quản lý khóa giải mã - Decryption Key schedule
Vì vòng giải mã cần một khóa con cho vòng lặp cuối cùng, vòng giải mã thứ hai cần khóa con thứ 2 đến cuối cùng, … chúng ta cần khóa con theo thứ tự đảo ngược như hình dưới Trong thực tế, việc này đạt được bằng cách tính toàn bộ tác vụ quản lý khóa đầu iên và lưu trữ tất cả 11, 13 hoặc 15 khóa con, tùy thuộc vào số lượng và số vòng mà AES sử dụng (hay nói cách khác, phụ thuộc vào độ dài khóa mà AES hỗ trợ) Việc tính toán này gây ra một độ trễ nhất định cho hoạt động giải mã [82]
4.2.4.1 Thực hiện AES trên phần mềm và phần cứng
Không giống như DES, AES được thiết kế sao cho triển khai trên phần mềm hiệu quả khả thi Việc triển khai AES phù hợp cho bộ xử lý 8 bits nhưng không hiệu quả bằng các máy 32 bits hoặc 64 bits vốn phổ biến trong các dòng PC hiện nay Các chức năng Sub-byte, ShiftRows hay MixColumn hoạt động riêng rẻ cho từng bytes không hiệu quả trên bộ xử lý 32 hay 64 bits Tuy nhiên, các nhà thiết kế Rijndael đã đề xuất một phương pháp dẫn đến kết quả tốt hơn khi thực hiện trên phần mềm Ý tưởng cốt lõi là hợp nhất tất cả các chức năng của AES thành 1 bảng tra Điều này dẫn tới 4 bảng, mỗi bảng bao gồm 256 mục trong đó mỗi mục 32 bits và được gọi tên là T-box Bốn bảng mang mỗi bảng mang lại 32 bits ngõ ra cho mỗi lần xử lý Vì thế, một vòng xử lý có thể tính toán với 16 bảng tra cứu Trên bộ xử lý Intel 1.2Ghz, thông lượng 400Mbit/s hoặc (50Mbyte/s) là có thể [82]
So với DES, AES đòi hỏi nhiều tài nguyên phần cứng hơn để thực hiện Tuy nhiên, do mật độ tích hợp cao của các mạch tích hợp hiện tại, AES có thể được thực hiện với thông lượng rất cao trong ASIC hoặc FPGA hiện nay ASIC AES bản thương mại có thể vượt qua thông lượng 10Gbit/s Thông qua các cấu trúc xử lý song song các giải thuật mã hóa của AES trên một chip, tốc độ có thể được tăng thêm Có thể nói, mã hóa đối xứng với mật mã ngày nay đạt thông lượng cao, không chỉ được so sánh với các hệ thống mật mã bất đối xứng mà còn được so sánh với các thuật toán khác cần thiết trong các hệ thống truyền thông hiện đại, như nén dữ liệu hoặc xử lý tín hiệu [82].
Galois Counter Mode (GCM)
Giới thiệu GCM
Galois Counter Mode (GCM) là chế độ mã hóa cũng tính toán một mã xác thực tin nhắn (Message Authentication Code – MAC) MAC cung cấp một mật mẫu checksum được tính toán bởi người gửi, sau đó thêm vào tin nhắn
43 Để xác thực, GCM thực hiện phép nhân trường Galois Cho mọi tín hiệu 𝑥 𝑖 và một tham số xác thực trung gian 𝑔 𝑖 𝑔 𝑖 được tính là tổng XOR của bản mã 𝑦 𝑖 và 𝑔 𝑖 và nhân với hằng số H Giá trị H là một khóa con được tính toán bằng hàm băm có tất cả ngõ vào bằng 0 với mật mã khối Tất cả các phép nhân đều thực hiện trong trường 𝐺𝐹(2 128 ) với đa thức tối giản 𝑃(𝑥) = 𝑥 128 + 𝑥 7 + 𝑥 2 + 𝑥 + 1 Do đó, chỉ cần một phép nhân cho mỗi lần mã hóa, chế độ GCM cho thấy việc tính toán trở nên đơn giản hơn [82]
Cho 𝑒() là một mật mã khối có kích thước 128 bit; đặt 𝑥 là tín hiệu đầu vào cần mã hóa bao gồm các khối 𝑥 1 , … , 𝑥 𝑛 ; và AAD là dữ liệu xác thực bổ sung (Additional Authenticated Data) [82]
1 Mã hóa a Được rút ra từ một giá trị đếm đầu vào 𝐶𝑇𝑅 0 và 𝐼𝑉 sau đó tính toán 𝐶𝑇𝑅 1 = 𝐶𝑇𝑅 0 + 1 b Tính toán bản mã: 𝑦 𝑖 = 𝑒 𝑘 (𝐶𝑇𝑅 𝑖 )⊕ 𝑥 𝑖 , 𝑖 ≥ 1
2 Xác thực a Tạo một khóa con xác thực 𝐻 = 𝑒 𝑘 (0) b Tính toán giá trị 𝑔 0 = 𝐴𝐴𝐷 × 𝐻 (Phép nhân trường Galois) c Tính toán giá trị 𝑔 𝑖 = (𝑔 𝑖−1 ⊕ 𝑦 𝑖 ) × 𝐻, 1 ≤ 𝑖 ≤ 𝑛 (Phép nhân trường Galois) d Giá trị xác thực cuối cùng: 𝑇 = (𝑔 𝑛 × 𝐻) ⊕ 𝑒 𝑘 (𝐶𝑇𝑅 0 )
CTR0 incr CTR1 incr CTR0+n ek ek ek
Hình 4.9 Sơ đồ khối GCM
44 Bên nhận gói dữ liệu [(𝑦 1 , … , 𝑦 𝑛 ), 𝑇, 𝐴𝐷𝐷] cũng giải mã bằng cách áp dụng Counter mode Để kiểm tra tính xác thực của dữ liệu, người nhận cũng tính toán một thẻ xác thực T bằng cách sử dụng bản mã nhận được và AAD như dữ liệu đầu vào Ta sử dụng chính xác các bước giống như bên gửi Nếu T và T khớp với nhau, người nhận được đảm bảo rằng bản mã (và AAD) không bị sửa đổi trong quá trình gửi và chỉ có duy nhất người gửi đã tạo ra được tín hiệu đó.
Các yếu tố của GCM
Các yếu tố của GCM và các ký hiệu, yêu cầu liên quan được giới thiệu trong các phần dưới đây Mật mã khối và khóa cơ bản được thảo luận Các yếu tố dữ liệu của mã hóa xác thực và các hàm chức năng giải mã xác thực của GCM cũng sẽ được giới thiệu Các hàm mật mã sơ khai để bảo mật và xác thực cũng được thảo luận dưới đây [83]
Các hoạt động của GCM phụ thuộc vào việc lựa chọn một mật mã khối khóa đối xứng cơ bản và do đó có thể được coi là một chế độ hoạt động của mật mã khối Khóa GCM là khóa mật mã khối (gọi tắt là khóa) Đối với bất kỳ khóa đã cho nào, mật mã khối bên dưới của chế độ hoạt động bao gồm hai hàm là nghịch đảo của nhau [83]
Sự lựa chọn mật mã khối bao gồm việc chỉ định một trong hai chức năng của mật mã khối là chức năng mã hóa chuyển tiếp, như trong đặc tả giải thuật AES [83] GCM không sử dụng chức năng mã hóa ngược (inverse cipher function)
Hàm mật mã chuyển tiếp là một hoán vị trên các chuỗi bits có độ dài cố định; các chuỗi được gọi là các khối (block) Chiều dài của một khối được gọi là kích thước khối Khóa được ký hiệu là K và chức năng mã hóa chuyển tiếp kết quả của mật mã khối được ký hiệu là 𝐶𝐼𝑃𝐻 𝐾
Mật mã khối cơ bản phải được phê duyệt, kích thước khối phải là 128 bits và kích thước khóa tối thiểu là 128 bits Khóa sẽ được tạo đồng nhất một cách ngẫu nhiên hoặc gần đồng nhất một cách ngẫu nhiên, tức là, để mỗi khóa có thể có khả năng được tạo ra gần như bằng nhau Do đó, khóa sẽ là duy nhất và không lặp lại với xác suất cao Khóa phải bí mật và sẽ được sử dụng riêng cho GCM với mật mã khối đã chọn Các yêu cầu bổ sung về việc thiết lập và quản lý khóa sẽ được trình bày trong phần sau [83]
4.3.2.2 Hai chức năng của GCM
Hai chức năng của GCM bao gồm mã hóa xác thực (Authenticated encription) và giải mã xác thực (Authenticated decryption) Chức năng mã hóa xác thực sẽ mã hóa dữ liệu và tính toán thẻ xác thực trên dữ liệu cần mã hóa và cả dữ liệu bổ sung Chức năng giải mã dữ xác thực sẽ giải mã dữ liệu từ bản mã thành bản rõ và xác minh thẻ xác thực [83]
Việc triển khai có thể hạn chế đầu vào với dữ liệu không bí mật (non-confidential data) Biến thể kết quả của GCM được gọi là GMAC Đối với GMAC, các chức năng mã hóa và giải mã được xác thực trở thành các chức năng tạo và xác minh thẻ xác thực trên dữ liệu không bảo mật Các yêu cầu và ký hiệu cho dữ liệu đầu vào và đầu ra của các chức năng này sẽ được thảo luận trong các phần kế tiếp [83]
4.3.2.3 Chức năng mã hóa xác thực a Ngõ vào
Với một mật mã khối đã lựa chọn và khóa được phê duyệt, có ba chuỗi đầu vào cho chức năng mã hóa xác thực [83]:
- Bản rõ (Plaintext) ký hiệu P
- Dữ liệu xác thực bổ sung (Additional Authenticated Data) ký hiệu là A
- Vector khởi tạo (Initialization Vector) ký hiệu IV
Bản rõ và AAD là hai loại dữ liệu mà GCM sẽ mã hóa GCM bảo vệ tính xác thực của bản rõ và AAD; GCM cũng bảo vệ tính bảo mật của bản rõ, trong khi AAD sẽ không được mã hóa Ví dụ, trong một giao thức mạng, AAD có thể bao gồm địa chỉ, cổng, số thứ tự, số phiên bản giao thức và các trường khác cho biết cách xử lý văn bản gốc
IV về cơ bản là một nonce, tức là một giá trị duy nhất trong ngữ cảnh được xác định, chức năng mã hóa sẽ được xác thực trên dữ liệu đầu vào và sẽ được bảo vệ Yêu cầu về tính duy nhất trên IV (và khóa) được nêu trong phần quản lý khóa [84] Độ dài bits của chuỗi đầu vào cho chức năng mã hóa xác thực phải thỏa các điều kiện sau [83]:
Mặc dù GCM được định nghĩa trên các chuỗi bits, độ dài bits của bản rõ, AAD và IV đều phải là bội số của 8, do đó các giá trị này là các chuỗi byte Việc triển khai có thể hạn chế hơn nữa độ dài bits của các đầu vào này và phù hợp với các điều kiện ở trên Độ dài bits mà việc triển khai cho phép được gọi là độ dài bits được hỗ trợ Một bộ độ dài bits được hỗ trợ cho mỗi một trong ba đầu vào phải được thiết lập cho toàn bộ quá trình thực hiện, không phụ thuộc vào khóa [83] Đối với IV, khuyến nghị việc triển khai với độ dài 96 bits, để tăng khả năng tương tác và hiệu quả cũng như đơn giản hơn trong thiết kế b Ngõ ra
Dữ liệu đầu ra của chức năng mã hóa xác thực bao gồm:
- Một bản mã (ciphertext) ký hiệu là C, có độ dài bits như của bản rõ
- Thẻ xác thực (Tag) ký hiệu là T Độ dài bits của thẻ, ký hiệu là t, là một tham số bảo mật Nói chung, t có thể là một trong năm giá trị sau: 128, 120, 112, 104 hoặc 96 Đối với một số ứng dụng nhất định, t có thể là 64 hoặc 32 [83]
Việc triển khai sẽ không hỗ trợ các giá trị cho t khác với 7 giá trị ở trên Việc triển khai có thể hạn chế hỗ trợ với một trong những giá trị này Một giá trị cố định duy nhất cho t sẽ được liên kết với mỗi khóa
4.3.2.4 Chức năng giải mã xác thực
Với việc chọn một mật mã khối, khóa và độ dài thẻ đã được xác định, các đầu vào cho chức năng giải mã được xác thực là các giá trị cho IV, A, C và T như mô tả ở trên Đầu ra là:
- Bản rõ P tương ứng với bản mã C hoặc
- Một mã lỗi đặc biệt, ký hiệu FAIL Đầu ra P chỉ ra rằng T là thẻ xác thực chính xác cho IV, A và C; mặt khác, đầu ra là FAIL Các giá trị cho 𝑙𝑒𝑛(𝐶), 𝑙𝑒𝑛(𝐴), 𝑙𝑒𝑛(𝐼𝑉) của chức năng giải mã sẽ giống như chức năng mã hóa
4.3.2.5 Bảo mật và xác thực sơ khai
Cơ chế bảo mật của bản rõ trong GCM là một biến thể của chế độ bộ đếm (counter mode) [85], với chức năng tăng bộ đếm, ký hiệu là 𝑖𝑛𝑐 32 , để tạo khối truy cập Khối đầu tiên cho mã hóa P được tạo bằng cách tăng một khối tạo từ IV Cơ chế xác thực trong GCM dựa trên hàm băm, ký hiệu là 𝐺𝐻𝐴𝑆𝐻, có tính năng nhân với một tham số cố định, được gọi là băm khóa con trong trường Galois nhị phân
AES-GCM Specifications
AES-GCM là một dạng chuẩn mã hóa và xác thực được thiết kế bởi David McGrew và John Viega Mục đích của thiết kế là nhằm tìm giải pháp thực hiện giải thuật AES-GCM trên FPGA đạt được kết quả PPA (Performance – Power – Area) tốt
AES-GCM đã được thực hiện như một khối đầy đủ bao gồm xác thực mã hóa (encryption – authentication) và giải mã xác thực (decryption – verification) Do đó, nó có thể thực hiện mã hóa/xác thực và giải mã/xác thực đồng thời [88]
Khối mã hóa và xác thực [88]:
- Khối mã hóa AES-GCM hoạt động trên một khung gọi là frame (Message + AAD) tại bất kì thời điểm nào Một frame bao gồm một hoặc nhiều khối AAD hoặc nhiều thông điệp gọi là message Cụ thể, khối mã hóa hoạt động trên một khối message hoặc khối AAD bất kì thời điểm nào
- Độ dài khối mặc định là 128 bit
- Một tín hiệu điều khiển duy nhất bắt đầu hoạt động của khối mã hóa AES-GCM với pha khởi tạo được thiết lập Giai đonạ này được thực hiện một lần trên mỗi frame Sau 20 chu kì xung clock, khối mã hóa đã sẵn sàng để nhận AAD/message
- Khối mã hóa mong đợi một hoặc nhiều AAD với khối độ dài khối AAD cuối cùng khác 128 bits và phải là bội số của 8 (1 byte) Tương tự, khối mã hóa mong đợi 0 hoặc nhiều khối message trong đó, message cuối cùng không cần phải là chiều dài mặc định của khối và phải là bội số của 8 (1 byte)
- Thiết kế yêu cầu một hoặc nhiều khối AAD để nhập trước rồi đến 0 hoặc nhiều khối plaintext
- Thiết kế hiện tại có khả năng xử lý bất kỳ tin nhắn hoặc khối AAD trên mỗi frame Mất 10 chu kì xung clock để mã hóa một khối tin nhắn (chiều dài khói mặc định hoặc ít hơn) với 10 chu kỳ AES 128 bits ứng với mỗi thông điệp được mã hóa AES-GCM mã hóa dựa trên AES-128 cho mã hóa và trường Galois cho xác thực Phép nhân trong trường Galois được sử dụng trong triển khai này tạo ra kết quả trong 8 chu kỳ xung clock Khối AAD không được mã hóa
- Độ dài của frame không cần phải biết đến như khối mã hóa và hoạt động trên một frame với định dạng như sau:
Giải mã và xác thực [88]
- Khối giải mã AES-GCM tương tự như mã hóa Nhờ có Counter mode, thẻ T hoàn toàn giống như mã hóa AES-GCM Và thẻ T được tính lại để so sánh với thẻ được cung cấp Nếu hai thẻ trùng khớp với nhau, giá trị plaintext coi như hợp lệ
- Khối giải mã AES-GCM hoạt động trên frame tương tự mã hóa, trong đó, khối message được thay thế bởi 0 hoặc nhiều bản mã.
AES – GCM dual core
Giải thuật AES-GCM dual core sử dụng 2 core AES để đẩy nhanh tốc độ tính toán
Do giá trị IV đã xác định nên việc mã hóa, giải mã cho từng khối có thể được đẩy nhanh bằng cách sử dụng thêm core AES [Hình 3.14]
Hình 4.14 AES-GCM dual core giải thuật mã hóa
Hình 4.15 AES - GCM dual core giải thuật giải mã
Giới thiệu kiến trúc IPSec dựa trên nền tảng FPGA
Khảo sát cấu hình của FPGA
IPSec được mô tả trong một loạt các RFC (đã trình bày ở chương 1) xác định các dịch vụ kiểm soát truy cập, mã hóa, xác thực, tính toàn vẹn và trao đổi khóa để hỗ trợ bảo mật dữ liệu giữa hai thiết bị mạng Giao thức IPSec được sử dụng phổ biến nhất để bảo vệ truy cập mạng là ESP Việc chọn cấu hình phần cứng FPGA có tầm quan trọng đặc biệt trong việc thực hiện giải thuật cũng như đáp ứng được thông lượng 100Gbps Nhóm đã khảo sát các dòng ESP core được tích hợp trên FPGA của Altera và Xilinx trên website https://www.heliontech.com/IPSec.htm
Hình 4.17 Cấu hình phần cứng tham khảo cho RFC7321[89]
58 Hình 4.18 Cấu hình phần cứng tham khảo cho RFC8221 [89]
4.4.2 Khảo sát hiệu năng của IPSec AES -GCM thực hiện trên các FPGA tham khảo
Có nhiều lựa chọn giải pháp AES-GCM, bao gồm tất cả các yêu cầu thông lượng từ dưới 50Mbps cho đến vượt quá 40Gbps trong bất kỳ mục tiêu công nghệ nào Điều này cho phép người dùng có một giải pháp phù hợp rất tốt, mà không phải tiêu tốn về diện tích hoặc hiệu suất [89]
Bảng 4.11 Các giải pháp AES-GCM tiêu chuẩn hiện có sẵn
Loại lõi Thông lượng Loại chân
218 chu kỳ AES - GCM 0 – 100 Mbps Ultra compact
48 chu kỳ AES - GCM 0 – 500 Mbps Very compact
19 chu kỳ AES - GCM 500 Mbps – 2Gbps Compact
Giga AES - GCM 2Gbps – 40 Gbps Scalable
Bảng trên cho thấy sự lựa chọn các giải pháp AES-GCM tiêu chuẩn hiện có sẵn Đối với các phiên bản chính, tên core phản ánh số chu kỳ xung clock hoạt động được thực hiện để mã hóa hoặc giải mã từng khối thông tin 16 bytes bằng khóa 128 bits; ví dụ, core 19 chu kỳ xử lý mỗi khối AES 128 bits trong 19 chu kỳ xung clock và có thông lượng 6,73Mbps trên mỗi MHz [88]
Bộ xử lý Giga AES-GCM là một thiết kế riêng biệt, được tối ưu hóa cho hoạt động thông lượng cực cao Tất cả các bộ xử lý AES-GCM hiệu suất cao này đều có sẵn trong các phiên bản để sử dụng trong ASIC, Altera, microsemi (Actel) và Xilinx FPGA, và chung với tất cả các core IP mà chúng được thiết kế với từng công nghệ khác nhau để mang lại hiệu quả tốt nhất và kết quả hiệu năng tốt nhất [89]
Một loạt các giải pháp được sử dụng để các yêu cầu thông lượng của bất kỳ ứng dụng nào có thể được kết hợp chặt chẽ với hiệu quả tối ưu Trong trường hợp này, có ba mức hiệu suất khả dụng; phản ánh số chu kỳ xung nhịp tối thiểu được thực hiện để xử lý mỗi khối dữ liệu 16 byte Số chu kỳ thực tế được thực hiện bởi core xử lý, các khối này thay đổi theo sự lựa chọn core và kích thước khác nhau
Hình 4.19 Khảo sát hiệu năng theo cấu hình
Bộ xử lý AES-GCM 218 chu kỳ, cần một chu kỳ xung nhịp tối thiểu 218 để mã hóa hoặc giải mã mỗi khối dữ liệu 16 bytes bằng khóa 128 bits Để có thông lượng cao hơn, core AES-GCM của chu kỳ 48 vòng cung cấp hiệu năng cao hơn bốn lần so với lõi
218 chu kỳ trong khi sử dụng ít hơn hai lần diện tích logic cell của nó Phải mất tối thiểu
48 chu kỳ xung nhịp để mã hóa hoặc giải mã từng khối dữ liệu 16 bytes bằng khóa 128 bits Có hiệu suất cao nhất là lõi AES-GCM 19 chu kỳ, cung cấp hiệu năng gấp đôi so với lõi 48 chu kỳ trong khi sử dụng khoảng hai lần diện tích logic cell của nó Phải mất tối thiểu 19 chu kỳ đồng hồ để mã hóa hoặc giải mã từng khối dữ liệu 16 bytes bằng bất kỳ kích thước khóa nào [89]
Mỗi phiên bản lõi có sẵn với sự hỗ trợ cho một, hai và (trong hầu hết các trường hợp) cả ba kích cỡ khóa AES (128, 192 và 256-bit)
Các bảng bên dưới hiển thị số chu kỳ và thông lượng dữ liệu tối đa cho từng phiên bản lõi AES-GCM, cho từng kích thước khóa được hỗ trợ [89]
Bảng 4.12 Số chu kỳ và thông lượng dữ liệu tối đa
Kích thước khóa 128 192 256 128 192 256 128 192 256 Chu kỳ mỗi block
Phiên bản 19 chu kỳ có sẵn sự lựa chọn mở rộng khóa tiêu chuẩn hoặc nhanh, ảnh hưởng đến thời gian sử dụng để thiết lập khóa mới Việc mở rộng tiêu chuẩn được dùng trong FPGA, đặc biệt là khi cần hỗ trợ cho cả ba kích thước chính, vì có thể tiết kiệm đáng kể diện tích [89] Đối với các yêu cầu thông lượng dữ liệu cao hơn, có các họ lõi AES-GCM nhanh hơn có cổng dữ liệu rộng hơn để đảm bảo thông lượng không bị hạn chế bởi băng thông I/O Khả năng thông lượng dữ liệu của các lõi tỷ lệ thuận với tần số của đồng hồ chủ
60 được sử dụng và giá trị tối đa của điều này phụ thuộc vào loại thiết bị và cấp tốc độ được chọn [89]
Bảng 4.13 Phạm vi lựa chọn các họ thiết bị Xilinx
Lõi 218 CLK Khóa 128 2 kích thước khóa
Công nghệ Spartan6 Virtex5 Virtex6 Spartan6 Virtex5 Virtex6 Tài nguyên 209 slices 247 slices 217 slices 220 slices 256 slices 220 slices
CLK 252MHz 393MHz 475MHz 231MHz 410 MHz 461MHz
Thông lượng 128 147 Mbps 230 Mbps 278 Mbps 135 Mbps 240 Mbps 270 Mbps Thông lượng 256 na na na 99 Mbps 176 Mbps 198 Mbps
Các bảng trên trang này hiển thị phạm vi lựa chọn các họ thiết bị Xilinx phổ biến theo các cấp tốc độ Bảng trên cho thấy lõi 218 chu kỳ cho cả hỗ trợ khóa 128 bits và hai kích thước khóa [89]
Các bảng dưới đây cho thấy các lõi AES-GCM 48 chu kỳ và 19 chu kỳ, hỗ trợ khóa 128 bits và tất cả các kích thước khóa [89]
Bảng 4.14 Các lõi AES-GCM 48 chu kỳ
Lõi 48 CLK Khóa 128 Tất cả kích thước khóa
Công nghệ Spartan6 Virtex5 Virtex6 Spartan6 Virtex5 Virtex6 Tài nguyên 340 slices 415 slices 356 slices 362 slices 443 slices 376 slices
CLK 199MHz 303MHz 359MHz 194MHz 307MHz 356MHz
Thông lượng 128 530 Mbps 808 Mbps 957 Mbps 517 Mbps 818 Mbps 949 Mbps Thông lượng 192 na na na 443 Mbps 701 Mbps 813 Mbps Thông lượng 256 na na na 388 Mbps 614 Mbps 712 Mbps
Bảng 4.15 Các lõi AES-GCM 48 chu kỳ
Lõi 19 CLK Khóa 128 Tất cả kích thước khóa
Công nghệ Spartan6 Virtex5 Virtex6 Spartan6 Virtex5 Virtex6 Tài nguyên 639 slices 678 slices 635 slices 672 slices 694 slices 669 slices
CLK 205MHz 335MHz 364MHz 178MHz 282MHz 332MHz
Thông lượng 128 1.38 Gbps 2.25 Gbps 2.45 Gbps 1.2 Gbps 1.9 Gbps 2.23 Gbps Thông lượng 192 na na na 1.2 Gbps 1.9 Gbps 2.23 Gbps Thông lượng 256 na na na 1.2 Gbps 1.9 Gbps 2.23 Gbps
Trước khi thiết kế, cần phải quyết định lõi nào trong các lõi AES-GCM sẽ phù hợp nhất với ứng dụng IPSec Đầu tiên quyết định giữa các lõi 218 chu kỳ, 48 chu kỳ và 19 chu kỳ theo thông lượng dữ liệu cần thiết và tài nguyên logic có sẵn Sau đó xác định kích thước khóa AES muốn hỗ trợ cũng như mọi yêu cầu đặc biệt khác của ứng dụng [89]
Bảng 4.16 Khảo sát chức năng và hiệu năng theo cấu hình
Lõi Diện tích Thông lượng Mã hóa/ giải mã
Các kiểu kiến trúc bảo mật xây dựng trên nền tảng IPSec
Kiến trúc lookaside
Việc triển khai bảo mật truyền thống là các bộ định tuyến dựa trên NPU hoặc các thiết bị dựa trên Pentium Trong cả hai quá trình thực hiện, thiết bị chứa phần cứng tối thiểu để thực hiện lớp vật lý, kiểm soát truy cập phương tiện và bộ đệm gói Thiết bị bảo mật cũng chứa NPU hoặc Pentium với chipset PCI để xử lý tất cả các chức năng khác như tường lửa, dịch địa chỉ mạng, bảo mật VPN, phát hiện xâm nhập, phát hiện virus và QoS
Khi hiệu suất VPN của các thiết kế thế hệ tiếp theo giảm xuống mức không thể chấp nhận, các tùy chọn bao gồm di chuyển sang NPU đắt hơn, hiệu suất cao hơn hoặc thêm NPU bổ sung để giảm bớt gánh nặng Hoặc là tùy chọn thêm chi phí đáng kể cho thiết kế
Chức năng VPN yêu cầu băng thông NPU nhiều hơn các chức năng bảo mật khác vì hầu hết xử lý bảo mật đều phân tích các trường nhất định trong một số tiêu đề của một số gói Tuy nhiên, chức năng VPN yêu cầu NPU xử lý từng bits của mỗi gói với các hoạt động xác thực và mã hóa chuyên sâu Hơn nữa, Internet Key Exchange yêu cầu NPU thực hiện tính toán các hoạt động khóa công khai Thật không may, VPN dựa trên phần mềm không thể dễ dàng thực hiện đồng thời các chức năng IKE và IPSec VPN: Trong khi NPU thực hiện IKE, hiệu suất xử lý IPSec tạm thời suy giảm VPN dựa trên phần mềm hiện tại không thể hoạt động hiệu quả ở tốc độ gigabits, vì vậy các nhà phát
62 triển sử dụng bộ đồng xử lý bảo mật để tăng tốc các phần quan trọng của xử lý IPSec [90]
Hình sau [90] nêu khái niệm hệ thống bảo mật Lookaside Hookup phần cứng đơn giản này thêm chức năng bảo mật tìm kiếm cho một đơn vị xử lý mạng Trong trường hợp này, bộ đồng xử lý bảo mật kết nối với NPU thông qua một cổng điều khiển riêng bên ngoài đường dẫn dữ liệu chính PHY: lớp vật lý [90]
Hình 4.20 Khái niệm hệ thống bảo mật Lookaside
Kiến trúc giảm tải tất cả bảo mật IP và xử lý trao đổi khóa Internet Thiết bị IPSec Flow-through chứa cơ sở dữ liệu, chính sách bảo mật và liên kết bảo mật và hỗ trợ IKE, tất cả trên chip và bộ xử lý mạng thực hiện các chức năng bảo mật, mạng và chất lượng dịch vụ khác PHY: lớp vật lý
Hình 4.21 Khái niệm hệ thống bảo mật Flow-through
Hình trên [90] cho thấy hookup phần cứng đơn giản để thêm chức năng bảo mật lookaside vào NPU Trong trường hợp này, bộ đồng xử lý bảo mật kết nối với NPU thông qua một cổng điều khiển riêng bên ngoài đường data path chính Kiến trúc lookaside này cung cấp tùy chọn để thêm bảo mật cho các thiết bị và bộ định tuyến VPN Kiến trúc yêu cầu NPU xử lý nhiều tác vụ phân tích gói IPSec và chức năng bảo mật, cũng như các giao thức truyền dữ liệu và chức năng di chuyển dữ liệu liên quan, trước
63 khi chuyển các gói được xử lý sang mạch tích hợp tăng tốc bảo mật Trong khi bộ xử lý bảo mật ngoại giảm tải các hàm băm và mã hóa đối xứng chuyên sâu tính toán, việc xử lý giao thức còn lại và các chức năng IPSec phụ trợ khác có thể trở thành nút cổ chai trên NPU ở tốc độ gigabits [90]
Một kiến trúc lookaside cũng yêu cầu băng thông bus bổ sung Di chuyển dữ liệu từ NPU sang bộ xử lý bảo mật và nhân đôi băng thông bus NPU bằng cách yêu cầu hai lượt đi qua bus của nó Kiến trúc Flow-through cắt giảm một nửa cả số lượng truyền dữ liệu NPU và băng thông bus giữa NPU và bộ xử lý bảo mật vì bus ngoài của nó kết nối với thiết bị khác, chẳng hạn như lớp vật lý mạng
Tối thiểu, các cổng bảo mật thực hiện chức năng tường lửa và dịch địa chỉ mạng ngoài các chức năng chuyên sâu tính toán khác, như phát hiện xâm nhập, phát hiện virus, quét tải trọng và một số mức QoS Vì phân loại gói là chung cho tất cả các chức năng bảo mật này, người thiết kế cổng bảo mật có thể thêm các chức năng khác theo module và tăng dần bằng cách tăng cường bảng policy table, sau đó kết hợp thêm phần mềm Tuy nhiên, đến một lúc nào đó, tài nguyên NPU sẽ cạn kiệt và hiệu suất thông lượng sẽ bắt đầu suy giảm Vì chức năng VPN là hoạt động tính toán chuyên sâu nhất, đặc biệt là ở tốc độ gigabits, nên việc tăng tốc phần cứng VPN cho bộ định tuyến hoặc thiết bị có tường lửa và NAT xảy ra trước tiên [90].
Kiến trúc flow-through
Kiến trúc bảo mật Flow-through cung cấp triển khai phần cứng thế hệ tiếp theo của giao thức bảo mật IPSec Kiến trúc này định vị bộ xử lý bảo mật trước bộ xử lý mạng Kiến trúc Flow-through đóng gói tất cả chức năng VPN của IPSec và cung cấp hiệu quả hệ thống cao hơn kiến trúc Lookaside Bộ xử lý bảo mật Flow-through xử lý tất cả các chức năng phần cứng và phần mềm IPSec mà không cần bất kỳ sự can thiệp nào từ bên ngoài, cho phép NPU hoạt động như thể hoàn toàn không biết về chức năng VPN [90]
Kiến trúc Flow-through, giảm tải tất cả xử lý IPSec và IKE Thiết bị IPSec lưu lượng chứa cơ sở dữ liệu policy bảo mật và liên kiết bảo mật và hỗ trợ IKE, tất cả đều trên chip NPU có thể thực hiện các chức năng bảo mật, kết nối mạng và QoS khác mà không yêu cầu bất kỳ sửa đổi nào đối với phần còn lại của thiết kế Để chèn thiết bị Flow-through, nhà thiết kế hệ thống thực sự ngắt kết nối phần cứng giữa điều khiển truy cập phương tiện và thiết bị lớp vật lý, sau đó chèn thiết bị lưu lượng ở giữa Do đó, thiết bị lưu lượng hoạt động như một thiết bị lớp vật lý đến cổng máy chủ và hoạt động như một thiết bị điều khiển truy cập phương tiện ở phía mạng
Tất cả các chức năng xử lý và giải mã gói cho lưu lượng truy cập hoàn tất trước khi lưu lượng truy cập đến bộ xử lý mạng Các bộ xử lý bảo mật Flow-through thông qua các giao diện phần cứng cung cấp cho bộ xử lý mạng hoặc hệ thống ở tốc độ đường truyền Điều này cho phép hiệu suất VPN có thể dự đoán được độc lập với băng thông NPU vì NPU chỉ thực hiện các chức năng cấu hình policy và xử lý ngoại lệ IPSec Kiến trúc Flow-through làm giảm băng thông bus vì nó không yêu cầu nhiều nút giao bus lookaside và đến từ NPU
Giải pháp Flow-through có thể hỗ trợ nhà sản xuất thiết bị gốc phát triển thiết bị VPN vì nhà thiết kế có thể tích hợp các thiết bị Flow-through trực tiếp vào data path do chúng hầu như không ảnh hưởng phần còn lại của hệ thống Điều này có thể làm khối lượng thiết kế hệ thống cần thiết của các nhà phát triển OEM Các thiết bị Flow-through
64 có thể giảm thêm rủi ro thiết kế bằng cách kết hợp giải pháp IPSec / IKE được chứng nhận của ICSA Labs, đảm bảo khả năng tương tác được kiểm tra và chứng nhận [90]
Hơn nữa, giải pháp Flow-through có thể tăng tốc thời gian đưa ra thị trường bằng cách giảm nỗ lực phần mềm để thực hiện các giao thức IPSec và IKE Không có API IPSec để tích hợp vào phần mềm hệ thống để xử lý từng gói IPSec Ngoài ra, nhà phát triển OEM không cần phải duy trì phần mềm IKE và IPSec vì thiết bị Flow-through đã kết hợp điều này Ngoài ra, nhà phát triển OEM không cần phải di chuyển sang các tiêu chuẩn IPSec mới bởi vì nhà sản xuất thiết bị Flow-through hỗ trợ nâng cấp tiêu chuẩn Đối với việc triển khai thiết bị lưu trữ IP, thiết bị Flow-through được đặt giữa một công cụ giảm tải TCP mạng và thiết bị lớp vật lý [90].
So sánh cấu trúc IPSec
Các thực thi VPN điển hình là máy PCbased hoặc mở rộng hơn là bộ định tuyến Router Với việc không có phần cứng tăng tốc, cũng như thiết bị Pentium hoặc bộ xử lý mạng phải thực hiện chức năng VPN IPSec yêu cầu giao thức và xử lý gói ngoài mã hóa và xác thực gói Tương tự, IKE yêu cầu xử lý thông điệp ngoài mã hóa công khai Tuy nhiên, các chức năng mã hóa được tính toán chuyên sâu và do đó đòi hỏi một lượng băng thông CPU tương đối lớn chỉ để dành riêng cho mã hóa và xác thực
Công cụ tăng tốc thuật toán IPSec để đạt thông lượng Gbps trở lên nhằm tung ra thị trường cuối những năm 1990 Tuy nhiên, chỉ đơn thuần là tăng tốc chức năng bảo mật vẫn gây gánh nặng cho máy chủ CPU hoặc NPU, cản trở khả năng mở rộng và phát triển của thiết bị Các nhà sản xuất bắt đầu vận chuyển toàn bộ gói (packet) xử lý tìm kiếm vào năm 2000 để giảm bớt gánh nặng CPU nhằm chuyển đổi các gói IP thành IPSec và ngược lại Tuy nhiên, điều này vẫn cần bộ định tuyến (Router) hoặc nhà cung cấp thiết bị để có kiến thức chuyên môn về IPSec để phát triển Thêm vào đó, các kết nối I/O của CPU đến bộ xử lý bảo mật phải cung cấp và tăng gấp đôi thông lượng cần thiết tại ngõ vào và ngõ ra Quá trình xử lý không tải đến máy chủ CPU hoặc NPU từ bất kỳ IPSec nào hoặc xử lý trao đổi khóa IKE (Internet Key Exchange), do đó giảm bớt các hạn chế kỹ thuật và tạo điều kiện thuận lợi cho quá trình thiết kế [90]
Hình 4.22 So sánh yêu cầu máy chủ cần giữa phần mềm, lookaside và flow-through
65 Hình trên [90] so sánh yêu cầu máy chủ cần để thêm chức năng IKE và IPSec VPN vào hệ thống chỉ dành cho phần mềm, lookaside và flow-through
Trong hệ thống lookaside, bộ xử lý mạng phân tích cú pháp và phân loại các gói gửi đến, tra cứu chính sách bảo mật (Security policy) và hiệp hội bảo mật (SA) và xóa các tiêu đề (header) IPSec khi cần trước khi giải mã gói được mã hóa trong phần mềm hoặc chuyển tiếp nó tới bộ xử lý bảo mật tìm kiếm giải mã và xác thực Trong kiến trúc flow-through, tất cả các xử lý IPSec xảy ra trong phần cứng ở tốc độ dòng (line speed) Lưu lượng truy cập đi theo một quá trình tương tự, hoặc chỉ theo chiều ngược lại [90]
IKE tập trung nhiều hơn vào phép modulo: Một giao dịch IKE duy nhất cũng yêu cầu hình thành 9 thông điệp, đàm phán chính sách bảo mật, thiết lập mục cơ sở dữ liệu hiệp hội bảo mật (SA) và thực hiện các hoạt động khóa công khai Diffie-Hellman và RSA Hầu hết các bộ xử lý bảo mật lookaside đều tăng tốc các hoạt động của khóa công khai, nhưng để bù lại là phải xử lý giao thức IKE cho máy chủ NPU
IPSec không chỉ là tiêu chuẩn mã hóa tiên tiến (AES) và thuật toán băm an toàn (SHA-1) cũng như nó yêu cầu phân tích và phân loại gói tin, chính sách bảo mật và tra cứu khu vực lưu trữ, tạo và kiểm tra các tiêu đề bảo mật, kiểm tra bảo mật liên kết thời gian, và cập nhật số liệu thống kê Hầu hết các bộ xử lý bảo mật lookaside đều loại bỏ những nhiệm vụ cho máy chủ NPU
Trong hình 4, cột lookaside đại diện cho chức năng của dịch vụ bảo mật flow- through từ máy tăng tốc thuật toán hoặc nhà cung cấp xử lý gói tin Máy tăng tốc thuật toán chỉ thực hiện thuật toán mã hóa và xác thực, và một số nhà cung cấp cũng hỗ trợ nén IPComp Bộ xử lý gói chuyển đổi bổ sung từ gói IP thành gói IPSec và ngược lại [90]
Một số thiết bị mã hóa tìm kiếm, cũng cung cấp phần cứng tăng tốc công khai Bởi vì nhìn thiết bị chỉ cung cấp một phần của tổng thể IPSec và chức năng xử lý IKE trong phần cứng, chúng có thể không giải quyết được vấn đề thực hiện IKE và IPSec đồng thời
Trong cấu hình lookaside, bộ xử lý hệ thống xử lý một số nhiệm vụ cho giao thức VPN, có nghĩa là nhà phát triển OEM phải phát triển, chuyển đổi và tích hợp một lượng đáng kể của phần mềm IPSec và IKE Thậm chí tải xuống miễn phí phần mềm IPSec và IKE từ trang web yêu cầu nhà phát triển OEM đến, chuyển đổi, tích hợp và bảo trì phần mềm này Do đó, việc kết hợp chức năng VPN ở tốc độ đường truyền làm tăng thêm độ phức tạp cũng như thời gian tiếp thị, rủi ro kĩ thuật và quá tải trong sự phát triển tài nguyên Bởi vì flow-through xử lý đóng gói toàn bộ giải pháp IPSec trong một con chip, việc sử dụng chúng có thể làm giảm đáng kể cả hai kiến thức cần thiết để kết hợp IPSec vào sản phẩm và thời gian cũng như rủi ro liên quan đến quá trình phát triển [90]
4.5.4 Phân tích hiệu năng và chi phí
Bảng sau [90] cho thấy cả lợi ích giảm tải của bộ xử lý và tiết kiệm chi phí bằng đô-la khi thêm bộ xử lý phần cứng IPSec cho các thiết bị dựa trên Pentium Các tính toán được bắt nguồn bằng cách sử dụng chung đơn vị băng thông Pentium 1GHz để đo lượng băng thông CPU cần thiết để thực hiện các chức năng IPSec khác nhau trong phần mềm, để cung cấp kênh gigabits mang lại giá trị 2Gbps [90]
Bảng 4.17 So sánh hiệu năng và chi phí 3 cấu hình
Giá Giá xử lý multigigabit
Chỉ phần mềm 7.6GHz 1GHz 2.5GHz 11.1GHZ $851 $0 $851 Lookaside 0.0GHz 1GHz 0.1GHz 1.1GHz $84 $150 $234 Flowthrough 0.0Ghz 0GHz 0.0GHz 0.0GHz $0 $100 $100
Chi phí mã hóa cho giải thuật tối ưu AES-128 bằng code assembly xấp xỉ khoảng
280 clocks trên 16 byte, trong khi SHA-1 là 830 clocks trên 64 byte Chuyển đổi sang Pentium clock mỗi bits, những đo lường về mặt năng suất khoảng 3.8 clocks trên bits trên giây, hoặc 7.6GHz băng thông Pentium để hỗ trợ kênh 2Gbps Bởi vì chi phí xử lý giao thức IPSec và xử lý gói khác nhau phụ thuộc rất nhiều vào nhiều yếu tố bao gồm số hiệp hội bảo mật, chính sách bảo mật, và triển khai tra cứu cũng như liệu trình tăng tốc thuật toán hoặc bộ xử lý gói tin được sử dụng Chúng tôi ước tính rằng 2Gbps yêu cầu 500Mhz đến 1.5 GHz của băng thông Pentium [90]
Nhìn theo một cách khác, tính toán này xấp xỉ 500 đến 1000 clocks cho mỗi gói với tốc độ xử lý 1 triệu gói trên mỗi giây Một triệu gói mỗi giây cung cấp băng thông xử lý tốc độ dòng xuống kích thước gói 250 byte, trừ đi khoảng cách giữa các gói, cho một hàng Hình thành một chế độ đường hầm IKE qua thuật toán Diffie-Hellman, một khóa riêng RSA và hai hoạt động khóa công khai RSA Hình thành nhanh một IKE trên chế độ đường hầm (tunnel mode) yêu cầu một sự hoạt động Diffie-Hellman Chúng tôi ước tính rằng việc hình thành 100 đường hầm chính và chế độ nhanh mỗi giây cung cấp đủ tốc độ tạo khóa để hỗ trợ thông lượng tầm Gigabits VPN truy cập từ xa Thật trùng hợp, một mã nguồn IKE và 300 đường hầm IKE mỗi giây yêu cầu cùng một lượng khóa công khai được xử lý [90]
Pentium4 2.1GHz yêu cầu 4.65 ms cho RSA xử lý khóa riêng 0.19ms cho RSA 1,024 bits hoạt động khóa công khai và 3.69 ms cho 1024 bits tính toán trên Diffie- Hellman Duy trì 100 đường hầm mỗi giây trong phần mềm yêu cầu khoảng 2.5GHz băng thông Pentium Xử lý tin nhắn IKE là không đáng kể, yêu cầu xử lý Pentium dưới 100MHz để duy trì chế độ chính IKE 100 đường hầm trên giây và tốc độ thiết lập đường hầm nhanh [90]
Bộ xử lý bảo mật lookaside cung cấp một sự cải thiện đáng kể về cả chi phí và giảm tải cho CPU Tuy nhiên, bộ xử lý flow-through hoàn toàn giảm tải máy chủ CPU từ IPSec, giúp tiết kiệm chi phí đáng kể so với bộ xử lý lookaside Phân tích tương tự này có thể được áp dụng giảm tải và lợi ích chi phí của NPU dựa trên bộ định tuyến bằng cách đổi sức mạnh xử lý Pentium để có sức mạnh xử lý NPU.
Tiêu đề Parser
Định dạng gói dữ liệu IPv4 ESP
Địa chỉ IP do Tổ chức cấp phát số hiệu Internet (IANA – Internet Assigned Numbers Authority) quản lý và tạo ra IANA sẽ phân phối dải địa chỉ IP đến Cơ quan Intenet cấp khu vực, cơ quan đó sẽ phân phát dải IP cấp thấp hơn cho các quốc gia, các quốc gia tiếp nhận dải địa chỉ IP đã đăng ký cấp phát lại dải IP cấp thấp hơn cho các nhà cung cấp Internet và cuối cùng người dùng sẽ có một địa chỉ IP dùng để kết nối Internet
IPv4 là thế hệ IP chúng ta sử dụng hiện nay bao gồm 32 bits IPv4 được biểu hiện bằng chuỗi số có 4 phần phân cách bằng 4 dấu chấm Mỗi phần được gọi là octet và có
Hình 4.24 Định dạng IPv4 ESP
Định dạng gói dữ liệu IPv6 ESP
Pv6 được phát triển dựa trên nền tảng IPv4 nhằm mục địa bổ sung lượng địa chỉ IPv4 (4.3 tỷ) dần cạn kiệt Với chiều dài 128 bits dữ liệu, IPv6 có tới 2.56 tỷ tỷ địa chỉ
IP gấp nhiều lần so với IPv4.
Hình 4.25 Định dạng Ipv6 ESP
5 THIẾT KẾ VÀ THỰC HIỆN
Quy trình thiết kế
Hình 5.1 Quy trình thiết kế IP (Intellectual Property) AES-GCM
Quy trình thiết kế IP AES-GCM bao gồm các bước cơ bản như sau:
- AES-GCM specification: đặc tả giải thuật AES-GCM bao gồm các khối ngõ vào, ngõ ra mong muốn và giải thuật của thiết kế được mô tả bằng ngôn ngữ gần với phần cứng; chất lượng của hệ thống mong muốn bao gồm: hiệu năng, công suất, diện tích
- Architecture design: thiết kế về mặt kiến trúc của hệ thống, định dạng fifo ngõ vào/ra; định dạng số lượng core AES cần sử dụng; định dạng các mô-đun con (sub-module) cho thiết kế dựa trên đặc tả; giải thuật cơ bản cho máy trạng thái và đồng bộ dữ liệu giữa các máy trạng thái với nhau
- HDL (Hardware Description Languague) coding: sử dụng ngôn ngữ phần cứng ở đề tài này là verilog để mô tả dựa trên thiết kế ở các bước trước đó
- Simulation & verification: mô phỏng và đánh giá lại thiết kế bằng các testcase, kiểm tra tính đúng đắn về mặt chức năng của hệ thống so với yêu cầu đã đặt ra
- Desire function/Meet target: kiểm tra các yếu tố về mặt chức năng, các yếu tố trong đặc tả ban đầu xem thiết kế đã thỏa mãn hay chưa? Nếu chưa đạt yêu cầu, xem lại bước thiết kế và RTL coding; nếu đã đạt yêu cầu, thiết kế đã được hoàn thiện
Thiết kế RTL (Register Transfer Level)
Top level
Hình 5.2 Luồng dữ liệu (data path) top
Thiết kế bao gồm 3 bộ phận chính đó là module gcm_aes_core, fifo in và fifo out Trong đó module gcm_aes_core là bộ xử lý của thiết kế, thực hiện các việc tính toán cho giải thuật GCM AES 128 bits 2 fifo in và out được thiết kế để lưu trữ giá trị tạm thời nhận được từ PCIe Dữ liệu ngõ vào nhận được từ PCIe được lưu trong fifo in sẽ được đọc và đi qua 1 counter, rồi được đưa vào bộ AES cipher top để thực hiện giải thuật AES, kết quả sẽ tiếp tục đưa qua 1 hàm băm GHASH Sau khi xử lý Tag, dữ liệu ngõ ra được lưu vào fifo out trước khi đưa ra ngoài qua PCIe
Hình 5.3 Đặc tả top level thiết kế
Bộ xử lý chính FPGA IPSec nhận các ngõ vào bao gồm thông tin mã hóa và giải mã từ bộ SA lookup được cung cấp bởi ARM; ESP Packet cho mã hóa hoặc IP Packet cho giải mã, và các tín hiệu điều khiển cho để kích hoạt khối bắt đầu thực hiện Phần thông tin bao gồm Khóa Key và Initial Vector Phần Packet bao gồm AAD và MESSAGE Ngõ ra của khối bao gồm dữ liệu đã được mã hóa hoặc giải mã Và các thông tin để ARM biết đã thực hiện xong và có thể thực hiện các phép tính kế tiếp
Hình 5.4 Giao diện module top gcm aes 128 bits
Top gcm aes 128 bits module đọc dữ liệu 128 bits từ fifo in theo địa chỉ 8 bits, thực hiện thuật toán AES GCM 128 để mã hóa và giải mã dữ liệu Việc này sẽ được kích hoạt bởi tín hiệu ena_aes Tín hiệu này sẽ được tích cực sau khi fifo in đã sẵn sàng Trong quá trình PCIe đang ghi fifo in thì tín hiệu này sẽ không được tích cực để tránh xung đột Sau khi thực hiện, cờ gcm_aes_done được bật lên, tín hiệu cho phép đọc ngõ ra 128 bits từ fifo out, kết thúc quá trình xử lý 1 gói IP
RD DATA RD DATA2 WAIT
WR INFO DONE rd_data_flag rd_data_flag is_dual_aes wr_data_flag rd_data_flag wr_data_flag wr_tag_flag wr_tag_flag_d4 wr_data_flag2 wr_tag_flag
Hình 5.5 Bộ điều khiển tín hiệu – máy trạng thái top level
72 Để thực hiện việc điều khiển cho luồng dữ liệu top level lấy đúng dữ liệu, và điều khiển các tín hiệu cho máy trạng thái ở bên trong block level cần có một bộ điều khiển controller Bộ điều khiển được thực hiện bởi một máy trạng thái Mealy kết hợp với Moor Máy trạng thái này hoạt động theo tiến trình như sau:
✓ INIT trạng thái khởi tạo ban đầu Chuyển sang trạng thái kế tiếp là RD INFO khi có tín hiệu ena_aes
✓ RD INFO đọc thông tin của gói từ fifo in, trạng thái kế tiếp là RD KEY1
✓ RD KEY1 đọc 128 bits đầu của khóa từ fifo in, trạng thái kế tiếp RD KEY2
✓ RD KEY2 đọc 128 bits sau của khóa từ fifo in, sau bước này khóa được gộp lại với 128 bits đầu tạo thành khóa 256 hoàn chỉnh Trạng thái kế tiếp là RD IV
✓ RD IV đọc initial vector từ fifo in, trạng thái kế tiếp là RD AAD khi có cờ rd_data_flag
✓ RD AAD đọc AAD từ fifo in và đợi bộ mã hóa/giải mã thực hiện, trạng thái kế tiếp RD DATA khi có cờ rd_data_flag
✓ RD DATA đọc Message từ fifo in và: o Nếu là gói data cuối cùng, chờ bộ mã hóa/giải mã thực hiện xong và tiến hành tới bước ghi dữ liệu ra ngoài fifo, trạng thái WR_DATA o Nếu không là gói data cuối cùng, kích hoạt trạng thái sử dụng 2 AES core để tăng tốc quá trình mã hóa/giải mã, trạng thái kế tiếp RD_DATA2
✓ RD_DATA2: đọc Message từ fifo in và chờ quá trình mã hóa/giải mã WAIT_DATA1 qua cờ wr_data_flag
✓ WAIT_DATA1: trạng thái kế tiếp WR_DATA1 sau khi quá trình mã hóa/giải mã cho gói data thứ nhất hoàn thành
✓ WR_DATA1: bộ mã hóa/giải mã đã thực hiện xong 128 bits, dữ liệu được ghi vào fifo out Trạng thái kế tiếp là WAIT_DATA2
✓ WAIT_DATA2: tiến hành chờ quá trình mã hóa/giải mã cho gói data thứ
2, sau khi xuất hiện cờ wr_data_flag2, trạng thái kế tiếp WR_DATA2
✓ WR_DATA2: bộ mã hóa/giải mã đã thực hiện xong 128bits data thứ 2, dữ liệu được ghi vào fifo out Trạng thái kế tiếp là RD_DATA khi có cờ rd_data_flag tức là chưa được thực hiện hết toàn bộ gói hoặc là WR_TAG khi đã thực hiện toàn bộ gói, cờ wr_tag_flag được kích hoạt
✓ WR DATA dữ liệu được ghi vào fifo out Trạng thái kế tiếp là WR_TAG khi đã thực hiện toàn bộ gói, cờ wr_tag_flag được kích hoạt
✓ WR TAG ghi Tag vào fifo out, sau 4 chu kỳ bật cờ wr_tag_flag_d4 chuyển trạng thái kế tiếp la WR INFO
✓ WR INFO ghi thông tin gói đã mã hóa hoặc giải mã vào fifo out, sau 4 chu kỳ bật cờ wr_info_flag_d4 chuyển sang trạng thái DONE
73 DONE hoạt động của thiết kế hoàn thành, trạng thái kế tiếp INIT đợi tín hiệu ena_aes để thực hiện cho gói kế tiếp.
GCM AES CORE dii_data (128bits) dii_data_size (4bits) key_length (2bits)
Cii_K (256bits) clk rstn is_decrypt_ena dii_data_valid dii_data_type dii_data_last_word dii_ctrl_valid dii_IV_valid is_dual_aes data_pcie_fifo_out(128bits) data_pcie_fifo_out(128bits) data_not_ready out_valid tag_valid is_2nd_input
Hình 5.6 Giao diện module gcm_aes_core
Module GCM AES core cần đọc ngõ vào bao gồm khóa có độ dài 256 bits, độ dài khóa key_len 2 bits, dữ liệu cần tính có thể là AAD hay message đã được tách ra thành từng dữ liệu 128 bits và độ dài của dữ liệu ngõ vào và tín hiệu để xác nhận là mã hóa hay giải mã Lý do chọn độ dài này là vì đề tài thực hiện được 3 loại mã khóa khác nhau 128, 192, 256 bits Độ dài được chọn là phù hợp, đối với các khóa có độ dài 128,
192, các bits 0 sẽ được tự động thêm vào Ngõ vào key_length 2 bits định nghĩa cho độ dài khóa tương ứng 00 – 128 bits; 01 – 192 bits; 10 – 256 bits và 11 dự phòng để mở rộng sau này nếu có Dii data là dữ liệu vào 128 bits vì giải thuật được chọn là AES 128 bits, mỗi lần tính toán trên 1 dữ liệu 128 bits Đối với AAD các bits 0 sẽ được thêm vào cho đủ 128 bits đối với cả hai trường hợp 64 bits và 96 bits Đối với Message, dữ liệu sẽ được chia thành từng khối 128 bits khác nhau, đối với khối cuối cùng không đủ 128 bits, thì các bits 0 sẽ được thêm vào cho đủ chiều dài Để thực hiện việc cắt dữ liệu cần phải đọc thông tin độ dài của tính hiệu Ngoài ra, các tín hiệu điều khiển từ máy trạng thái được đọc để điều khiển hoạt động của các khối con bên trong Tín hiệu is_decrypt_ena cho biết ta đang thực hiện việc giải mã hay mã hóa xác thực Ngõ ra của module là dữ liệu và địa chỉ để lưu vào fifo out để sau này được đọc ra PCIe Đồng thời đưa ngõ ra các tín hiệu để kích hoạt chuyển trạng thái cho máy trạng thái top level
INC COUNTER DUAL CORE DATA
GFM_MUL T is_last_word done is_last_input
Hình 5.7 Bộ điểu khiển – máy trạng thái gcm_aes_core
Máy trạng thái trên điều khiển cho hoạt động của module gcm_aes_done Máy trạng thái hoạt động với các trạng thái được mô tả như sau:
✓ IDLE trạng thái bắt đầu, trạng thái kế tiếp Encrypt 0 khi có tín hiệu key_ena được điều khiển bởi máy trạng thái top level
✓ Encrypt 0 trạng thái xử lý khóa, trạng thái kế tiếp Init Counter khi có tín hiệu iv_ena được điều khiển bởi máy trạng thái top level
✓ Init Counter trạng thái chờ 1 chu kỳ, sau một chu kỳ tự động chuyển sang trạng thái Encrypt Y0
✓ Encrypt Y0 trạng thái xử lý initial vector xử lý xong bật cờ aes_done chuyển sang trang thái Data Acept
✓ Data Acept trạng thái cho phép đọc dữ liệu của gói bao gồm AAD hoặc Message Nếu đọc AAD cờ AAD được bật từ máy trạng thái top level để chuyển sang trạng thái GFM Mult Nếu đọc Message máy trạng thái top level cờ Message và: o Nếu dữ liệu không phải dữ liệu cuối cùng (~is_last_word) thì chuyển sang trạng thái DUAL_CORE Luồng dữ liệu chuyển sang trạng thái sử dụng dual AES core Đồng thời kích hoạt counter cho gói data 1 o Nếu dữ liệu là dữ liệu cuối cùng (is_last_word) thì chuyển sang trạng thái INC _COUNTER
✓ DUAL_CORE là trạng thái kích hoạt dual AES core
75 o Chờ tín hiệu is_2nd_input từ top level, trạng thái kế tiếp DATA_ACCEPT2 o Kích hoạt AES cho gói data 1
✓ DATA_ACCEPT2 bao gồm: o Kích hoạt counter cho gói data 2 o Ghi nhận gói data thứ 2 và lưu trữ cho việc xử lý song song 2 gói dữ liệu thông qua tín hiệu is_2nd_input từ máy trạng thái top level o Trạng thái kế tiếp INC_COUNTER2
✓ INC_COUNTER2 o Kích hoạt AES cho gói data 2 o Trạng thái kế tiếp M_ENCRYPT2
✓ M_ENCRYPT2 o Trạng thái chờ dữ liệu mã hóa/giải mã hoàn thành cho 2 gói data và lần lượt kích hoạt các cờ để ghi dữ liệu ra fifo out bao gồm: wr_data_flag cho gói data 1 và wr_data_flag2 cho gói data 2 o Khi có dữ liệu wr_data_flag, kích hoạt hàm băm GFM cho gói data
1 o Sau khi có dữ liệu wr_data_flag2 thì chuyển sang trạng thái PRE_GFM2
Thiết kế fifo
Fifo được thiết kế là tập hợp các 128 thanh ghi được gán với địa chỉ tương ứng Chiều dài của fifo là 100 vì trong thực tế độ dài tối đa 1 gói khoảng 1500 byte
Có 2 fifo bao gồm ngõ vào và ngõ ra thực hiện chức năng trữ thông tin trước và sau khi thực hiện AES-GCM 128 bits và giao tiếp với bên ngoài Độ trễ cho mỗi fifo là 1 chu kỳ xung nhịp.
Định dạng gói
Nền tảng FPGA
Các thông số cơ bản của Kit
Bảng 5.1 Các thông số cơ bản của Kit
- Cấu hình cài đặt - JTAG
- Bộ nhớ flash - Bộ nhớ flash 1Gb
- Điện áp nguồn - 3.3 V từ cổng M.2 (M-key)
- Đóng gói - Tản nhiệt tiêu chuẩn, Aller Artix 7 M2
Sơ đồ nguyên lý
Hình 5.11 Sơ đồ nguyên lý của kit
Cấu hình của Kit FPGA bao gồm
- Thiết bị: Xilinx Artix 7 FPGA (XC7A200T-2FBG484I)
- DDR3: 2Gb DDR3 (MT41J128M16JT-125:K TR)
- Bộ nhớ flash onboard 1Gb QSPI cho việc cấu hình FPGA
- Cổng JTAG cho nạp chương trình và debug lỗi
- Bộ tạo xung nhịp 100 MHZ CMOS
- 1 x Trusted Platform Module (AT97SC3205)
- Cổng giao tiếp M.2 M-Key
- Giao tiếp nguồn từ cổng M.2
Các bước thực hiện project trên phần mềm Vivado
- Bước 1: Kết nối cáp Xilinx Platform chuẩn USB đến Aller bằng JTAG cáp Cấp nguồn cho Aller.
- Bước 2: Mở Vivado project và mở target bằng cách nhấp chuột vào “Open Target” trong “Open Hardware Manager” trên mục “Program and Debug” của cửa sổ Flow Navigator Nhấn chọn “Auto Connect”
- Bước 3: Nếu thiết bị được nhận thành công, sau đó nhấn phải chuột vào tên thiết bị
“xc7a200t_0” và chọn “Program Device”
- Bước 4: Trong cửa sổ được mở ra, Vivado tự động chọn chính xác file bitstream file nếu như thiết kế đã được synthesized, implemented và tạo bitstream thành công Nếu cần thiết, nên chỉ định rõ chính xác file bitstream cho FPGA Cuối cùng chọn nút
5.5.1 Tổng hợp và mô phỏng trên VCS Để có thể mô tả đúng chức năng của khối IPSec cần các test case Các khối test case sẽ chứa các dữ liệu đầu vào của hệ thống và các dữ liệu đầu ra mong muốn
Khi chạy mô phỏng, chúng ta sẽ sử dụng các ngõ vào từ các test case và sau đó so sánh giá trị ngõ ra của hệ thống so với các giá trị mong muốn từ test case
Mỗi test case mô phỏng trên VCS được viết dưới dạng test bench có thể quan sát kết quả bằng dạng sóng (waveform) hoặc hiển thị (display) ra định dạng text file
Nếu giá trị ngõ ra của test bench đúng với giá trị mong muốn, hệ thống đúng chức năng (đúng về mặt function)
Nếu giá trị ngõ ra của test bench khác với giá trị mong muốn, hệ thống sai chức năng (sai về mặt function)
Trong đề tài luận văn này, các test case sẽ được tạo ra bằng cách triển khai IPSec với phần mềm trên những thiết bị nhân Linux [90]
Các test case tạo ra bằng phần mềm sẽ bao gồm các dữ liệu cần thiết như sau: + Ngõ vào: Plaintext, Key, IV, AAD
+ Ngõ ra mong đợi: Cipher text, Tag
Trong đó các giá trị được định nghĩa ở chương 3 bao gồm:
- Plaintext: dữ liệu cần mã hóa
- AAD: dữ liệu xác thực bổ sung Định dạng các dữ liệu được tạo ra từ phần mềm như bên dưới bao gồm:
[Số thứ tự] – [Dữ liệu]
0000 là số thứ tự và dữ liệu cần xử lý là: d9 31 32 25 f8 84 06 e5-a5 59 09 c5 af f5 26 9a
Bên dưới là định dạng cho 1 test case được tạo ra từ phần mềm cho quá trình mã hóa: AES GCM Encrypt:
0000 - ca fe ba be fa ce db ad-de ca f8 88 aad:
0000 - fe ed fa ce de ad be ef-fe ed fa ce de ad be ef
Thực hiện tạo testcase cho VCS bằng cách viết 1 script để tự động đọc testcase trên và chuyển sang định dạng phù hợp cho VCS Script được viết bằng ngôn ngữ Tcl [Phục lục 7.1]
Test bench sau khi tạo ra sẽ được chạy và mô phỏng bằng VCS [Phụ lục 7.2], kết quả nhận được sẽ là kết quả sau khi so sánh ngõ ra của thiết kế với ngõ ra mong đợi có sẵn trong testcase Kết quả là đúng nếu ngõ ra bộ so sánh bằng 1 và ngược lại thì kết quả bị sai
File hiển thị kết quả test case ngõ ra: rpt/result_testcase_*.rpt
So sánh Cipher Text và Authentication Tag được tạo ra trong mô phỏng có dạng như sau:
Ví dụ định dạng kết quả của quá trình mô phỏng và debug
1 – Cipher text 1 match with expectation value
1 – Cipher text 2 match with expectation value
1 – Cipher text 3 match with expectation value
0 – Cipher text 4 un-match with expectation value
1 – Authentication TAG match with expectation value
Trong phần mô phỏng, test case được lấy từ tài liệu chuẩn của cisco để đảm bảo tính xác thực của dữ liệu theo link bên dưới: https://tools.ietf.org/html/draft-mcgrew-gcm-test-01
Tham khảo chi tiết phần phụ lục 7.3
- Chuẩn bị ngõ vào: sử dụng tcl script để tạo test bench file [Phục lục 7.1 và 7.2]
- Chép file test_bench vào thư mục thực thi
- Chú ý: tối đa 30 test cases chạy cùng lúc vì giới hạn bởi $fopen limitation
- Câu lệnh tổng hợp và mô phỏng:
- Kiểm tra log đảm bảo không Error
- Kiểm tra trong báo cáo rpt/result_test_case*:
Hình 5.12 Kết quả dạng sóng sau khi chạy VCS
Như dạng sóng (waveform) thể hiện cũng như kiểm tra file ngõ ra sau khi mô phỏng, ta thấy thiết kế đã thực hiện đúng chức năng mã hóa xác thực Ngõ ra của thiết
84 kế được lưu vào fifo bao gồm Cipher Text và Tag đều đúng với ngõ ra mà thiết kế mong đợi
Các giá trị fifo lần lượt tạo ra bằng giá trị mã hóa mong đợi [Hình 4.13]
Thực hiện tương tự cho các testcase có độ dài AAD khác nhau ta có kết quả như bảng 4.2
Với AAD (dữ liệu xác thực bổ sung) theo mục 3.3.2.3 sẽ là dữ liệu có độ dài bits là bội số của 8 và được định dạng theo 2 giá trị 64 bits và 96 bits tùy thuộc vào cấu hình lớp mạng Trong trường hợp này, độ dài AAD không ảnh hưởng tới độ trễ của hệ thống và cần khảo sát hệ thống với các độ dài AAD khác nhau để đảm bảo hệ thống hoạt động đúng chức năng
Với độ dài khác nhau của Key (khóa) bao gồm 128, 192 và 256 bits sẽ tùy thuộc vào mức độ bảo mật yêu cầu của từng trường hợp Trong trường hợp này, độ dài khóa khác nhau sẽ ảnh hưởng tới độ trễ của hệ thống và cần khảo sát với các độ dài khóa khác nhau để đảm bảo hệ thống hoạt động đúng chức năng
Quá trình mô phỏng cho thấy IPSec đúng chức năng với 2 định dạng AAD 64 bits và AAD 96 bits cho các khóa khác nhau [Bảng 4.2]
Bảng 5.2 Bảng kết quả mô phỏng trên VCS
5.5.2.2 Giải mã và xác thực
Hình 4.12 cho các kết quả mã hóa các giá trị Plaintext ngõ vào từ PT1, PT2, PT3 và các ngõ ra tương ứng CT1, CT2, CT3 và Tag
Hình 4.13 là kết quả giải mã các bản mã CT1, CT2, CT3 thành các bản rõ Plaintext PT1, PT2, PT3 và giá trị Tag tương ứng
So sánh các giá trị mã hóa và giải mã cũng như so sánh giá trị Tag, ta kết luận quá trình giải mã, xác thực đúng với chức năng của hệ thống
Một cách tổng quát, kiểm tra giải mã và xác thực bằng cách:
- Lấy kết quả Ciphertext làm plaintext cho ngõ vào
- Giữ nguyên giá trị Key, IV, AAD
- So sánh giá trị Ciphertext và Plaintext
- So sánh giá trị Tag cùng tạo ra trong hai quá trình mã hóa và giải mã
Từ kết quả waveform cho thấy ngõ ra Ciphertext của quá trình giải mã đúng lại bằng giá trị Plaintext của quá trính mã hóa Điều này chứng tỏ quá trình giải mã xác thực đã thành công
5.5.3 Tổng hợp và chạy thử trên FPGA Ý tưởng thực hiện:
+ Tạo thư mục chứa toàn bộ code RTL của thiết kế
+ Tạo module ngõ vào/ngõ ra liên kết tới memory trên FPGA
+ Ghi giá trị ngõ vào memory
+ Module IPSec sẽ tính toán giá trị ngõ ra và lưu vào memory
+ Thực hiện so sánh kết quả ngõ ra của thiết kế và ngõ ra mong đợi
Quá trình thực hiện trên Vivado
+ Add source: gán địa chỉ của thư mục chứa RTL
+ Add constraint: tạo 1 file xdc cho thiết kế, bao gồm xác định CLK, reset
+ Synthesis và kiểm tra kết quả
+ Implementation và kiểm tra kết quả
+ Nạp file Bitstream lên Kit qua cổng JTAG và xem kết quả hiển thị qua giao diện Vivado
Trong đó, bước synthesis thực hiện việc tổng hợp RTL dưới dạng gate level netlist Bước Implementation thực hiện việc place and route cho thiết kế Đồng thời, nó cũng thực hiện việc tối ưu cho thiết kế về mặt hiệu năng như timing, diện tích và công suất, …
File constraint cho thiết kế được tạo như sau: set_property PACKAGE_PIN AB20 [get_ports rstn] set_property IOSTANDARD LVCMOS33 [get_ports rstn] set_property PULLUP true [get_ports rstn]
Hình 5.13 Kết quả mô phỏng giải mã xác thực và so sánh giá trị Tag trên VCS
86 set_property -dict { PACKAGE_PIN "W19" IOSTANDARD LVCMOS33 SLEW FAST} [get_ports { clk }] ; create_clock -name sys_clk -period 10 [get_ports clk] set_false_path -from [get_ports rstn]
File constraint quy định về chu kỳ clock thực hiện, và thực hiện gán chân cho thiết kế tương ứng với chân vật lý của FPGA
Kết quả thực hiện
Kết quả mô phỏng
Trong phần mô phỏng, test case được lấy từ tài liệu chuẩn của cisco để đảm bảo tính xác thực của dữ liệu theo link bên dưới: https://tools.ietf.org/html/draft-mcgrew-gcm-test-01
Tham khảo chi tiết phần phụ lục 7.3
- Chuẩn bị ngõ vào: sử dụng tcl script để tạo test bench file [Phục lục 7.1 và 7.2]
- Chép file test_bench vào thư mục thực thi
- Chú ý: tối đa 30 test cases chạy cùng lúc vì giới hạn bởi $fopen limitation
- Câu lệnh tổng hợp và mô phỏng:
- Kiểm tra log đảm bảo không Error
- Kiểm tra trong báo cáo rpt/result_test_case*:
Hình 5.12 Kết quả dạng sóng sau khi chạy VCS
Như dạng sóng (waveform) thể hiện cũng như kiểm tra file ngõ ra sau khi mô phỏng, ta thấy thiết kế đã thực hiện đúng chức năng mã hóa xác thực Ngõ ra của thiết
84 kế được lưu vào fifo bao gồm Cipher Text và Tag đều đúng với ngõ ra mà thiết kế mong đợi
Các giá trị fifo lần lượt tạo ra bằng giá trị mã hóa mong đợi [Hình 4.13]
Thực hiện tương tự cho các testcase có độ dài AAD khác nhau ta có kết quả như bảng 4.2
Với AAD (dữ liệu xác thực bổ sung) theo mục 3.3.2.3 sẽ là dữ liệu có độ dài bits là bội số của 8 và được định dạng theo 2 giá trị 64 bits và 96 bits tùy thuộc vào cấu hình lớp mạng Trong trường hợp này, độ dài AAD không ảnh hưởng tới độ trễ của hệ thống và cần khảo sát hệ thống với các độ dài AAD khác nhau để đảm bảo hệ thống hoạt động đúng chức năng
Với độ dài khác nhau của Key (khóa) bao gồm 128, 192 và 256 bits sẽ tùy thuộc vào mức độ bảo mật yêu cầu của từng trường hợp Trong trường hợp này, độ dài khóa khác nhau sẽ ảnh hưởng tới độ trễ của hệ thống và cần khảo sát với các độ dài khóa khác nhau để đảm bảo hệ thống hoạt động đúng chức năng
Quá trình mô phỏng cho thấy IPSec đúng chức năng với 2 định dạng AAD 64 bits và AAD 96 bits cho các khóa khác nhau [Bảng 4.2]
Bảng 5.2 Bảng kết quả mô phỏng trên VCS
5.5.2.2 Giải mã và xác thực
Hình 4.12 cho các kết quả mã hóa các giá trị Plaintext ngõ vào từ PT1, PT2, PT3 và các ngõ ra tương ứng CT1, CT2, CT3 và Tag
Hình 4.13 là kết quả giải mã các bản mã CT1, CT2, CT3 thành các bản rõ Plaintext PT1, PT2, PT3 và giá trị Tag tương ứng
So sánh các giá trị mã hóa và giải mã cũng như so sánh giá trị Tag, ta kết luận quá trình giải mã, xác thực đúng với chức năng của hệ thống
Một cách tổng quát, kiểm tra giải mã và xác thực bằng cách:
- Lấy kết quả Ciphertext làm plaintext cho ngõ vào
- Giữ nguyên giá trị Key, IV, AAD
- So sánh giá trị Ciphertext và Plaintext
- So sánh giá trị Tag cùng tạo ra trong hai quá trình mã hóa và giải mã
Từ kết quả waveform cho thấy ngõ ra Ciphertext của quá trình giải mã đúng lại bằng giá trị Plaintext của quá trính mã hóa Điều này chứng tỏ quá trình giải mã xác thực đã thành công
5.5.3 Tổng hợp và chạy thử trên FPGA Ý tưởng thực hiện:
+ Tạo thư mục chứa toàn bộ code RTL của thiết kế
+ Tạo module ngõ vào/ngõ ra liên kết tới memory trên FPGA
+ Ghi giá trị ngõ vào memory
+ Module IPSec sẽ tính toán giá trị ngõ ra và lưu vào memory
+ Thực hiện so sánh kết quả ngõ ra của thiết kế và ngõ ra mong đợi
Quá trình thực hiện trên Vivado
+ Add source: gán địa chỉ của thư mục chứa RTL
+ Add constraint: tạo 1 file xdc cho thiết kế, bao gồm xác định CLK, reset
+ Synthesis và kiểm tra kết quả
+ Implementation và kiểm tra kết quả
+ Nạp file Bitstream lên Kit qua cổng JTAG và xem kết quả hiển thị qua giao diện Vivado
Trong đó, bước synthesis thực hiện việc tổng hợp RTL dưới dạng gate level netlist Bước Implementation thực hiện việc place and route cho thiết kế Đồng thời, nó cũng thực hiện việc tối ưu cho thiết kế về mặt hiệu năng như timing, diện tích và công suất, …
File constraint cho thiết kế được tạo như sau: set_property PACKAGE_PIN AB20 [get_ports rstn] set_property IOSTANDARD LVCMOS33 [get_ports rstn] set_property PULLUP true [get_ports rstn]
Hình 5.13 Kết quả mô phỏng giải mã xác thực và so sánh giá trị Tag trên VCS
86 set_property -dict { PACKAGE_PIN "W19" IOSTANDARD LVCMOS33 SLEW FAST} [get_ports { clk }] ; create_clock -name sys_clk -period 10 [get_ports clk] set_false_path -from [get_ports rstn]
File constraint quy định về chu kỳ clock thực hiện, và thực hiện gán chân cho thiết kế tương ứng với chân vật lý của FPGA
Sau khi thực hiện, tiến hành kiểm tra Messages sau khi synthesis và inplementation design Kết quả cho thấy không có Error xuất hiện được thể hiện như hình bên dưới Như vậy, có thể kết luận quá trình thực hiện synthesis và implementation design trên phần mềm Vivado đã hoàn thành, có thể tiếp tục kiểm tra report để đánh giá và tiến hành nạp bitstream trên Kit
Hình 5.14 Kết quả Message trên Vivado
Hình 5.15 Utilization sau khi synthesis trên FPGA
87 Qua biểu đồ, và bảng thống kê ultilization, ta thấy thiết kế được thực hiện khá tốt trên dòng FPGA này về mặt tài nguyên Kết quả cho thấy, tỉ lệ phần trăm sử dụng tài nguyên của thiết kế là phù hợp, với tỉ lệ không quá lớn về diện tích sau khi đươc tối ưu với khoảng 14.38% LUT và 15.67% FF Với tỉ lệ này, FPGA được chọn, dễ dàng có thể được thực hiện kể cả khi kết nối với module PCIe và mở rộng cũng như nâng cấp sau này để tăng thông lượng cho thiết kế Đồng thời, việc tỉ lệ tăng tài nguyên sử dụng sau bước synthesis và implementation thay đổi là không nhiều, điều này chứng minh rằng, phần mềm Vivado không phải thực hiện việc tối ưu quá nhiều Về cơ bản, các kết nối logic trong việc thiết kế, và thể hiện RTL bằng verilog là phù hợp Để đạt được điều này, coding style là quan trọng, cần phải giảm tải việc các logic loop không cần thiết, và đồng thời không để data path quá dài, fanout quá lớn Hơn nữa, việc sử dụng reset bất đồng bộ cũng là một ưu thế, vì tín hiệu reset được build độc lập với data path, đi thẳng đến từng chân clear của flip flop, điều này giúp thiết kế dễ dàng đạt được đáp ứng nhanh hơn
Hình 5.16 Kết quả công suất trên FPGA Đánh giá về mặt công suất, thiết kế tiêu tốn mức năng lượng không quá lớn với khoảng dưới 400 mW Thiết kế không đặt yêu cầu quan trọng cho công suất tiêu thụ vì mục đích của đề tài áp dụng cho router, sử dụng thông qua nguồn điện lưới Tuy vậy, với mức công suất như trên là hoàn toàn chấp nhận được Công suât tiêu thụ vừa phải giúp cũng giúp cho nhiệt độ của FPGA hoạt động không quá cao khoảng 26 độ, nằm trong khoảng 0 -90 độ mà nhà sản xuất đặt ra để FPGA hoạt động ổn định và chính xác
88 Nhìn chung, hiệu năng về công suất tiêu thụ của thiết kế được đáng giá ở mức trung bình (medium level)
Hình 5.17 Report timing trên FPGA
Phân tích timing là một phương pháp kiểm tra độ trễ (delay) của một thiết kế ứng với điều kiện hoạt động khác nhau trong thực tế của mạch, thông thường là điều kiện tệ nhất Phương pháp này xem xét độ trễ của từng thành phần logic trong mạch và thông qua các phương pháp tính toán để xác định được mạch có đảm bảo được về mặt timing hay không Phương pháp này không kiểm tra được tính đúng đắn về mặt logic của mạch. Ưu điểm của STA là có thể thực hiện nhanh và triệt để vì không cần chạy các vector để thực hiện việc mô phỏng (DTA) Nó có thể kiểm tra tất cả các đường có liên quan trong thiết kế và xác định đượng các đường nào không thỏa yêu cầu về timing.
Setup time: Là thời gian mà dữ liệu cần được giữ ổn định và không được thay đổi trước cạnh lên của clock.
Hold time: Là thời gian mà dữ liệu cần được giữ ổn định và không được thay đổi sau cạnh lên của clock. Đối với bất kỳ thiết kế nào việc MET timing là yêu cầu bắt buộc vô cùng quan trọng, nó quyết định việc thiết kế có thực hiện được đúng function đặt ra trong thực tế hay không Theo kết quả thu được sau khi tính toán STA như hình trên, thiết kế đã thỏa được điều kiện ràng buộc về timing
Sau đây là 2 trường hợp timing tương ứng cho setup và hold của thiết kế
Hình 5.18 Báo cáo setup timing trên FPGA
Hình 5.19 Báo cáo hold timing trên FPGA
Hình 5.20 Layout của thiết kế sau khi implementation trên FPGA
Hình 5.21 Sơ đồ schematic của thiết kế trên FPGA
Tiến hành đánh giá hiệu năng của AES-GCM dual core thông qua việc khảo sát độ trễ (latency) của thiết kế đồng thời đánh giá thông lượng (throughput) của thiết kế thông qua các gói dữ liệu có độ dài khác nhau trên các khóa khác nhau: 128 bits, 192 bits và
Tiến hành so sánh hiệu năng của AES-GCM sử dụng dual core so với giải thuật sử dụng single core đã phát triển trước đó về mặt độ trễ, thông lượng, diện tích và công suất tiêu thụ Từ đó rút ra được kết luận về sự cải tiến của hệ thống
5.5.5.1 Phương pháp đo độ trễ và tính toán thông lượng
5.5.5.1.1 Phương pháp đo độ trễ (latency) Độ trễ của hệ thống được đo bởi công thức bên dưới:
𝑠𝑡𝑎𝑟𝑡 𝑡𝑖𝑚𝑒 (𝑛𝑠): là mốc thời gian bắt đầu kích hoạt hệ thống thực hiện giải mã hoặc mã hóa
𝑒𝑛𝑑 𝑡𝑖𝑚𝑒 (𝑛𝑠): là mốc thời gian kết thúc việc xử lý thực hiện giải mã hoặc mã hóa của gói tin cuối cùng
𝑐𝑦𝑐𝑙𝑒 𝑐𝑜𝑢𝑛𝑡 (𝑐𝑦𝑐𝑙𝑒): số lượng chu kỳ trong khoảng thời gian tính toán
Phân tích hiệu năng
Tiến hành đánh giá hiệu năng của AES-GCM dual core thông qua việc khảo sát độ trễ (latency) của thiết kế đồng thời đánh giá thông lượng (throughput) của thiết kế thông qua các gói dữ liệu có độ dài khác nhau trên các khóa khác nhau: 128 bits, 192 bits và
Tiến hành so sánh hiệu năng của AES-GCM sử dụng dual core so với giải thuật sử dụng single core đã phát triển trước đó về mặt độ trễ, thông lượng, diện tích và công suất tiêu thụ Từ đó rút ra được kết luận về sự cải tiến của hệ thống
5.5.5.1 Phương pháp đo độ trễ và tính toán thông lượng
5.5.5.1.1 Phương pháp đo độ trễ (latency) Độ trễ của hệ thống được đo bởi công thức bên dưới:
𝑠𝑡𝑎𝑟𝑡 𝑡𝑖𝑚𝑒 (𝑛𝑠): là mốc thời gian bắt đầu kích hoạt hệ thống thực hiện giải mã hoặc mã hóa
𝑒𝑛𝑑 𝑡𝑖𝑚𝑒 (𝑛𝑠): là mốc thời gian kết thúc việc xử lý thực hiện giải mã hoặc mã hóa của gói tin cuối cùng
𝑐𝑦𝑐𝑙𝑒 𝑐𝑜𝑢𝑛𝑡 (𝑐𝑦𝑐𝑙𝑒): số lượng chu kỳ trong khoảng thời gian tính toán
Bằng công thức trên, ta có thể tính toán được độ trễ và số lượng chu kỳ cần thiết để thực hiện gói tin với các độ dài khác nhau
5.5.5.1.2 Phương pháp tính toán thông lượng (throughput)
Thông lượng của hệ thống được đo bởi công thức bên dưới:
Với N – kích thước của packet, M – số lượng chu kì cần thiết để xử lý packet, F – tần số xung clock tối đa của thiết kế
5.5.5.2 Cải thiện hiệu năng về mặt độ trễ (latency) của hệ thống
Tiến hành khảo sát độ trễ (latency) của hệ thống sử dụng dual core so với giải thuật sử dụng single core với các độ dài khác nhau của khóa 128 bits, 192 bits và 256 bits Các bảng bên dưới cho thấy độ trễ và số chu kì cần thiết để xử lý gói tin
Bảng 5.3 Bảng khảo sát độ trễ và số chu kỳ của các gói dữ liệu trên khóa 128 bits
AES-GCM single core AES-GCM dual core
1024 22435 1603 16611 1187 25.96 Đối với khóa 128 bits, số lượng chu kỳ để xử lý các gói tin tăng dần do kích thước gói tin lớn Với cùng 1 gói dữ liệu 64 bytes, giải thuật AES-GCM dual core giảm từ 149 chu kỳ xuống còn 123 chu kỳ xử lý, cải thiện được 17.42% độ trễ qua đó giúp tốc độ xử lý nhanh hơn [Bảng 4.4] Độ dài gói dữ liệu tăng lên, mức cải thiện độ trễ của giải thuật AES-GCM dual core càng lớn, tăng tuyến tính và đạt giá trị 25.9% cho gói 1024 bytes [Bảng 4.4]
Bảng 5.4 Bảng khảo sát độ trễ và số chu kỳ của các gói dữ liệu trên khóa 192 bits
AES-GCM single core AES-GCM dual core
1024 24283 1735 17563 1255 27.67 Đối với khóa 128 bits, số lượng chu kỳ để xử lý các gói tin tăng dần do kích thước gói tin lớn Với cùng 1 gói dữ liệu 64 bytes, giải thuật AES-GCM dual core giảm từ 175 chu kỳ xuống còn 145 chu kỳ xử lý, cải thiện được 17.19% độ trễ qua đó giúp tốc độ xử lý nhanh hơn [Bảng 4.5]
Với cùng kích thước gói dữ liệu, độ trễ của việc xử lý trên khóa 192 bits sẽ chậm hơn so với khóa 128 bits do số vòng trong giải thuật AES khác nhau cho các khóa khác nhau Độ dài gói dữ liệu tăng lên, mức cải thiện độ trễ của giải thuật AES-GCM dual core càng lớn, tăng tuyến tính và đạt giá trị 27.67% cho gói 1024 bytes [Bảng 4.5]
Bảng 5.5 Bảng khảo sát độ trễ và số chu kỳ của các gói dữ liệu trên khóa 256 bits
AES-GCM single core AES-GCM dual core
Theo bảng 4.6, độ trễ được cải thiện lên đến 29.15% với gói dữ liệu 1024 bytes Đồ thị 4.24 cho thấy độ trễ tăng dần khi số lượng bytes trong gói dữ liệu đưa vào tăng lên trên khóa 128 bits
Hình 5.22 Độ trễ và độ dài gói dữ liệu đầu vào
Theo hình 4.25, so với phương pháp sử dụng single core AES, trên khóa 128 bits, độ trễ đã cải thiện đáng kể giảm 17.42% cho gói 64 bytes và tăng dần lên 25.96% cho gói 1024 bytes
Hình 5.23 Tỷ lệ độ giảm latency theo gói bytes của khóa 128 bit
Theo hình 4.25, độ giảm của latency cũng tương ứng và đồng đều cho các gói dữ liệu với khóa 128, 192 và 256 bits
Hình 5.24 Độ giảm latency theo các khóa khác nhau theo gói bytes
Tất cả các gói dữ liệu xử lý với các khóa khác nhau đều cho mức độ tối ưu độ trễ gần như nhau và tăng nếu chiều dài khóa tăng [Hình 4.26]
5.5.5.3 Thông lượng sau khi cải tiến và hiệu suất
Sau khi tiến hành khảo sát độ trễ và tính toán thông lượng của hệ thống sử dụng dual core so với giải thuật sử dụng single core với các độ dài khác nhau của khóa 128, 192,
Thông lượng được tính toán dựa trên tần số đã nạp xuống kit FPGA, F0MHz
Khảo sát các khóa và các gói dữ liệu khác nhau thu được thông lượng cho từng dữ liệu tương ứng
Bảng 5.6 Bảng khảo sát thông lượng và số chu kỳ của các gói dữ liệu trên khóa 128 bit
AES-GCM single core AES-GCM dual core Throughput improve Cycle (%) count
Bảng 5.7 Bảng khảo sát thông lượng và số chu kỳ của các gói dữ liệu trên khóa 192 bit
AES-GCM single core AES-GCM dual core Throughput improve (%) Cycle count
Bảng 5.8 Bảng khảo sát thông lượng và số chu kỳ của các gói dữ liệu trên khóa 256 bit
AES-GCM single core AES-GCM dual core Throughput improve (%) Cycle count
Bảng 4.6, bảng 4.7 và bảng 4.8 cho thấy xu hướng thông lượng tăng dần tỷ lệ thuận với độ dài gói tin xử lý Đối với khóa 128 bits, thông lượng có thể đạt được 0.69Gbps tăng 25.95% so với phiên bản trước đó Đối với khóa 192 bits, thông lượng đạt 0.65Gbps tăng 27.67% so với phiên bản trước đó Đối với khóa 256 bits, thông lượng đạt 0.62Gbps tăng 29.14% so với phiên bản trước đó
97 Hình 4.27 cho thấy thông lượng tăng khi tăng độ dài khối dữ liệu ngõ vào cho khóa 128 bits
Hình 5.25 Thông lượng đạt được trên các gói dữ liệu khác nhau cho khóa 128 bit
Hình 5.26 Tỷ lệ độ tăng thông lượng theo gói bytes của khóa 128 bit
Hình 4.28 biển thị độ tăng thông lượng của hệ thống sử dụng dual core so với single core, với ngõ vào 1024 bytes, có thể cải thiện 25.95% thông lượng
Bảng 4.10 so sánh số lượng slices và công suất trong 2 phiên bản
Bảng 5.9 So sánh số lượng slices và công suất tiêu thụ trên FPGA
AES-GCM single core AES-GCM dual core Slices Power (W) Slices Power (W)
Hình 5.27 So sánh về mặt slices giữa 2 phiên bản trên FPGA
Hình 5.28 So sánh về mặt công suất (W) giữa 2 phiên bản trên FPGA
Từ đó, ta rút ra được hiệu suất so sánh dựa trên TPS (Throughput Per Slice) và TPP (Throughput Per Power) cho 2 thiết kế [Bảng 4.11]
Bảng 5.10 So sánh hiệu suất thiết kế theo slices và công suất tiêu thụ
AES-GCM single core AES-GCM dual core TPS
99 Hiệu suất về mặt slices tức diện tích cũng như công suất tiêu thụ của giải thuật sử dụng dual core lớn hơn và tăng tỷ lệ thuận với độ dài gói dữ liệu Đối với gói 1024 bytes, hiệu suất về mặt thông lượng tăng xấp xỉ 28%, và hiệu suất về mặt công suất tăng xấp xỉ 26% [Bảng 4.11]
Hình 4.29 và hình 4.30 mô tả sự cải tiến hiệu năng về mặt diện tích và công suất của hai giải thuật
Hình 5.29 So sánh hiệu suất về mặt slices trên FPGA
Hình 5.30 So sánh hiệu suất về mặt công suất trên FPGA
Hình 4.33 và hình 4.34 cho thấy hiệu suất về slices lẫn công suất của giải thuật AES- GCM dual core đều lớn hơn giải thuật trước đó (single-core) cho thấy sự cải tiến về mặt giải thuật của hệ thống
Packet (byte) single core dual core
Packet (byte) single core dual core
100 Dựa vào bảng 4.6 ta có thông lượng 0.69Gbps cho giải thuật dual core
Sử dụng giá trị slices 7339 từ quá trình synthesis chỉ bao gồm block aes_gcm_core, sau đó tiến hành so sánh giá trị thông lượng, TPS (Throughput Per Slice) và TPF (Throughput Per Frequency) với các kết quả của [91], [92], [93] ta được bảng 4.11
Bảng 5.11 So sánh thông lượng của thiết kế AES-GCM hiện tại với các đề tài khác Đề tài
Hướng phát triển
Dựa trên các kết quả đạt được của đề tài, hướng phát triển đặt ra khá rõ ràng cho đề tài:
+ Theo mô hình Lookaside kết hợp với ARM CPU để xây dựng một router bảo mật hoàn chỉnh có chức năng IPSec Trong đó, khối AES-GCM thực hiện trên FPGA đóng vai trò đảm bảo chức năng IPSec và tăng tốc trong việc mã hóa xác thực và giải mã xác thực dữ liệu
+ Đề tài có thể được tối ưu hóa hơn nữa về mặt tần số và các hiệu năng khác để tăng thông lượng cho thiết kế thông qua việc tối ưu máy trạng thái block/top cũng như việc ứng dụng kỹ thuật pipeline để giảm độ trễ của thiết kế
+ Bộ GCM có thể được kết hợp thêm các giải thuật khác để tăng tính linh hoạt khi xây dựng router IPSec
+ Trong tương lai xa hơn, có thể tiến đến việc thực hiện thành công mô hình flow-through cho IPSec router hoàn chỉnh
+ Hiện nay, thông lượng của một IP có chức năng mã hóa/giải mã như AES-GCM đang ngày càng gia tăng, lên đến hàng Gigabit bằng việc áp dụng các giải thuật mới, tối ưu thông lượng do đó cần các phương án tăng thông lượng theo cấp số nhân để bắt kịp với xu hướng hiện nay
[1] C M Kozierok, "IPSec Overview, History and Standards," The TCP/IP Guide, 20 9 2005 [Online] Available: http://www.tcpipguide.com/free/t_IPSecOverviewHistoryandStandards.htm
[2] T T A Tuan, "Giao thức IPSEC trong lĩnh vực an toàn thông tin," Viblo, 27 11 2017 [Online] Available: https://viblo.asia/p/giao-thuc-IPSec-trong-linh-vuc-an-toan-thong- tin-oOVlYdPQZ8W
[3] L S Cardoso, "Internet security and critical infrastructures," 2004 [Online] Available: http://www.eurescom.de/message/messagesep2004/Internetsecurityandcritical infrastructure.asp
[4] V M I a R D Williams, "Taxonomies of attacks and vulnerabilities in computer systems," IEEE Communications Surveys & Tutorials, vol 10, no 1, pp 6-19, 2008
[5] R L Richardson, Computer Security, CSI survey 2007 : the 12th annual computer crime and security survey, San Francisco, Calif: Computer Security Institute, 2007
[6] T Wilson, "Targeted attacks on the rise," DarkReading.com, 18 4 2007 [Online] Available: http://www.darkreading.com/security/perimeter/showArticle.jhtml?articleID 8804471
[7] CERT, “Overview of attack trends,” CERT? Coordination Center, Carnegie Mellon University, Tech Rep., 2002
[8] L A Gordon and I Computer Security, “2004 csi/fbi computer crime and security survey,” 2004, (San Francisco, Calif.) [Online]
Available: http://i.cmpnet.com/gocsi/db%5Farea/pdfs/fbi/FBI2004.pdf
[9] T Grandison and M Sloman, “A survey of trust in internet applications,” IEEE Communications Surveys & Tutorials, vol 3, no 4, pp 2–16, 2000
[10] A Chakrabarti and G Manimaran, “Internet infrastructure security: a taxonomy,” Network, IEEE, vol 16, no 6, pp 13–21, 2002
[11] M Al-Kuwaiti, N Kyriakopoulos, and S Hussein, “A comparative analysis of network dependability, fault-tolerance, reliability, security, and survivability,” IEEE Communications Surveys & Tutorials, vol 11, no 2, pp 106–124, 2009
[12] C Kaufman, R Perlman, and M Speciner, Network security : private communication in a public world, 2nd ed., ser Prentice Hall series in computer networking and distributed systems Upper Saddle River, N.J.: Prentice Hall PTR, 2002
103 [13] Y Chen and H Chen, “Neuronet: An adaptive infrastructure for network security,” Journal of Information, Intelligence and Knowledge, vol 1, no 2, pp 143–168, 2009
[14] S Kent and K Seo, “Rfc 4301:security architecture for the internet protocol,” 2005 [Online] Available: http://www.rfc-editor.org/rfc/rfc4301.txt
[15] A Callado, C K G Szab, B P Gero, J Kelner, S Fernandes, and D Sadok, “A survey on internet traffic identification,” IEEE Communications Surveys & Tutorials, vol 11, no
[16] P Li, M Salour, and X Su, “A survey of internet worn detection and containment,” IEEE Communications Surveys & Tutorials, vol 10, no 1, pp 20–35, 2008
[17] P.-C Lin, Z.-X Li, Y.-D Lin, Y.-C Lai, and F C Lin, “Profiling and accelerating string matching algorithms in three network content security applications,” IEEE Communications Surveys & Tutorials, vol 8, no 2, pp 24–37, 2006
[18] Y.-D Lin, H.-Y Wei, and S.-T Yu, “Building an integrated security gateway: Mechanisms, performance evaluations, implementations, and research issues,” IEEE Communications Surveys & Tutorials, vol 4, no 1, pp 2–15, 2002
[19] IPSec performance, OpenWRT project webpage (accessed 17.05.16), https://wiki.openwrt.org/doc/howto/vpn.IPSec.performance
[20] Mateusz Korona, Krzysztof Showron, Mateusz Trzepinski, Mariusz Rawski (2017),
“Thực hiện bộ giao thức IPSec cho mạng multigigabits trên FPGA”, Poland
[21] Klassert Steffen, 2010, "Parallelizing IPSec", https://www.strongswan.org/docs/Steffen_Klassert_Parallelizing_IPSec pdf
[22] Intel Corporation, 2012, "Fast Multi-buffer IPSec Implementations on Intel Architecture Processors"
[23] Cisco Systems, Inc., 2008, "Cisco IPSec and SSL VPN Solutions Portfolio"
[24] Juniper Networks, 2015, "Security Products Comparison Chart"
[25] Helion Technology Limited, "IPSec ESP IP Core for FPGA - Product Brief", (accessed 19.05.16), http://www.heliontech.com/IPSec.htm
[26] Sangjin Han, Keon Jang, Kyoung Soo Park, Sue Moon, 2010, "PacketShader: a GPU- accelerated Software Router", http://shader.kaist.edu/packetshader
[27] Krawczyk H., Bellare M., Canetti R., RFC 2104, 1997, "HMAC: Keyed- Hashing for Message Authentication"
104 [28] Eastlake D 3rd, Jones P., RFC 3174, 2001, "US Secure Hash Algorithm 1 (SHA1)"
[29] Eun-Hee Lee, Seok-Man Kim, Chungbuk National University, "Design of High Speed SHA-1 Architecture Using Unfolded Pipeline for Biomedical Applications", (accessed 26.05.15), http://www.iiis.org/CDs2009/CD2009SCI/SCI2009/PapersPdf/S231IM pdf
[30] Wollinger, T., Guajardo, J., and Paar, C.: ‘Security on FPGAs: state of the art implementations and attacks’, ACM Trans Embed Comput Syst., 2004, 3, pp 534–574 [31] Schneier, B.: ‘Applied cryptography’ (John Wiley & Sons, 2nd ed 1996)
[32] McLoone, M., and McCanny, J.V.: ‘High-performance FPGA implementation of DES using novel method for implementing the key schedule’, IEE Proc Circ Dev Syst., 2003,
[33] Rouvroy, G., Standaert, F.-X., Quisquater, J.-J., and Legat, J.-D.: ‘Efficient uses of FPGAs for implementations of DES and its experimental linear cryptanalysis’, IEEE Trans Comput., 2003, 52 (4), pp 473–482
[34] Chodowiec, P., Khuon, P., and Gaj, K.: ‘Fast implementation of secret-key block ciphers using mixed inner- and outer-round pipelining’ Proc 2001 ACM/SIGDA 9th Int Symp on Field Programmable Gate Arrays, FPGA 2001, Monterey CA, USA, February 2001, pp 94–102
[35] Gaj, K., and Chodowiec, P.: ‘Fast implementation and fair comparison of the final candidates for advanced encryption standard using field programmable gate arrays’ Proc Topics in Cryptology—CT-RSA 2001, The Cryptographer’s Track at RSA Conf 2001, San Francisco, CA, USA, April 2001 pp 84–99
[36] Dandalis, A., Prasanna, V.K, and Rolim, J.D.P.: ‘A comparative study of performance of AES final candidates using FPGAs’ Proc Workshop on Cryptographic Hardware and Embedded Systems, CHES 2000, Worcester, MA, USA, August 2000, pp 125–140
[37] Elbirt, A.J., Yip, W., Chetwynd, B., and Paar, C.: ‘An FPGA- based performance evaluation of the AES block cipher candidate algorithm finalists’, IEEE Trans VLSI Syst., 2001, 9 (4), pp 545–557
[38] Elbirt, A.J., Yip, W., Chetwynd, B., and Paar, C.: ‘An FPGA implementation and performance evaluation of the AES block cipher candidate algorithm finalists’ Proc Third Advanced Encryption Conf., AES3, New York, NY, USA, April 2000, pp 13–27
[39] Gaj, K., and Chodowiec, P.: ‘Comparison of the hardware performance of the AES candidates using reconfigurable hardware’ Proc 3rd Advanced Encryption Standard Candidate Conf., AES3, New York, NY, USA, April 2000, pp 40–54, http://csrc.nist.gov/CryptoToolkit/aes/round2/conf3/papers/ AES3Proceedings.pdf accessed June 2005
105 [40] Hodjat, A., and Verbauwhede, I.: ‘A 21.54 Gbits/s fully pipelined AES processor on FPGA’ Proc 12th Annual IEEE Symp Field- Programmable Custom Computing Machines, FCCM’04, Napa, CA, USA, April 2004, pp 308–309
[41] Ja¨rvinen, K., Tommiska, M., and Skytta¨, J.: ‘A fully pipelined memoryless 17.8 Gbps AES-128 encryptor’ Proc ACM/SIGDA 11th ACM Int Symp on Field-Programmable Gate Arrays, FPGA 2003, Monterey, CA, USA, February 2003, pp 207–215
[42] Labbe´, A., and Pe´rez, A.: ‘AES implementation on FPGA: time—flexibility tradeoff’ Proc 12th Int Conf Field- Programmable Logic and its Applications, FPL 2002, Montpellier, France, September 2002, pp 836–844
[43] McLoone, M., and McCanny, J.V.: ‘High performance single- chip FPGA Rijndael algorithm implementation’ Proc Work- shop on Cryptographic Hardware and Embedded Systems, CHES 2001, Paris, France, May 2001, pp 65–76
[44] McLoone, M., and McCanny, J.V.: ‘Rijndael FPGA implemen- tation utilizing look-up tables’ Proc 2001 IEEE Workshop on Signal Processing Systems, SIPS’01, Antwerp, Belgium, September 2001, pp 349–360
[45] McLoone, M., and McCanny, J.V.: ‘Single-chip FPGA imple- mentation of the advanced encryption standard algorithm’ Proc 11th Int Conf Field-Programmable Logic and Applications, FPL 2001, Belfast, Northern Ireland, UK, August 2001, pp 152–161
[46] Pramstaller, N., and Wolkerstorfer, J.: ‘A universal and efficient AES co-processor for field programmable logic arrays’ Proc 14th Int Conf Field-Programmable Logic and its Applications, FPL 2004, Antwerp, Belgium, August–September 2004, pp 565–574
[47] Rodrı´quez-Henrı´quez, F., Saqib, N.A., and Dı´az-Pe´rez, A.: ‘4.2 Gbit/s single- chip FPGA implementation of AES algorithm’, Electr Lett., 2003, 39 (15), pp 1115–
[48] Rouvroy, G., Standaert, F.-X., Quisquater, J.-J., and Legat, J.-D.: ‘Compact and efficient encryption/decryption module for FPGA implementation of the AES Rijndael very well suited for small embedded applications’ Proc Int Conf Information Technology: Coding and Computing, ITCC’04, Las Vegas, NV, USA, April 2004, Vol
[49] Saggese, G.P., Mazzeo, A., Mazzocca, N., and Strollo, A.G.M.: ‘An FPGA-based performance analysis of the unrolling, tiling, and pipelining of the AES algorithm’ Proc 13th Int Conf Field Programmable Logic and Applications, FPL 2003, Lisbon, Portugal, September 2003, pp 292–302
[50] Saqib, N.A., Rodrı´quez-Henrı´quez, F., and Dı´az-Pe´rez, A.: ‘AES algorithm implementation—an efficient approach for sequential and pipeline architectures’ Proc 4th Mexican Int Computer Science, ENC 2003, Tlaxcala, Mexico, September 2003, pp 126–130
106 [51] Standaert, F.-X., Rouvroy, G., Quisquater, J.-J., and Legat, J.-D.: ‘A methodology to implement block ciphers in reconfigurable hardware and its application to fast and compact AES RIJNDAEL’ Proc ACM/SIGDA 11th ACM Int Symp Field- Programmable Gate Arrays, FPGA 2003, Monterey, CA, USA, February 2003, pp 216–
[52] Standaert, F.-X., Rouvroy, G., Quisquater, J.-J., and Legat, J.-D.: ‘Efficient implementation of Rijndael encryption in reconfigurable hardware: improvements and design tradeoffs’ Proc Workshop on Cryptographic Hardware and Embedded Systems, CHES 2003, Cologne, Germany, September 2003, pp 334–350
[53] Wang, S.-S., and Ni, W.-S.: ‘An efficient FPGA implementation of Advanced Encryption Standard algorithm’ Proc 2004 IEEE Int Symp on Circuits and Systems, ISCAS’04, Vancouver, British Columbia, Canada, May 2004, pp 597–600
[54] Weaver, N., and Wawrzynek, J.: ‘High performance, compact AES implementations in Xilinx FPGAs’, 27 September 2002, http://www.cs.berkeley.edu/nweaver/sfra/rijndael.pdf, accessed June 2005
[55] Zambreno, J., Nguyen, D., and Choudhary, A.: ‘Exploring area/ delay tradeoffs in an AES FPGA implementation’ Proc 14th Int Conf Field-Programmable Logic and its Applications, FPL 2004, Antwerp, Belgium, August–September 2004, pp 575–585
[56] Zhang, X., and Parhi, K.K.: ‘High-Speed VLSI architectures for the AES algorithm’, IEEE Trans VLSI Syst., 2004, 12 (9), pp 957–967
[57] Rivest, R.L.: ‘The MD5 message-digest algorithm’, RFC 1321 (MIT Laboratory for Computer Science and RSA Data Security, Inc., 1992)
Tcl tạo test bench
# set fr [open aad64b_key128b r] set input [read $fr] set data [split $input "\n"] close $fr set i 1 set con_pt 0 set con_k 0 set con_iv 0 set con_aad 0 set con_ct 0 set con_tag 0 set lk "" foreach line $data { if {$line != ""} { if {[regexp "test case :" $line]} { set i 1; set lk ""; set con_pt 0 set con_k 0 set con_iv 0 set con_aad 0 set con_ct 0 set con_tag 0 set tcs [lindex $line 4] array unset pt array unset ct
#if {[regexp "data length:" $line]} { set dtl 60 binary scan [binary format I $dtl] B32 dtlb
#} if {[regexp "Plaintext:" $line]} {set con_pt 1} if {[regexp "key:" $line]} {set con_pt 0; set con_k 1; set i 1} if {[regexp "iv:" $line]} {set con_k 0; set con_iv 1; set i 1} if {[regexp "aad:" $line]} {set con_iv 0; set con_aad 1; set i 1} if {[regexp "Ciphertext:" $line]} {set con_aad 0; set con_ct 1; set i 1} if {[regexp "Tag:" $line]} {set con_ct 0; set con_tag 1; set i 1} if {![regexp "Plaintext:" $line] && $con_pt == 1} { set pt($i) $line incr i
} if {![regexp "key:" $line] && $con_k == 1} { set lk [concat $lk $line]
} if {![regexp "iv:" $line] && $con_iv == 1} { set iv $line
} if {![regexp "aad:" $line] && $con_aad == 1} { set aad $line
111 } if {![regexp "Ciphertext:" $line] && $con_ct == 1} { set ct($i) $line incr i
} if {![regexp "Tag:" $line] && $con_tag == 1} { set tg $line
# - - if {$con_tag == 1} { if {[expr $dtl%16] == 0} { set dtl_bytes [expr int($dtl/16) ]
} else { set dtl_bytes [expr int($dtl/16) + 1]
} set fw [open /testbench/key128_aad64/key128_aad64_testcase_${tcs}.v w] puts $fw "module key128_aad64_testcase_${tcs} ;" puts $fw "parameter DATA_WIDTH = 128;" puts $fw "// MSG bytes ,AAD byte, Key" puts $fw "parameter INFO = {109'b0,11'b[string range $dtlb end-
10 end],4'b1000,4'b0000} ;" puts $fw "" for {set iiia 1} {$iiia