In an episode of Curb Your Enthusiasm, the protagonist has to find the total weight of all the passengers for an airplane, but every passenger is uncomfortable sharing their weight. To me this seems like a problem that could be solved cryptographically, as it seems reminiscent of the SMP or distributed key generation. Does anyone from the crypto community know if there exists a solution for a problem like that?
Actually it's easy because every major airport and maintenance facility has a location where you can taxi your plane, put the wheels on three or more sensors, and it will tell you the total weight and weight per wheel.
If you do things physically, you can do it easily.
For example you could have a hat with pieces of paper in it each with a number. The numbers sum to 0 (some are positive, some are negative). Each person draws a piece of paper, adds his or her weight to it, then says that number. The numbers that each person says are summed and that's the total sum.
Could use a similar technique remotely using a random number generator. Provided there are enough passengers the sum would approximately equal the true total weight.
There might be behavioural issues here though - perhaps people would keep generating a random number until they are provided one that makes their weight look 'better' (and 'better' probably means 'smaller' for most people).
Edit: comicjk made a great point about large numbers. Perhaps using large random numbers (eg a normal distribution with a mean of 4550 and a std deviation of 20-30) would help reduce the behavioural issue.
I like this better than my solution. The technique of adding random numbers has a more crypto feel to it. It would help to use big numbers, so that they would conceal the underlying number better (clearly single-digit numbers would be no help, might as well extend that and use 5-digit numbers).
Won't you possibly get some information about some passengers by doing this, if you know / can figure out the distribution of the random numbers?
E.g., say that the random numbers are uniformly distributed between -200 and 200. If somebody says a number like 425, then I know they weigh at least 225 pounds. And the probability they weigh more than 225 - k pounds is 1 - k/400.
Then knowing any individual number (weight + pad) mod n gives zero knowledge (I think. If all but one party reveal their pads, they can trivially determine the other's weight so it fails. Believe it to be secure if only 1 party is malicious, though. Cases for other numbers of bad actors are more complicated...)
It seems like a plain anonymization problem, much like a voting with a secret ballot. If I encountered this problem in real life, I would just use slips of paper and a box with a slit in it. Possible strengthening techniques would involve removing the handwriting, for instance using multiple choice 0-9 for each digit.
hmm not from the crypto-community, but .. find the passengers that are comfortable sharing their weight; gather those, mark them in the total list with a tag, a certainty estimate from 0.0 to 1.0, and a weight. Now use the rest of the list to estimate weights based on similarity, assigning some reasonable certainty; show the other passenger those results, tell them again how the group benefits, and they personally benefit; iterate.. If an individual does not want to publicly share their weight, then show them how they can enter the weight without being named to the group. Iterate that, with their consent.
The reason I say this is because you are not talking to machine parts or to secret financial players, in this problem, to you are talking to human beings. By reducing human beings to machine parts to solve a problem, you are losing information that is critical to your own humanity ! and to theirs ! super-bad results can happen when people in power and their adjuncts, are successfully rewarded for reducing human beings to machine parts in their solutions ! Junior programmers finish your studies, but all humans please take note -- no cryptography required here !
I'm not a cryptographer, much less from the cryptography community, but I think what you're looking for is known as Fully Homomorphic Encryption. Check it out at https://en.wikipedia.org/wiki/Homomorphic_encryption
> Does anyone from the crypto community know if there exists a solution for a problem like that?
Technically it can be done, and in an obfuscated way no less without relying on self-reporting, which is always going to skew things; consider the following:
- At boarding have a scale underneath a padded area when scanning each and every passenger (calibration required): this will create a unique ID that corresponds with the boarding pass and seat number and weight while the ticket is being scanned, how long this takes is anyone guess as I'm not an engineer.
- Upon acquiring the weight of each passenger, create a hash for that ID and measured weight, and use that to associate the measured weight rather than the ID, such that it creates an aggregate of each and every boarded passenger with info rather than Jane Doe 55Kg (ID/weight). Record that info into a DLT/blockchain held by a series of parties to validate independently.
- With that info you can discern individual weights, without actually having an identity attached to said weight measurement. And in real time, no less.
This, albeit crudely lined out as its a rather lengthy process to describe, is the basis for why blockchain technology/DLT could be useful for voting as it was used in Sierra Leone's 2018 election:
PS: I don't think a token is necessary, simply having the hashed info recorded onto a blockchain is enough, assuming its held by independent parties to be able to validate.
> What's the blockchain for? It serves no purpose here.
Non-trust based verification/consensus requires that many parties, ideally opposing ones, have the same data/ledger to validate the information desired: in this case, real-time acquisition of passenger weight.
You could argue SQL does the same thing, and you're probably right at least on paper, but it cannot be independently validated as a blockchain can. The idea being, if all have a copy of the information then it isn't subject to custodial manipulation, and corruption.
I see it as having the same features that open-source software provides: in that it allows people to look through the source code to ensure it doesn't contain some malware or some bug in the software and can do so independently from the owner/company of said software.
The goal is to get the summed weight of all the passengers. In step 1 of your plan you weigh each and every passenger. If that really is your plan then step 2 is to sum them! Call the sum() function! How in the world did you turn that into 5 steps involving a blockchain?
It's the epitome of the blockchain obsessed. Create unrelated problems just to claim "see a blockchain fixed them."
You've already weighed the passengers! The way to get their summed weight is to sum them!
If the goal is only simply to get an accurate sum , then you're right; but I was alluding to how it can be done in a private obfuscated/trustless verifiable manner, and provided how that was done in a previous usecase.
I think this response/mindset is very telling of the Silicon Valley mindset FAANG vetts for and how it functions: get what data we need to repackage and sell off, consequences of privacy and disclosure responsibility be damned. When it blows up in our face we'll probably just have to sit in court and make this face [1] and pretend we didn't know better that we were doing creepy things with People's information, but promise to do a better job next time.
I think our main contention is that you seem to be operating from a perspective in which you ASSUME, and therefore act, everyone wants their data/information to be gathered, so you use the most linear approach to said goal: in this case, weight. When it was was clearly stated that some people felt uncomfortable divulging that information when asked.
Whereas I'm coming form a position in which a middle ground can be met by all participants given the parameters; gathering what is deemed 'useful information' while understanding that it can and has been misused continuously to create a vastly dystopic industry that relies on such practices.
So to counteract said potential problem do so with the least amount of identifiable variables in the equation and have privacy an absolute.
Again, you can discount the need for privacy all you want; the FAANG types usually do and make billions from it: that's the playbook until you're sitting a testimony in front of congress (mainly for theatrics) and another billion dollar fine for misuse of private information.
> Use blockchain to solve problems that have requirements around the value it provides.
Agreed, which is why I referenced the voting usecase and how that would be a more apt use of this solution.
To put this into context, I think of your argument as: Why are you asking for these silly seatbelts and these overly complicated airbag balloons into this design, we were just asked for a box with 4 wheels!
I think you're making faulty assumptions about what's happening here.
Your Requirements:
1. Have the weight of every passenger while not uniquely identifying them.
2. Have the aggregate weight of all passengers on the plane
3. Have it independently verifiable
4. Trust that no additional data has been siphoned off.
What you proposed says that everyone step on a scale to be weighed. At this point #4 can be easily broken. Any company can easily split the data, send on through your complicated block chain system and send a copy to their on private DB. They've still captured the private info you wanted to not be private. A blockchain did nothing to solve this.
Ok so the solution: make this scale opensource and ensure via some signing method that the software scanning tickets and managing the scale are running this open source visually verified code. Fine that solve the problem because everyone can inspect the code and see what it's doing. So what's the next step? Write code that simply takes those numbers and sums them together and outputs the sum! Everyone can see that no privacy is being violated because they can see the code running on the scale. And they can see that it has no negative privacy implications it's simply an anonymous sum.
A blockchain to the solution I just discussed provides no value to this. It's not solving a problem that is present here. Signed & verified open sourced software is what's required.
My eyes are glossing over trying to understand the equations in this article, but isn't the solution as easy as comparing a cryptographic hash of Alice's wealth with a cryptographic hash of Bob's wealth for equality?
The fact that Alice could guess Bob's wealth within a certain range, even if that range is "between $0 and $1 trillion," and then have a finite range to search for a collision could be mitigated with a sufficiently slow hashing algorithm and/or an absurd number of iterations.
Expanding on this observation - mitigating in this manner means the two parties would have to use absurd amounts of time and computing power to calculate the initial hashes to communicate. Not very practical in many cases.
32 comments
[ 2.4 ms ] story [ 75.9 ms ] threadOtherwise you're guessing.
Also it is useful to balance the weight across the sides of a plane, not just get total weight.
https://gecscales.com/aircraft-weighing-systems/
Source: commercially-licensed pilot.
For example you could have a hat with pieces of paper in it each with a number. The numbers sum to 0 (some are positive, some are negative). Each person draws a piece of paper, adds his or her weight to it, then says that number. The numbers that each person says are summed and that's the total sum.
There might be behavioural issues here though - perhaps people would keep generating a random number until they are provided one that makes their weight look 'better' (and 'better' probably means 'smaller' for most people).
Edit: comicjk made a great point about large numbers. Perhaps using large random numbers (eg a normal distribution with a mean of 4550 and a std deviation of 20-30) would help reduce the behavioural issue.
E.g., say that the random numbers are uniformly distributed between -200 and 200. If somebody says a number like 425, then I know they weigh at least 225 pounds. And the probability they weigh more than 225 - k pounds is 1 - k/400.
Then you would probably get more information from looking at the person thank you could from hearing a weight number that could be +/-2000 pounds
Then knowing any individual number (weight + pad) mod n gives zero knowledge (I think. If all but one party reveal their pads, they can trivially determine the other's weight so it fails. Believe it to be secure if only 1 party is malicious, though. Cases for other numbers of bad actors are more complicated...)
The reason I say this is because you are not talking to machine parts or to secret financial players, in this problem, to you are talking to human beings. By reducing human beings to machine parts to solve a problem, you are losing information that is critical to your own humanity ! and to theirs ! super-bad results can happen when people in power and their adjuncts, are successfully rewarded for reducing human beings to machine parts in their solutions ! Junior programmers finish your studies, but all humans please take note -- no cryptography required here !
What is SMP?
Technically it can be done, and in an obfuscated way no less without relying on self-reporting, which is always going to skew things; consider the following:
- At boarding have a scale underneath a padded area when scanning each and every passenger (calibration required): this will create a unique ID that corresponds with the boarding pass and seat number and weight while the ticket is being scanned, how long this takes is anyone guess as I'm not an engineer.
- Upon acquiring the weight of each passenger, create a hash for that ID and measured weight, and use that to associate the measured weight rather than the ID, such that it creates an aggregate of each and every boarded passenger with info rather than Jane Doe 55Kg (ID/weight). Record that info into a DLT/blockchain held by a series of parties to validate independently.
- With that info you can discern individual weights, without actually having an identity attached to said weight measurement. And in real time, no less.
This, albeit crudely lined out as its a rather lengthy process to describe, is the basis for why blockchain technology/DLT could be useful for voting as it was used in Sierra Leone's 2018 election:
https://techcrunch.com/2018/03/14/sierra-leone-just-ran-the-...
https://www.agora.vote/
PS: I don't think a token is necessary, simply having the hashed info recorded onto a blockchain is enough, assuming its held by independent parties to be able to validate.
Non-trust based verification/consensus requires that many parties, ideally opposing ones, have the same data/ledger to validate the information desired: in this case, real-time acquisition of passenger weight.
You could argue SQL does the same thing, and you're probably right at least on paper, but it cannot be independently validated as a blockchain can. The idea being, if all have a copy of the information then it isn't subject to custodial manipulation, and corruption.
I see it as having the same features that open-source software provides: in that it allows people to look through the source code to ensure it doesn't contain some malware or some bug in the software and can do so independently from the owner/company of said software.
The goal is to get the summed weight of all the passengers. In step 1 of your plan you weigh each and every passenger. If that really is your plan then step 2 is to sum them! Call the sum() function! How in the world did you turn that into 5 steps involving a blockchain?
It's the epitome of the blockchain obsessed. Create unrelated problems just to claim "see a blockchain fixed them."
You've already weighed the passengers! The way to get their summed weight is to sum them!
If the goal is only simply to get an accurate sum , then you're right; but I was alluding to how it can be done in a private obfuscated/trustless verifiable manner, and provided how that was done in a previous usecase.
I think this response/mindset is very telling of the Silicon Valley mindset FAANG vetts for and how it functions: get what data we need to repackage and sell off, consequences of privacy and disclosure responsibility be damned. When it blows up in our face we'll probably just have to sit in court and make this face [1] and pretend we didn't know better that we were doing creepy things with People's information, but promise to do a better job next time.
1: https://i.ytimg.com/vi/lpQwPCMTpKE/hqdefault.jpg
Requirements nobody asked for. Which is exactly what seems to be annoying about the blockchain "enthusiasts".
A: I'd like a salad for lunch
B: Here's a salad that takes 15 steps to deliver via blockchain
A: I don't need, nor asked for all of this blockchain'ed salad.
B: It's clearly superior, it's distributed and with a ledger, private and trustless. You just don't understand the superiority of it.
Use blockchain to solve problems that have requirements around the value it provides. Not find a way to force every problem to fit into a blockchain.
Whereas I'm coming form a position in which a middle ground can be met by all participants given the parameters; gathering what is deemed 'useful information' while understanding that it can and has been misused continuously to create a vastly dystopic industry that relies on such practices.
So to counteract said potential problem do so with the least amount of identifiable variables in the equation and have privacy an absolute.
Again, you can discount the need for privacy all you want; the FAANG types usually do and make billions from it: that's the playbook until you're sitting a testimony in front of congress (mainly for theatrics) and another billion dollar fine for misuse of private information.
> Use blockchain to solve problems that have requirements around the value it provides.
Agreed, which is why I referenced the voting usecase and how that would be a more apt use of this solution.
To put this into context, I think of your argument as: Why are you asking for these silly seatbelts and these overly complicated airbag balloons into this design, we were just asked for a box with 4 wheels!
Your Requirements: 1. Have the weight of every passenger while not uniquely identifying them.
2. Have the aggregate weight of all passengers on the plane
3. Have it independently verifiable
4. Trust that no additional data has been siphoned off.
What you proposed says that everyone step on a scale to be weighed. At this point #4 can be easily broken. Any company can easily split the data, send on through your complicated block chain system and send a copy to their on private DB. They've still captured the private info you wanted to not be private. A blockchain did nothing to solve this.
Ok so the solution: make this scale opensource and ensure via some signing method that the software scanning tickets and managing the scale are running this open source visually verified code. Fine that solve the problem because everyone can inspect the code and see what it's doing. So what's the next step? Write code that simply takes those numbers and sums them together and outputs the sum! Everyone can see that no privacy is being violated because they can see the code running on the scale. And they can see that it has no negative privacy implications it's simply an anonymous sum.
A blockchain to the solution I just discussed provides no value to this. It's not solving a problem that is present here. Signed & verified open sourced software is what's required.
The fact that Alice could guess Bob's wealth within a certain range, even if that range is "between $0 and $1 trillion," and then have a finite range to search for a collision could be mitigated with a sufficiently slow hashing algorithm and/or an absurd number of iterations.
This is the issue with your solution, it isn't really mitigated in such problems because the domain is too small.