-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
(RFC) Alert devices trying to communicate with a compromised tox id. #1584
Comments
What nodes would be required to store this data? How long would they be required to store it? How many ToxIDs would each node be expected store?
What?
Yes, how would you prevent that?
What? |
@GrayHatter Do dht nodes not already store tox id's along with ip? What1 Rephrase: "Is there a way to make sure a node is providing the correct information and is in sync with the rest of the network?" - maybe by checking with multiple nodes? I'm not sure how to protect against node flood, but having this would be better than nothing. What2 rephrasing "Does current dht not care if nodes are providing wrong data, because of public tox id authentication?" |
there is no current protection against a bad node flood iirc |
they do... but what does that matter?
No, there's no way to prove a node is lying, expect that it wouldn't give you anything at this point.
Unless I lie and make all of your friends think you've lost your keys
If I understand what you're saying. Yes, if a node lies, it doesn't matter much
You can't pretend to be a PubKey if you don't have the SecKey |
They store the flag for as long as they would store the dht entry for that tox id
It is cryptographically signed by the private key of the tox id. So you can't lie in the same way you can't pretend to be a tox id, unless you have the private key of the tox id in which case the flag should be triggered anyway. Every client can check if the flag came from the tox id's private key without trusting anyone. |
@abueide they don't store it longterm, so if the real legit user is offline, the impostor can come online and all the flags are again/still set to false. |
@aaannndddyyy Ah okay that makes sense. I was mistaken on how DHT works. How does certificate revokation work? |
You register with a remote host, and then all of your friends have to download the latest list of "revoked keys" then compare your key to that list. If it's on that list, you know you can't trust the key. |
Centralization eh. We could also have something like built-in Tox torrent to share files that would be seeded by random peers on the network, ensuring the network neutrality and an enhanced security. |
Well, registering with a remote host is just an add on. A client could prompt the user for confirmation and a password in order to "release" the revocation. |
You can't sign messages with the default tox implementation.
How would that work? |
I know. Well, how a client opens a password dialog and will only send out the revokation, should be trivial. |
I know how to get a password prompt, I mean how would the entire workflow be inside toxcore. From creation of account to sending of the revocation? |
Contacts receiving it alarm their user and urge them to consider the connection to be insecure. In this setup no signing is necessary, as messages are all authenticated. If you want also redistribute those certs - be it on a central server or via friends of friends, you'd need signing, which can be done with your crypto lib That being said, I still think the best would be an authentication method built-in similar or identical to socialist millionaires or zrtp's comparing mechanism. Because that is resilient and considers the underlying transport just as a transport. |
Proposal to #1343
Description
There should be a flag in a profile DHT which is initially false. Any user with the private key corresponding with the tox id can cryptographically sign this variable and set it to true, but all nodes will deny any requests, signed or not to set the flag to false. This would essentially permanently mark the id as compromised so the attacker won't be able to change the value to false. Every client should alert any user trying to interact with the tox id that it is compromised and all communications with it should be considered unencrypted.
Why do this instead of just alerting all friends?
Because this will also alert anyone trying to add the tox id that it is compromised, and also to any friends that are offline.
Use case: A vendor is selling items over tox. Their private key is compromised. They switch to a new tox id, but they want to make sure any one who tries to add him or talk to him knows that it is compromised and they shouldn't conduct any trade and assume communications with the tox id are unencrypted.
Topics for Discussion
Verify the node the flag is received from
How do we make sure a client is receiving correct information about if a tox id is compromised? Can an attacker flood the networks with nodes that are distributing that the compromised flag is set to false? Does DHT just rely on the fact that if there was a node distributing bad information, it wouldn't matter because it can be verified that a device is the tox id they say they are by using their tox id's private key?
Method to set flag to true even if private key is lost
The text was updated successfully, but these errors were encountered: