iOS VPN പ്രൊഫൈൽ: പാസ്വേഡ് അല്ല, passwordReference
കീചെയിൻ റഫറൻസ് ഒരു ഹാൻഡിൽ ആണ്, രഹസ്യമല്ല. ബൈറ്റുകൾ കൈമാറുന്നത് -50 പിശകും റീബൂട്ട് പരാജയവും സംഭരിച്ച VPN പ്രൊഫൈലുകളിലെ റൊട്ടേഷൻ കെണിയും വിശദീകരിക്കുന്നു.
നിങ്ങൾ ഒരു പ്രൊഫൈൽ ഇൻസ്റ്റാൾ ചെയ്യുന്നു, ടണൽ ഉയരുന്നു, എല്ലാം പൂർത്തിയായതായി തോന്നുന്നു. പിന്നീട് ഫോൺ റീബൂട്ട് ചെയ്യുന്നു, on-demand മുൻവശത്ത് ആപ്പ് ഇല്ലാതെ കണക്ഷനെ ഉണർത്തുന്നു, ടണൽ ആരംഭിക്കാൻ വിസമ്മതിക്കുന്നു. പ്രൊഫൈൽ ഇപ്പോഴും ഉണ്ട്, പാസ്വേഡും ഇപ്പോഴും ശരിയാണ്, അതുകൊണ്ടാണ് ഈ പരാജയം ആളുകളെ തെറ്റായ സ്ഥലത്ത് തിരയാൻ അയക്കുന്നത്. Network Extension-ന് പ്രൊഫൈലിൽ നിന്ന് നിങ്ങളുടെ രഹസ്യം വായിക്കാൻ കഴിയില്ല: സ്വയം പരിഹരിക്കാൻ കഴിയുന്ന ഒരു കീചെയിൻ റഫറൻസ് അതിന് വേണം.
താഴെയുള്ള ഗൈഡ് ആ കൈമാറ്റത്തിലൂടെ ഒരു കണക്ഷൻ ശ്രമത്തെ പിന്തുടരുന്നു, റഫറൻസ് നിർമ്മിക്കുന്ന ക്വറിയിൽ നിന്ന് അത് പരീക്ഷിക്കുന്ന റീബൂട്ട് വരെ.
പ്രൊഫൈൽ ഹാൻഡിൽ സൂക്ഷിക്കുന്നു, രഹസ്യമല്ല
NEVPNProtocol ഒരു കാരണത്താൽ passwordReference-ഉം sharedSecretReference-ഉം വെളിപ്പെടുത്തുന്നു. ഡീമൺ ഒരു ടണൽ തുടങ്ങുമ്പോൾ അത് നിങ്ങളുടെ പ്രോസസ്സിനുള്ളിൽ പ്രവർത്തിക്കണമെന്നില്ല, അതിനാൽ നിങ്ങളുടെ കോഡ് വിളിച്ച് പാസ്വേഡ് ചോദിക്കാൻ കഴിയില്ല. സ്ഥിരമായ ഒരു കീചെയിൻ റഫറൻസ് വായിക്കുന്നു, സ്വന്തം സന്ദർഭത്തിൽ അത് പരിഹരിക്കുന്നു, ഇനം സ്വയം കൊണ്ടുവരുന്നു.
ആ റഫറൻസ് കീചെയിനോട് ചോദിച്ചാണ് നിർമ്മിക്കുന്നത്, ഇത് ഡാറ്റ ചോദിക്കുന്നതിൽ നിന്ന് വ്യത്യസ്തമായ അഭ്യർത്ഥനയാണ്:
let query: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrService as String: "vpn-credentials",
kSecAttrAccount as String: "user",
kSecReturnPersistentRef as String: true,
kSecMatchLimit as String: kSecMatchLimitOne
]തിരികെ ലഭിച്ച ഒബ്ജക്ട് പ്രോട്ടോക്കോളിന് നൽകുക, ഇനത്തിന്റെ ഡാറ്റയല്ല. പ്രായോഗികമായി രഹസ്യം എവിടെ താമസിക്കുന്നു എന്ന് പ്രൊഫൈൽ രേഖപ്പെടുത്തുന്നു, അതുകൊണ്ടാണ് കോൺഫിഗറേഷന്റെ ബാക്കപ്പ് പാസ്വേഡ് നിശബ്ദമായി plist-ലേക്ക് പകർത്താത്തത്.
API എന്തുകൊണ്ട് -50 എന്ന് മറുപടി നൽകുന്നു
errSecParam എന്നാൽ ആ പ്രവർത്തനത്തിന് അഭ്യർത്ഥനയോ മൂല്യമോ തെറ്റായി രൂപപ്പെട്ടിരുന്നു എന്നാണ്, റഫറൻസ്, ഡാറ്റ അഭ്യർത്ഥനകൾ കൂട്ടിക്കലരുമ്പോൾ ഏറ്റവും കൂടുതൽ കാണുന്ന പിശക് അതാണ്. സ്വീകരിക്കുന്ന കോഡ് റഫറൻസ് പ്രതീക്ഷിക്കുമ്പോൾ ഡാറ്റ ചോദിക്കുക, passwordReference-ലേക്ക് അസംസ്കൃത ബൈറ്റുകൾ നൽകുക, ആപ്പിന് ഉപയോഗിക്കാൻ കഴിയാത്ത ആക്സസ് ഗ്രൂപ്പിനൊപ്പം ക്വറി ചെയ്യുക, എല്ലാം അത് സൃഷ്ടിക്കുന്നു.
റാപ്പർ ലൈബ്രറികൾ ഇതിന് ക്ഷണിക്കുന്നു. ബൈറ്റുകൾ തിരികെ നൽകുന്ന സഹായി റഫറൻസ് തിരികെ നൽകുന്നതുമായി പകരം വയ്ക്കാനാകില്ല, അതിനാൽ പരിഹാരം പലപ്പോഴും മറ്റൊരു പാസ്വേഡല്ല, മറ്റൊരു ക്വറിയാണ്.
അതേ പൊരുത്തക്കേട് പരാതിയില്ലാതെ സംഭരിച്ചിട്ട് പിന്നീട് കണക്ട് ചെയ്യാത്ത പ്രൊഫൈലിനെ വിശദീകരിക്കുന്നു: സംഭരിച്ചത് ബ്ലോബ് ആണ്, ഹാൻഡിൽ അല്ല, ഡീമണിന് പരിഹരിക്കാൻ ഒന്നുമില്ല.
നന്നായി സംഭരിക്കുന്നു, കണക്ഷൻ സമയത്ത് പരാജയപ്പെടുന്നു
സംഭരണം നിങ്ങളുടെ ആപ്പിന്റെ സന്ദർഭം വ്യായാമം ചെയ്യിക്കുന്നു. കണക്ഷൻ ഡീമണിന്റേത്, രണ്ടിനും ഒരേ പ്രവേശനമല്ല. അതിനാൽ പ്രൊഫൈൽ സിമുലേറ്ററിൽ നിങ്ങൾ നടത്തുന്ന എല്ലാ പരിശോധനയും കടന്ന് ആദ്യ on-demand തുടക്കത്തിൽ പരാജയപ്പെടാം.
റീബൂട്ട് ലക്ഷണത്തിന്റെ ആകൃതിയും ഇതുതന്നെ: ആപ്പ് തുറന്നിരിക്കുന്നിടത്തോളം പ്രവർത്തിക്കുന്നു, സിസ്റ്റം സ്വയം ടണൽ തുടങ്ങുമ്പോൾ മരിക്കുന്നു.
വിതരണത്തിന് മുമ്പ് പശ്ചാത്തല പാത ബോധപൂർവം പരിശോധിക്കുക. ആപ്പ് അടച്ചിരിക്കെ on-demand കണക്ഷൻ ഉണർത്തുക, പിന്നീട് ആപ്പ് ലോഗ് അല്ല, ഉപകരണ കൺസോൾ വായിക്കുക, കാരണം റഫറൻസ് പരിഹരിക്കാൻ ശ്രമിച്ച പ്രോസസ്സാണ് പരാജയം രേഖപ്പെടുത്തുന്നത്. കൺസോൾ ഡീമൺ ഇനം നിരസിക്കുന്നു എന്ന് കാണിച്ചാൽ, റഫറൻസ് കുഴപ്പമില്ല, പ്രശ്നം ഇനത്തിന്റെ പ്രവേശനക്ഷമതയാണ്.
റീബൂട്ട് പ്രവർത്തിക്കുമോ എന്ന് പ്രവേശനക്ഷമത തീരുമാനിക്കുന്നു
ടണൽ തുടങ്ങുന്ന ഏത് സിസ്റ്റം പ്രോസസ്സിനും ഇനം വായിക്കാവുന്നതായിരിക്കണം, ആപ്പ് മുൻവശത്തിരിക്കുമ്പോഴുള്ളതിനേക്കാൾ ഇത് വിശാലമായ പ്രേക്ഷകരാണ്. ആ നിയന്ത്രണമാണ് നിങ്ങൾക്കായി പ്രവേശനക്ഷമതാ ആട്രിബ്യൂട്ട് തിരഞ്ഞെടുക്കുന്നത്. ആദ്യ അൺലോക്ക് വരെ സംരക്ഷിച്ച ഇനം ഉപകരണം ഒരിക്കൽ അൺലോക്ക് ചെയ്തതിന് ശേഷം പശ്ചാത്തല തുടക്കത്തിന് ലഭ്യമാണ്; ഉപകരണം ഇപ്പോൾ അൺലോക്ക് ആയിരിക്കണമെന്ന് ആവശ്യപ്പെടുന്ന ഇനം ലഭ്യമല്ല.
കർശനമായ ക്ലാസ് തിരഞ്ഞെടുക്കുന്നത് പ്രലോഭനീയമാണ്, അതുതന്നെയാണ് ലോക്ക് ചെയ്ത ഫോണിൽ on-demand പ്രൊഫൈൽ തകർക്കുന്നത്.
ക്ലാസ് മാറ്റിയ ശേഷം നിലവിലുള്ള ഇനത്തിന്റെ ആട്രിബ്യൂട്ടുകൾ എഡിറ്റ് ചെയ്യാതെ ഇനം വീണ്ടും സൃഷ്ടിക്കുക, പിന്നീട് പുതിയ റഫറൻസോടെ പ്രോട്ടോക്കോൾ വീണ്ടും സംഭരിക്കുക. നിലവിലുള്ള ഇനത്തിലെ ആട്രിബ്യൂട്ട് മാറ്റങ്ങൾ ഡോക്യുമെന്റേഷൻ സൂചിപ്പിക്കുന്ന പെരുമാറ്റം എപ്പോഴും നൽകുന്നില്ല, വീണ്ടും നിർമ്മിച്ച ഇനം സംശയം ഒഴിവാക്കുന്നു.
റൊട്ടേഷൻ എന്നത് സംഭരിച്ച പ്രൊഫൈലുകൾ ചീയുന്ന സ്ഥലമാണ്
കീചെയിനിലെ പാസ്വേഡ് മാറ്റുന്നത് സംഭരിച്ച പ്രൊഫൈൽ എന്തിനെ സൂചിപ്പിക്കുന്നു എന്നത് സ്വയമേവ മാറ്റുന്നില്ല. ഇനം ഇല്ലാതാക്കുന്നത് കൂടുതൽ മോശമാണ്: പ്രൊഫൈൽ ഇനി ഇല്ലാത്ത ഒന്നിനെ റഫർ ചെയ്ത് സൂക്ഷിക്കുന്നു, പരാജയം പ്രാമാണീകരണ നിരസനം പോലെ തോന്നുന്നു.
ഒരേ ക്രമത്തിൽ റൊട്ടേറ്റ് ചെയ്യുക. ഇനം അപ്ഡേറ്റ് ചെയ്യുക, പുതിയ സ്ഥിരമായ റഫറൻസ് ക്വറി ചെയ്യുക, പ്രോട്ടോക്കോൾ വീണ്ടും സംഭരിക്കുക, പിന്നീട് ആപ്പ് അടച്ചിരിക്കെ കണക്ട് ചെയ്ത് ഡീമണിന് ഇപ്പോഴും അത് പരിഹരിക്കാനാകുമെന്ന് തെളിയിക്കുക. ഉപയോക്തൃ പാസ്വേഡും പങ്കിട്ട രഹസ്യവും വെവ്വേറെ ഇനങ്ങളിൽ സൂക്ഷിക്കുക, ഓരോന്നും സ്വന്തം ഷെഡ്യൂൾ പ്രകാരം കറങ്ങാൻ, ക്വറി നിഘണ്ടുവോ റഫറൻസോ ഒരിക്കലും ലോഗ് ചെയ്യരുത്. ഹാൻഡിൽ രഹസ്യമല്ല, പക്ഷേ അതിലേക്കുള്ള ഭൂപടമാണ്.