Thuta Learning
Digital Privacy & Modern Security
BasicSecurityintermediate

Password vs Passkey

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • Password vs Passkey concept ကို နားလည်ရှင်းပြနိုင်ရန်
  • Diagram/checklist ကို ဖတ်ပြီး threat/control/decision ဘယ်လို ဆက်စပ်နေသလဲ ခြေရာခံနိုင်ရန်
  • ကိုယ့် digital life (သို့) developer workflow မှာ ဘယ်လို အသုံးချသင့်သလဲ ရှင်းပြနိုင်ရန်

နားလည်ထားရမယ့် အချက်

Password ဆိုတာ shared secret တစ်ခုပါ - ရိုက်ထည့်ရတယ်၊ transmit ဖြစ်တယ်၊ server က သိမ်းထားတဲ့ value နဲ့ ယှဉ်ကြည့်တယ်။ Passkey ကတော့ private/public credential pair - ဘာမှ ရိုက်ထည့်စရာမလို၊ transmit လည်း မဖြစ်ဘူး။

နှိုင်းယှဉ်ချက်Password vs Passkey
Phishing resistancePassword - fake site မှာ ရိုက်ထည့်လို့ ဖမ်းယူနိုင်တယ်။ Passkey - domain နဲ့ ချည်နှောင်ထားလို့ fake site မှာ မလုပ်ဆောင်ဘူး။
What's transmittedPassword - secret ကိုယ်တိုင် network ကို ဖြတ်တယ်။ Passkey - signature တစ်ခုတည်း ဖြတ်တယ်, secret ဘယ်တော့မှ မဖြတ်ဘူး။
Reuse riskPassword - service အများကြီးမှာ ပြန်သုံးလို့ ရတယ်, risk ပိုများတယ်။ Passkey - service တစ်ခုစီအတွက် သီးခြား key pair, reuse ဆိုတဲ့ concept ကိုယ်တိုင် မရှိဘူး။
Ecosystem supportPassword - almost universal, everywhere run လုပ်တယ်။ Passkey - device, OS, browser, service အလိုက် ကွာခြားတယ်, universal မဖြစ်သေးဘူး။
  • Phishing resistance - ရိုက်ထည့်စရာ secret မရှိတော့တဲ့အတွက် fake login page က target ဆုံးရှုံးတယ်
  • Reduced password reuse - reuse လုပ်စရာ password မရှိတော့လို့ risk category ပျောက်တယ်
  • Convenience - မှတ်ရစရာမလို၊ ရိုက်စရာမလို

Universal မဖြစ်သေးဘူး

Support ကတော့ device, OS, browser, service အလိုက် ကွာခြားပါတယ်။ Model နှစ်ခုစလုံးကို ခဏတွဲသုံးနေရဦးမှာပါ။

text
PASSWORD FLOW vs PASSKEY FLOW
-----------------------------
PASSWORD FLOW vs PASSKEY FLOW
------------------------------

  PASSWORD                       PASSKEY
  ---------                      -------
  user types secret              service sends challenge
        |                              |
        v                              v
  secret TRANSMITTED             challenge SIGNED locally
  over the network                with private credential
        |                              |
        v                              v
  server COMPARES it             server VERIFIES signature
  to stored value                 using public key only
        |                              |
        v                              v
  MATCH -> access                SIGNATURE VALID -> access

  risk: secret exposed           risk: nothing secret
  wherever it is typed            ever leaves the device

လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်

အောက်က code က suspicious domain တစ်ခုပေါ်မှာ password-based attempt နဲ့ passkey-based attempt ကို နှိုင်းယှဉ်ပြီး model လုပ်ပြထားတာပါ။ Risk ကို classify လုပ်တဲ့ decision function တစ်ခုသာဖြစ်ပြီး attack tool မဟုတ်ပါဘူး။

  • Password on fake site - theft ဖြစ်နိုင်တယ်, secret က technical barrier မရှိဘဲ transmit ဖြစ်တယ်
  • Passkey on same fake site - theft မဖြစ်နိုင်ဘူး, domain binding ကြောင့် activate ကိုယ်တိုင် မဖြစ်ဘူး

Domain binding ဆိုတာ သတိထားရမယ့် habit မဟုတ်ဘဲ credential ကိုယ်တိုင်က force ချထားတဲ့ property တစ်ခုပါ။

အတူတူ စမ်းရေးကြည့်မယ်

javascript
function analyzeLoginAttempt({ isPasswordBased, isPasskeyBased, isOnASuspiciousDomain }) {
  if (isPasswordBased && isOnASuspiciousDomain) {
    return {
      credentialTheftPossible: true,
      reason: "A password is a shared secret that gets typed and transmitted -- on a fake site, the user unknowingly hands that secret straight to the attacker."
    };
  }
  if (isPasskeyBased && isOnASuspiciousDomain) {
    return {
      credentialTheftPossible: false,
      reason: "A passkey is cryptographically bound to the real site's domain -- on a fake domain it simply will not offer itself for use, so there is nothing to steal."
    };
  }
  if (isPasswordBased) {
    return {
      credentialTheftPossible: false,
      reason: "On the legitimate domain no theft occurs here, but the password remains a shared secret that could still be phished elsewhere or reused."
    };
  }
  return {
    credentialTheftPossible: false,
    reason: "On the legitimate domain the passkey flow completes normally with nothing secret ever transmitted."
  };
}

