Sunday, January 18, 2015

පරිගණක හා ජාල ආරක්ෂාව 5[Asymmetric Key Encryption]

ආයුබෝවන් !අද පාඩමෙන් අපි කතාකරන්නේ Asymmetric Key Encryption පිලිබදව.මේකටම තමයි Public Key Encryption කියල කියන්නෙත්.මෙවැනි encryption ක්‍රමයක් බිහිවෙන්න ප්‍රධාන හේතු දෙකක් මුලිකව දක්වන්න පිළිවන්.Symmetric ක්‍රමයේදී Key Distribution කියන එක ප්‍රධාන දුබලතාවක් පිලිබදව කතා කළා.ඊට අමතරව Sender ගේ අනන්යතාවය ආරක්ෂා කරලා කිසියම් Document එකක් තව කෙනෙකුට යවන්න(Digital signatures) ඉඩක් symmetric වලදී දෙන්නේ නැහැ.මේ අඩුපාඩුත් මග හරවමින් තව ඇඩිෂනල් ෆීචර්තුත් එක්ක තමයි Asymmetric Key Encryption හදුන්වල දෙන්නේ.
කලිනුත් සදහන් කරලා තියෙන විදියට මේ ක්‍රමයේදී එන්ක්රිප්ෂන් වලදියි ඩික්රිප්ෂන් වලදියි දෙපැත්තේ කීස් දෙකක් භාවිතා වෙනවා.ඒකෙ ප්‍රතිපලයක් විදියට කී ඩිස්ට්‍රිබියුෂන් පහසු වෙනවා.ඒවගේම කන්ෆිදන්ෂලිටි වගේම ඔතෙන්ටිකේෂන් කියන නෙට්වර්ක් සෙකියුරිටි සර්විස් එකත් ආරක්ෂා වෙනවා.

Asymmetric Key Encryption වලදී සැම අයෙකුටම Public Key හා Private Key යනුවෙන් කීස් දෙකක් පවතිනවා.ප්‍රයිවට් කී එක පුද්ගලිකව තමා පමණක් දන්නා අතර පබ්ලික් කී එක තමන් හා සන්නිවේදන කටයුතු සදහා අනුනට ලබා දෙන්නක්.අයෙකුට තවත් කෙනෙකුට පණිවිඩයක් යැවීමට අවශ්‍ය නම් තමන් සතු අදාළ පුද්ගලයාගේ පබ්ලික් කී එකෙන් පණිවිඩය එන්ක්‍රිප්ට් කර යැවිය යුතුවෙනවා.එවිට අනෙකාට එය තමන් සතු ප්‍රයිවට් කී එකෙන් ඩික්රිප්ට් කර කියවිය හැකිවෙනවා.

මෙවැනි කී ජෝඩුවක් ප්‍රායෝගිකව හදාගනීමේදී  ඇතිවන අවශ්‍යතා පහත පරිදි දක්වන්න පිළිවන්.
  • පබ්ලික් කී එක දන්නකොට ප්‍රයිවට් කී එක තීරණය කරගන්න බැරි වෙන්න ඕන(ඇති හැකියාව අවම වෙන්න ඕන)
  • පබ්ලික් කී එකයි සයිපර් එකයි දෙකම දන්නකොට මැසේජ් එක හොයාගන්න බැරිවෙන්න ඕන(ඇති හැකියාව අවම වෙන්න ඕන)
  • එක කී එකකින් එන්ක්‍රිප්ට් කරන්නත්(පබ්ලික් කී) අනිත් කී එකෙන්(ප්‍රයිවට් කී) ඩික්රිප්ට් කරන්නත් පුළුවන් වෙන්න ඕන.
ඉතින් මේ විදියේ අවශ්‍යතා සපුරන විදියට කීස් හොයාගන්න පුළුවන් වෙන්නේ ගණිතයේ විසදන්න අමාරු ගැටළු මත පදනම් වෙලා.(Hard Problems)
ඇසිමෙට්‍රික් කී එන්ක්රිප්ෂන් වලට උදාහරණ වශයෙන් අලොග්රිතම් දෙකක් කතා කිරීමට බලාපොරොත්තු වෙනවා.

Diffie-Hellman
  • 1976 දී ප්‍රකාශයට පත්විය.
  • discrete logarithms ගණනය කිරීමේ අපහසුබව මත මෙය පදනම් වී ඇත.
