REBOL Technologies

Contemplating Simplicity

Carl Sassenrath, CTO
REBOL Technologies
16-Feb-2005 22:37 GMT

Article #0127
Main page || Index || Prior Article [0126] || Next Article [0128] || Post Comments || Send feedback

I've always liked Einstein's famous quote: "Make things as simple as you can, but no simpler." The "no simpler" part of that sentence is very important. Solving some types of problems requires more than just the simplest solution. In many cases, "simple" by itself will not work.

Have you ever found that many programmers and IT people don't understand what we mean when we say "simple" in reference to REBOL? I think what we have here is a failure to communicate. "Simple" is probably not the right word. We like it, because the word simple is simple. But, maybe we've oversimplified simple.

Here is a good case in point. REBOL/Services provides robust security for communication. It does quite a lot, as summarized in the section below. Its implementation cannot be considered "simple". In fact, parts of it are somewhat complex (but not overly so). However, the programming interface is indeed quite simple to use. In one line of REBOL, you can establish a connection to a REBOL/Service, authenticate, and initialize robust encryption. That is handy.

Equally relevant to the simplicity argument is the simple fact that the current REBOL/Services client implementation is only 24 KB of source code (comments stripped). In mold-compressed form (the download size), it is 5.8 KB. The server is 48 KB or about 15 KB mold-compressed.

Do we call that simple? Not really. We would call that "tiny". But, when it comes to software, what is the relationship between tiny and simple? Is there one? We might be tempted to label it as "simple" when explaining it to someone, but that might falsely imply that it is also underpowered or inadequate. It is not. In fact, it is not only powerful, but very flexible.

So, what's the best word to use? Elegant, lightweight, agile, dynamic? As usual, we will want to pick the word carefully. We need a word that is quite simple, but no simpler.

Summary of REBOL/Services Security

REBOL/Services offers three different encryption methods: cloak (the default), AES (advanced encryption standard), and RSA. In addition, the server can be configured as open (to allow non-authenticated access) or private, or a mixture of both (open for some commands, private for others). You can use shared-secret keys or an RSA public/private key pair. Authentication uses a SHA1 digest-generated plus shared secret hash key. When you authenticate, a unique session key is generated from shared-secret keys, user-specific hashes, and digested hashes. You can have the session key regenerated as often as you need, say, every few minutes. Also, packets are sequenced to prevent man-in-the-middle replay attacks. In addition, packets can be encoded as binary (the default), hex, or base-64.

That's quite a lot for a few KB of code.

Post Comments

Updated 18-Nov-2024   -   Copyright Carl Sassenrath   -   WWW.REBOL.COM   -   Edit   -   Blogger Source Code