Monday, August 13, 2018

Encryption ගැන සරලව සිංහලෙන් - 3 Asymmetric Encryption Method


ඔන්න පෙරුම් පුරාගෙන ලියන් ආව පෝස්ට් සෙට් එකේ, තවත් ලස්සන කතාවක් තමයි අද පෝස්ට් එකෙන් කියන්න සූදානම් වෙන්නෙ. Asymmetric Encryption නැත්නම් Public Key Encryption ගැන තමයි අද අපි කතා කරන්න යන්නෙ. ඔයාලට මේක ගැන ආසාවක් හිතෙන්න මම කියන්නම්, මේ ක්‍රමය තමයි HTTPS වල භාවිතා වෙන්නේ. ඒ වගේම SSL වලත්, Bitcoin වලත් භාවිතා වෙන්නේ Public key encryption ක්‍රමය තමයි. මේක කියවන්න කලින් මම ආරාධනා කරනවා මේ පෝස්ට් Series එකේ පළමු සහ දෙවැනි  පෝස්ට් කියවන්න කියලා. මම ඒවයෙ ලිංක් පහතින් දාන්නම්.

Encryption ගැන සරලව සිංහලෙන් - 1 Hashing

Encryption ගැන සරලව සිංහලෙන් - 2 Symmetric Encryption Method

එහෙනම් තවත් අටුවා ටීකා අවශ්‍ය නෑ. අපි කෙලින්ම යමු පාඩමට.
*** 

Asymmetric Encryption Method කියන්නේ මොකක්ද?


Symmetric Encryption ගැන අපි දැන් දන්නවා, එතනදි යතුර විදියට භාවිතා වුණේ එකම වචනයක්, හෝ චේදයක් හෝ කිසියම් සංකේත කීපයක්. අපි මොකක් හරි රහස්‍ය ලියවිල්ලක් Encrypt කරන්නත්, ආයෙ Decrypt කරලා කියවන්නත් පාවිච්චි කළේ මෙන්න මේ යතුර. ඔයලා හිතුවද මේ යතුර අපි අනිත් කෙනාට යවන්නෙ කොහොමද කියලා? මේක පැහැදිලි කරගන්න උදාහරණයක් ගනිමු.

ඔයයි, ඔයාගෙ ගෑණු ළමයයි ඉන්නේ ළඟපාතක නම්, ඔයාට පුළුවන් එයාව රහසේ හම්බෙන්න. හම්බෙලා වෙන වැඩ කරන්න නෙවෙයි, ඔයාට පුළුවන් එයාට කියන්න රහසින්, "බබෝ, මම වෙන උන් අපේ මැසේජ් කියවනවට ඒවා එන්ක්‍රිප්ට් කරලයි මීට පස්සෙ එවන්නෙ, මෙන්න මේකයි ඒවා ඩීක්‍රිප්ට් කරන කී එක, ඔයා මේක පාවිච්චි කරලා, මම එවන Encrypted Cypher text එක ඩීක්‍රිප්ට් කරගන්න." කියලා කෙල්ලට Key එක දෙන්න පුළුවන්.

ඒත් ඔයාගෙ කෙල්ල ඉන්නෙ කොරියාවෙ නම්, (උදාහරණයක් :P) ඔයාට කොරියාවට ගිහින් මේක කියලා දෙන්න අමාරුයි නෙ. කී එක ඊමේල් වලින් යවන්න පුළුවන් ඒත් ඒකත් ආරක්ෂිත කරන්න ක්‍රමයක් නෑ, මැදින් හැකරෙක් ගන්න පුළුවන්. නැත්නම් ෆෝන් කෝල් එකක් අරන් කියලා දෙන්න පුළුවන්, ඒත් ආරක්ෂිත නෑ කෝල් එක ටැප් කරොත්? අන්න ඕකයි Symmetric Encryption වල බොහොම ලොකු අවුල. අපි කොච්චර තඩි කී එකක් හදලා, අදාළ රහස්‍ය පණිවිඩය Encrypt කරත්, ඒ කී එක කාට හරි ගන්න පුළුවන් නම් ඒ Encryption එකේ ඵලක් නෑ. Symmetric Encryption වල තියෙන මේ ප්‍රධානම ගැටළුව හෙවත් යතුර වෙන කෙනෙක් අතට පත් වීමේ ගැටළුව නැති කරන්න තමයි Asymmetric නොහොත් Public Key Encryption එක ආවෙ. මේ ගැන මම පුළුවන් තරම් සරලව පැහැදිලි කරන්න බලන්නම්, හැබැයි මේකෙ ගණිතමය කොටස නම් සරල කරන්න බෑ. බෑ කියන්නෙ ඒක කාටවත් කරන්න පුළුවන් එකක් නෙවෙයි, එහෙම සරල කරලා කියලා දෙන්න පුළුවන් නම් ඉතින් හොඳයි. හරි, ඒ ගණිතමය කතාව පහුවට දාලා අපි මේකෙ කන්සෙප්ට් එක බලමු.
 
