Main > Free Download Search >

Free cryptography software for linux

cryptography

Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 57
Flux 0.10.0

Flux 0.10.0


Flux is an easy-to-use crypto, compression, I/O, and memory management library. more>>
Flux is an easy-to-use crypto, compression, I/O, and memory management library.

Flux consists of utility APIs that apply compression and strong cryptography to I/O channels (file or network), do strong hashing, and exchange C structs in an architecture-independent fashion.

It also provides n-ary trees whose contents can be serialized to human-readable files or network streams, along with some related utilities. It is written in C and integrates with the GLib main loop.

<<less
Download (0.13MB)
Added: 2006-03-21 License: GPL (GNU General Public License) Price:
1863 downloads
autocrypt 0.0.3

autocrypt 0.0.3


autocrypt is an automatic crypted disk mapping creation with rootplug. more>>
autocrypt its a set of scripts that use linux hotplug/udev/cryptoapi mechanism to allow you autocrypting a harddrive what do I means by autocrypting : I means using a "rootplug" ie an identification device to activate the possibility of mounting automatically a crypted device.

Youll need such tool if typically you have some data you require to protect whith cryptography and that you want not creating the node "by hand" each time (this require root privileges) look at the following scenario :

you work into a company which data are sensitives
you dont want to encrypt your home using pam crypt because
you dont want to have to setup your workspace each time you come back.

So you dant want to logout, using a screensaver to prevent use of your computer. But while youre loged the data are accessible.... a malicious hacker can login to you box via network and have access to your data....

You can manually create the cryting device mounting and umounting them at demand but this means you have root privilege you can use a special identification device, a "key" that do it for you.... thats autocrypt this solution use the widely available usbkeys/drives to create the unencrypted devices when the key is pluged and to remove it safely when the device is removed.
<<less
Download (0.003MB)
Added: 2005-04-20 License: Artistic License Price:
1649 downloads
Ajisai 0.4.0

Ajisai 0.4.0


Ajisai is a C++ SSL/TLS library. more>>
Ajisai is a SSL/TLS implementation written entirely from scratch in C++. It uses Botan for performing the cryptography and X.509 handling.
This is an alpha release, it is virtually certain that incompatible API changes will be made in the future. Suggestions on weak points in the API are most welcome. As of now, Ajisai is somewhat fragile, and does not make available many of the features TLS offers.
Currently only SSLv3 and TLS 1.0 are supported; TLS 1.1 and DLTS will be supported in future releases. At this point is can be built only on Unix and Unix-like systems, but that will change eventually.
TODO:
Bugs:
- We assume one recordone handshake message, this is not true for IIS/IE, probably lots of other stuff.
- No support for client authentication on either end (currently some code for it, but disabled as its completely broken).
Protocol:
- TLS 1.1
- TLS extensions
- DTLS
- Reading a SSLv2 client hello
- Session caching
- Compression support
- Anonymous Diffie-Hellman, maybe. Its useful in some contexts.
- OpenPGP key support
Server:
- We want to be able to multiplex multiple Server objects at once (multiple clients). This will probably be based on a Socket* select(2) wrapper, but I might end up leaving it to the application.
Sockets:
- IPv6 support
- IPv4 + IPv6 UDP sockets (for DTLS)
- Write a select() wrapper
- Support Win32 sockets (IPv4/IPv6)
<<less
Download (0.14MB)
Added: 2005-10-06 License: GPL (GNU General Public License) Price:
1478 downloads
Cyfer 0.6.0

Cyfer 0.6.0


