David Benjamin

423 posts

David Benjamin banner
David Benjamin

David Benjamin

@davidben__

There are lots of people with my name. I'm the Chromium (and cuttlefish) one. I work on TLS, privacy, and general amusements in Chrome.

Katılım Kasım 2014
144 Takip Edilen994 Takipçiler
David Benjamin
David Benjamin@davidben__·
@ericlaw Denotes a boolean in structured fields. #section-3.3.6" target="_blank" rel="nofollow noopener">rfc-editor.org/rfc/rfc8941.ht…
English
0
0
3
0
🎻 ➡️ BlueSky
🎻 ➡️ BlueSky@ericlaw·
In Document Policy, what's the question mark before the 0 for?
🎻 ➡️ BlueSky tweet media
English
1
0
0
0
David Benjamin
David Benjamin@davidben__·
@ericlaw Probably PSS and your decoder hasn't been updated for 1.3? The codepoints are no longer decomposed into hash/sig tuples as that's not how signature schemes work in general.
English
1
0
1
0
🎻 ➡️ BlueSky
🎻 ➡️ BlueSky@ericlaw·
TLS/1.3 changes the format of the CertificateRequest message??
🎻 ➡️ BlueSky tweet media
English
3
1
3
0
David Benjamin
David Benjamin@davidben__·
@ericlaw TLS 1.2 changed a bunch of them too, to add the signature algorithm. Anything after ClientHello and bits of ServerHello has always been version-specific and fair game to change.
English
0
0
1
0
David Benjamin
David Benjamin@davidben__·
@h4kr @BruceDawson0xB That guidance always worried me. Asking devs to think about worst case bounds on every map feels akin to thinking about whether some missed check is exploitable. Much lower stakes, but still a bit error-prone of a default for my comfort.
English
1
0
0
0
Scott Graham
Scott Graham@h4kr·
@BruceDawson0xB I wondered about those containers before, and if they should have a DCHECK that n < $MEDIUM_SIZED_VALUE. But I'm not sure how you'd argue for a particular MEDIUM_SIZED_VALUE in a CL. :)
English
1
0
0
0
David Benjamin
David Benjamin@davidben__·
@taviso @GuidoVranken Different reuse there, but yeah X509's setters basically don't work. Except you need to setters to issue certs, so it's a mess. No idea whether anyone actually relies on this particular case. I just reviewed the diff and noticed it broke something they previously had code for.
English
0
0
1
0
David Benjamin
David Benjamin@davidben__·
@BRIAN_____ It also catched bugs. We learned as a result that a few projects imported RSA keys wrong and swapped p and q! They just never noticed because CRT would always fail and then fallback in OpenSSL, making RSA signing unnecessarily slow.
English
0
0
4
0
David Benjamin
David Benjamin@davidben__·
@DrawsMiguel @shafikyaghmour I want a strict aliasing sanitizer, less to check my code (though that too) but really to demonstrate that no real world C code actually follows that rule.
English
0
0
2
0
David Benjamin
David Benjamin@davidben__·
@BRIAN_____ @djco @FiloSottile The spec reference in the bug is wrong; ClientHello.legacy_version is not the same as the record layer version. And yeah I doubt that is the issue. The record layer version is totally meaningless and vestigial.
English
0
0
1
0
Brian Smith
Brian Smith@BRIAN_____·
@djco @FiloSottile @davidben__ I wonder if the issue is really that. I suspect the reporter is speculating. I wouldn’t be surprised if the real reason is cipher suite incompatibility, e.g. server requires non-ECDHE RSA key exchange. Presumably the peer is Schannel which does version negotiation pretty OK.
English
1
0
1
0
David Benjamin
David Benjamin@davidben__·
@hanno @buherator @agl__ Thanks to that mess, it takes more bytes to encode RSA-PSS *parameters* in X.509 than to encode an entire ECDSA signature. PSS is singlehandedly the reason X.509 signature algorithms aren't a plain enum.
English
0
0
1
0
hanno
hanno@hanno·
@buherator @agl__ RSA-PSS allows you to choose a hash function, a mask generation function (for which there is only one option), a salt length and a hash function for the mask generation function (yes, you can have a pss sig with two different hash functions). any more questions?
English
2
0
7
0
David Benjamin
David Benjamin@davidben__·
@FiloSottile @taviso @GuidoVranken Whether it's a bug in ModSqrt is up to interpretation. Tonelli-Shanks ultimately only works for primes. Always terminating is prudent. But accepting random attacker-supplied coefficients is a bad idea and forbidden by RFC5480. IMO that's the root bug, which doesn't affect Go.
English
0
2
9
0
Lúcás Meier
Lúcás Meier@cronokirby·
mesur-io.github.io/post-quantum-s… Maybe a bit of a hot take, but I feel like you should just encode public and private keys as a string of bytes, and treat them as completely opaque blobs. Not sure what you really gain by exposing the internal structure as JSON
English
5
1
23
0
David Benjamin
David Benjamin@davidben__·
@ericlaw @sleevi_ It is usually what I do. The formats are... just barely boring enough to for it to be bearable. I meant to write a tool, but I really wanted it be reversible (like der-ascii). Working out a design I liked took more time than I had available.
English
0
0
1
0
🎻 ➡️ BlueSky
🎻 ➡️ BlueSky@ericlaw·
Is there a site where I can paste a hexdump of a TLS ClientHello or ServerHello and get a parsed view back?
English
3
3
4
0
Tony "Abolish ICE" Arcieri 🦀🌹
Another ASN.1 question which eludes me: When should a Context-Specific field have the constructed bit set-or-not-set? RFC5958's OneAsymmetricKey sets it for a context-specific BIT STRING (publicKey) RFC2459 appears NOT to set it for GeneralName alts? cc @sleevi_ @RichSalz
English
2
0
1
0
David Benjamin
David Benjamin@davidben__·
@sleevi_ @bascule For DER, the type alone determines constructedness, so you can kinda pretend it's part of the tag, even if it technically isn't. BER has this awful constructed strings encoding, so some types might be either in BER.
English
0
0
2
0
David Benjamin
David Benjamin@davidben__·
@sleevi_ @bascule Put another way: constructed is a property of the value, not the tag. It tells you whether the value is more TLVs or some random leaf element. So EXPLICIT is always constructed (wraps another TLV). IMPLICIT replaces the tag, so its constructed bit is based on the inner element.
English
2
0
3
0
David Benjamin
David Benjamin@davidben__·
I look forward to all the latent X.509 bugs around 2050, as we rollover from UTCTime to GeneralizedTime. Did you think we were done with two-digit years after Y2K? Well, X.509 has some news for you!
English
1
2
21
0
David Benjamin
David Benjamin@davidben__·
@__phantomderp @strega_nil @DrawsMiguel Fixing NULL + 0 would also be good. Both it and the memcpy(NULL, 0) language bug affected real world code in BoringSSL. If you have a function that takes ptr,len, NULL,0 is the natural way to say empty slice. But C is full of unnecessary places that break when you do that.
English
1
0
1
0
David Benjamin
David Benjamin@davidben__·
@RichSalz Well, AES is still significant progress. For GHASH, BearSSL has a writeup of a very neat strategy. I have some code I can contribute there if interested.
English
1
0
3
0