SPECIFICATION

The .ssz format, fully documented

A Starkive Secure Container is not a proprietary black box. It is a 132-byte header followed by a standard, WinZip AES-256 encrypted ZIP archive. Everything you need to read or verify one independently is on this page. No Starkive software is required to decrypt your data.

Container layout (version 2)

OffsetSizeContents
04 bytesMagic: 53 53 5A 02 (ASCII SSZ followed by the byte 0x02)
44 bytesFormat version, little-endian uint32. Current version: 2
816 bytesFile token: a GUID (in .NET GUID byte order) identifying this container for open notifications
2432 bytesKDF salt: 32 random bytes from a CSPRNG, unique per container
5636 bytesSender ID: 36 ASCII bytes (a UUID string; zeroed for anonymous web shares)
9232 bytesSHA-256 hash of the encrypted payload (integrity lock)
1248 bytesPayload length in bytes, little-endian int64
132n bytesPayload: a standard ZIP archive encrypted with WinZip AES-256

Key derivation

The password you type is never used directly. It is stretched with PBKDF2-HMAC-SHA256 using the 32-byte salt at offset 24 and 310,000 iterations, producing 32 bytes. Those bytes are hex-encoded and uppercased, and that hex string is the password handed to the WinZip AES-256 layer that seals the payload.

key   = PBKDF2-HMAC-SHA256(password, salt, iterations = 310000, length = 32)
zipPw = UPPERCASE(HEX(key))          // 64 hex characters
payload is a ZIP encrypted with WinZip AES-256 using zipPw

Integrity

The 32 bytes at offset 92 are the SHA-256 hash of the encrypted payload. Readers verify this before attempting decryption; any modification of the payload is detected. This makes a container tamper evident: changes cannot be hidden, though the format does not prevent someone from destroying a file they possess.

Open notifications

The file token at offset 16 is a random UUID with no personal data in it. When a Starkive app opens a container, it may report that token to our service so the sender gets their open alert. Decryption itself is fully offline: the token report is a courtesy signal, not a requirement, and the payload never leaves your device.

Reading a container yourself

Any language with PBKDF2 and a WinZip AES-256 capable ZIP library can open a .ssz file. In practice: read the salt at offset 24, derive the hex password as above, strip the first 132 bytes, and hand the rest to your ZIP library. Python users can do this with cryptography and pyzipper; JavaScript users with the WebCrypto API and zip.js, which is exactly what this website does for one-time secret links.

Questions about the format, or found an inconsistency between this page and the implementation? Email [email protected]. This specification is versioned with the apps; the current container version is 2.