Use Apache Derby Network Server with encrypted database

classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

Use Apache Derby Network Server with encrypted database

Hohl, Gerrit

Hello everyone,

 

I've used Apache Derby for years now as an embedded RDBMS.

BTW: Thanks to all developer doing a great job developing this database system. :-D

 

But now I want to use it as a separate service running on Ubuntu Linux.

This is no problem.

 

But I haven't found any explanation or example how to create and use encrypted database if I'm running Derby as a service.

 

I found only this page:

https://db.apache.org/derby/docs/10.0/manuals/develop/develop115.html

But it seems it only deals with an embedded Derby version.

 

Regards,

Gerrit

 

Reply | Threaded
Open this post in threaded view
|

Re: Use Apache Derby Network Server with encrypted database

Peter Ondruška-4
Dear Gerrit,

from my understanding the only difference with Derby network server and embedded is relevant part of connection string. The rest where you put parameters after semicolon and where you would specify encryption properties is the same. Just start network server and then connect using network url with decryption parameters, subsequent connections should also use those parameters because you do not know if database has already booted or not. I strongly recommend using SSL to connect to encrypted database ;)

On 24 August 2016 at 09:15, Hohl, Gerrit <[hidden email]> wrote:

Hello everyone,

 

I've used Apache Derby for years now as an embedded RDBMS.

BTW: Thanks to all developer doing a great job developing this database system. :-D

 

But now I want to use it as a separate service running on Ubuntu Linux.

This is no problem.

 

But I haven't found any explanation or example how to create and use encrypted database if I'm running Derby as a service.

 

I found only this page:

https://db.apache.org/derby/docs/10.0/manuals/develop/develop115.html

But it seems it only deals with an embedded Derby version.

 

Regards,

Gerrit

 




--
Peter Ondruška

kaibo, s.r.o., ID 28435036, registered with the commercial register administered by the Municipal Court in Prague, section C, insert 141269.
Registered office and postal address: kaibo, s.r.o., Kališnická 379/10, Prague 3, 130 00, Czech Republic.
https://www.kaibo.eu
Reply | Threaded
Open this post in threaded view
|

Re: Use Apache Derby Network Server with encrypted database

spykee
In reply to this post by Hohl, Gerrit
Hi Gerrit,


Have you tried to create an encrypted database via the network mode using the steps mentioned in your link ? It should work, otherwise can you please post your errors/stacktrace/exceptions.

What I did on my side to try your scenario :
  1. Start Apache Derby in network mode
  2. Create a dummy encrypted database and connect to it via ij:
    1.  connect 'jdbc:derby://localhost:1527/MyDbTest;create=true;dataEncryption=true';
  3. After that I’ve started to create tables and to execute SQL queries (select), just to play with the database.
  4. It worked, no difference between embedded vs network mode.
    1. Remember to append to the URL the host and the port where Apache Derby server is started ( in my case it was localhost : 1527).

What I’ve followed in order to achieve the above:
  1. If you want a more custom example regarding the algorithm that can be used to encrypt the database, please have a look into this page :

If you need more information, please let me know.

Regards,
George


Sent from Windows Mail

From: [hidden email]
Sent: ‎Wednesday‎, ‎August‎ ‎24‎, ‎2016 ‎10‎:‎15‎ ‎AM
To: [hidden email]

Hello everyone,

 

I've used Apache Derby for years now as an embedded RDBMS.

BTW: Thanks to all developer doing a great job developing this database system. :-D

 

But now I want to use it as a separate service running on Ubuntu Linux.

This is no problem.

 

But I haven't found any explanation or example how to create and use encrypted database if I'm running Derby as a service.

 

I found only this page:

https://db.apache.org/derby/docs/10.0/manuals/develop/develop115.html

But it seems it only deals with an embedded Derby version.

 

Regards,

Gerrit

 

Reply | Threaded
Open this post in threaded view
|

AW: Use Apache Derby Network Server with encrypted database

Hohl, Gerrit

Hello Peter,

hello George,

 

thank you for your 2 mails. And sorry I didn't reply earlier.