මෙහිදී දෙපාර්ශවයම සන්නිවේදන කටයුතු සදහා සෙෂන් කී නම් පොදු කී එකක් සාදගනියි.එය කිසිවිටකත් හුවමාරු කර නොගන්නා නිසා තෙවැනි පර්ශවකට එය දැන ගැනීමට නොහැක.අපි දැන් මෙය සිදුවන්නේ කෙසේදැයි තේරුම් ගනිමු.පණිවිඩය හුවමාරු කරගන්න දෙපාර්ශවය A,B යනුවෙන් ගනිමු.
පළමුව දෙපාර්ශවය n,g යනුවෙන් විශාල සන්ක්‍යා දෙකක් සම්මත කර ගනී.මෙහි n අනුබද්දයෙන් g යන්න ප්‍රථමක සංඛ්‍යාවකි.

  1. දැන් A පමණක් දන්නා (මෙය A ගේ ප්‍රයිවට් කී එක ලෙස හදුනාගත හැකිය) x නම් අගයක් නිර්ණය කරගෙන X නම් අගයක් X=g^x mod n වන පරිදි A ගේ පැත්තේ ගණනය කර ගනී.
  2. මෙලෙසම B පමණක් දන්නා (මෙය B ගේ ප්‍රයිවට් කී එක ලෙස හදුනාගත හැකිය) y නම් අගයක් නිර්ණය කරගෙන Y නම් අගයක් Y=g^y mod n වන පරිදි B ගේ පැත්තේ ගණනය කර ගනී.
  3. දැන් එම X,Y අගයන් දෙක දෙපාර්ශවය එකිනෙකාට හුවමාරු කර ගනී.
  4. එවිට  A ගේ පැත්තේ k=Y^x mod n ලෙස k අගයක් ගණනය කරගනී.
  5. එලෙසම 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).

සිදුවෙන විදිය පහත පරිදි දක්වන්න පුළුවන්.

  1. p,q කියල විශාල ප්‍රථමක සන්ක්‍යා දෙකක් හදාගන්නවා.(විශාල කියන්නේ එක සංඛ්‍යාවක් ඉලක්කම් 1024 ක විතර!)
  2. දෙවැනි පියවර n=pq පරිදි n ගණනය කර ගන්නවා.ඒවගේම z කියල අගයක් z = (p-1)(q-1) වන පරිදි ගණනය කර ගන්නවා.
  3. තුන්වෙනි පියවර ලෙස z ටත් e ටත් පොදු සාධක නොවන පරිදි e අගයක් (තවද e < n විය යුතුය) තෝරාගත යුතුය.
  4. සිව්වෙනුව ed-1 හරියටම z ගෙන් බෙදෙන  විදියට d අගයක් හොයාගන්නවා.
