Showing posts with label Privacy နှင့် Security. Show all posts
Showing posts with label Privacy နှင့် Security. Show all posts

Dec 28, 2016

SSL နှင့် SSL Certificate ဆိုတာဘာလဲ။

sagaing
SSL ဆိုတာ (Secure Socket Layer) ကိုခေါ်တာဖြစ်ပြီး TLS (Transport Layer Security) လို့လည်း ခေါ်ပါတယ်။ SSL ဟာ Request လုပ်တဲ့အချက်အလက်တွေကို ဝှက်ထားပေးခြင်း (Encryption) နှင့် မည်သူမည်ဝါဖြစ်ကြောင်း၊ သိရှိနိုင်ရန် (Identification) ခွဲခြားသတ်မှတ်ပေးခြင်းတို့ကို လုပ်ဆောင်ပေးတဲ့ နည်းပညာတစ်ခု ဖြစ်ပါတယ်။  ဒီနည်းပညာကို Website တွေရဲ့  လုံခြုံရေး၊ အဆင့်မြှင့်တင်ရန်အတွက် အသုံးပြုကြပါတယ်။ Website တစ်ခုမှာ ဒီနည်းပညာ ထည့်သွင်းထားခြင်းဖြင့် အဲ့ဒီ Website ဟာ မည်သူမည်ဝါဖြစ်ကြောင်းကို Client ကအတည်ပြု၊ စစ်ဆေးနိုင်သလို၊ အဲ့ဒီ Website တွေကနေ Request (Search, Submit, စသည်ဖြင့်...) လုပ်လိုက်လျှင်လည်း Server ဆီကို Encrypt လုပ်ထားတဲ့ Request တစ်ခုအနေနှင့် ပို့ပေးနိုင်ပါတယ်။ Server သည်လည်း အဲ့ဒီ Request ကို Decrypt လုပ်ပြီး လိုအပ်တဲ့ လုပ်ငန်းတွေကို ဆောင်ရွက်ပေးမယ်...၊ ပြီးရင် Response ကို Encrypt လုပ်ပြီး Client (Browser : eg: Chrome, Firefox, စသည်ဖြင့်...) ဆီကို ပြန်ပို့ပေးပါတယ်။ အဖွဲ့အစည်းတစ်ခုအနေနှင့် မိမိတို့ Website ကို အင်တာနက်မှာ လွှင့်တင်ထားလိုက်ပြီ (Live) ဆိုတာနှင့် ဒီ Website ကိုမည်သူမည်ဝါတွေ အသုံးပြုသည်လည်းဆိုတာ အလွယ်တကူ မသိနိုင်ပါဘူး။ အထူးသဖြင့် အရေးပါတဲ့အချက်အလက်တွေဖြစ်တဲ့ Credit Card မှာရှိတဲ့ အချက်အလက်တွေကို Website ထဲမှာ ထည့်သွင်းပေးရမယ့် အပိုင်းတွေ ပါလာခဲ့မယ်ဆိုရင်၊ ဒီ Website အသုံးပြုသူ (User) တွေရဲ့ အချက်အလက်လုံခြုံရေးကို ထည့်သွင်းစဉ်းစားပေးရပါမယ်။  အဲ့ဒီလိုစဉ်းစားတဲ့အခါမှာ အဓိက လုပ်ဆောင်ရမယ့် လုံခြုံရေးဆိုင်ရာ နည်းပညာတစ်ခုက SSL ပဲဖြစ်ပါတယ်။

SSL ထည့်သွင်းထား၊ မထားဘူးလားဆိုတာ ဘယ်လိုသိနိုင်လည်း။
Website တစ်ခုမှာ SSL ထည့်သွင်းထားလား၊ မထားဘူးလားဆိုတာကို သူ့ရဲ့ URL (Uniform Resource Locator) မှာကြည့်ခြင်းအားဖြင့် သိနိုင်ပါတယ်။


ဥပမာ Google ရဲ့ URL ကိုကြည့်လိုက်မယ်ဆိုရင် https ဆိုပြီး အစိမ်းရောင်နှင့် သော့ဂလောက်ပုံလေးကို တွေ့ရပါလိမ့်မယ်။ အဲ့ဒါဆိုရင် ဒီ Website မှာ SSL ကိုထည့်သွင်းထားတယ်လို့ ပြောနိုင်ပါတယ်။

SSL ထည့်သွင်းမထားရင် ဘာတွေဖြစ်နိုင်လည်း။
Website တစ်ခုမှာ SSL ထည့်သွင်းမထားရင်၊ Website အသုံးပြုတဲ့သူ (User) တွေရဲ့ အချက်အလက်တွေကို ကြားခံ တစ်ယောက်ယောက်က ဖောက်ထွင်း ရယူနိုင်ပါတယ်။ အဲ့ဒါကြောင့် SSL ထည့်သွင်းမထားတဲ့ Website တွေမှာ အရေးပါသည့် အချက်အလက်တွေဖြစ်တဲ့ Credit Card နံပါတ်၊ ဖုန်းနံပါတ်၊ မှတ်ပုံတင် စတာတွေကို အလွယ်တကူ ထည့်သွင်းမပေးမိဖို့ သတိပြုရပါလိမ့်မယ်။

