Tuesday, January 14, 2014

Encrypting and Decrypting Data with GPG ( GNU Privacy Guard )


        GPG တစ်နည်းအားဖြင့် ပြောလျှင် PGP (Pretty Good Privacy) ဆိုသော proprietary နည်းပညာ ကို ပြန်လည် re-implementation လုပ်ထားသော Open Source Encryption နည်းပညာဖြစ်ပါတယ်။ GPG ကိုပြောရရင် ssh နှင့် ဆင်တူပါတယ် သူဆီမှာ ssh လိုမျိုးပဲ Private key , Public key လို ပုံစံမျိုးအသုံးပြုပါတယ်။ GPG ကို email , data files များကို encryption ဖြင့် ပို့ချင်လျှင် (သို့) security ဖြစ်ဖို့ရာ encryption သုံးချင်လျှင် အများဆုံးအသုံးပြုပါတယ်။ ဒါကြောင့် အခုလို GPG နှင့် encryption လုပ်တော့မည်ဆိုလျှင် ကျွန်တော်တို့ဆီမှာ Public key , Private Key နှင့်အသုံးပြုရမှာဖြစ်ပါတယ်။ ဥပမာ အားဖြင့် ကျွန်တော်က တစ်ခြားတစ်ယောက်ကို Important File တစ်ခု ပို့ချင်တယ် ထိုဖိုင်ကို GPG နဲ့Encryptionလုပ်မယ် ဒါဆိုရင် ကျွန်တော့်ဆီမှာ GPG နဲ့ encrypt လုပ်ပြီးတာနဲ့ သက်ဆိုင်တဲ့ GPG Public , Private key ထွက်လာမှာဖြစ်ပါတယ် ဒီနေရာမှာ ကိုယ့်ရဲ့  public key ကို ကိုယ့်ပို့ချင်တဲ့ သူကိုပေးထားရမှာပါ ထိုမှသာ အဲ့ဒီလူက ရရှိသော Important File ကို public key နဲ့ Decrypt လုပ်နိုင်မှာဖြစ်ပါတယ်။ အခုဒါကတော့ အကျဉ်းချုံးရှင်းပြခြင်းဖြစ်ပါတယ်။


Tutorial for GPG Encryption and Decryption 

       အခုဒီ tutorial မှာ Linux OS ကိုပဲ အသုံးပြုထားပြီး စမ်းပြသွားမှာပါ။ GPG က Linux တွင်တစ်ခါထဲပါလာပြီးသားဖြစ်ပါတယ်။

