header

header

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 වලින් මොකක්ද බලාපොරොත්තු වෙන්නේ මොනවද කියල අමුතුවෙන් කියන්න ඕන නැහැනේ.මොන ජිල්මාර්ට් එක දාලවත් සයිපර් බ්රේක් කරන්න බැරිවෙන විදියේ ආරක්ෂාවක් ඇතිකිරීම තමයි මේ ක්‍රමයේදී බලාපොරොත්තු වෙන්නේ.
තවත් ලිපියක් සමගින් ලගදීම හමුවෙමු.

Sunday, December 28, 2014

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

අද පටන් පරිගණක  හා ජාල ආරක්ෂාව පිලිබදව පාඩම් මාලාවක් රැගෙන එන්නයි බලාපොරොත්තුව,මේ පාඩම මම ඉගෙනගත්තේ නිමාවුණු දෙවන වසර දෙවන සිමෙස්ටර්යේදී.මේක මම ගොඩක්  ආශාවෙන් ඉගෙන ගත්ත subject එකක්.කොළබ UCSC එකේ Dr.කසුන් ද සොයිසා සර් තමයි මේ lecture එක අපිට කරේ විසිටින්ග් ලෙක්චරර් කෙනෙක් හැටියට.විෂය කරුණු කියල දුන්නට පලමුවන්ම එතුමන්ට ස්තුතිවන්ත වනවා.
හරි,පළවෙනියටම ඉගෙන ගන්න යන පරාසය දැන ගෙන ඉදිමු.කලින් කතා කරපු මාතෘකාව වගේ දිනෙන් දින අලුත් වෙන ගොඩක් විෂය කරුණු තියෙන subject එකක් මේකත්.

සැ.යු.විෂය තුල සදහන් වචන සදහා බොහෝ විට ඊට අදාල ඉංග්‍රීසි වදනම භාවිතා කෙරේ.
Introduction
බොහෝවිට පරිගණක ආරක්ෂාව කියල කියනකොටම අපේ ඔලුවට එන්නේ,virus,firewalls,locks ඔය වගේ සංකල්ප ,නමුත් පාඩම් මාලාව ආරම්බ කරනකොටම මම මතක් කරනවා,දත්ත හා ජාල තුල ආරක්ෂාව තහවුරු කිරීම සදහා ඉන් එහා බොහෝ දේ ඇති බව.
පරිගණක ආරක්ෂාව ඇතිකිරීම යනුවෙන් මුලිකවම අදහස් කරනු ලබන්නේ පරිගණක වැඩසටහන්වල හා දත්තවල availability,authenticity,integrity,non-repudiation,confidentiality යන ගුණාංග තහවුරු කර ගැනීම සදහා ක්‍රම හා තාක්ෂණ නිර්මාණය කිරීමයි.මේ ගුණාංග වලටම තමයි,network services කියල කියන්නෙත්.ඉතින් ඕනෑම security method එකක් විශ්ලේෂණය කරලා බැලුවොතින් මේ කියන security issue එකක් හෝ කීපයක් තමයි ඒ මගින් implement කරලා තියෙන්නේ.ඒ දේවල් පිලිබදව වෙන් වෙන්ව පැහැදිලි කර ගනිමු. 

Confidentiality 
පරිගණක හා සම්බන්ද දේවල් අවසරලත් අයට පමණක් නිරාවරණය කිරීම තමයි මෙයින් අදහස් කෙරෙන්නේ.කාටහරි යවන පණිවිඩයක් ගැන හිතුවොත් යවන්නා හා ලබන්නා පමණයි එහි අන්තර්ගතය පිලිබදව දැන ගන්න අවශ්‍ය,අතරමැදි අයෙකුට(තෙවන පාර්ශවයකට)  එහි අන්තර්ගතය නොවැටහෙන්න අවශ්‍යයි.මෙම සංකල්පය තේරුම් ගැනීම පහසු වුවත් implement කිරීම ඉතා අපහසු වෙනවා.