එතකොට අපිට ලැබෙනවා පබ්ලික් කී එක හැටියට (n,e) යන්න.ඒවගේම ප්‍රයිවට් කී එක හැටියට (n,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 කරන්නේ යවන්නාගේ ප්‍රයිවට් කී එකෙන් ලබන කව්රුත් එක කියවන්නේ යවපු කෙනාගේ පබ්ලික් කී එකෙන් ඩික්රිප්ට් කරලා .දැන් පණිවිඩයක් එන්ක්‍රිප්ට් කරලා යැවීමෙදියි,දිජිටලි සයින් කරලා යැවීමේදීයි එන්ක්‍රිප්ට්,ඩික්රිප්ට් කරන කීස් මාරු වෙනවා කියල පැහැදිලි ඇති.

තවත් ලිපියක් සමගින් ලගදීම හමුවෙමු.

Monday, January 12, 2015

පරිගණක හා ජාල ආරක්ෂාව-4[Symmetric Key Encryption]

Symmetric Key Encryption

ආයුබෝවන් කැම්පස් එකේ සෙකන්ඩ් ඉයර් වැකේෂන් එකේ වැඩිපුර ලිපි ටිකක් දාන්නයි බලාපොරොත්තුව.ඒක නිසා ඊලග ලිපියත් ඉක්මනින්ම ගෙනාව.අපේ ලිපි කියවන පිරිසක් ඉන්නවා කියල තේරුනාට කමෙන්ට් එකක් නම් වැටෙන්නේ ඉතාම කලාතුරකින්. ලිපි කියවන අපේ යාළුවො තමන්ට හිතෙන මොනවා හරි කමෙන්ට් එකක් හැටියට ලියල යනවා නම් ඒක ලොකු හයියක්.හරි අතිරේක කතා ඇති ,පාඩමට යමු.  
අපි අවසානෙට කතාකලේ හැෂ්  අලෝග්රිතම්ස් ගැන.අද පාඩමෙන් අපි ඉගෙනගන්නේ Symmetric Key Encryption පිලිබදව.Encryption යොදාගන්නේ  confidentiality කියන network security service එක තහවුරු කරන්න කියල මම කලිනුත් කිව්වනේ. Symmetric Key Encryption කියන්නේ මෙලෙස එන්ක්රිප්ෂන් කිරීමේදී දෙපාර්ශවයම යොදාගන්නේ එකම key එකක්.මේ කී එකට private key කියල කියනවා.මේ නිසාම මෙය private key encryption කියලත් හදුන්වනවා.මේ ක්‍රමය  හා ආරක්ෂිතව යුස් කරන්න කී එකේ රහස්‍ය  භාවයත් ,එන්ක්රිප්ෂන් අලෝග්රිතම් එකේ ශක්තිමත් බවත් අවශ්‍ය වෙනවා කියල පැහැදිලියිනෙ.ගණිත සුත්‍රයක් ඇසුරෙන් ඉදිරිපත් කළහැකි මෙහෙම,
Y = EK(X)
X = DK(Y)

encryption ,decryption කියන දෙතනදීම කෝදා ගෙන තියෙන්නේ K කියන කී එක.Symmetric Key Encryption සදහා උදාහරණ වශයෙන් බහුල ව භාවිත වෙන (වුන) අලෝගරිත්ම්ස් දෙකක් කතාකරනවා.
The Data Encryption Standard- (DES)



  • 1974 වගේ ඈත අතීතයේදී තමයි පළමුවෙන්ම,භාවිත උනේ.
  • එන්ක්‍රිප්ට් කරන්න ගන්නේ බිට් 64 ක plain text block එකක්.
  • යොදා ගන්න කී එකේ සයිස් එක බිට් 56යි(සත්‍ය වශයන්ම බිට් 64ක් යොදාගත්තද ඉන් 8ක් error control සදහා parity-check bits ලෙස යොදා ගනියි.රුප සටහන බලන්න)
  • වට ගණන 16යි.
  • මෙම DES එන්ක්රිප්ෂන් සදහා brute force,dictionary attack වැනි හදුනාගත් ඇටැක්ස් සිදුවී ඇත.
  • 1997දි අන්තර්ජාලය මගින් එක්වූ දහස් ගණනකගෙන් යුතු පිරිසක් Many hands make light work නමැති පණිවිඩය මාස තුනක උත්සාහයකින් විසදීය.
  • 1998දි EEF නමැති දෘඩාංගයකින් මෙලෙස එන්ක්‍රිප්ට් කල පණිවිඩ විසදිය හැකිවිය.


මෙහි තිබී අඩුපාඩු මගහරවමින් triple DES නම් තවත් එන්ක්රිප්ෂන් අලෝගරිතමයක් බිහිවුණා.
 Triple DES වලදී එකිනෙකට වෙනස් k1,k2,k3 යනුවෙන් කී තුනක් භාවිතා වෙනවා.
Encrypt: C = EK3 [ DK2 [ EK1 [P] ] ]
Decrypt: P = DK1 [ EK2 [ DK3 [C] ] ]

මෙවැනි ක්‍රමයක ශක්තිමත් බව වැඩි නිසා known attacks නැති බව කියවෙනවා.

Advance Encryption Standard (AES) 

  • DES කියන්නේ මුලින්ම ආපු එන්ක්රිප්ෂන් අලෝග්රිතම් එකක්,පසුව ආපු වඩාත් ශක්තිමත් එකක් තමයි උඩින් දැක්වුණු Advance Encryption Standard එක.
  • බ්ලොක් ලෙන්ග්ත් එක බිට් 128යි.
  • සපෝර්ට් කරන කී ලෙන්ග්ත්ස් කීපයක්ම තියෙනවා , බිට් 128,බිට් 192,බිට් 256
  • එන්ක්රිප්ෂන් අලෝගරිතම් එක description අලෝගරිතම් එකත් එක්ක සර්වසම වෙන්නේ නැහැ.

බිට් 128 ක 4x4(බයිට් එක බැගින්) මැට්‍රික්ස් එක transformations 4ක් වට 10ක් සිදුවීමෙනුයි ,මෙමගින් යම් ප්ලේන් ටෙක්ස්ට් එකක් සයිපර් ටෙක්ස්ට් එකක් බවට පත් කරන්නේ.
1.subBytes
මේ පියවරේදී වෙන්නේ s-table කියල ආදේශන වගුවකින් ආදේශ කරගනු ලබන අගයක් හැම බයිට් එකටම දා ගැනීම.
2.පේලි අතුරු මාරු කිරීම
3.තීරු මිශ්‍ර කිරීම
4.addRoundKey
මේකේ වෙන දේ ගැන තව බලා ගන්න ඕනනම් නෙට් එකෙන් ගත්ත හොද ෆ්ලෑශ් ඇනිමේෂන් එකකුත් මේ එකකම දාන්නම්.

Modes of Operations
මෙම අලෝග්රිත්මයන් ප්‍රයෝගික භාවිතයේදී එක් එක් අලෝගරිතමය සමග ක්‍රියාත්මක විධි(modes of operations) කිහිපයක්ද වෙයි.
Electronic Code Book

එක් එක් බ්ලොක් වෙන වෙනම එන්ක්‍රිප්ට් කෙරෙයි.(මේ කියන අන්ඩර්දෙමලේ මොකක්ද?කලබල වෙන්නේ නැතුව අනික් ඒවත් එක්ක සංසන්දනය කරන්නකෝ)
එක සමාන  ඩේටා බ්ලොක්ස් මගින් සමාන එන්ක්රිප්ටඩ් අවුට්පුට්ස් දෙන නිසා රේපිටීෂන්ස් අදුන ගන්න පිළුවන්.මේ ක්‍රමය ආරක්‍ෂිත නැහැ.
Cipher Block Chaining

සලකණු ලබන ආරම්බක සයිපර් එකකින් (ඒකට කියනවා ඉනිශිඅල් වෙක්ටර් කියල) පටන් අරන් වැල් ක්‍රමයට ,හැම බ්ලොක් එකකටම සම්බන්දයක් තියෙන විදියට එන්ක්‍රිප්ට් කරන එක තම මෙහිදී සිදු කරන්නේ,කලින් එකේ තනියම කිව්වේ ඇයි කියල දැන් පැහැදිලියිනෙ.තව පැහැදිලි වෙන්න රුප සටහනත් බලන්නකෝ.
රිපීට් වෙන දේට වුනත් දැන් එන්ක්‍රිප්ට් වුනාට බලාගන්න බහ වෙන වෙන ඒවා තමයි  දෙන්නේ.ඒ නිසා මේක කලින් එකට වැඩිය හොදයි.
Cipher Feed Back

මෙන්න රුප සටහන එක වෙන විදිය දැක්වෙන.බලන්න රුප සටහන් දෙකේ වෙනස්කම් අදුනගන්න පුලුවන්ද කියල,පුංචි කාලේ අබ්යාසයක්නේ :)


