Open××× is a full-featured SSL ××× solution which can accomodate a wide range of configurations, including remote access, site-to-site ×××s, WiFi security, and enterprise-scale remote access solutions with load balancing, failover, and fine-grained access-controls ( articles) ( examples) ( security overview) ( non-english languages).
Open××× implements OSI layer 2 or 3 secure network extension using the industry standard SSL/TLS protocol, supports flexible client authentication methods based on certificates, smart cards, and/or 2-factor authentication, and allows user or group-specific access control policies using firewall rules applied to the ××× virtual interface. Open××× is not a web application proxy and does not operate through a web browser.
For a good conceptual introduction to Open×××, see the program notes for James Yonan's talk at Linux Fest Northwest 2004 -- Understanding the User-Space ×××: History, Conceptual Foundations, and Practical Usage. See also Open××× and the SSL ××× Revolution by Charlie Hosner.
Open××× is an Open Source project and is licensed under the GPL. Commercial licenses are also available for firms who would like to redistribute Open××× with their own proprietary applications. Contact [email]info@open***.net[/email] for more information.

Open××× runs on:

Linux, Windows 2000/XP and higher, OpenBSD, FreeBSD, NetBSD, Mac OS X, and Solaris. An Open××× PocketPC port is under development.

With Open×××, you can:

  • tunnel any IP subnetwork or virtual ethernet adapter over a single UDP or TCP port,
  • configure a scalable, load-balanced ××× server farm using one or more machines which can handle thousands of dynamic connections from incoming ××× clients,
  • use all of the encryption, authentication, and certification features of the OpenSSL library to protect your private network traffic as it transits the internet,
  • use any cipher, key size, or HMAC digest (for datagram integrity checking) supported by the OpenSSL library,
  • choose between static-key based conventional encryption or certificate-based public key encryption,
  • use static, pre-shared keys or TLS-based dynamic key exchange,
  • use real-time adaptive link compression and traffic-shaping to manage link bandwidth utilization,
  • tunnel networks whose public endpoints are dynamic such as DHCP or dial-in clients,
  • tunnel networks through connection-oriented stateful firewalls without having to use explicit firewall rules,
  • tunnel networks over NAT,
  • create secure ethernet bridges using virtual tap devices, and
  • control Open××× using a GUI on Windows or Mac OS X.

What distinguishes Open××× from other ××× packages?

  • Open×××'s principal strengths include cross-platform portability across most of the known computing universe, excellent stability, scalability to hundreds or thousands of clients, relatively easy installation, and support for dynamic IP addresses and NAT.
  • Open××× provides an extensible ××× framework which has been designed to ease site-specific customization, such as providing the capability to distribute a customized installation package to clients, or supporting alternative authentication methods via Open×××'s plugin module interface (For example the open***-auth-pam module allows Open××× to authenticate clients using any PAM authentication method -- such methods may be used exclusively or combined with X509 certificate-based authentication).
  • Open××× offers a management interface which can be used to remotely control or centrally manage an Open××× daemon. The management interface can also be used to develop a GUI or web-based front-end application for Open×××.
  • On Windows, Open××× can read certificates and private keys from smart cards which support the Windows Crypto API.
  • Open××× uses an industrial-strength security model designed to protect against both passive and active attacks. Open×××'s security model is based on using SSL/TLS for session authentication and the IPSec ESP protocol for secure tunnel transport over UDP. Open××× supports the X509 PKI (public key infrastructure) for session authentication, the TLS protocol for key exchange, the OpenSSL cipher-independent EVP interface for encrypting tunnel data, and the HMAC-SHA1 algorithm for authenticating tunnel data.
  • Open××× is built for portability. At the time of this writing, Open××× runs on Linux, Solaris, OpenBSD, FreeBSD, NetBSD, Mac OS X, and Windows 2000/XP. Because Open××× is written as a user-space daemon rather than a kernel module or a complex modification to the IP layer, porting efforts are dramatically simplified.
  • Open××× is easy to use. In general, a tunnel can be created and configured with a single command (and without any required configuration files). Open×××'s documentation contain examples illustrative of its ease of use.
  • Open××× has been rigorously designed and tested to operate robustly on unreliable networks. A major design goal of Open××× is that it should be as responsive, in terms of both normal operations and error recovery, as the underlying IP layer that it is tunneling over. That means that if the IP layer goes down for 5 minutes, when it comes back up, tunnel traffic will immediately resume even if the outage interfered with a dynamic key exchange which was scheduled during that time.
  • Open××× has been built with a strongly modular design. All of the crypto is handled by the OpenSSL library, and all of the IP tunneling functionality is provided through the TUN/TAP virtual network driver.
    The benefits of this modularity can be seen, for example, in the way that Open××× can be dynamically linked with a new version of the OpenSSL library and immediately have access to any new functionality provided in the new release. For example, when Open××× is built with the latest version of OpenSSL (0.9.7), it automatically has access to new ciphers such as AES-256 (Advanced Encryption Standard with 256 bit key) and the encryption engine capability of OpenSSL that allows utilization of special-purpose hardware accelerators to optimize encryption, decryption, and authentication performance.
    In the same way, Open×××'s user-space design allows straightforward porting to any OS which includes a TUN/TAP virtual network driver.
  • Open××× is fast. Running Redhat 7.2 on a Pentium II 266mhz machine, using TLS-based session authentication, the Blowfish cipher, SHA1 authentication for the tunnel data, and tunneling an FTP session with large, precompressed files, Open××× achieved a send/receive transfer rate of 1.455 megabytes per second of CPU time (combined kernel and user time).
  • While Open××× provides many options for controlling the security parameters of the ××× tunnel, it also provides options for protecting the security of the server itself, such as --chroot for restricting the part of the filesystem the Open××× daemon has access to, --user and --group for downgrading daemon privileges after initialization, and --mlock to ensure that key material and tunnel data is never paged to disk where it might later be recovered.