Integrity
මේ වචනය බොහොමයක් තැන්වල විවිද තේරුම් වලින් භාවිතා වෙනවා(database management systems වල එහෙම).පරිගණක ආරක්ෂාව පිලිබදව කතා කරනකොට මෙයින් පහත අදහස් හා තේරුම් බලාපොරොත්තු වෙනවා.

  • precise-සම්පුර්ණබව හා නිවැරදි බව
  • Accurate-නිවැරදි බව
  • Unmodified-දත්ත සන්නිවේදනයේදී නොවෙනස්ව පැවතීම
  • Consistent-සංගත බව
  • Meningful and usable-අර්ථවත් බව හා ප්‍රයෝජනවත් බව


මෙම කරුණු පහම integrity තුලින් බලාපොරොත්තු වුවද මෙයින් මුලිකවම වැදගත් වන්නේ තෙවෙනියට කියපු නොවෙනස්ව පැවතීම කියන එක,කෙනෙක් තව කෙනෙක්ට පණිවිඩයක් යැව්වම ඒ පණිවිඩය අතරමගදී වෙනස් වුනාද /නොවෙනස්වම ගියාද කියන කරුණ තහවුරු කරගැනීමයි මෙමගින් අදහස් වෙන්නේ.

Availability
මීටම තමයි accessibility කියල කියන්නෙත්.යම් සේවාවක්(client server ආකෘතිය තුල අපට හමුවෙන්නේ සේවකයෝයි,සේව්‍යයෝයිනේ :) ) අදහස් කරනු ලබන පාර්ශවයකට කරදරයක් බාදාවක් නැතුව ලබා ගැනීමට හැකිදැයි තහවුරු කරගැනීම මෙමගින් සිදුවෙනවා.හිතන්නකෝ මොනවා හරි සර්වර් එකක් තියෙනවා,හැකර් කෙනෙක් මොකද කරන්නේ මේ සර්වර් එක පාවිච්චි කරන අයට මේක use කරන්න බැරිවෙන විදියේ Busy කිරීමක් කරනවා.(server යක් සදහා වරකට පවත්වා ගත හැකි උපරිම threads ප්‍රමාණයක් තියෙනවා.මේ ප්‍රමාණය ඉක්මවූ විට තමයි සර්වර් busy වෙන්නේ).

Non repudiation
මේ සංකල්පය පැහැදිලි කරන්න පුළුවන් මෙන්න මේ විදියට.ඉලෙක්ට්‍රොනිකව අන්තර්ජාලය හරහා යම් මිලදී ගැනීමක් සිදුකරලා ඊට යම් ගෙවීමක් සිදුකරා යැයි හිතන්න.ඒ අවස්තාවකදී අදාල වෙළෙන්දා තමන් මුදල් ගෙවලා තියෙද්දිත් නොගෙව්වා කියල ප්‍රකාශ කරනවා කියලා හිතන්නකෝ.ඒ වගේ අවස්තාවකදී තමන් නිවැරදී බව ඔප්පු කරන්න යම් ක්‍රමවේදයක් සකස් කරලා තියෙන්න ඕන කියල තේරෙනවනේ.මේක ගොඩක් වැදගත් වෙන්නේ නීතිමය කටයුතු වලදී.මෙමගින් සිදු කෙරෙන්නේ අන්න එහෙම යම් පාර්ශවයක් යමක් කරලා තියෙද්දී ඒ දේ ප්‍රතික්ෂේප කරන්න බැරිවෙන විදියේ ක්‍රමයක් ගොඩක් හදන එක. 

Authenticity
සන්නිවේදනය සිදුවෙන පාර්ශවය අතරේ (යවන්නා හා ලබන්නා ) කව්ද කියල හරියටම ඒ අයගේ identification එක තහවුරු කර ගන්න ඕන,සංනිවේදන කටයුතු ආරම්බ කරන්න කලින්.අපි Account එකකට log වෙන්න කලින් username ,password දෙන්නේ ඔන්න ඔය කියන Authentication කියන එක තහවුරු කරන්න.ඊලගට හිතන්නකෝ ATM එකෙන් සල්ලි ගන්නකොට PIN NO. එකට අමතරව ATM Card එක කියලා token එකකුත් බාවිතා කරනවා.තවත් ඔබ දැකල ඇති ඇහේ retina එක fingerprint වැනි සිරුරේ යම් යම් කොටස් යොදාගෙන කරනු ලබන authentication ක්‍රමවේද.

