DataProVe: A Data Protection Policy and System Architecture Verification Tool
←
→
Page content transcription
If your browser does not render page correctly, please read the page content below
DataProVe: A Data Protection Policy and System Architecture Verification Tool Vinh Thong Ta Laboratory of Security and Forensic Research in Computing (SaFeR) University of Central Lancashire (UCLan) Preston, UK vtta@uclan.ac.uk arXiv:2008.08936v2 [cs.CR] 16 Sep 2020 September 17, 2020 Abstract In this paper, we propose a tool, called DataProVe, for specifying high-level data protection policies and system architectures, as well as verifying the conformance between them in a fully automated way. The syntax of the policies and the architectures is based on semi-formal languages, and the automated verification engine relies on logic and resolution based proofs. The functionality and operation of the tool are presented using different examples. 1 Introduction Under the General Data Protection Regulation (GDPR) [1], personal data is defined as “any information relating to an identified or identifiable natural person”. The data protection regu- lations contain rights for living individuals who have their personal data processed, and enforce responsibilities for the data controllers and the data processors who store, process or transmit such data [2]. In the US, personally identifiable information is used with a similar interpretation [3]. Unfortunately, there were a huge number of data breach incidents in the past [4–6] and nowa- days, such as the Cambridge Analytica scandal of Facebook [7], where personal data of more than 87 millions Facebook users have been collected and used for advertising and election campaign purposes without a clear data usage consent. One of the main problems was the insufficient check by Facebook on the third party applications. Google also faced lawsuit over collecting personal data without permission several times, and has been reported to illegally gathered the personal data of millions of iPhone users in the UK in one of the recent news [8]. The General Data Protection Regulation (GDPR) took effect in May 2018, and hence, designing compliant data protection policies and system architectures seem became even more important for organizations to avoid penalties. Data protection by design under the Article 25 of the GDPR [9], requires the design of data protection and control into the development of business processes for service providers. The regulation also limits businesses from performing user profiling and demanding appropriate consents before personal data collection (Article 6 of the GDPR [10]). Unfortunately, in textual format, the data protection laws are sometimes ambiguous and can be misinterpreted by the policy and system designers. From the technical perspective, to the best of our knowledge, only a limited number of studies can be found in the literature that investigate the formal or systematic method to design privacy policies and architectures, as well as facilitate compliance verification. The main advantage of using formal approaches during system design is that data protection properties can be mathematically proved, and design flaws can be detected at early stage, which can save time and money. On the other hand, using formal method for this purpose is also challenging, as abstraction is required, which is difficult in case of complex laws. In this paper, we model some data pro- 1
tection requirements of GDPR covering the data collection, usage, storage, deletion, and transfer phases. We also consider privacy requirements such as the right to have data and link pairs of data types. We focus on the policy and architecture levels. We propose a variant of policy and ar- chitecture language, specifically designed for specifying and verifying data protection and privacy requirements. We also propose a fully automated procedure based on logic, for verifying three types of conformance properties between a policy and an architecture specified in our language. Our theoretical methods are implemented in the form of a software tool, called DataProVe, for demonstration purposes. The main goals of the our languages and software tool include helping a system designer at the higher level specification (compared to the other tools that mainly focus on the protocol level), such as with the policy and architecture design. This design step can be useful to spot any potential errors before going ahead with the concrete lower level system specification. Besides, our tool could be useful for education or research purposes as well. To the best of our knowledge this is the first work that address the problem of fully automated conformance check between a policy and an architecture in the context of data protection and privacy requirements. The paper is structured as follows: In Section 2, we discuss the related works on policy and architecture languages. In Sections 3-4 we present our policy and architecture languages, respec- tively. The automated conformance verification engine is detailed in Section 6. In Section 7 we present the DataProVe tool and discuss the operation of the tool using some simple examples. 1.1 Contributions This paper includes the following contributions: 1. We propose a variant of privacy policy language (in Section 3), which is a simplified version of the language in [11]. 2. We propose a variant of privacy architecture language (in Section 4), which is again a simplified version of the language in [11]. 3. We propose the definition of three conformance relations between a policy and architecture (in Section 5.1), namely, privacy, data protection, and functional conformance. 4. We propose a logic based fully automated conformance verification procedure (in Section 6) for the above three conformance relations. 5. Finally, we propose a (prototype) tool, called DataProVe, based on the theoretical founda- tions above (in Section 7). 2 Related Works We highlight the most related policy languages and architecture description languages (ADLs). Policy Languages. The Platform for Privacy Preferences (P3P) [12] enables web users to gain control over their private information on online services. On a website users can express their privacy practices in a standard format that can be retrieved automatically and interpreted by web client applications. Users are notified about certain website’s privacy policies and have a chance to make decision on that. To match the privacy preferences of users and web services, they also proposed the Preference Exchange Language (APPEL) [13] integrated into the web clients, with which the user can express their privacy preferences that can be matched against the practices set by the online services. According to the study [14], in APPEL, users can only specify what is unacceptable in a policy. Identifying this, the authors in [14] proposed a more expressive preference language called XPref giving more freedom for the users, such as allowing acceptable preferences. Another XML-based policy language is the Customer Profile Exchange (CPExchange) [15], which was designed to facilitate business-to-business communication privacy policies (i.e., privacy- enabled global exchange of customer profile information). The eXtensible Access Control Markup 2
Language (XACML) [16] is a de-facto, XML-based policy language, specifically designed for ac- cess control management in distributed systems. The latest version was approved by the OASIS standards organization as an international standard in July 2017. Finally, the Enterprise Privacy Authorisation Language (EPAL) of IBM [17] was designed to regulate an organisation’s internal privacy policies. EPAL is partly similar to XACML, however, it mainly focuses on privacy policies instead of access control policies in XACML. A-PPL [18] is an accountability policy language specifically designed for modelling data ac- countability (such as data retention, data location, logging and notification) in the cloud. A-PPL is an extension of the the PrimeLife Privacy Policy Language (PPL) [19], which enables speci- fication of access and usage control rules for the data subjects and the data controller. PPL is built upon XACML, and allows us to define the so-called sticky policies on personal data based on obligations. Obligation defines whether the policy language can trigger tasks that must be performed by a server and a client, once some event occurs and the related condition is fulfilled. This is also referred to as the Event-Action-Condition paradigm. The Policy Description Language (PDL) [20], proposed by Bell Labs, is one of the first policy-based management languages, specif- ically for network administration. It is declarative and is based on the Event-Action-Condition paradigm similar to the PPL language. RBAC (Role-Based Access Control) [21] is one of the most well-known role-based access control policy languages. It uses roles and permissions in the enforced policies, namely, a subject can be assigned roles, and roles can be assigned certain access control permissions. ASL (Authorization Specification Language) [22] is an another Role-based access control language based on first order logic, and RBAC components. Ponder [23] is a declarative and object-oriented policy language, and designed for defining and modelling security policies using RBAC, and security management policies for distributed systems. The policies are defined on roles or group of roles. Rei [24] is a policy language based on deontic logic, designed mainly for modelling security and privacy properties of pervasive computing environments. Its syntax involves obligation and permission, where policies are defined as constraints over permitted and obligated actions on resources. Architecture Description Languages (ADLs). Research on formal specification of archi- tectures can be categorised into two groups of languages for software and hardware architectures, respectively. Darwin [30], one of the first languages for architectures, defined interaction of com- ponents through bindings. Bindings associate services required by a component with the services provided by others. Its semantics is based on the process algebra π-calculus [31] that makes it capable of modelling dynamic architectures. In Wright [32], components are associated via the con- nector elements instead of bindings. Its semantics is defined in another process algebra, CSP [33], with the architecture specific port processes that specify external behaviour of a component, and spec process, the internal behaviour of a component. Similar to Darwin, Rapide [34] defines connections between the required service and provided service “ports" of components. Similar to Wright, Rapide also supports connectors, but in a more limited way (e.g. no first class connector elements), and hence, the user can only specifies explicit links between the the required and provided services. Unlike Wright, it also defines the actions in and out for asynchronous communication. Finally, the semantics of Rapide is based on the event pattern language [34], and is defined as a partially ordered set of events. Among the more recent ADLs, SOFA [35] also defines connectors, which the user can specify based on four types of communication, a procedure call, messaging, streaming, and the so-called blackboard. The semantics of SOFA is based on Behaviour Protocol [36], which is a simplified version of CSP. AADL [37], one of the most broadly-used ADLs, is specifically designed for embedded systems. AADL defines three groups of components, one for software architectures (including thread, pro- cess, and subprogram), the second one is for hardware architectures (such as processor, memory), and the last group is for specifying composite types. In AADL ports and subprogram-calls are used to define interaction between components. PRISMA [38], another recent ADL, which is designed to address aspect-oriented software engineering. Similar to Wright, PRISMA defines first-class connector elements, which are specified with a set of roles (i.e. components) and the behaviour of the components is defined by aspects. The semantics of PRISMA is defined with modal logic and π-calculus. A recent attempt of architectures specification towards automation is proposed in the 3
project, called the CONNECT [39]. The semantics of this ADL is based on the FSP (finite state process) algebra [40], which allows automation and stochastic analyses of architectures. Finally, UML has also been used to specify architectures in practice, however, it is more high-level and lacks formal semantics. Comparison with our work. The main differences between the policy languages above and our work is that, for instance, P3P, APPEL, and XPref are mainly designed for web applica- tions/services, and the policies are defined in a XML-based language, with restricted options for the users, while ours is designed for any type of services. In addition, our policy language variant is defined on data types (data type centric), and supports a more systematic and fine-grained policy specification, as its syntax and semantics cover seven sub-policies including a representative data life-cycle (from data collection to data transfer). Our language variant is inspired by the ones proposed in [41] and [42], which was proposed for biometrics surveillance systems and log design. We modified and extend those to capture seven sub-policies. Unlike the ADLs above, our architecture language variant is designed to capture the data protection and privacy properties of data, and supports cryptographic primitives. Our language is data type centric, and its semantics is not based on process algebra like most above mentioned ADL languages but instead relies on the global state of all defined data types in a system. This concept was applied in some of our previous works, such as in [43, 44]. The language variants in [43, 44] mainly focuses on the computation and integrity verification of data based on trust relations. Unlike [43, 44], the language variant in this paper focuses primarily on data protection and privacy properties, rather than the data integrity perspective. Finally, to the best of our knowledge, this is the first work that studies and proposes a fully automated conformance check between the policy and architecture levels. Our verification engine is based on the syntax of our policy and architecture language variants, and logic based proof. 3 The Specification of a Data Protection Policy The high-level data protection policy is defined from the perspective of the data controller. Here, we assume that the data controllers are service providers who collect, store, use or transfer the personal data about the data subjects. The data subjects in our case are system users whose personal data is/will be collected and used by the data controller. A policy is composed of seven sub-policies defined on the data collection, usage, storage, retention, and transfer procedure, as well as the data possession and data connection sub-policies. The syntax presented here is a simplified version of the policy language proposed in [11]. 3.1 Policy Syntax A policy of a service provider, denoted by sp, is defined on a finite set of entities EntitySet SP pol = {sp, Ei1 ,. . . , Ein }, and a finite set of supported data types DataTypes SP pol = {θ 1 ,. . . , θ m }. The entities are used to define the semantics, and represent any data subject, data controller, organisations, hardware/software components. We propose a definition for a set of data protection policies. Definition 1 (Data Protection Policy). The syntax of the data protection policies is defined as the composition of seven sub-policies on a given data type, namely: The data collection sub-policy includes whether a collection consent is required (Cons col ) and a set collection purposes (CPurp). These aim at capturing the consent and purposes limitation requirements in the Article 6 [10] and Article 5(1)(b) [45] of the GDPR. The data usage sub-policy specifies whether a usage consent is required (Cons use ) for data usage, and the purposes of the data usage (UPurp). Again, these capture the Article 6 [10] and Article 30(1)(b)) [46] of the GDPR, respectively. The data storage sub-policy specifies whether a storage consent is required (Cons str ) for storing a piece of data, and where the data can be stored (Where str ). These partly capture the storage limitation principle in Article 5(1)(e) [45] of the GDPR. 4
POLDataTypesSP = PolCol × PolU se × PolStr × PolDel × PolF w × PolHas × PolLink . pol where 1. PolCol = Conscol × CPurp. (Data Collection Sub-policy) 2. PolU se = Consuse × UPurp. (Data Usage Sub-policy) 3. PolStr = Consstr × Wherestr . (Data Storage Sub-policy) 4. PolDel = FromWheredel × Retdelay . (Data Retention Sub-policy) 5. PolF w = Consf w × Listto × FwPurp. (Data Transfer Sub-policy) 6. PolHas = Whocanhave . (Data Possession Sub-policy) 7. PolLink = Whocanlink . (Data Connection Sub-policy) The data deletion sub-policy specifies from where the data can be deleted (FromWhere del ), alongside the corresponding retention period (Ret del ). These partly captures the Article 5(1)(e) and Article 17(1)(a) [47] of the GDPR. The data transfer sub-policy involves whether a transfer consent is required (Cons f w ), and all the entities to which the data can be transferred (List to ) with the purposes in FwPurp. These partly capture the requirement of transferring data the third party organisations in Article 46(1) [48] of the GDPR. The data possession sub-policy specifies who is permitted to be able to have a type of data. The data connection sub-policy specifies who is permitted to be able to link two types of data. A policy is defined on a data type (θ), specifically, let πθ , πθ ∈ POLDataTypesSP , be a policy pol defined on a data type θ, and the seven sub-policies πcol ∈ Pol Col , πuse ∈ Pol U se , πstr ∈ Pol Str , πdel ∈ Pol Del , πf w ∈ Pol F w , πhas ∈ Pol Has , πlink ∈ Pol Link , where πθ = (πcol , πuse , πstr , πdel , πf w , πhas , πlink ). Each sub-policy of πθ is defined as follows: 1. πcol = (cons, cpurp), with cons ∈ {Y , N }. This specifies that if a consent is required to be collected from the data subjects (Y for Yes) or not (N for No) for this type of data, and cpurp is a set of collection purposes. Purposes are text strings that uniquely define the purpose. 2. πuse = (cons, upurp), with a consent collection requirement, cons ∈ {Y , N }, and upurp, a set of usage purposes. 3. πstr = (cons, where), where where is a set of places where a piece of data can be stored, for instance, in a device of a customer (e.g. denoted by custloc), with a third party cloud service provider (thirdpartycloud), or in the service provider’s main or backup storage places (denoted by mainstorage, backupstorage). 4. πdel = (fromwhere, deld), with • fromwhere defines the locations from where a piece of data can be deleted. This is closely related to the storage locations defined in the storage policy (point 3). • deld represents the delay for the deletion. The value of this delay can be either tN S , which refers to a “Non Specific time”, or a specific “numerical" time value (e.g., 1 day, 10 minutes, 5 years, etc.). 5
πθ Policy for a data type θ (πθ = (πcol , πuse , πstr , πdel , πf w , πhas , πlink )) πcol A data collection sub-policy. πuse A usage sub-policy. πstr A storage sub-policy. πdel A retention sub-policy. πf w A transfer sub-policy. πhas A data possession sub-policy. πlink A data connection sub-policy. πθ .π∗ A sub-policy π∗ of πθ , where ∗ ∈ {col, use, str, del, fw,has, link}. π∗ .arg An argument of a sub-policy π∗ , ∗ ∈ {col, use, str, del, fw,has, link}. cons Specify if a consent is required {Y ,N }. upurp, cpurp, fwpurp a set of usage, collection, and forward purposes, respectively, where each set is of the form {act 1 :θ1 , . . . , act n :θn }. act i :θi A purpose (specifies that a piece of data is used for an action act i , and as a result we get a piece of data of type θi ). where A set of places where a piece of data of type θ can be stored. fromwhere A set of places from where a piece of data of type θ can be deleted. deld A deletion delay value. fwto A set of entities to which a piece of data can be transferred. whocanhave A set of entities who are allowed to have a type of data. whocanlink A set that records which entity is allowed to link which pairs of data types. Table 1: The notifications used in the policy syntax. 5. πf w = (cons, fwto, fwpurp), where cons captures if consent is required or not, and fwto is a set of entities (e.g. authorities, companies, organisations) to whom the data can be transferred. fwpurp is a set of purposes for data transfer. 6. πhas = whocanhave, where whocanhave is a set of entities in the system that have the right to have or possess a piece of data of type θ. If we forbid for a given entity to be able to have a given data type, then that entity should never be able to have it (e.g. by obtaining/eavesdropping, calculating). 7. πlink = whocanlink, where whocanlink = {(E1 ,θ1 ),. . . ,(Ek ,θk )}, is a set of pairs of entities and data types defined in the system. Each pair (Ei ,θi ) specifies that Ei is allowed to be able to link two pieces of data of types θ and θi . For instance, whether a service provider has the right to link a piece of information about someone’s disease with their work place. Finally, let us assume a finite set {θ1 , . . . , θm } of all data types supported by the service of a given service provider sp. The data protection (DPR) policy for a service provider sp is defined by the set PL = {πθ1 , . . . , πθm }. 3.2 Policy Semantics 3.2.1 Abstract Events The semantics of the policy syntax can be defined using the so-called abstract events that capture the actions performed by different entities during an instance of a system operation. These events are abstract, because they specify high-level actions during a system operation trace, ignoring the low-level details such as writing to a memory space or the protocol/implementation level. An event is defined by a tuple starting with an event name denoting an action done by an entity, followed by the time of the event, and some further parameters required by the action. 6
(θ,v) A pair of data type θ and data value v. θ A data type θ. θ0 A data type that we get as a result of an service_spec_use_event (e.g. createat or calculateat) on a piece of data of type θ and value v. t Captures a time value when an event takes place. E to An entity to whom a piece of data is transferred/forwarded. E from An entity from which a piece of data is originated. place A place where a piece of data of type θ and value v is stored. It can be mainstorage, backupstorage, or some other service spec. place. Table 2: The notifications used in the policy semantics. Our language includes the following events: storeat, collectat, cconsentat, uconsentat, fwcon- sentat, deleteat, and forwardat, service_spec_use_event, defined as follows: Ev1 : (cconsentat, t, E from , θ). E.g. (cconsentat, 2020.01.21.11:18, client, personalinfo) Ev2 : (collectat, t, E from , θ, v). E.g. (collectat, 2020.01.21.11:20, client, personalinfo, Peter) Ev3 : (uconsentat, t, E from , θ). E.g. (uconsentat, 2020.01.21.11:18, client, energyconsumption) Ev4 : (service_spec_use_event, t, E from , θ0 , θ, v). E.g. (createat, 2020.01.30.15:45, client, bill, energyconsumption, 20kWh) Ev5 : (sconsentat, t, E from , θ). E.g. (sconsentat, 2020.01.30.15:45, client, sickness) Ev6 : (storeat, t, E from , θ, v, place). E.g. (storeat, 2020.01.30.15:45, client, sickness, leukemia, backupstorage) Ev7 : (deleteat, t, E from , θ, v, place). E.g. (deleteat, 2020.01.30.15:45, client, sickness, leukemia, mainstorage) Ev8 : (fwconsentat, t, E to , E from , θ). E.g. (fwconsentat, 2020.01.21.11:18, insurancecompany, client, personalinfo) Ev9 : (forwardat, t, E to , E from , θ, v). E.g. (forwardat, 2020.01.21.11:18, insurancecompany, client, personalinfo, Peter) Event Ev1 specifies that a collection consent is being collected by the service provider for a piece of data of type θ from an entity E from . Event Ev2 specifies the event when a piece of data of type θ and value v is collected by the service provider from E from at time t. Event Ev3 specifies that a usage consent is collected by the service provider at time t from E from . Event Ev4 captures a service specific event that specifies the usage of a piece of data, for example, using a piece of data to create or calculate some other data. A piece of data type θ is used by E from to obtain a piece of data type θ0 . Event Ev5 specifies that a storage consent is being collected by the service provider for a piece of data of type θ from an entity E from . Event Ev6 specifies that a piece of data of type θ and value v is stored at a place place at time t. We note that unlike the rest events, which are all related to an action carried out by a service provider, this event can capture an action done by a different entity as well. For example, if places = {clientpc}, then event storeat can refer to the storage action done by a client PC. Event Ev7 specifies that at some time t, a service provider deletes a piece of data of type θ and value v from a place place. Event Ev8 specifies that a service provider is collecting a data transfer consent on a piece of data of type θ from Ef rom . Finally, event Ev9 captures that at time t, E to received a piece of data forwarded by a service provider. This data has a type θ and value v, and is originally from E from . 7
3.2.2 Policy Compliance System Operation In this section, we define the policy compliance system operations based on the events defined in Section 3.2.1. We define 11 rules (C1 -C11 ), where each rule defines a system operation that respects a sub-policy in Definition 1 (see Figure 1 for some illustration). In the sequel, we refer to each element e of a tuple tup as tup.e, for example, we refer to πstr in πθ as πθ .πstr . • C1 (collection consent): If in πθ .πcol , cons = Y, then a consent must be collected before the collection of the data itself. Formally: If during a system operation trace, ∃ Ev1 (collectat, t, E from , θ, v) for some time t, then ∃ Ev2 (cconsentat, t0 , E from , θ) for some t0 in the trace, such that t ≥ t0 . • C2 (collection purposes): If in πθ .πcol , cpurp = {act 1 :θ1 , . . . , act n :θn }, then the data of type θ must not be collected for any purpose that is not in cpurp. Formally: If during a system operation trace, ∃ (collectat, t, E from , θ, v) for some time t, then there is not any instance of Ev4, namely, event (act 0 , t0 , E from , θ0 , θ, v) for act 0 :θ0 ∈ / cpurp, where t0 ≥ t. • C3 (usage consent): For πθ , if cons = Y in πθ .πuse , then consent must be collected before the usage of the data. Formally: If during a system operation trace, ∃ (service_spec_use_event, t, E from , θ0 , θ, v) for some time t, then ∃ (uconsentat, t0 , E from , θ) for some t0 , such that t ≥ t0 . • C4 (usage purposes): If in πθ .πuse , upurp = {act 1 :θ1 , . . . , act n :θn }, then the data must not be collected for any purpose not in upurp. Formally: If during a system operation trace, there is an instance of Ev4, (act 0 , t, E from , θ0 , θ, v) for some time t, then act 0 :θ0 ∈ upurp. • C5 (storage consent): If in πθ .πstr , cons = Y, then a consent must be collected before the storage of the data itself. Formally: If during a system operation trace, ∃ (storeat, t, E from , θ, v, places) for some time t, then ∃ (sconsentat, t0 , E from , E, θ) for some t0 in the trace, such that t ≥ t0 . • C6 (storage places): If in πθ .πstr , where = {place 1 , . . . , place m }, then this data type must not be stored in any place that is not in where. Formally: If during a system operation trace, ∃ (storeat, t, E from , θ, v, place) for some time t, then place ∈ where. • C7 (deletion places): If in πθ .πdel , fromwhere = {place 1 , . . . , place m }, then this data type must be deleted from all the places in fromwhere. Formally: For all the events (deleteat, t1 , E from , θ, v, place 1 ), . . . , (deleteat, tn , E from , θ, v, place n ) in a system operation trace, {place 1 , . . . , place n } = fromwhere. • C8 (deletion delay): If in πθ .πdel , deld = delay, then this data type must be deleted within delay time from the time of its collection. Formally: 8
If during a system operation trace, ∃ (collectat, t, E from , θ, v) for some time t, and ∃ events (deleteat, t1 , E from , θ, v, places 1 ), . . . , (deleteat, tn , E from , θ, v, places n ), for some n, then t + delay ≥ t1 ≥ t, . . . , t + delay ≥ tn ≥ t. • C9 (transfer consent): If in πθ .πf w , cons = Y, then a consent must be collected before the transfer of the data. Formally: If during a system operation trace, ∃ (forwardat, t, E to , E from , θ, v) for some time t, then ∃ (fwconsentat, t0 , E to , E from , θ), such that t ≥ t0 . • C10 (transfer to): If in πθ .πf w , fwto = {E 1 , . . . , E n }, then the data must not be transferred to any other entity not in fwto. Formally: If during a system operation trace, ∃ (forwardat, t, E to , E from , θ, v) for some time t, then E to ∈ fwto. • C11 (transfer purposes): If in πθ .πf w , fwpurp = {act 1 :θ1 , . . . , act n :θn }, then the data must not be transferred for any other purpose not in fwpurp. Formally: If during a system operation trace, ∃ (forwardat, t,E to , E from , θ, v) for some time t, then there is not any instance of Ev4, namely, event (act 0 , t0 , E to , θ0 , θ, v) for act 0 :θ0 ∈ / fwpurp, where t0 ≥ t. C1: (cconsentat, t’, ࡱࢌ࢘ , ߠ ) t’ t … … … system operation/ (collectat, t, ࡱࢌ࢘ , ߠ , v) service starts C2: (collectat, t, ࡱࢌ࢘ , ߠ , v) t t’ … … … system operation/ (act’, t’, ࡱࢌ࢘ , ߠԢ , ߠ , v) service starts C8: (collectat, t, ࡱࢌ࢘ , ߠ , v) t ti t + delay … … … … system operation/ (deleteat, ti, ࡱࢌ࢘ , ߠ , v , place) service starts C11: (forwardat, t, ࡱ࢚ , ࡱࢌ࢘ , ߠ , v) t t’ … … … system operation/ (act’, t’, ࡱ࢚ , ߠԢ, ߠ , v) service starts Figure 1: The illustration of some compliance rules. 9
4 The Corresponding Architecture Level We provide the definition of system architectures, and outline the syntax elements1 . System architectures describe how a system is composed of components and how these components com- municate with each other (which is abstracted away in the policy level), however, they abstract away from the specific implementation details, such as the specific cryptographic algorithms, the specific order and concrete timing of the messages. 4.1 Architectures Syntax In line with the policy specification, a system architecture is defined on a set of entities (compo- nents) and data types. For a service provider SP, a finite set of entities, EntitySet SP arch = {Ei1 , . . . , Ein }, is defined. Let DataTypes SP arch = {θ 1 ,. . . , θ m } be the set of all the types defined in an architecture. We assume a finite set of data variables Var, (Xθ ∈ Var), time variables (T T ∈ TVar), data values Val (Vθ ∈ Val), and time and deletion delay values (t ∈ TVal, dd ∈ DVal). HasAccessTo: HasAccessTo: Ei ∈ EntitySet SP SP arch → {Ej ∈ EntitySet arch } Terms: T ::= Xθ | Vθ | Vpurp | Func T i ::= dd | T T Func ::= F (Xθ1 , . . . , Xθn ) | Time(Ti) | Cconsent(Data) | Uconsent(Data) | Sconsent(Data) | Fwconsent(Data, Eto ) Data ::= (Xθ , Eθ ) where Eθ is an entity who originally sent the data Xθ . F ::= Senc | Aenc | Mac | Hash | Service_spec_fun Destructor application: G(T1 , . . . , Tn ) → T Type: TYPE(T ) ::= θ, where θ ∈ DataTypes SP arch . Figure 2: Terms, Destructors and Types. HasAccessTo: This is a function that expects an entity as input and returns a set of other entities defined in the same architecture. It specifies which entity can have access to the data handled/stores/collected by other entities. For example, if Em and Ep represent a smart meter, and a digital panel, respectively, and we want to specify that the service provider, Esp , can have access to the panel and the meter, then, we define the relation HasAccessTo(Esp ) = {Em , Ep }. Terms: Terms model any data defined in the architecture, and is defined as shown in Figure 2. A term can be a variable (Xθ ) that represents some data of type θ, and it can also be a data constant (Vθ ) of type θ. For each entity E, we define a finite set of variables (i.e., data) Var = {X | TYPE(X) = θ, θ ∈ DataTypes SP arch } of type θ that it owns or inputs into the system. A variable Xθ ∈ Var represents any data of type θ supported by a service provider, such as the users’ personal information, photos, 1 The syntax we present here is a simplified version of the architecture language proposed in [11]. 10
videos, posts, energy consumption data, insurance number, etc. Similarly, a data type can be anything, such as basic personal information, energy consumption data, etc. F (Xθ1 , . . . , Xθn ) is a function on some pieces of data that can be, for instance, (symmetric, asymmetric, homomorphic) encryption, crytographic hash and MAC functions. The function Time(Ti) specifies the time with either a non-specific time value TT or a nu- merical delay value, dd. Cconsent(Data), Uconsent(Data) and Sconsent(Data), besides Data = (Xθ , Eθ ), specify a piece of data of type collection, usage, storage consent, respectively, on a piece of data of type θ that is originally sent by Eθ . Finally, Fwconsent(Data, Eto ) specifies a type of transfer consent on a piece of data of type θ, alongside an entity to whom the data can be forwarded (Eto ). A variable Xθ will be given a specific data value Vθ during an instance of system run (see Section 4.2). The special constants are defined to captures values of special types, such as a purpose value (Vpurp), a deletion delay value (dd), or the so-called non specific time value (TT ). While dd captures a numerical time value such as 3 years, 2 months, etc, the value TT is not numerical, and is used to express the informal term “at some point/time". Destructor: This represents an evaluation of a function, used to model a verification proce- dure. For instance, if the function F is an encryption or a message authentication code (MAC), then the corresponding destructor G is the decryption or verification procedure. Specifically, if Xenc = Senc(Xname , XSkey ) that represents the encryption of data X with the server key XSkey , and XSkey represents a symmetric key, then G(Xenc , XSkey ) → X is Dec(Senc(Xname , XSkey ), XSkey ) → Xname . Note that not all functions have a corresponding destructor, e.g., in case Xhash is a one-way cryptographic hash function, Xhash = Hash(Xpassword ), then due to the one-way property there is no destructor (reverse procedure) that returns Xpassword from the hash Xhash . 4.1.1 Special data types • The types of time and time value: Time(t) or Time(tvalue), where Time is a time data type, while the pre-defined special keyword t denotes a type of non-specific time, and tvalue is a type of time value (such as 5 years, 2 hours, 1 minute, etc.). tvalue is a (recursive) type and takes the form of tvalue ::= y | mo | w | d | h | m | numtvalue | tvalue + tvalue where y is for year, mo for month, w for week, d for day, h for hour, and m for minute. Moreover, numtvalue is the a number (num) before tvalue, for example, if num = 3 and tvalue = y, then numtvalue is 3y (i.e. 3 years). • The type of metadata and header information: Meta(θ) for a data type θ. This data type defines the type of metadata (information about other data), or information located in the header of the sent packets, such as IP address. For simplicity, we handle them under the same Meta construct. • The type of pseudonyms: P(ds), where ds is a special keyword for a real identity (data subject), while P(ds) specifies the pseudonym of ds. • Types of basic cryptographic functions. – Sk(Pkeytype): This data type defines the type of private key used in asymmetric encryption algorithms. Its argument has a type of public key (Pkeytype). – Senc(θ,Keytype): The type of the cipher text resulted from a symmetric encryption, and has two arguments, a piece of data (of type θ) and a symmetric key (Keytype). – Aenc(θ,Pkeytype): This is the type of the cipher text resulted from an asymmetric encryption, and has two arguments, a piece of data and a public key (Pkeytype). 11
– Mac(θ,Keytype): The type of the message authentication code that has two arguments. Hash(θ): The type of the cryptographic hash that has only one argument, a piece of data of type θ. 4.1.2 System Architecture The definition of a system architecture: An architecture PA is defined as a set of actions (denoted by {F}). The formal definition of architectures is given as follows: PA ::= {F} F ::= OWN (E, Xθ ) | CALCULATEAT (E, Xθ , Time(TT )) | CREATEAT (E, Xθ , Time(TT )) | RECEIVEAT (E, Data, Time(TT )) | RECEIVEAT (E, Cconsent(Data),Time(TT )) | RECEIVEAT (E, Uconsent(Data),Time(TT )) | RECEIVEAT (E, Sconsent(Data), Time(TT )) | RECEIVEAT (E, Fwconsent(Data, Eto ), Time(TT )) | STOREAT (E, Data, Time(TT )) | DELETEWITHIN (E, Data, Time(dd)) | CALCULATE(E, Xθ ) | CREATE(E, Xθ ) | RECEIVE(E, Data) | STORE(E, Data) Where Data = (Xθ , Eθ ). Figure 3: The table shows the syntax of a system architecture consisting of allowed actions between components/entities. • Action OWN (E, Xθ ) captures that E can own the data variable X of type θ (during a service regardless of time). • CALCULATEAT (E,Xθ ,Time(TT )) captures that an entity E can calculate the variable Xθ based on an equation Xθ = T , for some term T at non-specific time T T (e.g. θ = bill, and Xθ = Bill(energyconsumption, tariff)). • CREATEAT (E, Xθ , Time(TT )) specifies that E can create a piece of data of type θ, based on an equation Xθ = T (e.g. θ = account, and Xθ = Account(name, address)). The main difference between the actions create and calculate merely relies on the nature of T , for example, we calculate a bill, while create an account. • RECEIVEAT (E, Data, Time(TT )) means that E can receive Data at time TT. • RECEIVEAT (E, Cconsent(Data), Time(TT )), RECEIVEAT (E, Uconsent(Data), Time(TT )), and RECEIVEAT (E, Sconsent(Data), Time(TT )) specifies that a collection, usage and storage consent on Data, Data=(Xθ , Eθ ), can be received by E at non-specific time TT. • RECEIVEAT (E, Fwconsent(Data, Eto ), Time(TT )) specifies that a transfer consent on Data and Eto can be received by E at non-specific time TT. • STOREAT (E, Data, Time(TT )) specifies that Data = (Xθ , Eθ ) can be stored at some non- specific time TT in a place E. A place can be mainstorage and backupstorage, which represent a collection of main storage places such as main servers, and a collection of backup storage places (e.g. backup servers) of a service provider, respectively, or any service specific place (e.g., clientPC ). 12
• DELETEWITHIN (E, Data, Time(dd)) specifies that Data must be deleted from a place E within a certain time delay dd (where dd is a numerical time value). • The last four CALCULATE, CREATE, RECEIVE and STORE actions at the end are the corresponding versions of the previous four but without the Time() construct. They capture the correspinding actions regardless of time. The semantics of these four actions are the same as the previous four. They are defined for convenient purposes, offering a user an option to specify a simpler actions if they only want to reason about privacy properties. The actions with the Time() construct are main used for reasoning about data protection properties and requirements such as whether a consent has been collected before collection, usage, or transfer. Service provider (sp) Phone server Contact tracing app (capp) STOREAT(mainstorage, Positivetest(id, places), capp, Time(t)) mainstorage Figure 4: A simple example architecture, where, Data = (Positivetest(id, places), capp). An example system architecture is shown in Figure 4, where a service provider collects positive (virus) test records sent by contact tracing apps. A record contains an unique ID and a set of places where the phone has been brought to, and it is stored in the main storage place(s). We also define HasAccessTo(sp) = {server, mainstorage} so that sp can have access to server and mainstorage. 4.2 Architecture Semantics Similar to the policy case, the semantics of an architecture is based on events and system operation traces. A trace Γ is a sequence of high-level events Seq() taking place in during a service, as presented in Figure 5. An event can be seen as an instance of an action defined in Figure 3 that happens at some time t during a system operation trace. Events are given the same names as the corresponding activities but in lowercase letters in order to avoid confusion. • own(E, Xθ :Vθ , t) captures that E owns Xθ with a value Vθ at time t (where in this case, t is all the time during a service). Xθ :Vθ means that the variable Xθ is assigned a value Vθ 2 . • calculateat(E, Xθ :T , t) captures that at some time t, E calculates a piece of data of type θ that is equal to a term T (i.e. based on the equation Xθ =T , e.g. Xhash = Hash(Xpassword ).). • createat(E, Xθ :T , t) captures that at some time t, E creates a piece of data of type θ that is equal to a term T (e.g. Xθ = Account(Xname , Xaddress ), where T is on the rightside). • receiveat(E, Data:VTYPE(Data) , t) specifies that E receives a piece of data of type TYPE(Data) and value VTYPE(Data) at some time t. 2 Similar to the example in Section 3.2.1, V can be a name, e.g. Peter, that is assigned to the X during a θ θ service/system operation. 13
Γ ::= Seq() ::= own(E, Xθ :Vθ , t), for all t in any traces during a service | calculateat(E, Xθ :T , t) | createat(E, Xθ :T , t) | receiveat(E, Data:VTYPE(Data) , t) | receiveat(E, Cconsent(Data):Vcconsent , t) | receiveat(E, Uconsent(Data):Vuconsent , t) | receiveat(E, Sconsent(Data):Vsconsent , t) | receiveat(E, Fwconsent(Data):Vf wconsent , t) | storeat(E, Data:VTYPE(Data) , t) | deletewithin(E, Data:VTYPE(Data) , dd, t). | calculate(E, Xθ :T , t) | create(E, Xθ :T , t) | receive(E, Data:VTYPE(Data) , t) | store(E, Data:VTYPE(Data) , t) Figure 5: Events defined for architectures. The semantics of the events without the time construct such as calculate, create, receive, store, and delete is defined in the same way. • Events receiveat(E, Cconsent(Data):Vcconsent , t), receiveat(E, Uconsent(Data):Vuconsent , t), receiveat(E, Sconsent(Data):Vsconsent , t), and receiveat(E, Fwconsent(Data):Vf wconsent , t) specify that E receives a (collection, usage, storage, or transfer) consent on Data with a value Vθ , where θ is a corresponding type of consent (θ ∈ {cconsent, uconsent, sconsent, fwconsent}). • storeat(E, Data:VTYPE(Data) , t) captures that a piece of data of type TYPE(Data) is stored in a place E. • Finally, deletewithin(E, Data:VTYPE(Data) , dd, t) specifies that at time t, a piece of data of type TYPE(Data) is deleted from a place E, where t ≤ dd. • The semantics of the last four events are the same as their corresponding events with the Time() construct. 5 Architecture semantics States: The semantics of events is defined based on local states and the global state of the data types defined in a system. Given a service provider SP, a local state captures the values of (a data variable) Xθ , for all θ ∈ DataTypes SP arch from the perspective of an entity (component) E. Intuitively, a local state of E captures how the value of Xθ , θ ∈ DataTypes SP arch , changes from the perspective of an E during a system operation. Formally, a local state of E is a function StateV that assigns a value (including the undefined value ⊥) to each variable. Local state of E (denoted by µE ) State E : Var 7→ Val ⊥ , where Var is a set of all possible data variables and Val ⊥ a set of all possible values, including the undefined value ⊥. Assume that there are m entities E1 , . . . , Em defined in an architecture. The global state of an architecture is the collection of all the local states in a system. A global state is denoted by µ, where µ = (µE1 , . . . , µEm , T T ). Global state of an architecture (denoted by µ) State : State m V × TVar. 14
The initial (global) state for an architecture PA is denoted by σ init , and is the collection of the initial states of each defined entity. Initially the values of all the variables defined in the architecture (including the time variable) have an undefined value, ⊥. µinit : Initial Global State µinit = (µinit init E1 , . . . , µ Em , T T init ) with ∀i ∈ [1, m], µinit Ei = (⊥, . . . , ⊥) ttinit = ⊥. Event trace and state updates: An event trace of an architecture PA is denoted by τPA , and contains a finite sequence of events defined in Figure 5, happening during a system operation. Below we define the semantics function, denoted by ST , which defines how a trace τPA changes the global state of an architecture (Figure 6). ST makes use of the function SE , which defines how each event in τPA changes the current global state of PA. Semantics function ST : EventTrace × State 7→ State SE : Event × State 7→ State Definition 2 (The semantics of architectures) The semantics of an architecture PA is de- fined as a set of global states that can be reached from the initial global state : {µ ∈ State | ∃ τPA , ST (τPA , µinit ) = µ}. ST (emptytrace, µ) = µ ST (event.τPA , µ) = ST (τPA , SE (event, µ)) SE (own(E, Xθ :Vθ , t), µ) = µ[µE /µE [Xθ /Vθ ], T T /t] SE (calculateat(E, Xθ :T , t), µ) = µ [µE /µE [Xθ /eval(T , µE )], T T /t] SE (createat(E, Xθ :T , t), σ) = µ [µE /µE [Xθ /eval(T , µE )], T T /t] SE (receiveat(E, Data:VTYPE(Data) , t), µ) = µ[µE /µE [Data : VTYPE(Data) ], T T /t] SE (receiveat(E, Cconsent(Data):Vcconsent , t), µ) = µ[µE [Cconsent(Data) : Vcconsent ], T T /t] SE (receiveat(E, Uconsent(Data):Vuconsent , t), µ) = µ[µE [Uconsent(Data) : Vuconsent ], T T /t] SE (receiveat(E, Sconsent(Data):Vsconsent , t), µ) = µ[µE [Sconsent(Data) : Vsconsent ], T T /t] SE (receiveat(E, Fwconsent(Data):Vf wconsent , t), µ) = µ[µE [Fwconsent(Data) : Vf wconsent ], T T /t] SE (storeat(E, Data:VTYPE(Data) , t), µ) = µ [µE /µE [Xθ /Vθ , Cp(Xθ )/Vθ ], T T /t] SE (deletewithin(E, Data:VTYPE(Data) , dd, t), µ) = µ [µE /µE [Xθ /⊥, Cconsent(Data)/⊥, Uconsent(Data)/⊥, Sconsent(Data)/⊥, Fwconsent(Data)/⊥], T T /t)]. Figure 6: The semantics of architectural events. Each event can either the global state (and entity state) or leave it unchanged. To capture the modification made by an event at time t on (only) the variable state of an entity E we write 15
µ[µE /µE [Xθ /Vθ ], T T /t] (or µ[µE /µE [Xθ /⊥], T T /t] in the case of the undefined value, e.g., when a variable has been deleted). Intuitively, this denotation captures that the old state µe is replaced with the new state µe [Xθ /Vθ ] (µe [Xθ /⊥]), in which the variable Xθ has been given the value Vθ (or the undefined value ⊥) as a result of the event, the time variable T T is given the value t. 5.1 The Conformance Between Policies and Architectures We propose three types of conformance: (i) privacy conformance, (ii) conformance with regards to data protection properties (which we refer to as DPR conformance in this paper), and (iii) functional conformance. Privacy conformance compares a policy and an architecture based on the privacy properties, namely, if at the policy level (based on a defined policy) an entity is not allowed to have or posses a given type of data, then this is also true in the corresponding architecture, and vice versa. It also says that if at the policy level an entity is not allowed to be able to link two types of data, then this is also the case in the corresponding architecture. Definition 3 (Privacy conformance) If in a policy πθ : 1. an entity E is not allowed to have a data type θ, then E cannot have this data type in the correspinding architecture. 2. an entity E is not allowed to be able to link two data types, θ1 and θ2 , then E cannot link these data types in the correspinding architecture. The DPR conformance deals with data protection requirements (specified in the sub-policies), such as appropriate consent collection, satisfaction of the defined deletion/retention delay, appro- priate storage and transfer of a given type of data. Definition 4 (DPR conformance): 1. If in a policy πθ , the collection of a (collection, usage, storage, or transfer) consent is required for a piece of data of given type, then the reception of a consent takes place before/at the same time with the reception of the data itself. 2. If in an architecture there is an action act defined on a data type θ, then in the policy πθ , there is a (collection, usage, storage, or transfer) purpose act:θ defined for the same type. 3. If in an architecture a data type θ is stored in some storage place, strplace, then in the policy πθ , strplace ∈ πstr .where (see Table 1 for notations). 4. If in the policy πθ , delplace ∈ πdel .fromwhere, then in the corresponding architecture the same data type can be deleted from the place delplace (i.e. there is an action DELETEAT of θ and delplace). 5. If in an architecture, a piece of data of type θ can be deleted within time tvalue, then in the corresponding policy πθ , tvalue ≤ πdel .deld. In other words, the retention delay defined in the policy must be respected in the architecture. 6. If in an architecture, a piece of data of type θ can be transferred to an entity E, then in the policy πθ , E ∈ πf w .towhom (again, see Table 1 for notations). Finally, functional conformance compares a policy and an architecture based on their function- ality. Specifically, if at the policy level an entity is allowed to be able to have a data type, or link two data types, then the corresponding entity in the architecture can have the same data type or link the same two types. This conformance can help a system designer to find an appropriate trade-off between functionality and privacy as in real life, sometimes we would require a system to be able to provide certain services. Definition 5 (Functional conformance) 16
1. If in a policy πθ , an entity E is allowed to have a data type θ, then E can have this data type in the architecture. 2. If in a policy πθ , an entity E is allowed to be able to link two data types, θ1 and θ2 , then E can link these two data types in the corresponding architecture. 3. If in a policy πθ , the collection of a (collection, usage, storage, or transfer) consent is not required, then no corresponding consent can be received in the architecture. 4. If in a policy πθ , there is a (collection, usage, storage, or transfer) purpose act:θ defined, then in the corresponding architecture there is an action act defined on a data type θ. 5. If in a policy πθ , (strplace ∈ πstr .where) for some place strplace, then in the corresponding architecture this data type can be stored in strplace. 6. If in an architecture a piece of data of type θ can be deleted from a set of storage places, setdelplaces, then in the corresponding policy πθ , we have (setdelplaces = πdel .fromwhere). 7. If in the policy πθ , E ∈ πf w .towhom, then in the corresponding architecture, the same data type can be transferred to the same entity E. 6 The proposed automated verification engine The verification engine of DataProVe is based on logic and resolution based proofs. Below, we define the inference rules that will be used in the inference algorithm in Algorithm 1. Definition 6 An inference rule R is denoted by R = H ` T1 , . . . , Tn , where H is the head of the rule and T1 , . . . , Tn is the tail of the rule. Each element Ti of the tail is called a fact (or condition), and a head is called a “consequence". The rule R reads as if T1 , . . . , Tn , then H. Definition 7 In each rule, the head (H) and a fact (Ti ) have the form of PREDICATE(arg1 ,. . . , argn ). For example, in FWCONSENTCOLLECTED(E,θ,Eto ) the predicate is FWCONSENT- COLLECTED and E, θ, Eto are arguments. The arguments are entity and data type variables, which can be bound to a specific entity and a data type during the automated proofs. D1. FWCONSENTCOLLECTED(E,θ,Eto ) ` RECEIVEAT(E,Fwconsent(Data,Eto ),Time(TT)), RECEIVEAT(Eto ,Data,Time(TT)) D2. CCONSENTCOLLECTED(E,θ) ` RECEIVEAT(E,Cconsent(Data),Time(TT)), RECEIVEAT(E,Data,Time(TT)) D3. UCONSENTCOLLECTED(E,θ) ` RECEIVEAT(E,Uconsent(Data),Time(TT)), CREATEAT(E,Anytype(Data),Time(TT)) D4. UCONSENTCOLLECTED(E,θ) ` RECEIVEAT(E,Uconsent(Data),Time(TT)), CALCULATEAT(E,Anytype(Data),Time(TT)) D5. STRCONSENTCOLLECTED(E,θ) ` RECEIVEAT(E,Sconsent(Data),Time(TT)), STOREAT(E,Data,Time(TT)) Where Data = (θ,Eθ ) (θ represents a data type, and Eθ , an entity that originally sent this data). Figure 7: The proposed inference rules for DPR conformance check. The predicates and arguments of the heads and tails in the rules are in line with the architecture syntax in Figure 3. Figure 7 includes the proposed rules used in the verification of the DPR conformance properties. For instance, rule D1 says that if an entity E can receive a consent for the transfer of a piece of 17
data of type θ to an entity E to at some non-specific time T T , and E to can receive this data at the same time (or later3 ), then E can collect the tranfer consent of θ to E to . P1. HASUPTO(E,θ,Time(DD)) ` STORE(E,Data), DELETEWITHIN(E,Data,Time(DD)) P2. HASUPTO(E,θ,Time(DD)) ` STOREAT(E,Data,Time(TT)), DELETEWITHIN(E,Data,Time(DD)) P3. HAS(trusted,Anytype(DS,θ)) ` HAS(trusted,Anytype(θ,P(DS))) P4. HAS(trusted,Anytype(DS,θ)) ` HAS(trusted,Anytype(P(DS),θ)) P5. HAS(trusted,Anytype(θ,DS)) ` HAS(trusted,Anytype(θ,P(DS))) P6. HAS(trusted,Anytype(θ,DS)) ` HAS(trusted,Anytype(P(DS),θ)) P7. HAS(E,θ) ` RECEIVEAT(E,Data,Time(TT)) P8. HAS(E,θ) ` STOREAT(E,Data,Time(TT)) P9. HAS(E,θ) ` OWN(E,θ) P10. HAS(E,θ) ` CREATEAT(E,θ,Time(TT)) P11. HAS(E,θ) ` CALCULATEAT(E,θ,Time(TT)) P12. HAS(E,θ) ` HAS(E,Senc(θ,K)),HAS(E,K) P13. HAS(E,θ) ` HAS(E,Mac(θ,K)), HAS(E,K) P14. HAS(E,θ) ` HAS(E,Aenc(θ,PK)), HAS(E,Sk(PK)) /* THE VERSIONS OF P7, P8, P10, P11 WITHOUT THE TIME CONSTRUCT */ /* FOR CONVENIENT PURPOSES WHEN SPECIFYING THEM IN THE TOOL */ P15. HAS(E,θ) ` RECEIVE(E,Data) P16. HAS(E,θ) ` STORE(E,Data) P17. HAS(E,θ) ` CREATE(E,θ) P18. HAS(E,θ) ` CALCULATE(E,θ) Figure 8: Inference rules for privacy conformance check (HAS and HASUPTO property). The last three rules capture cryptographic operations (symmetric encryption, MAC function, and asym- metric encryption, respectively). These three are the destructor application defined in Figure 2. Figure 8 includes the proposed rules used in the verification of the privacy conformance property (regarding the HAS/HASUPTO, i.e. data possession, property). For instance, rule P1 says that if the entity E can store a piece of data of type θ, and can delete this data within time T, then the entity can have this data up to T time. Rule P3 says that if a trusted authority/organisation has any data that contains a pseudonymised version of DS, with some other data, then the trusted authority can also have the same data that contains the “real" (not pseudonymised) DS. Finally, 3 This is modelled in an abstract way by using the same non-specific time value T T . 18
You can also read