SSL ရဲ့ အလုပ်လုပ်ပုံ
ဒီလုပ်ဆောင်ချက် အဆင့်တွေကို Handshake (လက်ဆွဲနှုတ်ဆက်ခြင်း) လို့လည်းခေါ်ပါတယ်။
၁) SSL ထည့်သွင်းထားတဲ့ Website တစ်ခုကို User တစ်ယောက် Browser ကနေဝင်လိုက်တယ်။
၂) Web Page မမြင်ရခင်မှာ အရင်ဆုံး Server ကနေပြီး Browser ဆီကို Public Key နှင့် SSL Certificate ကိုပို့ပေးမယ်။
၃) Browser က သူ့ဆီရောက်လာတဲ့ SSL Certificate ကို ယုံကြည်စိတ်ချရတဲ့ Certificate Authority (CA) စာရင်းထဲမှာပါလား၊ မပါဘူးလားဆိုတာ စစ်ဆေးကြည့်မယ်၊ အဲ့ဒီ CA စာရင်းက Browser ထဲမှာ အသင့်ပါလာပြီးသား ဖြစ်တယ်။ Certificate မှန်ကန်တယ်ဆိုရင် Browser က Symmetric Session Key လို့ခေါ်တဲ့ အပြန်အလှန် အသုံးပြုနိုင်မယ့် ကီးနှစ်ခုကို ဖန်တီးမယ်၊ ပြီးရင် အဲ့ဒီကီးနှစ်ခုထဲက တစ်ခုရယ်၊ Request လုပ်မယ့် အချက်အလက်တွေရယ်ကို Server ဆီက Public Key ကိုအသုံးပြုပြီး Encrypt လုပ်မယ်၊ ပြီးရင် Server ဆီကို ပြန်ပို့ပေးမယ်။
၄) Server က အဲ့ဒီ အချက်အလက်တွေကို သူ့ရဲ့ကိုယ်ပိုင်ကီး (Private Key) ကို အသုံးပြုပြီး ပြန်ဖော်တဲ့ (Decrypt) အလုပ်ကိုလုပ်မယ်၊ ပြီးရင် Encrypted Session တစ်ခုကို စတင်လို့ရပြီဆိုတဲ့ အကြောင်းကို Browser ဆီကရလာတဲ့ Symmetric Session Key နှင့် Encrypt လုပ်ပြီး Browser ဆီကို ပြန်ပို့ပေးမယ်။
၅) နောက်ဆုံးမှာ Server နှင့် Browser ဟာ Symmetric Session Key ကိုအသုံးပြုပြီး အချက်အလက်တွေကို လျှို့ဝှက်စွာ အပြန်အလှန် ပေးပို့တဲ့အလုပ်ကို ဆက်လက်လုပ်ဆောင်သွားမှာ ဖြစ်ပါတယ်။

Certificate Authority (CA) ဆိုတာဘာလည်း။
Certificate Authority ဆိုတာ အဖွဲ့အစည်း (သို့) တစ်ဦးတစ်ယောက် နှင့် သက်ဆိုင်တဲ့ Website တွေအတွက် Digital Certificate နှင့် Private/Public Key တွေကိုပြုလုပ်ပေးတဲ့ အဖွဲ့တစ်ခုဖြစ်ပါတယ်။ Certificate ဆိုတာကတော့ Website တစ်ခုနှင့်သက်ဆိုင်တဲ့ Serial No, Site Name, Company Name, Address, Expired Date, Issuer စသည်ဖြင့် အချက်အလက်တွေပါတဲ့ ဖိုင်တစ်ဖိုင်ဖြစ်ပါတယ်။  ထိပ်တန်း (၅) ခုစာရင်းဝင် CA တွေကတော့ GoDaddy, Verisign, Comodo, DigiCert, Thawte တို့ပဲဖြစ်ပါတယ်။  ကျွန်တော်တို့ လက်ရှိအသုံးပြုနေတဲ့ Browser တွေမှာ Global CA စာရင်းနှင့် သူတို့ရဲ့ Public Key တွေပါပါတယ်။  ဥပမာ။ Chrome မှာဆိုရင် Settings ထဲက Show Advanced Setting ၊ အဲ့ဒီထဲကမှ HTTPS/SSL မှာ Manage certificates... ဆိုတဲ့ထဲ၊ ဝင်ကြည့်မယ်ဆိုရင် Root Certificates တွေကို တွေ့ရပါလိမ့်မယ်။  ဒါတွေဟာ Browser ထဲမှာ ကြိုတင်ထည့်သွင်းထားတဲ့ CA စာရင်းဖြစ်ပါတယ်။


