කලිනුත් සදහන් කරලා තියෙන විදියට මේ ක්රමයේදී එන්ක්රිප්ෂන් වලදියි ඩික්රිප්ෂන් වලදියි දෙපැත්තේ කීස් දෙකක් භාවිතා වෙනවා.ඒකෙ ප්රතිපලයක් විදියට කී ඩිස්ට්රිබියුෂන් පහසු වෙනවා.ඒවගේම කන්ෆිදන්ෂලිටි වගේම ඔතෙන්ටිකේෂන් කියන නෙට්වර්ක් සෙකියුරිටි සර්විස් එකත් ආරක්ෂා වෙනවා.
Asymmetric Key Encryption වලදී සැම අයෙකුටම Public Key හා Private Key යනුවෙන් කීස් දෙකක් පවතිනවා.ප්රයිවට් කී එක පුද්ගලිකව තමා පමණක් දන්නා අතර පබ්ලික් කී එක තමන් හා සන්නිවේදන කටයුතු සදහා අනුනට ලබා දෙන්නක්.අයෙකුට තවත් කෙනෙකුට පණිවිඩයක් යැවීමට අවශ්ය නම් තමන් සතු අදාළ පුද්ගලයාගේ පබ්ලික් කී එකෙන් පණිවිඩය එන්ක්රිප්ට් කර යැවිය යුතුවෙනවා.එවිට අනෙකාට එය තමන් සතු ප්රයිවට් කී එකෙන් ඩික්රිප්ට් කර කියවිය හැකිවෙනවා.
මෙවැනි කී ජෝඩුවක් ප්රායෝගිකව හදාගනීමේදී ඇතිවන අවශ්යතා පහත පරිදි දක්වන්න පිළිවන්.
- පබ්ලික් කී එක දන්නකොට ප්රයිවට් කී එක තීරණය කරගන්න බැරි වෙන්න ඕන(ඇති හැකියාව අවම වෙන්න ඕන)
- පබ්ලික් කී එකයි සයිපර් එකයි දෙකම දන්නකොට මැසේජ් එක හොයාගන්න බැරිවෙන්න ඕන(ඇති හැකියාව අවම වෙන්න ඕන)
- එක කී එකකින් එන්ක්රිප්ට් කරන්නත්(පබ්ලික් කී) අනිත් කී එකෙන්(ප්රයිවට් කී) ඩික්රිප්ට් කරන්නත් පුළුවන් වෙන්න ඕන.
ඇසිමෙට්රික් කී එන්ක්රිප්ෂන් වලට උදාහරණ වශයෙන් අලොග්රිතම් දෙකක් කතා කිරීමට බලාපොරොත්තු වෙනවා.
Diffie-Hellman
- 1976 දී ප්රකාශයට පත්විය.
- discrete logarithms ගණනය කිරීමේ අපහසුබව මත මෙය පදනම් වී ඇත.
පළමුව දෙපාර්ශවය n,g යනුවෙන් විශාල සන්ක්යා දෙකක් සම්මත කර ගනී.මෙහි n අනුබද්දයෙන් g යන්න ප්රථමක සංඛ්යාවකි.
- දැන් A පමණක් දන්නා (මෙය A ගේ ප්රයිවට් කී එක ලෙස හදුනාගත හැකිය) x නම් අගයක් නිර්ණය කරගෙන X නම් අගයක් X=g^x mod n වන පරිදි A ගේ පැත්තේ ගණනය කර ගනී.
- මෙලෙසම B පමණක් දන්නා (මෙය B ගේ ප්රයිවට් කී එක ලෙස හදුනාගත හැකිය) y නම් අගයක් නිර්ණය කරගෙන Y නම් අගයක් Y=g^y mod n වන පරිදි B ගේ පැත්තේ ගණනය කර ගනී.
- දැන් එම X,Y අගයන් දෙක දෙපාර්ශවය එකිනෙකාට හුවමාරු කර ගනී.
- එවිට A ගේ පැත්තේ k=Y^x mod n ලෙස k අගයක් ගණනය කරගනී.
- එලෙසම B ගේ පැත්තේ k=X^y mod n ලෙස k අගයක් ගණනය කරගනී.
දැන් ඔයගොල්ලෝ බලයි ඇයි මම ඒ අගයන් දෙකටම k කියල එක සංකේතයක් දැම්මේ ඒ දෙක සමානද කියල .ඔව් ඇත්තටම ඒ දෙකම සමානයි.එක මේ විදියට පෙන්නන්න පුළුවන්.
පළවෙනියට A ගේ පැත්ත බලන්න.එක මේ විදියට සමානතාවයකට ගෙන්න පුළුවන් නේ k=Y^x mod n= g^xy mod n.දැන් Y වලට g^y mod n ආදේශ කරලා බලන්න.තව මොඩ් n දෙපාරක්,එක පාරක් දැම්මත් එකයිනෙ,දැන් දර්ශක පොඩ්ඩක් සුළු කරලා බලන්න.g^xy mod n ගන්න පුළුවන්නේ.හරි B ගේ පැත්තෙත් ඔය විදියට X වලට g^x mod n ආදේශ කරලා බලන්න.දෙකම සමාන වෙනවනේ.
ඔහොම හදාගන්න සෙෂන් කී(k) භාවිතයෙන් තමයි එන්ක්රිප්ෂන් ඩික්රිප්ෂන් කරන්න භාවිතා කරන්නේ.
RSA
Rivest, Shamir, Adelson කියන තුන්දෙනා එකතු වෙලා බිහිකරපු නිසා තමයි මේ විදියට නම් කරන්නේ.මෙතනදී භාවිතා කරන අමාරු ගණිත ගැටලුව තමයි ප්රථමක සන්ක්යා සාදක කිරීම(Prime Factorization).
සිදුවෙන විදිය පහත පරිදි දක්වන්න පුළුවන්.
- p,q කියල විශාල ප්රථමක සන්ක්යා දෙකක් හදාගන්නවා.(විශාල කියන්නේ එක සංඛ්යාවක් ඉලක්කම් 1024 ක විතර!)
- දෙවැනි පියවර n=pq පරිදි n ගණනය කර ගන්නවා.ඒවගේම z කියල අගයක් z = (p-1)(q-1) වන පරිදි ගණනය කර ගන්නවා.
- තුන්වෙනි පියවර ලෙස z ටත් e ටත් පොදු සාධක නොවන පරිදි e අගයක් (තවද e < n විය යුතුය) තෝරාගත යුතුය.
- සිව්වෙනුව ed-1 හරියටම z ගෙන් බෙදෙන විදියට d අගයක් හොයාගන්නවා.
RSA භාවිතයෙන් එන්ක්රිප්ෂන් හා ඩික්රිප්ෂන් කෙරෙන විදිය දැන් බලමු.
m කියන පණිවිඩය encript කරන්න ඕන කියල හිතමු .ලැබෙන සයිපර් එක c නම්,
c = m^e mod n ලෙස ලැබේ.
එලෙසම එම c සයිපර් එක ඩික්රිප්ට් කිරීමේදී ,
m = c^d mod n ලෙස m ලැබෙයි.
මෙතන සිදුවෙන මැජික් එක පහත විදියට දක්වන්න පුළුවන්.
m = (m^e mod n)^d mod n
Digital Signature
Asymmetric Key Encryption මගින් තවත් වැදගත් issue එකක් address කරනවා කියල කිව්වා මතක ඇති .ඒ තමයි එමගින් Digital Signatures යෙදිය හැකිවීම.ඩිජිටල් සිග්නේචර්ස් වලදී බලාපොරොත්තු වෙන්නේ යම් ඩොකියුමන්ට් එකක් සයින් කිරීමනේ එතකොට අර පණිවිඩයක් කෙනෙකුට යවනවා වගේ නෙවෙයි.කාටත් ඩොකියුමන්ට් එක ලබාගන්න පුළුවන් එත් එක කිසියම් නිශ්චිත පුද්ගලයෙකුගේ කියලයි තහවුරු කරන්න ඕන.එක නිසා ඒ ඩොකියුමන්ට් එක encrypt කරන්නේ යවන්නාගේ ප්රයිවට් කී එකෙන් ලබන කව්රුත් එක කියවන්නේ යවපු කෙනාගේ පබ්ලික් කී එකෙන් ඩික්රිප්ට් කරලා .දැන් පණිවිඩයක් එන්ක්රිප්ට් කරලා යැවීමෙදියි,දිජිටලි සයින් කරලා යැවීමේදීයි එන්ක්රිප්ට්,ඩික්රිප්ට් කරන කීස් මාරු වෙනවා කියල පැහැදිලි ඇති.
තවත් ලිපියක් සමගින් ලගදීම හමුවෙමු.