Why choose TLS as Open×××'s underlying authentication and key negotiation protocol?

TLS is the latest evolution of the SSL family of protocols developed originally by Netscape for their first secure web browser. TLS and its SSL predecessors have seen widespread usage on the web for many years and have been extensively analyzed for weaknesses. In turn, this analysis has led to a subsequent strengthening of the protocol such that today, SSL/TLS is considered to be one of the strongest and most mature secure protocols available. As such, we believe TLS is an excellent choice for the authentication and key exchange mechanism of a ××× product.

Does Open××× support IPSec or PPTP?

There are three major families of ××× implementations in wide usage today: SSL, IPSec, and PPTP. Open××× is an SSL ××× and as such is not compatible with IPSec, L2TP, or PPTP.
The IPSec protocol is designed to be implemented as a modification to the IP stack in kernel space, and therefore each operating system requires its own independent implementation of IPSec.
By contrast, Open×××'s user-space implementation allows portability across operating systems and processor architectures, firewall and NAT-friendly operation, dynamic address support, and multiple protocol support including protocol bridging.
There are advantages and disadvantages to both approaches. The principal advantages of Open×××'s approach are portability, ease of configuration, and compatibility with NAT and dynamic addresses. The learning curve for installing and using Open××× is on par with that of other security-related daemon software such as ssh.
Historically, one of IPSec's advantages has been multi-vendor support, though that is beginning to change as Open××× support is beginning to appear on dedicated hardware devices.
While the PPTP protocol has the advantage of a pre-installed client base on Windows platforms, analysis by cryptography experts has revealed security vulnerabilities.

Is Open××× standards-compliant?

As a user-space ××× daemon, Open××× is compatible with with SSL/TLS, RSA Certificates and X509 PKI, NAT, DHCP, and TUN/TAP virtual devices.
Open××× is not compatible with IPSec, IKE, PPTP, or L2TP.

Can Open××× tunnel over a TCP connection?

Yes, starting with version 1.5.

Can I use a web browser as an Open××× client?

No. While Open××× uses the SSL/TLS protocol for security, Open××× is not a web application proxy. It is an OSI layer 2 or 3 full-mesh internetwork tunneling solution and requires that Open××× be installed on both client and server.

Building Open×××

Open××× can easily be built from source for Linux and BSD variants. Building Open××× for Windows is more complex, therefore a pre-built installer is available for Windows on the Open××× download site.
Open××× can be built:
  • with both the OpenSSL Crypto and SSL libraries (version 0.9.6 or higher required), offering certificate-based authentication, public key encryption, and TLS-based dynamic key exchange,
  • with only the OpenSSL Crypto library, offering static-key based conventional encryption and authentication, or
  • standalone, with support for unencrypted UDP tunnels.
Open××× can also be linked with the LZO real-time compression library. Open××× supports adaptive compression, meaning that it will enable link compression only when the tunnel data stream is found to be compressible.
Open××× runs entirely in user space and does not require any special kernel components other than the TUN/TAP virtual network driver available for Windows, Linux, and BSD variants.

Donating to the Open××× project

Please consider donating to the Open××× project. Open××× is entirely a community-supported effort under the GPL, and your donation can go a long way towards ensuring Open×××'s continuing development, including staying on top of security issues, maintaining a rigorous testing program, adding new features, improving documentation, and providing technical support.