අවසානෙට Symmetric Key Encryption වල ප්‍රබලතා හා දුබලතා පිලිබදව යමක් සටහන් කරන්න කැමතියි.
ප්‍රබලතා

  • සාපේක්ෂව කාර්යක්ෂම හා වේගවත් වෙන්නේ මේවා.
  • විශාල ප්‍රමාණයේ එන්ක්රිප්ෂන් සදහා භාවිතා වෙනවා.
  • විශාල කී සයිස් එකක් භාවිතා කරන වෙලාවට බිදීම පහසු වෙන්නේ නැහැ.

දුබලතා

  • දෙපසම එකම කී එකක් භාවිත කරන විට එම කී එක තවත් රහස්‍ය ක්‍රමයකින් අනෙක් පාර්ශවයට යැවිය යුතු වෙනවා.සිමෙට්‍රික් කී එන්ක්රිප්ෂන් වල තිබෙන ප්‍රධාන දුර්වලතාව මේකයි.
  • දෙන්න පුළුවන් කන්ෆිඩන්ෂලිටි විතරයි.
තවත් ලිපියක් සමගින් ලගදීම හමුවෙමු.මෙහි ඇති චායරුප අන්තර්ජාලයෙන් උපුටා ගැනුනි.

Wednesday, January 7, 2015

පරිගණක හා ජාල ආරක්ෂාව 3[MAC and HASH FUNCTIONS]