හරි network security ගැන කතා කරනකොට ඔය කරුණු පහ පැහැදිලිව වෙන් වෙන් වශයෙන් දැනගෙන ඉන්න ඕන.හරියට භාෂාවක හෝඩිය වගේ.

සැ.යු.මෙහි සදහන් විෂය කරුණු කතෘගේ අවබෝදය මත රදා පවතින අතර විෂය පිළිබද ප්‍රමාණික විද්වතෙකුට මෙහි යම් සාවද්‍ය කරුණක් සදහන්ව ඇත්නම් පෙන්වා දිය හැක.එවැනි පෙන්වාදීමක් කෘතවෙදීව පිලිගනිමි. 

Saturday, October 4, 2014

සංඛ්‍යාංක ප්‍රතිබිම්බ සැකසුම හා පරිගණක ආශ්‍රිත චිත්‍රක-7(Segmentation)

අද අපේ මාතෘකාව වෙන්නේ Image Segmentation.Digital image එක ප්‍රයෝජනවත් කොටස් වලට කැඩීමයි ,සරලවම කිව්වොත් මෙතැනදී වෙන්නේ.මේ නිසා ඉමේජ් එක විශ්ලේෂණය කිරීම පහසු වෙනවා.එකම ලක්ෂණ තියෙන පික්සල්ස් මෙමගින් වෙන්කර ගන්නවා.ලක්ෂණ කියල මෙතැනදී මම අදහස් කරේ, පාට,තීව්‍රතාවය හා ටෙක්ස්චර් වගේ දේවල්.
යෙදීම්(Applications)
විශේෂයෙන් Medical Imaging වලදී ලබා ගන්නා ප්‍රතිබිම්බ මෙලෙස segment කිරීමෙන් බොහෝ තොරතුරු අනාවරණය කරගනු ලබනවා.ඒවගේම interpolation alogarithms යොදාගෙන ත්‍රිමාන ප්‍රතිබිම්බ ප්‍රතිනිර්මාණය කිරීමටත් මෙමගින් හැකියාව ලැබෙනවා.මීට අමතරව Image Segmentation යන්න භාවිතා වන තවත් අවස්තාවක් වන්නේ Object Detection සදහා.එනම් රේගුවේ හා වෙනත් පරීක්ෂා ස්ථානවල ගමන් මලු පරික්ෂා කර ලබා ගන්න පරිලෝකන ප්‍රතිබිම්බ වලින් වස්තු හදුනාගැනීම එම ඉමේජ් , segment කිරීමෙන් පසුවයි කෙරෙන්නේ. ඒවගේම Face Detection,Pedestrian Detection,Break light Detection වැනි හදුනාගැනීම් බොහොමයක ඉමේජ් සේග්මන්ටෙෂන් භාවිත වෙනවා.තවද Face recognition,Fingerprint recognition,Iris recognition වැනි රෙකග්නිෂන් ටාස්ක්ස් වලදීත් මෙය භාවිතා වෙනවා.

Image segmentation අලෝගරිත්ම
මෙම සැම අලෝගරිතමයක්ම සාමාන්‍යයෙන් intensity values වල ප්‍රධාන ලක්ෂණ දෙකක් මත රදා පවතිනවා.
එනම්,
discontinuity-edges වල intensity වෙනස්කම් සලකා ඉමේජ් කොටස් වෙන්කිරීම මෙහිදී සිදුකෙරේ.
Similarity-එක සමානකම් සලකා සිදු කරනු ලබන වෙන්කිරීම්


  • Thresholding

imege segmentation වලදී භාවිතා වන සරලම ක්‍රමය මෙයයි.threshold value නමින් තෝරා ගන්න ලබන අගයක් සලකා greyscale ඉමේජය binary imageයක් බවට පත්කරනවා.එවිට එම ත්රෙශෝල්ඩ් අගයට ඉහල හා පහල කළු හා සුදු වශයෙන් වෙන්වෙනවා
මෙලෙස ත්රෙශෝල්ඩ් අගය සලකා බලා points,lines වැනි දේ detect කරන්න පුළුවන්.



  • Histogram-based Methods

