/ story-5-Current-Status.org
story-5-Current-Status.org
1 #+TITLE: Story 5 - Current Status 2 #+DATE: [2023-07-06 tor] 3 #+LANGUAGE: en 4 #+OPTIONS: author:nil 5 6 * What is this? 7 8 As the stories accrue and as development progresses and matures enough, 9 writing up current thoughts and emotions would be a good thing. For the 10 moments, it's only me, but if this project gets more participants, others 11 are welcome to participate as well. 12 13 These sorts of stories will have a title like this one does. Time will have 14 to tell what titles future stories of this kind will have, as long as it's 15 obvious enough. 16 17 There must always be a date associated with this sort of story, using an 18 appropriate date stamp (since this is an org-mode document, the setting 19 =#+DATE= is a natural choice). 20 21 * About progression so far -- by Le’ 22 23 ** Le'Sec Core 24 25 So far, the data set, environment and plugins support have been developped 26 and reached some sort of initial maturity, and the building code seems at 27 least good enough in so far that I've come at this point in time (I still 28 struggle with some aspects of CMake). This feels like a good starting 29 foundation. 30 31 I'm thinking that a few core concepts should be added to the Le'Sec Core 32 library, but that crypto stuff should probably be a separate library that 33 builds on the core concepts. As a matter of fact, I created a feature 34 branch =lscrypto= where I'm starting to experiment with an implementation. 35 36 The core concepts I'm thinking of adding to Le'Sec Core are: 37 38 - Basic support for objects, which are data carriers, and sometimes a 39 collection of functionality to perform very primitive operations with 40 them. 41 42 I have given a lot of thought to how they can be made generic, and 43 give good enough information to allow applications to handle them well 44 enough. 45 46 - Basic support for containers, which is a special kind of object that can 47 contain other objects. 48 49 - Basic support for operations, which are collections of functionality to 50 apply one or more objects on streams of data. 51 52 With this, I intend to include basic functionality to allow registration 53 of objects and operations implementations, which also means that the 54 following will be needed: 55 56 - A selection mechanism for different classes of objects and operations, see 57 my thoughts on Le'Sec Crypto below. 58 59 - Identifiers and properties, to be able to declare and to select 60 objects and operations. 61 62 ** Le'Sec Crypto 63 64 As already mentioned, I'm thinking of having all crypto-related stuff in a 65 separate library, with support for specific object and operation classes. 66 Those I'm thinking of for the moment are: 67 68 *** Object classes 69 70 - symmetric keys 71 - asymmetric keys 72 73 *** Operation classes 74 75 - encrypt (symmetric and asymmetric) 76 - decrypt (symmetric and asymmetric) 77 - sign (asymmetric) 78 - verify (asymmetric) 79 - hash 80 - mac 81 - derive [[[https://en.wikipedia.org/wiki/Key_derivation_function][KDF]]] 82 - encapsulate [[[https://en.wikipedia.org/wiki/Key_encapsulation_mechanism][KEM]]] 83 - decapsulate [[[https://en.wikipedia.org/wiki/Key_encapsulation_mechanism][KEM]]] 84 - exchange [[[https://en.wikipedia.org/wiki/Key_exchange][KEX]]] 85 - decode (from byte format to byte format or from byte format to object) 86 - encode (from object to byte format or from byte format to byte format)