How to differentiate between which hardware the experiment was run on? #127
Replies: 2 comments 9 replies
-
As a bonus, you can use these keys to do device-side validation (using its private key) to block instructions from bad actors. Instructions sent to the device would be encrypted using its public key, then decrypted on the device side to check the signature. In this scenario, maybe you don't want to use the public key as the device's ID in the database... you could encrypt the device's ID using a server-side private key to hide this from external viewers of the database.
|
Beta Was this translation helpful? Give feedback.
-
Summary of access restrictions (minus the ability to assign private collections):
The database manager and the device owner each require exclusive, unique authentication. The database manager gets this through MongoDB login credentials. The device owner gets this by having physical access to the hardware and an optional, external server (e.g., pythonanywhere). The user needs to communicate privately with the device which can be handled through manual encryption #133. The device needs to communicate privately with the database, which MongoDB handles. Related:
This is closely related to setups for materials Informatics data platforms like Materials Project and NOMAD. Citrination distinguishes between public vs. private collections. |
Beta Was this translation helpful? Give feedback.
-
If the data gets dumped into a single MongoDB collection, there's no way to distinguish which device the experiment was run on, and there's no curation as to whether fake data is being uploaded. There are a few options:
I could use the Pico ID, but then it's sort of like making the default password "password" in a way that's accessible by anyone when the hardware is connected to the internet (not a huge deal from a security perspective for this demo - someone starts blinking a light and reading light channel data from your device, but not scalable to solutions that require access restriction What does access restriction look like for a scaled up cloud-accessible lab? #91EDIT: use of Pico ID wouldn't work, because then the Pico ID would be pubicly visible as soon as one data entry gets used - like putting a publicly viewable data entry with the password in itIn other words, the ID that defines the hardware has to be unique to a device and private to only the users of that device. It should also be separate from credentials that are used to control the hardware, so that the database manager can see the database ID but not have remote hardware access.
On the MongoDB side:
API Keys seem to be at the database level, not at the collection level. However, maybe the API key can be distributed freely, while the ID associated with each user is kept private and is part of a custom role or filter. However, registering users requires some setup.EDIT: multiple API keys can be created, each of which have their own IDs associated with them. In other words, API keys can be assigned on a per-person basis, a collection created for each ID, and then have the ID checked before adding to a particular database. The ID should be kept private in this case, but will be accessible by the database manager. The Pico ID doesn't have to be disclosed to the database manager, and it can be changed from the default.Beta Was this translation helpful? Give feedback.
All reactions