Question: I need help storing data within a python program. I don't want the user to be able to touch the data at all. I've looked into pickle but many posts say it is "insecure".

Answer: 
You can't stop the user from touching data. If they're running a program on their system, they can do whatever they want with the bits after you write them to disk. You can obfuscate the data in various ways, possibly even encrypting it, but they can still, eventually get to it if they're determined. If you want proof, look at the absolute failure of every copy protection/DRM system ever invented. There are solutions that are 'good enough' but, without knowing what problem you're actually trying to solve there's no good way to start providing realistic options.

...and Pickle's great if you can trust your data. If you can be reasonably certain that your program wrote a file to disk and that malicious programs aren't actively targeting your application, it's safe. I'd never trust a pickle sent across the network, however - a pickle can potentially execute arbitrary commands during deserialization.
Do you mean within as in within memory, and not on disk? A really simple solution to storing data in memory and making it easily accessible throughout the program would be to make a python file containing a dictionary in your program's root directory.

for example, py/storage.py would contain:

```
data = {}

```

Then you could write to it like so:

```
import storage
storage.data['foo'] = 'bar'

```

and then read the same value in another file like this:

```
import storage
foo = storage.data['foo']

```

The data in the storage module will be accessible to all other modules within the program, but will be erased when the program exits. The user will not be able to touch it without modifying the program. If you need something more database related, sqlite allows you to create databases in memory that only stay in memory as long as the program is running