Encryption (ဒေတာကို ဖတ်မရအောင် ပြောင်းခြင်း)

A2.4.4: Encryption and digital certificates
မြန်မာလို: A2.4.4: encryption (ဒေတာကို ဖတ်မရအောင် ပြောင်းခြင်း) နဲ့ digital certificate (public key ကို ပိုင်ရှင်နဲ့ ချိတ်ပေးတဲ့ အီလက်ထရွန်နစ် စာရွက်) များ


အဓိက အယူအဆများ

Encryption ဆိုတာ ဘာလဲ

  • Encryption: algorithm (အယ်လ်ဂိုရီသမ်၊ ပြဿနာကို အဆင့်ဆင့် ဖြေရှင်းတဲ့ နည်းလမ်း) တစ်ခုနဲ့ key (ဒေတာကို encrypt၊ decrypt လုပ်ဖို့ algorithm က သုံးတဲ့ တန်ဖိုး) တစ်ခုကို သုံးပြီး ဖတ်လို့ရတဲ့ ဒေတာ (plaintext) ကို ဖတ်လို့ မရတဲ့ ပုံစံ (ciphertext) အဖြစ် ပြောင်းတဲ့ လုပ်ငန်းစဉ်ပါ
  • Decryption (encrypt လုပ်ထားတာကို ပြန်ဖြေခြင်း): ပြောင်းပြန် လုပ်ငန်းစဉ်ပါ။ သင့်တော်တဲ့ key ကို သုံးပြီး ciphertext ကို plaintext အဖြစ် ပြန်ပြောင်းတာပါ
  • ရည်ရွယ်ချက်: ပို့နေတုန်း (in transit၊ network (ကွန်ရက်) ပေါ်မှာ) နဲ့ သိမ်းထားတုန်း (at rest၊ storage (ဒေတာ သိမ်းဆည်းရာ) ထဲမှာ) ဒေတာရဲ့ confidentiality (ခွင့်ပြုထားသူပဲ ဖတ်နိုင်အောင် လျှို့ဝှက်ထားခြင်း) ကို ကာကွယ်ဖို့ပါ
Plaintext  →  [Encryption Algorithm + Key]  →  Ciphertext
"Hello"    →  [AES + secret key]            →  "7g$kL9..."

Ciphertext →  [Decryption Algorithm + Key]  →  Plaintext
"7g$kL9..." → [AES + secret key]            →  "Hello"

ပုံထဲမှာ Plaintext (“Hello”) ကို Encryption Algorithm နဲ့ Key ကို သုံးပြီး Ciphertext (“7g$kL9…”) အဖြစ် ပြောင်းပါတယ်။ ဒီ ဥပမာမှာ algorithm က AES ဖြစ်ပြီး key က secret key (လျှို့ဝှက် key) ပါ။ Decryption Algorithm နဲ့ အဲဒီ key ကိုပဲ သုံးရင် Plaintext “Hello” ကို ပြန်ရပါတယ်။

Symmetric Encryption (key တစ်ခုတည်း သုံးတဲ့ encryption)

  • Encryption ရော decryption ရော နှစ်ခုလုံးအတွက် key တစ်ခုတည်း ကို သုံးပါတယ်
  • “Secret key” (လျှို့ဝှက် key) ဒါမှမဟုတ် “shared key” (မျှသုံးတဲ့ key) encryption လို့လည်း ခေါ်ပါတယ်
  • ဒေတာ ပမာဏ များများအတွက် မြန်ပြီး ထိရောက်ပါတယ်

အလုပ်လုပ်ပုံ:

sequenceDiagram
    participant S as Sender
    participant R as Receiver
    Note over S,R: Both hold the SAME secret key
    Note over S: Encrypts the plaintext with the key
    S->>R: Ciphertext
    Note over R: Decrypts it with the same key

ပုံထဲမှာ Sender (ပို့သူ) နဲ့ Receiver (လက်ခံသူ) နှစ်ယောက်လုံးက secret key တစ်ခုတည်း ကို ကိုင်ထားပါတယ်။ ပို့သူက plaintext ကို အဲဒီ key နဲ့ encrypt လုပ်ပြီး ciphertext ကို ပို့ပါတယ်၊ လက်ခံသူက key တူတူနဲ့ decrypt လုပ်ပါတယ်။

ဥပမာများ:

  • AES (Advanced Encryption Standard): 128-bit၊ 192-bit ဒါမှမဟုတ် 256-bit key တွေ သုံးပါတယ်၊ လက်ရှိ industry standard (လုပ်ငန်းတွေမှာ စံအဖြစ် သုံးတဲ့ နည်း) ပါ၊ file encryption၊ disk encryption နဲ့ VPN (public network ပေါ်က လုံခြုံတဲ့ ကိုယ်ပိုင် လမ်းကြောင်း) တွေမှာ သုံးပါတယ်
  • DES (Data Encryption Standard): 56-bit key သုံးပါတယ်၊ သမိုင်းဝင် နည်းဖြစ်ပြီး အခု မလုံခြုံတော့ပါဘူး (brute force (ဖြစ်နိုင်တာတွေကို တစ်ခုမကျန် စစ်တဲ့ နည်း) နဲ့ နာရီပိုင်းအတွင်း ဖောက်လို့ ရပါတယ်)၊ AES က အစားထိုးလိုက်ပါပြီ

Key distribution problem (key ကို လုံလုံခြုံခြုံ ဘယ်လို ပေးပို့မလဲ ဆိုတဲ့ ပြဿနာ): symmetric encryption ရဲ့ အကြီးဆုံး စိန်ခေါ်မှုက key ကို လုံလုံခြုံခြုံ မျှဝေဖို့ပါ။ File တစ်ခုကို secret key နဲ့ encrypt လုပ်ပြီး တစ်ယောက်ယောက်ဆီ ပို့ချင်ရင် key ကိုလည်း သူ့ဆီ လုံလုံခြုံခြုံ ရောက်အောင် တစ်နည်းနည်းနဲ့ ပို့ရပါမယ်။ Key ကို အဲဒီ မလုံခြုံတဲ့ channel (ဒေတာ ပို့တဲ့ လမ်းကြောင်း) ကနေပဲ ပို့ရင် တိုက်ခိုက်သူက ကြားဖြတ် ယူနိုင်ပါတယ်။ Asymmetric encryption ကို တီထွင်ခဲ့တာ ဒါကြောင့်ပါ။