SSL Certificate ကို ဘယ်လိုဝယ်ရတာလည်း။
အကယ်၍ မိမိ Website မှာ SSL Certificate ထည့်ချင်တယ်ဆိုရင်၊ မိမိ Website ကို Hosting လုပ်တဲ့ Provider တွေဆီမှာ အလွယ်တကူ ဝယ်ပြီး၊ ထည့်လို့ရပါတယ်။  အကယ်၍ မိမိ Website ဟာ အဖွဲ့အစည်းတစ်ခုနှင့်သက်ဆိုင်တဲ့ Website ဖြစ်ခဲ့မယ်၊ Hosting ကိုလည်း သီးသန့် Server အခန်းတစ်ခုအနေနှင့် ထားမယ်၊ ဒါမှမဟုတ် Data Center တစ်ခုမှာ ကိုယ်ပိုင် Server နှင့် Hosting လုပ်ထားမယ်ဆိုရင်၊ SSL Certificate လုပ်ပေးတဲ့ Provider တွေဆီမှာ Certificate သီးသန့် လုပ်လို့ရပါတယ်၊ နာမည်ကြီးတဲ့ ထိပ်တန်း (၅) ခုစာရင်းဝင် Provider (CA) တွေကတော့ GoDaddy, Verisign, Comodo, Digicert, Thawte တို့ပဲဖြစ်ပါတယ်။  အဲ့ဒီ Provider တစ်ခုခုမှာ မိမိ Server ရဲ့ အချက်အလက်တွေ ပေးပြီး Register လုပ်ရမယ်၊ ပြီးရင် ကျသင့်ငွေ ပေးချေရမယ်၊ ပြီးရင် Provider က မိမိ Website အတွက် Certificate ထုတ်ပေးမယ်၊  အဲ့ဒီ Certificate ဖိုင်ကို Download ချပြီး၊ IIS (Internet Information Server) ထဲမှာ Configuration လုပ်ပေးရမယ်။ အခြား Web Server (Apache, GWS, စသည့်...) တွေလည်းဖြစ်နိုင်ပါတယ်။ အဲ့ဒါတွေ ပြီးသွားပြီ ဆိုရင်တော့ SSL Certificate နှင့် လုံခြုံတဲ့ Website တစ်ခုဖြစ်သွားပါပြီ။ တကယ်တော့ အဖွဲ့အစည်းတစ်ခုမှာ အဲ့ဒီအလုပ်တွေကို Network Engineer တွေနှင့်ဖွဲ့စည်းထားတဲ့ Infra Team ကသာလုပ်ရမှာဖြစ်ပါတယ်။

Self Signed Certificate ဆိုတာဘာလည်း။  ဘယ်လိုလုပ်လို့ရလည်း။
localhost ဆိုတာ Web Developer တွေနှင့် ရင်းနှီးကျွမ်းဝင်ပြီးသား နေရာတစ်ခုပါ။  ပုံမှန်အားဖြင့် localhost ဟာ http နှင့် အလုပ်လုပ်ပါတယ်၊ သို့သော် localhost အတွက် SSL ထည့်လို့ရပါတယ်။  အဲ့ဒီ SSL ဟာ localhost အတွက်ပဲဖြစ်တဲ့အတွက် Self Signed Certificate လို့ခေါ်ပါတယ်။  အောက်မှာပြထားတဲ့ နမူနာက IIS (Internet Information Services) မှာ local SSL တစ်ခု ဖန်တီးပုံနှင့် အဲ့ဒီ SSL ကို Website မှာ ဘယ်လို Configuration လုပ်ရမှာလည်းဆိုတာကို တဆင့်ခြင်း ပြထားတာဖြစ်ပါတယ်။
၁) IIS ထဲက Server Certificates ထဲကိုဝင်ပြီး...

၂) Create Self Signed Certificates... ဆိုတဲ့နေရာကို Click နှိပ်မယ်။

၃) Certificate အမည်ကို အကျွမ်းတဝင်ဖြစ်နိုင်မယ့် အမည်တစ်ခုပေးမယ်၊ အိုခေ လုပ်မယ်။

၄) အဲ့ဒါလုပ်ပြီးတာနှင့် Self Signed Certificate တစ်ခုရပါမယ်။

၅) အဲ့ဒီ Certificate ကို localhost ထဲက Website တစ်ခုမှာ သုံးမယ်ဆိုရင်၊ Bindings ထဲမှာ သတ်မှတ်ပေးရပါမယ်။

၆) Site Bindings ထဲမှာ Add... ကို Click နှိပ်မယ်

၇) ပြီးရင် Type မှာ https နှင့် SSL certificate မှာခုနက ဖန်တီးထားတဲ့ Self Signed Certificate ကိုရွေးလိုက်ရုံပါပဲ။

အဲ့ဒါတွေ ပြီးသွားပြီဆိုရင် https://localhost နှင့် Website ကို Browse လုပ်လို့ရသွားပါပြီ။  (အကယ်၍ Browse လုပ်လို့မရဘူး Browser မှာ Error တက်နေတယ်ဆိုရင် Configuration မှာ တခြားလုပ်စရာတွေ ထပ်ရှိနိုင်ပါတယ်။)

Website တစ်ခုက SSL Certificate တစ်ခုကို Code ရေးပြီး ဘယ်လိုဖတ်နိုင်လည်း။
SSL Certificate တစ်ခုကို မည်သည့် Programming Language နှင့်မဆို Code ရေးပြီး ရယူတာ၊ ဖတ်တာတွေ၊ လုပ်လို့ရပါတယ်။ အောက်မှာ ရေးထားတဲ့ နမူနာ C# Code က Google ရဲ့ SSL Certificate ကိုယူပြီး၊ အဲ့ဒီအထဲက အချက်အလက်တွေကို ဖတ်မယ်၊ ပြီးရင် Certificate Dialog Box မှာ ဖွင့်ကြည့်မယ်၊ စသည့် အလုပ်တွေကို လုပ်ပါလိမ့်မယ်။ အခြား Language တွေမှာလည်း သက်ဆိုင်ရာ Library ဖိုင်တွေကို အသုံးပြုပြီး အခုလို ရေးသားနိုင်ပါတယ်။

using System;
using System.Net;
using System.Security;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.Text;

