160 likes | 552 Views
DES and Triple DES. 楊昌偉. Ouline. DES 和 Triple DES 簡單介紹 How to Get a optimal C code 測試平台和結果. Each single round. F function. P 1. P n. …. DES encrypt. DES encrypt. K. K. C 1. C n. (a)Encryption (ECB mode). C 1. C n. …. DES decrypt. DES decrypt. K. K. P 1. P n.
E N D
Ouline • DES 和Triple DES簡單介紹 • How to Get a optimal C code • 測試平台和結果
P1 Pn … DES encrypt DES encrypt K K C1 Cn (a)Encryption (ECB mode) C1 Cn … DES decrypt DES decrypt K K P1 Pn (b)Decryption (ECB mode)
IV P1 P2 DES encrypt DES encrypt K K C1 C2 (a)Encryption (CBC mode)
C2 C1 DES decrypt DES decrypt K K IV P1 P2 (b)Decryption (CBC mode)
Triple DES K1 K2 K1 B A E D E P C (a) Encryption K1 K2 K1 A B D E D C P (b) Decryption
How to get a optimal C code • 1. 利用macro語法代替副程式的呼叫 • 2. 展開迴圈 • 3. 利用bitwise的運算 (32bit AND XOR OR) • 4. Preprocessing • 5. Compiler optimization option : gcc -O3 -funroll-loops • 6. Toolkit : Intel V-tune (CPU rescheduling)
Preprocess • 1. Key Setup :不要做real time key xor, 而先把subkey xor sbox ,maintain一個16 round的s box array. • 2. 在F function中合併S box和P box, 並maintain一個可以一次處理12個bit的表,最後以bitwise運算取代E box.
測試平台 • Compiler : gcc 2.7.2.3 • 平台 : FreeBSD 3.5-stable CPU Celeron 600 Memory 196 MB