လုံခြုံရေး
ဘဏ္ဍာတိုက်ကို ဘယ်လိုတည်ဆောက်ထားလဲ၊ ကျိုးပေါက်ရင် ဘာတွေတွေ့ရမလဲ။
နောက်ဆုံးအပ်ဒိတ်လုပ်ခဲ့သည့်ရက်စွဲ ၂၀၂၆ ခုနှစ်၊ စက်တင်ဘာလ ၂၁ ရက် · AssuredAuth၊ CircleRoll LLC မှ
ဒါက AssuredAuth က သင်သိမ်းထားတဲ့ နှစ်ထပ်လျှို့ဝှက်ချက်တွေ၊ စကားဝှက်တွေနဲ့ ကတ်တွေကို ဘယ်လိုကာကွယ်ပေးတယ်ဆိုတဲ့ အများပြည်သူအတွက် ဖော်ပြချက်ပါ။ လုံခြုံရေးကို ဂရုစိုက်တဲ့ စာဖတ်သူတစ်ယောက်က အက်ပ်နဲ့ ထုတ်ဝေထားတဲ့ စမ်းသပ် vector တွေကို စစ်ဆေးနိုင်အောင် ရေးသားထားတာပါ (hello@assuredauth.com မှာ တောင်းဆိုရင် ပြန်လည်သုံးသပ်သူ မည်သူမဆို ရရှိနိုင်ပါတယ်)။ ဘာတွေက မှန်ကန်ပြီး ဘာတွေက ပိုမှန်ကန်တယ်ဆိုတာ ပြောထားပါတယ်- ဒီမှာ ဘာမှ တိုက်ခိုက်မှုကနေ လွတ်မြောက်တယ်လို့ မပြောပါဘူး၊ ရာခိုင်နှုန်းနဲ့လည်း ဘာမှ ကတိမပေးပါဘူး။
အတိုချုပ်ပြောရရင် vault ဟာ သင့်ဖုန်းမှာ တစ်နေရာတည်းမှာ ရှိပါတယ်။ အဲဒီထဲမှာပါတဲ့ value တိုင်းကို ဖုန်းရဲ့ security hardware က သိမ်းဆည်းထားပြီး export မလုပ်နိုင်တဲ့ key တစ်ခုနဲ့ encrypt လုပ်ထားပါတယ်။ ကျွန်တော်တို့ vault server ကို မလည်ပတ်ဘူး၊ copy မကူးဘူး၊ key မကိုင်ဘူး။ backup ဖိုင်ဟာ ဘယ်နေရာမှာမှ မသိမ်းဆည်းထားတဲ့ passphrase တစ်ခုနဲ့ encrypt လုပ်ပြီးမှ ဖုန်းကနေ ထွက်သွားတာပါ။
ပြဿနာတစ်ခုကို အစီရင်ခံပါ: hello@assuredauth.com. အဆုံးတွင်ရှိသော "အားနည်းချက်တစ်ခုကို အစီရင်ခံခြင်း" ကိုကြည့်ပါ။
၁။ ဘာကို ကုဒ်ဝှက်ထားလဲ၊ ဘာနဲ့ ကုဒ်ဝှက်ထားလဲ
| ဒေတာ | ဖုန်းထဲမှာ | သော့ |
|---|---|---|
| အချက်နှစ်ချက် လျှို့ဝှက်ချက်များ (TOTP/HOTP/Steam seeds) | ဖုန်းထဲမှာKeychain (iOS) / Android Keystore မှ ကျောထောက်နောက်ခံပေးထားသော စတိုး | သော့ပလက်ဖောင်းရဲ့ hardware-bound key; database row မှာ reference (secretRef) တစ်ခုတည်းသာရှိပြီး seed ကို ဘယ်တော့မှ မသိမ်းဆည်းထားပါဘူး။ |
| စကားဝှက်များ (စကားဝှက်တန်ဖိုး၊ မှတ်စုများ) | ဖုန်းထဲမှာတံဆိပ်ခတ်ထားသော အတန်း- AES-256-GCM၊ တန်ဖိုးတစ်ခုလျှင် ကျပန်း 96-bit nonce တစ်ခု | သော့§2 တွင် ဟာ့ဒ်ဝဲသော့ဖြင့် ထုပ်ပိုးထားသော ကျပန်း 256-bit ဒေတာသော့ |
| ကတ်များ (နံပါတ်၊ သက်တမ်းကုန်ဆုံးရက်၊ ကတ်ပေါ်ရှိအမည်၊ CVC) | ဖုန်းထဲမှာစကားဝှက်များနှင့် အတူတူပင် တံဆိပ်ခတ်ထားသည်။ CVC သည် ရွေးချယ်နိုင်ပြီး သင်ရိုက်ထည့်မှသာ သိမ်းဆည်းထားသည်။ | သော့ဒေတာသော့ တူသည် |
| မက်တာဒေတာ (ဝန်ဆောင်မှုအမည်များ၊ အသုံးပြုသူအမည်များ၊ အိုင်ကွန်များ၊ အစီအစဉ်တကျစီစဉ်ခြင်း) | ဖုန်းထဲမှာအက်ပ်ရဲ့ ဒေတာဘေ့စ် (SwiftData / Room) | သော့လည်ပတ်မှုစနစ်၏ဖိုင်ကုဒ်ဝှက်ခြင်းဖြင့်ကာကွယ်ထားသည်၊ လျှို့ဝှက်မဟုတ်သောအဖြစ်သတ်မှတ်သည် |
| အရန်ကူးယူဖိုင် (.authbackup) | ဖုန်းထဲမှာဘယ်နေရာမှာပဲထားထား- Files၊ iCloud Drive၊ Google Drive appDataFolder၊ share sheet တစ်ခု | သော့သင့်ရဲ့ passphrase (§3) ကနေ ရရှိတဲ့ key တစ်ခု။ Apple နဲ့ Google တို့ဟာ seal လုပ်ထားတဲ့ file ကို ရရှိပြီး တခြားဘာမှ မရကြပါဘူး။ |
| နာရီ/ဝတ်ဆင်ရန် အဖော် | ဖုန်းထဲမှာနာရီရဲ့ Keychain / EncryptedSharedPreferences | သော့နာရီပလက်ဖောင်း၏ သော့များ၊ ပလက်ဖောင်း၏ တွဲဖက်ထားသော စက်ပစ္စည်းချန်နယ်မှတစ်ဆင့် လွှဲပြောင်းထားသည် |
| ဒက်စ်တော့ တိုးချဲ့မှု လည်ပတ်မှု (တစ်ကြိမ်သုံး ကုဒ်များကို တောင်းဆိုနိုင်သည်) | ဖုန်းထဲမှာသိမ်းဆည်းမထားပါ။ အဆုံးမှအဆုံးသို့ ကုဒ်ဝှက်ထားသော စာအိတ်များအဖြစ် ပေးပို့သည် | သော့Keychain / Keystore မှာ private key တစ်ခုစီအတွက် X25519 key pair တစ်ခုစီ ပါရှိပါတယ်။ relay က ciphertext ကိုပဲ မြင်ပါတယ်။ |
Diagnostics မှာ secret ကိုလက်ခံတဲ့ method မရှိပါဘူး။ analytics event မှာ vault field မရှိပါဘူး။ vault ကနေ value တွေကို log မှာ၊ build တစ်ခုခုမှာမှ မရေးပါဘူး။
၂။ သော့များရှိသည့်နေရာ၊ ပလက်ဖောင်းတစ်ခုစီတွင်
iOS. ဒေတာကီးကို Secure Enclave (kSecAttrTokenIDSecureEnclave) အတွင်းရှိ ထုတ်လုပ်ထားသော ကီးဖြင့် access control .privateKeyUsage + .userPresence, accessibility …ThisDeviceOnly ဖြင့် ထုပ်ပိုးထားပြီး၊ အက်ပ်၏ shared Keychain access group တွင်ရှိသောကြောင့် AutoFill extension သည် တူညီသောကီးကို အသုံးပြုနိုင်သည်။ private key ကို အက်ပ်၊ backup သို့မဟုတ် debugger မှ Enclave မှ ဖတ်ရှု၍မရပါ။ အသုံးပြုသူရှိနေပြီးနောက်မှသာ Enclave သည် ၎င်းကိုအသုံးပြုရန် သဘောတူသည် (Face ID၊ Touch ID သို့မဟုတ် device passcode)။ ThisDeviceOnly ဆိုသည်မှာ ဖုန်း၏ iCloud သို့မဟုတ် iTunes backup တွင် key မပါဝင်ပါ။ ပြန်လည်ရယူထားသော ဖုန်းသည် vault အလွတ်ဖြင့်စတင်ပြီး သင်၏ backup ဖိုင်နှင့် passphrase ကို တောင်းဆိုသည်။ passcode မပါတဲ့ ဖုန်းက .userPresence key ကို gate လုပ်လို့မရပါဘူး (Enclave က တစ်ခုဖန်တီးဖို့ ငြင်းဆိုပါတယ်)၊ simulator ကလည်း ဒီဇိုင်းအရ အဲဒီလမ်းကြောင်းကိုပဲ သွားပါတယ် (သူ့ရဲ့ presence prompt က test ဘယ် test မှ မဖြေနိုင်တဲ့ alert ပါ)။ အဲဒီမှာ data key က device-only Keychain item သက်သက်ပါ - backup တိုင်းမှာ မပါသေးဘူး၊ ဖုန်း lock လုပ်ထားတဲ့အချိန်မှာ ဖတ်လို့မရသေးဘူး၊ ဒါပေမယ့် second prompt မပါသေးဘူး - ပြီးတော့ Security screen က အဲဒါကို တိတိကျကျပြောပြီး passcode သတ်မှတ်ဖို့ အကြံပြုပါတယ်။
Android. data key ကို AndroidKeyStore AES-256 key ဖြင့်ထုပ်ပိုးထားပြီး၊ device တွင် (မဟုတ်ပါက TEE) ရှိသည့်အခါ StrongBox တွင်ထုတ်ပေးပြီး setUserAuthenticationRequired(true) နှင့် biometric သို့မဟုတ် device credential ပြီးနောက် စက္ကန့် ၃၀ authentication validity၊ setUnlockedDeviceRequired(true) နှင့် setInvalidatedByBiometricEnrollment(true) ထားခဲ့သည်။ ထိုနောက်ဆုံး flag သည် load-bearing ထက် ရိုးသားသည်- Android သည် ၎င်းကို အသုံးပြုမှုတိုင်းတွင် biometric တောင်းဆိုသော key များအတွက်သာ အသုံးချသောကြောင့် device credential ခွင့်ပြုထားသော ဤစက္ကန့် ၃၀ key တွင် ၎င်းသည် ဘာမှမပြောင်းလဲပါ - သူစိမ်းတစ်ဦး၏လက်ချောင်းကို တားဆီးထားသည်မှာ မှတ်ပုံတင်ရန် PIN လိုအပ်ပြီး screen lock ကိုဖယ်ရှားခြင်းသည် key ကို အပြီးအပိုင် ပျက်ပြယ်စေခြင်းဖြစ်သည်။ Keystore key များကို export လုပ်၍မရဘဲ Android ၏ cloud backup မှ ဖယ်ထုတ်ထားသည်။ ၎င်း၏ကိုယ်ပိုင် views များတွင် domain တစ်ခုနှင့် app တစ်ခုအမည်ပေးသည် (webDomain) ကို သိရှိထားသော browser မှသာ ယုံကြည်သည်။ အခြား package မှ system သည် ထို package အတွက် အတည်ပြုထားသော တစ်ခုလည်းဖြစ်ရမည် (Digital Asset Links)၊ အဘယ်ကြောင့်ဆိုသော် မည်သည့် app မဆို မည်သည့် domain ကိုမဆို claim လုပ်နိုင်သည်။
ခိုးယူခံရသော ဒေတာဘေ့စ်ဖိုင်အတွက် ၎င်းသည် အဘယ်အရာကို ဆိုလိုသနည်း။ SQLite ဖိုင်နှင့် တံဆိပ်ခတ်ထားသော row များသည် ciphertext များဖြစ်သည်။ ၎င်းတို့ကိုဖွင့်သည့် key သည် ဖိုင်လာသည့်ဖုန်းရှိ လုံခြုံရေး hardware တွင်တည်ရှိပြီး ဖိုင်နှင့်အတူကူးယူ၍မရပါ။ အော့ဖ်လိုင်းတွင် ခန့်မှန်းရန်ဘာမှမရှိပါ- data key သည် random ဖြစ်ပြီး လူတစ်ဦးရွေးချယ်သည့်အရာမှဆင်းသက်လာခြင်းမဟုတ်ပါ။
၃။ အရန်ဖိုင်
ဖုန်းထဲက သိမ်းထားတဲ့ တစ်ခုတည်းသော အရာက အရန်ကူးယူမှုတွေပဲမို့ အော့ဖ်လိုင်းတိုက်ခိုက်မှုတစ်ခု ဖြစ်နိုင်တဲ့ တစ်ခုတည်းသောနေရာပါပဲ။ ဒီဇိုင်းက အဲဒီတိုက်ခိုက်မှုကို စျေးကြီးစေပြီး အလုပ်လုပ်ဖို့ အနည်းဆုံးဖြစ်အောင် လုပ်ပေးပါတယ်။
- လျှို့ဝှက်စကားစုသည် အနည်းဆုံး စာလုံး ၁၂ လုံး ရှိသည် (၎င်းထက်နည်းပါက ပယ်ချပြီး ခိုင်မာမှုဘားကို ပြသသည်)။
- မည်သည့် passphrase hint ကိုမျှ ဖိုင် သို့မဟုတ် အက်ပ်ထဲတွင် မည်သည့်နေရာတွင်မျှ သိမ်းဆည်းမထားပါ။
- ရေးသားထားသော ဖိုင်တိုင်းအတွက် လတ်ဆတ်သော ကျပန်း 16-byte salt နှင့် 12-byte nonce။
- တစ်ခုလုံးသည် AES-256-GCM ဖြစ်သောကြောင့် မှားယွင်းသော passphrase သို့မဟုတ် ပျက်စီးနေသောဖိုင်ကို ငြင်းပယ်ပြီး အမှိုက်ပုံးထဲသို့ ဘယ်တော့မှ decrypt မလုပ်ပါ။
- header (format၊ version၊ KDF parameters၊ salt) ကို GCM tag ထဲသို့ နောက်ထပ် စစ်မှန်ကြောင်းအထောက်အထားပြထားသော data အဖြစ် ချိတ်ဆက်ထားသောကြောင့် work factor ကို တည်းဖြတ်ထားသော ဖိုင်သည် မဖွင့်နိုင်ပါ။
ဖိုင်က JSON ဖြစ်ပြီး မည်သည့် text editor တွင်မဆို ဖတ်ရှုနိုင်ပါသည်။ ciphertext သာ မှုန်ဝါးနေပါသည်။ အက်ပ်ကို ဖျက်လိုက်ပြီး ငါးနှစ်အတွင်း ဖိုင်ကို ရှာတွေ့သူတစ်ဦးသည် ၎င်းကို မည်သို့တံဆိပ်ခတ်ထားသည်ကို အတိအကျမြင်နိုင်ပြီး OpenSSL သို့မဟုတ် Argon2 library တစ်ခုခုဖြင့် ဖွင့်နိုင်ပါသည်။
ဖော်မတ် v1 (1.0 ဖြင့် ပို့ဆောင်ပေးသည်၊ ဖတ်ရှုနိုင်ဆဲ)
{
"format": "authbackup",
"version": 1,
"kdf": "PBKDF2-HMAC-SHA256",
"rounds": 600000,
"salt": "<base64, 16 bytes>",
"cipher": "AES-256-GCM",
"nonce": "<base64, 12 bytes>",
"ciphertext": "<base64>",
"tag": "<base64, 16 bytes>"
}
| အဆင့် | ဘိုက်များ |
|---|---|
key | PBKDF2-HMAC-SHA256(passphrase as UTF-8, salt, 600000 rounds, 32 bytes) |
aad | UTF-8("authbackup:1:600000:") ‖ salt (base64 မဟုတ်ဘဲ၊ salt bytes များ) |
ciphertext, tag | AES-256-GCM(key, nonce, plaintext, aad); တဂ် ၁၆ ဘိုက်၊ သီးခြားသိမ်းဆည်းထားသည် |
plaintext | UTF-8 JSON၊ သော့များကို စီထားသည်: {"accounts":[…],"exportedAt":"…Z","passwords":[…],"version":1} |
လိုက်ဖက်ညီမှု မှတ်ချက်- Android 1.0 သည် v1 ၏ မျိုးကွဲတစ်ခုကို ရေးသားခဲ့သည် — kdf ကို အသေးစာလုံးဖြင့် ရေးသားထားပြီး tag key မပါဝင်ပါ (ciphertext နှင့် တွဲထားသော 16-byte tag)၊ အပိုဒေတာ မပါဝင်ပါ။ ပလက်ဖောင်းနှစ်ခုစလုံးသည် ထိုဖိုင်များကို ဆက်လက်ဖတ်ရှုနေကြသည် (tag မရှိသည့်အခါ- နောက်ဆုံး 16 bytes ကို ခွဲထုတ်ပြီး ဗလာ AAD ဖြင့်ဖွင့်ပါ၊ kdf ကို အကြီးစာလုံး မခွဲခြားဘဲ နှိုင်းယှဉ်ပါ) နှင့် ယခုအခါ နှစ်ခုစလုံးသည် အထက်ပါ layout ကိုသာ ရေးသားကြသည်။
ဖော်မတ် v2 (လက်ရှိ; အရန်ကူးယူမှုအသစ်များအတွက် မူရင်း)
{
"format": "authbackup",
"version": 2,
"kdf": "Argon2id",
"memoryKiB": 65536,
"passes": 3,
"lanes": 1,
"salt": "<base64, 16 bytes>",
"cipher": "AES-256-GCM",
"nonce": "<base64, 12 bytes>",
"ciphertext": "<base64>",
"tag": "<base64, 16 bytes>"
}
| အဆင့် | ဘိုက်များ |
|---|---|
key | Argon2id(version 0x13, passphrase as UTF-8, salt, m = 65536 KiB, t = 3, p = 1, tagLength 32, no secret, no associated data) |
aad | UTF-8("authbackup:2:argon2id:65536:3:1:") ‖ salt |
ciphertext, tag | AES-256-GCM(key, nonce, plaintext, aad); တဂ် ၁၆ ဘိုက်၊ သီးခြားသိမ်းဆည်းထားသည် |
plaintext | UTF-8 JSON၊ သော့များကို စီထားသည်: {"accounts":[…],"cards":[…],"exportedAt":"…Z","passwords":[…],"version":2} |
Argon2id သည် reference C implementation (phc-winner-argon2, CC0) ဖြစ်ပြီး ပလက်ဖောင်းနှစ်ခုလုံးတွင် ရောင်းချသည်။ လက်ရှိဖုန်းတွင် 64 MiB နှင့် 3 pass များသည် တစ်စက္ကန့်ခန့်ကြာပြီး ခန့်မှန်းချက်တိုင်းသည် မည်သည့် hardware တွင်မဆို ထို memory နှင့် အချိန်ကို ဆုံးရှုံးစေသည် - PBKDF2 တွင် GPU rigs များနှင့် နှိုင်းယှဉ်ပါက မရှိသော ဂုဏ်သတ္တိနှင့် v2 ရှိနေရခြင်း၏ အကြောင်းရင်း။ reader သည် ၎င်းမသိသော key များကို လျစ်လျူရှုသောကြောင့် v2 body ပေးထားသော v1 reader သည် ကတ်များကို ဘယ်တော့မှ မမြင်ရပါ။
သက်သေပြချက်
test-vector ဖိုင်သုံးခု (backup v1၊ backup v2 နှင့် Argon2id) ကို အက်ပ်နှစ်ခုလုံးနှင့် မသက်ဆိုင်သော တတိယအကောင်အထည်ဖော်မှုဖြင့် ထုတ်လုပ်ထားသည် (PBKDF2 အတွက် Node ၏ OpenSSL နှင့် AES-GCM၊ WebAssembly Argon2id ကို ထုတ်လုပ်မှုအချိန်တွင် reference အကောင်အထည်ဖော်မှု၏ ထုတ်ဝေထားသော အဖြေများနှင့် နှိုင်းယှဉ်စစ်ဆေးထားသည်)။ တစ်ခုစီတွင် passphrase၊ salt၊ nonce၊ plaintext၊ derived key၊ AAD၊ expected ciphertext နှင့် tag နှင့် ဖိုင်အပြည့်အစုံ ပါရှိသည်။ iOS နှင့် Android ရှိ unit test များသည် တူညီသောဖိုင်များကို ဖတ်ရှုပြီး တူညီသော bytes များကို asserte လုပ်သည် - ထို့ကြောင့် platform တစ်ခုတည်းတွင် တံဆိပ်ခတ်ထားသော backup တစ်ခုကို အခြားတစ်ခုတွင် ဖွင့်ရန် မယူဆဘဲ သက်သေပြထားပြီး သုံးခုစလုံး၏ သဘောတူညီချက်သည် တူညီသောအမှား၏ မိတ္တူနှစ်ခု မဟုတ်ပါ။ companion tool တစ်ခုသည် ဖုန်းတစ်လုံးက ထိုတတိယအကောင်အထည်ဖော်မှုဖြင့် ရေးသားထားသော ဖိုင်တစ်ခုကို ဖွင့်ပြီး header ကို အထက်ပါစည်းမျဉ်းများနှင့် တိုက်ဆိုင်စစ်ဆေးသည် (format ၏ key များနှင့် အတိအကျတူညီသောကြောင့် hint သို့မဟုတ် name မပါရှိနိုင်ပါ။ 16-byte salt၊ 12-byte nonce၊ 16-byte tag ကို သီးခြားသိမ်းဆည်းထားသည်။ version 2 ကို 64 MiB / 3 / 1 အတိအကျတွင် သိမ်းဆည်းထားသည်။ မှားယွင်းသော passphrase ကို ငြင်းဆိုထားသည်)။ အလိုအလျောက် iOS လည်ပတ်မှုသည် simulator တွင် တစ်ခုရေးပြီး ထိုနည်းအတိုင်းဖွင့်ပြီး simulator ၏ app container၊ App Group container နှင့် keychain database တွင် seeded password နှင့် card နံပါတ်တိုင်းကို UTF-8 နှင့် UTF-16 အဖြစ် ရှာဖွေသည် (0 hits)။
၄။ ခြိမ်းခြောက်မှုပုံစံ
| အခြေအနေ | သူတို့မှာရှိတာတွေက | သူတို့ဘာတွေရလဲ |
|---|---|---|
| ဖုန်းပျောက်ဆုံးခြင်း သို့မဟုတ် ခိုးယူခံရခြင်း၊ လော့ခ်ချထားခြင်း | သူတို့မှာရှိတာတွေကစက်ပစ္စည်း၊ ဒေတာဘေ့စ်ဖိုင်၊ တံဆိပ်ခတ်ထားသော အတန်းများ | သူတို့ဘာတွေရလဲကုဒ်ဝှက်စာ။ ထုပ်ပိုးထားသောသော့သည် Secure Enclave / StrongBox တွင်ရှိပြီး စက်ကိုသော့ခတ်ပြီးနောက် ဇီဝမက်ထရစ်အသစ် သို့မဟုတ် လျှို့ဝှက်ကုဒ်အသစ်တစ်ခုပြုလုပ်ပြီးမှသာ ထွက်လာပါသည်။ ဖုန်းကို အဝေးမှ ဖျက်ခြင်း (Find My / Find My Device) သည် သော့ပစ္စည်းကို ၎င်းနှင့်အတူ ဖျက်ဆီးပစ်ပါသည်။ |
| ခိုးယူခံရသော backup ဖိုင် | သူတို့မှာရှိတာတွေကcloud အကောင့်၊ အီးမေးလ်၊ လက်တော့ပ်မှ .authbackup ဖိုင် | သူတို့ဘာတွေရလဲအနည်းဆုံး စာလုံး ၁၂ လုံးပါ စကားဝှက်တစ်ခုမှ ရယူထားသော သော့တစ်ခုအောက်ရှိ AES-256-GCM ကိုယ်ထည်တစ်ခု၊ ဖိုင်တစ်ခုလျှင် salt နှင့် Argon2id ပါဝင်ပြီး 64 MiB × 3 passes (v2) သို့မဟုတ် 600,000 rounds (v1) တွင် PBKDF2 ပါဝင်သည်။ အရိပ်အမြွက်မရှိ၊ အသုံးပြုသူအမည်မရှိ၊ ရှင်းလင်းချက်တွင် အကောင့်စာရင်းမရှိပါ။ ခန့်မှန်းချက်တစ်ခုစီသည် အပြည့်အဝရယူခြင်းအတွက် ကုန်ကျစရိတ်ရှိပြီး shortcut မရှိပါ။ ခိုင်မာသော စကားဝှက်သည် ဤနေရာတွင် အပြည့်အဝကာကွယ်မှုဖြစ်ပြီး အက်ပ်က sheet ပေါ်တွင် ထိုသို့ဖော်ပြထားသည်။ |
| မျက်နှာပြင်ဖွင့်ထားပြီး ခိုးယူခံရသော စက်ပစ္စည်း | သူတို့မှာရှိတာတွေကသင့်လက်ထဲမှာ ဖုန်းတစ်လုံး၊ လော့ခ်ဖွင့်ထား | သူတို့ဘာတွေရလဲကုဒ်စာရင်း။ vault (စကားဝှက်များ၊ ကတ်များ) သည် အက်ပ်လော့ခ်၏နောက်ကွယ်တွင်ရှိပြီး အလိုအလျောက်လော့ခ် timer တွင် ပြန်လည်လော့ခ်ချသည် (ချက်ချင်း / ၁ မိနစ် / ၅ မိနစ်)။ ကုဒ်ဖြည်ထားသောတန်ဖိုးသည် ၎င်း၏မျက်နှာပြင်ပြသနေချိန်တွင်သာ မှတ်ဉာဏ်တွင်ရှိသည်။ အလိုအလျောက်ဖြည့်ခြင်းနှင့် plain-text ထုတ်ယူခြင်းသည် အက်ပ်ဖွင့်ထားသော်လည်း ဇီဝမက်ထရစ်အသစ်တစ်ခုတောင်းဆိုသည်။ သင်စိုးရိမ်နေသည့်ကိစ္စဖြစ်ပါက "ချက်ချင်း" ဖြင့် အက်ပ်လော့ခ်ကိုဖွင့်ပါ။ |
| ဖုန်းတစ်ခုတည်းမှာတင် အန္တရာယ်ရှိတဲ့ အက်ပ်တစ်ခု ရှိနေပါတယ် | သူတို့မှာရှိတာတွေကအခြားအက်ပ်တစ်ခု၏ sandbox၊ clipboard၊ accessibility သို့မဟုတ် overlay လှည့်ကွက်များ | သူတို့ဘာတွေရလဲ၎င်းသည် ကျွန်ုပ်တို့၏ဖိုင်များကို ဖတ်၍မရပါ (platform sandboxing) သို့မဟုတ် ကျွန်ုပ်တို့၏ key ကို အသုံးပြု၍မရပါ (key သည် ကျွန်ုပ်တို့၏ signing identity နှင့် user ရှိနေခြင်းနှင့် ချိတ်ဆက်ထားသည်)။ မိတ္တူများကို clipboard မှ စက္ကန့် ၃၀ ကြာပြီးနောက် ရှင်းလင်းသည်။ Android တွင် မိတ္တူကို sensitive အဖြစ် flag လုပ်ထားပြီး clipboard history မှ ဖယ်ထုတ်ထားသည်။ Android တွင် Vault မျက်နှာပြင်များသည် FLAG_SECURE ကို သတ်မှတ်ထားသည် (screenshot များ မရှိ၊ screen recording မရှိ၊ switcher တွင် ဗလာဖြစ်သည်)။ iOS သည် switcher thumbnail ကို ဗလာဖြစ်စေသည်။ Android တွင် Autofill ကို စနစ်သည် သိမ်းဆည်းထားသော domain (Digital Asset Links) နှင့် ကိုက်ညီစွာ အတည်ပြုထားသော အက်ပ်များအတွက်သာ ပံ့ပိုးပေးသောကြောင့် ဆင်တူသော အက်ပ်ကို သင့်စကားဝှက်ကို မပေးဆောင်ပါ။ |
| လိမ်လည်မှုစာမျက်နှာ | သူတို့မှာရှိတာတွေကသင်သိမ်းဆည်းထားသော ဝဘ်ဆိုက်နှင့် ဆင်တူသော ဝဘ်ဆိုက်တစ်ခု | သူတို့ဘာတွေရလဲဘာမှမဖြည့်ပါဘူး။ ကိုက်ညီမှုကို မှတ်ပုံတင်နိုင်တဲ့ domain (public suffix list၊ bundle လုပ်ပြီး app နဲ့ update လုပ်ထားပါတယ်) အလိုက် လုပ်ဆောင်ပါတယ်- login.example.com နဲ့ example.com ကိုက်ညီပေမယ့် example.com.evil.net နဲ့ examp1e.com ကတော့ မကိုက်ညီပါဘူး။ in-app browser က အဲဒီအတိုင်းပဲ ကိုက်ညီပြီး မေးထားတဲ့ frame ထဲကိုပဲ ဖြည့်ပါတယ်၊ ဖြည့်တဲ့အချိန်မှာ အဲဒီ frame ရဲ့ မူရင်းနဲ့ ပြန်စစ်ဆေးပါတယ်။ မှတ်ပုံတင်နိုင်တဲ့ domain မရှိတဲ့ host ကတော့ IP address၊ local network မှာ ရှိတဲ့ name သက်သက်နဲ့ အတိအကျ ကိုက်ညီပြီး ဘာမှ လျော့မသွားပါဘူး။ iOS AutoFill မှာ Apple ရဲ့ associated-domains check ကို ထည့်သွင်းထားပါတယ်။ look-alike ထဲကို လက်နဲ့ paste လုပ်ရမယ့် password က အန္တရာယ်များပါတယ်။ app က အဲဒါကို မဖယ်ရှားနိုင်ပါဘူး၊ ကူညီတာကိုပဲ ရှောင်ရှားနိုင်ပါတယ်။ |
| ကျွန်ုပ်တို့ရဲ့ကိုယ်ပိုင်ဆာဗာများ | သူတို့မှာရှိတာတွေက— | သူတို့ဘာတွေရလဲvault server မရှိပါဘူး။ AssuredAuth မှာ အကောင့်မရှိ၊ အကောင့်ဝင်စရာမလို၊ သင့်ရဲ့ vault ရဲ့ မိတ္တူလည်း မရှိတဲ့အတွက် ကျွန်တော်တို့ဘက်မှာ ခိုးယူခံရပြီး crack လုပ်စရာ ဘာမှမရှိပါဘူး။ server-side မှာ လုပ်ဆောင်နေတဲ့ အရာနှစ်ခုရှိပြီး ဘယ်ဟာမှ vault နဲ့ မသက်ဆိုင်ပါဘူး- desktop extension အတွက် relay mailbox တစ်ခုဖြစ်ပြီး end-to-end encrypted envelopes (တစ်ကြိမ်သုံး code တွေကို ဖတ်တဲ့အခါ ဖျက်ပစ်ပါတယ်၊ relay မှာ key မရှိပါဘူး) ကို သိမ်းဆည်းပေးပါတယ်၊ ပြီးတော့ traffic ကို သယ်ဆောင်ပြီး access log တွေကို မသိမ်းဆည်းထားတဲ့ optional private connection ရဲ့ exit server တွေပါ။ |
| ဆင့်ခေါ်စာ သို့မဟုတ် အစိုးရ၏ တောင်းဆိုချက် | သူတို့မှာရှိတာတွေကကျွန်ုပ်တို့ထံ ပေးပို့သော ဥပဒေဆိုင်ရာ လုပ်ငန်းစဉ် | သူတို့ဘာတွေရလဲလွှဲပြောင်းပေးရန် ဘာမှမရှိပါ။ ကျွန်ုပ်တို့တွင် vault၊ key၊ passphrase နှင့် backup မရှိပါ။ ထိုသို့ပြောရန် ကျွန်ုပ်တို့ကို အတင်းအကျပ်ခိုင်းစေနိုင်သည်။ မရှိသောအရာကို ထုတ်လုပ်ရန် အတင်းအကျပ်ခိုင်းစေ၍မရပါ။ |
၅။ ကလစ်ဘုတ်၊ ဖန်သားပြင်ဓာတ်ပုံများနှင့် မှတ်ဉာဏ်
- Copy ကူးတာက တန်ဖိုးကို clipboard မှာ စက္ကန့် ၃၀ ထားပြီးနောက် ကျွန်ုပ်တို့ရဲ့ တန်ဖိုးဖြစ်နေသေးရင် ဖျက်ပစ်ပါတယ်။ Android မှာ clip ကို EXTRA_IS_SENSITIVE လို့ အမှတ်အသားပြုထားတာကြောင့် system က clipboard preview နဲ့ history ကနေ ဝှက်ထားပါတယ်။ iOS မှာ pasteboard item က local-only ဖြစ်ပါတယ် (တခြား devices တွေကို Handoff မလုပ်ပါဘူး)။
- Vault မျက်နှာပြင်များ (Passwords၊ Password၊ Cards၊ Card၊ passphrase sheets၊ plain-text export) သည် Android တွင် FLAG_SECURE ကို သတ်မှတ်ပေးသည်။ iOS တွင် ညီမျှသော flag မရှိပါ။ အက်ပ်သည် ၎င်း၏ thumbnail ကို အက်ပ် switcher တွင် ဗလာဖြစ်စေပြီး တန်ဖိုးများသည် default အားဖြင့် eye toggle နောက်တွင်ရှိသည်။
- ကုဒ်ဝှက်ထားသော တန်ဖိုးများသည် မျက်နှာပြင်တွင် ပြသနေချိန်တွင်သာ မှတ်ဉာဏ်တွင် တည်ရှိပြီး ၎င်း ပျောက်ကွယ်သွားသည့်အခါ သို့မဟုတ် အက်ပ် လော့ခ်ချသည့်အခါတွင် ပျောက်ကွယ်သွားပါသည်။ ဒေတာကီးကို တောင်းဆိုမှုအတွက် ဖြည်ထားပြီး လော့ခ်တစ်လျှောက်တွင် ကက်ရှ်မသိမ်းဆည်းထားပါ။
- Plain-text export ရှိပြီးသား (ဒါကြောင့် သင်အမြဲတမ်း ထွက်သွားနိုင်ပါတယ်) ဖြစ်ပြီး confirm sheet နဲ့ biometric အသစ်တစ်ခုရဲ့ နောက်မှာ ရှိနေပြီး ၎င်းရဲ့ screen ကလည်း FLAG_SECURE ဖြစ်ပါတယ်။
၆။ အလိုအလျောက်ဖြည့်ခြင်း- ဘာတွေဖြည့်ပြီး ဘာတွေမဖြည့်ဘူးလဲ
| ဘယ်နေရာ | စကားဝှက်များ | ကတ်များ |
|---|---|---|
| iOS: Safari နှင့် အက်ပ်များ (AutoFill extension) | စကားဝှက်များဟုတ်ကဲ့၊ extension (LAContext) မှာ Face ID / Touch ID / passcode အသစ်ထည့်ပြီးနောက်၊ မှတ်ပုံတင်ထားတဲ့ domain အတွက်ပဲ entry ကို save လုပ်ထားပြီး Apple ရဲ့ associated-domain တွေက app တွေကို စစ်ဆေးပေးပါတယ်။ | ကတ်များမဟုတ်ပါ။ Safari မှာ ကတ်ကို အလိုအလျောက်ဖြည့်တာက Apple ရဲ့ တစ်ခုတည်းပါ။ ကတ်မျက်နှာပြင်မှာ "AssuredAuth browser နဲ့ Copy နဲ့ ဖြည့်တယ်" လို့ ရေးထားပြီး တခြားဘာမှ ကတိမပေးပါဘူး။ |
| Android: အက်ပ်များနှင့် Chrome (အလိုအလျောက်ဖြည့်ဝန်ဆောင်မှု) | စကားဝှက်များဟုတ်ကဲ့၊ ဒေတာအစုံတစ်ခုချင်းစီအတွက် အထောက်အထားစိစစ်ခြင်း- စနစ်သည် ဖြည့်စွက်ခြင်းမပြုမီ BiometricPrompt ကိုပြသသည်။ Digital Asset Links သည် သိမ်းဆည်းထားသောဒိုမိန်းနှင့် ချိတ်ဆက်သည့်အခါတွင်သာ အက်ပ်ပက်ကေ့ဂျ်ကို ကိုက်ညီစေပါသည်။ | ကတ်များဟုတ်ကဲ့၊ creditCardNumber၊ creditCardExpiration* နှင့် creditCardSecurityCode အရိပ်အမြွက်များသည် ဇီဝမက်ထရစ်ဂိတ်တစ်ခုတည်းဖြစ်သည် |
| AssuredAuth browser (ပလက်ဖောင်းနှစ်ခုလုံး) | စကားဝှက်များဟုတ်ကဲ့၊ မှတ်ပုံတင်နိုင်သော domain — ၎င်း၏ကိုယ်ပိုင်ကိုက်ညီမှုတစ်ခုမျှမရှိသော host — ဖြင့် ဖြည့်စွက်ခြင်းမပြုမီ ဇီဝမက်ထရစ်ဖြင့် တောင်းဆိုထားသော frame ထဲသို့ | ကတ်များဟုတ်ကဲ့၊ လယ်ကွင်းထောက်လှမ်းခြင်းဖြင့်၊ ဖြည့်ခြင်းမပြုမီ ဇီဝမက်ထရစ်စစ်ဆေးမှု |
| မိတ္တူကူးရန် ခလုတ်များ | စကားဝှက်များအက်ပ်လော့ခ်နောက်ကွယ်၊ စက္ကန့် ၃၀ ကြာ ကလစ်ဘုတ် | ကတ်များနံပါတ်၊ သက်တမ်းကုန်ဆုံးရက်၊ CVC (တူညီသောစည်းမျဉ်းများ) |
ဆင်တူတဲ့ host မှာ ဘာမှ မဖြည့်နိုင်ပါဘူး။ biometric မပါရင် ဘာမှ မဖြည့်ပါဘူး။
၇။ ဘယ်တော့မှ မဖြစ်တဲ့အရာ
vault server မရှိပါ။ vault field ပါရှိသော analytics မရှိပါ။ confirm sheet နှင့် biometric အသစ်မပါဘဲ plain-text export မလုပ်ပါ။ vault screen တွင် third-party SDK မတင်ထားပါ။ vault screen ၏ screenshot မပါ။ passphrase hint မပါ။ မည်သည့် build တွင်မဆို value များကို logging မလုပ်ပါ။
၈။ ကျွန်ုပ်တို့ ကာကွယ်၍မရသောအရာများ
ခန့်မှန်းရလောက်အောင် အားနည်းတဲ့ စကားဝှက်တစ်ခု။ root မှာ operating system ခိုးယူခံထားရတဲ့ ဖုန်းတစ်လုံး (jailbreak လုပ်ထားတဲ့ ဒါမှမဟုတ် root လုပ်ထားတဲ့ device က အပေါ်က အရာအားလုံးအကြောင်း app ကို လိမ်ညာနိုင်ပါတယ်)။ စာရိုက်နေချိန်မှာ စောင့်ကြည့်ခံနေရတဲ့ လူတစ်ယောက်။ desktop ပေါ်က malware ထဲကို paste လုပ်ပါ။ အထက်ဖော်ပြပါစာရင်းကို ဒီဇိုင်းတစ်ခုက ဖယ်ရှားနိုင်တဲ့အရာတွေအတွက် ဖတ်ဖို့ ဒီလိုပြောတာပါ။
၉။ ပြန်လည်သုံးသပ်ချက် အခြေအနေ
ဤဒီဇိုင်းကို ပလက်ဖောင်းနှစ်ခုလုံးတွင် ထုတ်ဝေထားသော သိရှိထားသော အဖြေများနှင့် ၎င်း၏ကိုယ်ပိုင် ပလက်ဖောင်းဖြတ်ကျော် vector များနှင့် ယူနစ်-စမ်းသပ်ပြီးဖြစ်သည်။ စတိုးစာရင်းတွင် vault ကို ကြော်ငြာခြင်းမပြုမီ ပြင်ပသုံးသပ်ချက်တစ်ခုကို ပိုင်ရှင်စာရင်းတွင် ကြော်ငြာထားသည်။ ထိုသို့ဖြစ်လာသည်အထိ ဤစာရွက်စာတမ်းတွင် ဤသို့ဖော်ပြထားပါမည်။
၁၀။ အရာအားလုံး လည်ပတ်နေတဲ့နေရာ
ဖုန်းထဲက ဘာမှ vault ကနေ မထွက်ပေမယ့် ဖုန်းနဲ့ ပတ်သတ်တဲ့ အရာအနည်းငယ်ကတော့ တခြားလူတွေရဲ့ စက်တွေမှာ လည်ပတ်နေပါတယ်။ ဒါက စာရင်းဖြစ်ပြီး တစ်ခုချင်းစီမှာ ဘာတွေရှိလဲဆိုတာပါ။ ဒေတာစီးဆင်းမှုတွေကို https://assuredauth.com/privacy မှာရှိတဲ့ privacy မူဝါဒမှာ ဖော်ပြထားပါတယ်။
- Google Cloud / Firebase — desktop extension အတွက် relay mailbox (end-to-end encrypted envelopes၊ ဖတ်ပြီးတဲ့အခါ ဖျက်ပစ်ပါတယ်)၊ push tokens၊ ဝယ်ယူမှုအခြေအနေနှင့် contact form မှတစ်ဆင့် ပေးပို့သော မက်ဆေ့ချ်များ။
- Vercel — assuredauth.com၊ ၎င်း၏စာမျက်နှာများနှင့် ၎င်းတို့နောက်ကွယ်ရှိ လုပ်ဆောင်ချက်ငယ်များ။
- Vultr — သီးသန့်ချိတ်ဆက်မှု၏ ထွက်ပေါက်ဆာဗာများ။ ယာဉ်ကြောပိတ်ဆို့မှုသည် ၎င်းတို့မှတစ်ဆင့် ဖြတ်သန်းသွားသော်လည်း မည်သည့်အရာကိုမျှ သိမ်းဆည်းထားခြင်းမရှိပါ။
- Apple နှင့် Google Play — ၎င်းတို့၏ကိုယ်ပိုင်စတိုးများတွင် ဝယ်ယူမှုများနှင့် စာရင်းသွင်းမှုများ။
- PostHog — ထုတ်ကုန် ခွဲခြမ်းစိတ်ဖြာမှု- အသုံးပြုသည့်အရာများကို ရေတွက်ခြင်း၊ မည်သည့်အထောက်အထားနှင့်မျှ မသက်ဆိုင်ပါ။
- RevenueCat — စာရင်းသွင်းမှု၏ အခြေအနေ- အသက်ဝင်သည် သို့မဟုတ် သက်တမ်းကုန်ဆုံးပြီး မည်သည့်အစီအစဉ်တွင်လဲ။
တစ်ခုချင်းစီတွင် ၎င်း၏စာကြောင်းတွင် ဖော်ပြထားသည့်အတိုင်း သိမ်းဆည်းထားပြီး vault မှ မည်သည့်အရာမျှ မရှိပါ။ ထုတ်ကုန်တွင် ဖော်ပြသည့်အခါ စာရင်းပြောင်းလဲသွားပြီး ဤအပိုင်းသည် ၎င်းနှင့်အတူ ပြောင်းလဲသွားပါသည်။
အားနည်းချက်ကို တင်ပြခြင်း
ဤနေရာတွင်ဖော်ပြထားသည့်အရာတစ်ခုခုတွင် အားနည်းချက်တစ်ခုခုကို သင်တွေ့ရှိသည်ဟု သင်ယုံကြည်ပါက "လုံခြုံရေး" ခေါင်းစဉ်ဖြင့် hello@assuredauth.com သို့ စာရေးပါ။ ပလက်ဖောင်း၊ အက်ပ်ဗားရှင်းနှင့် အဆင့်များကို ထည့်သွင်းပါ။ သင့်ကိုယ်ပိုင်ဒေတာကို အသုံးပြုကြောင်း သက်သေပြချက်တစ်ခုသည် လုံလောက်ပြီး အခြားသူများ၏ဒေတာနှင့် မစမ်းသပ်ရန် ကျွန်ုပ်တို့ တောင်းဆိုပါသည်။ ကျွန်ုပ်တို့သည် PGP key ကို မပေးဆောင်ပါ။ အစီရင်ခံစာတစ်ခုသည် ရိုးရိုးအီးမေးလ်ဖြင့် မရောက်ရှိသင့်ပါက ပထမဆုံးမက်ဆေ့ချ်တွင် ဖော်ပြပါ၊ ကျွန်ုပ်တို့သည် အခြားနည်းလမ်းဖြင့် စီစဉ်ပေးပါမည်။
ကျွန်ုပ်တို့ ပြန်၍ ကတိပေးသည်မှာ- ကျွန်ုပ်တို့သည် လုပ်ငန်းရက် သုံးရက်အတွင်း အသိအမှတ်ပြုပြီး ကျွန်ုပ်တို့ လုပ်ဆောင်နေစဉ်အတွင်း သင့်အား အသိပေးပါမည်၊ ၎င်းနှင့်ပတ်သက်သည့် မည်သည့်အရာကိုမျှ မထုတ်ဝေမီ အမှန်တကယ်ဖြစ်ပျက်နေသည်များကို ပြင်ဆင်ပေးပါသည်၊ သင့်အား ဂုဏ်ပြုလိုပါက ဤနေရာတွင် သင့်အား ဂုဏ်ပြုပါသည်။ အောက်ဖော်ပြပါ အတိုင်းအတာအတွင်း ကောင်းမွန်သော ယုံကြည်ချက်ဖြင့် ပြုလုပ်ထားသော သုတေသနအပေါ်တွင် ကျွန်ုပ်တို့ တရားစွဲဆိုမည်မဟုတ်ပါ။
အတိုင်းအတာအတွင်း- iOS နှင့် Android အက်ပ်များ၊ နာရီအက်ပ်များ၊ desktop extension၊ assuredauth.com နှင့် ၎င်း၏ API။ အတိုင်းအတာပြင်ပ- App Store နှင့် Google Play ကိုယ်တိုင်၊ အထက်ဖော်ပြပါ ဝန်ဆောင်မှုပေးသူများ၊ မည်သူ့ကိုမဆို လူမှုရေးအင်ဂျင်နီယာနှင့် ဝန်ဆောင်မှုငြင်းပယ်ခြင်း။
လောလောဆယ် ဆုငွေ မရှိပါဘူး။ အစီရင်ခံစာကို ငွေကြေးနဲ့ မဟုတ်ဘဲ ပြင်ဆင်ချက်နဲ့ ကျေးဇူးတင်ကြောင်း ဖော်ပြပြီး ဖြေကြားပေးပါတယ်။