How to apply encryption on sensitive data exchange? I have the following scenario to which I have to apply cryptography to protect sensitive data:

An embedded Linux computer box will be creating and accepting file packages with contents that should not be accessible to anyone outside a restricted group of persons. These packages will be sent to and retrieved from the box via http or USB drives.

A software tool will exist that can create and extract the packages. This tool will only be accessible to the restricted group.
Another tool will exist that can create packages but not extract them. This will be freely distributed.

These statements also apply:


The files can be easily obtained by any potential attacker.
The box can fall in the attacker's hands at any time but we assume that they will not gain root access to it.
There will be many boxes around and a file created by either of the tools or any box should be accessible by any other box.
The boxes are distributed and are no longer accessible to the restricted group of persons (i.e. to change keys, pass phrases, etc.).


The question is what cryptographic solution can we apply to this scenario using standard algorithms and tools/libraries, and how do we protect the key(s) from a leak from the restricted group of persons (we can assume a sub-group of them is 100% trustworthy).
It would be possible setting up a server in a restricted network that could handle the decryption for the tool for the restricted group of persons.
This is the answer I can come up with after more investigation and comments above:


All boxes have a shared public/private key pair with the private key protected with a passphrase.
The software tool will have the same public key but not the private key.
The software tool also has a symmetrical key. 
There is a server in a secure network that has the shared public/private keys. The server also has the symmetrical key.
When someone with the right to decrypt wants to decrypt a file using the tool they will connect to the secure network via VPN and the tool will send a request for the file to be decrypted. The request is encrypted with the symmetrical key. The server decrypts the request and then the file and re-encrypts just with the symmetrical key.
The symmetrical key can be changed every so often.
Instead of the symmetrical key we could use a second public/private key pair.