Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: Mark Gaiser <markg85@gmail.com>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Subject: Re: [FFmpeg-devel] Would a crypto file be acceptable?
Date: Wed, 21 Dec 2022 17:00:51 +0100
Message-ID: <CAPd6JnF0ZZDc3xBHMNGRucMkE=OPVSHXguJ=EwCKEkUrcCQ22Q@mail.gmail.com> (raw)
In-Reply-To: <CAPd6JnHEYqvDDy3b31ow4DCS8DiQ4U9ei7==3DL-9kEXum2sWw@mail.gmail.com>

On Wed, Dec 21, 2022 at 4:44 PM Mark Gaiser <markg85@gmail.com> wrote:

> Hi,
>
> The ffmpeg crypto protocol handler [1] allows one to play encrypted media.
>
> The great thing here is that it allows playback of any media format that
> ffmpeg supports!
> Have a container format like mkv as an encrypted blob, no problem for the
> crypto plugin!
>
> I'm explicitly mentioning mkv (though there's many more) here because that
> isn't possible in HLS/MPD. While those streaming formats handle encryption
> too, they are very limited in terms of supported codecs and containers.
>
> Playback of encrypted data works like this:
> ffplay encrypted_file -decryption_key $AES_KEY -decryption_iv $AES_IV
>

To amend, a more accurate example of how it currently works is this:
ffplay crypto://encrypted_file -decryption_key $AES_KEY -decryption_iv
$AES_IV


> While this works just fine, it's limited in use because the cryptography
> details have to be passed on the command line. Applications that might well
> support much of ffmpeg functionality can't easily hook into the crypto
> functionality. Take KODI for example, it allows playback of many of the
> formats ffmpeg supports but anything with crypto just isn't possible. In
> fact, anything that requires custom command line arguments isn't possible.
> [2]
>
> My idea is to make a new file format that would be implemented and specced
> within [1]. My proposed format would be:
>
> ---
> CRYPTO-VERSION:1
> CRYPTO-KEY:URI:.....
> CRYPTO-IV:URI:.....
> encrypted_file
> ---
>
> The URI would be a format type identifier where you can choose between URI
> (to pass a URL to a key blob), BASE64URL (key encoded as base64url) or HEX.
>
> The above proposed format should be stored in a file with ".crypto" as
> extension. The crypto plugin [1] would then handle that file. The arguments
> would be filled based on the "properties" in the file. So for example the
> `decryption_key` argument would be populated with the blob returned from
> CRYPTO-KEY:URI:<url>. Or with one of the other types.
>
> The "encrypted_file" would just be passed through ffmpeg's
> "ffurl_open_whitelist" like the crypto plugin currently does. Meaning that
> the file could be anything ffmpeg supports.
>
> Playing encrypted media would be as simple as:
> ffplay file.crypto
>

To amend this too.
The result should be no need to provide "crypto://". The ffmpeg file format
detection should detect that ".crypto" should be handled by the crypto
plugin.


>
> With this mail I'm looking for a confirmation if the above concept would
> be allowed as a patch for ffmpeg? And if not, how can I achieve the same
> results in a way that would be acceptable? [3]
>
> Best regards,
> Mark Gaiser
>
> [1] https://github.com/FFmpeg/FFmpeg/blob/master/libavformat/crypto.c
> [2] there are plugins to make it possible but then you have the extra
> requirement of a plugin
> []3 No, not HLS/MPD! They serve a different purpose. Extending them to
> serve my purpose is a lost goal to begin with so let's not even go there.
>
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

  reply	other threads:[~2022-12-21 16:01 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-21 15:44 Mark Gaiser
2022-12-21 16:00 ` Mark Gaiser [this message]
2022-12-22 19:14   ` Gregor Riepl
2022-12-23  1:26     ` Mark Gaiser
2022-12-23 17:45       ` Gregor Riepl
2022-12-22 10:40 ` Nicolas George
2022-12-22 15:53   ` Mark Gaiser
2022-12-22 17:50     ` Hendrik Leppkes
2022-12-23 11:04 ` Tomas Härdin
2022-12-23 16:31   ` Mark Gaiser
2022-12-23 16:33     ` Nicolas George
2022-12-23 17:00       ` Mark Gaiser
2022-12-23 17:38         ` Nicolas George
2022-12-26 10:58     ` Tomas Härdin
2022-12-26 11:00       ` Nicolas George
2022-12-26 11:18         ` Tomas Härdin
2022-12-26 11:24           ` Nicolas George
2022-12-27 18:24           ` Mark Gaiser
2022-12-27 21:40 ` Michael Niedermayer
2022-12-27 22:46   ` Mark Gaiser
2022-12-28 14:27     ` Ronald S. Bultje
2022-12-28 16:13       ` Mark Gaiser
2022-12-28 16:22         ` Nicolas George
2022-12-28 16:27           ` Mark Gaiser
2022-12-28 16:30             ` Nicolas George
2022-12-28 16:58               ` Mark Gaiser
2022-12-29 14:04         ` Ronald S. Bultje
2022-12-28 21:02     ` Michael Niedermayer
2022-12-29 14:51       ` Mark Gaiser
2022-12-29 22:34         ` Michael Niedermayer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAPd6JnF0ZZDc3xBHMNGRucMkE=OPVSHXguJ=EwCKEkUrcCQ22Q@mail.gmail.com' \
    --to=markg85@gmail.com \
    --cc=ffmpeg-devel@ffmpeg.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git