Well, plain masterpassword in some file -> shared secret between DB and file system. encrypted masterpwd in some file + application token -> shared secret between DB, file system, application, + + +. The app could literally pull it from anywhere, including a remote system like vault. So it's surely not worse than the plain pwd option.
If one doesn't want to leverage a more dynymic token then just use a static string in your app and be done. LieGrue, strub > Am 12.05.2017 um 15:11 schrieb Romain Manni-Bucau <rmannibu...@gmail.com>: > > sure, point is master key in clear or not doesnt change anything. Security of > such a system is only guaranteed by the split of the master key and the > encrypted value but when you have both at the same location security is not > more a question. > > > Romain Manni-Bucau > @rmannibucau | Blog | Old Blog | Github | LinkedIn | JavaEE Factory > > 2017-05-12 13:50 GMT+02:00 Mark Struberg <strub...@yahoo.de.invalid>: > With your take even pgp is unsecure! > > Because if you can get the private key file AND you know the password, then > you can encrypted everything. > > Ofc there is no absolute security, but given enough chained steps which are > cryptographically strong in itself makes it still so much better than > plaintext. > > LieGrue, > Strub > > > > -------------------------------------------- > On Fri, 12/5/17, Romain Manni-Bucau <rmannibu...@gmail.com> wrote: > > Subject: Re: [jira] [Commented] (DELTASPIKE-1250) create a master/client > encryption handling > To: "dev@deltaspike.apache.org" <dev@deltaspike.apache.org> > Date: Friday, 12 May, 2017, 13:28 > > 2017-05-12 13:16 GMT+02:00 Mark > Struberg <strub...@yahoo.de.invalid>: > > > Well, not 100% > d'accord. > > > > Of > course it is just a split-secret security. > > Parts of the secret are in a file, others > in the application. > > An attacker would > need to gather > > * the master.hash > file > > * the application (or at least the > masterSalt text or algorithm) > > * the > encrypted date (Database etc). > > > > So he actually needs quite some access > already! > > This is surely better than a > cleartext password stored in the database > > which everyone could see. > > > > But of course, once > an attacker comes over the debug port, etc - then ALL > > security is gone. > > I > think our approach is not much behing Hashicorp Vault in > that regard > > (you could btw also gather > parts of the secret from a remote box in your > > code). > > After all the > ONLY secure system is if you have a HSM (a hardware > security > > device) which has it's OWN > pin entry (!) AND you only access the > > > information via a consumable 1-time security token. > > But as long as e.g. the database is just > secured with a static text > > > (username/password) then everything else is mathematically > breakable. > > > > Still > there is imo a HUGE difference between a cleartext password > and a > > split-secret approach. > > > > Nop, not > theorically. I understand it feels different, kind of > "oh a > password" vs > "what's that text?" but if you have accesses > to read the clear > password then the > encrypted one is as easy to get. All this security relies > on the local access (which gives you access to > the files, db etc...), all > other things put > around is cosmetic to make people comfortable with it. > More it is split longer it will be to get but > since the algo is predictable > then not more > secured until you rotate the strategy very often, like > each > minute. > > > > > > LieGrue, > > strub > > > > > Am 12.05.2017 um 13:06 schrieb Romain > Manni-Bucau <rmannibu...@gmail.com > > >: > > > > > > I think until we support a hsm > strategy- which relies on infra more than > > > encryption - we can just put it all > in clear, security level will be 1-1. > > > > So IMHO it is really "do people feel more > comfortable with unclear text > > > even > if it is as secured as clear text". If we start to go > until "if I'm > > in > > > the app" then the security is > compromished anyway even if it is sha > > > etc... > > > > > > > So concretely I think it is fine but if the proposed action > is just to > > move > > > > to sha-256 or another impl it doesnt hurt much to do, > if the action is > > more > > > impacting like creating 1000 files of > 1M with a very specific stratégy to > > > > read a byte in each of them depending the file > timestamp and jumping on a > > > leg > I'm not sure it does worth it since the assumption to > access the > > clear > > > > password is exactly the same as having it in clear. > > > > > > makes > sense? > > > > > > > > > > > > > > Romain Manni-Bucau > > > @rmannibucau > <https://twitter.com/rmannibucau> | > Blog > > > <https://blog-rmannibucau.rhcloud.com> > | Old Blog > > > <http://rmannibucau.wordpress.com> | > Github <https://github.com/ > > > rmannibucau> | > > > LinkedIn <https://www.linkedin.com/in/rmannibucau> > | JavaEE Factory > > > <https://javaeefactory-rmannibucau.rhcloud.com> > > > > > > 2017-05-12 > 12:57 GMT+02:00 Mark Struberg <strub...@yahoo.de.invalid>: > > > > > >> Btw, > the date, etc should of course _not_ get handed over as > masterSalt > > in > > > >> cleartext! > > >> If someone > would debug the app (also stealing the jars) then a > string > > like > > > >> "my app-2017-05-12-192.168.4.123 > > >> Then it would be easily > recognisable how the pattern looks like. > > >> But if you just apply a sha1 on > that string, then nobody could tell what > > >> is behind is. And you could hie > this information pretty well in your > > > >> application somewhere. > > > >> > > >> Of course that does > still not create absolute security (there is no such > > >> thing like an absolute > security). > > >> But an attacker > would need > > >> * the actual > encrypted secret information string > > > >> * the ~/.deltaspike/master.hash file (or wherever > you store it, this is > > >> just the > default) > > >> * the fully running > application (with most business applications this is > > >> not as easy as it sounds - try to > install a big app on some fresh > > > server...) > > >> * the algorithm of > the masterSalt. > > >> > > >> > > >> > LieGrue, > > >> strub > > >> > > >> > > >> > > >>> > Am 12.05.2017 um 12:31 schrieb Mark Struberg <strub...@yahoo.de.INVALID > > >>> : > > > >>> > > >>> Txs Rudy, any > help is welcome! > > >>> > > >>> > > > >>>> - Why hashing with SHA-1 > > >>> > > > >>> I guess you mean the master hash? > > >>> > > > >>> Oki, there are 3 encryption tokens in place: > > >>> > > > >>> 1.) The master password provided by the user in > the CLI when creating > > >> the > master password (writing the CLI right now): > > >>> > > > >>> $> java -jar apache-deltaspike-core-impl.jar > encode -masterPassword > > >> > myMasterPassword -masterSalt > someSecretOnlyKnownToMeAndTheApplication > > >>> > > > >>> The masterPassword does NOT get stored > anywhere. Neither in plain text > > > >> nor encrypted. It's _only_ known to the user > who creates the masterHas. > > > >>> > > >>> 2.) The > masterPassword ("myMasterPassword") gets hashed > and THIS will > > be > > > >> used to encrypt/decrypt the user passwords in the > end. > > >>> Of course the hash > does _not_ get stored directly but only encrypted > > via > > >> the > master Salt > ("someSecretOnlyKnownToMeAndTheApplication"). > > >>> The key in the > ~/.deltaspike/master.hash properties file is the the > > hash > > >> hashed > again: effectively hash(hash(masterPassword)). That way > you > > cannot > > > >> get back from the key in the master.hash file to > the key used to decrypt > > >> the > hash of the masterPassword > > > >>> > > >>> 3.) the hash > of the masterPassword (as stored in the master.hash file > > >> encrypted via the masterSalt) is > then used to encrypt/decrypt the actual > > > >> security, e.g. a jdbc.user.password. > > >>> There is again a CLI to > encode it > > >>> $> java -jar > apache-deltaspike-core-impl.jar encode -plaintext > > >> ThisIsMyDatabasePassword > -masterSalt someSecretOnlyKnownToMeAndTheA > > >> pplication > > > >>> > > >>> > > >>> > > > >>> To give more protection, the masterSalt is only > known to the > > >> administrator and > the application. This could also include installation > > >> dependent information like the > MAC address, the UID of the /dev/sda > > > disk, > > >> etc. Even the current > day! That way you can force a master password hash > > >> which is only valid for a single > day, of course without having to > > > >> re-encrypted information stored somewhere in your > DB etc. every day. > > >>> > > >>> > > > >>> Makes sense? > > > >>> > > >>> LieGrue, > > >>> strub > > > >>> > > >>> > > >>> > > > >>> > > >>>> - When I > use AES, I always use an Initialization Vector (IV) and > > specify > > > >>>> the Block mode and padding. > > >>> > > > >>> > > >>> Glad to > improve that part! > > >>> > > >>> > > > >>>> Am 11.05.2017 um 21:11 schrieb Rudy De > Busscher < > > rdebussc...@gmail.com > > >>> : > > > >>>> > > >>>> Hi > Mark, > > >>>> > > >>>> As I'm working lately > quite a lot with security and encryption, I was > > >>>> interested in your > implementation. > > >>>> > > >>>> I don't have the time > today to look into details, but I already have > > >> some > > > >>>> questions > > > >>>> > > >>>> - Why > hashing with SHA-1 (not a secure hashing algorithm anymore). > Why > > >> the > > > >>>> additional hashing (before AES encryption) > as you mention that we try > > >> > only > > >>>> to > 'obscure'. > > >>>> - > When I use AES, I always use an Initialization Vector (IV) > and > > specify > > > >>>> the Block mode and padding. > > >>>> > > > >>>> I'll try to find some time this weekend > to study the code in detail. > > > >>>> > > >>>> best > regards > > >>>> Rudy > > >>>> > > > >>>> > > >>>> On 11 > May 2017 at 19:05, Mark Struberg (JIRA) <j...@apache.org> > > wrote: > > > >>>> > > > >>>>> > > > >>>>> [ > https://issues.apache.org/jira/browse/DELTASPIKE-1250? > > >>>>> > page=com.atlassian.jira.plugin.system.issuetabpanels: > > comment-tabpanel& > > > >>>>> > focusedCommentId=16006784#comment-16006784 ] > > >>>>> > > > >>>>> Mark Struberg commented on > DELTASPIKE-1250: > > >>>>> > ------------------------------------------- > > >>>>> > > > >>>>> A first design proposal can be found on > my github repo > > >>>>> https://github.com/struberg/deltaspike/tree/DELTASPIKE-1250 > > >>>>> > > > >>>>> Will now add a main method to generate > the master password and > > encrypt > > >>>>> content > > >>>>> > > > >>>>>> create a master/client encryption > handling > > >>>>>> > ------------------------------------------ > > >>>>>> > > >>>>>> > Key: DELTASPIKE-1250 > > > >>>>>> URL: https://issues.apache.org/ > > >>>>> > jira/browse/DELTASPIKE-1250 > > > >>>>>> Project: > DeltaSpike > > >>>>>> > Issue Type: New Feature > > > >>>>>> Components: > Configuration > > >>>>>> > Affects Versions: 1.7.2 > > > >>>>>> Reporter: Mark > Struberg > > >>>>>> > Assignee: Mark Struberg > > > >>>>>> Fix For: 1.8.0 > > >>>>>> > > >>>>>> > > >>>>>> For storing > passwords in our configuration I'd like to implement a > 2 > > >>>>> stage approach > to symmetric encryption. > > > >>>>>> The current ideas is to have an > encrypted has derived from a master > > > >>>>> password and box-locale information > (MAC, IP, expiry date, etc). > > > >>>>>> This encrypted sequence is > different on every box. But the decrypted > > >>>>> hash is not. > > >>>>>> > > >>>>>> With this hash we > can encode a user password, which is then ofc the > > >> same > > > >>>>> on different boxes. > > >>>>>> Of course all > that is just security by obscurity, but it's still > > much > > > >>>>> better than plaintext and even close to > vault. > > >>>>>> After > all, the only really secure way is using a hardware crypto > box > > >>>>> plus the user > has to manually provide a password and not using static > > >>>>> passwords but 1-time > consumable tokens. > > > >>>>> > > > >>>>> > > > >>>>> > > > >>>>> -- > > > >>>>> This message was sent by Atlassian > JIRA > > >>>>> > (v6.3.15#6346) > > >>>>> > > >>> > > > >> > > >> > > > > >