You know about the most pressing security risks your app faces and how to address those risks. You can now learn how to use the one control that protects data better than any other: encryption.


  • Data persistence, part 2 Video — 00:14:11
    • In this segment, we learn how to use Keychain to safely store secrets in your local device. We also learn various ways to save data to the device’s local disk.

  • Activity: Preparing for encryption Video — 00:04:02
    • In this activity, we use CocoaPods to install a popular third-party cryptographic library into our app.

  • Core Data Video — 00:11:55
    • In this segment, we study the classic iOS storage system, Core Data, including its architecture and components, and how to use it in your app.

  • Activity: Adding salt to a password hash Video — 00:08:49
    • In this activity, we continue with the same app to add randomization (salt) to the password hash.

  • Activity: Save user secrets in Keychain Video — 00:08:49
    • In this activity, securely store a username and password in Keychain and prove that the credentials can no longer be found in a cleartext file.

  • Encryption overview, part 2 Video — 00:08:49
    • In this segment, we learn about the public-key infrastructure and what digital certificates are. We also learn how to use various encryption libraries to encrypt our data.

  • Activity: Hashing Passwords Video — 00:08:49
    • In this activity, we revisit a previous app to understand how to hash a password.

  • Activity: Verifying a username and password, part 2 Video — 00:09:07
    • In this activity, we continue to validate that our code can retrieve a saved credential.

  • KeyChain Video — 00:09:07
    • In this segment, we learn how to implement Keychain in Swift, including how to share Keychain data across multiple devices.

  • Activity: Saving a username and password Video — 00:12:34
    • In this activity, we use an unsafe but commonly used mechanism to store user credentials.

  • Data persistence Video — 00:13:23
    • In this segment, we learn what data persistence is, what constitutes sensitive data and how to use Core Data with SQLite to store your data locally.

  • Activity: Exploring the iOS file system Video — 00:08:32
    • In this activity, we examine and browse the file system of an actual jailbroken iPhone. We exploit a common vulnerability to make an unauthorized network connection, hunting for user files we can steal from the device.

  • iOS Storage overview Video — 00:08:20
    • In this segment, we examine the iOS directory structure, including how an app’s sandbox relates to the rest of the file system.

  • Activity: Generating random values Video — 00:08:49
    • In this activity, we practice using Swift’s random(in:) function to create random values and shuffle arrays and sequences.

  • Activity: Preparing to use Keychain Video — 00:09:07
    • In this activity, we prove that our previous method for storing a username and password is completely insecure. We the use CocoaPods to install a popular third-party library ‘wrapper’ in preparation to use Keychain.

  • Encryption overview Video — 00:14:06
    • In this segment, we learn cryptography concepts. These include symmetric, asymmetric and hashing algorithms.

  • Hashing Video — 00:11:58
    • In this segment, we learn various ways to implement hashing in Swift, including using a random number generator to salt the hash.

  • Activity: Verifying a username and password Video — 00:12:26
    • In this activity, we validate that we can retrieve the username and password that we previously saved.


Course description

When considering a multilayer strategy for protecting user data, you should always start with the data itself. Encryption protects data whether it is at rest, in transit, or in use. In this course, you will learn about the iOS file system, how and where data can be saved, and how to protect that data wherever it is found. You will examine a common mistake developers make when handling user credentials. You will then learn how to leverage built-in iOS functionality to safely store and retrieve credentials. You will learn how to validate user credentials in your app, ensuring that at an app level they are difficult to compromise.

Meet the author

Chrys Thorsen is a technology and education consultant with 25 years of experience. Her work has taken her around the U.S. and overseas, including as a contractor for the CDC using technology to help fight HIV/AIDS in Africa.

During her career, she has acquired 40 IT certifications, authored over 25 textbooks on a wide range of IT subjects, including secure iOS and Android coding, and created an equal number of IT-related video courses. When not working, Chrys enjoys reading scientific articles and experimenting with Internet-of-Things devices. She currently lives in Virginia with her sister, her cat and her dog which, as she describes it, “have the worst sibling rivalry imaginable.”

You're in good company


We use Infosec Skills to provide continuous training to our technicians and to prepare them for various certifications. Infosec Skills allows us to create personalized training programs that focus on each of our technicians’ particular roles and see their progress as they take courses. We also, recommend it to clients to make their IT support teams better.

Caleb Yankus


This has been utilized to bridge the skills gap across our cyber team and to aid them as they prepare for their various certifications. It also has provided a nice learning foundation for our various cyber team members to utilize as we continue to find ways for cross-utilization with operations while minimizing the downtime needed to ensure everyone’s knowledge is the same.

Daniel Simpson


We use Infosec Skills to provide base level knowledge for employees. We also use the services to provide in depth learning for employees as they encounter new technologies. If an employee is is assigned to a new project, we can rely on Infosec Skills to provide a rapid concentrated learning environment. This rapid concentrated learning positions our employees for success.

Infosec Skills Teams client

Plans & pricing

  • Infosec Skills Personal

    $299 / year

    • 190+ role-guided learning paths (e.g., Ethical Hacking, Threat Hunting)
    • 100s of hands-on labs in cloud-hosted cyber ranges
    • Custom certification practice exams (e.g., CISSP, Security+)
    • Skill assessments
    • Infosec peer community support
  • Infosec Skills Teams

    $799 per license / year

    • Team administration and reporting
    • Dedicated client success manager
    • Single sign-on (SSO)
      Easily authenticate and manage your learners by connecting to any identity provider that supports the SAML 2.0 standard.
    • Integrations via API
      Retrieve training performance and engagement metrics and integrate learner data into your existing LMS or HRS.
    • 190+ role-guided learning paths and assessments (e.g., Incident Response)
    • 100s of hands-on labs in cloud-hosted cyber ranges
    • Create and assign custom learning paths
    • Custom certification practice exams (e.g., CISSP, CISA)
    • Optional upgrade: Guarantee team certification with live boot camps

Unlock 7 days of free training

  • 1,400+ hands-on courses and labs
  • Certification practice exams
  • Skill assessments

Award-winning training that you can trust

Comprehensive Cybersecurity Training - Infosec Skills
Cybersecurity Education and Training Gold Award - Infosec IQ
Top Rated Award - Infosec Skills
2021 G2 Summer - Leader - Tech Skills Dev, Online Course, eLearning Content
Top 20 Company - Online Learning Library