အားသာချက်နဲ့ အားနည်းချက်များ:

အားသာချက်များ အားနည်းချက်များ
မြန်ပါတယ်: ဒေတာ ပမာဏ အများကြီးကို encrypt လုပ်ရာမှာ ထိရောက်ပါတယ် Key distribution problem: key ကို ဘယ်လို လုံလုံခြုံခြုံ မျှဝေမလဲ
Algorithm ရိုးရှင်းပါတယ်: တွက်ချက်ရတဲ့ ဝန် နည်းပါတယ် Key ပေါက်ကြားသွားရင် အဲဒီ key နဲ့ encrypt လုပ်ထားတဲ့ ဒေတာ အားလုံး ပေါ်သွားပါတယ်
သိမ်းထားတဲ့ ဒေတာ (at rest) ကို encrypt လုပ်ဖို့ သင့်တော်ပါတယ် ဆက်သွယ်သူ တစ်တွဲစီအတွက် ကိုယ်ပိုင် key တစ်ခုစီ လိုပါတယ် (user n ယောက်အတွက် key n(n-1)/2 ခု လိုပါတယ်)

Asymmetric Encryption (key နှစ်ခု သုံးတဲ့ encryption)

  • Key တစ်တွဲ ကို သုံးပါတယ်: public key (လူတိုင်းကို ပွင့်ပွင့်လင်းလင်း ပေးထားတဲ့ key) နဲ့ private key (လျှို့ဝှက် သိမ်းထားတဲ့ key)
  • “Public key” encryption လို့လည်း ခေါ်ပါတယ်
  • Symmetric ထက် နှေးပေမယ့် key distribution problem ကို ဖြေရှင်းပေးပါတယ်

အလုပ်လုပ်ပုံ: Confidentiality အတွက် encryption:

sequenceDiagram
    participant S as Sender
    participant R as Receiver
    Note over S: Encrypts the plaintext<br/>with the receiver's PUBLIC key
    S->>R: Ciphertext
    Note over R: Decrypts it with the receiver's PRIVATE key,<br/>which only the receiver holds

ပုံထဲမှာ Sender (ပို့သူ) က plaintext ကို လက်ခံသူရဲ့ PUBLIC key နဲ့ encrypt လုပ်ပြီး ciphertext ကို ပို့ပါတယ်။ Receiver (လက်ခံသူ) က လက်ခံသူ ကိုယ်တိုင်ပဲ ကိုင်ထားတဲ့ PRIVATE key နဲ့ decrypt လုပ်ပါတယ်။

အဓိက စည်းမျဉ်း: Public key နဲ့ encrypt လုပ်ထားတာကို တွဲဖက် private key နဲ့ သာ decrypt လုပ်လို့ ရပါတယ်။ Private key နဲ့ encrypt လုပ်ထားတာကို တွဲဖက် public key နဲ့ သာ decrypt လုပ်လို့ ရပါတယ်။ Private key ကို ဘယ်တော့မှ မမျှဝေရပါဘူး။

အလုပ်လုပ်ပုံ: Digital signature (ပို့သူကို သက်သေပြတဲ့ digital လက်မှတ်) (ဘယ်သူလဲ ဆိုတာ သက်သေပြခြင်း):

sequenceDiagram
    participant S as Sender
    participant R as Receiver
    Note over S: Hashes the message, then encrypts the hash<br/>with the sender's PRIVATE key: the digital signature
    S->>R: Message + digital signature
    Note over R: Decrypts the signature with the sender's PUBLIC key<br/>and hashes the received message
    Note over R: The two hashes match:<br/>the message is authentic and unaltered

ပုံထဲမှာ ပို့သူက message ကို hash (message ကနေ တွက်ထုတ်တဲ့ ပုံသေ အရှည်ရှိတဲ့ တန်ဖိုး) လုပ်ပြီး အဲဒီ hash ကို ပို့သူရဲ့ PRIVATE key နဲ့ encrypt လုပ်ပါတယ်: ဒါက digital signature ပါ။ ပို့သူက message နဲ့ digital signature ကို ပို့ပါတယ်။ လက်ခံသူက signature ကို ပို့သူရဲ့ PUBLIC key နဲ့ decrypt လုပ်ပြီး ရလာတဲ့ message ကိုလည်း hash လုပ်ပါတယ်။ Hash နှစ်ခု တူရင် message က အစစ်ဖြစ်ပြီး ပြောင်းလဲခံထားရတာ မရှိပါဘူး။

အားသာချက်နဲ့ အားနည်းချက်များ:

အားသာချက်များ အားနည်းချက်များ
Key distribution problem ကို ဖြေရှင်းပေးပါတယ်: public key ကို လွတ်လွတ်လပ်လပ် မျှဝေလို့ ရပါတယ် Symmetric encryption ထက် နှေးပါတယ်
Digital signature တွေကို ဖြစ်နိုင်စေပါတယ် (ဘယ်သူလဲ ဆိုတာ သက်သေပြခြင်း) ဒေတာ များများအတွက် တွက်ချက်ရတဲ့ ဝန် ကြီးပါတယ်
Secret key တွေကို ကြိုတင် လဲလှယ်ဖို့ မလိုပါဘူး Key pair (key တစ်တွဲ) တွေကို ဂရုတစိုက် စီမံရပါတယ်