පරිගණක හා ජාල ආරක්ෂාව පාඩම් මාලාවේ තවත් අලුත් මාතෘකාවක් තමයි අද කතා කරන්න බලාපොරොත්තු වෙන්නේ.සයිපර් එකක් හදල බලාපොරොත්තු වෙන්නේ තෙවෙනි පාර්ශවයකට නොතේරෙන විදියට පණිවිඩය අදාළ කෙනා වෙත යවන එකනේ.එතනදී ආරක්ෂා වෙන්නේconfidentiality කියන network service එක.අද පාඩමෙන් කියන්න යන්නේ message authentication code(MAC) and hash functions ගැන.මුලින්ම කියන්න ඕන මෙතනදී ආරක්ෂා වෙන්නේ authentication and message integrity කියන network services දෙක.

MESSAGE AUTHENTICATION CODE(MAC)
මෙයින් අදහස් කරන්නේ කාටහරි යවන මැසේජ් එක මත රදා පවතින fixed size block එකක්.මෙහෙම හදන code එක ඒ මැසේජ් එකටම අනන්යයි.ඒ වගේම මේ code එක හදන්න යවන්නා හා ලබන්නා විතරක් දන්න key එකකුත් යොදා ගන්නවා.message authentication algorithm එක යුස් කරලා කොහොමද MAC එක හදාගන්නේ කියල රුප සටහනෙන් පැහැදිලි වෙනවා.හරි මෙහෙම CODE එකක් හදා ගන්නේ මොනවටද කියල කිව්වේ නැහැනේ .මේකයි කතාව මෙහෙම එකක් යොදාගන්නේ  යවන්නා යවන යම් මැසේජ් එකක් අතර මගදී වෙනස් වුනාද කියල තහවුරු කරගන්න.යවන්නාගේ කෙලවරෙදී හා ලබන්නාගේ කෙලවරේදී ඔය කෝඩ් එක එකම නම් එකෙන් තහවුරු කරගන්නවා අතරමගදී මැසේජ් එක වෙනස් වුනේ නැහැ කියල.දැන් ඔයගොල්ලොන්ට පැහැදිලි ඇති මෙතනදී වෙන්නේ message integrity නෙට්වර්ක් සර්විස්  එකෙන් බලාපොරොත්තු වෙච්ච දේ බව.එතකොට ඔබ කල්පනා කරාවී authentication කියන වචනයේ මෙතන තේරුම මොකක්ද කියල මොකද  පසුව කතා කරන hash functions වලදීත් වෙන්නේ මේ හා සමානම දෙයක් නිසා.එකට උත්තරේ මෙහෙම කියන්නම්.authentication කියන එකෙන් අදහස් කරන්නේ යවන්නා හා ලබන්නාගේ identities තහවුරු කරගන්න එකනේ.ඒ දේ implement කරන්නේ keys භාවිතා කරලා.මෙතනදීත් දෙපාර්ශවය විතරක් දන්න කී එකක් පාවිච්චි කරලා තියෙනවා එතකොට කී එක දන්න දෙන්නට විතරයි මේ දේ කරන්න පුළුවන්.එතකොට මේ ක්‍රමයේදී authentication හා integrity කියන නෙට්වර්ක් සර්විස් දෙකම ආරක්ෂා වෙන බව පැහැදිලි වෙනවා ඇති.
MAC සුත්‍රයකින් පහත  පරිදි දක්වන්න පිළිවන්.
MAC = F(K, M)
HASH FUNCTIONS
hash functions පිලිබදව ඔබ බොහෝවිට අහල ඇති.මෙයිනුත් වෙන්නේ මැසේජ් එකට අනන්‍ය වෙන නියත සයිස් එකක් තියෙන කෝඩ් එකක් හදන එක.විශේෂත්වේ වෙන්නේ මෙතනදී කී එකක් භාවිතා නොවීම.මේහෙම හදන කෝඩ් එක  ඩයිජස්ට් එකක්,ෆින්ගර්ප්රින්ට් එකක් වගේ නම් වලනුත් හදුන්වනවා.සුත්රයකින් දැක්වුවවොත්,
h = H(M)
h කියන්නේ හැදෙන හැෂ් කෝඩ් එක 
H කියන්නේ හැෂ් කෝඩ් එක හදන්න යොදාගන්න හැෂ් ෆන්ක්ෂන් එක.
මෙලෙස යොදාගන්න හැෂ් ෆන්ක්ෂන් එකකට පහත අවශ්‍යතා තියෙන්න ඕන.
මැසේජ් එකේ සයිස් එක මත නොවෙනස්ව(ඕනෑම මැසේජ් එකකට) හැෂ් කෝඩ් එකක් සපයන්න ඕන.
  • හැෂ් කෝඩ් එක කම්පියුට් කරන්න ලේසි වෙන්න ඕන.
  • හැෂ් ෆන්ක්ෂන්ස් වන්වේ වෙන්න ඕන.ඒ කියන්නේ කව්රු හරි කෙනෙක් කෝඩ් එක දීල එකේ මැසේජ් එක හොයන්න කිව්වොත් එහෙම කරන්න බැරි වෙන්න ඕන.
  • ඒවගේම එකිනෙකට වෙනස් මැසේජ් දෙකකට එකම හැෂ් කෝඩ් එක ලබා නොදෙන්න ඕන(අදාළ ෆන්ක්ෂන් එකෙන් එහෙම ලැබෙන අවස්ථා විය නොහැකි තරම් වෙන්න ඕන).
