All Projects → HouzuoGuo → cryptctl

HouzuoGuo / cryptctl

Licence: GPL-3.0 license
A disk encryption utility that helps setting up LUKS-based disk encryption using randomly generated keys, and keeps all keys on a dedicated key server.

Programming Languages

go
31211 projects - #10 most used programming language
Roff
2310 projects

Projects that are alternatives of or similar to cryptctl

MoonOS
MoonOS (just a kernel atm) is a micro kernel designed for the x86_64 and arm architecure.
Stars: ✭ 82 (+256.52%)
Mutual labels:  os
toddler
Toddler is a well-designed usable and portable microkernel OS
Stars: ✭ 70 (+204.35%)
Mutual labels:  os
LUKS-OPs
A bash script to automate the most basic usage of LUKS volumes in Linux VPS
Stars: ✭ 30 (+30.43%)
Mutual labels:  luks
CuBit
General-purpose, formally-verified, 64-bit operating system in SPARK/Ada for x86-64
Stars: ✭ 70 (+204.35%)
Mutual labels:  os
AhnTri
Super-simple OS
Stars: ✭ 54 (+134.78%)
Mutual labels:  os
src
MidnightBSD OS source code
Stars: ✭ 21 (-8.7%)
Mutual labels:  os
AiliceOS
AiliceOS: Build an x86_64 and UEFI OS using Rust
Stars: ✭ 59 (+156.52%)
Mutual labels:  os
Ultra
An operating system that doesn't try to be UNIX. Made completely from scratch with its own bootloader. 😊
Stars: ✭ 48 (+108.7%)
Mutual labels:  os
u2f-luks
No description or website provided.
Stars: ✭ 29 (+26.09%)
Mutual labels:  luks
mbed-tools
⚠️ Beta Status: New command line tooling for Mbed OS
Stars: ✭ 40 (+73.91%)
Mutual labels:  os
ansible-vsphere-gos-validation
Guest OS validation test set for vSphere using Ansible
Stars: ✭ 28 (+21.74%)
Mutual labels:  os
arch-config
Scripts and Ansible playbook to setup Arch Linux on ZFS.
Stars: ✭ 36 (+56.52%)
Mutual labels:  luks
tupai
Tupai is a multi-tasking operating system I wrote for my degree that focuses on safety and design, targeting a variety of platforms.
Stars: ✭ 21 (-8.7%)
Mutual labels:  os
system-fonts
Which fonts can I use?
Stars: ✭ 29 (+26.09%)
Mutual labels:  os
opuntiaOS
opuntiaOS - an operating system targeting x86, ARMv7, Aarch64
Stars: ✭ 566 (+2360.87%)
Mutual labels:  os
zambesii
Non-unix, custom-API hybrid OS kernel written in C++ which can be thought of as an emulated microkernel. The native API is almost fully asynchronous and the kernel is aimed at high-scaling, high-throughput-requiring multiprocessor workloads, with working support for SMP and NUMA already implemented. Join the IRC channel, #zbz-dev on freenode!
Stars: ✭ 13 (-43.48%)
Mutual labels:  os
Aqeous
(Inactive, Checkout AvanaOS, Rewrite of this) This is a New Operating System (Kernel right now). Made completely from scratch, We aim to make a complete OS for Learning purpose
Stars: ✭ 23 (+0%)
Mutual labels:  os
ansible-archlinux
Automated arch linux desktop environment
Stars: ✭ 56 (+143.48%)
Mutual labels:  luks
Onyx
UNIX-like operating system written in C and C++
Stars: ✭ 52 (+126.09%)
Mutual labels:  os
DemOS
Free, simple, extremely lightweight, stackless, cooperative, co-routine system (OS) for microcontrollers
Stars: ✭ 18 (-21.74%)
Mutual labels:  os

cryptctl

cryptctl is a utility for setting up disk encryption using the popular well-established LUKS method. It generates random numbers to use as encryption keys, and safely keep the keys on a centralised key server. It can encrypt arbitrary directories into encrypted disk partitions.

The key server stores all encryption keys in a database directory (by default /var/lib/cryptctl/keydb) and serves the keys via an RPC protocol over TCP (by default on port 3737) to client computers. The key server is the central component of encryption setup, hence it must be deployed with extra physical/network security measures; regular backup of the key database must be carried out to ensure its availability. Communication between key server and client computers is protected by TLS via a certificate, and authorised via a password specified by the system administrator during key server's initial setup.

The encryption routine sets up encrypted file systems using using aes-xts-plain64 cipher, with a fixed-size (512-bit) key generated from cryptography random pool. Encrypted directories will always be mounted automatically upon system boot by retrieving their encryption keys from key server automatically; this operation tolerates temporary network failure or key server down time by making continuous attempts until success, for maximum of 24 hours.

The system administrator can define an upper limit number of computers that can get hold of a key simultaneously. After a client computer successfully retrieves a key, it will keep reporting back to key server that it is online, and the key server closely tracks its IP, host name, and timestamp, in order to determine number of computers actively using the key; if the upper limit number of computers is reached, the key will no longer be handed out automatically; system administrator can always retrieve encryption keys by using key server's access password.

cryptctl can optionally utilise an external key management appliance that understands KMIP v1.3 to store the actual disk encryption keys. Should you choose to use the external appliance, you may enter KMIP connectivity details such as host name, port, certificate, and user credentials during server initialisation sequence. If you do not wish to use the external appliance, cryptctl will store encryption keys in its own database.

To experiment with cryptctl features, you may temporary deploy both key server and encrypted partition on the same computer; keep in mind that doing defeats the objective of separating key data from encrypted data, therefore always deploy key server stand-alone in QA and production scenarios.

cryptctl is commercially supported by "SUSE Linux Enterprise Server For SAP Applications".

Usage

Build cryptctl with go 1.8 or newer versions. It solely depends on Go standard library, no 3rd party library is used.

Install cryptctl binary along with configuration files and systemd services from ospackage/ directory to both key server and client computers. Then, please carefully read the manual page ospackage/man/cryptctl.8 for setup and usage instructions.

RPM package

A ready made RPM spec file and RPM package can be found here: https://build.opensuse.org/package/show/security/cryptctl

License

cryptctl is an open source free software, you may redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published by the Free Software Foundation.

See LICENSE file for the complete licensing terms and conditions.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].