လက်တွေ့မှာ နှစ်မျိုးလုံးကို တွဲသုံးပါတယ်: Asymmetric cryptography (ဒေတာကို လျှို့ဝှက်ပြီး ကာကွယ်တဲ့ ပညာ) ကို မျှသုံးမယ့် symmetric key တစ်ခုကို လုံလုံခြုံခြုံ စီစဉ်ဖို့ သုံးပါတယ် (key ကို encrypt လုပ်ပြီး ပို့ခြင်း၊ ဒါမှမဟုတ် နှစ်ဘက်စလုံးက ထည့်ပေးတဲ့ တန်ဖိုးတွေကနေ key ကို သဘောတူ တွက်ယူခြင်း)၊ ပြီးရင် ဒေတာ အစစ်ကို encrypt လုပ်ဖို့ symmetric key ကို သုံးပါတယ် (ပိုမြန်လို့ပါ)။ SSL/TLS handshake မှာ ဖြစ်တာ အတိအကျ ဒါပါပဲ။

The Internet: Encryption & Public Keys - Code.org
The Internet: Encryption & Public Keys - Code.org

Symmetric encryption နဲ့ asymmetric encryption က ဒေတာကို ဘယ်လို ကာကွယ်လဲ ရှင်းပြပြီး public/private key အလုပ်လုပ်ပုံကို ရှင်းရှင်းလင်းလင်း သရုပ်ပြပါတယ်။

YouTube မှာ ကြည့်ရန်

Digital Signatures (ပို့သူကို သက်သေပြတဲ့ digital လက်မှတ်များ)

  • Digital signature က အောက်ပါတို့ကို သက်သေပြပါတယ်:
    1. Authentication (တကယ် ဟုတ်မဟုတ် စစ်ခြင်း): message က ပို့တယ်လို့ ဆိုထားတဲ့ ပို့သူဆီက တကယ် လာတာပါ
    2. Integrity (မပြောင်းလဲ မပျက်စီးဘဲ ရှိနေခြင်း): message ကို ပို့နေတုန်း ပြင်ဆင်ထားတာ မရှိပါဘူး
    3. Non-repudiation (ပို့ခဲ့တာကို ငြင်းလို့ မရခြင်း): ပို့သူက message ကို ပို့ခဲ့တာကို ငြင်းလို့ မရပါဘူး

Digital signature ဘယ်လို အလုပ်လုပ်လဲ:

  1. ပို့သူက message ရဲ့ hash (ပုံသေ အရှည်ရှိတဲ့ လက်ဗွေ) ကို ဖန်တီးပါတယ်
  2. ပို့သူက hash ကို သူ့ရဲ့ private key နဲ့ encrypt လုပ်ပါတယ်: ဒါက digital signature ပါ
  3. ပို့သူက message နဲ့ digital signature နှစ်ခုလုံးကို ပို့ပါတယ်
  4. လက်ခံသူက hash ကို ရဖို့ ပို့သူရဲ့ public key နဲ့ signature ကို decrypt လုပ်ပါတယ်
  5. လက်ခံသူက ရလာတဲ့ message ကို သူ့ဘာသာ သီးခြား hash လုပ်ပါတယ်
  6. Hash နှစ်ခု တူရင်: message က အစစ်ဖြစ်ပြီး ပြောင်းလဲခံထားရတာ မရှိပါဘူး

Digital Certificates (public key ကို ပိုင်ရှင်နဲ့ ချိတ်ပေးတဲ့ အီလက်ထရွန်နစ် စာရွက်များ)

  • Digital certificate ဆိုတာ ဝဘ်ဆိုက်၊ server (တခြား ကွန်ပျူတာတွေကို ဝန်ဆောင်မှု ပေးတဲ့ ကွန်ပျူတာ) ဒါမှမဟုတ် လူတစ်ဦးချင်းရဲ့ identity (ဘယ်သူ ဘယ်ဟာ ဖြစ်ကြောင်း) ကို အတည်ပြုပေးတဲ့ အီလက်ထရွန်နစ် စာရွက်စာတမ်း တစ်ခုပါ
  • ယုံကြည်ရတဲ့ ပြင်ပ အဖွဲ့အစည်း (trusted third party) ဖြစ်တဲ့ Certificate Authority (CA) က ထုတ်ပေးပါတယ် (ဥပမာ Let’s Encrypt၊ DigiCert၊ Sectigo)
  • ပါဝင်တာတွေ: certificate ပိုင်ရှင်ရဲ့ နာမည်၊ သူ့ရဲ့ public key၊ CA ရဲ့ digital signature၊ သက်တမ်းကုန်မယ့် ရက်

ရည်ရွယ်ချက်:

  • HTTPS (encrypt လုပ်ထားတဲ့ HTTP) ဝဘ်ဆိုက် တစ်ခုကို သွားတဲ့အခါ server က သူ့ရဲ့ digital certificate ကို ပြပါတယ်
  • သင့် browser (ဝဘ်စာမျက်နှာ ဖွင့်တဲ့ software) က စစ်ပါတယ်: (1) certificate ကို ယုံကြည်ရတဲ့ CA က ထုတ်ပေးထားလား၊ (2) သက်တမ်း ကုန်သွားပြီလား၊ (3) domain (ဝဘ်ဆိုက်ရဲ့ လိပ်စာ နာမည်) ကိုက်ညီလား
  • မှန်ကန်ရင် browser က server ရဲ့ public key ကို ယုံကြည်ပြီး လုံခြုံတဲ့ connection (ချိတ်ဆက်မှု) တစ်ခုကို တည်ဆောက်ပါတယ်
  • ဒါကို digital “ID card” (မှတ်ပုံတင်ကတ်) တစ်ခုလို့ မြင်ကြည့်ပါ: passport ကို identity အတည်ပြုဖို့ အစိုးရက ထုတ်ပေးသလိုပဲ digital certificate ကို server ရဲ့ identity ကို အတည်ပြုဖို့ CA က ထုတ်ပေးပါတယ်

Digital certificate တွေ မရှိရင် တိုက်ခိုက်သူက public key အတု တစ်ခုကို ပြပြီး ဘယ်ဝဘ်ဆိုက်ကိုမဆို အယောင်ဆောင်နိုင်ပါတယ်။ Certificate တွေက သင် ဆက်သွယ်နေတာ အယောင်ဆောင်သူ မဟုတ်ဘဲ server အစစ်နဲ့ ဖြစ်ကြောင်း သေချာစေလို့ MitM (man-in-the-middle: ကြားက ခိုးယူပြီး ပြင်နိုင်တဲ့ တိုက်ခိုက်မှု) ကို ကာကွယ်ပေးပါတယ်။

