|Version 6 (modified by dkg, 6 years ago) (diff)|
Trusted Physical Console
- Best Practices
Trusted Physical Console
CMRG best practices at the moment suggest using a single, well-tuned computer (a "Trusted Physical Console") as your immediate user interface. From this computer, you can connect to any other machine over the network to get done what you need to get done.
If you use computers every day, you might want to know for sure that the machine you are using is secure. Given how complicated these machine are, it's not unreasonable to ask:
- Do i know what software is installed on this machine?
- Do i have some level of control over this machine?
- If this machine knows my data or personal information (including passwords and other authentication tokens), can i trust it not to leak that information?
You might also be frustrated by using an ever-shifting user interface and user experience:
- Is it Ctrl+C or Command+C to copy text?
- Do i click in the upper-left or upper-right of a window to close it?
- Where are my bookmarks for my web browser?
- Is $FAVORITE_TOOL already installed and functional here? Is it the version that i expect it to be? Can i rely on it?
- If i change the settings to my liking, will i be able to recover them the next time i use this machine?
Use Free Software on your TPC to the maximum extent possible. Free software provides you with auditable code, potential for customization for your particular usage patterns, and reduces the extent to which you can be "locked-in" to a vendor with whom you have no shared values, politics, or financial incentives.
Free software also has the advantage that it usually has no explicit monetary cost. This is a technical advantage, because it allows you to evaluate the tools before using them without risking a financial loss. And it also offers a financial advantage if you commit to learning the tool, because you won't need to pay for the initial tool acquisition or upgrades. These financial advantages are slight in comparison with the technical and political advantages of free software, because the majority of the cost of a tool is in your time spent learning how to manipulate it to do what you want quickly, reliably, and conveniently.
When you do find yourself using non-free software, ask yourself:
- Do i need to use this tool?
- Are there free tools that can accomplish a given task?
- If so, what factors are keeping me from using the free tools? Have i communicated those blockers to any development team working on (or with the capacity to work on) those tools?
- If no such free software is available, what is the closest available free tool? What else does it need to do to meet my needs? Have i communicated those needs to any development team working on those tools?
- If nothing free even comes close, have i documented and published the fact that i'm using a non-free tool, and would rather use a free one?
Customize your TPC! It takes a little bit of time investment on your part, but that little bit of time can pay off big if you use a computer as a TPC. Because the TPC is your primary interface to the digital world, you can always count on your customizations and shortcuts to be available to you, so time spent customizing is time you save over the years ahead doing the things you do most often.
If you find yourself doing a task at the TPC that seems boring or repetitive, ask yourself:
- When was the last time i did something like this?
- How are these tasks similar? How do they differ?
- If i could have the computer figure out how to take care of tasks like this, what would i ask it to do? Can i make this framing question fairly concise while keeping it clear?
- With the above framing question in mind, have i looked for software that meets this need?
- Have i asked other people for help?
- If i can't find any such software, have i published my framing question in a forum frequented by people who might do similar tasks?
- Have i published my framing question in a forum frequented by people who might build such tools?
- Have i tried to build a similar tool myself?
Sharing your successful (and not so successful) customizations -- along with the reasoning behind them -- with your friends and allies is a good way to help others. It also helps other people know what tips you might be interested in, which in turn should enrich your computing experience.
This section will be fleshed out soon.
This section will be fleshed out soon.
Back up your TPC. This can't be overemphasized. Because the nature of a TPC indicates that you will be storing confidential information on it (private keys, passwords, and other forms of digital identification, as well as financial and political records), it's strongly recommended that you keep your backups in an encrypted form. There are many ways to do this. Some popular ways include:
- backupninja: encrypted incremental backups over the network
- cryptsetup with rsync: backup copies of your data to an encrypted external disk
Keep an eye on the vital signs of your TPC. If parts indicate that they're heading toward failure, have a recovery plan ready. In the course of using the TPC, make a mental (or digital) note of what you see happening, even if you don't understand specifically what the signs you're seeing mean yet. The human mind is excellent at pattern recognition, and if you pay attention to enough clues, you may discern a pattern. At least, you'll be prepared to notice a change in pattern, which might indicate that something is going wrong, or is behaving unusually.
If a part of your TPC fails, you may be in trouble. The customized environment, the skills you've built, and your various forms of personal identification may be unavailable to you until the device is repaired and functional again. You might find it worthwhile to keep a similar machine around for spare parts. If that is not a possibility, try to know beforehand who you might be able to contact locally who might have parts so that you're not completely scrambling when disaster strikes.
There are problems with the TPC model of computing, of course.
Not everyone can afford a portable machine. However, laptops are becoming much cheaper, and cell phones are becoming more powerful. At some point in the not-too-distant future, the development paths of these two candidates for TPC may intersect, putting TPC-style computing within reach of most people.
At the moment, decent portable computers are still too big and clunky to carry around conveniently. Interestingly, computing power, RAM, and disk capacity (the traditional specs by which computers are measured) are no longer really the limiting factors.
For doing solid computing work on a portable machine, nothing beats a decent, reasonable-sized keyboard and an XGA (1024x768) video display. but these are big things, and are a pain to carry around.
The more durable the machine is, the heavier it is. This is a poor tradeoff for folks who want to take their TPC with them everywhere.
Power Consumption and Batteries
Batteries still suck. Modern portable processors and hardware draw less juice than ever before (with the exception of wireless adapters, which need power for their radio transmission), but they can still pull a decent battery down to nothing in a handful of hours. Bigger batteries add to the weight of the machine.
Single Point of Failure
If you use a TPC, don't back it up regularly, and it crashes/dies/falls into the toilet, you could have a long path to recovery. Back up your TPC!
If you use a single machine for much of your interface with the outside world, you use it regularly, and you bring it with you most places, it's not unusual to form some form of bond with the machine. Yes, it's ridiculous. But it's not surprising, given that we're social beings, and that we tend to treat our most familiar tools (clothes, bicycles, cars, etc) as extensions of ourselves. Be prepared for some level of incredulity or social ridicule from people who don't have a comparably close symbiosis with a comparably complicated machine.