namespace ReadCertificateData
{
    class Program
    {
        static void Main(string[] args)
        {
            //Create and initialize a request
            HttpWebRequest request = (HttpWebRequest)
            WebRequest.Create("https://www.google.com");
            //Get response from request
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            response.Close();

            //X509Certificate is for X.509 v.3 certificates
            X509Certificate cert = request.ServicePoint.Certificate;
            //X509Certificate2 represents an X.509 certificate 
            //and cannot be inherited.
            X509Certificate2 cert2 = new X509Certificate2(cert);
            
            //Print certificate data
            Console.WriteLine("Issuer Name:" + cert2.GetIssuerName());
            Console.WriteLine("Expired Date:" + cert2.GetExpirationDateString());
            Console.WriteLine("Public Key:"+cert2.GetPublicKeyString());
            Console.WriteLine("Press Enter...");
            Console.Read();

            //System.Security dll has to add in References 
            //to use X509Certificate2UI
            //It show certificate dialogbox
            X509Certificate2UI.DisplayCertificate(cert2);
        }
    }
}

Dec 20, 2016

Hashing နှင့် Encryption အကြောင်း

sagaing

Hashing ဆိုတာ ဘာလဲ။

စာကြောင်းတစ်ကြောင်းကို တိုတောင်းပြီး ကန့်သတ်ထားတဲ့ စကားလုံးအရေအတွက်နှင့် ဖတ်ရန်ခက်ခဲသော စာကြောင်းတစ်ကြောင်း (သို့) စကားဝှက် အဖြစ် ပုံစံပြောင်းလဲ လုပ်ဆောင်ပေးခြင်းကို ခေါ်ပါတယ်။  Hash လုပ်ထားတဲ့ တန်ဖိုးတစ်ခုဟာ ခန့်မှန်းရလည်းခက်တယ်။  နောက်ပြီး Hash လုပ်ထားတဲ့ စာသားကို နဂိုစာသားပြန်ဖြစ်အောင် လုပ်လို့မရဘူး။  တစ်လမ်းသွား (ပြန်လမ်းမဲ့ ဓါးသမား :D) နည်းလမ်းပဲဖြစ်ပါတယ်။ Hashing မှာ တစ်ခုသတိထားရမှာက Hash Value တွေကို Hack လုပ်တဲ့ Algorithms တွေရှိတယ်။  ဥပမာ RainBow Table, Dictionary Attack, Brute-Force Attack တို့ဖြစ်တယ်။  ဖြစ်နိုင်ခြေရှိတဲ့ Hash Value တွေကို Dictionary (သို့) Table တွေထဲမှာ ထည့်ထားမယ်ပြီးရင် အဲ့ဒီအထဲကနေ Hash တန်ဖိုးတွေကိုရှာပြီး Hack လုပ်တာဖြစ်တယ်။  Hack လုပ်တာ လွယ်ကူတဲ့ကိစ္စတော့ မဟုတ်ဘူး။  ဒါပေမယ့် Hash Value တွေထုတ်တဲ့အခါမှာ အားနည်းချက်တွေ ရှိခဲ့မယ်ဆိုရင်တော့ လုပ်နိုင်ပါလိမ့်မယ်။

ပေါ်ပြူလာ Algorithms များ


ကျယ်ပြန့်ပြီး လူသိများတဲ့ Hashing လုပ်ဆောင်ချက်ဖြစ်ပါတယ်။  ၄င်းက 16-byte ပါတဲ့ hash တန်ဖိုးတွေကို ထုတ်ပေးနိုင်ပါတယ်။ မြင်ရတဲ့ တန်ဖိုးကတော့ 32 digit ရှိတဲ့ hexadecimal ကိန်းဂဏန်းအနေနှင့် ဖေါ်ပြလေ့ရှိပါတယ်။

ဥပမာ (E7C7BF203E44DB22D3D52A7517E3924A)
ဒါကျွန်တော့နာမည်ကို Hash နှင့် ထုတ်ထားတာပါ။


SHA မှာတော့ ကွဲပြားခြားနားတဲ့ Algorithms (၃) မျိုးရှိပါတယ်။  အဲ့ဒါတွေက (SHA-0, SHA-1, SHA-2) ဆိုပြီးရှိတယ်။ SAH-0 ကတော့ အင်မတန်မှ လူသုံးနည်းပါတယ်။ ဘာလို့လည်းဆိုတော့ error ရှိနေတဲ့ အတွက်ကြောင့် ဖြစ်တယ်။  အဲ့ဒီ error ကို ပြင်ပြီးတော့ အသစ်ထွက်လာတဲ့ Algorithm က SHA-1 ဖြစ်တယ်။  လူသုံးလည်းများတဲ့ နည်းစနစ်တစ်ခုလည်း ဖြစ်တယ်။ သူကနေ 20-byte ပါတဲ့ hash တန်ဖိုးတွေကို ထုတ်ပေးနိုင်တယ်။  မြင်ရတာကတော့ 40 digits hexadecimal ကိုမြင်ရမှာပါ။

ဥပမာ (6CCC32CFD31F6D09A4AE424FFAAFB35A8A5F61EF)
ဒါလည်း ကျွန်တော့နာမည်ကို Hash နှင့် ထုတ်ထားတာပါ။