SSL/TLS Handshake (လုံခြုံတဲ့ connection ကို စတင်တဲ့ အဆင့်များ၊ ရိုးရှင်းအောင် ပြထားတဲ့ ပုံစံ)

SSL (Secure Sockets Layer) နဲ့ သူ့ရဲ့ နောက်ဆက်ခံ TLS (Transport Layer Security၊ အင်တာနက် traffic ကို encrypt လုပ်တဲ့ protocol) က လုံခြုံတဲ့ HTTPS connection တွေကို တည်ဆောက်ပေးပါတယ်။ Handshake (ဒေတာ မပို့ခင် နှစ်ဘက် သဘောတူညီချက် ယူတဲ့ အဆင့်တွေ) ရဲ့ ရိုးရှင်းအောင် လုပ်ထားတဲ့ ပုံစံကို အောက်မှာ ပြထားပါတယ်:

sequenceDiagram
    participant B as Browser
    participant W as Web server
    B->>W: 1. Hello, with the ciphers it supports
    W->>B: 2. Server certificate, with the server's public key
    Note over B: 3. Verifies the certificate<br/>(CA signature, expiry)
    Note over B: 4. Generates a session key and encrypts it<br/>with the server's public key
    B->>W: 4. Encrypted session key
    Note over W: 5. Decrypts the session key<br/>with its private key
    B->>W: 6. Data encrypted with the shared session key (AES)
    W->>B: 6. Data encrypted with the shared session key (AES)

ပုံထဲက အဆင့်တွေရဲ့ အဓိပ္ပာယ်: (1) Browser က “Hello” ပို့ပြီး သူ သုံးနိုင်တဲ့ cipher (encrypt လုပ်တဲ့ algorithm) တွေကို ပြောပြတယ်၊ (2) Web server က server ရဲ့ public key ပါတဲ့ certificate ကို ပို့တယ်၊ (3) Browser က certificate ကို စစ်တယ် (CA ရဲ့ signature နဲ့ သက်တမ်း)၊ (4) Browser က session key (ဒီ connection အတွက်ပဲ သုံးမယ့် symmetric key) တစ်ခု ထုတ်ပြီး server ရဲ့ public key နဲ့ encrypt လုပ်ကာ ပို့တယ်၊ (5) Server က သူ့ private key နဲ့ session key ကို decrypt လုပ်တယ်၊ (6) နှစ်ဘက်လုံးက မျှသုံးတဲ့ session key (AES) နဲ့ encrypt လုပ်ထားတဲ့ ဒေတာကို ပို့ကြတယ်။

SSL/TLS handshake က server ရဲ့ identity ကို သက်သေပြဖို့နဲ့ symmetric session key တစ်ခုကို လုံလုံခြုံခြုံ စီစဉ်ဖို့ asymmetric cryptography (public/private key) ကို သုံးပါတယ်။ အဲဒီနောက် ဒေတာ အားလုံးကို symmetric key နဲ့ encrypt လုပ်ပါတယ်၊ ဘာလို့လဲဆိုတော့ အများကြီး ပိုမြန်လို့ပါ။ ဒီနည်းက asymmetric ရဲ့ လုံခြုံမှုနဲ့ symmetric ရဲ့ မြန်နှုန်းကို ပေါင်းစပ်ထားတာပါ။

ဒီပုံက ဘာကို ပြလဲ: ရိုးရှင်းအောင် လုပ်ထားတဲ့ key-transport (session key ကို encrypt လုပ်ပြီး ပို့ပေးတဲ့) model ပါ၊ ဒီစာမျက်နှာက လေ့ကျင့်ခန်းတွေမှာ သုံးတဲ့ ပုံစံပါ။ RSA (asymmetric encryption algorithm တစ်မျိုး) key exchange ကို သုံးခဲ့တဲ့ TLS version အဟောင်းတွေနဲ့ ကိုက်ညီပါတယ်။ ခေတ်သစ် TLS (version 1.3) မှာ အဆင့် 1 ကနေ 3 အထိ ဆက်ရှိနေလို့ certificate က server ရဲ့ identity ကို သက်သေပြတုန်းပါ၊ ဒါပေမယ့် session key ကို network ကနေ မပို့တော့ပါဘူး။ အဲဒီအစား browser နဲ့ server တစ်ခုစီက ယာယီ public တန်ဖိုး တစ်ခုစီ ပို့ကြပြီး အဲဒီ တန်ဖိုးတွေကနေ session key တစ်ခုတည်းကို နှစ်ဘက်လုံးက တွက်ယူကြပါတယ် (Diffie-Hellman လို key agreement (နှစ်ဘက်က တန်ဖိုးတွေကနေ key တစ်ခုတည်းကို သဘောတူ တွက်ယူခြင်း))။ Session key ကို server ရဲ့ ရေရှည်သုံး private key နဲ့ ဘယ်တုန်းကမှ encrypt မလုပ်ခဲ့လို့ နောက်မှ အဲဒီ key ကို ခိုးသွားတဲ့သူက မှတ်တမ်းတင်ထားတဲ့ အရင် session (ချိတ်ဆက်ပြီး ဆက်သွယ်တဲ့ အကြိမ်) တွေကို decrypt လုပ်လို့ မရပါဘူး။ ဒီ ဂုဏ်သတ္တိကို forward secrecy လို့ ခေါ်ပါတယ်။ HTTPS ဒါမှမဟုတ် TLS အကြောင်း ယေဘုယျ မေးတဲ့ မေးခွန်းမှာဆိုရင် ဖော်ပြချက် နှစ်မျိုးစလုံး မှန်ကန်တဲ့ အဖြေ ဖြစ်ပါတယ်။

SSL, TLS, HTTP, HTTPS Explained - PowerCert
SSL, TLS, HTTP, HTTPS Explained - PowerCert

