Re:The Catch 22 of Base64: Attacker Dilemma from a Defender ...
by zrm on Tuesday May 01, 2018 @03:04PM
(#16970306)
> based on the assumption that legitimate users have no practical need to do multiple encoding of the same text.
Things can legitimately be encoded multiple times because encapsulation is a thing and multiple independent stages may each be configured to accept possibly binary input and produce base64 output.
You also don't need to re-encode something an unreasonable number of times to get "Vm0wd", all you have to do is start with "Vm0" and base64 encode it twice. "Vm0" only has 24 bits of entropy which means it will regularly occur at random in legitimate data.
And then nobody can figure out why "Vm0-Edge-West" isn't working.
Re:The Catch 22 of Base64: Attacker Dilemma from a Defender ...
by benchaney on Tuesday May 01, 2018 @01:58PM
(#16969527)
I'm not really sure what the threat model is here. If the attacker can control what encoding scheme you use, surely you have much more serious problems than the possibility of wasting space.
Re:The Catch 22 of Base64: Attacker Dilemma from a Defender ...
by loup-vaillant on Tuesday May 01, 2018 @02:08PM
(#16969659)
> While Base64 encoding is very useful to transfer binary data over the web
This part I cannot fathom. The era of 7-bit bytes is over. What can possibly justify the need for a "printable characters" encoding now? Something stupid like putting data in a JSON string? What's the next step, base-64 encode the JSON containing that string and put it in an XML tag?
Re:The Catch 22 of Base64: Attacker Dilemma from a Defender ...
by jancsika on Tuesday May 01, 2018 @02:42PM
(#16970055)
Isn't this likely due to a second-order effect?
For example, there is (was?) a bug in nw.js with using @font-face to specify a font url that is in the same (local) location as the manifest. As a hack I tried specifying the font as a base64-encoded data url. It worked!
I had no use for base64, other than that there exists an interface for specifying data and it takes a base64-encoded string.
Re:The Catch 22 of Base64: Attacker Dilemma from a Defender ...
by loup-vaillant on Tuesday May 01, 2018 @02:23PM
(#16969817)
Yes, but why? There's a reason for everything, so I guess this serves some purpose, somehow? I guess the ultimate reason is stupidity or bad planning or cut corners, but I'm still curious.
Bonus point if there's a situation where avoiding something like base64 is actually difficult, even in 2018.
Re:The Catch 22 of Base64: Attacker Dilemma from a Defender ...
by 0culus on Tuesday May 01, 2018 @02:23PM
(#16969818)
I've seen base64 used to implement "security through obscurity" in web applications. Many times in situations where they could have just used a cryptographic hash and been done with it.
Re:The Catch 22 of Base64: Attacker Dilemma from a Defender ...
by boneitis on Wednesday May 02, 2018 @04:24AM
(#16975020)
Perhaps i can blame the booze, as i an admittedly very drunk but still unconvinced and/or confused.
I asked my question coming from the angle of big-oh analysis, and all three (as of the time of this reply) responses in the thread seem to describe a growth by a constant factor of 1.3bar, bar over 3, otherwise known as polynomial growth, yes?
Absolutely, the growth can be mathematically expressed with an exponent, but we verbally characterize the actual growth to be polynomial if the scalar stays constant (a.k.a. a literal number in the exponents place) rather than increasing as the amouny of input increases (independent variable lying within the actual exponent), no?
Things can legitimately be encoded multiple times because encapsulation is a thing and multiple independent stages may each be configured to accept possibly binary input and produce base64 output.
You also don't need to re-encode something an unreasonable number of times to get "Vm0wd", all you have to do is start with "Vm0" and base64 encode it twice. "Vm0" only has 24 bits of entropy which means it will regularly occur at random in legitimate data.
And then nobody can figure out why "Vm0-Edge-West" isn't working.
This part I cannot fathom. The era of 7-bit bytes is over. What can possibly justify the need for a "printable characters" encoding now? Something stupid like putting data in a JSON string? What's the next step, base-64 encode the JSON containing that string and put it in an XML tag?
For example, there is (was?) a bug in nw.js with using @font-face to specify a font url that is in the same (local) location as the manifest. As a hack I tried specifying the font as a base64-encoded data url. It worked!
I had no use for base64, other than that there exists an interface for specifying data and it takes a base64-encoded string.
Bonus point if there's a situation where avoiding something like base64 is actually difficult, even in 2018.
I asked my question coming from the angle of big-oh analysis, and all three (as of the time of this reply) responses in the thread seem to describe a growth by a constant factor of 1.3bar, bar over 3, otherwise known as polynomial growth, yes?
Absolutely, the growth can be mathematically expressed with an exponent, but we verbally characterize the actual growth to be polynomial if the scalar stays constant (a.k.a. a literal number in the exponents place) rather than increasing as the amouny of input increases (independent variable lying within the actual exponent), no?