අනෙකුත් segmentation methods හා සංසන්දනය කර බැලීමේදී මෙය වඩා කාර්යක්ෂම ක්‍රමය වෙයි.මෙහිදී ඉමේජ්යේ සියලු පික්සල් සලකා අදිනු ලබන histogram එකක් භාවිතා කරයි.එහි ශීර්ෂ හා නිම්න මගින්  clusters වෙන් කිරීම සිදුවෙයි.මෙම උපක්‍රමය නැවත නැවත යෙදීමෙන් තව දුරටත් වෙන් කල නොහැකි clusters කිහිපයක් බවට පත් කර ගත හැකිය.මෙම සේග්මන්ටෙෂන් ක්‍රමය නිශ්චල ප්‍රතිබිම්බ වෙන්කිරීම සදහා මෙන්ම චල ප්‍රතිබිම්බ වෙන්කිරීම් සදහාද භාවිතා වෙයි.


  • Edge Detection

ඉමේජ් ප්‍රොසෙසින්ග් වලදී වඩා දියුණු ක්ෂේත්‍රයක් ලෙසින් මෙය හදුනාගන්න පුළුවන්.region boundaries වල intensity values වල විශාල වෙනස්වීම edges හදුනාගන්න භාවිත කරනවා.

මීට අමතරව segmentation සදහා තවත් techniques බොහොමයක් තිබෙනවා.එයින් කිහිපයක් මා සදහන් කරත් ඒවා පිළිබද විස්තර වශයෙන් කතා කිරීමට බලාපොරොත්තු වෙන්නේ නැහැ.

  • Compression-based methods
  • Region-growing methods
  • Partial differential equation-based methods
  • Graph partitioning methods
  • Model based segmentation
  • Multi-scale segmentation
  • Semi-automatic segmentation
  • Trainable segmentation 

 තවත් ලිපියකින් යලිත් හමුවෙමු.

Sunday, September 7, 2014

සංඛ්‍යාංක ප්‍රතිබිම්බ සැකසුම හා පරිගණක ආශ්‍රිත චිත්‍රක-6

Morphological image processing
හොදයි,ඊලග ලිපිය දාන්න ටිකක් පරක්කු වුනා වගේ.අද පාඩමෙන් අපි ඉගෙන ගන්න යන්නේ morphological image processing පිලිබදවයි.image restoration වලින් පස්සේ තමයි,මේ පාඩම වැටෙන්නේ.image එකක හැඩය හා සම්බන්ද non-linear operations කිහිපයක එකතුවක් තමයි,morphological image processing වලදී අපි කතා කරන්නේ.
කලින් පාඩමේදී සදහන් කෙරුණු පරිදි morphological operations වලදීත් අපි structuring element එකක් භාවිතා කරනවා.මෙම structuring element එක ඉමේජය මත තබමින් අසල්වැසි පික්සල්ස් සමග සසදමින්(fits,hits or intersects-පළමු පින්තුරය බලන්න) විවිද operations සිදුකරනු ලබනවා.තවත් කරුණක් සදහන් කලයුතුයි,මෙම operations 100% වැඩ කරන්නේ binary images වලට.grayscale images වලට යොදාගන්නවා නම් convert(threshold) කරලා තමයි භාවිතා කරන්න ඕන.
original grayscale image
converted binary image


අපි මීලගට morphological fundamental operations පිලිබදව කතා කරමු.
Erosion and Dialation
erosion කියන්නෙ ඉංග්‍රීසියෙන් ඛාදනය කියන එකේ.(අපි soil erosion කියල කියන්නෙ ;))මෙතැනදී වෙන්නෙත් ඒ වගේ දෙයක් තමයි.structuring element එකේ origin එකත් එක්ක fit වෙනවනම් origin පික්සල් ඉතුරුවෙද්දී අනිත් ඔක්කොම පික්සල් ඉමේජයෙන් ඉවත් කිරීම සිදු කරනවා.මෙය g= f θ s ලෙස නිරුපනය කරනවා.  f මගින් ඉන්පුට් ඉමේජයත්,s මගින් structuring element එකත්,g මගින් නව ඉමේජයත් දැක්වෙනවා.
original binary image
after erosion
erosion
2x2-5x5 අතර structuring elements භාවිතා කරමින් erosion යෙදීමෙන් ඉමේජයක සිදුරු හා ඉඩ (holes and gaps) වැඩි කරගනිමින් කුඩා විස්තර අනාවරණය කරගන්න හැකිවෙනවා.
  • s1 හා s2 යනු එකම හැඩයෙන් යුතු එමෙන්ම s2,s1 මෙන් දෙගුණයක් විශාල structuring element දෙකක් යයි සැලකුවහොත් පහත සම්බන්දය සපුරන බව සොයා ගැන තියෙනවා.                                                     f θ s2 ≈ (f  θ s1)  s1
