Advance Cryptography article series එකේ අපි මේ වෙනකොට substitution ciphers, steam cipher, Block cipher ගැන කතා කරලා තියෙනවා. ඊලගට අපට කතා කරන්න තියෙන්නේ DES, 2DES, 3DES, AES ගැන. මේවා ගන කතා කරන්න කලින් අපි Feistel Network එකක් කියන්නේ මොකක්ද කියලා identify කර ගම්මු. මොකද ඒක අපට DES, 2DES, 3DES, AES ගැන කතා කරන්කොට ගොඩක් වැදගත් වෙනවා.
Feistel Network
මේ තියෙන්නේ Feistel Network එකක structure එකක්. Feistel Network එකක rounds 16 ක් තියෙනෙවා. ඒ වගේම තමයි මේ rounds වලට වෙන වෙනම different keys 16 ක් තියෙනවා. මේ diagram එකේ rounds 3 ක් තමයි පෙන්නලා තියෙන්නේ. මේ diagram එකට අනුව උඩින්ම plaintext එක input කරලා තියෙනවා. ඒ plaintext එක mainly කොටස් දෙකකට බෙදෙනවා. Right side and left side විදියට. Right side එකේ කොටස F කියන function එක through යනවා. Key එක F කියන function එකට add වෙනවා. ඊලගට ඒ output එක left side එකත් එක්ක XOR වෙනවා. එහෙම XOR වෙච්ච එක second round එකේ Right side එකට add වෙනවා. Round 1 එකේ Right side එක Round 2 එකේ left side එකට add වෙනවා. දැන් අපි Feistel Network එක නිසා DES, 2DES, 3DES, AES වැඩ කරන විදිය බලමු.
DES (Data Encryption Standards)
DES කියලා කියන්නේ Symmetric key algorithm එකක්. DES වලදී block by block manner use කරලා data encryption and decryption කරනවා. ඒ වගේම තමයි DES base වෙන්නේ Fiestel Network එක මත. මේකෙදී inputs විදියට 64 bit block එකක් use වෙනවා. ඒ වගේම encrypt key එක විදියට 56 bits key එකක් use කරනවා. මේ විදියට encrypt කරාම Output එක විදියට 64 bit block එකක් ලැබෙනවා. මෙකේ security එක නම් එච්චර හොද මට්ටමක නෑ. මොකද DES වල inputs & Output දෙකම 64 bit නිසා, 256 සැරයක් Key එක try කරාම Key එක identify කර ගන්න පුලුවන් වෙනවා. ඒ නිසා 2DES ගැන අවධානේ යොමු උනා. දැන් අපි 2DES කියන්නේ මොකක්ද කියලා බලමු.
2DES (2Data Encryption Standards)
2DES වලදී key size 112bits වෙනකල් වැඩි උනා. එතකොට plaintext එක එක සැරයක් 56 bits වලින් encrypt කරලා ඒ ආපු result එක අනිත් 56 bits වලින් encrypt කරා. ඒක නිසා මේකට 2DES කියලා කියනවා. දැන් Key එක වෙන්නේ 2112 . හැබයි මේකත් secure නැති උනා. 2DES වලට Meet in the Middle කියන attack එක ලොකුවටම බලපෑවා. ඒ නිසා 3 DES වලට මිනිස්සු පුරුදු උනා. දැන් අපි 3DES කියන්නේ මොකක්ද කියලා බලමු.
3DES (3Data Encryption Standards)
3DES වලදී key size 168bits වෙනකල් වැඩි උනා. එතකොට plaintext එක තුන් සැරයක් 56 bits වලින් වෙන වෙනම encrypt කරා.
AES (Advanced Encryption Standards)
AES කියලා කියන්නේ Symmetric key algorithm එකක්. AES වලදී block by block manner use කරලා data encryption and decryption කරනවා. මේකෙදී inputs විදියට 128 bit block එකක් use වෙනවා. ඒ වගේම encrypt key එක විදියට 128bits /192 bits / 256 bits key එකක් use කරනවා. AES වලදී Key rounds ගාන key length එක මත depend වෙනවා. ඒ කියන්නේ,
- 128 bits key length – 10 Rounds
- 192 bits Key length – 12 Rounds
- 256-bit Key length – 14 Rounds
දැන් අපි බලමු AES (Advanced Encryption Standards) වල data store වෙන්නේ කොහොමද කියලා?
54 | 4F | 4E | 20 |
77 | 6E | 69 | 54 |
6F | 65 | 6E | 77 |
20 | 20 | 65 | 6F |
AES වලදී මෙන්න මේ වගේ 4*4 matrix එකක් විදියට තමයි data store වෙන්නේ. මේ වගේ matrix එකකට අපට state array එකක් කියලා කියන්න පුලුවන්. මේක නිසා අපට ලේසියෙන්ම එක round එකක ඉදන් අනෙත් round එකට data transmit කරන්න පුලුවන් වෙනවා.
මෙහෙම store වෙන data encrypt වෙන විදිය දැන් අපි බලමු.
AES වලදී Decryption process එක වෙන්නේ මේ විදියට.
හරි මේක අපි example එකක් එක්ක discuss කරන් යමු. අපි මේකට 128 bits (10 Rounds) plaintext එකක් use කරමු. මේ Rounds වල use කරන keys තමයි මේ.
First step එක විඩියට වෙන්නේ state array (4*4 matrix) එකට Key එක XOR වෙන එක.
ඊට පස්සේ XOR කරලා ආපු result එක 16 * 16S – Box එක්ක map කරන්න ඕනි.
Second step එක විදියට ඔයාට කරන්න තියෙන්නේ shift rows කියන option එක. මේකෙදී අපේ 4*4 new matrix එකේ first row එකට මුකුත් වෙන්නේ නෑ. Second row එක places 1 ක් left side එකට move වෙනවා. Third row එක places 2 ක් left side එකට move වෙනවා. Fourth row එක places 3 ක් left side එකට move වෙනවා.
Third step එක විදියට ඔයාට mix Colum operation එක තමයි කරන්න තියෙන්නේ. මේකෙදී shift rows කියන option එකෙන් ආපු matrix එක constant Matrix එකක් එක්ක mix වෙනවා.
ඊලග step එක තමයි add round key කියන්නේ. මෙකේදී key length එක අනුව round එකක් add වෙනවා.
- 128 bits key length – 10 Rounds
- 192 bits Key length – 12 Rounds
- 256-bit Key length – 14 Rounds
දැන් ඔයාලට AES ගැන හොද idea එකක් එන්න ඇති. Practical world එකේදී wireless security එක implement කරන්න AES use කරනවා. ඒ වගේම SSL /TSL වලටත් use කරනවා.
DES & AES අතරේ වෙනස්කම් මොනවද?
Parameters of Compression | Data Encryption Standard (DES) | Advanced Encryption Standard (AES) |
Principle | DES work on Feistel Cipher structure | AES works on substitution and permutation principles. |
Security | DES has a small key which is less secure. It can break easily. | AES has a larger secret key which is more secure. |
Speed | DES is comparatively slow. | AES is faster |
Rounds | 16 rounds of identical operations. | Rounds per key length: 128 bits – 10 192 bits – 12 256 bits – 14 |
Key length | The key length of DES is 56 bits | The key length is 128 bits, 192 bits, and 256 bits. |
Plaintext | The plaintext is of 64 bits. | Plaintext can be of 128,192, or 256 bits |
Encryption | DES can encrypt 64 bits of plain text. | AES can encrypt plain text up to 128 bits. |
Known attacks | Brute-force, Linear crypt-analysis and Differential crypt-analysis. | No known attacks. |
Performance | High confusion, diffusion in a round, round work can be made parallel, few rounds needed | Low confusion, diffusion in a round, more rounds needed. |
මේ table එක refer කරනකොට ඔයා confusion & diffusion කියලා words දෙකක් දැක්කා නේද? මොකක් ගැනද ඒකෙන් කියන්නේ?
Confusion
අපි data encrypt කරන්න use කරන key එකේ bits change කරාම ciphertext එක change වෙනවා නම් ඒකට Confusion කියලා කියනවා. Block cipher, Stream ciphers, DES මේකට example වෙනවා.
Diffusion
අපේ plaintext එකේ bits change කරාම ciphertext එක change වෙනවා නම් ඒකට diffusion කියලා කියනවා. Block cipher, DES, AES මේකට example වෙනවා.
හරි. දැන් ඔයාලට මේ දේවල් ගැන හොද idea එකක් ඇති. ඊලග article එකෙන් අපි තවත් අලුත් දෙයක් ගැන කතා කරමු.