Terminal ထဲတွင် #gpg --gen-key ဆိုပြီး ရိုက်လျှင် အောက်တွင် procress များ ကျလာမည်ဖြစ်ပြီး ထိုprocressများကို step by step လုပ်ရမည်ဖြစ်သည်။ပုံတွင်ပြထားပါသည်။ 
  •  ပုံထဲတွင် " #gpg --gen-key " ရိုက်လိုက်လျှင် ပုံတွင်ပြထားသည့်အတိုင်း စပြီးလုပ်ဆောင်မည်ဖြစ်ပါသည်။ 
  •  No.(1) မေးခွန်းက encryption key ကို ဘယ်လိုပုံစံမျိုးနှင့် လုပ်ချင်ပါလဲမေးတာဖြစ်ပါတယ်။ Default ဖြစ်သော No.(1) RSA Key နှင့် လုပ်ပါမည်။
  • No.(2) မေးခွန်းက " What keysize do you want? (2048) ဆိုသည်မှာ encryption key ကို ဘယ်လောက် bits နှင့် လုပ်မလဲဆိုတာကိုမေးခြင်းဖြစ်ပါတယ်။ 2048 bits က default ဖြစ်ပါသည်။
  • No.(3) မေးခွန်းက ထို Key သည် Valid ဘယ်လောက်ထားမလဲဆိုသည်ကိုမေးခြင်းဖြစ်ပါသည်။ days, weeks, months and years ထားနိုင်ပြီး အခု ကျွန်တော်က 1year valid ထားထားပါသည်။
  • No.(4) မေးခွန်းက Keyကို createလုပ်သောသူ၏ personal information ထည့်ခိုင်းခြင်းဖြစ်ပါတယ် ဒီနေရာတွင် မှန်ကန်စွာ ထည့်မှသာ ယခုလုပ်ဆောင်နေသော key သည် မိမိ၏ အမှန်တစ်ကယ် key ဖြစ်ကြောင်း တစ်ခြားသူ (ယခု key ဖြစ် files များကို ဖွင့်မည့်သူ) က ယူဆနိုင်မှဖြစ်ပါသည်။
  • နောက် comment ကို မရေးလည်း ရပြီး enter ခေါက်လိုက်ပါက ထိုkeyအတွက် passphrase key လာတောင်းမည်ဖြစ်ပါသည်။
  • ထို့နောက် Key Create လုပ်ခြင်းကို အဆုံးသတ်ဖို့အတွက် GPG encryption ရဲ့ ပုံစံအရ random bytes များ ရအောင် ယခုလုပ်ဆောင်နေသော စက်တွင်ရှိသော applications တစ်ချို့ကိုဖွင့်လိုက်ပြန်ပိတ်လိုက်လုပ်ဆောင်ရမည်။
  • ပြီးသွားပါက မိမိ create လုပ်လိုက်သော key ကို create လုပ်တုန်းက ပေးထားသော personal information ဖြင့် တွေ့ရမည်ဖြစ်သည်။
  • ထို့နောက် မိမိ key ကို ပြန်ကြည့်ချင်ပါက Terminal တွင် " #gpg --list-keys " ဆိုပြီး ရိုက်လျှင်ကြည့်နိုင်ပါသည်။ 
  • ထို့နောက် ရလာသော keyသည် public key ဖြစ်ပြီး ထို public key ကို export ထုတ်ရမည်ဖြစ်ပါသည်။ Terminal တွင် " #gpg --export > gpg.public (name optional) ဟုရိုက်ရပါမည်။
  •  အခု tutorial တွင် file တစ်ခုကို gpg key နှင့် encrypt လုပ်ကာ ထို key နှင့် ပြန် decrypt လုပ်မည်ဖြစ်ပါသည်။ ပုံမှန် အရ ကတော့ export ထုတ်လိုက်သော gpg public key file ကို တစ်ခြားသူကိုပေးရျ် ထိုစက်မှနေရျ် public key ကို အသုံးပြုကာ decrypt ဖြေရမည်။

  •  File name ကို important.txt ဟုပေးထားပြီး အထဲ တွင် " This is important note for meeting " ဟုရေးထားပါသည်။ ထို့နောက် important.txt file ကို gpg public key နှင့် encrypt လုပ်ပါမည်။
  •  Encrypt လုပ်သော command မှာ " #gpg --out important.encrypt (ပေးချင်သောfilename အသစ်) --recipient 'kyawkyaw' (နာမည်သည် create လုပ်တုန်းက ပေးထားသောနာမည်) --encrypt important.txt ( encrypt လုပ်မည့် file )
  • linux command ဖြစ်သော list နှင့် ကြည့်ပါက encrypt မလုပ်ထားသော important.txt file နှင့် ယခု encrypt လုပ်လိုက်သော important.encrypt file နှစ်မျိုးရှိမည်ဖြစ်သည်။ ရိုးရိုး file ကို delete လုပ်ပြီး encrypt file ကို " cat " command ဖြင့် ကြည့်လျှင် encryption လုပ်ထားသည်ကိုတွေ့ပါမည်။
  • ထို့ကြောင့် encrypt လုပ်ထားသော key ဖြင့် ပြန် decrypt လုပ်မည်ဖြစ်သည်။ Decrypt command မှာ " #gpg --out important.decrypt(အသစ်ပြန်ဆောက်မည့်filename) --decrypt important.encrypt(encrypt လုပ်ထားသော file) enter ခေါက်လိုက်ပါက ယခင် key file ဆောက်တုန်း က ပေးထားသော passphrase key ကို ပြန်ထည့်ပေးရပါမည်။

  • ထို့နောက် file ကို ပြန်ကြည့်လျှင် important.encrypt and important.decrypt ပေါ်လာမည်ဖြစ်သည်။ "cat command" ဖြင့် important.decrypt file ကို ကြည့်ပါက နဂိုရေးထားသောစာများအတိုင်း ပြန်ကြည့်လို့ရမည်ဖြစ်ပါတယ်။


  •  
  • အခု Tutorial ကတော့ simple gpg encryption ပုံစံဖြင့် ပြသွားခြင်းသာဖြစ်ပါတယ်။ တစ်ခြားပုံစံတွေ ဆိုရင် ဥပမာ public key file ကို ကျွန်တော်တို့ Keyserver website တွေဆိုတာရှိပါတယ် ထိုနေရာတွေကိုလဲ ကျွန်တော်တို့ public key file တွေတင်ထားနိုင်ပါတယ်။ command က တော့ " gpg --keyserver pgp.mit.edu --send-keys 'kyawkyaw' " ဆိုပြီးတော့ပါ။ 
  • နောက်တစ်ခုက Revoking a key လို့ဆိုပါတယ် တစ်နည်းအားဖြင့် ထိုkeyfile ကို မသုံးတော့ဘူးဆိုတဲ့သဘောပါ။ ဆိုပါတော့ အခု encryption လုပ်နေတဲ့ စက် က လုံခြုံမှု မရှိတော့ဘူး စိတ်မချရတော့ဘူး တစ်ခြားတစ်ယောက် ဆီ ပါသွားတယ်ဆိုရင် private key သည်ထိုထဲမှာ ရှိနေတာကြောင့် Revoke ပြန်လုပ်ရမည်ဖြစ်ပါသည်။ " #gpg --gen-revoke 'kyawkyaw' " 
  • နောက်တစ်ခု အနေနှင့် ကျွန်တော်တို့ ရဲ့ public key file တွေကို သူများကိုပေးလိုက်တဲ့အခါမှာ သူတို့တွေသည် ဒီအတိုင်း ချက်ချင်းသုံးလို့မရပါ အရင်ဆုံး keyring ဟုခေါ်သော file ထဲသို့ ထို public key ကို import ထည့်ရပါမယ်..ထိုနည်းတူစွာ keyကိုပိုင်ဆိုင်သော မူလပိုင်ရှင်ဘက်က ထိုkey ကို revoke လုပ်ရင်လဲ ထို public key revoke လုပ်သည်ကို keyring ထဲတွင် ပြန်ပြီး import လုပ်ရမည်ဖြစ်ပါသည်။ Importing Keys = #gpg --import filename , Revoking a Key = #gpg --gen-revoke 'kyawkyaw'့

















Share:

0 comments:

Post a Comment

Note: Only a member of this blog may post a comment.