SSL/TLS handshake ကို ပုံတွေနဲ့ အဆင့်ခွဲ ပြပြီး လုံခြုံတဲ့ web browsing အတွက် HTTPS ဘာကြောင့် မရှိမဖြစ် လိုအပ်လဲ ရှင်းပြပါတယ်။

YouTube မှာ ကြည့်ရန်

Key Management (key တွေကို လုံလုံခြုံခြုံ စီမံခြင်း)

Key management က ဘာကြောင့် အရေးကြီးလဲ:

  • Private key ခိုးခံရရင် တိုက်ခိုက်သူက key ပိုင်ရှင်ကို အယောင်ဆောင်နိုင်ပြီး တွဲဖက် public key နဲ့ တိုက်ရိုက် encrypt လုပ်ထားတဲ့ ဘယ်အရာကိုမဆို decrypt လုပ်နိုင်ပါတယ်။ အရင် traffic (network ပေါ်က ဒေတာ အသွားအလာ) ဘယ်လောက် ပေါ်သွားမလဲ ဆိုတာက key ကို ဘယ်လို သုံးခဲ့လဲ ပေါ်မှာ မူတည်ပါတယ်: အပေါ်က ရိုးရှင်းတဲ့ handshake မှာဆိုရင် မှတ်တမ်းတင်ထားတဲ့ session key တွေပါ ပါသွားမှာပါ၊ ခေတ်သစ် TLS ရဲ့ ယာယီ key တွေကတော့ အရင် session တွေကို လုံခြုံအောင် ထိန်းထားပေးပါတယ် (forward secrecy)
  • Symmetric key ပေါက်ကြားသွားရင် အဲဒီ key နဲ့ encrypt လုပ်ထားတဲ့ ဒေတာ အားလုံး ပေါ်သွားပါတယ်
  • Key တွေကို လုံလုံခြုံခြုံ သိမ်းထားသင့်ပါတယ် (hardware security module (key တွေကို လုံခြုံစွာ သိမ်းဖို့ သီးသန့် hardware စက်)၊ encrypt လုပ်ထားတဲ့ keystore (key တွေ သိမ်းတဲ့ နေရာ))
  • Key တွေကို ပုံမှန် rotate (အချိန်အပိုင်းအခြားအလိုက် key အသစ်နဲ့ အစားထိုး) လုပ်သင့်ပါတယ်
  • သက်တမ်းကုန်သွားတဲ့ ဒါမှမဟုတ် ပေါက်ကြားသွားတဲ့ certificate တွေကို ချက်ချင်း revoke (အသုံးမဝင်တော့ကြောင်း ပယ်ဖျက်) လုပ်ရပါမယ်

Key management မကောင်းရင် ဖြစ်နိုင်တဲ့ အန္တရာယ်များ:

  • Key ခိုးခံရခြင်း: data breach (ဒေတာ ပေါက်ကြားမှု)၊ identity theft (တခြားသူရဲ့ ကိုယ်ရေး အချက်အလက်ကို ခိုးပြီး အယောင်ဆောင်ခြင်း)
  • Key ပျောက်ခြင်း: encrypt လုပ်ထားတဲ့ ဒေတာကို အပြီးတိုင် ဆုံးရှုံးခြင်း
  • Certificate သက်တမ်းကုန်ခြင်း: browser သတိပေးချက်တွေ၊ user တွေရဲ့ ယုံကြည်မှု ဆုံးရှုံးခြင်း
  • အားနည်းတဲ့ key တွေ: brute-force attack (ဖြစ်နိုင်တဲ့ key တွေကို တစ်ခုမကျန် စမ်းကြည့်တဲ့ တိုက်ခိုက်မှု) တွေကို ခံရလွယ်ခြင်း

ထပ်ဆောင်း လေ့လာစရာ: Frequency Analysis (စာလုံး ပေါ်တဲ့ အကြိမ်ရေကို ခွဲခြမ်းစိတ်ဖြာခြင်း)

ဒီအပိုင်းက IB syllabus (နိုင်ငံတကာ ကျောင်းတွေမှာ သင်တဲ့ IB Computer Science သင်ရိုး) ထက် ကျော်လွန်တာကြောင့် အမှတ်ပေး မစစ်ပါဘူး။

Frequency analysis ဆိုတာ ရိုးရှင်းတဲ့ substitution cipher (စာလုံး တစ်လုံးစီကို တခြား စာလုံး တစ်လုံးနဲ့ အစားထိုးတဲ့ cipher) တွေကို ဖောက်ဖို့ နည်းစနစ် တစ်ခုပါ။ English မှာ အသုံးအများဆုံး စာလုံးက ‘e’ ပါ (စာသား အားလုံးရဲ့ ~13%)။ Ciphertext ထဲမှာ အများဆုံး ပေါ်တဲ့ စာလုံးက ‘x’ ဆိုရင် cipher က e ကို x နဲ့ အစားထိုးထားတာ (e → x) ဖြစ်နိုင်ပါတယ်။ ဒီနည်းနဲ့ သမိုင်းဝင် cipher တွေ (Caesar cipher (စာလုံးတွေကို ပုံသေ နေရာ အရေအတွက် ရွှေ့ပြီး လျှို့ဝှက်တဲ့ နည်း) လို) ကို ဖောက်နိုင်ပေမယ့် ကျပန်းလို ထင်ရတဲ့ output ကို ထုတ်ပေးတဲ့ AES လို ခေတ်သစ် encryption algorithm တွေအပေါ်မှာတော့ မထိရောက်ပါဘူး။

ထပ်ဆောင်း လေ့လာစရာ: Authentication Factors (အထောက်အထား အမျိုးအစားများ)

ဒီအပိုင်းက IB syllabus ထက် ကျော်လွန်တာကြောင့် အမှတ်ပေး မစစ်ပါဘူး။

Authentication factor တွေ (MFA (အထောက်အထား အမျိုးအစား အများနဲ့ စစ်ခြင်း) မှာ သုံးပါတယ်):

  • Something you know (သင် သိထားတဲ့ အရာ): password၊ PIN၊ security question (လုံခြုံရေး မေးခွန်း)
  • Something you have (သင့်မှာ ရှိတဲ့ အရာ): ဖုန်း (SMS code)၊ security token (code ထုတ်ပေးတဲ့ ကိရိယာ သေးသေး)၊ smart card (chip ပါတဲ့ ကတ်)
  • Something you are (သင့် ကိုယ်ခန္ဓာ လက္ခဏာ): လက်ဗွေ၊ မျက်နှာ မှတ်သားခြင်း၊ မျက်ဝန်း (iris) scan (biometrics: ခန္ဓာကိုယ် လက္ခဏာနဲ့ စစ်ခြင်း)

MFA က ဒီ အမျိုးအစားတွေထဲက နှစ်ခု ဒါမှမဟုတ် ပိုများများကို ပေါင်းသုံးပါတယ် (နှစ်ခုတိတိ သုံးရင် 2FA လို့ ခေါ်ပါတယ်)။ Password နှစ်ခု သုံးတာက MFA မဟုတ်ပါဘူး: နှစ်ခုလုံးက “something you know” ဖြစ်နေလို့ပါ။


အဆင့်ဆင့် ရှင်းပြထားတဲ့ ဥပမာများ

ဥပမာ 1: Symmetric နဲ့ Asymmetric ဖြစ်ရပ်များ

# ဖြစ်ရပ် Encryption အမျိုးအစား ရှင်းလင်းချက်
1 ကိုယ့် hard drive ပေါ်က file တွေကို encrypt လုပ်ခြင်း Symmetric Key ကို ကိုယ်တစ်ယောက်တည်းပဲ လိုတာပါ၊ distribution problem မရှိပါဘူး၊ မြန်နှုန်းက အရေးကြီးပါတယ်
2 လုပ်ဖော်ကိုင်ဖက် တစ်ယောက်ဆီ လျှို့ဝှက် email ပို့ခြင်း Asymmetric လက်ခံသူရဲ့ public key နဲ့ encrypt လုပ်ပါ၊ secret တစ်ခုကို မျှဝေဖို့ မလိုပါဘူး
3 HTTPS connection တစ်ခု တည်ဆောက်ခြင်း နှစ်မျိုးလုံး Asymmetric handshake က symmetric session key တစ်ခုကို လဲလှယ်ပေးပါတယ်
4 Software update တစ်ခု အစစ်ဖြစ်ကြောင်း သက်သေပြဖို့ sign လုပ်ခြင်း Asymmetric Developer က private key နဲ့ sign လုပ်ပြီး user တွေက public key နဲ့ စစ်ပါတယ်
5 Traffic အားလုံးကို encrypt လုပ်တဲ့ VPN tunnel (လမ်းကြောင်း) Symmetric (key လဲလှယ်ပြီးနောက်) အစပိုင်း key လဲလှယ်ဖို့ asymmetric ကို သုံးပြီး မြန်နှုန်းအတွက် symmetric ကို သုံးပါတယ်

ဥပမာ 2: SSL/TLS Handshake ကို အဆင့်ဆင့် လိုက်ကြည့်ခြင်း

အပေါ်က ပုံထဲက ရိုးရှင်းတဲ့ key-transport model ကို သုံးပြီး ကျောင်းသား တစ်ယောက်က https://school.edu ကို သွားတဲ့အခါ ဘာဖြစ်လဲ trace (တစ်ဆင့်ချင်း လိုက်ကြည့်ပြီး မှတ်) လုပ်ကြည့်ပါ:

အဆင့် လုပ်ဆောင်ချက် သုံးတဲ့ Encryption Key
1 Browser က school.edu ဆီ “Hello” ပို့တယ် မသုံးပါ -
2 Server က သူ့ digital certificate (public key ပါ) ကို ပို့တယ် မသုံးပါ Server ရဲ့ public key က certificate ထဲမှာ ပါပါတယ်
3 Browser က certificate ပေါ်က CA ရဲ့ signature ကို စစ်တယ် မသုံးပါ CA ရဲ့ public key (browser ထဲမှာ ကြိုတင် ထည့်ထားပြီးသား)
4 Browser က ကျပန်း session key တစ်ခု ထုတ်တယ် - Symmetric key အသစ်
5 Browser က session key ကို encrypt လုပ်ပြီး ပို့တယ် Asymmetric Server ရဲ့ public key က session key ကို encrypt လုပ်တယ်
6 Server က session key ကို decrypt လုပ်တယ် Asymmetric Server ရဲ့ private key
7 နောက်ပိုင်း traffic အားလုံး Symmetric မျှသုံးတဲ့ session key (AES)

Quick Check (အမြန် စစ်ဆေးမေးခွန်း)

Q1. Symmetric encryption မှာ key ဘယ်နှစ်ခု သုံးသလဲ။

Q2. Symmetric encryption နဲ့ ယှဉ်ရင် asymmetric encryption ရဲ့ အဓိက အားသာချက်က ဘာလဲ။

Q3. Digital certificate က ဘာကို အတည်ပြုပေးသလဲ။

Q4. ဒီစာမျက်နှာက ရိုးရှင်းတဲ့ SSL/TLS handshake မှာ browser က session key တစ်ခုကို ထုတ်ပြီး server ရဲ့ _____ key နဲ့ encrypt လုပ်ပါတယ်။

Q5. Key management က ဘာကြောင့် အရေးကြီးသလဲ။


Trace the Handshake (handshake ကို တစ်ဆင့်ချင်း လိုက်ကြည့်ခြင်း)

SSL/TLS handshake လုပ်ငန်းစဉ်ကို trace လုပ်ပါ။ အဆင့် တစ်ခုစီအတွက် ဘာ ပို့လဲ ဒါမှမဟုတ် ဘာဖြစ်လဲ ဖြည့်ပါ။ အဖြေတွေကို English လို ရိုက်ထည့်ရပါမယ်။

Trace: SSL/TLS Handshake