Yes, I also realized that there is no difference between the embedded and the standalone version.

The only exception is that you have to put the encryption library in the CLASSPATH of the network server if you want to use one.

Everything else can be passed to the database via the connection.

 

About SSL: As I use it as a local database, but in a different process than then application (this way I can do some maintenance even independent from the application) I guess I don't need it.

Or let's put it this way: If a person is already on the machine and would be able to sniff the local IP traffic, that person may also have access on the files of Derby.

And somewhere there is also the password for the keystore as well as the path to the keystore which contains the certificate(s). I guess from there to the boot password it is only a short way.

Or I'm wrong?

 

For a database installed on a different machine I definitely would recommend using SSL, of course.

 

Thanks for your mails again. :-)

 

Gruß

Gerrit

 

Von: [hidden email] [mailto:[hidden email]]
Gesendet: Mittwoch, 24. August 2016 22:13
An: [hidden email]
Betreff: Re: Use Apache Derby Network Server with encrypted database

 

Hi Gerrit,

 

 

Have you tried to create an encrypted database via the network mode using the steps mentioned in your link ? It should work, otherwise can you please post your errors/stacktrace/exceptions.

 

What I did on my side to try your scenario :

  1. Start Apache Derby in network mode
  1. Create a dummy encrypted database and connect to it via ij:
    1.  connect 'jdbc:derby://localhost:1527/MyDbTest;create=true;dataEncryption=true';
  1. After that I’ve started to create tables and to execute SQL queries (select), just to play with the database.
  1. It worked, no difference between embedded vs network mode.
    1. Remember to append to the URL the host and the port where Apache Derby server is started ( in my case it was localhost : 1527).

 

What I’ve followed in order to achieve the above:

  1. If you want a more custom example regarding the algorithm that can be used to encrypt the database, please have a look into this page :

 

If you need more information, please let me know.

 

Regards,

George

 

 

Sent from Windows Mail

 

Von: Peter Ondruška [mailto:[hidden email]]
Gesendet: Mittwoch, 24.
August 2016 12:32
An: Derby Discussion
Betreff: Re: Use Apache Derby Network Server with encrypted database

 

Dear Gerrit,

from my understanding the only difference with Derby network server and embedded is relevant part of connection string. The rest where you put parameters after semicolon and where you would specify encryption properties is the same. Just start network server and then connect using network url with decryption parameters, subsequent connections should also use those parameters because you do not know if database has already booted or not. I strongly recommend using SSL to connect to encrypted database ;)

 

On 24 August 2016 at 09:15, Hohl, Gerrit <[hidden email]> wrote:

Hello everyone,

 

I've used Apache Derby for years now as an embedded RDBMS.

BTW: Thanks to all developer doing a great job developing this database system. :-D

 

But now I want to use it as a separate service running on Ubuntu Linux.

This is no problem.

 

But I haven't found any explanation or example how to create and use encrypted database if I'm running Derby as a service.

 

I found only this page:

https://db.apache.org/derby/docs/10.0/manuals/develop/develop115.html

But it seems it only deals with an embedded Derby version.

 

Regards,

Gerrit

 




--

Peter Ondruška


kaibo, s.r.o., ID 28435036, registered with the commercial register administered by the Municipal Court in Prague, section C, insert 141269.
Registered office and postal address: kaibo, s.r.o., Kališnická 379/10, Prague 3, 130 00, Czech Republic.
https://www.kaibo.eu

 

Reply | Threaded
Open this post in threaded view
|

Re: Use Apache Derby Network Server with encrypted database

Peter Ondruška-4
Just a note on "If a person is already on the machine and would be able to sniff the local IP traffic, that person may also have access on the files of Derby.". To prevent this you encrypt the database and carefully manage encryption key. But if somebody interepts unencrypted network traffic (be it local or remote) he can also intercept the encryption key used to boot database and all encryption is useless, besides attacher will have username and password to log in to started database and can export data over network.

On 25 August 2016 at 08:47, Hohl, Gerrit <[hidden email]> wrote:

Hello Peter,

hello George,

 

