![]() | |
#1
| |||
| |||
|
#2
| |||
| |||
|
#3
| |||
| |||
|
|
Have you tried function encryption? I don't think you'd have the same problem with foreign key constraints. |
#4
| |||
| |||
|
|
-----Original Message----- From: info-ingres-bounces (AT) kettleriver...ting (DOT) com [mailto:info- ingres-bounces (AT) kettleriverconsulting (DOT) com] On Behalf Of Roy Hann Sent: 21 May 2012 17:10 To: info-ingres (AT) kettleriverconsulting (DOT) com Subject: Re: [Info-Ingres] A little design problem Ingres Forums wrote: Have you tried function encryption? I don't think you'd have the same problem with foreign key constraints. That's a good thought but it would require a table scan to join angels and sins (which in this particular case is probably tolerable). The show-stopper is that I can't enforce a referential integrity constraint if I do that. Just to make it clear, properly authorised users are allowed to see all the data. I just need to ensure that if the database is physically released (i.e. on a stolen laptop), that no one can tell which angels are sinners. One important detail I omitted to mention is that the identity of the angels is a matter of public record. For now, in spite of the fact that the public is permitted to know who the angels are, I've decided to encrypt the many identifying attributes. To my mind concealing the bit people are allowed to know is going about the problem backwards. It's not a big deal. It's just that the first time I've tried to use encryption it doesn't seem to suit my problem. -- Roy UK Actian User Association Conference 2012 will be on Tuesday June 19 2012. Register now at https://www.regonline.co.uk/ukiua2012 The latest information is available from www.uk-iua.org.uk. _______________________________________________ Info-Ingres mailing list Info-Ingres (AT) kettleriverconsulting (DOT) com http://ext-cando.kettleriverconsulti...fo/info-ingres |
#5
| |||
| |||
|
|
Ingres Forums wrote: Have you tried function encryption? I don't think you'd have the same problem with foreign key constraints. That's a good thought but it would require a table scan to join angels and sins (which in this particular case is probably tolerable). The show-stopper is that I can't enforce a referential integrity constraint if I do that. Just to make it clear, properly authorised users are allowed to see all the data. I just need to ensure that if the database is physically released (i.e. on a stolen laptop), that no one can tell which angels are sinners. One important detail I omitted to mention is that the identity of the angels is a matter of public record. For now, in spite of the fact that the public is permitted to know who the angels are, I've decided to encrypt the many identifying attributes. To my mind concealing the bit people are allowed to know is going about the problem backwards. It's not a big deal. It's just that the first time I've tried to use encryption it doesn't seem to suit my problem. |
#6
| |||
| |||
|
|
I can easily prevent access to the sins table with suitable grants but I need to protect the data at rest too. Databases get copied; disk drives get swapped out. .... Unfortunately it seems Ingres column encryption isn't compatible with a foreign key declaration. |
#7
| |||
| |||
|
|
I think what you want is possible, you may have been hitting: E_US24C3 Invalid encrypted index. An encrypted index must: (1) contain only one column, (2) that column must be encrypted with NOSALT, (3) the index must be of structure HASH. Here is what I think you wanted (hacked up from another demo), NOTE I've commented out DDL that could hide the pk in the public angels tables (which you said you explicitly did not want to do) just in case. How does the SQL at end if mail work for you? |
#8
| |||||
| |||||
|
|
I'm working on a database design in which I've run into an amusing problem. I've got a workaround that's "good enough" but it's not very satisfying. I can't talk about the real application so I'll use some suitable analogues for my real entities. Suppose you have a table of angels. Angels are required to be above reproach in order to properly execute the duties of their office. Unfortunately angels do sometimes blot their resume and have to serve some kind of penance, after which they can resume their duties. In my real application the privacy of the people I'm calling angels cannot ever be compromised. If the data were ever to escape into the wild it would be front-page news. I keep information about angelic transgressions is in a separate sins table. If an angel has never transgressed they will have no row in the sins table. If they have transgressed they will have at least one row. Thus merely leaking the existence of a row would embarrass an angel, even without disclosing any details. It must be impossible for an improper person ever to join the tables. I can easily prevent access to the sins table with suitable grants but I need to protect the data at rest too. Databases get copied; disk drives get swapped out. I originally wanted to encrypt the foreign key in the sins table that relates each sin to the the angel concerned, and of course I wanted to declare the foreign key constraint. I hoped this would be to conceal the existence of a sin because the without the passphrase it would be impossible to join the tables. Unfortunately it seems Ingres column encryption isn't compatible with a foreign key declaration. So, I'm open to suggestions. Hardware-level encryption seems like a good alternative, but what else? Alternatively, am I mis-using encryption? Is it possible to do what I was trying to do? -- Roy UK Actian User Association Conference 2012 will be on Tuesday June 19 2012. Register now at https://www.regonline.co.uk/ukiua2012 The latest information is available from www.uk-iua.org.uk. |
|
I'm working on a database design in which I've run into an amusing problem. I've got a workaround that's "good enough" but it's not very satisfying. I can't talk about the real application so I'll use some suitable analogues for my real entities. Suppose you have a table of angels. Angels are required to be above reproach in order to properly execute the duties of their office. Unfortunately angels do sometimes blot their resume and have to serve some kind of penance, after which they can resume their duties. In my real application the privacy of the people I'm calling angels cannot ever be compromised. If the data were ever to escape into the wild it would be front-page news. I keep information about angelic transgressions is in a separate sins table. If an angel has never transgressed they will have no row in the sins table. If they have transgressed they will have at least one row. Thus merely leaking the existence of a row would embarrass an angel, even without disclosing any details. It must be impossible for an improper person ever to join the tables. I can easily prevent access to the sins table with suitable grants but I need to protect the data at rest too. Databases get copied; disk drives get swapped out. I originally wanted to encrypt the foreign key in the sins table that relates each sin to the the angel concerned, and of course I wanted to declare the foreign key constraint. I hoped this would be to conceal the existence of a sin because the without the passphrase it would be impossible to join the tables. Unfortunately it seems Ingres column encryption isn't compatible with a foreign key declaration. So, I'm open to suggestions. Hardware-level encryption seems like a good alternative, but what else? Alternatively, am I mis-using encryption? Is it possible to do what I was trying to do? -- Roy UK Actian User Association Conference 2012 will be on Tuesday June 19 2012. Register now at https://www.regonline.co.uk/ukiua2012 The latest information is available from www.uk-iua.org.uk. |
|
I'm working on a database design in which I've run into an amusing problem. I've got a workaround that's "good enough" but it's not very satisfying. I can't talk about the real application so I'll use some suitable analogues for my real entities. Suppose you have a table of angels. Angels are required to be above reproach in order to properly execute the duties of their office. Unfortunately angels do sometimes blot their resume and have to serve some kind of penance, after which they can resume their duties. In my real application the privacy of the people I'm calling angels cannot ever be compromised. If the data were ever to escape into the wild it would be front-page news. I keep information about angelic transgressions is in a separate sins table. If an angel has never transgressed they will have no row in the sins table. If they have transgressed they will have at least one row. Thus merely leaking the existence of a row would embarrass an angel, even without disclosing any details. It must be impossible for an improper person ever to join the tables. I can easily prevent access to the sins table with suitable grants but I need to protect the data at rest too. Databases get copied; disk drives get swapped out. I originally wanted to encrypt the foreign key in the sins table that relates each sin to the the angel concerned, and of course I wanted to declare the foreign key constraint. I hoped this would be to conceal the existence of a sin because the without the passphrase it would be impossible to join the tables. Unfortunately it seems Ingres column encryption isn't compatible with a foreign key declaration. So, I'm open to suggestions. Hardware-level encryption seems like a good alternative, but what else? Alternatively, am I mis-using encryption? Is it possible to do what I was trying to do? -- Roy UK Actian User Association Conference 2012 will be on Tuesday June 19 2012. Register now at https://www.regonline.co.uk/ukiua2012 The latest information is available from www.uk-iua.org.uk. |
|
I'm working on a database design in which I've run into an amusing problem. I've got a workaround that's "good enough" but it's not very satisfying. I can't talk about the real application so I'll use some suitable analogues for my real entities. Suppose you have a table of angels. Angels are required to be above reproach in order to properly execute the duties of their office. Unfortunately angels do sometimes blot their resume and have to serve some kind of penance, after which they can resume their duties. In my real application the privacy of the people I'm calling angels cannot ever be compromised. If the data were ever to escape into the wild it would be front-page news. I keep information about angelic transgressions is in a separate sins table. If an angel has never transgressed they will have no row in the sins table. If they have transgressed they will have at least one row. Thus merely leaking the existence of a row would embarrass an angel, even without disclosing any details. It must be impossible for an improper person ever to join the tables. I can easily prevent access to the sins table with suitable grants but I need to protect the data at rest too. Databases get copied; disk drives get swapped out. I originally wanted to encrypt the foreign key in the sins table that relates each sin to the the angel concerned, and of course I wanted to declare the foreign key constraint. I hoped this would be to conceal the existence of a sin because the without the passphrase it would be impossible to join the tables. Unfortunately it seems Ingres column encryption isn't compatible with a foreign key declaration. So, I'm open to suggestions. Hardware-level encryption seems like a good alternative, but what else? Alternatively, am I mis-using encryption? Is it possible to do what I was trying to do? -- Roy UK Actian User Association Conference 2012 will be on Tuesday June 19 2012. Register now at https://www.regonline.co.uk/ukiua2012 The latest information is available from www.uk-iua.org.uk. |
|
I'm working on a database design in which I've run into an amusing problem. I've got a workaround that's "good enough" but it's not very satisfying. I can't talk about the real application so I'll use some suitable analogues for my real entities. Suppose you have a table of angels. Angels are required to be above reproach in order to properly execute the duties of their office. Unfortunately angels do sometimes blot their resume and have to serve some kind of penance, after which they can resume their duties. In my real application the privacy of the people I'm calling angels cannot ever be compromised. If the data were ever to escape into the wild it would be front-page news. I keep information about angelic transgressions is in a separate sins table. If an angel has never transgressed they will have no row in the sins table. If they have transgressed they will have at least one row. Thus merely leaking the existence of a row would embarrass an angel, even without disclosing any details. It must be impossible for an improper person ever to join the tables. I can easily prevent access to the sins table with suitable grants but I need to protect the data at rest too. Databases get copied; disk drives get swapped out. I originally wanted to encrypt the foreign key in the sins table that relates each sin to the the angel concerned, and of course I wanted to declare the foreign key constraint. I hoped this would be to conceal the existence of a sin because the without the passphrase it would be impossible to join the tables. Unfortunately it seems Ingres column encryption isn't compatible with a foreign key declaration. So, I'm open to suggestions. Hardware-level encryption seems like a good alternative, but what else? Alternatively, am I mis-using encryption? Is it possible to do what I was trying to do? -- Roy UK Actian User Association Conference 2012 will be on Tuesday June 19 2012. Register now at https://www.regonline.co.uk/ukiua2012 The latest information is available from www.uk-iua.org.uk. |
#9
| |||
| |||
|
|
As a last resort, can you forgo referential integrity and shift all checking into the application level? (parent-child updates,constraints checking) As physical security is concerned,you could create an encrypted partition/container on the hard disk and store the database there |
#10
| |||
| |||
|
|
As a last resort, can you forgo referential integrity and shift all checking into the application level? |
|
As physical security is concerned,you could create an encrypted partition/container on the hard disk and store the database there |
![]() |
| Thread Tools | |
| Display Modes | |
| |