Decided to mess around with this a bit, and it turned out to be very easy to decrypt them. The file's fingerprint is based on the file contents (section titles, variable names, and values), and is encoded and decoded using the same tables found in rts\Finger. The decryption key is generated from the following string:
"missions/Net/Cache/" + FingerPrint + ".mis", where FingerPrint is the number part grabbed from the filename (e.g.
-1234567890.mis). The rest of the string is constant, regardless of the actual file path or file extension. Since the filename is the only place where the fingerprint value is stored, the file may be unrecoverable if the filename has been modified and the original value is unknown. The filename of the source file (which includes the remaining filepath after "missions\") is only used to check if the client already has that mission file, and plays no part in the fingerprinting or encryption process.
Below is my quick and dirty code I've written to promptly decrypt those files, by manually "loading" them through the in-game multiplayer menu. Since secrets has hundreds of files to process, my half-assed method isn't a very reasonable solution for them, and would benefit from something with more automation. But until that comes around, I think it should at least serve as a decent demo and help understand how the decryption works if someone else wants to work on a tool for this. I don't think I'll get around to it very soon.
Highlighted in red is the surrounding original code to help show where the new code (inside code blocks) is located.
Sorry but you are not allowed to view spoiler contents.