SHA-2 ကတော့ SHA-1 ကိုပဲ မတူကွဲပြားတဲ့ ပြောင်းလဲမှုတွေနှင့် ဖန်တီးထာတဲ့ Algorithm ဖြစ်တယ်။ အဲ့ဒါကတော့ သူ့မှာ hash လုပ်ဆောင်ချက် (၆) ခုနှင့်ဖွဲ့စည်းထားတာပဲဖြစ်တယ်။ အဲ့ဒါတွေကတော့… SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256 တို့ပဲဖြစ်တယ်။  အရေးပါတဲ့ လုံခြုံရေးပိုင်းဆိုင်ရာ လုပ်ဆောင်ချက်တွေ၊ လုပ်ငန်းတွေမှာ သုံးဖို့ဆိုရင် SHA-256 နှင့် အထက်မြင့်တဲ့ Hashing Algorithm တွေကိုသာ သုံးဖို့ နည်းပညာရှင်တွေက အကြံပြုပါတယ်။  SHA-256 က 32byte ပါတဲ့ Hash တန်ဖိုးကို ထုတ်ပေးနိုင်တယ်။  မြင်ရတာကတော့ 64 digits hexadecimal ကိုမြင်ရမှာပါ။

ဥပမာ (48943605964CE3204CCEF15D3856EC1D426FC5981BD8E94C351F7E7660CA082C)
ဒါလည်း ကျွန်တော့နာမည်ကို Hash နှင့် ထုတ်ထားတာပါ။

တကယ်တော့ Hashing နည်းပညာဟာ ကျွန်တော်တို့ရဲ့ Password တွေကို လုံခြုံအောင် သိမ်းရန်အလို့ငှာ အသုံးပြုဖို့ ရည်ရွယ်ထားတဲ့ နည်းလမ်းတစ်ခု ဖြစ်ပါတယ်။ တစ်စုံတစ်ယောက်က ဒီ Hash လုပ်ထားတဲ့အချက်အလက်ကို ပြန်ဖေါ်ဖို့ဆိုတာ အင်မတန်မှကို ခက်ခဲပါတယ်။  (ခက်ခဲတယ်ဆိုတာ ဒီလိုပါ...တကယ့်ကို ကျစ်လစ်တဲ့ Hash နည်းစနစ်တစ်ခုမှာ salt ဆိုတာကိုပါ ပေါင်းစပ်ပြီး Hash တန်ဖိုးတွေကို ထုတ်လေ့ရှိပါတယ်။  ဆားနည်းနည်း ခပ်လိုက်တဲ့ သဘောပေါ့... :D) Password တွေကို သိမ်းတဲ့အခါမှာ Salt နှင့် Hash ပေါင်းစပ်ပြီး သိမ်းသင့်ပါတယ်။ Salt ဆိုတာဘာလည်းဆိုတော့ Random (ကြုံရာ၊ ကျပန်း) ကိန်းဂဏန်း တစ်ခုကိုပြောတာပဲ ဖြစ်တယ်။ အဲ့ဒီ Salt ကို Hash ထဲမှာ အပို (အရန်) တစ်ခုအနေနှင့် ထည့်သွင်းပြီး သုံးလေ့ရှိတယ်။ Password သို့မဟုတ် Passphrase တွေအတွက် သုံးလေ့ရှိတယ်။ Hashes တန်ဖိုးတွေဟာ ပင်ကိုအားဖြင့် သူ့သဘာဝက ပြန်လမ်းမရှိတဲ့ သဘောတရား အနေနှင့်တည်ရှိတယ်။ Hashing ကို ဘယ်လိုနေရာမျိုးတွေမှာ သုံးလည်းဆိုတော့ Database လိုနေရာမျိုးမှာ သိမ်းထားတဲ့ Hash တန်ဖိုးနှင့် ကျွန်တော်တို့ဆီက ထည့်လိုက်တဲ့ Hash တန်ဖိုး ၂ခုကို နှိုင်းယှဥ်ချင်တဲ့ လုပ်ဆောင်ချက်မျိုးတွေမှာ အင်မတန်မှ အသုံးတွင်ကျယ်တယ်။  အောက်ကပုံမှာ Hashing ဘယ်လို အလုပ်လုပ်လည်းဆိုတာ ပြထားတာပါ။

Encryption ဆိုတာဘာလဲ။
သူကကြတော့ ဖတ်လို့မရတဲ့ စာသားတွေအဖြစ် (စကားဝှက်) ပုံစံပြောင်းလဲ၊ လုပ်ဆောင်ပေးတာပဲ ဖြစ်တယ်။ စာကားလုံးအရေအတွက် ကန့်သတ်မထားဘူး။ Encrypt လုပ်ထားတဲ့ စာကြောင်း၊ အချက်အလက်ကို ဖတ်လို့ရတဲ့နဂိုမူလစာသားပြန်ရအောင် ပြန်ဖေါ်လို့ရတယ်။ ဒါပေမယ့် မှန်ကန်တဲ့ Key ရှိဖို့တော့လိုတယ်။  တချို့နေရာတွေမှာ Encryption ကို Hashing ရဲ့အပေါ်မှာ ထပ်ထည့်သုံးလေ့ရှိပါတယ်။  အဓိက Encryption နှစ်မျိုးရှိတယ်။  အဲ့ဒါတွေက...


သူကတော့ Encrypt လုပ်တာ နှင့် Decrypt (ပြန်ဖေါ်) လုပ်တာကို Key တစ်ခုတည်းနှင့် သုံးပြီး အလုပ်လုပ်တဲ့ လုပ်ဆောင်ချက် ဖြစ်တယ်။ သုံးရတာ ရိုးရှင်းပြီး မြန်ဆန်စွာ လုပ်ဆောင်နိုင်တယ်။