thank you for your 2 mails. And sorry I didn't reply earlier.

Yes, I also realized that there is no difference between the embedded and the standalone version.

The only exception is that you have to put the encryption library in the CLASSPATH of the network server if you want to use one.

Everything else can be passed to the database via the connection.

 

About SSL: As I use it as a local database, but in a different process than then application (this way I can do some maintenance even independent from the application) I guess I don't need it.

Or let's put it this way: If a person is already on the machine and would be able to sniff the local IP traffic, that person may also have access on the files of Derby.

And somewhere there is also the password for the keystore as well as the path to the keystore which contains the certificate(s). I guess from there to the boot password it is only a short way.

Or I'm wrong?

 

For a database installed on a different machine I definitely would recommend using SSL, of course.

 

Thanks for your mails again. :-)

 

Gruß

Gerrit

 

Von: [hidden email] [mailto:[hidden email]]
Gesendet: Mittwoch, 24. August 2016 22:13
An: [hidden email]
Betreff: Re: Use Apache Derby Network Server with encrypted database

 

Hi Gerrit,

 

 

Have you tried to create an encrypted database via the network mode using the steps mentioned in your link ? It should work, otherwise can you please post your errors/stacktrace/exceptions.

 

What I did on my side to try your scenario :

  1. Start Apache Derby in network mode
  1. Create a dummy encrypted database and connect to it via ij:
    1.  connect 'jdbc:derby://localhost:1527/MyDbTest;create=true;dataEncryption=true';
  1. After that I’ve started to create tables and to execute SQL queries (select), just to play with the database.
  1. It worked, no difference between embedded vs network mode.
    1. Remember to append to the URL the host and the port where Apache Derby server is started ( in my case it was localhost : 1527).

 

What I’ve followed in order to achieve the above:

  1. If you want a more custom example regarding the algorithm that can be used to encrypt the database, please have a look into this page :

 

If you need more information, please let me know.

 

Regards,

George

 

 

Sent from Windows Mail

 

Von: Peter Ondruška [mailto:[hidden email]]
Gesendet: Mittwoch, 24.
August 2016 12:32
An: Derby Discussion
Betreff: Re: Use Apache Derby Network Server with encrypted database

 

Dear Gerrit,

from my understanding the only difference with Derby network server and embedded is relevant part of connection string. The rest where you put parameters after semicolon and where you would specify encryption properties is the same. Just start network server and then connect using network url with decryption parameters, subsequent connections should also use those parameters because you do not know if database has already booted or not. I strongly recommend using SSL to connect to encrypted database ;)

 

On 24 August 2016 at 09:15, Hohl, Gerrit <[hidden email]> wrote:

Hello everyone,

 

I've used Apache Derby for years now as an embedded RDBMS.

BTW: Thanks to all developer doing a great job developing this database system. :-D

 

But now I want to use it as a separate service running on Ubuntu Linux.

This is no problem.

 

But I haven't found any explanation or example how to create and use encrypted database if I'm running Derby as a service.

 

I found only this page:

https://db.apache.org/derby/docs/10.0/manuals/develop/develop115.html

But it seems it only deals with an embedded Derby version.

 

Regards,

Gerrit

 




--

Peter Ondruška


kaibo, s.r.o., ID 28435036, registered with the commercial register administered by the Municipal Court in Prague, section C, insert 141269.
Registered office and postal address: kaibo, s.r.o., Kališnická 379/10, Prague 3, 130 00, Czech Republic.
https://www.kaibo.eu

 




--
Peter Ondruška

kaibo, s.r.o., ID 28435036, registered with the commercial register administered by the Municipal Court in Prague, section C, insert 141269.
Registered office and postal address: kaibo, s.r.o., Kališnická 379/10, Prague 3, 130 00, Czech Republic.
https://www.kaibo.eu
Reply | Threaded
Open this post in threaded view
|

AW: Use Apache Derby Network Server with encrypted database

Hohl, Gerrit

Hello Peter,

 

my point is that I don't need SSL if I only use local connections (accept connections only on 127.0.0.1) as it may not add any extra security.