හරි අපි දැන් dilation පිලිබදව බලමු.dilation කියන්නෙ erosion වල අනිත් පැත්ත කිව්වට වැරදි නැහැ.ඒ කියන්නෙ structure element එකේ origin එක fit වෙනවනම් ,අපි ඒ origin පික්සල් එක එකතු කරනවා.මෙහෙම කරනකොට මුල් ඉමේජ් එකේ inner ,outer boundaries වලට තව පික්සල් layers එකතු වෙනවා.මෙය නිරුපනය කරන්නේ ,g = f  s .f,s  කලින් සංකේත දැක්වෙයි.
original binary image
after dilation

dilation

erosion හා dilation ඇසුරෙන් පහත සම්බන්දය දක්වන්න පුළුවන්.
f  s = f c  srot
fc මගින් f  ඉන්පුට් ඉමේජ් එකේ complement එක දැක්වෙනවා.ඒ කියන්නෙ binary image එකේ 1 තියෙන තැනට 0 දැම්මම ලැබෙන negative imageයි.srot කියන්නෙ s structuring element එක අංශක 180කින් rotate කරාම ලැබෙන SE එක.
fundamental operations හැටියට තවත් දෙකක් කතා කරන්න පුළුවන් ඒ තමයි,මේ erosion හා dilation දෙක එකතු කරාම ලැබෙන operations(compound operations).
සැ.යු.compound operations දෙකකට වඩා පෙළපොත් වල සදහන් වුවද අප මෙහිදී ඉන් opening හා  closing පිලිබදව කතා කරනු ලැබේ. 
Opening
erosion ට පසුව dilation යෙදීමෙන් මෙම operation සිදු කරනු ලැබෙයි.
original binary image
after opening

Closing
dilation ට පසුව erosion යෙදීමෙන් මෙම operation සිදු කරනු ලැබේ.

original binary image
after closing
සැ.යු.threshold වැනි සංකල්ප ඉදිරි පාඩමකදී(segmentation) සාකච්ඡා කරනු ලැබේ.
තවත් ලිපියකින් යලිත් හමුවෙමු.

Sunday, August 3, 2014

සංඛ්‍යාංක ප්‍රතිබිම්බ සැකසුම හා පරිගණක ආශ්‍රිත චිත්‍රක-5

අපි අද පාඩමෙන් Spatial domain filtering පිලිබදව සාකච්ඡා කරමු.මේ මාතෘකාව අයිති වෙන්නේ අපි මුලින් කතා කරපු චක්‍රයේ image restoration කියන කොටසට.මේකෙන් අදහස් වෙන්නේ විනාශ වුනු(corrupted),ඒවගේම නොයිසි(noisy)  ඉමේජ් එකකින් ආසන්න ඔරිජිනල් ඉමේජ් එක ලබා ගැනීමයි.මේ සදහා තමයි විවිද ෆිල්ටර්ස් භාවිතා කරන්නේ.ෆිල්ටර් එකක් යනු මාස්ක්(කුඩා ඍජුකොනාශ්‍රයක් හෝ සමචතුරශ්‍රයක් ) හා ෆන්ක්ෂන් එකක එකතුවක් ලෙසට දක්වන්න පුළුවන්.
Filtersප්‍රධාන කොටස් දෙකකට බෙදා දැක්විය හැකිය.
එනම් linear හා non linear filters යනුවෙනි.