දැනට භාවිතයේ තියෙන හැෂ් ෆන්ක්ෂන් කීපයකට උදාහරණ හැටියට MD5,SHA1 අලෝගරිතම්ස් දෙන්න පිළිවන්.
MD5
  • හැෂ් කෝඩ් සයිස් එක  බිට් 128යි.
පළමුව මැසේජ් එක බිට් 512 කොටස් වලට කඩා ගන්නවා.මැසේජ් එක හරියටම 512 බිට් කොටස් වලට බෙදන්න බැරිනම් පැඩින්ග් බිට්ස් කියල අතිරේක බිට්ස් මැසේජ් එකට එකතු කර ගන්නවා.රුප සටහන බලන්න.දැන් එහෙම හදපු 512 කැලි වලට md5 ෆන්ක්ෂන් එක දාලා එන  බිට් 128 කෝඩ් ඔක්කොගෙන්ම අවසානෙට 128 බිට් හැෂ් කෝඩ් එක හදාගන්නවා.මේ වගේ අවස්ථාවට XOR ගේට් එක පාවිච්චි කරනවා. 

SHA1
  • හැෂ් කෝඩ් සයිස් එක  160 යි.
හැෂ් කෝඩ් එක සාදන ආකාරය අවබෝද කරගැනීම සදහා රුප සටහන බලන්න.

මෙම හැෂ් අල්ගොරිත්ම් දෙකේ තවත් තොරතුරු අතර සන්සදනයක් පහත වගුවේ දැක්වෙනවා.

තවත් ලිපියක් සමගින් ලගදීම හමුවෙමු.

Friday, January 2, 2015

පරිගණක හා ජාල ආරක්ෂාව 2

හරි ගිය ලිපියෙන් මුලිකව කතා කරේ නෙට්වර්ක් සර්විසස් පිලිබදව.හරි අද එතන ඉදන් පටන් ගනිමු.
Cryptography
දත්ත හා පරිගණක ආරක්ෂාව පිලිබදව කතා කිරීමේදී  cryptography කියන වචනය ඔබ හැම අහලා ඇති.යම් ලියවිල්ලක් සන්නිවේදනයේදී එහි අන්තර්ගතය වෙනස් කරලා යැවීමත්,අනෙක් අන්තයේදී එය නිවැරදිව original text එක බවට පත් කිරීමේ සමස්ත ක්‍රියාවලිය මෙමගින් අදහස් වෙනවා.මේ දේ කතා කරන්න කලින් අපි භාවිතා කරන terminology(පාරිභාෂික වචන) එක පැහැදිලි කරගෙන ඉන්න ඕන.

  • Encryption-කියවිය නොහැකි තත්වයකට පත් කරපු තොරතුරු
  • Decryption-ඒ විදියට හරවපු තොරතුරු අනෙක් අන්තයේදී ඔරිගිනල් ටෙක්ස්ට් එකකට හැරවීම
  • Cipher text-Encrypt කරපු ටෙක්ස්ට්
  • plain text-කියවිය හැකි ඔරිජිනල් text එක

Cipher Alogarithms
මෙම alogarithm  ප්‍රදාන වර්ග දෙකකට අයිති වෙනවා.එනම් Encryption Alogarithms හා decryption alogarithms.මෙවැනි alogarithm ඇත්තටම යම් (encryption හෝ decryption) key එකක් භාවිතා කරනු ලබන ගණිත ශ්‍රිත වෙනවා.මෙම key එක එන්ක්රිප්ෂන් වලදී එකක් හා ඩික්රිප්ෂන් වලදී එකක් හැටියට වෙනම දෙකක් භාවිතා වෙනවානම් එකට කියන්නේ,Assymetric Key Encryption කියලා,මේ දෙතනදීම එකම key එකක් භාවිතා වෙනවනම් එකට කියන්නේ,Symmetic key Encription කියල. මේ ගැන ඉදිරියේදී වෙනම කතා කරනවා.
cipher alogarithm කීපයක් උදාහරණ විදියට කතා කරමු.සංකේත විදියට පණිවිඩ යවන ක්‍රමවේද පිලිබදව ඈත අතීතයෙනුත් වාර්තා වෙනවා.උදාහරණයක් තමයි caesar cipher එක.
සීසර් ස්යිපර් එකේදී encryption ,decryption වෙන්නේ කොහොමද කියල උදාහරණයකින් පැහැදිලි කර ගනිමු.

Plain Text : A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Cipher Text : D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

මෙතනදී වෙලා තියෙන දේ පැහැදිලි ඇති.ඉංග්‍රීසි හෝඩියේ හැම අකුරකටම තුනක් එකතු කරාම ලැබෙන අකුර තමයි සයිපර් ටෙක්ස්ට් එකේදී භාවිත කරලා තියෙන්නේ.ඒක සාධාරණව පහත විදියට දක්වන්න පුළුවන්.
Ci = E(Pi)= Pi+3
vernam cipher
වර්නාම් සයිපර් භාවිතයෙන් යම් ටෙක්ස්ට් එකක් සයිපර් එකක් බවට හරවද්දී randomly generate කරගන්න number stream එකක් භාවිත කරනවා.පහත උදාහරණය බලන්නකෝ.

පලවෙනි පේලියේ තියෙන්නේ ඔරිජිනල් ටෙක්ස්ට් එක.දෙවැනි පේලියේ තියෙන්නේ ඒ එක් එක් අකුර ඉංග්‍රීසි හෝඩියේ කී වෙනි අකුරද කියල.මෙතනදී A-Z ,0-25 දක්වා ඉලක්කම් වලින් තමයි නිරුපනය කරලා තියෙන්නේ.හතර වැනි පෙලියෙදී අහබු ලෙස දාගත්ත අගයක් එක්ක එකතුව ගන්නවා.ඊලගට ඒකේ  26 modules value එක ගන්නවා.යමක මොඩ් අගය කියන්නේ අදාල අගය යම් නියතයකින්(මෙතනදී නම් 26)  බෙදුවට පස්සේ ඉතිරිවෙන අගය(ශේෂය).දැන් අවසානෙට ලැබුණු ඉලක්කමට අනුරුප ඉංග්‍රීසි අකුර දානවා.
Block Ciphers vs Stream Cipher
සයිපර් ප්‍රධාන කොටස් දෙකකට බෙදනවා,එක එන්ක්රිප්ෂන් ඩික්රිප්ශාන් කරද්දී භාවිතා කරන සයිස් එක අනුව.බ්ලොක් සයිපර් වලදී  එන්ක්‍රිප්ට් හෝ ඩික්රිප්ට් කරන්න ගන්නේ යම් ෆික්ස්ඩ් සයිස් බ්ලොක් එකක්(64 බිට්,128 බිට් වගේ).ස්ට්‍රීම් සයිපර් වලදී හැම අකුරක් අකුරක් (1 බයිට්) පාසා අලෝගරිතම් එකේ සයිපර් කරනවා.ස්ට්‍රීමින්ග් කියන වචනේ ගැන අදහසක් ඇතිනේ.video streaming ගැන එහෙම අහල තියෙනවනේ.

