IOS – How does iCloud Keychain store unsecured wifi hotspot information

icloudioskeychainmacos

Setup

  • I connected to an XFINITY wifi hotspot (SSID xfinitywifi) roughly 2 hours ago on my iPhone 5S (iOS 7.1.2). These hotspots require no username or password (unencrypted), but do require authenticating with a Comcast username/password at the captive portal web page after connecting. (image below)

xfinitywifi network information

  • I have iCloud Keychain enabled on my iPhone and on my MacBook Pro (OS X 10.9.4). The information for xfinitywifi was automatically copied to my MacBook Pro. (image below)

OS X wifi network list

  • I have Safari set not to remember usernames and passwords on either device (this is unrelated to wifi and my question below, but I thought it might potentially give clarity to some readers/answerers).

Question

How (or perhaps where) does iCloud store this unsecured hotspot network information for syncing with other devices which have iCloud Keychain enabled, especially devices running OS X?

On encrypted networks, the information is stored in the Keychain Access app as an "AirPort network password" keychain entry. However, there is no entry for xfinitywifi in Keychain Access. I even searched for various other related strings such as comcast, etc. but found no relevant entries (see screenshot below).

Search in Keychain Access

Best Answer

As one can see you have the "Remember Networks this computer has joined" Enabled.

When you join new network, that information is saved in the

com.apple.airport.preferences.plist

located in SystemConfiguration folder.

Obviously iCloud gets that file.

EDIT

Since you asked a new question and want to know how iCloud does that read this. (and click on User defaults database to expand)

Designing for Key-Value Data in iCloud

To store discrete values in iCloud for app preferences, app configuration, or app state, use iCloud key-value storage. Key-value storage is similar to the local user defaults database; but values that you place in key-value storage are available to every instance of your app on all of a user’s various devices. If one instance of your app changes a value, the other instances see that change and can use it to update their configuration.

iCloud

and

iCloud2