Linear Filters
ලිනියර් ෆිල්ටර්ස් කියන කොට මතක් වෙ න්න ඕන, මැත වල අපි ඉගෙන ගන්න ලිනියර් ෆන්ක්ෂන්ස්.ඒ  කියන්නෙ input values ටිකකට එකවරම ෆන්ක්ෂන් එක යෙදුවමත් වෙන වෙනම එක එක ඉන්පුට් values වලට ෆන්ක්ෂන් එක දාල එකතු කරාමත් එන්නේ එකම අගයක්.linear functions වලට උදාහරණ ලෙස,

  • smoothing filters
  • edge enhancing filters දැක්විය හැකියි.

Non-linear Filters
non-linear filters වලටම භාවිතා කරන තවත් වචනයක් තමයි order statistics filters කියන නම.මෙතනදී වෙන්නේ neighborhood pixel කිසියම් order එකකට සකස් කරලා center එකේ පික්සල් වැලියු එක ඩිසයිඩ් කරනවා.මෙවෙනි ෆිල්ටර්ස් කිහිපයක් ලෙස,

  • median,
  • min
  • max filters දක්වන්න පුළුවන්.

දැන් අපි මෙම filters පිලිබදව කෙටියෙන් විස්තර කතා කරමු.
Smoothing/Averaging filters
mean එකෙන් සිදුවෙන දෙ දැක්වෙන චායරුපයක්
වචනයෙන් හැගෙන පරිදිම සැම පික්සල් එකක් සදහාම අවට පික්සල් වල සාමාන්‍ය ග්‍රේ ලෙවෙල්(grey level) වැලියු(value) එක ලබා දෙයි.මෙවෙනි ෆිල්ටර්ස් blurring,noise reduction,object extraction කිරීමට පෙර ඉමේජයේ ඇති කුඩා විස්ටර ඉවත් කිරීමට ,lines curves අතර ඇති ගැප්ස් ෆිල් කිරීමට යොදාගනී.මෙහි ඇති side effect එකක් නම් යොදන සැම අවස්ථාවකදීම එජ්ස් බ්ලර් වීමයි.


Median filters
සලකනු ලබන පික්සල් එකක් අවට ඇති පික්සල් වල මධ්‍යස්ථය ගණනය කර එම පික්සල්හි නව අගය ලෙස ලබාදීම මෙහිදී සිදුකෙරෙයි.


Sharpening filters
sharpening filters යෙදීම මගින් ඉමේජ් ඩිටේල්ස් හයිලයිට් වීමක් සිදුවෙයි.තවද බ්ලර් වී ඇති ඉමේජයකින් එය ඉවත් කිරීමට sharpening filters යොදාගත හැකිය.ශාප්නින්ග් යෙදීමට spatial differentiation භාවිතා කරනු ලැබේ.differentiation මගින් කෙරෙනුයේ අප දන්නා පරිදිම වෙනස් වන ශීග්‍රතාව ගණනය කිරීමයි.මෙහිදී පළමු ව්‍යුත්පන්නය හා දෙවන ව්‍යුත්පන්නය යන දෙකම ඉමේජයක් සදහා යොදා ගන්න පුළුවන්.


නමුත් වඩාත් උසස් ගනයේ ප්‍රතිපලයක් ලබාගැනීමට දෙවන ව්‍යුත්පන්නය භාවිතා කරන්න පුළුවන්.
පහත දැක්වෙන්නේ ඉහත ව්‍යුත්පන්න භාවිතයෙන් සකසා ගත් බහුලව භාවිතා වන ලප්ලාසියන් ෆිල්ටර් 
එකයි.
වඩා හොද ඉමේජයක් ලබා ගැනීමට ලප්ලාසියන් පමණක් යෙදීම ප්‍රමානවත් නොවේ.sharpen image එකක් ලබා ගැනීමට original image එකෙන් ලප්ලාසියන් ඉමේජ් එක අඩු කිරීම සිදුකල හැක.



තවත් ලිපියකින් යලිත් හමුවෙමු.

Sunday, June 15, 2014

සංඛ්‍යාංක ප්‍රතිබිම්බ සැකසුම හා පරිගණක ආශ්‍රිත චිත්‍රක-4