const passwordOnFakeSite = analyzeLoginAttempt({ isPasswordBased: true, isPasskeyBased: false, isOnASuspiciousDomain: true });
const passkeyOnFakeSite = analyzeLoginAttempt({ isPasswordBased: false, isPasskeyBased: true, isOnASuspiciousDomain: true });

console.log(JSON.stringify({ passwordOnFakeSite, passkeyOnFakeSite }, null, 2));
You should see
Fake site ပေါ်မှာ password ကို run ကြည့်ရင် `credentialTheftPossible: true`, တူညီတဲ့ fake site ပေါ်မှာ passkey ကို run ကြည့်ရင် `credentialTheftPossible: false` ဖြစ်ကြောင်း တွေ့ရပါတယ်။ Output အတိအကျမှာ:
{
  "passwordOnFakeSite": {
    "credentialTheftPossible": true,
    "reason": "A password is a shared secret that gets typed and transmitted -- on a fake site, the user unknowingly hands that secret straight to the attacker."
  },
  "passkeyOnFakeSite": {
    "credentialTheftPossible": false,
    "reason": "A passkey is cryptographically bound to the real site's domain -- on a fake domain it simply will not offer itself for use, so there is nothing to steal."
  }
}

၅ မိနစ် စမ်းကြည့်

`isOnASuspiciousDomain: false` နဲ့ password attempt တစ်ခု run ကြည့်ပါ။ Reason field က ဘယ်လို ပြောင်းသွားလဲ, ဘာကြောင့် legitimate domain ပေါ်မှာတောင် password ကို "safe" လို့ လုံးဝ မခေါ်ဘူးလဲ စဉ်းစားကြည့်ပါ။

သတိလေးတစ်ချက်

Passkey ကို support မလုပ်သေးတဲ့ service တွေမှာတောင် ရှိပြီးသားလို့ ယူဆတာ

Password ကို legitimate domain ပေါ်မှာ သုံးရင် reuse risk လုံးဝ ကင်းလွတ်တယ်လို့ ထင်တာ

Quiz - ဘာကြောင့် Passkey က Phishing ကို ခုခံနိုင်လဲ

User တစ်ယောက်က convincing fake login page ဆိုက်တစ်ခုမှာ ဒေါက်သွားတယ်။ Passkey သုံးထားရင် password သုံးထားတာထက် ဘာကြောင့် ပိုလုံခြုံသလဲ။

Wikipedia — WebAuthnDigital Privacy & Modern Security

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • Passkey ကို support မလုပ်သေးတဲ့ service တွေမှာတောင် ရှိပြီးသားလို့ ယူဆတာ
  • Password ကို legitimate domain ပေါ်မှာ သုံးရင် reuse risk လုံးဝ ကင်းလွတ်တယ်လို့ ထင်တာ
  • ဒီ course က Cybersecurity Basics course အသစ် မဟုတ်ပါ — password/2FA/phishing/malware/encryption/backup အခြေခံကို Cybersecurity tutorial ကနေ လေ့လာပြီးသားလို့ ယူဆထားပါတယ်။ ဒီ course က Passkeys, Public Wi-Fi/VPN, Browser Security, Privacy, developer-focused Auth/API security, AI security လို အသစ်ထပ်ဖြည့်တဲ့ အပိုင်းကိုသာ သင်ပေးပါတယ်။

လေ့ကျင့်ခန်း

`isOnASuspiciousDomain: false` နဲ့ password attempt တစ်ခု run ကြည့်ပါ။ Reason field က ဘယ်လို ပြောင်းသွားလဲ, ဘာကြောင့် legitimate domain ပေါ်မှာတောင် password ကို "safe" လို့ လုံးဝ မခေါ်ဘူးလဲ စဉ်းစားကြည့်ပါ။

You'll know it worked when: Fake site ပေါ်မှာ password ကို run ကြည့်ရင် `credentialTheftPossible: true`, တူညီတဲ့ fake site ပေါ်မှာ passkey ကို run ကြည့်ရင် `credentialTheftPossible: false` ဖြစ်ကြောင်း တွေ့ရပါတယ်။ Output အတိအကျမှာ: { "passwordOnFakeSite": { "credentialTheftPossible": true, "reason": "A password is a shared secret that gets typed and transmitted -- on a fake site, the user unknowingly hands that secret straight to the attacker." }, "passkeyOnFakeSite": { "credentialTheftPossible": false, "reason": "A passkey is cryptographically bound to the real site's domain -- on a fake domain it simply will not offer itself for use, so there is nothing to steal." } }

Password vs Passkey | Thuta Learning