Cyfer is a portable modular low-level cryptographic library. more>>
Cyfer is a portable low-level cryptographic library with support for several programming languages. Cyfer provides implementations of many message digest (hash), block and stream cipher, and public-key algorithms.
The library is extremely modular, providing easy way to add or modify algorithm implementations, or even separating the particular algorithm from the library physically (suitable for embedded environments).
The generic API provides a consistent way to use the library algorithms, and allows for algorithm selection at either the compile time or at runtime, so the application which uses Cyfer can be completely unaware of the algorithm specifics.
Cyfer is a low-level library. It deals only with various algorithms, and completely avoids the problems of data representation.
This is most evident in public-key sections; cyfer completely avoids the existing Public Key Infrastructure (PKI) standards. If you need this functionality, use the excellent and free OpenSSL, or some similar library.
The library design concept emphasises on simplicity and elegance (of both the algorithm implementations (if possible:) and the support library code), not maximizing performance or minimizing memory footprint.
The algorithm implementations are straightforward, so they can be used for educational purposes.
Cyfer is portable to any platform with sane C development environment, the only requirement being the availability of the GMP (GNU Multiple Precision arithmetic) library.
As the GMP is used only for public-key cryptography, hash or symmetric cipher components should work everywhere.
Enhancements:
- moved wrappers to separate packages
- unbundled win32 support gmp library
- polished the documentation
- polished the build process and package creation
<<less
Download (0.33MB)
Added: 2005-10-08 License: BSD License Price:
1476 downloads
CryptoServer 1.0

CryptoServer 1.0


Community CryptoServer is server-side cryptography tool that runs as a daemon. more>>
CryptoServer is OpenSource Server-side cryptography tool and run as daemon.

It is already tested in very busy environment and can support over one million transaction an hour.

CryptoServer accept the GPL License and can use it for any purpose as is.
<<less
Download (0.063MB)
Added: 2005-10-31 License: GPL (GNU General Public License) Price:
1453 downloads
cosign 1.9.3

cosign 1.9.3


cosign is a Web single sign on system that allows users to authenticate once per session and access any protected Web resources. more>>
cosign is a Web single sign on system that allows users to authenticate once per session and access any protected Web resources at the institution. When you use cosign the passwords are sent only to a single, central URL.
Sessions have both idle and hard timeouts, and users can logout of all protected services by visiting a single URL. The use of public key cryptography ensures that a compromise of a protected Web server has no impact on the security of other participating servers.
cgi
The central cgi is responsible for logging users into and out of the central cosign server. It is also responsible for registering each service a user logs into - this action ties the users central login cookie to their session on individual application servers such as our web mail client, web directory client, or CourseTools environment. The prototype CGI was built to use Kerberos V/GSSAPI to authenticate the user.
daemon
The central daemon is responsible for maintaining the state of all cosign sessions. This includes keeping track of which users have logged in, logged out, and idle timed out. This also means the daemon keeps track of all of the service cookies that represent the authenticated web applications a user has accessed. The daemon has the ability to replicate its cookie database to multiply hosts, so a failure of one server does not constitute a failure of the system. The daemon answers queries of user identity from both the cgi and the filter, and talks to other daemons through a replication protocol. The daemon was written in C and has knowledge of Kerberos V tickets.
filter
The filter resides on an application server, and is not part of the centralized cosign infrastructure. The filter is responsible for determining which areas of a web site are protected by cosign and which are not. If a user attempts to access a protected area, the filter assures the user is authenticated, and obtains their username, authentication realm, IP address, and optionally a Kerberos ticket. This information can then be used by other authorization mechanisms to make further access decisions. The prototype filter was written in C for Apache 1.3.x.
Enhancements:
- daemon: updated return codes
- daemon: fixed bug in retrieve access control
- daemon: fixed bug where HUP with replication turned on would cause the server to die and exit.
- man: reorganized and fixed typos
<<less
Download (0.31MB)
Added: 2005-12-15 License: GPL (GNU General Public License) Price:
1409 downloads
Linvpn 3.0

Linvpn 3.0


Linvpn is a secure socket layer for pppd. more>>
Linvpn is a secure socket layer for pppd. Linvpn project allows creation of virtual private networks by using an IP routing system between PPP network interfaces.

Cryptography is done by libgcrypts 3DES or blowfish, and Initialization Vector (IV) is changed in each packet transmission.

As linvpn works as client and server, and communication is a single TCP connection, it allows creation of secure tunnels even in complex network layouts, when one or both endpoints are behind a firewall or NAT, with or without dynamic IP addresses.
Linvpn has been tested under Linux, FreeBSD, NetBSD and OpenBSD.

<<less
Download (0.13MB)
Added: 2006-01-09 License: GPL (GNU General Public License) Price:
1383 downloads
ssss 0.5

ssss 0.5


ssss is an implementation of Shamirs secret sharing scheme for UNIX systems. more>>
ssss project is an implementation of Shamirs secret sharing scheme for UNIX systems.
In cryptography, a secret sharing scheme is a method for distributing a secret amongst a group of participants, each of which is allocated a share of the secret. The secret can only be reconstructed when the shares are combined together; individual shares are of no use on their own.
More formally, in a secret sharing scheme there is one dealer and n players. The dealer gives a secret to the players, but only when specific conditions are fulfilled.
The dealer accomplishes this by giving each player a share in such a way that any group of t (for threshold) or more players can together reconstruct the secret but no group of less than t players can. Such a system is called a (t,n)-threshold scheme.
A popular technique to implement threshold schemes uses polynomial interpolation ("Lagrange interpolation"). This method was invented by Adi Shamir in 1979. You can play around with a threshold scheme on the demo page.
Note that Shamirs scheme is provable secure, that means: in a (t,n) scheme one can prove that it makes no difference whether an attacker has t-1 valid shares at his disposal or none at all; as long as he has less than t shares, there is no better option than guessing to find out the secret.
Enhancements:
- This release adds memory locking and TTY echo suppression.
- A buffer overflow condition has been fixed.
<<less
Download (0.017MB)
Added: 2006-01-16 License: GPL (GNU General Public License) Price:
1379 downloads
borZoi 1.0.2

borZoi 1.0.2


borZoi is a C++ Elliptic Curve Cryptography Library. more>>
borZoi is a C++ Elliptic Curve Cryptography Library. borZoi implements the following algorithms using elliptic curves defined over finite fields of characteristic 2 (GF2m):
ECDSA (Elliptic Curve Digital Signature Algorithm)
As specified in ANSI X9.62, FIPS 186-2 and IEEE P1363.
ECIES (Elliptic Curve Integrated Encryption Scheme)
As specified in ANSI X9.63 and the IEEE P1363a Draft.
Elliptic Curve Diffie-Hellman Key Agreement Scheme
As specified in ANSI X9.63 and IEEE P1363.
The AES symmetric encryption scheme (NIST AES draft) and SHA-1 hash algorithm (FIPS 180-1) are also included.
Installation:
borZoi can be built using either an internal math library or Victor Shoups NTL number theory library which provides better performance. If NTL is used, it must be first downloaded from http://www.shoup.net and installed.
GNU Development Tools:
1) (If NTL is not installed) ./configure
(If NTL is installed) ./configure --enable-ntl
2) make
3) make install
Enhancements:
- Fixed a bug in the KDF2 function which caused the effective key length to be limited to a maximum of 160 bits.
- This problem did not affect the security of ECKAS_DH1 because the key length is set to 128 bits, however the security of the 256 bit symmetric key used in ECIES was reduced to an effective key length of 160 bits.
- Corrected the section on KDF2 in the manual so that the oLen parameter refers to the length of the key in bytes not bits.
<<less
Download (0.59MB)
Added: 2006-03-15 License: GPL (GNU General Public License) Price:
1374 downloads
jBorZoi 0.90

jBorZoi 0.90


jBorZoi is a Java Elliptic Curve Cryptography Library. more>>
jBorZoi is a Java Elliptic Curve Cryptography Library. jBorZoi implements the following algorithms using elliptic curves defined over finite fields of characteristic 2 (GF2m):
- ECDSA (Elliptic Curve Digital Signature Algorithm)
As specified in ANSI X9.62, FIPS 186-2 and IEEE P1363.
- ECIES (Elliptic Curve Integrated Encryption Scheme)
As specified in ANSI X9.63 and the IEEE P1363a Draft.
- Elliptic Curve Diffie-Hellman Key Agreement Scheme
As specified in ANSI X9.63 and IEEE P1363.
The AES symmetric encryption scheme is also included.
Quick Start
javac jBorZoi_Examples.java
java jBorZoi_Examples
Future Development
Only bug fixes and changes required for compatibility with cryptographic standards will be added between now and the 1.0.0 release.
Comments and Bug Reports
We welcome any comments or bug reports which you may have, however please note that we cannot accept any patches for legal reasons, because the borZoi code is also used in our commercial products.
Enhancements:
- Changed Fq.compareTo(Fq) and Fq.isZero() to public methods.
- Implemented ECDomainParameters.isValid()
- Changed the ECIES.decrypt() RuntimeException to an Exception
- Changed the ECDSA.initSignature(ECPrivKey) Exception to NoSuchAlgorithmException
- Changed the ECDSA.initVerify(ECPubKey) Exception to NoSuchAlgorithmException
<<less
Download (0.37MB)
Added: 2006-03-15 License: GPL (GNU General Public License) Price:
1373 downloads
Openwall GNU/*/Linux 2.0

Openwall GNU/*/Linux 2.0


