Case study

All work

In-flight entertainment platform for a national Gulf carrier

An Android passenger-entertainment app whose AES-256 encrypted media plays through an in-app local streaming server and is never written to storage decrypted, plus a separate news and digital-magazine system for the carrier's website.

Role
System architect, team lead & lead developer
Encrypted mediaLocal streaming
Encrypted mediaLocal streaming
Illustrative concept, not a product screenshot

Context

A national Gulf carrier wanted an entertainment app for passengers on long journeys, and a news and digital magazine on its website.

Constraints

  • Protected content: media encrypted with AES-256 on the device.
  • Decrypted media never written to storage, so decryption had to happen as the media played.
  • Moderated news: every item checked before it reached the magazine.

Architecture

In-flight entertainment platform for a national Gulf carrier
In-flight entertainment platform for a national Gulf carrier Components by lane. Passenger device: Encrypted media (AES-256); In-app local streaming server (decrypts in memory); Custom video and audio players; Android app (Xamarin.Android). News and digital magazine: Fetch; Moderate; Publish (ASP.NET MVC, Web API). Carrier's website: Digital magazine. Flows: Encrypted media to In-app local streaming server; In-app local streaming server to Custom video and audio players (local URL); Custom video and audio players to Android app; Fetch to Moderate; Moderate to Publish; Publish to Digital magazine. Passenger device News and digital magazine Carrier's website Encrypted media AES-256 In-app local streaming server decrypts in memory Custom video and audio players Android app Xamarin.Android Fetch Moderate Publish ASP.NET MVC, Web API Digital magazine local URL In-flight entertainment platform for a national Gulf carrier Components by lane. Passenger device: Encrypted media (AES-256); In-app local streaming server (decrypts in memory); Custom video and audio players; Android app (Xamarin.Android). News and digital magazine: Fetch; Moderate; Publish (ASP.NET MVC, Web API). Carrier's website: Digital magazine. Flows: Encrypted media to In-app local streaming server; In-app local streaming server to Custom video and audio players (local URL); Custom video and audio players to Android app; Fetch to Moderate; Moderate to Publish; Publish to Digital magazine. Passenger device News and digital magazine Carrier's website Encrypted media AES-256 In-app local streaming server decrypts in memory Custom video and audio players Android app Xamarin.Android Fetch Moderate Publish ASP.NET MVC, Web API Digital magazine local URL
Components and flows

Components

Passenger device
Encrypted media (AES-256)
In-app local streaming server (decrypts in memory)
Custom video and audio players
Android app (Xamarin.Android)
News and digital magazine
Fetch
Moderate
Publish (ASP.NET MVC, Web API)
Carrier's website
Digital magazine

Flows

  • Encrypted media to In-app local streaming server
  • In-app local streaming server to Custom video and audio players (local URL)
  • Custom video and audio players to Android app
  • Fetch to Moderate
  • Moderate to Publish
  • Publish to Digital magazine
  • Android app built with Xamarin.Android.
  • AES-256 encrypted content.
  • In-app local streaming server that decrypts the media and streams it to the custom video and audio players over a local URL; decrypted media is never written to storage.
  • A separate news and digital-magazine system for the carrier (ASP.NET MVC and Web API): news fetched, moderated and published to the magazine on the carrier's website, not to the in-flight entertainment system.

Key decisions

  1. Decrypt inside the app and stream to the players through a local server, rather than decrypting media to storage.

My role

I was the system architect, team lead and lead developer.

Outcome

A passenger-entertainment app whose media stayed encrypted on the device, and a moderated news and digital magazine on the carrier's website.

Stack

Each links to its entry on the stack page

Ask about this

How did the in-flight entertainment app keep its media protected?

Answers come from the content on this site.

The chat needs JavaScript. Without it, ask through the contact page.