[media-types] Re: [IANA #1444004] application/prs.bw tc32key registration request

"Murray S. Kucherawy" <[email protected]>
Newsgroups gmane.ietf.types
Message-ID <CAL0qLwamge7Aa+cGW04TENw+a3wWxY=5Vy8FVpkZhCLAo7a83g@mail.gmail.com>
He can append that to my "For security transparency, note that ..."
paragraph above.  Still approved if that's acceptable.

-MSK

On Sat, Mar 14, 2026 at 8:05 AM Amanda Baber via RT <
[email protected]> wrote:

> Hi Murray,
>
> One more thing: "Another factor is that it should be mentioned that the
> AES256-CTR type used is the one that uses the counter in making the IV, in
> addition to the rest of that addendum to the considerations."
>
> Should this be added somewhere?
>
> thanks,
> Amanda
>
> On Thu Mar 12 00:38:34 2026, [email protected] wrote:
> > On Thu, Mar 5, 2026 at 3:14 PM Sabrina Tanamal via RT <
> > [email protected]> wrote:
> >
> > > They also sent the following note:
> > >
> > > For security transparency, I should also note that the nested magic
> > > numbers serve as a means of not decoding something corrupted or
> > > bogus, but
> > > they aren't proper CRC hashes or simple checksums like are usually
> > > used for
> > > integrity checking, even though each is the size of a CRC32. Also,
> > > using a
> > > random value (less ideal than the clock, but an LFSR value is usable)
> > > for
> > > the counter instead of the clock or as a salt doesn't work either.
> > >
> >
> > I've worked that in below; it's approved with this change assuming he
> > has
> > nothing further.
> >
> > -MSK
> >
> > ===
> > >
> > > Does this change anything?
> > >
> > > Thanks,
> > > Sabrina (filling in for Amanda)
> > >
> > > On Thu Mar 05 14:53:08 2026, [email protected] wrote:
> > > > One minor change and I think this is good to go.
> > > >
> > > > -MSK
> > > >
> > > > On Thu, Feb 26, 2026 at 12:02 PM Amanda Baber via RT <
> > > > [email protected]> wrote:
> > > >
> > > > > Name: Raja Fjords
> > > > >
> > > > > Email: [email protected]
> > > > >
> > > > > Media type name: application
> > > > >
> > > > > Media subtype name: prs.bwtc32key
> > > > >
> > > > > Required parameters:
> > > > >
> > > > > * "charset"; as specified in RFC2045 for "text" types
> > > > >
> > > > > * "password" (required for the NodeJS port or to encrypt); a
> > > > > string
> > > > > expressed in UTF-8.
> > > > >
> > > > > * "decoded-filename" (Stores the filename of a decoded file that
> > > > > has
> > > > > yet
> > > > > to be downloaded, defaults to "output.bin" in the HTML5 version);
> > > > > a
> > > > > string
> > > > > expressed in UTF-8.
> > > > >
> > > > > * "encoded-filename" (Stores the filename of an encoded file that
> > > > > has
> > > > > yet
> > > > > to be downloaded, defaults to "myFile.B3K" in the HTML5
> > > > > version.); a
> > > > > string
> > > > > expressed in UTF-8.
> > > > >
> > > > > Essentially, as a text-based (albeit Unicode) format, though
> > > > > canonically
> > > > > UTF-16BE, BWTC32Key's output text CAN have multiple byte
> > > > > representations
> > > > > given how varied Unicode UTFs are (even UTF-9 and Lotus Multi-
> > > > > Byte
> > > > > Character Set, which are not exactly mainstream UTFs), so it
> > > > > would be
> > > > > prudent to involve a "charset" parameter. The encoder in the
> > > > > original
> > > > > HTML5
> > > > > implementation has "Compression Level"/"compression-level"
> > > > > default as
> > > > > "9",
> > > > > relying on HTML's ability to have a default value in a <number>
> > > > > tag.
> > > > > For
> > > > > the NodeJS port it is strongly advised to specify a level (given
> > > > > argument
> > > > > placeholders in NodeJS in this situation being messy) and a
> > > > > password
> > > > > is
> > > > > needed. The Compression Level can be any value that can result in
> > > > > an
> > > > > integer when multiplied by 100,000, though negatives and 0 are
> > > > > unwise, as
> > > > > are extremely high values well past 9. Basically, the section in
> > > > > the
> > > > > BWTC
> > > > > part (so pre-Base32768 and pre-AES256-CTR) has a finite length
> > > > > for
> > > > > its
> > > > > storage of the Compression Level.
> > > > >
> > > > > Optional parameters:
> > > > >
> > > > > * "password" (required for the NodeJS port or to encrypt); a
> > > > > string
> > > > > expressed in UTF-8.
> > > > >
> > > > > * "compression-level"; requires an integer or floating point
> > > > > value
> > > > > with no
> > > > > more than six digits of precision, is 9 by default in the HTML5
> > > > > version,
> > > > > MUST be specified in the NodeJS version.
> > > > >
> > > > > * "decoded-mediatype" (Stores the media type of a decoded file
> > > > > that
> > > > > has
> > > > > yet to be downloaded, is by default "application/octet-stream" in
> > > > > the
> > > > > HTML5
> > > > > version); a string expressed in US-ASCII.
> > > > >
> > > > > The password, like a non-default Compression Level, is optional
> > > > > in
> > > > > the
> > > > > original HTML5 implementation of BWTC32Key. The default password
> > > > > value in
> > > > > the HTML5 version is "Enter a password here before uploading."
> > > > > (even
> > > > > though
> > > > > the code in that implementation is entirely client-side), due to
> > > > > implementation reasons, and it is used for "unencrypted" (the
> > > > > encryption
> > > > > never truly is skipped) files, due to that statement being
> > > > > treated as
> > > > > a
> > > > > password if not overwritten, so it is in essence a default
> > > > > password
> > > > > that
> > > > > should be factored into decoders.
> > > > >
> > > >
> > > > > Also, BWTC32Key uses SHA256 to turn the UTF-8 password into the
> > > > > AES256-CTR
> > > > > key so a blank password will also work as an unencrypted one
> > > > > (though
> > > > > not to
> > > > > the obsolete 2019 version of the HTML5 implementation, which
> > > > > follows
> > > > > the
> > > > > above paragraph but due to a bug behaves as "unencrypted" as
> > > > > described in
> > > > > that paragraph no matter what password value is used) using
> > > > > spaces or
> > > > > tabs
> > > > > for "blank" passwords is permitted, as are newlines in the HTML5
> > > > > version).
> > > > >
> > > > > The password is UTF-8. The code already hashes the password, so
> > > > > the
> > > > > parameter IS the password, *not* a hash of it. There are NO
> > > > > length
> > > > > limits
> > > > > on passwords.
> > > > >
> > > > > It is possible to specify a MIMEtype for what the browser will
> > > > > save
> > > > > when
> > > > > decoding (What this means is that the filename and MIME type of
> > > > > the
> > > > > decoded
> > > > > file are set by the user, because they are NOT stored in the
> > > > > file),
> > > > > but in
> > > > > the HTML5 version it defaults to "application/octet-stream", and
> > > > > that
> > > > > same
> > > > > decoded file's default filename is "output.bin". The output
> > > > > filename
> > > > > MUST
> > > > > be specified in the NodeJS version. The HTML5 version is where
> > > > > the
> > > > > MIME
> > > > > types are most relevant.
> > > > >
> > > > > The way the encoded-filename parameter works is that saving a
> > > > > .B3K
> > > > > file
> > > > > from encoded output is done as a file with "myFile.B3K" as its
> > > > > name
> > > > > by
> > > > > default in the HTML5 version (it can be changed to anything, and
> > > > > it
> > > > > MUST be
> > > > > specified in the NodeJS version), and in the case of the HTML5
> > > > > version it
> > > > > DOES try to tell browsers it is a UTF-16BE text document to
> > > > > ensure
> > > > > that it
> > > > > is handled as text.
> > > > >
> > > > > Encoding considerations: binary
> > > > >
> > > > > This format is special in that it IS 8-bit *text* (specifically
> > > > > UTF-
> > > > > 16BE,
> > > > > at least that is the INTENDED form of Unicode for this) used to
> > > > > store
> > > > > AES256-CTR encrypted BWT-compressed data as common Unicode
> > > > > characters
> > > > > with
> > > > > up to 93.75% efficiency on just the binary-to-text component
> > > > > alone.
> > > > > None of
> > > > > its components already exist in the list of MIME types.
> > > > >
> > > > > The most important part of the above is that the format's space
> > > > > savings
> > > > > benefit MOST (as in, the binary-to-text encoding used gets its
> > > > > full
> > > > > 93.75%
> > > > > efficiency; the character set doesn't change how the compression
> > > > > or
> > > > > encryption steps work, and in fact those work just as well
> > > > > regardless
> > > > > of
> > > > > what UTF they are asked to compress) when the character set used
> > > > > to
> > > > > store
> > > > > BWTC32Key strings is UTF-16, and by default it is UTF-16BE.
> > > > >
> > > > > Security considerations: The AES256-CTR implementation used has
> > > > > quirks and
> > > > > they make correct (good AES256-CTR practice) usage consisting of
> > > > > assigning
> > > > > the counter value to the current time cause the issue of making
> > > > > decryption
> > > > > not work. The encryption key is generated from a UTF-8 password
> > > > > of
> > > > > any
> > > > > length via non-HMAC SHA256. The decompression buffer being
> > > > > uncapped
> > > > > could
> > > > > create overflows even though it does allow large files.
> > > > >
> > > > > In regards to whether this media type has active or executable
> > > > > content, it
> > > > > does not. It's a file compressor that takes in one file at a time
> > > > > (unless
> > > > > TAR is used) and doesn't store its name or attributes.
> > > > >
> > > > > This program doesn't have privacy protection or integrity
> > > > > checking
> > > > > services.
> > >
> >
> > (Insert this text here, as part of Security Considerations)
> >
> > For security transparency, note that the nested magic numbers serve as
> > a
> > means of not decoding something corrupted or bogus, but they aren't
> > proper
> > CRC hashes or simple checksums like are usually used for integrity
> > checking, even though each is the size of a CRC32. Using a random
> > value
> > (less ideal than the clock, but an LFSR value is usable) for the
> > counter
> > instead of the clock or as a salt doesn't work either.
> >
> > > >
> > > > > Interoperability considerations: This program is cross-platform
> > > > > but
> > > > > it
> > > > > does require Unicode support and favors UTF-16BE. The characters
> > > > > used
> > > > > are
> > > > > well behaved. I've sent it and developed and tested it across all
> > > > > platforms
> > > > > in modern use.
> > > > >
> > > >
> > > > Please change the last sentence to "It has been developed and
> > > > tested
> > > > across
> > > > all platforms in modern use".
> > > >
> > > >
> > > > > Published specification: In this case,
> > > > > fileformats.archiveteam.org's
> > > > > wiki
> > > > > article on it fits, as does https://github.com/stgiga/bwtc32key
> > > > > (the
> > > > > actual source code)
> > > > >
> > > > > Applications which use this media: File compression programs.
> > > > >
> > > > > Fragment identifier considerations: None
> > > > >
> > > > > Restrictions on usage: None
> > > > >
> > > > > Provisional registration? (standards tree only): N/A
> > > > >
> > > > > Additional information:
> > > > >
> > > > > 1. Deprecated alias names for this type: N/A
> > > > > 2. Magic number(s): 0:0xFEFF4D00, 4:"bwtc", 8:"nomo", 12:"dfsm",
> > > > > 16:"fenw", 20:0x4D01
> > > > > 3. File extension(s): .B3K
> > > > > 4. Macintosh file type code: ".B3K"
> > > > > 5. Object Identifiers: N/A
> > > > >
> > > > > General Comments: The file type has been documented on the File
> > > > > Formats
> > > > > Wiki (by Archive Team) as well as on Github at
> > > > > https://github.com/stgiga/bwtc32key but the File Formats Wiki
> > > > > entry
> > > > > (which has changed URLs but is searchable on Google in part due
> > > > > to
> > > > > its
> > > > > distinct name) is most detailed. Further information on it at
> > > > > https://stgiga.itch.io/bwtc32key where it is mirrored.
> > > > >
> > > > > MOST importantly (magic numbers ARE important) the file extension
> > > > > is
> > > > > .B3K
> > > > > and this format's files have 0xFEFF4D00 as the file header and
> > > > > 0x4D01
> > > > > as
> > > > > the end marker (all assuming UTF-16BE). Inside the compression
> > > > > step
> > > > > there
> > > > > are the ASCII magic numbers of "bwtc" (assuming successful
> > > > > decoding
> > > > > with
> > > > > the correct key), and the block size divided by 100,000 followed
> > > > > by "
> > > > > nomo" (short for NoModel), and if the compression level is 5 or
> > > > > higher,
> > > > > the magic number "fenw" (referring to Fenwick Trees), but if less
> > > > > than 5,
> > > > > the magic number for this fast mode is "dfsm" (short for
> > > > > Deferred-
> > > > > Sum). A
> > > > > successful decode has to go through all this, so corruption is
> > > > > fairly
> > > > > easy
> > > > > to weed out.
> > > > >
> > > > > Person to contact for further information:
> > > > >
> > > > > 1. Name: Raja Fjords
> > > > > 2. Email: [email protected]
> > > > >
> > > > > Intended usage: N/A
> > > > >
> > > > > Author/Change controller: Raja Fjords, [email protected]
> > >
> > >
>
>

_______________________________________________
media-types mailing list -- [email protected]
To unsubscribe send an email to [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.