EKON20 is now over, and there was a lot of people, great speakers, beautiful T-Shirt, and fresh beer! I've published the slides of my mORMot conferences on SlideShare... EKON20 From RAD to SOA with mORMot EKON20 mORMot Legacy Code Technical Debt Delphi Conference EKON20 Ride a mORMot EKON20 2016 […]
2016-10-18
Cheat Mode for Private Keys
2016-10-18. Open Source › mORMot Framework
In order to follow best practice, our .private key files are
always protected by a password. A random value with enough length and
entropy is always proposed by the ECC tool when a key pair is
generated, and could be used directly.
It is always preferred to trust a computer to create true randomness (and
SynCrypto.pas's secure TAESPRNG was designed to be
the best possible seed, using hardware entropy if available), than using our
human brain, which could be defeated by dictionary-based password
attacks.
Brute force cracking would be almost impossible, since
PBKDF2_HMAC_SHA256 Password-Based Key Derivation Function with
60,000 rounds is used, so rainbow tables (i.e. pre-computed passwords list)
will be inoperative, and each password trial would take more time than with a
regular Key Derivation Function.
The issue with strong passwords is that they are difficult to remember. If
you use not pure random passwords, but some easier to remember values with good
entropy, you may try some tools like https://xkpasswd.net/s which returns values like
$$19*wrong*DRIVE*read*61$$.
But even then, you will be able to remember only a dozen of such passwords. In
a typical public key infrastructure, you may create hundredths of keys, so
remembering all passwords is no option for an average human being as (you and)
me.
At the end, you end up with using a tool to store all your passwords (last
trend is to use an online service with browser integration), or - admit it -
store them in an Excel document protected by a password. Most IT
people - and even security specialists - end with using such a mean of storage,
just because they need it.
The weaknesses of such solutions can be listed:
- How could we trust closed source software and third-party online services?
- Even open source like http://keepass.info/help/base/security.html may appear weak (no PBKDF, no AFSplit, managed C#, SHA as PRNG);
- The storage is as safe as the "master password" is safe;
- If the "master password" is compromised, all your passwords are published;
- You need to know the master password to add a new item to the store.
The ECC tool is able to work in "cheat mode", storing all
.private key files generated passwords in an associated
.cheat local file, encrypted using a cheat.public
key.
As a result:
- Each key pair will have its own associated
.cheatfile, so you only unleash one key at a time; - The
.cheatfile content is meaningless without thecheat.privatekey and its master password, so you can manage and store them together with your.privatefiles; - Only the
cheat.publickey is needed when creating a key pair, so you won't leak your master password, and even could generate keys in an automated way, on a distant server; - The
cheat.privatekey will be safely stored in a separated place, only needed when you need to recover a password; - It uses strong File Encryption, with proven PBKDF, AFSplit, AES-PRNG, and ECDH/ECIES algorithms.
2016-09-24
Public-key Asymmetric Cryptography via SynECC
2016-09-24. Open Source › mORMot Framework
After weeks of implementation and testing, we introduce today a new feature of our mORMot Open-Source Framework.
Asymmetric encryption, also known as public-key cryptography, uses pairs of keys:
- Public keys that may be disseminated widely;
- Paired with private keys which are known only to the owner.
The framework
SynEcc unit features a full asymmetric encryption system, based on
Elliptic curve
cryptography (ECC), which may be used at application level (i.e. to
protect your application data, by signing or encrypting it), or at transmission
level (to enhance communication safety).
A full set of high-level features, including certificates and command line
tool, offers a stand-alone but complete public-key
infrastructure (PKI).
2016-09-06
Ride the mORMot at EKON 20 in Dusseldorf!
2016-09-06. Open Source › mORMot Framework
There are still a few days for "very early birds" offer for EKON 20 conference, and meet us for 3 sessions (including a half-day training/introduction to mORMot)! Join us the 7-9th of November in Düsseldorf! Our sessions are not restricted to mORMot, but will use mORMot to illustrate some […]
2016-07-30
Bloom Filter and Big Data
2016-07-30. Open Source › mORMot Framework
Especially if you are dealing with a lot of data, you often need a way to
identify if a value is available in a value set.
A typical use case is if you have data sharded among
several nodes, and you want to avoid asking each node for each incoming
request.

A naive approach could be to store all data in a memory list.
But here we are really talking about a lot of data, and it would simply not fit
into a memory list.
We may say that it is the purpose of a database to maintain such a
list.
So you start a good CREATE TABLE on your RDBMS with a single indexed primary
key column, fill it with your data, and run a proper SELECT.
But it takes a lot of storage, insertion is slow, and this database becomes a
bottleneck.
Then you consider using some NoSQL database like Redis.
It is faster than a RDBMS, but it tends to use a lot of memory, and it is still
resource consuming to update the values.
No comes Bloom
Filter magic.
It allows to store the presence of high-number of values with a small memory
space, with a predefined ratio of potential
false positives.
We just introduced a TSynBloomFilter class in our Open Source
mORMot framework trunk, which features an optimized and self-tuning
Bloom Filter storage, with potential low-bandwidth synchronization over the
wire.
2016-05-30
SOA and stub/mock working on Linux x86, x64, arm32 and aarch64
2016-05-30. Open Source › mORMot Framework
Some patches, provided by ALFred, did introduce some new platforms under Linux: Linux x86 (aka Intel 32-bit) Linux x64 (aka Intel 64-bit) Linux AARCH32 (aka ARM 32-bit) Linux AARCH64 (aka ARM 64-bit) It needs the latest trunk version of the FPC compiler, and the "Interface Enhanced RTTI" […]
2016-05-14
Anti-forensic, safe storage of private keys
2016-05-14. Open Source › mORMot Framework
In any modern application, especially on
Client/Server nTier architecture as our little mORMot offers, we
often have to persist some private keys in a safe way.
Problem with such keys is that they consist in small amount of bytes (typically
16 or 32 bytes), easy to be left somewhere in disk or memory.
Given the abilities of recent forensic data recovery
methods, data can't be destroyed on magnetic or flash storage media
reliably.

We have just added to our SynCrypto OpenSource library
the Anti-forensic Information Splitter algorithm, as proposed in
TKS1, and implemented in the LUKS
standard.
LUKS is the de-facto standard of platform-independent standard on-disk
format for use in various tools.
2016-04-22
Support of Delphi 10.1 Berlin
2016-04-22. Open Source
You should have noticed that Delphi 10.1 Berlin has been released. Our Open Source projects, including mORMot and SynPDF and their associated documentation have been updated to support this new revision. Any additional feedback is welcome, as usual!
« previous entries - page 11 of 53 - next entries »


