17.7.1. Needed software
- Drop-in crypto modules are a needed development. As V.
Bontchev says, "it would be nice if disk encryption
software allowed the user to plug in their own modules.
This way everybody could use whatever they trust - MDC/SHA,
MDC/MD5, DES, IDEA, whatever." [V.B., sci.crypt, 1994-07-
01]
+ Robustness
- Security and robustness are often at odds
- Files that are wiped at the first hint of intrusion
(digital flash paper), remailer sites that go down at the
first signs of trouble, and file transmission systems
that split files into multiple pieces--any one of which
can be lost, thus destroying the whole transmission--are
not exactly models of robustness.
- Error correction usually works by decreasing entropy
through redundancy, which is bad for crypto.
- The military uses elaborate (and expensive) systems to
ensure that systems do not go down, keys are not lost,
etc. Most casual users of crypto are unwilling to take
these steps.
- And so keys are lost, passphrases are forgotten (or are
written down on Post-It Notes and taped to terminals),
and remailers are taken down when operators go on
vacation. All very flaky and non-robust.
- Look at how flaky mail delivery is!
+ A challenge is to create systems which are:
- robust
- not too complicated and labor-intensive to use
- where redundancy does not compromise security
+ Crypto workbench
- An overused term, perhaps, but one that captures the
metaphor of a large set of tools, templates, programming
aids, etc.
+ QKS and "Agents Construction Kit" (under development)
- along with Dylan, DylanAgents, Telescript, and probably
several other attempts to develop agent toolkits
- Henry Strickland is using "tcl" (sort of a scripting
language, like "perl") as a basis.
+ Software crisis
- tools, languages, frameworks, environments, objects,
class libraries, methods, agents, correctness,
robustness, evolution, prototyping
+ Connections between the software crisis and cryptography
- complex systems, complicated protocols
- price of being "wrong" can be very high, whether it's
an airport that can't open on time (Denver) or a
digital bank that has its assets drained in seconds
- agents, objects are hoped to be the "silver bullets"
+ The need for better software methodologies
- "silver bullets"
- failures, errors, flaws, methods
- provably correct designs? (a la Viper)
- It is often said that much better methodologies are
needed for _real time programming_, due to the time-
criticality and (probably) the difficulty of doing
realistic testing. But surely the same should be said
of _financial programming_, a la the banking and
digicash schemes that interest us so much.
- "the one aspect of software that most makes it the
flaky industry it is is that it is unusual for
practitioners to study the work of others. Programmers
don't read great programs. Designers don't study
outstanding designs. The consequences ... no, just look
for yourself. [Cameron Laird, comp.software-eng, 1994-
08-30]
+ Large Software Constructs
- The software crisis becomes particularly acute when
large systems are built, such as--to apply this to
Cypherpunks issues--when digital money systems and
economies are built.
17.7.2. Object-oriented tools
+ While tres trendy, some very real gains are being reported;
more than just a buzzword, especially when combined with
other tools:
- frameworks, toolkits
+ dynamic languages
- greater flexibility than with static, strongly-typed
langueages (but also less safety, usually)
- OpenStep, Visual Age, Visual Basic, Dylan, Telescript (more
agent-oriented), Lisp, Smalltalk, etc
17.7.3. Protocol Ecologies
- Behavioral simulations of agents, digital money, spoofing,
etc.
- the world in which Alice and Bob and their crypto friends
live
- defense, attack, spoofing, impersonation, theft
- elements that are cryptographically strong (like D-H key
exchanges), but combined in complex ways that almost have
to be simulated to find weaknesses
- "middle-out" instead of "top-down" (conventional, formal)
or "bottom-up" (emergent, A-LIFE)
- like Eurisko (Lenat), except oriented toward the domain of
financial agents
17.7.4. Use of autonomous agents (slaves?)
- "An advanced telecommunications environment offers a number
of ways to protect yourself against the problems involved
in dealing with anonymous entities in a situation in which
there is no monopoly Government.....When one's PBX finds
that one's call is not going through via a particular long
distance carrier, it automatically switches to another one.
It is easy to imagine one's intelligent agents testing
various sorts of transaction completions and switching
vendors when one fails. Professional checkers can supply
information on vendor status for a fee. After all, we don't
care if a company we are dealing with changes if its
service is unaffected." [Duncan Frissell, 1994-08-30]
17.7.5. Tools
+ "Languages within languages" is a standard way to go to
implement abstractions
- "Intermediate Design Languages" (IDLs)
- abstract concepts: such as "engines" and "futures"
- Lisp and Scheme have been favored languages for this
- other languages as well: Smalltalk, Dylan
+ For crypto, this seems to be the case: abstractions
represented as classes or objects
- with programming then the selective subclassing
- and sometimes gener
+ "type checking" of crypto objects is needed
- to ensure compliance with protocols, with forms expected,
etc.
- check messages for form, removal of sigs, etc. (analogous
to checking a letter before mailing for proper
addressing, for stamp, sealing, etc.)
- much of the nonrobustness of mail and crypto comes from
the problems with exception handling--things that a human
involved might be able to resolve, in conventional mail
systems
- "dead letter department"?
- Note: In the "Crypto Anarchy Game" we played in
September, 1992, many sealed messages were discarded for
being in the wrong form, lacking the remailer fee that
the remailer required, etc. Granted, human beings make
fairly poor maintainers of complex constraints....a lot
of people just kept forgetting to do what was needed. A
great time was had by all.
17.7.6. "What programming framework features are needed?"
- What follows are definitely my opnions, even more my own
opinions than most of what I've written. Many people will
disagree.
+ Needed:
- Flexibility over speed
- Rapid prototyping, to add new features
- Evolutionary approaches
- Robustness (provably correct would be nice, but...)
17.7.7. Frameworks, Tools, Capabilities
- Nearly all the cutting-edge work in operating systems, from
"mutually suspicious cooperating processes" to "deadlock"
to "persistence," show up in the crypto areas we are
considering.
+ Software of the Net vs. Software to Access the Net
- The Net--is current form adequate?
- Software for Accessing the Net
+ OpenDoc and OLE
- components working together, on top of various operating
systems, on top of various hardware platforms
+ Persistent Object Stores
- likely to be needed for the systems we envision
- robust, so that one's "money" doesn't evaporate when a
system is rebooted!
- interesting issues here...
- CORBA. OpenDoc, OLE II, SOM, DOE, Gemstone, etc.
+ Programming Frameworks
- Dynamic languages may be very useful when details are
fuzzy, when the ideas need exploration (this is not a
call for nondeterminism, for random futzing around, but a
recognition that the precise, strongly-typed approach of
some languages may be less useful than a rich,
exploratory environment. This fits with the "ecology"
point of view.
-
+ Connectivity
- needs to be more robust, not flaky the way current e-mail
is
- handshakes, agents, robust connections
- ATM, SONET, agents, etc....the "Net of the Future"
Next Page: 17.8 Complexity
Previous Page: 17.6 The Effects of Strong Crypto on Society
By Tim May, see README
HTML by Jonathan Rochkind