අද පාඩමෙන් ඉතිරි image processing-enhancements ටික කතා කරමු.
2.Logarithmic Transformations
මෙම transformations යොදා ගන්නේ අඩු තීව්රතා (intensities) සහිත images වල details(මේ කියන්න contrast එකමයි) වැඩි කරන්න.
S = c log(1+r) කියන සමීකරණය තමයි භාවිතා වෙන්නේ මෙතනදී.c කියන්නෙ නියතයක්.මෙම c අගය වැඩි කිරීමෙන් තවදුරටත් contrast එක වැඩි කරගන්න පුළුවන්.r හැම විටම ධන අගයක් ලෙසයි සලකන්නේ(r>=0).පහත පින්තුරවලින් දැක්වෙන්නේ විවිධ c අගයන්ට transformations කිහිපයක්.
original image
transformed image(c=1)
transforme image(c=2)

I=imread('tire.tif');
imshow(I)
I2=im2double(I);%input image එක double බවට හැරවීම.
J=1*log(1+I2);
J2=2*log(1+I2);
J3=5*log(1+I2);
figure, imshow(J)
figure, imshow(J2)
figure, imshow(J3)

3.Gamma Transformations
Gamma Transformations මගින් අපට grayscale image යක intensity එක brighten හෝ darken කරන්න පුළුවන්.ඔය දේ වෙන්නේ  පිලිවෙලින් gamma අගය 1 වැඩිය අඩු වෙනකොට හා gamma අගය 1 වැඩිය වැඩි වෙනකොට.
imadjust(f, [low_in high_in], [low_out high_out], gamma) තමයි අපි බාවිතා කරන matlab code එක.f කියන්නෙ input image එක.[low_in high_in] සහ [low_out high_out] යොදාගන්නේ clipping(පසු පාඩමකදී සාකච්චා කිරීමට නියමිතයි. ) සදහා.නමුත් අපි මෙතනදී  input image එක clipping බලාපොරොත්තු වෙන්නේ නැති නිසා ඒ parameters සදහා [],[] ලෙස හිස්ව තබන්නයි හදන්නේ.
විවිද gamma අගයන්ට අනුව function එක වෙනස්වෙන හැටි පහත ප්‍රස්ථාරයේ දැක්වෙනවා.
පහත දැක්වෙන්නේ අපේ උදාහරණයට යොදාගන්න සම්පුර්ණ matlab code එක හා ලැබෙන transformations ටික.
I=imread('tire.tif');
J=imadjust(I,[],[],1);
J2=imadjust(I,[],[],3);
J3=imadjust(I,[],[],0.4);
imshow(J);
figure,imshow(J2);
figure,imshow(J3)
original image
transformed image(gamma=0.4)
transformed image(gamma=3)
4.Contrast-Stretching Transformations
Contrast-Stretching Transformations මගින් ආලෝක(light) හා අදුර(dark) අතර contrast වැඩි කරන්න පුළුවන්.තව දුරටත් කිව්වොත් කිසියම් අපි කැමති gray level එකක් ආසන්නයේ මුළු image එකම පතුරවන්න ඕන වෙලාවට මේ transformation එක භාවිතා කරන්න පුළුවන්.
g=1./(1 + (m./(double(f) + eps)).^E)
E කියන්නෙ function එකේ බැවුම පාලනය කරන විචල්‍යය.m කියන්නෙ dark values ,white values බවට හරවන්න ඕන මධ්‍ය රේඛාව.මෙහිදීත් මතක ඇතුව input image එක double බවට හරවන්න ඕන.
පහත දැක්වෙන්නේ විවිධ E අගයන්ට function එක වෙනස්වෙන  ප්‍රස්ථාරය.

I=imread('tire.tif');
I2=im2double(I);
m=mean2(I2)
contrast1=1./(1+(m./(I2+eps)).^4);
contrast2=1./(1+(m./(I2+eps)).^5);
contrast3=1./(1+(m./(I2+eps)).^10);
imshow(I2)
figure,imshow(contrast1)
figure,imshow(contrast2)
figure,imshow(contrast3)
original image
transformed image(E=4)
transformed image(E=5)
transformed image(E=10)
ඉතිරිය සමගින් යලි හමුවෙමු.