Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rbxl format: Signature data #10

Open
Anaminus opened this issue Mar 23, 2022 · 1 comment
Open

rbxl format: Signature data #10

Anaminus opened this issue Mar 23, 2022 · 1 comment

Comments

@Anaminus
Copy link
Member

Anaminus commented Mar 23, 2022

Present in several Roblox-sourced binary models are structures related to content validation. There appear to be two separate implementations:

Encryption-based

  • Script Source properties are encoded with type 0x1D instead of the usual string type. The remaining content appears to be encrypted.
  • A SIGN chunk is present, which presumably contains a signature used to decrypt the encrypted-string type.
  • Appears to be no longer used, likely in favor of the more-robust signature-based method.

Signature-based

  • Script Source properties are encoded as usual.
  • A SIGN chunk is present, which presumably contains a signature. This is possibly used to validate the content of previous chunks.

Resources

  • rbxasset://models/DataModelPatch/DataModelPatch.rbxm
@Anaminus
Copy link
Member Author

The above interpretation is incorrect. the SIGN chunk is mostly independent from the 0x1D type.

  • The 0x1D type refers to compiled Luau bytecode (called "Bytecode").
  • The SIGN chunk is indeed used to validate the content of the file.

Because arbitrary Bytecode is unsafe to execute, files are validated using the SIGN chunk to ensure that the bytecode comes from a trustworthy source. This is how the two concepts are related.

Resources

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant