Hacker Newsnew | past | comments | ask | show | jobs | submit | Retr0id's commentslogin

RTA seems reasonable to me, on a technical level. But the porn industry can't force anyone to implement the client side of it. Legislators itching to "do something" should've focused on that.

If we're requiring a locked-down client, why not have the server advertise the age rating in a header and let the client decide whether it'll display the response or not? That way the server doesn't get to see any age information whatsoever.

The retina can't tell the difference between reflected light and emitted light

Unless you're in the habit of reading your books with a flashlight, the context makes it very different.

I suspect Mandiant hears a lot of "this is impractical to exploit so we don't care" from their clients. Now they have a compelling rebuttal to that.

Well, you'll be waiting 20 years or so post-deprecation if you want an equivalent timeline.

Firefox also downloads and uses AI models: https://support.mozilla.org/en-US/kb/on-device-models

I don't believe it ever does so without first asking for permission?

It did it without my permission, it's a small model to rename and group tabs, though, no more than 50M in size.

wait, hang on, I can't be the only person with 300 tabs open for whom that would actually be useful

Use seamonkey or palemoon

Does seamonkey still work on modern internet? Last time I tried it to open Notion, nothing was displayed. Works great on old world stuff though.

> You're not a rando taking a walk for mysterious and possible nefarious purposes

It's a little counterintuitive, but I find walking around with a camera has this effect too (depending on where you're pointing it of course).


There's an example shadyurl link in here: https://news.ycombinator.com/item?id=14628529

Funnily enough the domains appear to have been bought up and are now genuinely shady.


link obfuscator

By the way, pyca/cryptography is a really excellent cryptography library, and I have confidence that they're making the right decisions here. The python-level APIs are well thought-out and well documented. I've made a few minor contributions myself and it was a pleasant experience.

And my personal "new OpenSSL APIs suck" anecdote: https://github.com/openssl/openssl/issues/19612 (not my gh issue but I ran into the exact same thing myself)

> I set out to remove deprecated calls to SHA256_xxx to replace them with the EVP_Digestxxx equivalent in my code. However it seems the EVP code is slow. So I did a quick test (test case B vs C below), and it is indeed about 5x slower.


This is amazing.

Once upon a time, OpenSSL was the place to go for crypto primitives that were hardware specific and well optimized, and you would pay the price of using a nasty API. Now it’s an even nastier API and it’s not even fast anymore?

SHA256 is almost the prototype of a pure function. There should not be concepts like “EVP”. Output sizes should be static. Failure should be entirely impossible unless I opt in to using an async interface for an async accelerator. The only complexity should be the hidden part that selects the best synchronous implementation.


Not to take away from the point that it's overcomplicated, but a lot of the complications come from trying to expose a generic interface. For example, digests can have variable output lengths like BLAKE2 and BLAKE3 do.

The default BLAKE2 provider doesn't actually support that functionality, but my provider for BLAKE3 does. I don't think anyone uses it though. I haven't updated that provider since they changed the internal API for setting it and no one's complained yet.


Another important parameter with BLAKE3 is "Do you want to use threads?" There's no one-size-fits-all answer to that question, but it's also a parameter that ~no other hash function needs.

Fwiw, I think the RustCrypto effort also tends to suffer a bit from over-abstraction. Once every year or two I find myself wanting to get a digest from something random, let's say SHAKE128. So I pull up the docs: https://docs.rs/sha3/latest/sha3/type.Shake128.html. How do you instantiate one of those? I genuinely have no idea. When I point Claude at it, it tells me to use `default` instead of `new` and also to import three different traits. It feels like these APIs were designed only for fitting into high-level frameworks that are generic over hash functions, and not really for a person to use.

There are a lot of old assumptions like "hash functions are padding + repeated applications of block compression" that don't work as well as they used to. XOFs are more common now, like you said. There's also a big API difference between an XOF where you set the length up front (like BLAKE2b/s), and one where you can extract as many bytes as you want (like BLAKE3, or one mode of BLAKE2X).

Maybe the real lesson we should be thinking about is that "algorithm agility" isn't as desirable as it once was. It used to be that a hash function was only good for a decade or two (MD5 was cracked in ~13 years, but it was arguably looking bad after just 6), so protocols needed to be able to add support for new ones with minimal friction. But aside from the PQC question (which is unlikely to fit in a generic framework with classic crypto anyway?), it seems like 21st century primitives have been much more robust. Protocols like WireGuard have done well by making reasonable choices and hardcoding them.


I can see the value of the EVP API for certain use cases, I just wish they didn't deprecate the not-EVP API.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: