Lý do chӑQÿӅ tài
Internet là mӝt hӋ thӕng thông tin toàn cҫu có thӇ ÿѭӧc truy nhұp công cӝng gӗm các mҥQJ Pi\ WtQK ÿѭӧc liên kӃt vӟi nhau HӋ thӕng này truyӅn thông tin theo kiӇu nӕi chuyӇn gói dӳ liӋu (packet switching) dӵa trên mӝt giao thӭc liên mҥQJÿmÿѭӧc chuҭn hóa ± giao thӭc IP HӋ thӕng này bao gӗm hàng ngàn mҥng máy tính nhӓ KѫQFӫa các doanh nghiӋp, cӫa các viӋn nghiên cӭXYjFiFWUѭӡQJÿҥi hӑc, cӫDQJѭӡi dùng cá nhân và cỏc chớnh phӫ trờn toàn cҫXô 0ҥng Internet mang lҥi rҩt nhiӅu tiӋn ớch hӳu dөng và cung cҩSFKRQJѭӡi dùng mӝt khӕLOѭӧng thông tin và dӏch vө khәng lӗ Trong thұp kӹ TXD,QWHUQHWÿmSKiWWULӇn bùng nә vӟi tӕFÿӝ chóng mһt trên toàn thӃ giӟi cҧ vӅ sӕ Oѭӧng lүn kӻ thuұt Sӵ phát triӇn không chӍ ÿѫQJLҧn là sӕ Oѭӧng lӟn thành viên mӟi kӃt nӕi vào hӋ thӕng Internet mӛi giӡ mà còn là sӵ xâm nhұp cӫa nó vào các khía cҥnh cӫa cuӝc sӕng hiӋQÿҥi, vào cỏc hoҥWÿӝQJWKѭѫQJPҥi vӟi quy mụ lӟn nhӓ NKiFQKDXô+LӋn nay, cỏc tә chӭFFѫquan hay chính phӫ sӱ dөQJ,QWHUQHWÿӇ giӟi thiӋu các sҧn phҭm, dӏch vө hay ÿLӅu hành bҵng các website cӫa mình Theo thӡi gian, nó sӁ phát triӇQWKjQKWKѭѫQJPҥi ÿLӋn tӱ, mӑi hoҥWÿӝng kinh doanh, các giao dӏFKÿLӅXKjQKÿѭӧc thӵc hiӋn qua mҥng Internet Tuy nhiên, song song vӟi nhӳng tiӋn ích không thӇ phӫ nhұn mà mҥng Internet mang tӟLQJѭӡLGQJFzQÿӕi mһt vӟi hàng loҥWFiFQJX\FѫPjWURQJÿyQJX\FѫKjQJ ÿҫu là bӏ ÿiQKFҳSWK{QJWLQWKD\ÿәi thông tin truyӅn tҧi mӝt cách có chӫ ÿtFK%jLWRiQ ÿһt ra là làm thӃ QjRÿӇ bҧo mұt an toàn cho các dӳ liӋu trong quá trình truyӅn qua mҥng? Làm thӃ nào có thӇ bҧo vӋ chӕng lҥi các cuӝc tҩn công trong quá trình truyӅn tҧi các dӳ liӋXÿy",QWHUQHW3URWRFRO6HFXULW\,3VHFOjPӝt trong nhӳng giҧi pháp khҧ dөng
Cҩu trúc gói dӳ liӋu (IP, TCP, UDP và cҧ các giao thӭc ӭng dөQJÿѭӧc mô tҧ công khai, bҳWÿѭӧc gói IP trên mҥQJDLFNJQJ Fy WKӇ SKkQ WtFKJyLÿӇ ÿӑc phҫn dӳ liӋu chӭa bên WURQJÿyOjFKѭDNӇ hiӋn nay, các công cө bҳWYjSKkQWtFKJyLÿѭӧc xây dӵng vӟi tính QăQJPҥnh và phát hành rӝng rãi ViӋc bә VXQJFiFFѫFKӃ bҧo mұt vào mô hình TCP/IP, bҳWÿҫu tӯ giao thӭc IP là mӝt nhu cҫu cҩp bách
IP Security (IPsec) là mӝt giao thӭFÿѭӧc chuҭn hóa bӣi Internet Engineering Task Force (IETF) tӯ QăPQKҵm mөc ÿtFKQkQJFҩSFiFFѫFKӃ mã hóa và xác thӵc thông tin cho chuӛi thông tin truyӅQÿLWUrQPҥng bҵng giao thӭc IP Hay nói cách khác, IPsec là tұp hӧp cӫa các chuҭn mӣ ÿѭӧc thiӃt lұSÿӇ ÿҧm bҧo sӵ cҭn mұt dӳ liӋXÿҧm bҧo tính toàn vҽn dӳ liӋu và chӭng thӵc dӳ liӋu giӳa các thiӃt bӏ mҥng IPsec cung cҩp mӝWFѫFҩu bҧo mұt ӣ tҫng 3 (Network layer) cӫa mô hình OSI
Vӟi sӵ WăQJWUѭӣQJQKDQKEăQJWK{QJFQJYӟi nhu cҫu bҧo mұt thông tin trên mҥng ngày
6 càng lӟn, tӯ ÿyÿzLKӓi viӋc thӵc hiӋn mã hóa/giҧi mã thông tin vӟi tӕFÿӝ FDRKѫQ7ӕc ÿӝ mã hóa/giҧi mã cҫQ QKDQK KѫQ Pӭc có thӇ ÿiS ӭng bӣi cách triӇn khai bҵng phҫn mӅm trên hҫu hӃt các bӝ xӱ lý mҥng hiӋn nay ViӋc sӱ dөng Hardware Acceleration cho các thuұt toán bҧo mұt là giҧi pháp mӟi và tӓ ra rҩt hӳu hiӋu
Vӟi nhiӅX ѭX ÿLӇm và tính ӭng dөng cao cӫa IPsec, cùng xu thӃ sӱ dөng Hardware Acceleration giҧi quyӃt nhӳng tính toán phӭc tҥp thay cho phҫn mӅPW{LÿmTX\ӃWÿӏnh chӑQÿӅ WjL³&{QJQJKӋ IP Security và hiӋn thӵFWUrQ)3*$´ÿӇ nghiên cӭu.
MөFÿtFKQJKLrQFӭu
Mөc tiêu cӫDÿӅ tài là hiӇu vӅ nguyên lý, cách thӭc hoҥWÿӝng, nhӳQJѭXÿLӇm và hҥn chӃ cӫa IPsec; nghiên cӭu vӅ thuұt toán mã hóa dӳ liӋu AES-128/192/256 (Advanced Encryption Standard); thӵc hiӋn nhӳng mөc tiêu sau: ĈѭDUDP{KuQKFPGA-based IPsec Acceleration ĈѭDUDVѫÿӗ khӕi và mô tҧ hoҥWÿӝng cӫa lõi IP AES-128/192/256
Thӵc nghiӋm mã hóa, giҧLPm$(6YjÿyQJJyL,3VHFWUrQ)3*$
1.ĈӕLWѭӧng và phҥm vi nghiên cӭu
Nguyên lý, cách thӭc hoҥWÿӝng và các chӭFQăQJFѫEҧn cӫa IPsec
Thuұt toán mã hóa dӳ liӋu AES
Thӵc nghiӋm FPGA-based IPSec Acceleration
1.éQJKƭDNKRDKӑc và thӵc tiӉn cӫDÿӅ tài nghiên cӭu
HiӇXÿѭӧc giao thӭc bҧo mұt IPsec, ÿѭDUDFiFP{KuQKWăQJWӕc phҫn cӭng cho IPsec
HiӇXÿѭӧc lý thuyӃt mã hóa, giҧi mã AES-128/192/256
HiӋn thӵc mã hóa AES bҵng ngôn ngӳ Verilog, tӕLѭXWKLӃt kӃ nhҵm nâng cao hiӋu suҩt và tiӃt kiӋm tài nguyên
Phát triӇn nhӳng vҩQ ÿӅ nghiên cӭX WURQJ Wѭѫng lai: TӕL ѭX KyD WKLӃt kӃ mã hóa/giҧLPm$(6KѫQQӳa
Thӵc hiӋQ WăQJ Wӕc phҫn cӭng cho các khӕi khác trong giao thӭc IPsec: Ingress Packet Processor; Egress Packet Processor; HMAC authentication with SHA-1, SHA-2 512/384/256/224
Sӱ dөng lõi Intellectual Property (IP) AES-128/192/256 trong các thiӃt kӃ SoC sӱ dөQJWăQJWӕc phҫn cӭng cho mã hóa, giҧi mã
ThiӃt kӃ ÿѭӧFP{KuQKWăQJWӕc phҫn cӭng cho giao thӭc IPsec.
Bӕ cөc luұQYăQ
LuұQYăQEDRJӗPFKѭѫQJ
&KѭѫQJtrình bày vӅ giӟi thiӋu chung, mөFÿtFKQJKLrQFӭXÿӕLWѭӧng nghiên cӭu, phҥm vi nghiên cӭXêQJKƭDNKRDKӑc và thӵc tiӉn cӫa dӵ án
&KѭѫQJJLӟi thiӋu tәng quan vӅ IPsec, thuұt toán mã hóa AES, các chӃ ÿӝ mã hóa và giҧi mã phә biӃn
&KѭѫQJgiӟi thiӋu các phҫn mӅm và kit FPGA sӱ dөng trong dӵ án
&KѭѫQJÿѭDUDFiFP{KuQKKLӋn thӵc IPsec trên FPGA
&KѭѫQJWUuQKEj\FKLWLӃt kӻ thuұt thiӃt kӃ bӝ mã hóa, giҧi mã AES-128/192/256
&KѭѫQJÿѭDUDFiFNӃt quҧ mô phӓng và triӇn khai mã hóa AES-128/192/256 trên FPGA
&KѭѫQJÿѭDUDNӃt luұn, khuyӃn nghӏ, giӟi hҥQYjKѭӟng phát triӇn cӫDÿӅ tài
Tәng quan vӅ IP Security
KiӃn trúc IPsec
IPsec là mӝt giao thӭc phӭc tҥp, dӵa trên nӅn tҧng cӫa nhiӅu kӻ thuұWFѫVӣ khác nhau Xét vӅ mһt kiӃQWU~F,3VHFÿѭӧc xây dӵng dӵa trên các thành phҫQFѫEҧQVDXÿk\
Hình 2.1: Ki͇n trúc IP security [4]
Các thành phҫQFѫEҧn trong IPsec:
IP Security Protocol o Giao thӭc ESP (Encapsulation Security Protocol): Cung cҩp tính bҧo mұt, xác thӵc nguӗn gӕc dӳ liӋu; bҧo mұt tính toàn vҽn cӫa dӳ liӋu; và dӏch
9 vө chӕng phát lҥi o Giao thӭc AH (Authentication Header): Cung cҩp tính toàn vҽn dӳ liӋu và xác thӵc nguӗn gӕc dӳ liӋu; bҧo vӋ chӕng phát lҥi cho các cuӝc tҩn công phát lҥi
ThuұW WRiQ Pm KyD 0HVVDJH (QFU\SWLRQ ĈӏQK QJKƭD FiF WKXұt toán mã hóa và giҧi mã sӱ dөng trong IPsec IPsec chӫ yӃu dӵa vào các thuұt toán mã hóa ÿӕi xӭng o Data Encryption Standard (DES): DES là mӝt hӋ thӕng mã hóa khóa ÿӕi xӭng, DES sӱ dөng mӝt khóa 56-bit o Triple DES (3DES): Là mӝt biӃn thӇ cӫa DES 56-bit HoҥW ÿӝng WѭѫQJWӵ QKѭ'(6WURQJÿyGӳ liӋXÿѭӧc chia thành các khӕi 64-bit 3DES thӵc thi mӛi khӕi ba lҫn, mӛi lҫn vӟi mӝt khóa 56-ELWÿӝc lұp o Advanced Encryption Standard: Là mӝt thuұt toán mã hóa khӕLÿѭӧc chính phӫ Hoa KǤ áp dөng làm tiêu chuҭn mã hóa Thuұt toán AES là hӋ thӕQJPmKyDNKyDÿӕi xӭng, có thӇ mã hóa và giҧi mã thông tin Mã hóa chuyӇQÿәi dӳ liӋu thành mӝt dҥng không thӇ hiӇXÿѭӧc gӑi là ciphertext, giҧi mã ciphertext sӁ chuyӇQÿәi dӳ liӋu trӣ lҥi dҥQJEDQÿҫu cӫa nó gӑi là plaintext AES làm viӋc vӟi các khӕi dӳ liӋu 128-ELWYjÿӝ dài khóa 128- bit, 192-bit hoһc 256-bit
Message Integrity (Hash) Functions o Hash-based Message Authentication Code (HMAC): Là mӝt thuұt toán toàn vҽn dӳ liӋXÿҧm bҧo tính toàn vҽn cӫa bҧn tin TҥLÿҫu cuӕi, gói tin và mӝt khóa chia sҿ bí mұW ÿѭӧc gӱi thông qua mӝt thuұW WRiQ EăP WURQJÿyWҥo ra mӝt giá trӏ EăP*yLWLQYjJLiWUӏ EăPÿѭӧc gӱi qua mҥng o Message Digest 5 (MD5): Là mӝW KjP EăP ÿӇ mã hóa vӟi giá trӏ EăPOj-bit MD5 biӃQÿәi mӝt thông diӋp có chiӅu dài bҩt kì thành mӝt khӕLFyNtFKWKѭӟc cӕ ÿӏnh 128-ELW7K{QJÿLӋSÿѭDYjRVӁ ÿѭӧc cҳt thành các khӕi 512-ELWÿѭӧc padding sao cho chia chҹn cho 512 o Secure Hash Algorithm-1,2 (SHA-1,2): SHA là mӝt thuұWWRiQEăP GQJ ÿӇ chuyӇn mӝW ÿRҥn dӳ liӋu nhҩW ÿӏnh thành mӝW ÿRҥn dӳ liӋu có chiӅXGjLNK{QJÿәi vӟi xác suҩt khác biӋt cao SHA-1: Hash function 160- bit SHA-2 bao gӗm mӝt sӕ biӃn thӇ là SHA-224, SHA-256, SHA-384, SHA-512
Thuұt toán xác thӵF 3HHU DXWKHQWLFDWLRQ ĈӏQK QJKƭD FiF WKXұt toán xác thӵc thông tin sӱ dөng trong AH và ESP o Rivest, Shamir, and Adelman (RSA) Digital Signutures: Là mӝt hӋ thӕng mұt mã khóa bҩWÿӕi xӭng Nó sӱ dөng mӝt chiӅu dài khóa là 512-
10 bit, 768-bit, 1024-bit hoһc lӟQKѫQ,36HFNK{QJVӱ dөQJ56$ÿӇ mã hóa dӳ liӋu ChӍ sӱ dөQJ56$ÿӇ PmKyDWURQJJLDLÿRҥn xác thӵc ngang hàng
Quҧn lí khóa (Key management): Mô tҧ FiFFѫFKӃ quҧQOêYjWUDRÿәi khóa trong IPsec
MiӅn thӵc thi (Domain of Interpretation ± '2, ĈӏQK QJKƭD P{L WUѭӡng thӵc thi IPsec IPsec không phҧi là mӝt công nghӋ riêng biӋt mà là sӵ tә hӧp cӫa nhiӅXFѫFKӃ, giao thӭc và kӻ thuұWNKiFQKDXWURQJÿyPӛi giao thӭFFѫFKӃ ÿӅu có nhiӅu chӃ ÿӝ hoҥWÿӝng khác nhau ViӋF[iFÿӏnh mӝt tұp các chӃ ÿӝ cҫn thiӃt ÿӇ triӇn khai IPsec trong mӝt tình huӕng cө thӇ là chӭFQăQJFӫa miӅn thӵc thi Xét vӅ mһt ӭng dөng, IPsec thӵc chҩt là mӝt giao thӭc hoҥWÿӝng song song vӟi IP nhҵm cung cҩp 2 chӭFQăQJFѫEҧn mà IP nguyên thӫy chѭDFyÿyOjPmKyDYj xác thӵc gói dӳ liӋu
Giao thӭFWUDRÿәLNKyD,.(,QWHUQHW.H\([FKDQJHĈӇ thiӃt lұp các SA (Security Association) cho AH hoһc ESP, và duy trì quҧn lí các kӃt nӕi
Hình 2.2: Các thành ph̯QF˯E̫n cͯa Ipsec [5]
6HFXULW\ DVVRFLDWLRQV 6$ ÿѭӧc tҥo bӣL ,.( ÿѭӧc sӱ dөng trong IPsec ESP Security policy (SP) - chính sách bҧo mұt Kѭӟng dүn tҥo và lӵa chӑQ6$ÿӇ sӱ dөng trong IPsec.
Các tiêu chuҭQÿӏQKQJKƭD,3VHF
Các tiêu chuҭn trong giao thӭc IPsec bao gӗm:
Các tiêu chuҭn vӅ IPsec: KiӃn trúc chính bao gӗm các khái niӋP FKXQJ FiF ÿӏnh QJKƭD\rXFҫXYjFѫFKӃ bҧo mұt IPsec
Các tiêu chuҭn vӅ ,.(7UDR ÿәi khóa trong giao thӭc IP (IKE), giao thӭc quҧn lí khóa và SA trong giao thӭc IP (ISAKMP)
Các tiêu chuҭn vӅ các thuұt toán mұt mã
Internet Key Exchange
IKE là giao thӭc thӵc hiӋQTXiWUuQKWUDRÿәi khóa và thӓa thuұn các thông sӕ bҧo mұt vӟi QKDXQKѭ0mKyDWKӃ nào, mã hóa bҵng thuұWWRiQJuEDROkXWUDRÿәi khóa 1 lҫn Sau NKLWUDRÿәi xong thì sӁ Fyÿѭӧc mӝt thӓa thuұn giӳDKDLÿҫu cuӕLNKLÿy,3VHF6HFXULW\
SA là nhӳng thông sӕ bҧo mұWÿmÿѭӧc thӓa thuұn thành công, các thông sӕ SA này sӁ ÿѭӧFOѭXWURQJFѫVӣ dӳ liӋu cӫD6$7URQJTXiWUuQKWUDRÿәi khóa thì IKE dùng thuұt WRiQPmKyDÿӕi xӭng, nhӳng khóa này sӁ ÿѭӧFWKD\ÿәi theo thӡLJLDQĈk\Ojÿһc tính cӫa IKE giúp hҥn chӃ tình trҥng bҿ khóa cӫa các kҿ tҩn công IKE còn dùng 2 giao thӭc NKiF ÿӇ chӭng thӵF ÿҫu cuӕi và tҥo khóa: ISAKMP (Internet Security Association and Key Management Protocol) và Oakley
ISAKMP: Là giao thӭc thӵc hiӋn viӋc thiӃt lұp, thӓa thuұn và quҧn lý chính sách bҧo mұt SA
Oakley: Là giao thӭc làm nhiӋm vө chӭng thӵc khóa, bҧn chҩt là dùng thuұt toán Diffie-+HOOPDQÿӇ WUDRÿәi khóa bí mұWWK{QJTXDP{LWUѭӡQJFKѭDEҧo mұt Giao thӭc IKE dùng UDP port 500
Giao thӭF,.(FyFiFÿһFWtQKQKѭVDX
Chӕng lҥi các cuӝc tҩn công làm nghӁn mҥQJQKѭWҩn công tӯ chӕi dӏch vө DoS (Denial of Service)
Cung cҩp nhӳQJSKѭѫQJWLӋn cho hai bên vӅ sӵ ÿӗng ý nhӳng giao thӭc, thuұt toán và nhӳQJFKuDNKyDÿӇ sӱ dөng Ĉҧm bҧRWUDRÿәLNKyDÿӃQÿ~QJQJѭӡi dùng
Quҧn lý nhӳQJFKuDNKyDVDXNKLÿѭӧc chҩp nhұn Ĉҧm bҧo sӵ ÿLӅu khiӇQYjWUDRÿәi khóa an toàn
Cho phép chӭng thӵFÿӝng giӳDFiFÿӕLWѭӧng ngang hàng
Quá trình hoҥWÿӝng cӫD,.(ÿѭӧc chia ra làm 2 phase chính: Phase 1 và Phase 2, cҧ hai phase này nhҵm thiӃt lұp kênh truyӅn an toàn giӳDKDLÿLӇm Ngoài phase 1 và phase 2 còn có phase 1.5
,.( SKDVH Oj JLDL ÿRҥn bҳt buӝc phҧi có Phase này thӵc hiӋn viӋc xác thӵc và thӓa thuұn các thông sӕ bҧo mұt, nhҵm cung cҩp mӝt kênh truyӅn bҧo mұt giӳDKDLÿҫu cuӕi Các thông sӕ VDX NKL ÿӗng ý giӳa hai bên gӑi là SA, SA trong pha này gӑi là SA ISAKMP hay SA IKE Phase này sӱ dөng mӝt trong hai chӃ ÿӝ ÿӇ thiӃt lұp SA: ChӃ ÿӝ chính thӭc (Main mode) và chӃ ÿӝ tích cӵc (Aggressive mode) Các thông sӕ bҧo mұt bҳt buӝc phҧi thӓa thuұn trong phase 1 này là:
Thuұt toán mã hóa: DES, 3DES, AES
Thuұt toán hash: MD5, SHA
3KѭѫQJSKiS[iFWKӵc: Preshare-key, RSA
Main mode: Sӱ dөQJPHVVDJHÿӇ WUDRÿәi thӓa thuұn các thông sӕ vӟi nhau
Hai PHVVDJHÿҫXGQJÿӇ thӓa thuұn các thông sӕ cӫa chính sách bҧo mұt
Hai message tiӃSWKHRWUDRÿәi khóa Diffie-Hellman
Hai message cuӕi cùng thӵc hiӋn xác thӵc giӳa các thiӃt bӏ
0HVVDJHÿҫu tiên gӗm các thông sӕ cӫa chính sách bҧo mұt, khóa Diffie-Hellman
Message thӭ hai sӁ phҧn hӗi lҥi thông sӕ cӫa chính sách bҧo mұWÿѭӧc chҩp nhұn, NKyDÿѭӧc chҩp nhұn và xác thӵc bên nhұn
Message cuӕi cùng sӁ xác thӵc bên vӯa gӱi
IKE phase 2 là phase bҳt buӝF ÿӃn phase này thì thiӃt bӏ ÿҫu cuӕL ÿm Fy ÿҫ\ ÿӫ các thông sӕ cҫn thiӃt cho kênh truyӅn an toàn Quá trình thӓa thuұn các thông sӕ ӣ phase 2 OjÿӇ thiӃt lұp SA IPsec dӵa trên nhӳng thông sӕ ӣ SKDVH4XLFNPRGHOjSKѭѫQJWKӭc ÿѭӧc sӱ dөng trong phase 2 Các thông sӕ mà Quick mode thӓa thuұn trong phase 2:
Giao thӭc IPsec: ESP hoһc AH
IPsec mode: Tunnel mode hoһc Transport mode
,3VHF6$OLIHWLPH'QJÿӇ thӓa thuұn lҥi SA IPsec sau mӝt khoҧng thӡi gian mһc ÿӏnh hoһFÿѭӧc chӍ ÿӏnh
SA IPsec cӫa phase 2 hoàn toàn khác vӟi SA IKE ӣ phase 1, SA IKE chӭa các thông sӕ ÿӇ tҥo nên kênh truyӅn bҧo mұt, còn SA IPsec chӭa các thông sӕ ÿӇ ÿyQJJyLGӳ liӋu theo ESP hay AH, hoҥWÿӝng theo Tunnel mode hay Transport mode
IKE phase 1.5 là mӝWJLDLÿRҥn IKE không bҳt buӝc Phase IKE 1.5 cung cҩp mӝt lӟp xác thӵF ÿѭӧc gӑi là Xauth hoһc xác thӵc Extended Xác thӵc ,3VHF ÿѭӧc cung cҩp trong phase 1 xác thӵc các thiӃt bӏ ÿҫu cuӕi sӱ dөQJÿӇ thiӃt lұp kӃt nӕi IPsec Xauth bҳt ngѭӡi sӱ dөng phҧi xác thӵFWUѭӟc khi sӱ dөng các kӃt nӕi IPsec
Optional Phase 1.5: Xauth and Mode Config
New IPSec Tunnel or Rekey Phase I SA (ISAKMP SA)
Phase II SA (IPSec SA)
Phase II SA (IPSec SA)
Hình 2.3: 6˯ÿ͛ ho̩Wÿ͡ng cͯa IKE [8]
Security Association Database (SAD): Chӭa IPsec SAs, là chính sách bҧo mұWÿӝng
6$ÿѭӧF[iFÿӏnh bӣLÿӏa chӍ ÿtFKWURQJ,3+HDGHUYj63,WURQJ([WHQVLRQ+HDGHU
Chӭa trҥng thái mã hóa và xác thӵFÿӝng
&iF,3VHF6$VOX{QÿLWKHRFһp: inbound và outbound
6$'ÿѭӧc khóa bӣL63,ÿӕi vӟi các gói unicast)
6$V WKѭӡQJ ÿѭӧc tҥo bӣi IKE nhѭQJ FNJQJ Fy WKӇ ÿѭӧc thiӃt lұp thӫ công hoһc bҵng phҫn mӅm khác
Security Policy Database (SPD): ChӍ ÿӏnh chính sách bҧo mұWWƭQK7KѭӡQJÿѭӧc thiӃt lұp bӣi quҧn trӏ viên hӋ thӕng
Multi-homed nodes có mӝt SPD riêng cho mӛi giao diӋn mҥng Ánh xҥ FKtQKViFKJyLÿӃQYjÿLÿӇ thӵc thi
Bӝ chӑQ FKtQK ViFK Ĉӏa chӍ IP (nguӗQ Yj ÿtFK JLDR WKӭc vұn chuyӇn (TCP, UDP, ICMP), cәng nguӗQYjÿtFK
+jQKÿӝng: BYPASS (cho phép), DISCARD (chһn), hoһc PROTECT (bҧo vӋ)
Peer authorization database (PAD): Dùng WURQJ,.(ÿӇ ánh xҥ giӳDWrQÿѭӧc xác thӵc và ÿӏa chӍ IP .K{QJÿѭӧc thӵc hiӋQQKѭPӝWFѫVӣ dӳ liӋu thӵc tӃ
Ngoài ra, giao thӭc IKE chӭD ,.( 6$V 0DVWHU VHFUHW ÿѭӧc tҥo ra bҵQJ WUDR ÿәi khóa Diffie-Hellman Ĉѭӧc sӱ dөng trong quá trình khӣi tҥo IPsec SAs
ChӃ ÿӝ vұn hành cӫa IPsec
IPsec có 2 chӃ ÿӝ vұn hành chính: Transport và Tunnel
Transport mode: ChӍ có tҧi trӑng (dӳ liӋXÿѭӧc truyӅn) cӫa gói tin IP mӟi ÿѭӧc mã hóa và chӭng thӵF 7URQJTXi WUuQKÿӏnh tuyӃn thì IP header không bӏ chӍnh sӱa (mã hóa) Transport mode sӱa dөng trong giao tiӃp host-to-host
Tunnel mode: Toàn bӝ gói tin IP sӁ ÿѭӧc mã hóa và chӭng thӵF6DXÿyQy ÿѭӧFÿyQJJyLYjRPӝt gói tin IP mӟi vӟi IP header mӟi ChӃ ÿӝ 7XQQHOÿѭӧc sӱ dөQJ ÿӇ tҥo Virtual Private Network (mҥng riêng ҧo) phөc vө cho viӋc liên lҥc giӳa các mҥng, liên lҥc giӳa máy chӫ và mҥng, và giӳa các máy chӫ
Hình 2.5 Các ch͇ ÿ͡ v̵n hành cͯa IPsec [7]
ThiӃt lұSÿѭӡng hҫm (Tunnel Establishment)
Quá trình thiӃt lұp mӝt IPsec tunnel có thӇ ÿѭӧFFKLDWKjQKEѭӟc chính [8] :
1 Khӣi tҥo: IPsec tunnel có thӇ ÿѭӧc kích hoҥt bҵng tay hoһc tӵ ÿӝQJNKLOѭXOѭӧng truy cұp mҥQJÿѭӧc gҳn cӡ ÿӇ bҧo vӋ theo chính sách bҧo mұt IPsec Giao thӭc IKE có nhiӋm vө thӵc thi cho viӋc khӣi tҥo
2 IKE phase 1: ThiӃt lұp các tham sӕ và vұt liӋXFKtQKÿӇ bҧo vӋ cho IKE phase 2
3 IKE phase 2: ThiӃt lұp các tham sӕ và vұt liӋX FKtQK ÿӇ bҧo vӋ FKR JLDL ÿRҥn truyӅn dӳ liӋu Các tham sӕ và vұt liӋu chính này tҥo thành các IPsec SA
4 Quá trình truyӅn dӳ liӋu/ѭXOѭӧng truy cұp mҥQJÿѭӧFÿyQJJyLWKHRFiFWKXұt toán và tham sӕ ÿѭӧc cung cҩp bӣi IPsec SAs, giúp cung cҩp tính bҧo mұt và tính toàn vҽn
5 KӃW WK~F ÿѭӡng hҫm: MӝW ÿѭӡng hҫm bӏ ÿyQJ NKL ,3VHF 6$V Fӫa nó chҩm dӭt thông qua viӋc xóa hoһc hӃt hҥn IPsec SA có thӇ hӃt hҥn khi mӝt thӡi gian xác ÿӏQKÿmWU{LTXDKRһc khi mӝWOѭXOѭӧng dӳ liӋu [iFÿӏQKÿmÿLTXDÿѭӡng hҫm
2.1.7ĈiQKJLiѭXQKѭӧFÿLӇm cӫa IPsec ѬXÿLӇm:
Khi IPsec ÿѭӧc triӇn khai trên bӭF Wѭӡng lӱa hoһc bӝ ÿӏnh tuyӃn cӫa mӝt mҥng ULrQJWKuWtQKQăQJDQWRjQFӫa IPsec có thӇ áp dөng cho toàn bӝ OѭXOѭӧng vào và ra cӫa mҥQJULrQJÿyFiFWKjQKSKҫn khác không cҫn phҧi xӱ lý thêm các công viӋFOLrQTXDQÿӃn bҧo mұt
,3VHF ÿѭӧc thӵc hiӋQ ErQ Gѭӟi lӟS 7&3 Yj 8'3 ÿӗng thӡi nó hoҥW ÿӝng trong suӕWÿӕi vӟi các lӟp này Do vұy không cҫn phҧLWKD\ÿәi phҫn mӅm hay cҩu hình lҥi các dӏch vө NKL,3VHFÿѭӧc triӇn khai
IPsec có thӇ ÿѭӧc cҩXKuQKÿӇ hoҥWÿӝng mӝt cách trong suӕt ÿӕi vӟi các ӭng dөng ÿҫu cuӕLÿLӅu này giúp che dҩu nhӳng chi tiӃt cҩu hình phӭc tҥSPjQJѭӡi dùng phҧi thӵc hiӋn khi kӃt nӕLÿӃn mҥng nӝi bӝ tӯ xa thông qua mҥng Internet
Tҩt cҧ FiFJyLÿѭӧc xӱ lý theo IPsec sӁ bӏ WăQJNtFKWKѭӟc do phҧi thêm vào các WLrXÿӅ NKiFQKDXÿLӅu này làm cho hiӋu suҩt truyӅn tҧi cӫa mҥng giҧm xuӕng
,3VHFÿѭӧc thiӃt kӃ chӍ ÿӇ hӛ trӧ bҧo mұWFKROѭXOѭӧng IP, không hӛ trӧ các dҥng OѭXOѭӧ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 ÿӅ NKyÿӕi vӟi các trҥm làm viӋFYjPi\3&QăQJOӵc yӃu
ViӋc phân phӕi các phҫn cӭng và phҫn 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
IPsec Hardware Acceleration
Vӟi sӵ WăQJ WUѭӣQJ QKDQK EăQJ WK{QJ trên mҥng, cùng vӟi nhu cҫu bҧo mұt mҥng lӟn KѫQWӯ ÿyÿzLKӓi thӵc hiӋn mã hóa/giҧi mã vӟi tӕFÿӝ lӟn TӕFÿӝ mã hóa/giҧi mã cҫn QKDQKKѫQPӭc có thӇ ÿiSӭng bӣi cách triӇn khai bҵng phҫn mӅm trên hҫu hӃt các bӝ xӱ lý mҥng hiӋn nay ViӋc sӱ dөng Hardware Acceleration cho các thuұt toán bҧo mұWÿDQJ dҫn trӣ nên phә biӃn
Sau quá trình nghiên cӭu và tìm hiӇXW{LÿѭDUD mô hình xӱ lý IPsec:
Software implementation (Xӱ lý IPsec trên phҫn mӅm)
Cryptography hardware acceleration (7ăQJWӕc phҫn cӭng cho mã hóa/giҧi mã)
IPsec hardware acceleration (7ăQJWӕc phҫn cӭng cho giao thӭc IPsec)
IPsec Hardware Implementations (Xӱ lý IPsec trên phҫn cӭng)
Hình 2.6 Các gi̫i pháp tri͋n khai IPsec [3]
Xӱ lý IPsec trên phҫn mӅPOjP{KuQKNLQKÿLӇn, toàn bӝ giao thӭc IP security và quá trình mã hóa/giҧi mã dӳ liӋXÿӅXÿѭӧc thӵc hiӋn bҵng phҫn mӅm ViӋc tính toán nhiӅu giҧi thuұt phӭc tҥp trong IPsec là mӝt vҩQÿӅ NKyÿӕi vӟi các trҥm làm viӋc và máy PC QăQJOӵc yӃXĈӝ trӉ FNJQJOjPӝWÿLӇm yӃu cӫa mô hình này
ViӋc giҧm tҧi công viӋc cho CPU bҵng hDUGZDUHDFFHOHUDWLRQWăQJWӕc phҫn cӭng) là vҩn ÿӅ cҩp thiӃt hiӋQQD\QyJL~SWăQJWӕc viӋc tính toán nhiӅu giҧi thuұt phӭc tҥp vӟLÿӝ trӉ thҩp
Cryptography Hardware AFFHOHUDWLRQ 7K{QJ Oѭӧng IPsec có thӇ ÿѭӧc cҧi thiӋn bҵng cách giҧm tҧL FiF Fѫ FKӃ mã hóa và giҧi mã phӭc tҥp cho các khӕi cryptographic hardware acceleration ³Các ki͇n trúc CPU hi n t̩i cͯD,QWHO$0'Yj$50FNJQJEDR g͛m các chͱFQăQJPmKyDYjJL̫i mã AES-NI và ARMv8 Cryptographic Extension là nhͷng ví dͭ cho các t̵p l nh AES có th͋ ÿ˱ͫc s͵ dͭng thay cho tri͋n khai ph̯n m͉m AES Ngoài ra các h th͙ng trên chip (SoC) có th͋ chͱDFiFFKLSÿ͋ gi̫m t̫i x͵ lý m̵t
17 mã; Marvell Cryptographic Engines and Security Accelerator (CESA) là m͡t ví dͭ cho b͡ x͵ lý m̵t mã là m͡t ph̯n cͯa n͉n t̫ng SoC B͡ x͵ Oêÿ͋ gi̫m t̫i x͵ lý m̵WPmFNJQJ có th͋ là m͡t ph̯n cͯa b̫ng m̩ch mͧ r͡QJÿ˱ͫc k͇t n͙i vͣi bo m̩ch chính thông qua PCIe M͡t s͙ nhà cung c̭p cung c̭p các tri͋n khai cho các thu̵WWRiQPmKyDG˱ͣi d̩ng lõi sͧ trí tu (IP) có th͋ ÿ˱ͫc thFWKLWUrQFiF*38Ĉ͋ WăQJW͙c ph̯n cͱng mã hóa, m͡t GPU ch̩y lõi IP là m͡t ph̯n cͯa PCIe extension board trên máy tính [3]´
SADB IPSec SADB IPSec Protocol
Hình 2.7: 7ăQJW͙c ph̯n cͱng cho các thu̵t toán mã hóa, gi̫i mã phͱc t̩p [2] B̫ng 2.1: Tóm t̷WSK˱˯QJSKiSJL̫m t̫i các thu̵t toán mã hóa cho IPsec [2]
A Software SW SW SW SW
B Crytography hardware acceleration SW SW HW SW
,3VHF+DUGZDUH$FFHOHUDWLRQ7K{QJOѭӧQJ,3VHFFNJQJFyWKӇ ÿѭӧc cҧi thiӋn bҵng cách giҧm tҧi xӱ lý IPsec hoһc các bӝ phұn cӫDQyFKRFiFÿѫQYӏ WăQJWӕc phҫn cӭng IPsec HiӋn nay, mӝt sӕ công ty lӟQÿmWULӇn khai các phҫn cӫa quá trình xӱ lý mһt phҷng dӳ liӋu IPsec trên FPGA Các chӭFQăQJVDXÿyÿѭӧc triӇn khai trên phҫn mӅm có giao diӋn vӟi FPGA thông qua PCIe Tuy nhiên, phát triӇQFKR)3*$ÿzLKӓi nhiӅu yêu cҫu vӅ xӱ lý phҫm mӅm bên cҥnh kiӃn thӭc và kinh nghiӋm vӅ lұp trình phҫn cӭng
IPsec Hardware Implementations1Jѭӧc lҥi vӟLFiFFѫFKӃ WUѭӟFÿk\[ӱ lý IPsec có thӇ ÿѭӧc thӵc hiӋn hoàn toàn trên nӅn tҧng phҫn cӭng Quá trình xӱ Oê,3VHFÿѭӧc thӵc hiӋn trên FPGA, SPD và SAD cӫDQyÿѭӧc duy trì bӣi mӝt mһt phҷQJÿLӅu khiӇn bên ngoài.
Mã hóa AES
ChӭFQăQJ$GG5RXQG.H\
ChӭFQăQJ$GG5RXQG.H\WKӵc hiӋQQKѭVDX
%ѭӟc khӣi tҥo: XOR khóa mã vӟi ma trұn dӳ liӋu
%ѭӟc lһSPmKyDYjEѭӟc tҥo ngõ ra: XOR khóa vòng (round key) vӟi ma trұn trҥng thái Ĉӕi vӟLEѭӟc lһSPmKyDYjEѭӟc tҥo ngõ ra, vӏ WUt³NKyDPm´OjFiF³NKyDYzQJ´FzQGӳ liӋu là cӫa lҫQWtQKWUѭӟFÿy
ChӭFQăQJ6XE%\WHV
ChӭFQăQJ6XE%\WHVOjWKӵc hiӋn thay thӃ tӯng byte cӫa ma trұn trҥng thái, ngõ ra cӫa AddRoundKey, bҵng mӝt giá trӏ ÿmTX\ÿӏnh trong chuҭn AES BҧQJTX\ÿӏnh giá trӏ thay
ChӭFQăQJ6KLIW5RZV
ChӭFQăQJ6KLIW5RZVWKӵc hiӋn quay trái tӯng hàng cӫa ma trұn trҥng thái, ngõ ra cӫa SubBytes, theo byte vӟi hӋ sӕ WăQJGҫn tӯ ÿӃQ+jQJÿҫu tiên có hӋ sӕ quay là 0 thì FiFE\WHÿѭӧc giӳ nguyên vӏ trí Hàng thӭ 2 có hӋ sӕ TXD\OjWKuFiFE\WHÿѭӧc quay 1- byte Hàng thӭ ba quay 2-byte và hàng thӭ WѭTXD\-byte.
ChӭFQăQJ0L[&ROXPQV
ChӭF QăQJ 0L[&ROXPQV WKӵc hiӋn nhân tӯng cӝt cӫa ma trұn trҥng thái - ngõ ra cӫa ShiftRows, vӟi mӝt ma trұn chuyӇQÿәLTX\ÿӏnh bӣi chuҭn AES ViӋc biӃQÿәi mӝt cӝt cӫa ma trұn trҥQJWKiLÿѭӧc thӵc hiӋn bӣi hai phép toán là nhân và XOR.
ChӭFQăQJ.H\([SDQVLRQ
ChӭFQăQJ.H\([SDQVLRQWKӵc hiӋn tính toáQNKyDYzQJFKREѭӟc lһSPmKyDYjEѭӟc tҥo ngõ ra KӃt quҧ cӫa mӝt lҫn thӵc thi KeyExpansion là mӝt khóa vòng sӱ dөng cho chӭF QăQJ $GG5RXQG.H\ 9ӟi mã hóa AES-128/192/256, sӕ khóa vòng là 10/12/14 WѭѫQJӭng vӟi 9/11/13 lҫn AddRoundKey ӣ Eѭӟc lһp mã hóa và 1 lҫn AddRoundKey ӣ Eѭӟc tҥo ngõ ra KeyExpansion bao gӗm 4 phҫn: RotWord, SubWord, AddRcon và AddW
KeyExpansion cho AES-128 (Nk = 4): Mӛi khóa vòng có 128-ELW ÿѭӧc chia làm 4- word, mӛi word là 4-byte và kí hiӋu là w[j] vӟi j là sӕ nguyên Mã hóa AES-128 có 1 khóa mã và 10 khóa vòng nên tәng sӕ tӯ OjYjÿѭӧFÿiQKVӕ tӯ ÿӃn 43 Khóa mã có
4 tӯ là w[0], w[1], w[2] và w[3] Khóa vòng 1 có 4 tӯ là w[4], Z>@Z>@Z>@7ѭѫQJ tӵ, khóa vòng 10 có 4 tӯ là w[40], w[41], w[42], w[43]
Tӯ w[j] tính theo công thӭc sau, vӟi 3 < j < 44 [9] w[j] = AddW[j-4] = w[j-1] + w[j-4] w[j=4*n] = AddW[j-4] = trans(w[j-1]) + w[j-4]
Khi tớnh cỏc tӯ ӣ vӏ trớ j là bӝi sӕ cӫa QKѭZ>@Z>@ôYjZ>@WKuZ>M-1] phҧLÿѭӧc biӃQÿәi qua 3 chӭFQăQJ5RW:RUG6XE:RUGYj$GG5FRQJӑi là trans(w[j-@WUѭӟc khi XOR vӟi w[j-4]
ChӭFQăQJ5RW:RUG7Kӵc hiӋn quay trái tӯ w[j] mӝt byte
ChӭF QăQJ 6XE:RUG WKӵc hiӋn thay thӃ các phi tuyӃn tӯng byte cӫa kӃt quҧ RotWord theo bҧng S-box
ChӭFQăQJ$GG5FRQWKӵc hiӋn XOR kӃt quҧ SubWord và giá trӏ Rcon[j/4] vӟi j là bӝi sӕ cӫa 4 Sӕ Oѭӧng giá trӏ 5FRQ>M@OjWѭѫQJӭng vӟi 10 lҫn tính khóa vòng ChӭFQăQJ AddRcon sӁ tҥo ra kӃt quҧ cuӕi cùng cӫa biӃQÿәi trans(w[j-1])
ChӭFQăQJ$GG:WKӵc hiӋn XOR w[j-4] vӟi w[j-1] hoһc trans(w[j-1])
KeyExpansion cho AES-192 (Nk = 6): Tӯ Z>M@ÿѭӧc tính theo công thӭc sau [9] w[j] = AddW[j-6] = w[j-1] + w[j-6] w[j=6*n] = AddW[j-6] = trans(w[j-1]) + w[j-6]
KeyExpansion cho AES-256 (Nk = 8): Tӯ Z>M@ÿѭӧc tính theo công thӭc sau [9] w[j] = AddW[j-8] = w[j-1] + w[j-8] w[j=8*n] = AddW[j-8] = trans(w[j-1]) + w[j-8]
Có sӵ khác biӋt so vӟi AES-128/192: NӃu j-4 là bӝi sӕ cӫD1NWKu6XE:RUGÿѭӧc áp dөng cho w[j-@WUѭӟc XOR.
Giҧi mã AES
ChӭFQăQJ$GG5RXQG.H\ÿҧo
ChӭF QăQJ $GG5RXQG.H\ ÿҧo trong quá trình giҧL Pm FNJQJ FKtQK Oj FKӭF QăQJAddRoundKey trong quá trình mã hóa nên gӑi chung là AddRoundKey.
ChӭFQăQJ,QY6KLIW5RZV
,QY6KLIW5RZVOjÿҧo cӫa chӭFQăQJ6KLIIW5RZV,QY6KLIW5RZVWKӵc hiӋn quay phҧi tӯng hàng cӫa ma trұn trҥng thái sinh ra tӯ EѭӟFWUѭӟFÿytheo byte vӟi hӋ sӕ TXD\WăQJGҫn tӯ ÿӃQ+jQJÿҫu tiên có hӋ sӕ TXD\OjWKuFiFE\WHÿѭӧc giӳ nguyên vӏ trí Hàng thӭ hai có hӋ sӕ TXD\OjWKuÿѭӧc quay 1-byte, hàng thӭ ba quay 2-byte và hàng thӭ 4 quay 3-byte.
ChӭFQăQJ,QY6XE%\WHV
ChӭFQăQJ,QY6XE%\WHVOjWKӵc hiӋn thay thӃ tӯng byte cӫa ma trұn trҥng thái bҵng mӝt giá trӏ ÿmTX\ÿӏnh trong chuҭn AES BҧQJTX\ÿӏnh giá trӏ thay thӃ cho InvSubBytes gӑi là S-ER[ÿҧo (Inverse S-box).
ChӭFQăQJ,QY0L[&ROXPQV
InvMixColumns cӫa quá trình giҧLPmOjÿҧo cӫa MixColumns trong quá trình mã hóa Tӯng cӝt cӫa ma trұn trҥng thái sӁ ÿѭӧc nhân vӟi ma trұn chuyӇQÿәi.
Các chӃ ÿӝ mã hóa và giҧi mã
Electronic Codebook (ECB)
ECB là chӃ ÿӝ mã hóa tӯng khӕL ELW ÿӝc lұp Vӟi cùng mӝt khóa mã K, mӛi khӕi plaintext ӭng vӟi mӝt giá trӏ ciphertext cӕ ÿӏQKYjQJѭӧc lҥi
Mó húa ECB: C j = CIPH k (P j ), (M ôn)
Giҧi mó ECB: Pj = CIPH -1 k (C j ), (j = ôQ
4XiWUuQKPmKyD(&%3ODLQWH[WOjÿҫu vào trӵc tiӃSÿӇ thӵc thi thuұt toán mã hóa vӟi NKyDPm.ÿӇ tҥo ra ciphertext
Quá trình giҧi mã ECB: &LSKHUWH[WOjÿҫu vào trӵc tiӃSÿӇ thӵc thi thuұt toán giҧi mã vӟi NKyDPm.ÿӇ tҥo ra plaintext
Hình 2.11: Ch͇ ÿ͡ mã hóa, gi̫i mã ECB [20] ѬXÿLӇm:
ThiӃt kӃ phҫn cӭQJ ÿѫQ JLҧn VҩQ ÿӅ cҫn quan tâm chính là thiӃt kӃ logic cho thuұt toán mã hóa
Lӛi bit không bӏ lan truyӅn NӃu lӛi bit xuҩt hiӋn trên mӝt ciphertext cӫa mӝt khӕi dӳ liӋu thì nó chӍ ҧQK KѭӣQJ ÿӃn viӋc giҧi mã khӕi dӳ liӋX ÿy FKӭ không ҧnh KѭӣQJÿӃn viӋc giҧi mã các khӕi dӳ liӋu khác
Có thӇ thӵc hiӋn mã hóa/giҧi mã song song nhiӅu khӕi dӳ liӋXFQJO~FĈLӅu này JL~SWăQJWӕFÿӝ xӱ lí trong các hӋ thӕQJÿzLKӓi mã hóa/giҧi mã tӕFÿӝ cao
Khҧ QăQJEҧo mұt kém Do giá trӏ SODLQWH[WYjFLSKHUWH[Wÿѭӧc ánh xҥ ÿӝc lұp mӝt
- mӝt nên thông tin mã hóa dӉ bӏ sӱDÿәi bҵQJFiFKQKѭ[yDEӟt khӕi dӳ liӋu, chèn thêm khӕi dӳ liӋX KRiQ ÿәi vӏ trí khӕi dӳ liӋX ÿӇ tìm sai lӋch thông tin tҥL QѫL nhұn.
Cipher Block Chaining (CBC)
CBC là chӃ ÿӝ mã hóa chuӛi, kӃt quҧ mã hóa cӫa khӕi dӳ liӋXWUѭӟc (ciphertext) sӁ ÿѭӧc
25 tә hӧp vӟi khӕi dӳ liӋu kӃ tiӃSSODLQWH[WWUѭӟc khi thӵc thi mã hóa
Mã hóa CBC: C 1 = CIPH k (P 1 +IV)
Giҧi mã CBC: P1 = CIPH -1 k (C 1 )+IV
Hình 2.12: Ch͇ ÿ͡ mã hóa, gi̫i mã CBC [20]
Quá trình mã hóa CBC:
LҫQPmKyDÿҫu tiên: Plaintext XOR vӟi vector khӣi tҥo IV KӃt quҧ Eѭӟc trên là ÿҫu vào cho viӋc thӵc thi thuұt toán mã hóa vӟi khóa mã K
Lҫn mã hóa sau lҫQÿҫu tiên: Plaintext XOR vӟi ciphertext cӫa lҫQPmKyDWUѭӟc ÿy.Ӄt quҧ EѭӟFWUrQOjÿҫu vào cho viӋc thӵc thi thuұt toán mã hóa vӟi khóa mã
Quá trình giҧi mã CBC:
Lҫn giҧLPmÿҫXWLrQ&LSKHUWH[Wÿѭӧc thӵc thi quá trình giҧi mã vӟi khóa mã K KӃt quҧ EѭӟFWUrQÿѭӧc XOR vӟi vector khӣi tҥR,9ÿӇ tҥo ra plaintext
Lҫn giҧi mã sau lҫQÿҫXWLrQ&LSKHUWH[Wÿѭӧc thӵc thi quá trình giҧi mã vӟi khóa
26 mã K KӃt quҧ EѭӟFWUrQÿѭӧc XOR vӟi ciphertext sӱ dөng trong lҫn giҧLPmWUѭӟc ÿӇ tҥo ra plaintext ѬXÿLӇm:
Khҧ QăQJEҧo mұWFDRKѫQ(&%&LSKHUWH[WFӫa mӝt khӕi dӳ liӋu plaintext có thӇ khác nhau cho mӛi lҫn mã hóa vì nó phө thuӝc vào IV hoһc giá trӏ mã hóa (ciphertext) cӫa khӕi dӳ liӋu liӅQWUѭӟc
Quá trình giҧi mã vүn có thӇ thӵc hiӋn song song nhiӅu khӕi dӳ liӋu
ThiӃt kӃ phҫn cӭng phӭc tҥS KѫQ (&% 1JRjL ORJLF WKӵc thi thuұt toán mã hóa QJѭӡi thiӃt kӃ cҫn thiӃt kӃ thêm: Logic quҧQOtÿӝ dài chuӛi dӳ liӋu sӁ ÿѭӧc mã hóa, cө thӇ là sӕ Oѭӧng khӕi dӳ liӋu trong chuӛi dӳ liӋu; bӝ tҥo giá trӏ ngүu nhiên cho IV
Lӛi bit bӏ lan truyӅn NӃu mӝt lӛi bit xuҩt hiӋn trên ciphertext cӫa mӝt khӕi dӳ liӋu thì nó sӁ làm sai kӃt quҧ giҧi mã cӫa khӕi dӳ liӋXÿyYjNKӕi dӳ liӋu tiӃp theo
Không thӇ thӵc thi quá trình mã hóa song song vì xӱ lí cӫa khӕi dӳ liӋu sau phө thuӝc vào ciphertext cӫa khӕi dӳ liӋXWUѭӟc, trӯ lҫQPmKyDÿҫu tiên.
Cipher Feedback (CFB)
CFB là chӃ ÿӝ mã hóa mà ciphertext cӫa lҫn mã hóa hiӋn tҥi sӁ ÿѭӧc phҧn hӗi (feedback) ÿӃQ ÿҫu vào cӫa lҫn mã hóa tiӃS WKHR 1JKƭD Oj FLSKHUWH[W Fӫa lҫn mã hóa hiӋn tҥi sӁ ÿѭӧc sӱ dөQJÿӇ tính toán ciphertext cӫa lҫn mã hóa kӃ tiӃp
Hình 2.13: Ch͇ ÿ͡ mã hóa, gi̫i mã CFB [20]
Quá trình mã hóa CFB:
LҫQPmKyDÿҫu tiên: o Khӕi dӳ liӋu ngõ vào cӫa quá trình mã hóa lҩy tӯ IV, ӭng vӟi biӇu thӭc I1 o Vector khӣi tҥR,9ÿѭӧFPmKyDÿӇ tҥo ra mӝt khӕi giá trӏ chӭa b bit, ӭng vӟi biӇu thӭc O j o S bit MSB cӫa kӃt quҧ trên sӁ ÿѭӧF GQJ ÿӇ XOR vӟi s bit dӳ liӋu SODLQWH[WÿӇ tҥo ra s bit ciphertext, ӭng vӟi biӇu thӭc C # j
IV là giá trӏ không cҫn bҧo mұW QKѭQJ SKҧi là giá trӏ không thӇ dӵ ÿRiQ WUѭӟc ÿѭӧc ,9Fyÿӝ dài là b bit, bҵQJÿӝ dài cӫa mӝt khӕi dӳ liӋu mà chuҭn mã hóa quy ÿӏnh S là mӝt sӕ QJX\rQYjVEÿk\FKtQKOjÿӝ dài plaintext và ciphertext cho mӝt lҫn mã hóa/giҧi mã
Lҫn mã hóa sau lҫQÿҫu tiên: o Khӕi dӳ liӋu ngõ vào cӫDTXiWUuQKPmKyDÿѭӧc ghép giӳa b-s bit LSB cӫa khӕi ngõ vào cӫa lҫQPmKyDWUѭӟFÿyYjVELWFӫa ciphertext cӫa lҫn mã hóa WUѭӟFÿyӭng vӟi biӇu thӭc I j o Giá trӏ cӫDEѭӟFWUrQÿѭӧFPmKyDÿӇ tҥo ra mӝt khӕi giá trӏ chӭa b bit, ӭng
28 vӟi biӇu thӭc O j o S bit MSB cӫa kӃt quҧ trên sӁ ÿѭӧF GQJ ÿӇ XOR vӟi s bit dӳ liӋu SODLQWH[WÿӇ tҥo ra s bit ciphertext, ӭng vӟi biӇu thӭc C # j
Quá trình giҧLPm&)%WѭѫQJWӵ QKѭTXiWUuQKPmKyD&)%Yӟi ciphertext và plaintext KRiQÿәi vӏ trí cho nhau ѬXÿLӇm:
Khҧ QăQJEҧo mұWFDRKѫQ(&%&LSKHUWH[WFӫa mӝt khӕi dӳ liӋu plaintext có thӇ khác nhau cho mӛi lҫn mã hóa vì nó phө thuӝc vào IV hoһc giá trӏ mã hóa (ciphertext) cӫa khӕi dӳ liӋu liӅQWUѭӟc
Quá trình giҧi mã vүn có thӇ thӵc hiӋn song song nhiӅu khӕi dӳ liӋu
Tùy biӃQÿѭӧFÿӝ dài khӕi dӳ liӋu mã hóa, giҧi mã thông qua thông sӕ s
ThiӃt kӃ phҫn cӭng phӭc tҥSKѫQ&%&1JRjLQKӳng thành phҫQORJLFQKѭ&%& CFB cҫQ WKrP ORJLF ÿӇ chӑn sӕ bit cҫQ ÿѭӧc xӱ lí nӃu s là thông sӕ cҩu hình ÿѭӧc
Lӛi bit bӏ lan truyӅn NӃu mӝt lӛi bit xuҩt hiӋn trên ciphertext cӫa mӝt khӕi dӳ liӋu thì nó sӁ làm sai kӃt quҧ giҧi mã cӫa khӕi dӳ liӋXÿyYjNKӕi dӳ liӋu tiӃp theo
Không thӇ thӵc thi quá trình mã hóa song song vì xӱ lí cӫa khӕi dӳ liӋu sau phө thuӝc vào ciphertext cӫa khӕi dӳ liӋXWUѭӟc, trӯ lҫQPmKyDÿҫu tiên.
Output Feedback (OFB)
OFB là chӃ ÿӝ mã hóa mà giá trӏ ngõ ra cӫa khӕi thӵc thi thuұt toán mã hóa (không phҧi ciphertext) cӫa lҫn mã hóa hiӋn tҥi sӁ ÿѭӧc phҧn hӗLIHHGEDFNÿӃn ngõ vào cӫa lҫn mã hóa kӃ tiӃp
Hình 2.14: Ch͇ ÿ͡ mã hóa, gi̫i mã OFB [20]
Quá trình mã hóa OFB:
LҫQPmKyDÿҫu tiên: o Giá trӏ ,9ÿѭӧc lҩy làm khӕi giá trӏ ÿҫu vào mã hóa, ӭng vӟi biӇu thӭc I 1 o Thӵc thi giҧi thuұt mã hóa cho khӕi trên vӟi khóa mã K, ӭng vӟi biӇu thӭc
O j o XOR plaintext và kӃt quҧ cӫDEѭӟc trên, ӭng vӟi biӇu thӭc C j
Lҫn mã hóa sau lҫQÿҫXWLrQYjWUѭӟc lҫn cuӕi cùng: o Giá trӏ cӫa khӕLQJ}UDRXWSXWEORFNWUѭӟFÿyÿѭӧc lҩy làm khӕi giá trӏ ÿҫu vào mã hóa, ӭng vӟi biӇu thӭc I j o Thӵc thi giҧi thuұt mã hóa cho khӕi trên vӟi khóa mã K, ӭng vӟi biӇu thӭc
O j o XOR plaintext và kӃt quҧ cӫDEѭӟc trên, ӭng vӟi biӇu thӭc Cj
Lҫn mã hóa cuӕi cùng: o Giá trӏ cӫa khӕLQJ}UDRXWSXWEORFNWUѭӟFÿyÿѭӧc lҩy làm khӕi giá trӏ ÿҫu vào mã hóa, ӭng vӟi biӇu thӭc I j o Thӵc thi giҧi thuұt mã hóa cho khӕi trên vӟi khóa mã K, ӭng vӟi biӇu thӭc
O j o XOR plaintext vӟi các bit MSB cӫa kӃt quҧ cӫDEѭӟFWUrQWKHRÿӝ dài cӫa plaintext, ӭng vӟi biӇu thӭc C * n
Quá trình giҧi mã 2)%WѭѫQJWӵ QKѭTXiWUuQKPmKyD2)%Yӟi ciphertext và plaintext KRiQÿәi vӏ trí cho nhau
ChӃ ÿӝ OFB có nhӳQJÿһFÿLӇm cҫQFK~êQKѭVDX
Thuұt toán mã hóa không áp dөng trӵc tiӃSWUrQSODLQWH[WPjGQJÿӇ biӃQÿәi mӝt khӕi dӳ liӋu sinh ra tӯ IV và khӕi ngõ ra cӫa lҫQPmKyDWUѭӟFÿyĈLӇPQj\WѭѫQJ tӵ vӟi CFB
OFB khác vӟi CFB là nó xӱ lí trên mӝt khӕi dӳ liӋu vӟLÿӝ GjLELWÿҫ\ÿӫ QKѭ thuұW WRiQ Pm KyD TX\ ÿӏnh chӭ không xӱ lí trên mӝt phҫn hay mӝt vài bit cӫa khӕi dӳ liӋu ѬXÿLӇm:
Khҧ QăQJEҧo mұWFDRKѫQ(&%&LSKHUWH[WFӫa mӝt khӕi dӳ liӋu plaintext có thӇ khác nhau cho mӛi lҫn mã hóa vì nó phө thuӝc vào IV hoһc khӕi ngõ ra cӫa lҫn PmKyDWUѭӟFÿy
Lӛi bit không bӏ lan truyӅn Khi mӝt lӛi bit xuҩt hiӋn trên mӝt ciphertext, nó chӍ ҧQKKѭӣQJÿӃn kӃt quҧ giҧi mã cӫa khӕi dӳ liӋu hiӋn tҥi
ThiӃt kӃ phҫn cӭQJÿѫQ giҧQKѫQ&)%
Không thӇ thӵc hiӋn mã hóa/giҧi mã song song nhiӅu khӕi dӳ liӋu vì lҫn mã hóa/giҧi mã sau phө thuӝc vào khӕi ngõ ra cӫa lҫn mã hóa/giҧi mã liӅQWUѭӟFÿy
Counter (CTR)
CTR là chӃ ÿӝ mã hóa sӱ dөng mӝt tұp các khӕi ngõ vào, gӑLOjFiFFRXQWHUÿӇ sinh ra mӝt tұp các giá trӏ ngõ ra thông qua mӝt thuұWWRiQPmKyD6DXÿyJLiWUӏ ngõ ra sӁ ÿѭӧc XOR vӟi SODLQWH[WÿӇ tҥo ra ciphertext trong quá trình mã hóa, hoһc XOR vӟi ciphertext ÿӇ tҥo ra plaintext trong quá trình giҧi mã
Hình 2 15: Ch͇ ÿ͡ mã hóa, gi̫i mã CTR [20]
Giá trӏ cӫa khӕLQJ}UDRXWSXWEORFNÿѭӧc tҥo tӯ giá trӏ cӫa khӕi bӝ ÿӋm thӭ j bҵng cách thӵc thi giҧi thuұt mã hóa vӟi khóa K, ӭng vӟi biӇu thӭc Oj
Giá trӏ WUrQÿѭӧc XOR vӟi plaintext thӭ MÿӇ tҥo ra ciphertext thӭ j, ӭng vӟi biӇu thӭc C j Ĉӕi vӟi khӕi dӳ liӋu cuӕi cùng cӫa chuӛi dӳ liӋu, nӃXÿӝ dài bit cӫa plaintext ít KѫQÿӝ GjLELWTX\ÿӏnh bӣi chuҭn mã hóa thì chӍ lҩy các bit trӑng sӕ cao cӫa khӕi ngõ ra (output block) XOR vӟi plaintext, ӭng vӟi biӇu thӭc C * n
Giá trӏ cӫa khӕi ngõ ra (output block) ÿѭӧc tҥo tӯ giá trӏ cӫa khӕi bӝ ÿӋm thӭ j bҵng cách thӵc thi giҧi thuұt mã hóa vӟi khóa K, ӭng vӟi biӇu thӭc O j
Giá trӏ WUrQÿѭӧc XOR vӟi ciphertext thӭ MÿӇ tҥo ra plaintext thӭ j, ӭng vӟi biӇu thӭc C j Ĉӕi vӟi khӕi dӳ liӋu cuӕi cùng cӫa chuӛi dӳ liӋu, nӃXÿӝ dài bit cӫa ciphertext ít KѫQÿӝ GjLELWÿѭӧFTX\ÿӏnh bӣi chuҭn mã hóa thì chӍ lҩy các bit trӑng sӕ cao cӫa khӕi ngõ ra XOR vӟi ciphertext, ӭng vӟi biӇu thӭc P * n
ChӃ ÿӝ CTR có nhӳQJÿһFÿLӇm cҫn chú ý sau:
Thuұt toán mã hóa không áp dөng trӵc tiӃSWUrQSODLQWH[WPjGQJÿӇ biӃQÿәi mӝt khӕi dӳ liӋu sinh ra tӯ các bӝ ÿӃm (counter)
Quá trình mã hóa/giҧi mã cӫa mӛi khӕi dӳ liӋXOjÿӝc lұp ѬXÿLӇm:
Khҧ QăQJEҧo mұWFDRKѫQ(&%7X\TXiWUuQKPmKyDJLҧi mã cӫa mӛi khӕi dӳ liӋXOjÿӝc lұp nhӳng mӛi plaintext có thӇ ánh xҥ ÿӃn nhiӅu ciphertext tùy vào giá trӏ bӝ ÿӃm cӫa các lҫn mã hóa
Có thӇ mã hóa/giҧi mã song song nhiӅu khӕi dӳ liӋu
Phҫn cӭng cҫn thiӃt kӃ thêm các bӝ ÿӃm counter hoһc giҧi thuұt tҥo các giá trӏ counter không lһp lҥi
&+ѬѪ1*3: PHҪN MӄM VÀ KIT FPGA SӰ DӨNG TRONG
Phҫn mӅm mô phӓng Cadence
Hình 3.1: Ph̯n m͉m mô ph͗ng Cadence [13]
Cadence là mӝt trong nhӳng công cө (phҫn mӅm) thiӃt kӃ vi mҥch WѭѫQJWӵ phә biӃn hiӋn nay Công cө này cung cҩSÿӫ WtQKQăQJFKRYLӋc thiӃt kӃ vi mҥch nhanh chóng và dӉ dàng
9HULILFDWLRQOjEѭӟc quan trӑQJYjWKѭӡng gһp nhiӅXNKyNKăQtrong quá trình nghiên cӭu các mҥch tích hӧp SoC tӕFÿӝ cao hiӋn nay Giҧi pháp mô phӓQJ&DGHQFHWăQJFѭӡng khҧ QăQJGӵ ÿRiQQăQJVXҩt và chҩWOѭӧng
Cung cҩp các sӕ liӋu ÿӇ ÿROѭӡng tiӃQÿӝ trong quá trình Verification
Sӱ dөng các khái niӋm trӯXWѭӧng bao gӗm UVM, OVM, và eRM
Tұn dөng tӕLÿDKLӋu suҩWÿѫQYjÿDO}L
Công cө Testbench Verification cӫa Cadence tӵ ÿӝng hóa viӋc tҥo và tái sӱ dөng WHVWEHQFKÿӗng thӡi cung cҩp hӛ trӧ ÿDQJ{QQJӳ và sӱa lӛi nâng cao Sӱ dөng các công nghӋ Qj\QJѭӡi dùng có thӇ ÿҥWÿѭӧc quá trình Verification chҩWOѭӧQJQKDQKKѫQYjFDRKѫQWҥi các cҩSÿӝ block, chip, và hӋ thӕng
Phҫn mӅm Vivado
Vivado là phҫn mӅm có rҩt nhiӅu chӭFQăQJGQJÿӇ lұp trình và phát triӇn cho tҩt cҧ các loҥi chip cӫa Xilinx Nói mӝt cách ngҳn gӑn, nó hӛ trӧ tҩt cҧ các khâu cӫa quá trình thiӃt kӃ logic sӱ dөng FPGA
Vivado Design Suite cung cҩp mӝWP{LWUѭӡQJÿӇ cҩu hình, thӵc thi, kiӇm tra và tích hӧp
IP (Intellectual Property) IP có thӇ bao gӗm logic, các vi xӱ lý nhúng, các module xӱ lý tín hiӋu sӕ DSP, hoһc các thiӃt kӃ thuұt toán &iFWtQKQăQJFKtQKWURQJTXiWUuQKWKLӃt kӃ:
Xilinx Virtex UltraScale+ FPGA
Giӟi thiӋu vӅ FPGA
Field Programmable Gate Array (FPGA) là mӝt chip logic sӕ có thӇ lұSWUuQKÿѭӧc, tӭc là có thӇ sӱ dөQJFK~QJÿӇ lұp trình cho hҫu hӃt các chӭFQăQJFӫa bҩt kǤ mӝt thiӃt kӃ sӕ nào
Bӝ nhӟ WƭQKÿҫu tiên dӵa trên FPGA WKѭӡQJÿѭӧc gӑi là SRAM trên nӅQ)3*$ÿѭӧFÿӅ xuҩt bӣi :DKOVWURPYjRQăP6DXÿyEҧQWKѭѫQJPҥi cӫD)3*$ÿѭӧc Xilinx giӟi thiӋXYjRQăP Lúc này nó gӗm mӝt mҧng cӫa các khӕi logic có thӇ tái cҩu hình ±
&RQILJXUDEOH/RJLF%ORFNV&/%VYjFiFÿҫu vào ra ± I/O (input/output) Chip FPGA ÿҫu tiên chӭa 64 CLBs và 58 I/Os Phҫn lӟn các sҧn phҭm FPGA trên thӏ WUѭӡng hiӋn nay
36 ÿӅu dӵa trên công nghӋ SRAM vӟi 2 hãng sҧn xuҩt lӟn nhҩt là Xilinx và Altera Ngoài ra còn có các hãng sҧn xuҩW )3*$ QKѭQJ Yӟi mөF ÿtFK FKX\rQ GөQJ QKѭ $WPHO $FWHO Lattice, SiliconBlue
KiӃQWU~FFѫEҧn cӫa FPGA bao gӗm 3 thành phҫn chính: Khӕi logic có thӇ tái cҩu hình CLBs thӵc hiӋn các chӭFQăQJORJLFFiFWjLQJX\rQNӃt nӕi Programmable Interconnect có thӇ lұSWUuQKÿӇ kӃt nӕLFiFÿҫXYjRYjÿҫu ra cӫa các CLB và các khӕi I/O bên trong; các khӕi I/O cung cҩp giao tiӃp giӳa các ngoҥLYLYjFiFÿѭӡng tín hiӋu bên trong
Khӕi logic có thӇ tái cҩu hình: MөFÿtFKFӫa viӋc lұp trình khӕi logic trong FPGA
Oj ÿӇ cung cҩp các tính toán và các phҫn tӱ nhӟ Fѫ EҧQ ÿѭӧc sӱ dөng trong hӋ thӕng sӕ Mӝt phҫn tӱ ORJLFFѫEҧn gӗm mӝt mҥch tә hӧp có thӇ lұp trình, mӝt Flip-Flop hoһc mӝt chӕt (latch) Ngoài khӕL ORJLF Fѫ EҧQ ÿy QKLӅu chip FPGA hiӋn nay gӗm mӝt hӛn hӧp các khӕi khác nhau, mӝt sӕ WURQJÿyFKӍ ÿѭӧc dùng cho các chӭFQăQJFө thӇ, chҷng hҥn nKѭFiFNKӕi bӝ nhӟ chuyên dөng, các bӝ nhân hoһc các bӝ ghép kênh
Tài nguyên kӃt nӕi: Các liên kӃt trong mӝW)3*$GQJÿӇ liên kӃt các khӕi logic và I/O lҥi vӟL QKDX ÿӇ tҥo thành mӝt thiӃt kӃ Bao gӗm các bӝ ghép kênh, các transistor và bӝ ÿӋm ba trҥng thái Nhìn chung, các transistor và bӝ ghép kênh ÿѭӧc dùng trong mӝt cөPORJLFÿӇ kӃt nӕi các phҫn tӱ logic lҥi vӟi nhau, trong khi ÿy Fҧ ED ÿӅX ÿѭӧc dùng cho các cҩX WU~F ÿӏnh tuyӃn bên trong FPGA Mӝt sӕ FPGA cung cҩp nhiӅu kӃt nӕLÿѫQJLҧn giӳa các khӕi logic, mӝt sӕ khác cung cҩp ít kӃt nӕLKѫQQrQÿӏnh tuyӃn phӭc tҥSKѫQ
Khӕi I/O khҧ trình: I/O cung cҩp giao tiӃp giӳa các khӕi logic và kiӃQWU~Fÿӏnh tuyӃQ ÿӃn các thành phҫn bên ngoài Mӝt trong nhӳng vҩQ ÿӅ quan trӑng nhҩt trong thiӃt kӃ kiӃn trúc I/O là viӋc lӵa chӑn các tiêu chuҭQÿLӋn áp cung cҩp và ÿLӋn áp tham chiӃu
Theo thӡi gian, các kiӃQWU~F)3*$FѫEҧQÿmÿѭӧc phát triӇQKѫQQӳa thông qua viӋc bә sung các khӕi chӭFQăQJÿһc biӋt có thӇ lұSWUuQKQKѭEӝ nhӟ trong (Block RAMs), logic sӕ hӑc (ALU), bӝ nhân, DSP, và thұm chí là bӝ vi xӱ OtQK~QJÿѭӧc thêm vào do nhu cҫu cӫa các nguӗn tài nguyên cho mӝt ӭng dөng.
KiӃn trúc Xilinx FPGA
CҩXWU~FFѫEҧn cӫa mӝt FPGA bao gӗm các yӃu tӕ sau:
Look-up table (LUT): Phҫn tӱ này thӵc hiӋn các hoҥt ÿӝng logic
Flip-Flop (FF): Phҫn tӱ nhӟ OѭXWUӳ kӃt quҧ cӫa LUT
Wires: Các phҫn tӱ này kӃt nӕi các phҫn tӱ vӟi nhau
Input/Output pads: Là các cәng vұt lý có sҹn nhұn dӳ liӋu vào và ra khӓi FPGA
Sӵ kӃt hӧp cӫa các yӃu tӕ này tҥo thành kiӃQWU~FFѫEҧn cӫD)3*$ÿѭӧc hiӇn thӏ ӣ hình
Gѭӟi KiӃQWU~FQj\Ojÿӫ ÿӇ thӵc hiӋn bҩt kì thuұWWRiQQjRQKѭQJNӃt quҧ WKXÿѭӧc sӁ bӏ hҥn chӃ vӅ WK{QJ Oѭӧng tính toán, tài nguyên cҫn thiӃt và tҫn sӕ xung nhӏp có thӇ ÿҥt ÿѭӧc
KiӃn trúc Contemporary FPGA kӃt hӧp các yӃu tӕ FѫEҧn cùng vӟi các khӕLOѭXWUӳ dӳ liӋu và tính toán bә VXQJOjPWăQJPұWÿӝ tính toán và hiӋu quҧ cӫa thiӃt bӏ Các yӃu tӕ bә sung gӗm:
Bӝ nhӟ QK~QJGQJÿӇ OѭXWUӳ dӳ liӋu phân tán
Phase-ORFNHG ORRSV 3//V ÿӇ lái FPGA fabric vӟi các tӕF ÿӝ xung nhӏp khác nhau
Bӝ ÿLӅu khiӇn bӝ nhӟ ngoài chip
Sӵ kӃt hӧp cӫa các yӃu tӕ này cung cҩp cho FPGA tính linh hoҥW ÿӇ thӵc hiӋn bҩt kǤ thuұt toán phҫn mӅm nào chҥy trên bӝ xӱ lý
Hình 3.5: Ki͇n trúc Contemporary FPGA [15]
LUT: Là khӕi xây dӵQJFѫEҧn cӫa Xinlinx FPGA và có khҧ QăQJWKӵc hiӋn bҩt kǤ chӭc
QăQJORJLFQjRFӫa các biӃn N Boolean VӅ FѫEҧn, phҫn tӱ này là mӝt bҧng chân lý trong ÿyFiFNӃt hӧSÿҫu vào khác nhau thӵc hiӋn các chӭFQăQJNKiFQKDXÿӇ mang lҥi giá trӏ ÿҫu ra Giӟi hҥn vӅ NtFKWKѭӟc cӫa bҧng chân lý Oj1WURQJÿy1Ojÿҥi diӋn cho sӕ Oѭӧng ÿҫu vào cӫa /87Ĉӕi vӟL1ÿҫu vào, sӕ Oѭӧng vӏ trí bӝ nhӟ ÿѭӧc truy cұp bӣi bҧng là
2 N , cho phép bҧng thӵc hiӋn sӕ chӭFQăQJ N^N Giá trӏ tiêu biӇu cӫa N trong các thiӃt bӏ Xilinx là 6 TriӇn khai phҫn cӭng cӫa LUT có thӇ ÿѭӧc coi là mӝt tұp hӧp các ô nhӟ ÿѭӧc kӃt nӕi vӟi bӝ ghép kênh &iFÿҫu vào cӫD/87ÿyQJYDLWUzOjFiFELWFKӑn trên bӝ ghép NrQKÿӇ chӑn kӃt quҧ tҥi mӝt thӡLÿLӇm nhҩWÿӏnh LUT có thӇ ÿѭӧc sӱ dөng làm công cө tính toán hàm và phҫn tӱ OѭXWUӳ dӳ liӋu
Hình 3.6: ChͱFQăQJWLrXEL͋u cͯa LUT là m͡t t̵p hͫp các ô nhͣ [15]
Flip-Flop: LjÿѫQYӏ OѭXWUӳ FѫEҧn trong cҩu trúc FPGA Phҫn tӱ Qj\OX{Qÿѭӧc ghép nӕi vӟL/87ÿӇ hӛ trӧ ORJLFSLSHOLQLQJYjOѭXWUӳ dӳ liӋu CҩXWU~FFѫEҧn cӫa mӝt flip- flop bao gӗm data input, clock input, clock enable, reset, và data output Trong quá trình hoҥWÿӝng, bҩt kǤ giá trӏ nào tҥi cәQJÿҫu vào dӳ liӋXÿӅXÿѭӧc chӕt và chuyӇQÿӃQÿҫu ra trên mӛi xung clock MөFÿtFKFӫa clock enable là cho phép flip-flop giӳ mӝt giá trӏ cө thӇ trong nhiӅu xung clock Data input chӍ ÿѭӧc chӕt và chuyӇQÿӃn cәQJÿҫu ra dӳ liӋu khi cҧ FORFNYjFORFNHQDEOHÿӅu có giá trӏ bҵng mӝt
DSP Block: Khӕi tính toán phӭc tҥp nhҩt có sҹn trong Xilinx FPGA là khӕi DSP Khӕi
DSP là mӝWÿѫQYӏ logic sӕ hӑF$/8ÿѭӧc nhúng vào kӃt cҩu cӫa FPGA, bao gӗm mӝt chuӛi gӗm 3 khӕi khác nhau Chuӛi tính toán trong DSP bao gӗm mӝWÿѫQYӏ cӝng/trӯ ÿѭӧc kӃt nӕi vӟi mӝt sӕ nhân, và kӃt nӕi vӟi mӝt công cө cӝng/trӯWtFKONJ\FXӕi cùng Chuӛi này cho phép mӝWÿѫQYӏ DSP duy nhҩt thӵc hiӋn các chӭFQăQJ p = a x (b + d) + c hoһc p += a x (b + d)
Storage Elements: FPGA bao gӗm các thành phҫn bӝ nhӟ nhúng có thӇ ÿѭӧc sӱ dөng làm bӝ nhӟ truy cұp ngүu nhiên (RAM), bӝ nhӟ chӍ ÿӑc (ROM) hoһc shift registers Các thành phҫn này là block RAMs (BRAMs), UltraRAM blocks (URAMS), LUTs, và shift registers (SRLs).
Virtex UltraScale+ FPGA VU7P
KiӃn trúc Xilinx UltraScale bao gӗm các hӑ FPGA hiӋXQăQJ FDR036R&Yj 5)6R& ĈiSӭng nhiӅu yêu cҫu hӋ thӕng, tұp trung vào viӋc giҧm tәng mӭc tiêu thө ÿLӋn thông qua nhiӅu công nghӋ tiên tiӃn
9LUWH[8OWUD6FDOH)3*$V%ăQJWK{QJWKXSKiWFDRQKҩt, DSP count cao nhҩt, và bӝ nhӟ trong cao nhҩt trong kiӃn trúc UltraScale Virtex UltraScale+ FPGA FNJQJFXQJFҩp nhiӅu tùy chӑn vӅ QăQJ Oѭӧng mang lҥi sӵ cân bҵng tӕL ѭX JLӳa hiӋX QăQJ KӋ thӕng và ÿLӋn QăQJWLrXWKө nhӓ nhҩt
Hình 3.9: Tóm t̷WWtQKQăQJFͯa Virtex UltraScale+ FPGA [16]
Configurable Logic Block (CLB): Mӛi CLB trong kiӃn trúc UltraScale chӭa 8 LUTs và
16 flip-flops LUTs có thӇ ÿѭӧc cҩu hình là mӝt LUT có 6-input vӟi 1-output; hoһc hai LUT có 5-input vӟLÿҫu ra riêng biӋWYjÿҫu vào chung Mӛi LUT tùy chӑn có thӇ ÿѭӧc OѭXWUӳ trong mӝt flip-flop Ngoài LUTs và flip-flops, CLB còn chӭa logic sӕ hӑc và các bӝ JKpSNrQKÿӇ tҥo ra các hàm logic rӝQJKѫQ
Mӛi CLB chӭa mӝt slice Có hai loҥi slice: SLICEL và SLICEM LUTs trong SLICEM có thӇ ÿѭӧc cҩX KuQK QKѭ -ELW 5$0 QKѭ 32-bit shift registers (SRL32), hoһc hai SRL16s Các CLB trong kiӃQWU~F8OWUD6FDOHÿmWăQJNKҧ QăQJÿӏnh tuyӃn và kӃt nӕi so vӟi các CLB trong các thiӃt bӏ Xilinx thӃ hӋ WUѭӟc
&+ѬѪ1*4: HIӊN THӴC IP SECURITY TRÊN FPGA
Bӝ xӱ lý gói tin IPsec bao gӗm 3 khӕi chính: Khӕi xӱ lý JyLWLQÿҫu vào (Ingress Packet Processing), khӕi xӱ lý JyLWLQÿҫu ra (Egress Packet Processing) và khӕi mã hóa/giҧi mã (Crypto Processing)
Ingress Packet Processing bao gӗm: Ethernet RxMAC, Ingress Packet Header, Ingress Packet Parser, Ingress VRF Lookup, Ingress Security Policy, Ingress SPDB, Ingress SADB, Ingress Packet Reorder, Ingress Quality of Service, PCIe Card to Host
Egress Packet Processing bao gӗm: PCIe Host to Card, Egress Packet Header, Egress Packet Parser, Egress VRF Lookup, Egress Security Policy, Egress SA Lookup, Egress SADB, ESP Packet Encapsulation, Egress Packet Header Editor, Egress Packet Reorder, Egress Quality of Service, Ethernet TxMac
Crypto Processing: Encrypt, Decrypt Packet AES128/192/256
Hình 4.1: Hi n thc IPsec trên FPGA
Khӕi xӱ lý SDFNHWÿҫu vào bao gӗm các khӕi vӟi chӭFQăQJVDX
Ethernet RxMAC: Xӱ lý IUDPH (WKHUQHW ÿҫu vào Các hӋ thӕng giao tiӃp qua Ethernet chia mӝt dòng dӳ liӋu thành các mҧnh ngҳQKѫQJӑi là frame Mӛi frame gӗPFyÿӏa chӍ nguӗQÿӏa chӍ ÿtFKYjGӳ liӋu kiӇm tra lӛi sao cho các frame bӏ Kѭ hҥi có thӇ ÿѭӧc phát hiӋn và loҥi bӓ Các trҥm Ethernet giao tiӃp vӟi nhau bҵng cách gӱi cho nhau các gói dӳ liӋu, tӯng gói dӳ liӋXÿѭӧc gӱi và chuyӇn phát riêng lҿ Mӛi trҥP(WKHUQHWÿѭӧc cҩp mӝWÿӏa chӍ MAC 48-ELWĈӏa chӍ 0$&ÿѭӧc dùng
42 ÿӇ [iFÿӏnh nguӗQYjÿtFKFӫa gói dӳ liӋu Gói tin Ethernet gӗm có preamble, start frame delimiter (SPD); frame bҳW ÿҫu ngay sau SFD; frame kӃt thúc vӟi cyclic redundancy check 32-ELW GQJ ÿӇ phát hiӋn dӳ liӋX Kѭ Kӓng trong khi truyӅn Khӕi xӱ lý Ethernet bao gӗm các khӕi Physical Coding Sublayer (PCS), Physical Medium Attachment (PMA), Physical Medium Dependent (PMD), Media Access Control (MAC) và Logical Link Control (LLC)
Ingress Packet Header: Xӱ lýEyFWiFKWLrXÿӅ JyLWLQÿҫu vào (Ethernet header, IP KHDGHU(63KHDGHUô
Ingress Packet Parser: Khi nhұQÿѭӧc mӝWJyLWLQÿӃn, khӕi này sӁ xӱ lý WLrXÿӅ cӫDJyLWLQÿѭDUDQKӳng thông tin cҫn thiӃWÿӇ cung cҩp cho khӕi Ingress VRF Lookup
Ingress VRF Lookup: TiӃp nhұn thông tin bao gӗm Port_ID, MAC Address, VLAN_ID, IP address ÿӇ tra cӭXUDÿѭӧc VRF_ID ÿѭDTXDNKӕi Ingress Security Policy
Ingress Security Policy: TҥL ÿk\ JyL WLQ VӁ ÿѭӧc quyӃW ÿӏnh là loҥi bӓ ÿѭD OrQ Host, chuyӇn tiӃp ra Egress Processing, hoһFÿѭDTXDNKӕi xӱ lý giҧi mã IPsec
Ingress Security Policy Database: &ѫVӣ dӳ liӋu chính sách bҧo mұWÿҫu vào
Ingress Security Association Database: &ѫVӣ dӳ liӋX6$ÿҫu vào
Ingress Packet Reorder: Sҳp sӃp lҥi FiFJyLWLQÿӃn nӃu chúng sai thӭ tӵ
Ingress Quality of Service: Khӕi quҧn lý chҩWOѭӧng dӏch vө ÿҫu vào
3&,H&DUGWR+RVWĈѭDJyL tin tӯ FPGA lên máy chӫ thông qua giao thӭc PCIe
Khӕi xӱ lý SDFNHWÿҫu ra bao gӗm các khӕi vӟi chӭFQăQJVDX
3&,H +RVW WR &DUG ĈѭD JyL WLQ Wӯ máy chӫ xuӕng FPGA thông qua giao thӭc PCIe
Egress Packet Header: Xӱ lý EyF WiFK WLrX ÿӅ gói tin chuҭn bӏ xӱ lý ÿҫu ra (WKHUQHWKHDGHU,3KHDGHU(63KHDGHUô
Egress Packet Parser: Xӱ lý WLrXÿӅ cӫDJyLWLQÿѭDUDQKӳng thông tin cҫn thiӃWÿӇ cung cҩp cho khӕi Egress VRF Lookup
Egress VRF Lookup: TiӃp nhұn thông tin bao gӗm Queue_ID, MAC Address, VLAN_ID, ,3DGGUHVVÿӇ tra cӭXUDÿѭӧF95)B,'ÿѭDTXDNKӕi Egress Security Policy
Egress Security Policy: TҥLÿk\JyLWLQVӁ ÿѭӧc quyӃWÿӏnh là loҥi bӓ, chuyӇn tiӃp
43 ÿӃn khӕi xӱ lý ÿҫu ra, hoһFÿѭDTXDNKӕi xӱ lý mã hóa IPsec
EJUHVV6HFXULW\3ROLF\'DWDEDVH&ѫVӣ dӳ liӋu chính sách bҧo mұWÿҫu ra
EJUHVV6HFXULW\$VVRFLDWLRQ'DWDEDVH&ѫVӣ dӳ liӋX6$ÿҫu ra
ESP Packet Encapsulation: NӃu là gói tin IPsec ESP, gói tin sӁ ÿѭӧc gҳn nhãn ESP header, và tính ICV checksum
(JUHVV3DFNHW+HDGHU(GLWRU'QJ95)B,'ÿӇ truy xuҩWYjRFѫVӣ dӳ liӋXWLrXÿӅ ÿҫu ra, gói tin sӁ ÿѭӧFWKD\ÿәLWLrXÿӅ IP, Ethernet VDXÿyÿѭDTXDNKӕi Egress Packet Reorder
Egress Packet Reorder: Sҳp sӃp lҥLFiFJyLWLQÿӃn nӃu chúng sai thӭ tӵ
Egress Quality of Service: Khӕi quҧn lý chҩWOѭӧng dӏch vө ÿҫu ra
Ethernet TxMAC: Xӱ lý IUDPH(WKHUQHWÿҫu ra
Khӕi thӵc thi thuұt toán mã hóa/giҧi mã: Tính toán các thuұt toán mã hóa/giҧi mã phӭc tҥp ÿӇ giҧm tҧi công viӋc cho CPU
Lookup info: x vrf_id[7:0] x mul_ind x pkt_act[1:0]
Hình 4.3: Ki͇n trúc VRF Lookup
4.4 Các chӃ ÿӝ hoҥWÿӝng cӫa IKE
Có ba chӃ ÿӝ hoҥWÿӝng cӫD,.(ÿӇ quҧn lý mһt phҷng dӳ liӋu: IKE trên mһt phҷng dӳ liӋu (IKE on the data plane), IKE trên mһt phҷQJÿLӅu khiӇn (IKE on the control plane), chӃ ÿӝ hoҥWÿӝng không IKE (IKE-less operation) [3]
IKE trên mһt phҷng dӳ liӋu: Các node mһt phҷng dӳ liӋu IPsec hӛ trӧ xӱ lý giao thӭc IKEĈӇ giҧm tҧi viӋFWUDRÿәLWK{QJÿLӋp trong quy trình xӱ lý ,.(Qyÿѭӧc cҩu hình sҹn bӣi bӝ ÿLӅu khiӇn Bӝ ÿLӅu khiӇn có thӇ cҩXKuQKWUѭӟc các khóa xác thӵc (authentication keys); bӝ ÿLӅu khiӇn FNJQJcó thӇ phân phӕi các giá trӏ công khai Diffie-Hellman cho tҩt cҧ các node mһt phҷng dӳ liӋX,3VHFÿѭӧc liên kӃt
IKE trên mһt phҷQJÿLӅu khiӇn: Quy trình xӱ lý ,.(ÿѭӧFÿѭDYjRPһt phҷQJÿLӅu khiӇn Nó thӵc hiӋQ WUDR ÿәi khóa giӳa các node ngang hàng và quҧn lý SAD Cách tiӃp cұn này còn hӛ trӧ SA có thӇ ÿѭӧc chuyӇn sang các node mһt phҷng dӳ liӋu IPsec khác Ví dө QKѭWURQJWUѭӡng hӧp các hoҥWÿӝng chuyӇQÿәi dӵ phòng hoһc cân bҵng tҧi
ChӃ ÿӝ hoҥW ÿӝng không IKE: Quҧn lý SA không cҫn giao thӭc IKE Bӝ ÿLӅu khiӇn tҥo các thông tin cҫn thiӃt và thiӃt lұp SAs trong SAD cӫa các node mһt phҷng dӳ liӋu IPsec
1) IKE on the data plane
2) IKE on the control plane
D a ta P la n e C o n tr o l P la n e IKE
Hình 4.4: Các ch͇ ÿ͡ ho̩Wÿ͡ng qu̫n lý m̿t ph̻ng dͷ di u IPsec [3]
&+ѬѪ1* THIӂT Kӂ BӜ MÃ HÓA, GIҦI MÃ AES-128/192/256
5.1 Tәng quan thiӃt kӃ éWѭӣng thiӃt kӃ: ThiӃt kӃ bӝ mã hóa, giҧi mã AES hoҥWÿӝng ÿӝc lұp Hӛ trӧ ÿѭӧc 3 chӃ ÿӝ mã hóa/giҧi mã AES-128/192/256
ThiӃt kӃ hoҥWÿӝng ÿѭӧc vӟi tҫn sӕ cao (trên 312 Mhz)
Xӱ lý khӕi dӳ liӋu 128-bit Có thӇ tùy chӍnh thuұt toán mã hóa (AES-128/291/256) thông qua thanh ghi cҩu hình
Mӛi luӗng dӳ liӋu có thӇ ÿѭӧc thӵc thi vӟi mӝt khóa mã riêng biӋt
Tín hiӋu giao tiӃSÿѫQJLҧn
ThiӃt kӃ thӵc hiӋn cҩu trúc ӕng (pipeline)
Sӱ dөng hiӋu quҧ tài nguyên FPGA
1 Mô tҧ thiӃt kӃ: Tӯ nhӳng yêu cҫu cӫa thiӃt kӃ và dӵa trên khҧ QăQJF{QJQJKӋ hiӋn có, tôi sӁ xây dӵng nên toàn bӝ kiӃn trúc tәng quan cho thiӃt kӃ ĈѭDUDVѫÿӗ khӕi
47 và diӉn tҧ chӭFQăQJFӫa các khӕi
2 ViӃt code: HiӋn thӵFKyDFiFÿһc tҧ chi tiӃt bҵng ngôn ngӳ Verilog
3 KiӇm tra chӭFQăQJRTL verification): Ĉk\OjSKҫn sӁ tӕn khá nhiӅu thӡLJLDQÿӕi vӟi bҩt kǤ thiӃt kӃ nào VӅ FѫEҧn, kiӇm tra chӭFQăQJVӁ bao gӗPFiFEѭӟc sau:
HoҥFKÿӏnh cho viӋc kiӇm tra chӭFQăQJ
Xây dӵQJP{LWUѭӡng kiӇm tra
KiӇPWUDÿҫu ra và dҥng sóng
4 Tәng hӧp (Synthesis): Thuұt ngӳ V\QWKHVLVÿѭӧFGQJÿӇ mô tҧ vӅ sӵ chuyӇQÿәi trҥng thái cӫa thiӃt kӃ ӣ dҥng code sang dҥng cәng logic Quá trình chuyӇQÿәi này sӁ ÿѭӧc thӵc hiӋn chӫ yӃu bӣi phҫn mӅm thông qua các thông sӕ tӯ QJѭӡi dùng 6DXNKLV\QWKHVLVFK~QJWDÿmFyPӝt bӭc tranh toàn cҧnh vӅ thiӃt kӃ ӣ 2 mһt, luұn lý và vұt lý
5 Thӵc hiӋn (Implementation): Thӵc hiӋn các phân tích và tӕLѭXYӅ mһt vұt lêĈy là sӵ sҳSÿһt các phҫn tӱ, lӵa chӑn và kӃt nӕi chúng trên mӝWÿӏQKKѭӟng vӅ sӵ tӕi ѭXFiF\Ӄu tӕ: Timing, Area và Power consumption
6 KiӇm tra trên FPGA: TiӃn hành chҥy thӱ ӭng dөng và kiӇm tra chӭFQăQJWKӵc tӃ trên bo mҥch FPGA
Bӝ mã hóa AES-128/192/256 aes_encrypt_core gӗm 2 khӕi: Khӕi mã hóa dӳ liӋu aes_encrypt, khӕi tính toán tҥo khóa vòng aes_keyexp
B̫ng 5.1: Các tín hi u cͯa b͡ mã hóa
Tín hiӋu Ĉӝ rӝng bit Tín hiӋu vào/ra Mô tҧ clk 1 Tín hiӋu vào &ORFNÿӗng bӝ rst 1 Tín hiӋu vào Reset tích cӵc mӭc cao imode 2 Tín hiӋu vào ChӃ ÿӝ mã hóa
0: AES-128 1: AES-192 2: AES-256 3: Bypass ivalid 1 Tín hiӋu vào Tín hiӋu cho biӃt giá trӏ dӳ liӋu ÿҫu vô có hiӋu lӵc, khi ivalid = 1
48 thì bӝ mã hóa AES sӁ ÿѭӧc thӵc thi ickey 256 Tín hiӋu vào Khóa mã iptext 128 Tín hiӋu vào Dӳ liӋu cҫn mã hóa (bҧn rõ) ovalid 1 Tín hiӋu ra Tín hiӋu cho biӃt giá trӏ dӳ liӋu ÿҫu ra có hiӋu lӵc, khi ovalid = 1 báo hiӋu tín hiӋXÿmÿѭӧc mã hóa xong octext 128 Tín hiӋu ra Dӳ liӋXVDXNKLÿѭӧc mã hóa (bҧn mã) Các tín hiӋu giao tiӃp giӳa khӕi aes_encrypt và khӕi aes_keyexp: bypass_n và imkey_n
ThiӃt kӃ sӱ dөng các khӕi vӟi các chӭc QăQJFKX\rQELӋWQKѭVDX
Subbyte: Thӵc hiӋn chӭFQăQJ6XE%\WH
Shiftrow: Thӵc hiӋn chӭFQăQJ6KLIW5RZ
Mixcolumn: Thӵc hiӋn chӭFQăQJ0L[&ROXPQ
Addroundkey: Thӵc hiӋn chӭFQăQJ$GG5RXQG.H\
Matrixmul: Thӵc hiӋn chӭFQăQJQKkQPDWUұn trong chuҭn AES
Gf8mult0x02: Thӵc hiӋn chӭFQăQJQKkQYӟi 0x02 aes_encrypt_core aes_key_expansion clk rst ivalid iptext[127:0] ickey[255:0] imode[1:0] ovalid octext[127:0] imkey[127:0] clk rst ickey[255:0] imode[1:0] imkey[127:0]
Hình 5.1: 6˯ÿ͛ kh͙i b͡ mã hóa AES
Khӕi này thӵc hiӋn chӭFQăQJ.H\([SDQVLRQ, sӱ dөng 15 tín hiӋu imkey[127:0] ÿӇ OѭX lҥi giá trӏ khóa vòng sau mӛi lҫn tính toán Ӭng vӟi mӛi chӃ ÿӝ mã hóa 1N WѭѫQJӭng AES128/192/256) thì 32-bit cuӕi sӁ ÿѭӧc biӃQÿәLTXDFiFEѭӟc:
5RW:RUGĈҧo byte MSB xuӕng LSB
AddRcon: Lҩy ngõ ra SubWord XOR vӟi giá trӏ Rcon
Giá trӏ Rcon[] sӱ dөng cho chӭFQăQJ.H\([SDQVLRQOj-bit [9] :
Trong ÿyUF i là mӝt giá trӏ 8-bit ÿѭӧFÿӏQKQJKƭDQKѭVDX [9] :
KӃt quҧ sau khi AddRcon sӁ ÿѭӧFGQJÿӇ tҥo ra các word cӫa imkey[127:0]
B̫ng 5.2: Giá tr͓ 5FRQ>@W˱˯QJͱng m͟i vòng l̿p khóa mã [9]
Vӏ trí Rcon[] Giá trӏ HEX
Select okey imkey[127:0] next_key[255:0] imode[1:0] next_key[255:0] okey[127:0]
Hình 5.2: M̩ch logic kh͙i AES Key Expansion
5.2.2 Mҥch logic khӕi mã hóa AES
Khӕi mã hóa dӳ liӋu AES aes_encrypt gӗm: x Khӕi AddRoundKey có chӭFQăQJ XOR khóa mã vӟi ma trұn dӳ liӋu Eѭӟc khӣi tҥo), hoһc XOR khóa vòng vӟi ma trұn trҥng thái Eѭӟc lһSPmKyDYjEѭӟc tҥo ngõ ra) x Khӕi SubByte thӵc hiӋn thay thӃ tӯng byte cӫa ma trұn trҥng thái (ngõ ra cӫa AddRoundKey) bҵng mӝt giá trӏ ÿmTX\ÿӏnh trong chuҭn AES (bҧng S-box) x Khӕi ShiftRow thӵc hiӋn quay trái tӯng hàng cӫa ma trұn trҥng thái (ngõ ra cӫa SubBytes) theo byte vӟi hӋ sӕ WăQJGҫn tӯ ÿӃQ+jQJÿҫu tiên có hӋ sӕ quay là WKuFiFE\WHÿѭӧc giӳ nguyên vӏ trí Hàng thӭ 2 có hӋ sӕ quay là 1 thì các byte ÿѭӧc quay 1-byte Hàng thӭ ba quay 2-byte và hàng thӭ WѭTXD\-byte x Khӕi MixColumn thӵc hiӋn nhân tӯng cӝt cӫa ma trұn trҥng thái (ngõ ra cӫa ShiftRows) vӟi mӝt ma trұn chuyӇQÿәLTX\ÿӏnh bӣi chuҭn AES x Khӕi Select Next Data: Lӵa chӑn dӳ liӋXFKREѭӟc lһp kӃ tiӃp dӵDYjREѭӟc lһp hiӋn tҥi và chӃ ÿӝ mã hóa x Khӕi Cipher Complete: KӃt thúc quá trình mã hóa YjÿѭDUDNӃt quҧ
51 x Khӕi Key Expansion thӵc hiӋQWtQKWRiQNKyDYzQJFKREѭӟc lһSPmKyDYjEѭӟc tҥo ngõ ra
Select Next Data iptext[127:0] imkey[127:0] nxtdata[127:0]
Cipher Complete rdresult[127:0] octext[127:0] imode[1:0]
Hình 5.3: M̩ch nguyên lý b͡ mã hóa AES
Bӝ giҧi mã AES-128/192/256 aes_decrypt_core gӗm 2 khӕi: Khӕi giҧi mã dӳ liӋu aes_decrypt, khӕi tính toán tҥo khóa vòng aes_invkeyexp
B̫ng 5.3: Các tín hi u cͯa b͡ gi̫i mã
Tín hiӋu Ĉӝ rӝng bit Tín hiӋu vào/ra Mô tҧ clk 1 Tín hiӋu vào Clock ÿӗng bӝ rst 1 Tín hiӋu vào Reset tích cӵc mӭc cao imode 2 Tín hiӋu vào ChӃ ÿӝ mã hóa
0: AES-128 1: AES-192 2: AES-256 3: Bypass ivalid 1 Tín hiӋu vào Tín hiӋu cho biӃt giá trӏ dӳ liӋXÿҫu vô có hiӋu lӵc, khi ivalid = 1 thì bӝ giҧi mã AES sӁ ÿѭӧc thӵc thi
Parser flowchart
KiӃn trúc VRF Lookup
Lookup info: x vrf_id[7:0] x mul_ind x pkt_act[1:0]
Hình 4.3: Ki͇n trúc VRF Lookup
Các chӃ ÿӝ hoҥWÿӝng cӫa IKE
Có ba chӃ ÿӝ hoҥWÿӝng cӫD,.(ÿӇ quҧn lý mһt phҷng dӳ liӋu: IKE trên mһt phҷng dӳ liӋu (IKE on the data plane), IKE trên mһt phҷQJÿLӅu khiӇn (IKE on the control plane), chӃ ÿӝ hoҥWÿӝng không IKE (IKE-less operation) [3]
IKE trên mһt phҷng dӳ liӋu: Các node mһt phҷng dӳ liӋu IPsec hӛ trӧ xӱ lý giao thӭc IKEĈӇ giҧm tҧi viӋFWUDRÿәLWK{QJÿLӋp trong quy trình xӱ lý ,.(Qyÿѭӧc cҩu hình sҹn bӣi bӝ ÿLӅu khiӇn Bӝ ÿLӅu khiӇn có thӇ cҩXKuQKWUѭӟc các khóa xác thӵc (authentication keys); bӝ ÿLӅu khiӇn FNJQJcó thӇ phân phӕi các giá trӏ công khai Diffie-Hellman cho tҩt cҧ các node mһt phҷng dӳ liӋX,3VHFÿѭӧc liên kӃt
IKE trên mһt phҷQJÿLӅu khiӇn: Quy trình xӱ lý ,.(ÿѭӧFÿѭDYjRPһt phҷQJÿLӅu khiӇn Nó thӵc hiӋQ WUDR ÿәi khóa giӳa các node ngang hàng và quҧn lý SAD Cách tiӃp cұn này còn hӛ trӧ SA có thӇ ÿѭӧc chuyӇn sang các node mһt phҷng dӳ liӋu IPsec khác Ví dө QKѭWURQJWUѭӡng hӧp các hoҥWÿӝng chuyӇQÿәi dӵ phòng hoһc cân bҵng tҧi
ChӃ ÿӝ hoҥW ÿӝng không IKE: Quҧn lý SA không cҫn giao thӭc IKE Bӝ ÿLӅu khiӇn tҥo các thông tin cҫn thiӃt và thiӃt lұp SAs trong SAD cӫa các node mһt phҷng dӳ liӋu IPsec
1) IKE on the data plane
2) IKE on the control plane
D a ta P la n e C o n tr o l P la n e IKE
Hình 4.4: Các ch͇ ÿ͡ ho̩Wÿ͡ng qu̫n lý m̿t ph̻ng dͷ di u IPsec [3]
&+ѬѪ1* THIӂT Kӂ BӜ MÃ HÓA, GIҦI MÃ AES-128/192/256
Tәng quan thiӃt kӃ
éWѭӣng thiӃt kӃ: ThiӃt kӃ bӝ mã hóa, giҧi mã AES hoҥWÿӝng ÿӝc lұp Hӛ trӧ ÿѭӧc 3 chӃ ÿӝ mã hóa/giҧi mã AES-128/192/256
ThiӃt kӃ hoҥWÿӝng ÿѭӧc vӟi tҫn sӕ cao (trên 312 Mhz)
Xӱ lý khӕi dӳ liӋu 128-bit Có thӇ tùy chӍnh thuұt toán mã hóa (AES-128/291/256) thông qua thanh ghi cҩu hình
Mӛi luӗng dӳ liӋu có thӇ ÿѭӧc thӵc thi vӟi mӝt khóa mã riêng biӋt
Tín hiӋu giao tiӃSÿѫQJLҧn
ThiӃt kӃ thӵc hiӋn cҩu trúc ӕng (pipeline)
Sӱ dөng hiӋu quҧ tài nguyên FPGA
1 Mô tҧ thiӃt kӃ: Tӯ nhӳng yêu cҫu cӫa thiӃt kӃ và dӵa trên khҧ QăQJF{QJQJKӋ hiӋn có, tôi sӁ xây dӵng nên toàn bӝ kiӃn trúc tәng quan cho thiӃt kӃ ĈѭDUDVѫÿӗ khӕi
47 và diӉn tҧ chӭFQăQJFӫa các khӕi
2 ViӃt code: HiӋn thӵFKyDFiFÿһc tҧ chi tiӃt bҵng ngôn ngӳ Verilog
3 KiӇm tra chӭFQăQJRTL verification): Ĉk\OjSKҫn sӁ tӕn khá nhiӅu thӡLJLDQÿӕi vӟi bҩt kǤ thiӃt kӃ nào VӅ FѫEҧn, kiӇm tra chӭFQăQJVӁ bao gӗPFiFEѭӟc sau:
HoҥFKÿӏnh cho viӋc kiӇm tra chӭFQăQJ
Xây dӵQJP{LWUѭӡng kiӇm tra
KiӇPWUDÿҫu ra và dҥng sóng
4 Tәng hӧp (Synthesis): Thuұt ngӳ V\QWKHVLVÿѭӧFGQJÿӇ mô tҧ vӅ sӵ chuyӇQÿәi trҥng thái cӫa thiӃt kӃ ӣ dҥng code sang dҥng cәng logic Quá trình chuyӇQÿәi này sӁ ÿѭӧc thӵc hiӋn chӫ yӃu bӣi phҫn mӅm thông qua các thông sӕ tӯ QJѭӡi dùng 6DXNKLV\QWKHVLVFK~QJWDÿmFyPӝt bӭc tranh toàn cҧnh vӅ thiӃt kӃ ӣ 2 mһt, luұn lý và vұt lý
5 Thӵc hiӋn (Implementation): Thӵc hiӋn các phân tích và tӕLѭXYӅ mһt vұt lêĈy là sӵ sҳSÿһt các phҫn tӱ, lӵa chӑn và kӃt nӕi chúng trên mӝWÿӏQKKѭӟng vӅ sӵ tӕi ѭXFiF\Ӄu tӕ: Timing, Area và Power consumption
6 KiӇm tra trên FPGA: TiӃn hành chҥy thӱ ӭng dөng và kiӇm tra chӭFQăQJWKӵc tӃ trên bo mҥch FPGA.
ThiӃt kӃ bӝ mã hóa AES-128/192/256
Mҥch logic khӕi KeyExpansion
Khӕi này thӵc hiӋn chӭFQăQJ.H\([SDQVLRQ, sӱ dөng 15 tín hiӋu imkey[127:0] ÿӇ OѭX lҥi giá trӏ khóa vòng sau mӛi lҫn tính toán Ӭng vӟi mӛi chӃ ÿӝ mã hóa 1N WѭѫQJӭng AES128/192/256) thì 32-bit cuӕi sӁ ÿѭӧc biӃQÿәLTXDFiFEѭӟc:
5RW:RUGĈҧo byte MSB xuӕng LSB
AddRcon: Lҩy ngõ ra SubWord XOR vӟi giá trӏ Rcon
Giá trӏ Rcon[] sӱ dөng cho chӭFQăQJ.H\([SDQVLRQOj-bit [9] :
Trong ÿyUF i là mӝt giá trӏ 8-bit ÿѭӧFÿӏQKQJKƭDQKѭVDX [9] :
KӃt quҧ sau khi AddRcon sӁ ÿѭӧFGQJÿӇ tҥo ra các word cӫa imkey[127:0]
B̫ng 5.2: Giá tr͓ 5FRQ>@W˱˯QJͱng m͟i vòng l̿p khóa mã [9]
Vӏ trí Rcon[] Giá trӏ HEX
Select okey imkey[127:0] next_key[255:0] imode[1:0] next_key[255:0] okey[127:0]
Hình 5.2: M̩ch logic kh͙i AES Key Expansion
Mҥch logic khӕi mã hóa AES
Khӕi mã hóa dӳ liӋu AES aes_encrypt gӗm: x Khӕi AddRoundKey có chӭFQăQJ XOR khóa mã vӟi ma trұn dӳ liӋu Eѭӟc khӣi tҥo), hoһc XOR khóa vòng vӟi ma trұn trҥng thái Eѭӟc lһSPmKyDYjEѭӟc tҥo ngõ ra) x Khӕi SubByte thӵc hiӋn thay thӃ tӯng byte cӫa ma trұn trҥng thái (ngõ ra cӫa AddRoundKey) bҵng mӝt giá trӏ ÿmTX\ÿӏnh trong chuҭn AES (bҧng S-box) x Khӕi ShiftRow thӵc hiӋn quay trái tӯng hàng cӫa ma trұn trҥng thái (ngõ ra cӫa SubBytes) theo byte vӟi hӋ sӕ WăQJGҫn tӯ ÿӃQ+jQJÿҫu tiên có hӋ sӕ quay là WKuFiFE\WHÿѭӧc giӳ nguyên vӏ trí Hàng thӭ 2 có hӋ sӕ quay là 1 thì các byte ÿѭӧc quay 1-byte Hàng thӭ ba quay 2-byte và hàng thӭ WѭTXD\-byte x Khӕi MixColumn thӵc hiӋn nhân tӯng cӝt cӫa ma trұn trҥng thái (ngõ ra cӫa ShiftRows) vӟi mӝt ma trұn chuyӇQÿәLTX\ÿӏnh bӣi chuҭn AES x Khӕi Select Next Data: Lӵa chӑn dӳ liӋXFKREѭӟc lһp kӃ tiӃp dӵDYjREѭӟc lһp hiӋn tҥi và chӃ ÿӝ mã hóa x Khӕi Cipher Complete: KӃt thúc quá trình mã hóa YjÿѭDUDNӃt quҧ
51 x Khӕi Key Expansion thӵc hiӋQWtQKWRiQNKyDYzQJFKREѭӟc lһSPmKyDYjEѭӟc tҥo ngõ ra
Select Next Data iptext[127:0] imkey[127:0] nxtdata[127:0]
Cipher Complete rdresult[127:0] octext[127:0] imode[1:0]
Hình 5.3: M̩ch nguyên lý b͡ mã hóa AES
ThiӃt kӃ bӝ giҧi mã AES-128/192/256
Mҥch logic khӕi Inverse KeyExpansion
Khӕi này thӵc hiӋn chӭFQăQJWtQKNKyDYzQJÿҧo Inverse KeyExpansion Có hai cách thiӃt kӃ mҥch logic khӕi Inverse KeyExpansion:
Invkeyexp_core: Sӱ dөng khóa vòng cuӕL FQJ ÿӇ tính lҫQ Oѭӧt các NKyDYzQJWUѭӟFÿy
Sӱ dөng thiӃt kӃ KeyExpansion ӣ phҫQWUrQOѭXNӃt quҧ vào thanh ghi Bӝ giҧi mã thӵFWKLÿӃQEѭӟc nào sӁ sӱ dөQJLPNH\>@WѭѫQJӭng
7DÿLYjRWKLӃt kӃ logic cӫa khӕi Invkeyexp_core Khӕi này thӵc hiӋn chӭFQăQJInverse KeyExpansion, sӱ dөng 15 tín hiӋu LPNH\>@ÿӇ OѭXOҥi giá trӏ khóa vòng sau mӛi lҫn tính toán Ӭng vӟi mӛi chӃ ÿӝ PmKyD1N WѭѫQJӭng AES-128/192/256) thì 32-bit cuӕi sӁ ÿѭӧc biӃQÿәLTXDFiFEѭӟc:
5RW:RUGĈҧo byte MSB xuӕng LSB
AddRcon: Lҩy ngõ ra SubWord XOR vӟi giá trӏ Rcon Thӭ tӵ 5FRQÿѭӧFÿҧo so vӟi quá trình mã hóa
Giá trӏ Rcon[] sӱ dөng cho chӭFQăQJInverse KeyExpansion là 32-bit
KӃt quҧ sau khi AddRcon sӁ ÿѭӧFGQJÿӇ tҥo ra các word cӫa imkey[127:0]
B̫ng 5.4: Giá tr͓ 5FRQ>@W˱˯QJͱng m͟i vòng l̿p khóa gi̫i mã [9]
Vӏ trí Rcon[] Giá trӏ HEX
SubWord RotWord Add InvRcon w[j-8] w[j-7] w[j-6] w[j-5] w[j-4] w[j-3] w[j-2] w[j-1] ikey[255:0]
Invert Key Expansion XOR processing
Select okey imkey[127:0] next_key[255:0] imode[1:0] next_key[255:0] okey[127:0]
Hình 5.5: M̩ch logic kh͙i AES Inverse Key Expansion
Mҥch logic khӕi giҧi mã AES
Khӕi giҧi mã dӳ liӋu AES aes_decrypt gӗm: x Khӕi AddRoundKey có chӭFQăQJXOR khóa giҧi mã vӟi ma trұn mã hóa, hoһc XOR khóa vòng vӟi ma trұn trҥng thái Eѭӟc lһSPmKyDYjEѭӟc tҥo ngõ ra) x Khӕi Select Next Step xem xét quá trình giҧLPmÿDQJӣ Eѭӟc khӣi tҥo hoһFEѭӟc lһp mã hóa thì dӳ liӋu sӁ ÿѭӧc chuyӇn tiӃSÿӃn khӕi InvMixColumn, quá trình giҧi PmÿDQJӣ Eѭӟc tҥo ngõ ra thì dӳ liӋu sӁ ÿѭӧc chuyӇn tiӃSÿӃn khӕi InvSubByte ÿӇ thӵc hiӋQFiFEѭӟc cuӕLFQJWUѭӟc khi hoàn thành quá trình giҧi mã x Khӕi InvMixColumns Ojÿҧo cӫa MixColumns trong quá trình mã hóa Tӯng cӝt cӫa ma trұn trҥng thái sӁ ÿѭӧc nhân vӟi ma trұn chuyӇQÿәi InvMixColumns chӭa các khӕi nhӓ KѫQÿӇ thӵc hiӋn các phép nhân vӟi tӯng phҫn tӱ cӫa ma trұn chuyӇn ÿәi: gf8mult0x09, gf8mult0x0b, gf8mult0x0d, gf8mult0x0e
55 x Khӕi InvSubBytes thӵc hiӋn thay thӃ tӯng byte cӫa ma trұn trҥng thái bҵng mӝt giá trӏ ÿm TX\ ÿӏnh trong chuҭn AES BҧQJ TX\ ÿӏnh giá trӏ thay thӃ cho InvSubBytes gӑi là S-ER[ÿҧo x Khӕi InvShiftRows thӵc hiӋn quay phҧi tӯng hàng cӫa ma trұn trҥng thái sinh ra tӯ EѭӟFWUѭӟFÿytheo byte vӟi hӋ sӕ TXD\WăQJGҫn tӯ ÿӃn 3 HànJÿҫu tiên có hӋ sӕ TXD\OjWKuFiFE\WHÿѭӧc giӳ nguyên vӏ trí Hàng thӭ hai có hӋ sӕ quay là 1 WKuÿѭӧc quay 1-byte, hàng thӭ ba quay 2-byte và hàng thӭ 4 quay 3-byte x Khӕi Select Next Data xem xét quá trình giҧLPmÿDQJӣ EѭӟFQjRÿӇ lӵa chӑn dӳ liӋu chuyӇn tiӃSÿӃn khӕi AddRoundKey NӃu quá trình giҧLPmÿDQJӣ Eѭӟc khӣi tҥo thì dӳ liӋXÿҫu vô giҧLPmÿѭӧc lӵa chӑn, nӃu quá trình giҧLPmÿDQJӣ Eѭӟc lһp mã hóa hoһFEѭӟc tҥo ngõ ra thì dӳ liӋu tӯ khӕL,QY6KLIW5RZÿѭӧc lӵa chӑn x Khӕi Inverse KeyExpansion thӵc hiӋn chӭFQăQJWtQKNKyDYzQJÿҧo
Inverse Key Expansion imode[1:0] ickey[255:0]
Select Next Data ictext[127:0] imkey[127:0] nxtdata[127:0]
AddRoundkey optext[127:0] imode[1:0] ickey_last[255:0]
InvMixColumn Select Next Step nxtdata[127:0] rdresult[127:0]
Hình 5.6: M̩ch nguyên lý b͡ gi̫i mã AES
&+ѬѪ1* KӂT QUҦ MÔ PHӒNG VÀ TRIӆN KHAI THUҰT
KӃt quҧ mô phӓng
KӃt quҧ mô phӓng AES-128
ĈӇ mô phӓng kiӇm tra chӭFQăQJPmKyDJLҧi mã AES-128, ta sӱ dөng bӝ thông sӕ kiӇm WUDÿѭӧFÿѭa ra trong tiêu chuҭQ³$GYDQFHG(QFU\SWLRQ6WDQGDUG),3638%´ Thông sӕ mô phӓng AES-ÿѭӧc thӇ hiӋn trong bҧng sau
B̫ng 6.1: Thông s͙ mô ph͗ng AES-128
Mã hóa AES-128 bao gӗPEѭӟc khӣi tҥR Eѭӟc lһS Pm KyD Eѭӟc kӃt thúc Mӛi Eѭӟc lһp lҥi thӵc hiӋn các chӭF QăQJ $GG5RXQG.H\ 6XE%\WHV 6KLIW5RZV Yj MixColumns KӃt quҧ ÿҥWÿѭӧc sau mӛLEѭӟc tuân thӫ ÿ~QJVRYӟi tiêu chuҭn mã hóa AES Thông sӕ ÿѭӧc thӇ hiӋn trong bҧng sau
B̫ng 6.2: Thông s͙ mã hóa AES-128
Giҧi mã AES-128 bao gӗPEѭӟc khӣi tҥo, Eѭӟc lһp giҧi mãEѭӟc kӃt thúc Mӛi Eѭӟc lһp lҥi thӵc hiӋn các chӭFQăQJ,QY$GG5RXQG.H\,QY6XE%\WHV,QY6KLIW5RZVYj InvMixColumns KӃt quҧ ÿҥWÿѭӧc sau mӛLEѭӟc tuân thӫ ÿ~QJVRYӟi tiêu chuҭn mã hóa AES Thông sӕ ÿѭӧc thӇ hiӋn trong bҧng sau
B̫ng 6.3: Thông s͙ gi̫i mã AES-128
+uQKErQGѭӟi thӇ hiӋn kӃt quҧ mô phӓng mã hóa và giҧi mã AES-128 trên công cө Cadence
Mô phӓng thӵc hiӋn vӟi tҫn sӕ clock 312Mhz
ChӃ mӝ mó húa/giҧLPmLPRGH>@ ảGWѭѫQJӭng vӟi AES-128
Dӳ liӋXÿҫu vào (input) có giá trӏ là: ipdat[127:0] ảKBB$$%%B&&''(())
KyDPmFLSKHUNH\GQJÿӇ mã hóa có giá trӏ là ickey[127:0] ảKBB$%B&'()
Dӳ liӋXÿѭӧc mã hóa sau 31 chu kì clock (~99.4 ns)
KӃt quҧ mã hóa có giá trӏ là oencpt_dat [127:0] ảKFHGBDEBGFGEBEFD
KӃt quҧ mã hóa AES-WKXÿѭӧFÿ~QJEҵng kӃt quҧ cӫa phép kiӇm tra trong chuҭQ³$GYDQFHG(QFU\SWLRQ6WDQGDUG),3638%´JLiWUӏ FiFEѭӟc trung JLDQFNJQJFKtQK[iF
6DXÿyVӱ dөng kӃt quҧ PmKyDÿҫXUDRHQFSWBGDW>@ÿӇ ÿѭDYjREӝ giҧi mã AES-128
Khóa mã FLSKHUNH\GQJÿӇ giҧi mã có giá trӏ là ickey[127:0] ảKBB$%B&'()
Dӳ liӋXÿѭӧc giҧi mã sau 31 chu kì clock (~99.4 ns)
KӃt quҧ giҧi mã có giá trӏ là odecpt_dat[127:0] ảKBB$$%%B&&''(()) KӃt quҧ Qj\ÿ~QJEҵng vӟi giá trӏ dӳ liӋXÿҫXYjREDQÿҫXWDÿѭDUDJLiWUӏ FiFEѭӟFWUXQJJLDQFNJQJFKtQK
Hình 6.1: K͇t qu̫ mô ph͗ng AES-128 trên công cͭ Cadence
KӃt quҧ mô phӓng AES-192
ĈӇ mô phӓng kiӇm tra chӭFQăQJPmKyDJLҧi mã AES-192, ta sӱ dөng bӝ thông sӕ kiӇm WUDÿѭӧFÿѭDUDWURQJWLrXFKXҭQ³$GYDQFHG(QFU\SWLRQ6WDQGDUG),3638%´7K{QJ sӕ mô phӓng AES-ÿѭӧc thӇ hiӋn trong bҧng sau
B̫ng 6.4: Các thông s͙ mô ph͗ng AES-192
Mã hóa AES-192 bao gӗPEѭӟc khӣi tҥo, 11 Eѭӟc lһSPmKyDEѭӟc kӃt thúc Mӛi Eѭӟc lһp lҥi thӵc hiӋn các chӭF QăQJ $GG5RXQG.H\ 6XE%\WHV 6KLIW5RZV Yj MixColumns KӃt quҧ ÿҥWÿѭӧc sau mӛLEѭӟc tuân thӫ ÿ~QJVRYӟi tiêu chuҭn mã hóa AES Thông sӕ ÿѭӧc thӇ hiӋn trong bҧng sau
B̫ng 6.5: Thông s͙ mã hóa AES-192
(Final round) dda97ca4864cdfe06eaf70a0ec0d7191
Giҧi mã AES-192 bao gӗPEѭӟc khӣi tҥo, 11 Eѭӟc lһp giҧi mãEѭӟc kӃt thúc Mӛi Eѭӟc lһp lҥi thӵc hiӋn các chӭFQăQJ,QY$GG5RXQG.H\,QY6XE%\WHV,QY6KLIW5RZVYj InvMixColumns KӃt quҧ ÿҥWÿѭӧc sau mӛLEѭӟc tuân thӫ ÿ~QJVRYӟi tiêu chuҭn mã hóa AES Thông sӕ ÿѭӧc thӇ hiӋn trong bҧng sau
B̫ng 6.6: Thông s͙ gi̫i mã AES-192
Round [0] Ciphertext dda97ca4864cdfe06eaf70a0ec0d7191
Hình ErQ Gѭӟi thӇ hiӋn kӃt quҧ mô phӓng mã hóa và giҧi mã AES-192 trên công cө Cadence
Mô phӓng thӵc hiӋn vӟi tҫn sӕ clock 312Mhz
ChӃ mӝ mó húa/giҧi mó: imode[1:0] ảGWѭѫQJӭng vӟi AES-192
Dӳ liӋXÿҫu vào (input) có giá trӏ là: ipdat[127:0] ảK3_44556677_8899aabb_ccddeeff
KyDPmFLSKHUNH\GQJÿӇ mã hóa có giá trӏ là ickey[191:0] 192ảKBBDEBFGHI_10111213_14151617
Dӳ liӋXÿѭӧc mã hóa sau 31 chu kì clock (~99.4 ns)
KӃt quҧ mã hóa có giá trӏ là oencpt_dat[127:0] ảKdda97ca4_864cdfe0_6eaf70a0_ec0d7191
KӃt quҧ mã hóa AES-192 WKXÿѭӧFÿ~QJEҵng kӃt quҧ cӫa phép kiӇm tra trong chuҭn ³$GYDQFHG(QFU\SWLRQ6WDQGDUG),3638%´JLiWUӏ FiFEѭӟc trung JLDQFNJQJFKtQK[iFWX\ӋWÿӕi
6DXÿyVӱ dөng kӃt quҧ PmKyDÿҫu ra RHQFSWBGDW>@ÿӇ ÿѭDYjREӝ giҧi mã AES-192
KyDPmFLSKHUNH\GQJÿӇ giҧi mã có giá trӏ là ickey[191:0] ảKBBDEBFGHIBB
Dӳ liӋXÿѭӧc giҧi mã sau 31 chu kì clock (~99.4 ns)
KӃt quҧ giҧi mã có giá trӏ là odecpt_dat[127:0] ảKBBDDEEBFFGGHHII KӃt quҧ Qj\ÿ~QJEҵng vӟi giỏ
60 trӏ dӳ liӋXÿҫXYjREDQÿҫXWDÿѭDUDJLiWUӏ FiFEѭӟFWUXQJJLDQFNJQJFKtQK[iF tuyӋWÿӕi
Hình 6.2: K͇t qu̫ mô ph͗ng AES-192 trên công cͭ Cadence
KӃt quҧ mô phӓng AES-256
ĈӇ mô phӓng kiӇm tra chӭFQăQJPmKyDJLҧi mã AES-192, ta sӱ dөng bӝ thông sӕ kiӇm WUDÿѭӧFÿѭDUDWURQJWLrXFKXҭQ³$GYDQFHG(QFU\SWLRQ6WDQGDUG),3638%´7K{QJ sӕ mô phӓng AES-ÿѭӧc thӇ hiӋn trong bҧng sau.
B̫ng 6.7: Các thông s͙ mô ph͗ng AES-256
Mã hóa AES-256 bao gӗPEѭӟc khӣi tҥo, 13 Eѭӟc lһSPmKyDEѭӟc kӃt thúc Mӛi Eѭӟc lһp lҥi thӵc hiӋn các chӭF QăQJ $GG5RXQG.H\ 6XE%\WHV 6KLIW5RZV Yj MixColumns KӃt quҧ ÿҥWÿѭӧc sau mӛLEѭӟc tuân thӫ ÿ~QJVRYӟi tiêu chuҭn mã hóa AES Thông sӕ ÿѭӧc thӇ hiӋn trong bҧng sau
B̫ng 6.8: Thông s͙ mã hóa AES-256
Round [14] Key 24fc79ccbf0979e9371ac23c6d68de36
Giҧi mã AES-256 bao gӗPEѭӟc khӣi tҥo, 13 Eѭӟc lһp giҧi mãEѭӟc kӃt thúc Mӛi Eѭӟc lһp lҥi thӵc hiӋn các chӭFQăQJ,QY$GG5RXQG.H\,QY6XE%\WHV,QY6KLIW5RZVYj InvMixColumns KӃt quҧ ÿҥWÿѭӧc sau mӛLEѭӟc tuân thӫ ÿ~QJVRYӟi tiêu chuҭn mã hóa AES Thông sӕ ÿѭӧc thӇ hiӋn trong bҧng sau
B̫ng 6.9: Thông s͙ gi̫i mã AES-256
Round [0] Ciphertext 8ea2b7ca516745bfeafc49904b496089
Round [0] InvKey 24fc79ccbf0979e9371ac23c6d68de36
+uQK ErQ Gѭӟi thӇ hiӋn kӃt quҧ mô phӓng mã hóa và giҧi mã AES-256 trên công cө Cadence
Mô phӓng thӵc hiӋn vӟi tҫn sӕ clock 312Mhz
ChӃ mӝ mó húa/giҧi mó: imode[1:0] ảG2 WѭѫQJӭng vӟi AES-192
Dӳ liӋXÿҫu vào (input) có giá trӏ là: ipdat[127:0] ảKBBDDEEBFFGGHHII
KyDPmFLSKHUNH\GQJÿӇ mã hóa có giá trӏ là ickey[255:0] 256ảKBBDEBFGHIB
Dӳ liӋXÿѭӧc mã hóa sau 31 chu kì clock (~99.4 ns)
KӃt quҧ mã hóa có giá trӏ là oencpt_dat[127:0] ảK8ea2b7ca516745bfeafc49904b496089
KӃt quҧ mã hóa AES-256 WKXÿѭӧFÿ~QJEҵng kӃt quҧ cӫa phép kiӇm tra trong chuҭn ³$GYDQFHG(QFU\SWLRQ6WDQGDUG),3638%´JLiWUӏ FiFEѭӟc trung JLDQFNJQJFKtQK[iFWX\ӋWÿӕi
6DXÿysӱ dөng kӃt quҧ PmKyDÿҫXUDRHQFSWBGDW>@ÿӇ ÿѭDYjREӝ giҧi mã AES-256
KyDPmFLSKHUNH\GQJÿӇ giҧi mã có giá trӏ là ickey[255:0] ảKBBDEBFGHIB
Dӳ liӋXÿѭӧc giҧi mã sau 31 chu kì clock (~99.4 ns)
KӃt quҧ giҧi mã có giá trӏ là odecpt_dat[127:0] ảKBBDDEEBFFGGHHII.Ӄt quҧ Qj\ÿ~QJEҵng vӟi giỏ
62 trӏ dӳ liӋXÿҫXYjREDQÿҫXWDÿѭDUDJLiWUӏ FiFEѭӟFWUXQJJLDQFNJQJFKtQK[iF tuyӋWÿӕi
Hình 6.3: K͇t qu̫ mô ph͗ng AES-256 trên công cͭ Cadence
KӃt quҧ triӇn khai trên FPGA
Dӵ iQ ÿѭӧc thӵc hiӋn trên Vivado 18.2 ThiӃt kӃ sӱ dөng reference clock có giá trӏ 311.04 Mhz Thông qua công cө MMCM, ta thiӃt lұp clock system có giá trӏ 312.5Mhz ÿӇ ÿҥWÿѭӧF WK{QJOѭӧng xӱ lí mã hóa/giҧi mã AES 40Gbps &iFKuQKGѭӟLÿk\ P{Wҧ giao diӋn cӫa phҫn mӅm Vivavo 2018.2, quá trình thiӃt lұp reference clock và clock system sӱ dөng công cө MMCM
Hình 6.5: Thi͇t l̵SFORFNÿ̯u vào b̹ng công cͭ MMCM
Hình 6.6: Thi͇t l̵p FORFNÿ̯u ra b̹ng công cͭ MMCM
Hình 6.7 là kӃt quҧ ³'HVLJQ7LPLQJ6XPPDU\´ cӫa dӵ án, ta thҩy thông sӕ WNS = 0.1ns (setup time), WHS = 0.01ns (hold time), hai thông sӕ Qj\ÿӅu có giá trӏ lӟQKѫQ9ұy kӃt quҧ tәng hӧp timing cӫa dӵ iQÿmÿҥt yêu cҫu hoҥWÿӝQJÿѭӧc vӟi clock system bҵng 312.5Mhz
Hình 6.8 là kӃt quҧ ³)3*$ UHVRXUFH XWLOL]DWLRQ´ cӫa khӕi mã hóa AES-128/192/256, thông sӕ quan trӑng ta cҫn quan tâm là CLB LUTs = 21.061, kӃt quҧ này cho thҩy dӵ án tiêu tӕn tài nguyên FPGA không lӟn, có thӇ cҥnh tranh vӟi các thiӃt kӃ khác
Hình 6.8: K͇t qu̫ ³)3*$UHVRXUFHXWLOL]DWLRQ´cͯa kh͙i aes_encrypt_core
Hình 6.9 là kӃt quҧ ³)3*$ UHVRXUFH XWLOL]DWLRQ´ Fӫa khӕi giҧi mã AES-128/192/256, thông sӕ quan trӑng ta cҫn quan tâm là CLB LUTs = 26.476 Ta thҩy khӕi giҧi mã cҫn sӵ tính toán phӭc tҥSKѫQNKӕi mã hóa nên tiêu tӕQWjLQJX\rQ)3*$KѫQ
Hình 6.9: K͇t qu̫ ³)3*$UHVRXUFHXWLOL]DWLRQ´ cͯa kh͙i aes_decrypt_core
Sau khi tәng hӧp và thӵc hiӋn trên Vivado 2018.2, ta tiӃn hành chҥy thӱ ӭng dөng và kiӇm tra chӭFQăQJWKӵc tӃ trên bo mҥch FPGA ĈӇ máy tính giao tiӃSÿѭӧc vӟi FPGA, dӵ án sӱ dөng ATSDK thông qua giao thӭc PCIe Hình 6.10 là kӃt quҧ thӵc hiӋn mã hóa và giҧi mã AES-128 trên Xilinx FPGA VU7P, các thông sӕ cӫa phép kiӇm tra ÿѭӧc thӇ hiӋn ӣ bҧng 6.1 Hình 6.11 là kӃt quҧ thӵc hiӋn mã hóa và giҧi mã AES-192 trên Xilinx FPGA VU7P, các thông sӕ cӫa phép kiӇPWUDÿѭӧc thӇ hiӋn ӣ bҧng 6.4
Hình 6.10: K͇t qu̫ thc hi n mã hóa, gi̫i mã AES-128
Hình 6.11: K͇t qu̫ thc hi n mã hóa, gi̫i mã AES-192
Hình 6.12 là kӃt quҧ thӵc hiӋn mã hóa và giҧi mã AES-256 trên Xilinx FPGA VU7P, các thông sӕ cӫa phép kiӇPWUDÿѭӧc thӇ hiӋn ӣ bҧng 6.7
Hình 6.12: K͇t qu̫ thc hi n mã hóa, gi̫i mã AES-256
So sánh kӃt quҧ vӟi công trình khác
ThiӃt kӃ mã hóa, giҧi mã AES cӫa luұQYăQ WKXÿѭӧc có kӃt quҧ khá tӕt, có tính cҥnh tranh &{QJW\+HOLRQ7HFKQRORJLHVFyÿѭDUDFiFWK{QJVӕ cӫa AES core hiӋn thӵc trên FPGA cӫa hai hãng Xilinx và Intel Helion AES cung cҩp chӃ ÿӝ AES-128 hoһc AES-
1KѭYұy ta thҩy mӭc tiêu tӕn tài nguyên cӫa thiӃt kӃ $(6ÿѭDUDWURQJOXұQYăQVRYӟi +HOLRQ$(6WѭѫQJÿѭѫQJQKDXHelion AES chӍ thӵc hiӋQÿѭӧc mӝt chӃ ÿӝ, tURQJNKLÿy thiӃt kӃ AES trong luұQYăQFyWKӇ tùy chӑn 3 chӃ ÿӝ AES-128/192/256
Hình 6.13: Thông s͙ t͝ng hͫp cͯa Helion AES-128 [19]
Hình 6.14: Thông s͙ t͝ng hͫp cͯa Helion AES-256 [19]
KӃt luұn
Dӵa vào nhӳng kӃt quҧ WKXÿѭӧc, ta thҩy dӵ iQFѫEҧQÿmÿҥWÿѭӧc nhӳng mөFWLrXÿӅ ra:
HiӇu vӅ nguyên lý, cách thӭc hoҥWÿӝng, nhӳQJѭXÿLӇm và hҥn chӃ cӫa IPsec ĈѭDUDP{KuQKFPGA-based IPsec Acceleration
HiӇu rõ thuұt toán mã hóa dӳ liӋu AES-128/192/256
NҳPÿѭӧc các chӃ ÿӝ mã hóa và giҧi mã: ECB, CBC, CFB, OFB, CTR ĈѭDUDP{KuQKFPGA-based IPsec Acceleration ĈѭDUDVѫÿӗ khӕi và mô tҧ hoҥWÿӝng cӫa lõi IP AES128/192/256
Thӵc hiӋn thành công mã hóa, giҧi mã AES trên FPGA
Lõi IP mã hóa/giҧi mã AES có tính tùy biӃn cao, hoҥWÿӝQJÿѭӧc vӟi tҫn sӕ cao (khoҧng 350Mhz), tiêu tӕn tài nguyên FPGA thҩp, có tính cҥnh tranh so vӟi các thiӃt kӃ khác.
KhuyӃn nghӏ
Thông qua giҧLSKiSWăQJWӕc phҫn cӭng nhҵm nâng cao hiӋu suҩt và tiӃt kiӋm tài nguyên, doanh nghiӋp có thӇ sӱ dөng giҧi pháp này cho các hӋ thӕng SoC cӫDPuQKWURQJWѭѫQJ lai Ngoài ra, có thӇ kӃt hӧp các chӃ ÿӝ mã hóa vӟi giҧi thuұWPmKyDÿӇ ÿҥWÿѭӧc mӭFÿӝ bҧo mұWFDRKѫQ1Kӳng hӋ thӕng tích hӧp ӭng dөng ,3VHFWURQJWѭѫQJODLFyWKӇ xӱ lí KRjQWRjQWK{QJOѭӧng IPsec thông qua SmartNICÿLӅu này giúp giҧi phóng khӕLOѭӧng công viӋc rҩt lӟn cho CPU 1KѭQJÿLӅXQj\FNJQJÿzLKӓi chi phí xây dӵng hӋ thӕng lӟn KѫQYjTXiWUuQKWKLӃt kӃ FNJQJWѭѫQJÿӕi phӭc tҥp KѫQQKҩt là giao diӋn giӳa FPGA và CPU
7.3 Giӟi hҥn YjKѭӟng phát triӇn
Giӟi hҥn: Dӵ án chӍ thӵc hiӋn WăQJWӕc phҫn cӭng cho mã hóa/giҧi mã AES, FKѭDWKӵc hiӋn cho các khӕi khác trong giao thӭc IPsec: Ingress Packet Processor; Egress Packet Processor; HMAC authentication with SHA-1, SHA-2 512/384/256/224 ViӋc xӱ lý các khӕLQj\Gѭӟi phҫn cӭng là mӝt thách thӭc rҩt lӟn, cҫn nhiӅu giҧi thuұt phӭc tҥp, tiêu tӕn nhiӅu tài nguyên
+ѭӟng phát triӇn: ThiӃt kӃ các khӕi còn lҥi trong mһt phҷng dӳ liӋXÿӇ tiӃn tӟi mөc tiêu xӱ lý giao thӭc IPsec hoàn toàn trên phҫn cӭng Ngoài ra, thiӃt kӃ chip ASIC hӛ trӧ giao thӭF,3VHFFNJQJOjPӝWKѭӟQJÿLÿҫy hӭa hҽn Chip ASIC sӁ giúp tӕLѭXKLӋu suҩt xӱ lý ,3VHFQKѭQJTXiWUuQKWKLӃt kӃ cӵc kì phӭc tҥp và cҫn nhiӅu tiӅn bҥc
[1] Todd Lumpkin and Kim Phillips Freescale Semiconductor, Inc ³/LQX[,36HF and Crypto Hardware Acceleration.´ Internet: http://citeseerx.ist.psu.edu/viewdoc/download?doi.1.1.140.8447&rep=rep1&ty pe=pdf, 2000
[2] Stephen Doyle, Georgii Tkachuk ³,QWHO,36HF$FFHOHUDWLRQ´ Internet: https://01.org/sites/default/files/downloads//intelipsecaccelerationwhitepaper.pdf,
[3] Frederik Hauser, Marco Haberle, Mark Schmidt, Michael Menth ³3-IPsec:
Implementation of IPsec Gateways in P4 with SDN Control for Host-to-Site Scenarios.´,QWHUQHWhttps://arxiv.org/pdf/1907.03593.pdf, Jul 08, 2019
[4] Sheila Frankel, Suresh Krishnan³IP Security (IPsec) and Internet Key Exchange
(IKE) Document Road Map (RFC-6071).´,QWHUQHW https://tools.ietf.org/html/rfc6071, Feb 2011
[5] Stephen Kent, Karen Seo³Security Architecture for the Internet Protocol (RFC-
4301).´,QWHUQHWhttps://tools.ietf.org/html/rfc4301, Dec 2005
[6] Stephen Kent³IP Authentication Header (RFC-4302).´,QWHUQHW https://tools.ietf.org/html/rfc4302, Dec 2005
[7] Stephen Kent³IP Encapsulating Security Payload (RFC-4303).´,QWHUQHW https://tools.ietf.org/html/rfc4303, Dec 2005
[8] Charlie Kaufman³Internet Key Exchange (IKEv2) Protocol (RFC-4306).´
Internet: https://tools.ietf.org/html/rfc4306, Dec 2005
[9] Federal Information Processing Standards Publications (FIPS PUBS)³Advanced
EncryptioQ6WDQGDUG´,QWHUQHW https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.197.pdf, Nov 26, 2001
[10] Boris Pismenny (Mellanox), Declan Doherty (Intel), Hemant Agrawal (NXP) ³RTE_Security: Enabling hardware acceleration of security SURWRFROV´,QWHUQHW https://www.dpdk.org/wp-content/uploads/sites/35/2017/09/DPDK-
Userspace2017-Day1-9-security-presentation.pdf, 2017
[11] 'HHSDN.XPDU-DLQ7HFKQLFDO3URMHFW0DQDJHU,QWHO³DPDK Cryptodev.´
Internet: https://fast.dpdk.org/events/slides/DPDK-2017-04-India-Cryptodev.pdf,
[12] ,QWHO13*30$³DPDK IPsec Security Gateway Application.´ Internet:
70 https://www.slideshare.net/MichelleHolley1/dpdk-ipsec-security-gateway- application, Mar 02, 2017
[13] &DGHQFH'HVLJQ6\VWHPV,QF³Cadence Circuit Simulation (Block-level, chip- level, and mixed-signal simulation).´,QWHUQHW https://www.cadence.com/en_US/home/tools/custom-ic-analog-rf-design/circuit- simulation.html, 2020
[14] 7\OHU6KHUHU7HFKQLFDO:ULWHU&DGHQFH³Improving Simulation Throughput
Using The Xcelium Parallel Logic Simulator.´,QWHUQHW https://www.cadence.com/content/dam/cadence- www/global/en_US/documents/tools/system-design-verification/xcelium-wp.pdf,
[15] ;LOLQ[³Introduction to FPGA Design with Vivado High-Level Synthesis, UG998
(v1.1)´,QWHUQHW https://www.xilinx.com/support/documentation/sw_manuals/ug998-vivado-intro- fpga-design-hls.pdf, Jan 22, 2019
[16] ;LOLQ[³UltraScale Architecture and Product Data Sheet: Overview
DS890 (v3.10)´,QWHUQHW https://www.xilinx.com/support/documentation/data_sheets/ds890-ultrascale- overview.pdf, Aug 21, 2019
[17] ;LOLQ[³UltraScale and UltraScale+ FPGAs Packaging and Pinouts Product
Specification UG57Y´,QWHUQHW https://www.xilinx.com/support/documentation/user_guides/ug575-ultrascale-pkg- pinout.pdf, Mar 18, 2020
[18] ;LOLQ[³HTG-9200: Xilinx Virtex UltraScale+ TM Optical Networking
Development Platform.´,QWHUQHW http://www.hitechglobal.com/Boards/UltraScale+_X9QSFP28.htm, 2020
[19] +HOLRQ7HFKQRORJLHV³Helion Giga AES Solutions´,QWHUQHW https://www.heliontech.com/aes_giga.htm, 2019
[20] 0RUULV'ZRUNLQ³Recommendation for %ORFN&LSKHU0RGHVRI2SHUDWLRQ´
Internet: https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38a.pdf, Dec 2001.
Phҫn phө lөc sӁ trình bày mӝt phҫn tiêu biӇu trong quá trình thiӃt kӃÿyOjSKҫn kiӇm tra chӭF QăQJ 57/YHULILFDWLRQ 'ѭӟLÿk\OjWestbench mô phӓng mã hóa, giҧi mã AES- 128/192/256
`timescale 1 ps/ 1 ps parameter UPD = 32; parameter CPUA = 16; module testtop
// Clock reg clk; reg rst;
//Gen clock 312.5 initial begin clk = 0;
72 //Gen reset 312.5 initial begin rst = 0;
//////////////////////////////////////////////////////////////////////////////// //AES reg [1:0] nxt_imode = 2'b0; reg nxt_ipvld = 1'b0; reg [127:0] nxt_ipdat = 128'b0; reg [255:0] nxt_ickey = 256'b0; wire oencrypt_vld; wire [127:0] oencrypt_dat; initial begin nxt_imode = 2'd0; nxt_ipvld = 1'b0; nxt_ipdat = 128'h0; nxt_ickey = 256'h0;
#10_000; nxt_ipvld = 1'b1; nxt_ipdat = 128'h00112233445566778899aabbccddeeff;
#10_000; nxt_ipvld = 1'b1; nxt_ipdat = 128'h00112233445566778899aabbccddeeff;
#10_000; nxt_ipvld = 1'b1; nxt_ipdat = 128'h00112233445566778899aabbccddeeff; end reg [1:0] imode = 2'b0; reg ipvld = 1'b0; reg [127:0] ipdat = 128'b0; reg [255:0] ickey = 256'b0; always @ (posedge clk) imode