နောက်တစ်မျိုးက...


သူ့မှာတော့ Key နှစ်ခုရှိတယ်။ တစ်ခုက Encrypt လုပ်ဖို့ဖြစ်ပြီး၊ အဲ့ဒီ Key ကို Public Key လို့ခေါ်တယ်။ နောက် Key တစ်ခုက Decrypt လုပ်ဖို့ဖြစ်ပြီး၊ အဲ့ဒီ Key ကိုကြတော့ Private Key လို့ခေါ်တယ်။ Client (သို့) User တစ်ယောက်မှာ Private Key တစ်ခုစီရှိကြတယ်။ Public Key ကကြတော့ အချက်အလက်တွေကို မည်သူမဆို Encrypt လုပ်နိုင်အောင် လုပ်ထားတယ်။ သို့သော် Private Key ရှိတဲ့သူသာလျှင် အချက်အလက်ကို Decrypt (ပြန်ဖေါ်) လုပ်လို့ရမှာ ဖြစ်တယ်။ Private Key သည်လည်း သီးသန့် သတ်မှတ်ထားတဲ့ သူတွေသာလျှင် အသုံးပြုလို့ရတယ်။

ပေါ်ပြူလာ Algorithmsများ


Symmetric Key Encryption အမျိုးအစားဖြစ်ပြီး၊ ခေတ်နောက်ကျနေပြီဖြစ်တဲ့ Algorithm တစ်ခုဖြစ်တယ်။ Encrypt/Decrypt လုပ်တဲ့ Key အရွယ်အစားက 56 bits ထိပဲသုံးနိုင်တဲ့အတွက် Hack လုပ်ချင်တဲ့သူတွေအကြိုက် Algorithm တစ်ခုဖြစ်တယ်။  နောက်ပြီး Version အသစ် 3DES ဆိုတာလည်း ရှိတယ်။  သူက Key အရွယ်အစား (၃) မျိုးထိပြောင်းသုံးနိုင်တယ်။  ဒါပေမယ့် DES Algorithm ဟာ လုံခြုံရေးပိုင်းဆိုင်ရာ အားနည်းချက်၊ စွမ်းဆောင်ရည် နှေးကွေးမှုတွေကြောင့် လူသုံးနည်းတဲ့ စနစ်တစ်ခုဖြစ်ခဲ့တယ်။


AES ကို လုံခြုံရေးပိုင်းဆိုင်ရာနှင့် ပတ်သက်ပြီး Gold Standard လို့သတ်မှတ်ကြတယ်။ Symmetric Key Encryption ဖြစ်ပြီးတော့ Key အရွယ်အစားနှင့် ပတ်သတ်ပြီး  (128, 192 နှင့် 256 bits) ဆိုပြီး (၃) မျိုးရှိတယ်။ AES ကိုသုံးမယ်ဆိုရင် Key အရွယ်အစားကို 256 bits ထိသတ်မှတ်ပြီး သုံးဖို့ နည်းပညာရှင်တွေက အကြံပြုကြတယ်။ ဘာကြောင့်လည်းဆိုတော့ ပိုပြီးတော့ လုံခြုံအောင်လို့ဖြစ်တယ်။


PGP က လူသုံးများပြီး Public Key Encryption အမျိုးအစားဖြစ်တယ်။  PGP ကို ဘယ်နေရာတွေမှာ သုံးကြလည်းဆိုတော့ Digital Signing, Email, Files, Hard Disk Partition စတာတွေအတွက် အသုံးပြုကြတယ်။

Dec 19, 2016

စင်ကာပူက PDPA အကြောင်း လေ့လာမိသလောက်...

sagaing
အခုရက်ပိုင်း ဘော့စ်က အိမ်ခြံမြေ Agency တွေဆီသွားပြီး Personal Data Protection Act (PDPA) နှင့် Do Not Call (DNC) အကြောင်းကို Agent တွေ၊ Saleperson တွေအတွက် Seminar တွေသွားလုပ်တော့ သူလိုအပ်တာကူညီပေးဖို့ ကျွန်တော် အမြဲလိုက်သွားရတယ်။ အခု စင်ကာပူမှာ လက်ရှိ ကျွန်တော်လုပ်နေတဲ့ Company က အိမ်ခြံမြေ Agency တွေ၊ Agent တွေနှင့် အမြဲထိတွေ့နေရတာဖြစ်ပြီး ကျွန်တော့်တို့ Company က Agency တစ်ခုတော့ မဟုတ်ဘူး။ စင်္ကာပူမှာ ကိုယ်ရေးကိုယ်တာ အချက်အလက် ကာကွယ်ခြင်း ဥပဒေ ၂၀၁၂ ကို EU, UK, Canada, Hong Kong, Australia နှင့် New Zealand စတဲ့နိုင်ငံတွေရဲ့ ဥပဒေတွေ၊ OECD(Organization for Economic Cooperation and Development)ရဲ့ Protection of Privacy and Transborder Flow of Personal Data နှင့် APEC Privacy Framework တွေပေါ်မှာ မှီငြမ်းကိုးကား ရေးဆွဲထားတယ်။ 2/January/2013 နေ့ကစတင်ပြီး ဥပဒေ ကနဦးကာလအဖြစ် သတ်မှတ်ထားကာ Personal Data Protection Act ထဲက “ဖုန်းခေါ်ဆိုခြင်း မပြုရ” Do Not Call (DNC) ဆိုတာကိုတော့ 2/January/2014 မှာ ဥပဒေ ကနဦးကာလအဖြစ် သတ်မှတ်ထားတယ်။ 2/July/2014 မှာတော့ ဥပဒေက အသက်ဝင်မှာဖြစ်တယ်။ အဲ့ဒီ Do Not Call အပြင် Do Not SMS နှင့် Do Not Fax ဆိုပြီးထပ်ပါတယ်။ ဒီဥပဒေက Company Level (Agency) အနေနှင့်ကော Company တစ်ခုအောက်က Individual Level (Agent) အနေနှင့်ကော အကျုံးဝင်တာ တွေ့ရတယ်။ ဘယ်လို အကျုံးဝင်လည်းဆိုတော့ လူတစ်ယောက်ယောက်က သူ့ဖုန်းနံပါတ် တခုကို Infocomm Development Authority ရဲ့ Personal Data Protection Commission မှာ Do Not Call အနေနှင့် စာရင်းသွင်း (Register) ထားရင် အဲ့ဒီဖုန်းနံပါတ်ကို မိတ်ဆွေ၊ သူငယ်ချင်းတွေကလွဲလို့ မည်သည့် (ပြည်တွင်း/ပြည်ပနှင့်ဆက်စပ်) အဖွဲ့အစည်းမှ ခေါ်ဆိုခွင့်မရှိဘူး။ အဖွဲ့အစည်းဆိုတာ (ဥပမာ။ ။ Call Center၊ အိမ်၊ခြံမြေ Agent၊ Marketing လုပ်တဲ့ Company) လိုမျိုးတွေ ဖြစ်တယ်။ အကယ်လို့ Agency တစ်ခုက Agent တစ်ယောက်က Do Not Call Register လုပ်ထားတဲ့ ဖုန်းနံပါတ်တခုကို ခေါ်ခဲ့မယ်၊ ဖုန်းပိုင်ရှင်ကလည်း Complain တက်မယ်ဆိုရင် အဲ့ဒီ Agent ဟာဒဏ်ငွေ အနည်းဆုံး ပြစ်မှုတစ်ခုအတွက် (S$10,000) ထက်မနည်းတဲ့ ဒဏ်ကြေးပေးဆောင်ရမှာဖြစ်ပြီး၊ Agency Level အနေနှင့်ခေါ်ဆိုမှု ပြုလုပ်ခဲ့တယ်ဆိုရင် ဒဏ်ငွေ (S$1 သန်း) ထက်မနည်းတဲ့ ဒဏ်ကြေးကို ပေးဆောင်ရမှာဖြစ်ပါတယ်။ ဒီပြစ်မှုတွေဟာ Push Factor လို့ခေါ်တဲ့ မိမိတို့ Company ရဲ့ ၀န်ဆောင်မှုသော်လည်းကောင်း၊ ကုန်ပစ္စည်းသော်လည်းကောင်း၊ တစ်ခုခုကို ၀ယ်စေရန် (သို့) ဆွဲဆောင်ရန် အလို့ငှာ sms နှင့်သော်လည်းကောင်း၊ ဖုန်းခေါ်ပြီးတော့ သော်လည်းကောင်း၊ FAX ပို့ပြီးတော့ သော်လည်းကောင်း တနည်းနည်းနှင့် လုပ်ဆောင်တဲ့ ပြုမူလုပ်ဆောင်ချက်တွေကို တားမြစ်တာဖြစ်ပြီး၊ Pull Factor လို့ခေါ်တဲ့ မိမိကိုယ်တိုင်က သိချင်၊ ၀ယ်ချင်ရန် အလို့ငှာ ခေါ်ဆိုရန် ခွင့်ပြုထားတာမျိုးတွေအတွက် အကျုံးမဝင်ပါဘူး။ ပြီးတော့ တချို့အဖွဲ့အစည်းတွေ အတွက်လည်း အကျုံးမဝင်ပါဘူး။ ဘယ်လိုအဖွဲ့အစည်းတွေလည်းဆိုတော့ (ဥပမာ။ ။ Credit Collection Company) လိုမျိုးဖြစ်ပါတယ်။ ပြီးရင် Business 2 Business ခေါ်ဆိုမှုတွေအတွက်လည်း အကျုံးမဝင်ပါဘူး။ ဒါဆိုရင် အကျုံးဝင်တဲ့ Company တွေအတွက် ဒီဖုန်းနံပါတ်တွေကို ခေါ်ဆိုခွင့်ရှိတယ်၊ မရှိဘူးဆိုတာ ဘယ်လိုသိနိုင်လည်းဆိုတော့။ မိမိခေါ်ဆိုမယ့် ဖုန်းနံပါတ်တွေကို ခေါ်ဆိုခြင်းမပြုလုပ်ခင် PDPA Website ထဲမှာ DNC Register လုပ်ထားတဲ့ ဖုန်းနံပါတ်တွေကို Filter လုပ်ဖို့ Upload လုပ်ရပါမယ်။ Website မှာ Filter လုပ်ပြီးပါက ဘယ်ဟာကဖြင့် ခေါ်လို့ရတယ်၊ ခေါ်လို့မရဘူးဆိုတာ ပြန်ထွက်လာပါလိမ့်မယ်။ ခေါ်လို့ရတယ်ဆိုတဲ့ ဖုန်းနံပါတ်တွေသာလျှင် ခေါ်ဆိုခွင့်ရှိပါတယ်။ PDPA Website ထဲမှာ Filter လုပ်တာကို Company Level အနေနှင့်သာ လုပ်နိုင်ပါတယ်။ နောက်ပြီး Filter လုပ်မယ့် ဖုန်းနံပါတ်တစ်ခုအတွက် S$2.3ဆင့် ပေးရပါတယ်။ DNC Register လုပ်တာကိုတော့ ပိုက်ဆံပေးစရာမလိုပါဘူး။ ပြီးတော့ Filter လုပ်မယ့် Company အနေနှင့် ရက်(၃၀) လျှင်တခါ Filter လုပ်ရမှာဖြစ်ပါတယ်။ ဒါမှသာလျှင် မိမိခေါ်ဆိုမယ့် ဖုန်းနံပါတ်တွေ Update ဖြစ်မှာပါ။ ဒါနဲ့ ကျွန်တော်လည်း ကျွန်တော်တို့ဆီမှာ ကိုယ့်ရဲ့ Personal Data နှင့်ပတ်သတ်ပြီး ဘယ်လောက်အတိုင်းအတာအထိ မိမိတို့ကိုယ်တိုင် ကာကွယ်မှုရှိကြလည်း ဆိုတာ စဉ်းစားမိတယ်။ လက်တလော ကျွန်တော်ဖေ့ဘွတ်မှာ သတိထားမိသလောက် Personal Data တွေကို မိမိတို့ကိုယ်တိုင် ကာကွယ်မှု သိပ်မရှိတာကို သတိထားမိတယ်။ မိမိရဲ့ Personal Data တွေဖြစ်တဲ့ (ဥပမာ။ ။ဘဏ်ကဒ်၊ ပတ်စ်ပို့၊ မိုဘိုင်း ဖုန်းနံပါတ်၊ ယာဉ်မောင်းလိုင်စင်) စတာတွေကို ဖေ့ဘွတ်မှာ Post တခုအနေနဲ့ တင်လေ့ရှိကြတယ်။ တကယ်တော့ Personal Data တွေဖြစ်တဲ့အတွက် မတင်သင့်ဘူး။ ပြီးတော့ အခုနောက်ပိုင်း နည်းပညာတော်တော်များများမှာ တခုခုအသုံးပြုမယ်ဆိုပါစို့ (ဥပမာ။ ။ Facebook Register) လုပ်ချင်တယ်ဆိုရင် ကိုယ့်ရဲ့ Personal Data (မိုဘိုင်း ဖုန်းနံပါတ် ကအစ) တွေပေးရတယ်။ အခုနောက်ဆုံးထွက်တဲ့ iPhone ဆိုရင် မိမိရဲ့ လက်ဗွှေကိုပါ မှတ်ပေးတဲ့ လုပ်ဆောင်ချက်တွေ ပါလာတယ်။ Apple ကတော့ ဖုန်းအသုံးပြုသူတွေရဲ့ လက်ဗွှေကို သူတို့ရဲ့ Server မှာသိမ်းမထားဘူးလို့ ဆိုပါတယ်။ ပြီးတော့ နည်းပညာပိုင်းနှင့် သက်ဆိုင်တာတွေမှာ America ကပဲ အခရာဖြစ်တော့ World Wide က Personal Data တော်တော်များများဟာ America နှင့်ဆက်စပ်တဲ့ Server တွေမှာပဲ စုနေတာများတယ်။ America က NSA (National Security Agency) ကလည်း တခုခုဆို Google၊ Yahoo၊ Facebook စတဲ့ နည်းပညာ ဂုရုကြီးတွေရဲ့ Server တွေထဲက Personal Data တွေကိုကြည့်ဖို့ Secret Project တွေလည်းရှိတယ်။ အိုဘားမား ရွေးကောက်ပွဲ အနိုင်ရခဲ့တာ Metadata တွေကို ကောင်းကောင်း အသုံးချနိုင်မှုဟာလည်း တစိတ်တပိုင်းပါတယ်လို့လည်း ဖတ်လိုက်ရတယ်။ ကျွန်တော်တို့လို့ နည်းပညာပိုင်းဆိုင်ရာတွေကို သာမာန်အသုံးပြုသူ တစ်ယောက်အနေနှင့် ကိုယ့်ရဲ့ Personal Data တွေ ပေးလိုက်ရတာထက် ဒီလိုမျိုးနည်းပညာတွေ အသုံးပြုခွင့်ရတာကိုပဲ ကျေနပ်နေပါတော့တယ်။

မှတ်ချက်။  ။ ယခင်အလုပ်လုပ်ခဲ့တဲ့ Company မှ အတွေ့အကြုံ ဖြစ်ပါသည်။ ဒီပိုစ်ကို Oct 4, 2015 တုန်းကရေးထားပြီး facebook မှာလည်းတင်ထားဖူးတဲ့ အကြောင်းအရာကို မှတ်တမ်းတစ်ခု အနေနှင့် ဘလော့ခ်မှာ သိမ်းထားချင်တဲ့အတွက် ပြန်တင်ရခြင်း ဖြစ်ပါသည်။
ကိုစစ်ကိုင်း၏ မှတ်စုများ. Powered by Blogger.