About WebRTC 😊
WebRTC is a free, open project that provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC components have been optimized to best serve this purpose.
Our mission: To enable rich, high-quality RTC applications to be developed for the browser, mobile platforms, and IoT devices, and allow them all to communicate via a common set of protocols.
WebRTC Usage In Flink OTT
Ok, to be honest, there are a lot of good explanations of what WebRTC is. As this is the documentation for Strive's Flink OTT, let's focus on how and why WebRTC is used so heavily by our product.
Basically, what WebRTC allows is establishing a direct connection between end devices and communicate (almost) without any central server infrastructure involved. Flink OTT uses WebRTC as a core technology for data exchange between viewers of a live video stream.
As the main goal of Flink OTT is to reduce a broadcasting company's bandwidth requirements for live video streaming, the WebRTC data channels are heavily used for content delivery between end-user devices.
One of the typical objections we get when explaining our technology is a lack of security when using Peer-To-Peer technology. Companies are often worried about the integrity and security of their content - and they should. Video piracy is a big threat to digital media companies. This is why we take secure data transmission as serious as our customers do.
To build a rock-solid security layer around Flink OTT's WebRTC network, we took the following actions:
- 100% Encrypted Content. All video content that is exchanged between peers via WebRTC will be completely encrypted by the Flink OTT Client SDK. Peers generate a mutual symmetric encryption key via a Diffie-Hellman Key Exchange and use this key to encrypt each piece of content with AES 128.
- Authentication by definition Although Flink OTT creates a Peer-To-Peer network, joining the network requires a unique key. When using the Flink OTT Client SDK, users will have to authorize themselves with this key. If your content can only be watched after a successful authorization (login), users will only receive the Flink OTT authorization key after the authorization process.
- Client-Side Content Verification Flink OTT can provide digital signatures for each sub-chunk of a video segment. This means that peers are not able to alter content even after a successful authorization. The Flink OTT Client SDK will verify each received data block with a digital signature that it received from our Flink OTT backend servers. If a data block does not match the given signature, Flink OTT will immediately report the sending client. If the backend servers detect multiple reports for a single node, it will be excluded from the Peer-To-Peer network automatically.
Native Support With Pion WebRTC
One particular challenge when using WebRTC across multiple platforms and devices is the support of WebRTC. Can I Use gives a good overview of the current support of WebRTC within modern browsers. However, native WebRTC support for programming languages and platforms is still the topic of various development projects.
One of those projects is Pion WebRTC, a full re-implementation of the WebRTC API in pure Golang. Since Flink OTT is mostly built in Golang itself, we found it very helpful to use Pion WebRTC as our base library for native device support of Flink OTT.