Openwall GNU/*/Linux is a security-enhanced operating system with Linux and GNU software as its core. more>>
Openwall GNU/*/Linux (or Owl for short) is a security-enhanced operating system with Linux and GNU software as its core, compatible with other major distributions of GNU/*/Linux. Openwall GNU/*/Linux is intended as a server platform. And, of course, it is free.
Main features:
- While we value quality above feature set, Owl does indeed offer a number of features besides just trying to be more secure.
- Most obviously, Owl can be used as a base for installing whatever software is generally available for GNU/*/Linux systems. It offers some compatibility (read below) for software packages found in or developed for other major Linux distributions, such as Red Hat Linux.
- Additionally, being a server platform, Owl will include a growing set of integrated Internet services.
- Owl includes a complete build environment capable to re-build the entire system from source with one simple command ("make buildworld"). (This is explained in more detail below.)
- Owl supports multiple architectures (currently x86, SPARC, and Alpha), as this lets you use it in more cases and helps us catch certain classes of software bugs earlier, thus improving the reliability of Owl packages.
Security:
- Owl combines several approaches to reduce the number and/or impact of flaws in its software components and impact of flaws in third-party software that one might install on the system.
- The primary approach used is proactive source code review for several classes of software vulnerabilities. However, because of the large amount of code, theres a certain level of "importance" for a software component or a part thereof to be audited. - Currently, only pieces of code which are typically run with privileges greater than those of a regular user and/or typically process data obtained over a network are audited before the corresponding software component is included. This covers relevant code paths in many of the system libraries, all SUID/ SGID programs, all daemons and network services. Other software may be audited when it is already a part of Owl. Potential problems found during the audit are fixed or, in some pathological cases, may prevent the software component from being included. In general, code quality and privilege management are always considered when theres a choice between implementations of a feature. As the project evolves, many of the software components will be replaced with ones of our own.
- When packaged for Owl, the software components are configured or, when necessary, modified in order to provide safe defaults, apply the least privilege principle, and introduce privilege separation. The use of safe defaults, where optional and potentially dangerous features need to be turned on explicitly, lets us audit the pieces of code used in in the default configuration in a more thorough way. Extra systems administration facilities ("owl-control") are provided for managing system features such as the optional SUID/SGID binaries independently from installing the corresponding packages. Every Owl package will have its audit status documented to allow for risk assessment.
- While source code review is the preferred way to deal with software vulnerabilities, it cant be applied in all cases. Typically, when insecure third-party software is installed on an otherwise secure system, "the game" is lost. The only thing an operating system can guarantee is that potential unauthorized access would be limited to those privileges granted to the software in question. However, in the recent years, a number of approaches were developed which reduce the likelihood and/or may reduce the impact of successful real-world attacks on insecure third-party software. Owl will use some of those "hardening" approaches in various parts of the system.
- Owl uses "strong" cryptography within its core components, and already includes some security policy enforcement (proactive password checking with "pam_passwdqc", password and account expiration, network address- based access control) and integrity checking ("mtree") capabilities. It is one of our goals to provide a wide range of security tools with Owl, available for use "out of the box".
Enhancements:
- After many Owl-current snapshots, Owl 2.0 release is finally out.
- Owl 2.0 is built around Linux kernel 2.4.32-ow1, glibc 2.3.6 (with our security enhancements), GCC 3.4.5, and recent versions of over 100 other packages.
- It offers binary- and package-level compatibility for most packages intended for Red Hat Enterprise Linux 4 (RHEL4) and Fedora Core 3 (FC3), as well as for many FC4 packages.
- Additionally, Owl 2.0 uses our new installer, making installation a lot easier than it used to be for Owl 1.1 and below.
<<less
Download (407.7MB)
Added: 2006-02-16 License: GPL (GNU General Public License) Price:
1349 downloads
stephanie 3.0

stephanie 3.0


stephanie is a program for hardening OpenBSD for multiuser environments. more>>
stephanie is a program for hardening OpenBSD for multiuser environments.

Mmmmm, OpenBSD. Functional, secure, free. With an emphasis on security and integrated cryptography, it carries an excellent reputation for plain old "you-just-cant-hack-this-ness". Not perfect, but nothing is, at least theyre not wearing suits and lying to you.

There are a few roles where i believe OpenBSD fits perfectly. One of these is in multiuser environments, where you have large numbers of possibly malicious users with local access. Here the OpenBSD teams commitment to auditing and fixing code provides a level trust in the environment which is hard to find elsewhere. Also, their efforts to provide integrated cryptography means setting up secure access is easy. So, lets take advantage of the freely available source and tailor it to our specific needs.

Details:

In Phrack 54, route|Mike Schiffman wrote a series of patches for OpenBSD 2.4 for Trusted Path Execution (TPE). Stephanie brings a modified version of these up to speed for OpenBSD 2.8 - 3.0, along with some additional features. A trusted path is one where the parent directory is owned by root and is neither group or other writeable. The TPE works off an internal list of trusted user ids. If a given user tries to execute a file not in a trusted path, and their user id is not in the kernels trusted list, they are denied execution privileges. In real terms, this means they cant download, compile and run krad-sploit.c.

In addition to the TPE, a series of privacy patches came along too. Originally supplied as patches for the individual utilities, these are now implemented through kvm(3), and honour trusted users (ie, trusted users are allowed to see all system information). As a practical example, this means that untrusted users will only be able to see information about processes they own, and the stat tools (netstat, iostat, vmstat, etc) will generally be broken for them. It has been pointed out that by going through trying to kill every possible process id you can find other users processes, but you cant really gain any information on them, so this is not really a great concern.

The original TPE patches had one known way of bypassing the execution restrictions, which was using shell redirection to allow arbitrary interpreted language scripts to be run (perl, sh, etc). This has been fixed up, but could possibly be a big pain in the ass, so please pay attention. When an interpreter is invoked, like most things, it creates a new process group with a job count of one. When a series of commands are connected via the | character on the command line, all the commands belong to the same process group and the job count represents the number of commands eg ps -ax | grep something | awk {print $1} has a job count of three, and the ps, grep and awk processes all belong to the same process group.

The one exception to this is when a user logs in, where we find their shell has its job count set to zero. So how can we use this to prevent shell redirection for a given set of programs? We need to be able to distinguish between ordinary commands and interpreters. At the moment this is done by setting the immutable flag on them. So, in kern_exec(), if we find an untrusted user executing something with the immutable flag set and a job count greater than zero, we flag the process as being potentially dodgy. Then in other system calls we disallow read()ing from fd 0 (stdin) and things like dup2(0, n) if the process has been flagged.

There are two main disadvantages to this. First is the system will need to be brought down to single user mode if the interpreter needs to be patched, and secondly, people will have a hard time suing to an untrusted user. Of course, when a user has shell, they can still type any commands that could otherwise be placed in a shell script, but at the least, this will raise the bar a bit.

Finally, Stephanie brings restricted symbolic links, ala the openwall patches for linux. As time permits, im still working on adding additional features, and will add bits of the openwall stuff i like. The basic goal is to add an extra layer of security without being a monumental pain in the ass to legitimate users, so some things wont be there. I havent added the additional hard link restrictions of the openwall patch, but will do something about this later as time permits.

Installing:

Step by step instructions are presented in the install guide which comes with the source. Read it all first, but its reasonably straight forward. It would be a good idea to read the original article (local copy) if you havent already.

Its distributed under the original two clause BSD license, mess with it all you want, but dont get cranky at me if it breaks something.

You can also read the tpe_adm(8) man page online.
<<less
Download (0.014MB)
Added: 2006-03-10 License: GPL (GNU General Public License) Price:
1326 downloads
jSaluki 0.82

jSaluki 0.82


jSaluki is a small easy to use Java Hyperelliptic Curve Cryptography Library. more>>
jSaluki is a small easy to use Java Hyperelliptic Curve Cryptography Library.

Hyperelliptic Curve Cryptography is still an experimental area so this library is only recommended for research and educational purposes.

Real life cryptosystems should use a more proven method such as Elliptic Curve Cryptography.

Quick Start:

javac jSaluki_Example.java
java jSaluki_Example
<<less
Download (0.12MB)
Added: 2006-03-13 License: GPL (GNU General Public License) Price:
1323 downloads
WaMCom 1.3.1

WaMCom 1.3.1


WaMCom is an open source software project, providing modified versions of Mozilla client software. more>>
WaMCom is an open source software project, providing modified versions of Mozilla client software. WaMCom comes from Web and Mail Communicator.

End users are looking for stable software. But the Mozilla organization makes it clear to say: "We make binary versions of Mozilla available for testing purposes only!"

The intention of WaMCom.org is to produce web browser and mail client software that is more stable and more correct than the test releases produced by the Mozilla.org organization, in the hope it is suitable for end users. In order to achieve that, stable Mozilla releases are extended with correctness fixes.

In addition it contains some security and cryptography enhancements.

WaMCom releases consist of:

95% official Mozilla milestone release
4% carefully selected fixes, official Mozilla code from ongoing development
1% other modifications the WaMCom maintainer(s) want to include
<<less
Download (27.2MB)
Added: 2006-05-16 License: GPL (GNU General Public License) Price:
1265 downloads
seppl 0.4

seppl 0.4


seppl is both a protocol definition and a software implementation of a new encryption layer for IPv4. more>>
seppl is both a protocol definition and a software implementation of a new encryption layer for IPv4. seppl project makes use of symmetric cryptography for encrypting the whole traffic on a network. Its implementation is designed around Linux netfilter/iptables.
seppl introduces two new netfilter targets: CRYPT and DECRYPT. A firewall rule may thus be used for encrypting/decrypting the incoming and outgoing network traffic. This makes seppl extraordinarily easy to use, since no daemons need to run for secure communication.
seppl uses the encryption engine of the Linux Cryptographic API which is available in kernel 2.4.22 and newer.
seppl is primarily intended for encrypting wireless LANs (as secure replacement of the broken WEP encryption) and local ethernet networks but may be used for large scale VPN solutions as well.
The protocol seppl relies on is not compatible with any other software. The protocol is open and well defined but there is no implementation other than this reference software.
Why SEPPL, there are already IPSEC, CIPE,...?
CIPE may be used for point-to-point connections only. It has tunnel structure and thus introduces new IP addresses. This is not always desirable. It requires a user space daemon.
IPSEC/FreeSwan is extremely complicated to use. Due to its strange routing scheme it is nearly impossible to use together with routing daemons. IPSEC is heavyweight.
seppl is truely peer-to-peer. It encrypts seamlessly all outgoing traffic and it thus compatible with routing daemons. It is extremely easy to use as well, as it makes no change to the normal routing behaviour. seppl is extremely lightweight.
The Implementation
The implementation consists of three Linux kernel modules: seppl.o, ipt_CRYPT.o and ipt_DECRYPT.o. The former is the in-kernel key manager, the latter are the two new netfilter targets. Both depend on seppl.o.
seppl.o must be inserted into kernel in first place. The key manager may be accessed with the file /proc/net/seppl_keyring. It contains binary key data, and is initially empty. You may add a new key by writing it to that file.
The two Python scripts seppl-ls and seppl-gen-key me be used for key management. seppl-ls may be used for converting seppl keys between the binary format used by /proc/net/seppl_keyring and a human readable XML based format. Simply call seppl-ls for a list of all currently active keys. seppl-gen-key generates a new key from /dev/urandom. By default it will use the XML format. The parameter -x forces binary mode. You may generate and activate two keys "linus" and "alan" by issuing the following command lines:
seppl-gen-key -n linus -x > /proc/net/seppl_keyring
seppl-gen-key -n alan -x > /proc/net/seppl_keyring
seppl-ls without argument lists the new keys saved in the kernel keyring. You may remove all (currently unused) keys by issuing:
echo clear > /proc/net/seppl_keyring
Since seppl is based on symmetric cryptography using shared keys you have to copy newly generated keys to every host you want to connect to your seppl infrastructure. (preferably via SSH or any other secure file transfer) You get a binary copy of your current keyring by issuing:
cat /proc/net/seppl_keyring > keyring.save
Now copy that file keyring.save to all other hosts and issue the following command there:
cat keyring.save > /proc/net/seppl_keyring
That is simple, isnt it?
After doing so you may configure your firewall settings on each host:
iptables -t mangle -A POSTROUTING -o eth0 -j CRYPT --key linus
iptables -t mangle -A PREROUTING -i eth0 -j DECRYPT
This will encrypt all outgoing traffic on eth0 with the key "linus". All incoming traffic is decrypted with either "linus" or "alan", depending on the key name specified in the specific network packet. Unencrypted incoming packets are silently dropped. Use
iptables -t mangle -A PREROUTING -p 177 -i eth0 -j DECRYPT
for allowing both crypted and unencrypted incoming traffic.
Thats it. Youre done. All your traffic on the local subnet is now crypted with seppl.
The default cipher is AES-128. If you dont specify the name of the used key it defaults to "def".
An SysV init script /etc/init.d/seppl is provided. It will load seppls kernel modules and write all keys from the directory /etc/seppl to the kernel keyring. It will not add any firewall rules, however.
Performance issues
The network packets are increased in size when they are crypted, since two new headers and the IV are added. (36 bytes in average) This conflicts on some way with the MTU management of the Linux kernel and results in having all large packets (that is: package size near MTU) fragmented in one large and another very small package. This will hurt network performance. A work-around of this limitation is using the TCPMSS target of netfilter to adjust the MSS value in the TCP header to smaller values. This will increase TCP perfomance, since TCP packets of the size of the MTU are no longer generated. Thus no fragmentation is needed. However, TCPMSS is TCP specific, it wont help on UDP or other IP protocols.
Add the following line before encryption to your firewall setup:
iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o eth0 -j TCPMSS --set-mss $((1500-40-8-16-6-15))
The Protocol
For encryption every single unencrypted packet is taken and converted to a crypted one. Not a single further packet is ever sent.
Original SEPPL counterpart
+------------+ +-----------------------+
| IP-Header | | Modified IP-Header | |
+------------+ +-----------------------+ |
| Payload | | SEPPL-Header | > Unencrypted
+------------+ +-----------------------+ |
| Initialization Vector | |
+-----------------------+ /
| SEPPL-Header |
+-----------------------+ | Crypted
| Payload | |
+-----------------------+ /
The original IP header is kept as far as possible. Only three fields are replaced with new values. The protocol number is set to 177, the fragment offset is set to 0 and the total length is corrected to the new length. All other fields are kept as is, including IP options.
The unencrypted seppl header consists of a one-byte cipher number and a key name. Currently only 0 and 1 are defined as cipher numbers for AES with 128bit key, resp. AES with 192bit key. The key name (7 bytes) may be used to select a specific key in a larger keyring.
The IV is used for CBC coding of the cipher used. It differs from packet to packet, but is not randomly generated. Due to perfomance reasons, only the initial IV on system startup is randomized, all following IVs are generated by incrementing the previous ones.
The crypted seppl header consists of three saved fields of the original IP header (protocol number, fragment offset, total length) and a byte which is always 0 for detecting unmatching keys.
The payload is the original IP-playload, from the TCP/UDP/other header to the end.
Version restrictions:
- seppl interferes with netfilters connection tracking in some way. Thus you will not be able to use NAT in conjunction with seppl. If you use connection tracking in some other way together with seppl your mileage may vary.
- seppl is tested with Linux 2.6.1. Use version 0.3 for Linux 2.4.
<<less
Download (0.32MB)
Added: 2006-05-17 License: GPL (GNU General Public License) Price:
1255 downloads
Secleted [ 0 ] software to compare
  • Page: 1 of 4
  • 1
  • 2
  • 3
  • 4