Browser တစ်ခုက web server တစ်ခုကို HTTPS နဲ့ ချိတ်ဆက်ပါတယ်။ ဒီစာမျက်နှာမှာ ပြထားတဲ့ ရိုးရှင်းတဲ့ key-transport handshake ရဲ့ အဆင့် တစ်ခုစီက အဓိက လုပ်ဆောင်ချက်ကို English လို ဖြည့်ပါ။

အဆင့်လုပ်ဆောင်သူလုပ်ဆောင်ချက်ဘာဖြစ်လဲ
1 Browser Connection ကို စတင်တယ်
2 Server ပြန်တုံ့ပြန်တယ်
3 Browser စစ်ဆေး အတည်ပြုတယ်
4 Browser Key လဲလှယ်ခြင်း
5 Server Decryption

Spot the Error (အမှား ရှာခြင်း)

ကျောင်းသား တစ်ယောက်က encryption အကြောင်း ပြန်နွှေးဖို့ မှတ်စုတွေ ရေးထားပါတယ်။ Line တစ်ကြောင်းမှာ အမှား ပါပါတယ်။ အမှားပါတဲ့ line ကို ရွေးပါ၊ ပြီးရင် မှန်ကန်တဲ့ ပြင်နည်းကို ရွေးပါ။

1Symmetric: uses two different keys (a public key and a private key) 2Asymmetric: uses a key pair where the public key encrypts and the private key decrypts 3Digital certificates: issued by a Certificate Authority to verify identity 4SSL/TLS: uses asymmetric encryption for the handshake, then a symmetric session key for the data

Line တွေရဲ့ အဓိပ္ပာယ်: (1) Symmetric: မတူတဲ့ key နှစ်ခု၊ public key နဲ့ private key ကို သုံးတယ်၊ (2) Asymmetric: public key က encrypt လုပ်ပြီး private key က decrypt လုပ်တဲ့ key pair ကို သုံးတယ်၊ (3) Digital certificate: identity ကို အတည်ပြုဖို့ Certificate Authority က ထုတ်ပေးတယ်၊ (4) SSL/TLS: handshake အတွက် asymmetric encryption ကို သုံးပြီး ဒေတာအတွက် symmetric session key ကို သုံးတယ်။

Line 1 အတွက် မှန်ကန်တဲ့ ပြင်နည်းကို ရွေးပါ:


Fill in the Blanks (ကွက်လပ် ဖြည့်ခြင်း)

ကွက်လပ် တစ်ခုစီအတွက် မှန်ကန်တဲ့ term ကို ဖြည့်ပြီး encryption အနှစ်ချုပ်ကို ပြည့်စုံအောင် လုပ်ပါ။

ကွက်လပ်ပါတဲ့ စာကြောင်းတွေက English နဲ့ ဖြစ်ပြီး ကွက်လပ်တွေကိုလည်း English လို ရိုက်ထည့်ရပါမယ်။ ENCRYPTION က ခေါင်းစဉ်ပါ။ စာကြောင်းတွေရဲ့ အဓိပ္ပာယ်က အောက်ပါအတိုင်းပါ:

  • …… encryption က encryption နဲ့ decryption နှစ်ခုလုံးအတွက် key တစ်ခုတည်းကို သုံးပါတယ်။
  • …… encryption က public key နဲ့ private key တစ်တွဲကို သုံးပါတယ်။
  • …… ကို server ရဲ့ identity ကို အတည်ပြုဖို့ Certificate Authority က ထုတ်ပေးပါတယ်။
  • ဒီစာမျက်နှာက ရိုးရှင်းတဲ့ SSL/TLS handshake မှာ browser က session key တစ်ခုကို server ရဲ့ …… key နဲ့ encrypt လုပ်ပါတယ်။
  • …… က symmetric encryption အတွက် လက်ရှိ industry standard ဖြစ်ပြီး 128-bit၊ 192-bit ဒါမှမဟုတ် 256-bit key တွေကို သုံးပါတယ်။

Encryption အနှစ်ချုပ်ကို ပြည့်စုံအောင် ကွက်လပ်တွေ ဖြည့်ပါ:

ENCRYPTION
==========
 encryption uses the same key for both encryption and decryption.

 encryption uses a public key and a private key pair.

A  is issued by a Certificate Authority to verify a server's identity.

In the simplified SSL/TLS handshake on this page, the browser encrypts a session key using the server's  key.

 is the current industry standard for symmetric encryption, using 128-, 192- or 256-bit keys.

Predict the Output (output ကို ကြိုခန့်မှန်းခြင်း)

Alice က Bob ရဲ့ public key ကို သုံးပြီး message တစ်ခုကို encrypt လုပ်ပါတယ်။ ခုနက သူကိုယ်တိုင် encrypt လုပ်လိုက်တဲ့ message ကို Alice က decrypt လုပ်နိုင်သလား။ (Yes ဒါမှမဟုတ် No လို့ English လို ရိုက်ထည့်ပါ)

ကုမ္ပဏီ တစ်ခုက ဝန်ထမ်း တစ်တွဲစီအတွက် မတူညီတဲ့ key တစ်ခုစီနဲ့ symmetric encryption ကို သုံးပါတယ်။ ဝန်ထမ်း 10 ယောက် ရှိရင် မတူညီတဲ့ key ဘယ်နှစ်ခု လိုမလဲ။ (n(n-1)/2 formula ကို သုံးပါ။ ဂဏန်း တစ်ခု ရိုက်ထည့်ပါ)


Practice Exercises (လေ့ကျင့်ခန်းများ)

Explain နဲ့ Describe လို English စကားလုံးတွေက IB command term (မေးခွန်းမှာ ဘာလုပ်ရမလဲ ပြတဲ့ ညွှန်ကြားချက် စကားလုံး) တွေပါ။