If I want to use SSL, I have to put the keys into a keystore in the filesystem.

And the password will also have to be stored somewhere in plaintext so I can pass it to the Derby process when it is started.

And the attacker may read that.

 

The data of the database would be encrypted. So the attacker can't read it.

But if that person sniffs the IP traffic on 127.0.0.1, he/she may be able to read the boot password as well as user and password.

And if the attacker has that, that person can encrypt the database.

So it's not 100% secure.

 

I hope I didn't misunderstood your mail.

 

Regards,

Gerrit

 

Von: Peter Ondruška [mailto:[hidden email]]
Gesendet: Donnerstag, 25. August 2016 09:51
An: Derby Discussion
Betreff: Re: Use Apache Derby Network Server with encrypted database

 

Just a note on "If a person is already on the machine and would be able to sniff the local IP traffic, that person may also have access on the files of Derby.". To prevent this you encrypt the database and carefully manage encryption key. But if somebody interepts unencrypted network traffic (be it local or remote) he can also intercept the encryption key used to boot database and all encryption is useless, besides attacher will have username and password to log in to started database and can export data over network.

 

On 25 August 2016 at 08:47, Hohl, Gerrit <[hidden email]> wrote:

Hello Peter,

hello George,

 

thank you for your 2 mails. And sorry I didn't reply earlier.

Yes, I also realized that there is no difference between the embedded and the standalone version.

The only exception is that you have to put the encryption library in the CLASSPATH of the network server if you want to use one.

Everything else can be passed to the database via the connection.

 

About SSL: As I use it as a local database, but in a different process than then application (this way I can do some maintenance even independent from the application) I guess I don't need it.

Or let's put it this way: If a person is already on the machine and would be able to sniff the local IP traffic, that person may also have access on the files of Derby.

And somewhere there is also the password for the keystore as well as the path to the keystore which contains the certificate(s). I guess from there to the boot password it is only a short way.

Or I'm wrong?

 

For a database installed on a different machine I definitely would recommend using SSL, of course.

 

Thanks for your mails again. :-)

 

Gruß

Gerrit

 

Von: [hidden email] [mailto:[hidden email]]
Gesendet: Mittwoch, 24. August 2016 22:13
An: [hidden email]
Betreff: Re: Use Apache Derby Network Server with encrypted database

 

Hi Gerrit,

 

 

Have you tried to create an encrypted database via the network mode using the steps mentioned in your link ? It should work, otherwise can you please post your errors/stacktrace/exceptions.

 

What I did on my side to try your scenario :

  1. Start Apache Derby in network mode
  1. Create a dummy encrypted database and connect to it via ij:
    1.  connect 'jdbc:derby://localhost:1527/MyDbTest;create=true;dataEncryption=true';
  1. After that I’ve started to create tables and to execute SQL queries (select), just to play with the database.
  1. It worked, no difference between embedded vs network mode.
    1. Remember to append to the URL the host and the port where Apache Derby server is started ( in my case it was localhost : 1527).

 

What I’ve followed in order to achieve the above:

  1. If you want a more custom example regarding the algorithm that can be used to encrypt the database, please have a look into this page :

 

If you need more information, please let me know.

 

Regards,

George

 

 

Sent from Windows Mail

 

Von: Peter Ondruška [mailto:[hidden email]]
Gesendet: Mittwoch, 24.
August 2016 12:32
An: Derby Discussion
Betreff: Re: Use Apache Derby Network Server with encrypted database

 

Dear Gerrit,

from my understanding the only difference with Derby network server and embedded is relevant part of connection string. The rest where you put parameters after semicolon and where you would specify encryption properties is the same. Just start network server and then connect using network url with decryption parameters, subsequent connections should also use those parameters because you do not know if database has already booted or not. I strongly recommend using SSL to connect to encrypted database ;)

 

On 24 August 2016 at 09:15, Hohl, Gerrit <[hidden email]> wrote:

Hello everyone,

 

I've used Apache Derby for years now as an embedded RDBMS.

BTW: Thanks to all developer doing a great job developing this database system. :-D

 

But now I want to use it as a separate service running on Ubuntu Linux.

This is no problem.

 

But I haven't found any explanation or example how to create and use encrypted database if I'm running Derby as a service.

 

I found only this page:

https://db.apache.org/derby/docs/10.0/manuals/develop/develop115.html

But it seems it only deals with an embedded Derby version.

 

Regards,

Gerrit

 




--

Peter Ondruška


kaibo, s.r.o., ID 28435036, registered with the commercial register administered by the Municipal Court in Prague, section C, insert 141269.
Registered office and postal address: kaibo, s.r.o., Kališnická 379/10, Prague 3, 130 00, Czech Republic.
https://www.kaibo.eu

 




--

Peter Ondruška


kaibo, s.r.o., ID 28435036, registered with the commercial register administered by the Municipal Court in Prague, section C, insert 141269.
Registered office and postal address: kaibo, s.r.o., Kališnická 379/10, Prague 3, 130 00, Czech Republic.
https://www.kaibo.eu

Reply | Threaded
Open this post in threaded view
|

Re: AW: Use Apache Derby Network Server with encrypted database

John English-3
On 25/08/2016 10:58, Hohl, Gerrit wrote:
> But if that person sniffs the IP traffic on 127.0.0.1, he/she may be
> able to read the boot password as well as user and password.

And of course IP traffic to 127.0.0.1 should *never* go outside the
local machine, according to the spec. So any sniffer would have to be
logged in on the local machine itself, in which case you're probably in
trouble anyway.
--
John English
Reply | Threaded
Open this post in threaded view
|

AW: AW: Use Apache Derby Network Server with encrypted database

Hohl, Gerrit
Yes, but an attacker can't access the database if that person is not on the machine itself.
And in this case I also don't have to encrypt it, right? ;-)

Regards,
Gerrit
-----Ursprüngliche Nachricht-----
Von: John English [mailto:[hidden email]]
Gesendet: Donnerstag, 25. August 2016 10:14
An: Derby Discussion
Betreff: Re: AW: Use Apache Derby Network Server with encrypted database

On 25/08/2016 10:58, Hohl, Gerrit wrote:
> But if that person sniffs the IP traffic on 127.0.0.1, he/she may be
> able to read the boot password as well as user and password.

And of course IP traffic to 127.0.0.1 should *never* go outside the local machine, according to the spec. So any sniffer would have to be logged in on the local machine itself, in which case you're probably in trouble anyway.
--
John English
Reply | Threaded
Open this post in threaded view
|

Re: AW: AW: Use Apache Derby Network Server with encrypted database

Michael Amanti
On 8/25/2016 7:58 AM, Hohl, Gerrit wrote:
> Yes, but an attacker can't access the database if that person is not on the machine itself.
Is SELinux enabled ?

> And in this case I also don't have to encrypt it, right? ;-)
>
> Regards,
> Gerrit
> -----Ursprüngliche Nachricht-----
> Von: John English [mailto:[hidden email]]
> Gesendet: Donnerstag, 25. August 2016 10:14
> An: Derby Discussion
> Betreff: Re: AW: Use Apache Derby Network Server with encrypted database
>
> On 25/08/2016 10:58, Hohl, Gerrit wrote:
>> But if that person sniffs the IP traffic on 127.0.0.1, he/she may be
>> able to read the boot password as well as user and password.
> And of course IP traffic to 127.0.0.1 should *never* go outside the local machine, according to the spec. So any sniffer would have to be logged in on the local machine itself, in which case you're probably in trouble anyway.
> --
> John English

Reply | Threaded
Open this post in threaded view
|

Re: AW: AW: Use Apache Derby Network Server with encrypted database

John English-3
In reply to this post by Hohl, Gerrit
On 25/08/2016 15:58, Hohl, Gerrit wrote:
> Yes, but an attacker can't access the database if that person is not
> on the machine itself.

Exactly.

> And in this case I also don't have to encrypt it, right? ;-)

As long as you don't allow remote shells or anything stupid like that.
And if an attacker does manage to get a shell running on your machine,
encrypting your DB connection is probably the least of your worries.

--
John English