1970 දි James H. Ellis කියන බ්‍රිතාන්‍ය ජාතික Cryptographer (ගුප්ත කේත විසේසඥයා කියමුකො) තමයි මේ Public Key Encryption සංකල්පය අරන් එන්නෙ. එයා කියන්නෙ මේකයි,

එක යතුරක් වෙනුවට යතුරු දෙකක් පාවිච්චි කිරීම. මේක සැබෑ ලෝකේ උදාහරණයක් අරන් පැහැදිලි කරන්න අමාරුයි, මොකද එක ඉබ්බෙක්ට තියෙන්නේ එකම ආකාරයක යතුරු නෙ. ඒත් මේ කතාවෙදි ඔයා හිතාගන්න ඕන, අමුතු තාලේ අගුලු නොහොත් ඉබ්බො වර්ගයක් ගැන. මේ ඉබ්බො කඩෙන් ගන්නකොට යතුරු දෙකක් දෙනවා. මේ යතුරු දෙකම මේ ඉබ්බට දාන්න පුළුවන්, මේ ඉබ්බා අතින් තද කරලා ලොක් කරන්න බැහැ. මේ ඉබ්බා ලොක් කරන්න නම් අර හම්බුණ යතුරු ජෝඩුවෙන් එකක් පාවිච්චි කරන්න ඕන. ඒ යතුරෙන් පුළුවන් මේ ඉබ්බා ලොක් කරන්නම විතරයි. ඒක ඔබලා කොච්චර කැරකුවත් මේක ආයෙ අරින්න බෑ. මේ ලොක් එක අරින්න නම් අර යතුරු ජෝඩුවේ අනික් යතුර ඕන. ඒකෙන් මේ ඉබ්බා ලොක් කරන්න බෑ, ඒත් ලොක් එක අරින්න පුළුවන්. ඕන්න ඕකයි කතාව. මේක පැහැදිලි කරන්න අපි ටිකක් නෝටි උදාහරණයක් ගනිමු.

ඔයා ටිකක් සල්ලාල ටයිප් කොල්ලෙක් කියලා හිතන්නකො, ඔයා රෑට රෑට කෙල්ලො ගෙන්නගන්නවා ඔයාගෙ කාමරේට. ඔයාගෙ කාමරේ දොරේ තියෙන්නේ Asymmetric ලොක් එකක්. ඔයා ගෙන්නන් එන කෙල්ල එක්ක රෑ ඉඳලා ඔයාට උදේම වැඩට යන්න ඕන. හැබැයි දන්නවනෙ, කෙල්ලො කියන්නෙ කම්මැලි ජාතියක්. (බහුතරය) උන් උදේ දහය පහු වෙනකන් නිදාගන්නවා. ඉතින් ඔයා කරන්නෙ ඔයාගෙ අර Asymmetric ලොක් එකත් එක්ක හම්බුණ යතුරු දෙකෙන් අගුල ලොක් කරන්න විතරක් භාවිතා කරන්න පුළුවන් යතුර (Public Key) එක දෙනවා අර කෙල්ලට. දීලා කියනවා, "සුදූ, මම වැඩට යනවා, මේ තියෙන්නේ මගේ කාමරේ යතුර, ඔයා කාමරෙන් යනකොට දොර ලොක් කරගෙන යන්න" කියලා අර Public Key එක කෙල්ලට දීලා ඔයා යනවා වැඩට. ඉතින් අර කෙල්ලට දැන් හෙන හැපී, "අනේ මේ අයියා කාමරේ යතුරත් දුන්නා මට, මාව මෙයා කසාද බඳී අනේ" කියලා හිතලා  ආයෙ නිදාගෙන දහයට විතර ඇහැරිලා කාමරේ ලොක් කරලා යන්න යනවා. හැබැයි ඒ කෙල්ල කවදා හරි ආපහු ඇවිල්ලා අර යතුර ලොක් එකට දාලා කැරකුවට ආයෙ කවදාවත් ඔයාගෙ කාමරේ අගුල අරින්න බැහැ. මොකද කෙල්ල ගාව තියෙන්නේ Public Key එකක් විතරයි. අගුල අරින්න භාවිතා වෙන Private Key එක තියෙන්නේ ඔයා ගාව විතරයි.

