Skip to content
This repository has been archived by the owner on Dec 29, 2022. It is now read-only.

Would you please create a writeup as to what you had to defeat in order to get chromeRSAPrivateKey? #14

Closed
gregvish opened this issue Oct 27, 2020 · 11 comments

Comments

@gregvish
Copy link

// Extracted by applying some mathematical tricks to Arxan's white-box algorithm
That's not a good enough explanation for a lot of us :)

For those of us who don't have the time to reverse the DLL ourselves, a writeup describing what obfuscation was actually used in the most popular DRM module is quite interesting.

Since you were generous enough to create this repo, perhaps you'll be kind enough to create this writeup as well :)

@tomer8007
Copy link
Owner

tomer8007 commented Oct 27, 2020

I am considering to write such a write up in the future, not promising though.

But basically, after deobfuscating the control flow and translating the algorithm to python, I begun substituting complex operations with simpler but mathematically equivalent operations, eliminating redundant tables and numbers along the way.
In the end I had an algorithm that was similar enough to the usual square-and-multiply RSA implementation, from which I could conclude the secret exponent.

@therealchrome
Copy link

@tomer8007 can't do a write up because he didn't reverse this, I did.

The original Python implementation of the whiteboxed RSA attached.
ChromeKey.zip
Rename zip to py

All he has done is steal my work and dumb it down further to the original exponent, which is a pointless exercise anyway.
He got technical details wrong the binary is not "very heavily obfuscated" and Arxan is only used for the anti-debugging portion.

This whitebox is produced in-house by Google, and variants of it have been used on other Widevine libraries.

Of course they know anything like this will be reversed, it's not meant to be secure that is why Chrome can only do 720p or SD at places.

All making this public has done is:
A) Force Widevine to revoke the current key
B) Make Widevine change the whitebox implementation
C) Probably? Make Widevine rotate the private key more regularly
D) Enable more people to make a dollar selling this
E) Hurt real users
F) Force more streaming services to downgrade Chrome to SD or 720p only
G) Hurt real users???

"Here's a thing, it wont work long term, I can't explain how I did it and it's just here to prove something everybody already knew." - tomer8007
Great work friend!

Did this for fun... Had known what my work would become. Would have ever done it.

@tomer8007
Copy link
Owner

Well, it is at least true that I wasn't sure that Arxan really made the whitebox RSA algorithm.

@inntremux
Copy link

@therealchrome join our discord server

@streamOG
Copy link

@therealchrome is it possible to speak with you regarding this work? Вы русский??

@microsoftceo2
Copy link

@tomer8007 𝗴𝗲𝘁 𝗲𝘅𝗽𝗼𝘀𝗲𝗱 𝗽𝗶𝗲𝗰𝗲 𝗼𝗳 𝘀𝗵𝗶𝘁

@streamOG
Copy link

He's far from a piece of shit. Bright dude. We have no idea who actually designed this code. Neither do you.

@microsoftceo2
Copy link

microsoftceo2 commented Oct 28, 2020

𝒚𝒆𝒔 , 𝒔𝒖𝒏𝒏𝒙𝒕-𝒅𝒍 𝒑𝒍𝒛𝒛 𝒄𝒓𝒆𝒂𝒕𝒆 𝒕𝒐𝒐𝒍 𝒇𝒐𝒓 𝒎𝒆 𝒅𝒐𝒘𝒍𝒐𝒂𝒅 𝒉𝒆𝒓𝒆 𝒊𝒏 𝒊𝒏𝒅𝒊𝒂 𝒃𝒂𝒏𝒈𝒂𝒍𝒊

@setsoonah
Copy link

@tomer8007 can't do a write up because he didn't reverse this, I did.

The original Python implementation of the whiteboxed RSA attached.
ChromeKey.zip
Rename zip to py

All he has done is steal my work and dumb it down further to the original exponent, which is a pointless exercise anyway.
He got technical details wrong the binary is not "very heavily obfuscated" and Arxan is only used for the anti-debugging portion.

This whitebox is produced in-house by Google, and variants of it have been used on other Widevine libraries.

Of course they know anything like this will be reversed, it's not meant to be secure that is why Chrome can only do 720p or SD at places.

All making this public has done is:
A) Force Widevine to revoke the current key
B) Make Widevine change the whitebox implementation
C) Probably? Make Widevine rotate the private key more regularly
D) Enable more people to make a dollar selling this
E) Hurt real users
F) Force more streaming services to downgrade Chrome to SD or 720p only
G) Hurt real users???

"Here's a thing, it wont work long term, I can't explain how I did it and it's just here to prove something everybody already knew." - tomer8007
Great work friend!

Did this for fun... Had known what my work would become. Would have ever done it.

I completely agree, this kind of thing should not be made public.

@flydahli
Copy link

flydahli commented Jan 1, 2021

@tomer8007 can't do a write up because he didn't reverse this, I did.

The original Python implementation of the whiteboxed RSA attached.
ChromeKey.zip
Rename zip to py

All he has done is steal my work and dumb it down further to the original exponent, which is a pointless exercise anyway.
He got technical details wrong the binary is not "very heavily obfuscated" and Arxan is only used for the anti-debugging portion.

This whitebox is produced in-house by Google, and variants of it have been used on other Widevine libraries.

Of course they know anything like this will be reversed, it's not meant to be secure that is why Chrome can only do 720p or SD at places.

All making this public has done is:
A) Force Widevine to revoke the current key
B) Make Widevine change the whitebox implementation
C) Probably? Make Widevine rotate the private key more regularly
D) Enable more people to make a dollar selling this
E) Hurt real users
F) Force more streaming services to downgrade Chrome to SD or 720p only
G) Hurt real users???

"Here's a thing, it wont work long term, I can't explain how I did it and it's just here to prove something everybody already knew." - tomer8007
Great work friend!

Did this for fun... Had known what my work would become. Would have ever done it.
@therealchrome
hello please can you contact me
dahlioussama@gmail.com

i need you to work with us in some company with benefit good thank you

@knobse
Copy link

knobse commented Jun 8, 2021

@tomer8007 can you share the "m" value?
or
@therealchrome can you share the "ct" value?
Thanks a lot already!

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

No branches or pull requests

9 participants