Polyinstantiation in computer science is the concept of type (class, database row or otherwise) being instantiated into multiple independent instances (objects, copies). It may also indicate, such as in the case of database polyinstantiation, that two different instances have the same name (identifier, primary key).
In Operating system security, polyinstantiation is the concept of creating a user or process specific view of a shared resource. I.e. Process A cannot affect process B by writing malicious code to a shared resource, such as UNIX directory /tmp.[1] [2]
Polyinstantiation of shared resources have similar goals as process isolation, an application of virtual memory, where processes are assigned their own isolated virtual address space to prevent process A writing into the memory space of process B.
In databases, polyinstantiation is database-related SQL (structured query language) terminology. It allows a relation to contain multiple rows with the same primary key; the multiple instances are distinguished by their security levels.[3] It occurs because of mandatory policy. Depending on the security level established, one record contains sensitive information, and the other one does not, that is, a user will see the record's information depending on his/her level of confidentiality previously dictated by the company's policy[4]
Consider the following table, where the primary key is Name and λ(x) is the security level:
Name | λ(Name) | Age | λ(Age) | λ | |
---|---|---|---|---|---|
Alice | Secret | 18 | Top Secret | Top Secret | |
Bob | Secret | 22 | Secret | Secret | |
Bob | Secret | 33 | Top Secret | Top Secret | |
Trudy | Top Secret | 15 | Top Secret | Top Secret |
Although useful from a security standpoint, polyinstantiation raises several problems:
In cryptography, polyinstantiation is the existence of a cryptographic key in more than one secure physical location.