Core (အခြေခံ အဆင့်)

  1. Encryption အခြေခံ: Symmetric encryption နဲ့ asymmetric encryption ကြားက ကွာခြားချက်ကို Explain (ရှင်းပြပါ) လုပ်ပါ။ တစ်ခုစီအတွက် အားသာချက် တစ်ခုနဲ့ အားနည်းချက် တစ်ခု ပေးပါ။

  2. Digital Certificate များ: Digital certificate ဆိုတာ ဘာလဲ၊ ဘယ်သူ ထုတ်ပေးလဲ၊ လုံခြုံတဲ့ web browsing အတွက် ဘာကြောင့် အရေးကြီးလဲ Describe (ဖော်ပြရှင်းပြပါ) လုပ်ပါ။ Digital certificate တွေ မရှိခဲ့ရင် ဘာဖြစ်မလဲ။

  3. အဓိက အယူအဆများ: အောက်ပါ term တွေကို Define (အဓိပ္ပာယ်ကို တိတိကျကျ ဖော်ပြပါ) လုပ်ပါ: plaintext၊ ciphertext၊ encryption key၊ decryption၊ Certificate Authority။

Extension (တိုးချဲ့ အဆင့်)

  1. SSL/TLS ကို အဆင့်ဆင့်: User တစ်ယောက်က HTTPS ဝဘ်ဆိုက် တစ်ခုကို သွားတဲ့အခါ SSL/TLS handshake ရဲ့ အဆင့်တွေကို Describe လုပ်ပါ။ ဒီ လုပ်ငန်းစဉ်မှာ (အမျိုးအစား တစ်ခုတည်း မဟုတ်ဘဲ) symmetric နဲ့ asymmetric encryption နှစ်မျိုးလုံးကို ဘာကြောင့် သုံးလဲ Explain လုပ်ပါ။

  2. Key Management: Key management က လုံခြုံရေးအတွက် ဘာကြောင့် အလွန် အရေးကြီးလဲ Explain လုပ်ပါ။ Key management မကောင်းရင် ဖြစ်နိုင်တဲ့ အန္တရာယ် သုံးခုကို Describe လုပ်ပြီး တစ်ခုစီအတွက် ကြိုတင် ကာကွယ်ရေး နည်းလမ်း တစ်ခုစီကို suggest (ဖြစ်နိုင်တဲ့ ဖြေရှင်းချက် ဒါမှမဟုတ် အဖြေ တစ်ခုကို အဆိုပြုပါ) လုပ်ပါ။

Challenge (စိန်ခေါ်မှု အဆင့်)

  1. Encryption စနစ် ဒီဇိုင်း: ဆေးရုံ တစ်ခုက အောက်ပါတို့အတွက် encryption ကို အကောင်အထည်ဖော်ဖို့ လိုပါတယ်: (a) server တွေပေါ်မှာ သိမ်းထားတဲ့ လူနာ မှတ်တမ်းတွေ၊ (b) လူနာ ကုသမှုအကြောင်း ဆွေးနွေးတဲ့ ဆရာဝန်တွေကြား email တွေ၊ (c) web browser ကနေ ဝင်သုံးတဲ့ လူနာ portal (လူနာတွေ ဝင်သုံးတဲ့ ဝဘ်ဆိုက်)။ တစ်ခုစီအတွက် encryption အမျိုးအစားကို အကြံပြုပြီး သင့်ရွေးချယ်မှုကို explain လုပ်ပါ။ Key management၊ performance (စွမ်းဆောင်ရည်) နဲ့ ဒေတာရဲ့ အရေးကြီးမှုကို ထည့်စဉ်းစားပါ။ သင့်ဒီဇိုင်းရဲ့ trade-off (တစ်ခု ရဖို့ တစ်ခု အလျှော့ပေးရတာ) တွေကို Evaluate (အားသာချက်နဲ့ အားနည်းချက်တွေကို ချိန်ဆပြီး အကဲဖြတ်ပါ) လုပ်ပါ။

ဆက်စပ် ခေါင်းစဉ်များ

  • အရင် လေ့လာထားရမယ့် ခေါင်းစဉ်: Network Security (Network လုံခြုံရေး): encryption က ဒေတာ ကြားဖြတ် ယူခြင်းနဲ့ MitM တိုက်ခိုက်မှုတွေကို ကာကွယ်တဲ့ အဓိက countermeasure (တိုက်ခိုက်မှုကို ကာကွယ်တဲ့ နည်းလမ်း) တစ်ခုပါ
  • အရင် လေ့လာထားရမယ့် ခေါင်းစဉ်: Protocols and Layers (Protocol များနဲ့ အလွှာများ): HTTPS က SSL/TLS encryption ကို သုံးပါတယ်၊ protocol တွေကို နားလည်ထားရင် encryption ဘာကြောင့် လိုလဲ ဆိုတာကို နောက်ခံ အခြေအနေနဲ့ ချိတ်ပြီး နားလည်နိုင်ပါတယ်
  • ဆက်စပ် ခေါင်းစဉ်: OS Fundamentals (operating system အခြေခံများ): OS (operating system: ကွန်ပျူတာကို စီမံတဲ့ အဓိက software) ရဲ့ လုံခြုံရေး လုပ်ဆောင်ချက်တွေမှာ သိမ်းထားတဲ့ ဒေတာအတွက် encryption နဲ့ authentication ပါဝင်ပါတယ်
  • ဆက်စပ် ခေါင်းစဉ်: Number Systems (ဂဏန်းစနစ်များ): encryption key တွေနဲ့ algorithm တွေ bit အဆင့်မှာ ဘယ်လို အလုပ်လုပ်လဲ ဆိုတာရဲ့ အခြေခံက binary (0 နဲ့ 1 ကိုပဲ သုံးတဲ့ ဂဏန်းစနစ်) နဲ့ ဖော်ပြပုံပါ

© EduCS.me. ကွန်ပျူတာသိပ္ပံ ပညာရေးအတွက် အရင်းအမြစ်တွေ စုထားတဲ့ နေရာပါ။ EduCS is an independent educational resource. It is not affiliated with, or endorsed by, the International Baccalaureate Organization. (EduCS ဟာ သီးခြား ပညာရေး အရင်းအမြစ်တစ်ခုပါ။ International Baccalaureate Organization နဲ့ ဆက်စပ်မှု မရှိသလို သူတို့ရဲ့ ထောက်ခံချက်လည်း မရှိပါဘူး။) ဆက်သွယ်ရန်