හොද සයිපර් එකක ලක්ෂණ
Shannon characteristics of a good cipher
1949 දී ශනොන් කියල හාදයෙක් හොද සයිපර් එකක තියෙන්න ඕන ලක්ෂණ ටිකක් පෙලගස්සවල තියෙනවා.ඒ ටික තේරෙන සිංහලෙන් මෙන්න මෙහෙමයි.
1.ආරක්‍ෂිත බව,ඒක සගවන්න වෙන මහන්සියට(අලෝගරිත්ම් එකට යන ප්රෝසෙසින්ග් පවර් එහෙම) අනුලෝමව සමානුපාතික වෙන්න ඕන.ගොඩක් මහන්සි වුනොත් ගොඩක් ආරක්ෂාවක්.
2.වර්නාම් සයිපර් එකේදී අපි එන්ක්රිප්ෂන් වලට රැන්ඩම් කීස් භාවිතා කරානේ.ඇත්තටම ප්‍රායෝගිකවත් මේ රැන්ඩම් කීස් තමයි බහුලවම භාවිතා වෙන්නේ.ඉතින් එහෙම රැන්ඩම් කීස් ජෙනරේට් කරගන්න යොදාගන්න මෙතඩ් එකත් සිම්පල්,කම්ප්ලේක්ස් නෙති වෙන්න ඕන කියලයි දෙවැන්නෙන් කියන්නේ.
3.සයිපර් ටෙක්ස්ට් එකයි,ඔරිජිනල් ටෙක්ස්ට් එකයි දෙකේම දිග සමාන වෙන්න ඕන කියලත් ඔහු කියනවා.
Kerckhoff's Principle
සයිපර් එකක තිබිය යුතු තවත් මුලදර්මයක් කර්චොෆ් කියල කෙනෙක් ඉදිරිපත් කරලා තියෙනවා.එන්ක්රිප්ෂන් කරන ක්‍රමවේදයක ආරක්ෂාව රදා පවතින්නේ භාවිතා කරන කී එකේ රහස්‍යභාවය මත බවත් ඒ සදහා භාවිත කරන අලෝගරිත්ම් එකේ රහස්‍යභාවය මත නොවන බවයි ඔහුගේ අදහස.
Cryptanalysis
ක්රිප්ටනලිසිස් කියන්නේ ඇටැකර්(ඉන්ට්රුඩර්- කියල හදුන්වන්නෙත් මෙයාමයි.) කෙනෙක් එන්ක්රිප්ෂන් අලෝගරිතම් එක හොයා ගන්න දෙන ට්‍රයි එකට(ඒ උත්සාහයට).
වචනවල තේරුමත් දැනගන්නකෝ.
intruder-තෙවැනි පාර්ශවයක් ලෙසින් අතුල්වෙන්නා
attacker-ප්‍රහාරකයා
cryptanalyst-ක්රිප්ටනලිසිස් සිදුකරන පුද්ගලයා
Brute Force Search
මේක ක්රිප්ටනලිස්ට් කෙනෙක් යම් කී එකක් (පාස්වර්ඩ් එකක්) අනාවරණය කරගන්න තියෙන්න පුළුවන් හැම කී එකක්ම ට්‍රයි කරන ක්‍රමවේදය.හිතන්න අපි දන්නවා කෙනෙක්ගේ FB අකවුන්ට් එකේ පාස්වර්ඩ් එක කැරැක්ටර්ස් 5යි තියෙන්නේ.අකුරු ,ඉලක්කම්,සංකේත හැම දෙයක්ම යොදාගෙන හදන්න පුළුවන් හැම පාස්වර්ඩ් එකක්ම ට්‍රය් කරලා බ්රේක් කිරීම තමයි මෙතනදී සිදුවෙන්නේ.කී එකේ බිට් සියිස් එකත් එක්ක හදන්න පුළුවන් උපරිම පොසිබල් කී සන්ක්යාවත් එක බිදින්න යන කාලයත් සන්සදනාත්මකව පහත වගුවෙන් දැක්වෙනවා.

Conditional /Unconditional Security 
පරිගණක ආරක්ෂාව conditional /unconditional security කියල තවත් කොටස් දෙකකට බෙදෙනවා.
මෙයින් conditional security කියන්නේ සීමිත පරිගණක සම්පත් පමණක් ලබාදීමෙන් යම් නෙට්වර්ක් එකක ආරක්ෂාව ඇතිකිරීම මේ නමින් හැදින්වෙනවා.බ්‍රුට් ෆෝර්ස් වගේ ඇටැක් එකක් ප්‍රධාන වශයෙන් කම්පියුටර් එකක ප්රෝසෙසින්ග් පවර් මත රදා පවතිනවනේ,ලිමිටඩ් රිසොර්සස් විතරක් දුන්නම ආරක්ෂාවක් ඇතිවෙනවනේ.
දැන් ඉතින් unconditional security වලින් මොකක්ද බලාපොරොත්තු වෙන්නේ මොනවද කියල අමුතුවෙන් කියන්න ඕන නැහැනේ.මොන ජිල්මාර්ට් එක දාලවත් සයිපර් බ්රේක් කරන්න බැරිවෙන විදියේ ආරක්ෂාවක් ඇතිකිරීම තමයි මේ ක්‍රමයේදී බලාපොරොත්තු වෙන්නේ.
තවත් ලිපියක් සමගින් ලගදීම හමුවෙමු.