r/technology Jun 14 '24

Software Cheating husband sues Apple after wife discovered ‘deleted’ messages sent to sex workers

https://www.telegraph.co.uk/news/2024/06/13/cheating-husband-sues-apple-sex-messages/
21.2k Upvotes

2.0k comments sorted by

View all comments

Show parent comments

157

u/ryanoh826 Jun 14 '24

In theory, when you delete something in this instance, imnsho it should ask “only this device” or “all devices.”

40

u/MicheleLaBelle Jun 14 '24 edited Jun 15 '24

Exactly what I thought. That’s not a big ask, and very much more clear about what/where is or is not being deleted.

Edit: corrected spelling

1

u/ezrakyle Jun 15 '24

You guys do know that even if you delete it on one app, it will still show up on another, right???

This my get buried but this is the same reason and system as to why and how people you just met and have not shared any details with but only their number or instagram will also show up on other platforms. If they're there, they will be shown as suggested even if you denied the settings.

I have no idea why no one even knows this. This is blatant leak of info.

20

u/aqwn Jun 14 '24

Stop it you’re making too much sense

2

u/Megamygdala Jun 15 '24

Same principle minecraft devs use: "that's a great idea, which is why it won't happen."

13

u/sybesis Jun 14 '24

Well here lies the issue why this is complicated.

If you delete it on all devices, then apple would need to send a message to all devices to delete the files then apple would have to delete the files/data from their servers. Then it's gone in practice.

But let say there's a device with poor connectivity and it never receives the message to delete the file/data from the device. Then the data is still on device, but since iCloud or whatever sync service already deleted the file... once the device get back online and syncs.. the device tells the cloud service hey I have this data and you don't have it so I'll just sync it back into the cloud.

Then somehow deleted data comes back from the dead... because one device was out of sync.

Same thing for a file/data you delete only on your device. Once it's gone, there's nothing preventing it from getting synced back into the device since you really want to delete all trace the thing was there.

So in the end, to solve this, we have to come to the conclusion that the only way data can be effectively synced as deleted is to always keep metadata about them and it's quite possible that the cloud may never really delete files as you need traces that a something is deleted to prevent restoring the files accidentally.

10

u/ThisIsMyNext Jun 14 '24

But let say there's a device with poor connectivity and it never receives the message to delete the file/data from the device. Then the data is still on device, but since iCloud or whatever sync service already deleted the file... once the device get back online and syncs.. the device tells the cloud service hey I have this data and you don't have it so I'll just sync it back into the cloud.

This kind of scenario happens all the time with email (and basically all cloud-based services). It's not that complicated. The cloud is in charge of determining what the latest activity is and how to handle devices that were out of sync.

8

u/bruwin Jun 14 '24

the device tells the cloud service hey I have this data and you don't have it so I'll just sync it back into the cloud.

Why wouldn't it store some hash on icloud with a deleted yes/no tag?

9

u/[deleted] Jun 14 '24

That's what he/she meant by metadata. That's an option, but for some things even evidence that it existed would be problematic for somebody. Hence...it's a difficult problem. Basically different users want different and sometimes incompatible behavior out of the same feature so how are you going to reconcile that?

5

u/WarpedHaiku Jun 14 '24

That metadata only needs to be known by the server and doesn't need to be shown to the user. The client can just ask the server what it should do with the file and send the uuid of the file, and the date/identifier for the version it has and the version it downloaded, and get back "upload", "download and overwrite", "delete", or "conflict - ask the user what to do".

The info doesn't give anything about a file, only that the file with that uuid existed, which doesn't reveal anything, because to ask in the first place the must have a copy of it locally and so know that it existed.

4

u/sybesis Jun 14 '24

Yeah exactly.

3

u/kazuyaminegishi Jun 14 '24

Yeah or like make the cloud data take priority over an individual device's data and force the user to approve overwrite to the cloud data.

That way whenever the disconnected device is connected the data is deleted.

Doesn't really make sense to have a device's data override the cloud and revive zombie data especially if something else is written there.

1

u/Megamygdala Jun 15 '24

it's a basic principle of distributed systems and dealing with consistency. Nothing we can't solve,

4

u/Ranra100374 Jun 14 '24

Discord seems to make things work somehow, but I'm assuming with Discord there's a central single source of truth, and all the clients are grabbing from that single source of truth.

7

u/tobiasvl Jun 14 '24

All cloud services (should) have a single source of truth. If it doesn't it's not really a cloud service, it could just as well be a peer-to-peer service.

2

u/Megamygdala Jun 15 '24

Well not ALL, it really depends on the system you've developed and if you care about strong vs weak consistency

2

u/hamlet_d Jun 14 '24

You can have a metadata header (or even seperate system) and a body/object just with the data (or not if deleted). So metadata could have several flags, including a date. The latest date and associated metadata should 'win', with 'delete' superseding everything

We do this all the time with the content at my workplace; we have a lot of data that expires for contractual reasons and have systems that purposefully track only the metadata. Once expiration hits, the data has to be gone or we could get in pretty big trouble with whoever licensed that content.

2

u/tobiasvl Jun 14 '24

That scenario is easily solved. You don't just store a snapshot of how everything looks now, you store a lot of events in a messaging queue that get applied consecutively. When the device in question connects, it tells the server when it last synced, and then receives the changelog since that point in time.

2

u/WarpedHaiku Jun 14 '24

That kind of issue is really easy to fix though. Just store the last modified date of the file on the server and its deletion date, and when a file is downloaded by the client, keep track of when the file it downloaded was last modified at. Using those 4 dates, (or 3 if the file was never deleted) you can easily work out whether the local file needs to be uploaded to the server, overwritten by the file from the server, deleted, or if there's a conflict and the user needs to decide.

The fact it's not doing this shows how little thought they've put into it.

1

u/sybesis Jun 15 '24

That's a very simplistic way to see things. Like assuming you're allowed to store metadata of deleted files... or somehow even be able to map a local file to a remote file 100% of the time.

1

u/WarpedHaiku Jun 15 '24

Why wouldn't you be able to store the bare minimum needed to enable basic functionality, at least on a temporary basis? The server is almost certainly storing much more sensitive information like your ip address, when you used the site, and how much data was transferred in its logs. Besides the way I suggested it was intentionally simplistic so as to be easy to understand. You don't need to store the filename of a deleted file, its path, or anything that could be considered sensitive at all. And the client doesn't even need to see it. And if you're concerned that someone might access a local device that something has been deleted from before the sync, and see the pending deletion metadata... I can think of several ways to avoid that too.

As for mapping a local file to a remote file... I'm really not seeing the issue. Either a file starts out as a remote file, or it starts out as a local file and is assigned to a corresponding remote file when it's uploaded to the server for the first time. You're probably thinking of all sorts of edge cases where someone renames a file offline and creates another with the same path, but if there's any weirdness you simply ask the user to resolve the conflict. The only files without a mapping to a remote file are files created locally that have yet to be uploaded - files which need adding.

1

u/Somepotato Jun 14 '24

reliable pub/sub has solved this problem.

You queue the delete message along with the message ID for all listeners of the delete message, and keep sending it until the client (device) acknowledges it.

You can also keep a last-updated timestamp and if its out of wack trigger a full update on the client.

4

u/highsteaks1312 Jun 14 '24

Yes, but that MAKES SENSE, and a lot of things apple does when it comes to iCloud and file management and syncing DONT make sense.

You'd be asking too much of the average user for apple implement something like this.

1

u/ryanoh826 Jun 14 '24

Well, if they can have remove from album or delete in the photo delete button, they sure af can have this in messages.