මම දැන් කිව්වනෙ මේ කොල්ලා සල්ලාල කොල්ලෙක් කියලා. ඉතින් මේ කොල්ලා එක එක දවසට ගේන්නේ එක එක කෙල්ලෝ. ඉතින් ඒ හැමෝටම දෙන්න මෙයා ගාව Public Key එකේ කොපි විශාල ප්‍රමාණයක් අර යතුරු කපන තැනකට දීලා හදවන් ඉන්නවා. මේ Public Key කවුරු ගත්තත් එයාට ප්‍රශ්නයක් නෑ මොකද ඒ යතුරෙන් පුළුවන් එයාගෙ දොර ලොක් කරන්න විතරයි. ලොක් එක අරින්න නම් එයා ගාව තියෙන Private Key එක ඕනමයි. මෙන්න මේ Private Key, පෞද්ගලික යතුර නොහොත් ලොක් එක අරින්න පාවිච්චි වෙන යතුර අතිශයින් පෞද්ගලිකයි, මේක කිසිම විටෙක කාත් එක්ක වත් බෙදාගන්නෑ.

එහෙනම්, ඕන්න ඕකයි Public Key Encryption කන්සෙප්ට් එක. අර නෝටි උදාහරණය නැතුව මේක නියම විදියට කිව්වොත්, මෙහෙමයි.

ඔයාට Whatsapp වල යාළුවෝ 5 දෙනෙක් ඉන්නවා කියමුකො. ඒ පස් දෙනා ගාවම ඔයාගෙ Public Key එක තියෙනවා. එයාලගෙන් කාට හරි ඔයාට මැසේජ් එකක් එවන්න ඕන වුණාම එයාලා කරන්නේ, මැසේජ් එක ලියලා ඒක ඔයාගෙ Public Key එකෙන් ලොක් කරලා (Encrypt කරලා) ඔයාට එවනවා. (ඔයා දන්නවනෙ මේ Asymmetric Encryption කියලා. මේ වැඩේදි ඕන කෙනෙක්ට ඔයාගෙ Public Key එක පාවිච්චි කරලා ඔයාට එවන පණිවුඩ Encrypt කරන්න පුළුවන් වුණාට, කවදාවත් ඔයාගෙ Public Key එක පාවිච්චි කරලා ඒ පණිවිඩය Decrypt කරලා කියවන්න බැහැ. ඔයාට එව්ව පණිවිඩය Decrypt කරන්න නම්, ඔයා ගාව කාටවත් නොදී රහසේ තියන් ඉන්න Private Key එක ඕන.) ඔයා ඔයාගෙ Private Key එක භාවිතා කරලා අර යාළුවා ඔයාට එවපු මැසේජ් එක Decrypt කරලා කියවනවා.

ඔයාට ඔයාගෙ යාළුවෙක්ට මැසේජ් එකක් යවන්න ඕන වුණත් එහෙමයි, ඔයා ගාව තියෙනවා ඔයාගෙ යාළුවගෙ Public Key එක. ඔයා ඒක භාවිතා කරලා යාළුවට යවන්න ඕන පණිවිඩය Encrypt කරලා, යාළුවට යවනවා. මේ පණිවිඩය Decrypt කරගන්න පුළුවන් ඒ අදාළ යාළුවා ගාව තියෙන එයාගෙ Private Key එකෙන්ම විතරයි. ඉතින් අන්න ඒකයි මෙතන තියෙන කතාව.

මතක තියාගන්න, ඔයාට තියෙන්නේ Private Key එකේ එක කොපියයි, ඒක තියෙන්නේ ඔයා ගාවම විතරයි. හැබැයි පබ්ලික් කී එකේ කොපි හැම තැනම තියෙනවා. උදාහරණයක් විදියට ඔයාගෙ යාළුවෝ ඔක්කොගෙම ළඟ තියෙනවා. ඕන කෙනෙක්ට ගන්නත් පුළුවන්. ගත්තට වැඩක් නෑ ඉතින් ඒකෙන් පුළුවන් ඔයාට එවන මැසේජ් එකක් Encrypt කරන්නම විතරයි නෙ. ඒ වගේම ඔයාගෙ Public Key එකෙන් Encrypt කරපු කිසිම ලියවිල්ලක් වෙන කෙනෙක් ගෙ Private Key එකකින් කියවන්නත් බෑ. ඔයාගෙම Private Key එක තියෙන්න ඕන. දැන් ඔයාට මේක කියන් යනකොට මීටර් වෙනවා ඇති, මේ ක්‍රමය නිසා අදාළ මැසේජ් එක, වෙන කාටවත් නොලැබී, අදාළ පුද්ගලායටම ලැබීම තහවුරු වෙනවා කියලා.

ඉතින් ඔයාට දැන් තේරෙන්න ඇති, ඔයාට යාළුවෝ 100ක් විතර ඉන්නවා නම් ඔයාට මේ එකේක්කෙනාගේ Public Keys දාලා තියන්න රාක්කයක් ඕන වෙනවා කියලා. :P ඇත්තටම මෙහෙම Public Keys දාලා තියෙන රාක්ක (Databases) තියෙනවා, අපිට ඒවා පේන්නෑ. ඒ වගේම කවදාවත් ඔයාගෙ Private Key එක නම් ඔය කිසිම රාක්කයක නෑ. ඒක තියෙන්නේ බොහොම ආරක්ෂිත ස්ථානයක. සුරක්ෂිතව. ඒ කොහෙද කියලා මගෙන් අහන්න එපා මං දන්නෑ. :D

RSA Encryption 

1970 දි James H. Ellis මේ කන්සෙප්ට් එක ගෙනාවට මොකද, මේක කරගන්නෙ කොහොමද කියලා හාංකවිසියක් එයාට තිබුන්නෑ. මොකද පරිගණක තාක්ෂණය පැත්තට ආවම මේ ඉබ්බෝ, යතුරු කම්මල් වල හදලා පාවිච්චි කරන්න බෑ නෙ. මේ යතුරු, ඉබ්බෝ, ඔක්කොම හදන්න ඕන ගණිතමය ස්වරූපයෙන්, ඇල්ගොරිතම විදියට. මේ Public Key කතාව හරි ලස්සන, ප්‍රායෝගික සහ පහසු වුණාට, මේක කොහොමද පරිගණක වලට ඉම්ප්ලිමෙන්ට් කරගන්නේ කියලා හැමෝම දහ අතේ කල්පනා කරා.

ඊට අවුරුදු කීපයකට පස්සෙ Ron Rivest, Adi Shamir, සහ Leonard Adleman කියන තුන් දෙනා එකතු වෙලා හොයාගන්නවා මේ Public Key encryption කතාව ගණිතමය ස්වරූපයෙන් කරගන්නේ කොහොමද කියන කාරණාව. මෙයාලා ඒක 1978 දී ප්‍රසිද්ධියට පත් කරනවා. ඉතින් මේ ක්‍රමවේදය එයාලා නම් කරන්නෙ එයාලගෙ Surnames වල මුල් අකුරු වලින්, (R - Rivest S - Shamir A - Adleman) RSA ක්‍රමවේදය අන්න එහෙම හැදෙනවා.

RSA ක්‍රමවේදයේ ගණිතමය ස්වරූපය මම මේ පෝස්ට් එක අස්සෙ ගහන්න යන්නෑ. මොකද මේ තියෙන ටිකත් හැලෙන්න පුළුවන්. ඉතින් මම තීරණය කළා ඒක Encryption post series එකේ 4 වෙනි කොටසට අරගෙන යන්න. ඔයාලා දැනට මතක තියාගන්න, RSA cryptosystem එක නිසා අර ඉබි යතුරු දෙකේ කතාව පරිගණක වලට implement කරගන්න පුළුවන් වුණා කියලා විතරක්. 

***

හොඳයි, එහෙනම් පරිගණක ලෝකයේ ටිකක් සංකීර්ණ වගේම ගොඩක් ආස හිතෙන කාරණාවක් වෙන Cryptography හෙවත් Encryption ගැන ලියන් යන post සිරීස් එකේ තවත් එක් පෝස්ට් එකක නිමාව තමයි මේ. ඊළඟට තමයි මොළේ කුරුවල් වෙන කතා ටික තියෙන්නේ. ඉතින් මේ ගැන ගැඹුරින් අධ්‍යනය කරන්න ඒ කොටස නැතුවත් බෑ. හරි එහෙනම්, අපි තවත් පෝස්ට් එකකින් මුණගැසෙමු. ඔබට ජය!
Share:

0 comments:

Post a Comment

Search This Blog

Follow by Email