Patent Publication Number: US-8528043-B2

Title: Systems and methods for generating trust federation data from BPMN choreography

Description:
BACKGROUND 
     The present invention relates to collaborative business enterprises, and in particular, to web services approaches to collaborative business processes. 
     Information security professionals often work for a particular company and seek to maintain security of information and computation resources, while helping, or at least not unduly obstructing, the needs of business personnel to access information, share information with appropriate personnel, and collaborate with other personnel, both within a given company and with personnel from other companies. 
     Security within a given domain can use security policy frameworks to systemize an approach to security for that domain. From the basic concept of security frameworks, and policy based security enforcement, a variety of developments have been made. Examples of such developments and efforts include the following. 
     SAML is an OASIS standard which allows enterprises to establish trust relationships with their business partners or customers. It is used for exchanging authentication and authorization data between different security domains. In SAML, an identity provider offers users authentication service and issues them SAML assertions (tokens) which are trusted and can be verified by service providers. SAML defines security as assertions, a set of protocols for integrating assertions in service requests and responses as well as bindings which encapsulate SAML messages into HTTP or SOAP messages. Main applications of SAML are web single sign-on and federated identity in B2C and B2B scenarios. 
     In some security frameworks such as WS-Security and WS-Federation, trust policies can be expressed in the format of WS-Policy and deployed to Security Token Services (STS) of participant domains. Trust policies can be also presented as configurations of trust federation technologies such as open SAML or WS-Federation tokens for cross-domain single sign-on. 
     There are a number of emerging technologies which address implementation aspects of identity federation and authentication brokerage. 
     WS-Security and WS-Federation. WS-Security is a federated identity specification to encapsulate security within SOAP messages. WS-Security defines attributes which can be added to a SOAP message header for user authentication and message confidentiality and integrity. WS-Security presents authentication information as tokens embedded in SOAP headers and supports tokens like Kerberos tickets, X.509 certificates, and SAML assertions. 
     WS-Federation extended the WS-Security and Security Token Service (STS) models to support scenarios where resources managed in a security domain can be provided to security principals whose identities and attributes are managed in other domains. WS-Federation is aimed for providing a common infrastructure to perform federated identity operations for web services and browser-based applications. 
     OpenID is an open, decentralized standard for user authentication, by which users can use a single identity for logging on to different web services. OpenID removes the need that end users have to present their account and password for authenticating to each service because identity providers which issue identifiers to end users are trusted by relying parties, i.e. service providers. 
     Security requirements can be expressed by annotations provided within a business process definition for expressing security requirements for tasks in a business processes. Security annotations can be later transformed into deployable authorization policies. Web Services Choreography Description Language (WS-CDL) process models also can be compiled into enhanced authorization policies that express a minimal set of authorizations required for business collaboration. 
     SUMMARY 
     Embodiments of the present invention include a machine implemented method for generating trust policy rule inputs, comprising accessing data from a tangible machine readable medium representative of a model of a process, the model being in a format of a Business Process Modeling Notation (BPMN) choreography process, identifying, from the model of the process, a set of participating entities, wherein each participating entity is to participate in the process, identifying, from the model of the process, a set of participating entities, wherein each participating entity is to participate in the process, identifying a set of choreography tasks conducted between the participating entities, identifying an initiating entity for each choreography task in the set of choreography tasks, and a corresponding participating entity for that choreography task, and storing data in a tangible computer readable medium indicating a trust relationship between the corresponding entity and the initiating entity, to be materialized by trust policies implemented by respective domains of the corresponding entity and the initiating entity. 
     In one embodiment, the storing of data indicating that the corresponding entity trusts the initiating entity comprises storing a matrix of binary values, the matrix having a row entry and a column entry for each participating entity in the process, the binary values indicative of a trust relationship or absence of a trust relationship. 
     In one embodiment, the present invention further comprises initializing the binary values of the matrix to indicate absence of a trust relationship. 
     In one embodiment, the identifying the set of participating entities and the identifying the set of choreography tasks comprises identifying a choreography task declaration in an XML formatted file representing the model of the process, and then identifying each instance of a participant reference tag and a single initiating participant tag in that choreography task declaration. 
     In one embodiment, the model of the process is represented by an XML formatted file, and the identifying the set of participating entities comprises parsing the XML formatted file to extract participant identifiers from the XML formatted file. 
     In one embodiment, the model of the process is represented by an XML formatted file, and the identifying the set of tasks comprises parsing the XML formatted file to extract choreography task identifiers from the XML formatted file. 
     In one embodiment, the present invention further comprises making a respective instance of a participating entity class, for each identified participating entity, and making a respective instance of a choreography task class, for each identified choreography task. 
     Embodiments of the present invention include a system for generating trust policy rule inputs, comprising a computation system comprising a processor, and a tangible memory, the processor coupled to read from and write to the tangible memory, wherein the tangible memory stores instructions for performing a method on the computation system comprising accessing data from a tangible machine readable medium representative of a model of a process, the model being in a format of a choreography Business Process Modeling Notation (BPMN), identifying, from the model of the process, a set of participating entities, wherein each participating entity is to participate in the process, identifying a set of choreography tasks conducted between the participating entities, and identifying an initiating entity for each choreography task in the set of choreography tasks, and a corresponding participating entity for that choreography task, and responsively storing data in a tangible computer readable medium indicating a trust relationship between the corresponding entity and the initiating entity, to be materialized by trust policies implemented by respective domains of the corresponding entity and the initiating entity. 
     In one embodiment, the method performed by the computation system further comprises storing a matrix of binary values, the matrix having a row entry and a column entry for each participating entity in the process, the binary values indicative of a trust relationship or absence of a trust relationship. 
     In one embodiment, the method to be performed on the computation system further comprises initializing the binary values of the matrix to indicate absence of a trust relationship. 
     In one embodiment, the method to be performed on the computation system comprises identifying a choreography task declaration in an XML formatted file representing the model of the process, and then identifying each instance of a participant reference tag and a single initiating participant tag in that choreography task declaration. 
     In one embodiment, the model of the process is represented by an XML formatted file, and the method to be performed on the computation system comprises identifying the set of participating entities by parsing the XML formatted file to extract participant identifiers from the XML formatted file. 
     In one embodiment, the model of the process is represented by an XML formatted file, and the method to be performed on the computation system comprises the identifying the set of tasks by parsing the XML formatted file to extract choreography task identifiers from the XML formatted file. 
     In one embodiment, the method to be performed on the computation system further comprises making a respective instance of a participating entity class, for each identified participating entity, and making a respective instance of a choreography task class, for each identified choreography task. 
     Embodiments of the present invention include a tangible machine readable memory storing instructions for causing a machine to perform a method comprising accessing data from a tangible machine readable medium representative of a model of a process, the model being in a format of a choreography Business Process Modeling Notation (BPMN), identifying, from the model of the process, a set of participating entities, wherein each participating entity is to participate in the process, identifying a set of choreography tasks conducted between the participating entities, and identifying an initiating entity for each choreography task in the set of choreography tasks, and a corresponding participating entity for that choreography task, and responsively storing data in a tangible computer readable medium indicating a trust relationship between the corresponding entity and the initiating entity, to be materialized by trust policies implemented by respective domains of the corresponding entity and the initiating entity. 
     In one embodiment, the instructions for storing of data indicating that the corresponding entity trusts the initiating entity comprise instructions storing a matrix of binary values, the matrix having a row entry and a column entry for each participating entity in the process, the binary values indicative of a trust relationship or absence of a trust relationship. 
     In one embodiment, the instructions further comprise instructions for initializing the binary values of the matrix to indicate absence of a trust relationship. 
     In one embodiment, the instructions for identifying the set of participating entities and the identifying the set of choreography tasks comprise instructions for identifying a choreography task declaration in an XML formatted file representing the model of the process, and instructions for identifying each instance of a participant reference tag and a single initiating participant tag in that choreography task declaration. 
     In one embodiment, the model of the process is represented by an XML formatted file, and the instructions for identifying the set of participating entities comprise instructions for parsing the XML formatted file to extract participant identifiers from the XML formatted file. 
     In one embodiment, the model of the process is represented by an XML formatted file, and the instructions for identifying the set of tasks comprise instructions for parsing the XML formatted file to extract choreography task identifiers from the XML formatted file. 
     The following detailed description and accompanying drawings provide a better understanding of the nature and advantages of the present invention. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  illustrates an example situation in which multiple participants may collaborate using web services; 
         FIG. 2  depicts an example multilane business process diagram of a business serving as an example process in this description; 
         FIG. 3  depicts a BPMN choreography model of the process of  FIG. 2 ; 
         FIG. 4  depicts an example method for generating trust model information from the choreography model of  FIG. 3 ; 
         FIG. 5  depicts a trust graph generated from a portion of the process of  FIG. 4 ; 
         FIG. 6  depicts a matrix representation of the trust graph of  FIG. 5 ; and 
         FIG. 7  depicts an example network oriented situation in which components depicted in  FIG. 1  and portions of the process depicted in  FIG. 4  can be implemented. 
     
    
    
     DETAILED DESCRIPTION 
     Described herein are techniques for producing trust models and relationships from high level business process models. These techniques can be used to express domain-level trust relationships required in order to implement business processes, and to generate inputs to automate creation of domain-specific policy deployments that materialize the expressed trust relationships. 
     Such business processes can be implemented by use of service oriented architectures, where machines use services provided by other machines in order to accomplish a process. Such collective action also can be viewed as a federated process, in which multiple independent actors collectively provide a solution, service, or product. As such, techniques disclosed herein find use in situations where a business operates in an ecosystem in which system resources, computation domains, services, databases, and other information need to be shared with a variety of personnel that do not belong to or are otherwise controlled by that business. 
     As introduced, a variety of efforts are being made to provide infrastructure that can enforce security policies. A great deal of focus remains on access control, under assumptions that user identities are already established, which implies that the basic predicate of a trust model also has been established. However, getting to that point remains challenging in a predictable, cost effective, and maintainable manner presents challenges. One approach is to materializing trust policy information inputs from a business process model. 
     The following disclosure addresses approaches to generating inputs to aid in setting up participant trust models that reflect a given business process. As such, this disclosure addresses providing inputs that can be used to materialize policies that can be deployed within a given security infrastructure. 
     For example, the disclosure relates to service-based business process execution between or among enterprises, suppliers or customers beyond organizational boundaries. Such service oriented process execution provides a service eco-system where business services are offered, discovered, traded, aggregated, and consumed via the Internet so that agile, dynamic collaboration and composite services from various providers are made available. 
     Technically, service-oriented architecture (SOA) enables services implemented and operated on heterogeneous platforms interoperable via common communication interfaces such as Web Services or RESTful Services. By providing business functions as web services, business services become more available and reusable in implementing collaborative business processes and value-added services. 
     Business processes can be developed by a model driven approach. Business process models allow agile software development techniques to be used in modeling business processes and to then translate model definitions into executable implementations. 
     In this disclosure, participants in a collaborative business include multiple business roles or entities who agree to join the collaboration and share service resources with each other during business process execution. 
       FIG. 1  depicts an example collaborative situation in which multiple collaboration participants  15 - 17  (three participants depicted as being representative of an arbitrary number). Each participant has electronic infrastructure that can communicate within a respective networking domain of the participant, and some of the components are available to be accessed through a wide area network, such as Internet  255 . A services registry  20  allows entities that offer web services to register by providing registration information. Authentication data can be provided or created, so that services registry  20  can function as a trusted third party to allow authenticated of registered entities by interested parties. Services registry  20  also can provide descriptions of services available from each entity. 
       FIG. 1  also depicts an example of infrastructure that can be available within a given domain of a participant. Such infrastructure can include database(s)  25 , devices  26 - 27  used by local participants to access services and information, web servers  30  that may serve resources both externally and internally. A schema for web services interfaces  31  can be provided which can draw upon databases  25 , code deployed on web servers  30 , and application servers  28  in order to provide services that can be accessed internally, and with appropriate authorization, externally. As such, service resources of a participant can be hosted internally and thus fairly directly controlled by internal Information Technology (IT) personnel and security personnel. For internal participants or users (e.g., local participants  26 - 27 ), authenticating and authorizing them to be participants in a given process is a relatively straight-forward matter of using the internal security infrastructure resources to apply appropriate access policies to existing user identities. However, to support interoperability of business collaboration, each participant must agree to grant partners proper rights to access necessary services, which may expose confidential or proprietary information, or be valuable, and hence should be restricted. As such, before participants can share resources in a collaboration, two security requirements should be met by domain security infrastructure. 
     One requirement is a capacity to handle user identities across enterprise domains, meaning that one enterprise domain can authenticate not only domain users but also users from partner domains before resources and services can be shared. This requirement can be called federated identities or trust federation. Another requirement is that appropriate access rights for cross-enterprise collaborations can be managed, meaning that an enterprise domain can define and maintain access rights of domain resources and services, not only for local domain users but also for external participants involved in collaborative activities. 
     An enterprise may be reluctant to join business collaboration unless information security can be maintained reliability, at reasonable cost, and at reasonable complexity. However, identity management in a collaborative environment is a challenging and complex task. 
     One challenge of identity management is to maintain consistency and completeness, especially as more and more demands are placed on infrastructure and personnel to support more collaborations, to end of life those that are completed, and to initiate new ones. One source of inconsistency is that security management is an autonomous task and generally conducted and managed by each participant independently of the other participants. Each participant of collaboration has to understand its own business needs, analyze security requirements, define and enforce corresponding policies. As participants often focus on their local security administration, overall security configuration of an entire collaborative situation may lose consistency. Incorrect security design of one participant may damage global security of the collaboration. 
     Another challenge is inefficiency. Security configuration for business collaboration heavily relies on manual efforts to integrate external identities into domain security configuration. It is a non-trivial effort to configure, test, maintain, and troubleshoot security of a complex business collaboration environment. Such efforts must be repeated for different collaborations. Moreover, to support dynamic collaboration, security configuration must adapt itself to changing business demands, e.g. resource sharing may be enabled on demand and stopped after business finishes and a participant of collaboration may be replaced during business process execution. On demand collaboration is hindered by lead times associated with setting up an appropriate security infrastructure. 
     In some aspects, supporting technology for secure and trustworthy collaborative business processes is disclosed. In some aspects methods and processes automate trust management of business collaborations. In one example solution, trust relationships between participants in a business collaboration are established and used to generate accurate and consistent trust policies that can be effectively enforced for process execution. 
     An overview of an example solution includes the following activities, described further below. A business collaboration is modeled as a choreography business process document using Business Process Model and Notation (BPMN). A semantic model of the resulting choreography process is parsed and analyzed. Trust federation or trust relationships implied in the business process model are derived. Specific trust-related policies are generated from the derived trust relationships (trust federation) identified as being present in the business model. These policies are materialized as deployable trust policies based on information retrieved from a service registry. Deployable trust policies can be expressed in various forms as appropriate for particular web service security frameworks and enforced in participating domains. 
     Business Process Modeling Notation (BPMN) can be used to formally model business collaboration. BPMN provides a notation which makes process description understandable to business analysts, software architect, technical developers, as well as general business people. BPMN is a based on flowcharting and involves defining diagrams to model business operations using visual components and flow controls. BPMN can be used to model both private business processes and public processes of business collaboration. A second generation BPMN (BPMN2) enhanced the notation with exchangeable format to support multiple modeling tools, BPMN choreography modeling, and formalization of execution semantics, etc. 
     BPMN2 supports three basic types of process models: Orchestration Processes, Collaboration Processes, and Choreography Processes. Orchestration models represent an organization&#39;s view of the process. An orchestration process describes a sequence or flow of activities in an organization to achieve a business objective. A process is depicted by BPMN as a graph of Flow Elements consisting of Activities, Events, Gateways, and Sequence Flows that define finite execution semantics. Choreography models define expected behavior between interacting participants. In BPMN, a choreography consists of a sequence of interactions and message exchanges between participants. Collaboration models depict the interactions between two or more business entities. A collaboration generally contains two or more entities depicted by pools and message flow between them. 
     Collaborative business processes are modeled here using choreography. Similar to an orchestration process, a choreography consists of sequence flows and flow objectives like activities, events, gateways and shares some elements with orchestration diagrams. Unlike orchestration processes or collaboration processes, a choreography focuses more on interactions. BPMN elements used to model a business choreography process are listed below. 
     Sequence Flow to show the sequence of choreography activities and connect with other flow objects such as events, gateways, and choreography activities. 
     A choreography activity represents an interaction between two or more participants in order to perform work. A choreography activity is an abstract object which may be a choreography sub-process, a call choreography activity, and a choreography task. A sub-choreography is a compound activity containing a flow of other activities (i.e. a choreography). A call choreography is a place holder to include a global choreography or global choreography task it is calling. A choreography task is an atomic activity which represents a set of message exchanges between two or more participants. The message sent by either one or both of the participants of the choreography task can be displayed using message icons. 
     Events specify something that happens during the course of a choreography. Events can affect the flow of the model and usually have a course or an impact. There are three basic events: Start Events and End Events for marking start and end of a choreography, and Intermediate Events occur between a start event and an end event. 
     Gateways are used to create alternative and/or parallel paths for a choreography. BPMN supports for a choreography the Exclusive, Event-based, Inclusive, Parallel, and Complex gateways. 
       FIG. 2  presents an example of BPMN2 diagrams and metamodel of a choreography for a particular business collaboration process. The depicted example describes a collaborative car seat design process, involving a car maker  51 , a seat maker  52 , an engineering firm  53 , and an ecoconsultant  54 . Ecoconsultant  54  provides a certified calculation web service for eco-calculation, in order to demonstrate or certify compliance with various government mandates, such as mandates imposed by different regulatory regimes as a condition for selling a vehicle in an area controlled by that regime. To avoid obscuring salient topics in this disclosure, details of the process are not exhaustively described herein. 
     Continuing with the example, in the automotive industry, car maker  51  relies on component suppliers to provide car parts. Car seat design is outsourced to car seat manufacturer  52 . Each particular country where a car may be shipped may have a different regulatory regime, with various arbitrary mandates, which may in some cases conflict with one another, or be more or less onerous relating to one subject or another. For example, car seats mounted in models for Australian markets must meet Australian eco-directives. 
     In this example, seat manufacturer  52  does not possess expertise in eco-assessment, and, therefore, has to rely on engineering partner  53  for material analysis. In order to certify compliance with the eco-directives, engineering partner  53  in turn uses ecoconsultant  54  for calculating eco-value of car seats according to rules of particular markets or regulatory regimes. For example, one regime may require “at least 85% materials must be recyclable” or “Carbon footprint for making a seat must be less than 5 kg”. If the design complies with all regulations, the car marker will receive an eco-compliance certificate. Otherwise, the seat design process has to be repeated until the final result is accepted. 
     As such, there are four business entities involved in the depicted seat design process, each with defined roles, and information transfer requirements: car maker  51  establishes and promulgates requirements for seat manufacturing; seat manufacturer  52  creates a seat design and supplies seats to car maker  51 ; engineering company  53  generate technical specifications of the design delivered by seat manufacturer  52 ; and eco-consulting company  54  provides a certified eco-calculation service. 
     The seat design process of  FIG. 2  can be re-modeled using the BPMN choreography depicted in  FIG. 3 . As the choreography model only focuses on interaction and messaging between participants, internal steps of the participant are eliminated for simplicity. A choreography diagram consists of flow objects. The diagram in  FIG. 3  includes (in part) a start event  77  and an end event  78 . The diagram also includes tasks represented by rounded rectangles. These tasks are Choreography Tasks and represent interactions (choreography task  80  identified). A choreography task has three bands representing the task name and the names of two interacting participants. With respect to choreography task  80 , an initiator participant  81  is carmaker  51 . The initiator participant initiates an interaction. A choreography task is identified in a middle of rectangle  80 , and is sendreqs  82 . A recipient of the task, represented by a requirements document  85  is identified as seatmaker  83 . 
     Reports or other information also can be returned, which are responsive to a task initiated by an initiating entity. An example of a return report is ecoreport  86 , which is generated by ecoconsultant  54 , and returned to engineering firm  53 , which initiated the interaction that caused ecoconsultant  54  to generate the report  86 . The remaining tasks can be understood similarly, and need not be separately addressed. The BPMN2 choreography process model thus includes information about an initiator and a recipient of each task, information about a message being sent from initiator to recipient, as well as whether information is returned to the initiator. 
     To support secure and trustworthy collaborative business processes, a set of methods and processes to automate trust management of business collaborations is provided, focusing on establishment of trust relationships between participants in a business collaboration and generating accurate and consistent trust policies which can be effectively enforced for process execution. At a high level, a business collaboration is formally modeled as a choreography business process document using Business Process Modeling Notation (BPMN). A semantic model of the choreography process is parsed and analyzed. Trust federation or trust relationships implied in the business process model are derived. 
     Specific trust-related policies are generated from the derived trust federation and materialized as deployable trust policies based on information retrieved from a service registry. Deployable trust policies can be expressed in various forms for corresponding web service security frameworks and enforced in participating domains. 
     BPMN2 includes a schema for interchange of machine readable XML documents of process models. This schema defines semantic models and diagram models separately. The semantic models define business entities and processes in a business perspective and the diagram models describe graphic elements corresponding to elements of the semantic models for visual representing those semantic elements. This disclosure primarily focuses on semantic models from which trust relationships can be captured. The Appendix represents a simplified BPMN semantic model translated from the diagram in  FIG. 3 . 
       FIG. 4  depicts an example process  100  by which the choreography process can be used as a basis for generating specified trust relationships implied or required to implement the depicted business process. Derivation of the trust graph has two phases: the preparation phase and derivation phase. According to example process  100 , at  110 , data describing a BPMN choreography process model (e.g., in XML format) is received and at  120 , the data is parsed and analyzed. Where the process model is in a plain text document compliant with the BPMN schema, XML parsing programs, e.g. parsers to support the XML Document Object Model (DOM), a W3C specification for accessing structured documents can be used to parse the model. 
     During parsing  120 , at  121 , a list of business participants is produced and at  122 , a list of choreography tasks discovered in the choreography process model is produced. A participant can be represented as an instance of a Participant type or class in object oriented languages. For example, a participant class can be defined as 
     
       
         
           
               
               
             
               
                   
                   
               
             
            
               
                   
                 Class Participant { 
               
               
                   
                  id; 
               
               
                   
                 name; 
               
               
                   
                 }. 
               
               
                   
                   
               
            
           
         
       
     
     The participant list is represented by an array participants [1 . . . n] in type of Class Participant, where n is the number of participants occurring in the choreography process model. 
     A choreography task can be represented as an instance of a Task type: 
     
       
         
           
               
               
             
               
                   
                   
               
             
            
               
                   
                 Class Task { 
               
               
                   
                   id; 
               
               
                   
                   name; 
               
               
                   
                   Participant participants[ ]; 
               
               
                   
                   Participant initialParticipant; 
               
               
                   
                   }. 
               
               
                   
                   
               
            
           
         
       
     
     A choreography task includes a list of participates involved in the task and figures out the initial participant. It could be possible that more than two participants are included in a task, such as compound activities, whereas only one initial participant is allowed. 
     Thus, process  100  further defines, at  125 , a set of participants for each task in the list of tasks. Defining respective sets of participants includes identifying ( 126 ) an initiating participant for each task and identifying ( 127 ) one or more other participants for each task. A choreography task has one initiating participant, but can have any number of participants. 
     Pseudocode to perform operations  120 - 127  of process  100  is shown below. The participant list can be populated by searching for the &lt;participant&gt; tags in the DOM document and retrieving id and name attributes. The choreography task list can be determined by searching for the &lt;choreographyTask&gt; tags. In addition to retrieving name and id attributes, the initiating participant and the participant list are also extracted by corresponding tag names. 
     
       
         
           
               
               
             
               
                   
                   
               
             
            
               
                   
                 Participant participants[ ]; 
               
               
                   
                 i = 0; 
               
               
                   
                 for each &lt; participant&gt; node p ε D { 
               
               
                   
                    participants[i].id = p.getAttribute(“id”); 
               
               
                   
                   participants[i].name = p.getAttribute(“name”); 
               
               
                   
                   i = i + 1; 
               
               
                   
                 } 
               
               
                   
                 j = 0; 
               
               
                   
                  Task tasks[ ]; 
               
               
                   
                 for each &lt; choreographTask &gt; node t ε D { 
               
               
                   
                   tasks[j].id = t.getAttribute(“id”); 
               
               
                   
                   tasks[j].name = t.getAttribute(”name”); 
               
               
                   
                   tasks[j].initiatingParticipant = 
               
               
                   
                   t.getElementByTagName(“initiatingParticipantRef”); 
               
               
                   
                   k = 0; 
               
               
                   
                   for each &lt; participantRef &gt; node pr ε t { 
               
               
                   
                     tasks[j].participants[k] = 
               
               
                   
                     t.getElementsByTagName(“participantRef”); 
               
               
                   
                     k = k + 1; 
               
               
                   
                   } 
               
               
                   
                   j = j + 1; 
               
               
                   
                 } 
               
               
                   
                   
               
            
           
         
       
     
     In this disclosure, trust relationships of a BPMN choreography process can be represented as a trust graph: G=(P, R), where, P denotes a set of business entities which agree to participate in collaboration. P can be represented as a list of vertices equal (or greater) than a number of business entities in the choreography process. In many common usages, P will be equal to a number of business roles in the process, where there is a 1:1 correspondence between business entities and roles. However, if one business entity has more than one role, then there may be more roles than business entities. Depending on the circumstances, these different roles may be treated separately or the same, with respect to the set of trust relationships that are developed. For simplicity, a 1:1 correspondence of business entities and roles is assumed here. R is a set of trust relationships (trustworthiness) between participants. In this notation, trust relationships are represented as directed edges in G. 
       FIG. 5  shows a trust graph  150  for the choreography process model depicted in  FIG. 3 . In trust graph  150 , trust is modeled as directed relationships among participants, derived from trust relationships implicit in the process. The direction of trust is decided by the direction of messaging. For instance, specifying that car maker  51  initializes a message to seat maker  52  in the process means that the message recipient (seat maker  52 ) should be able to verify messages from car maker  51  so the message sender should be a trusted party of the recipient. The trustworthiness of a message can be validated by signatures or assertions attached by the sender. However, seat maker  52  is not automatically trusted by car maker  51  if there is no returning message from the seat maker. 
     Trust graph  150  can be represented as an n×n matrix (where n=|P|), as shown in  FIG. 6  with matrix  152 . Matrix representation is a computer-friendly form for storing and processing directed graphs. From these inputs, matrix  152 , representing trust graph  150  is built up based on the input of the participant and task lists. Pseudocode below shows how the trust graph can be determined. 
     In the beginning of the algorithm represented by the pseudocode, a matrix is initialized as a 2-dimension Boolean array. The scale of the array is determined by the size of the participant list. Each element in the matrix is set to FALSE by default. The tasks in the task list are then checked one by one. For each task, elements indexed by the IDs of the initiating participant and participants are selected and their value are set to TRUE if not set before. In the end of the algorithm, trust graph  150  in matrix format  152  is derived and made available for forming trust federation between participant domains. 
     
       
         
           
               
               
             
               
                   
                   
               
             
            
               
                   
                 Input: Participant P[ ], Task T[ ]; 
               
               
                   
                 trustMatrix[|P|, |P|]; 
               
               
                   
                 for each matrix element tm[i,j] ε trustMatrix[|p|][|p|] { 
               
               
                   
                   tm[i,j] = FALSE; 
               
               
                   
                 } 
               
               
                   
                 for each task ε T { 
               
               
                   
                   for each participant pr ε task.participants { 
               
               
                   
                     if tm[task.initiatingParticipant.id, pr.id] == FALSE 
               
               
                   
                     tm[task.initiatingParticipant.id, pr.id] = TRUE; 
               
               
                   
                   } 
               
               
                   
                 } 
               
               
                   
                   
               
            
           
         
       
     
     Returning to process  100  depicted in  FIG. 4 , process  100  includes producing ( 130 ) data representing trust relationships required in order to perform the business process. An example of such production is producing a matrix according to the disclosure. In particular, at  131 , trust relationships are defined to include that all recipient participants trust a communication from initiating recipients, on a task by task basis. 
     Business entities and description of their services need to be available for trust federation to be effectively deployed in participant domains. The business entity data and service descriptions can be organized online by a public registry, such as a Universal Description Discovery Integration (UDDI) service repository. UDDI provides an open registry standard which enables businesses to publish their service listings, and consumers to discover service offers. UDDI defines a business key as a unique identifier for a business entity and metadata for describing business entities and their service offers. Identifiers, keys, function descriptions, access points, and bindings of the services are listed to provide technical accessibility. 
     Example pseudocode for generating trust policy rules from a trust graph derived from a choreography process model is as follows: 
     
       
         
           
               
             
               
                   
               
             
            
               
                 Input:Participant P[ ], trustMatrix[|P|, |P|]; 
               
               
                 for each participant ε P { 
               
               
                   i,j=0; 
               
               
                   for each element tm ε trustMatrix[1..|P|, participant.id] { 
               
               
                     if tm[i, participant.id] == TRUE { 
               
               
                     rules[participant.id, j] =“Request from P[i].id is trustable.” 
               
               
                     j = j + 1; 
               
               
                   } 
               
               
                   i = i + 1; 
               
               
                   } 
               
               
                 } 
               
               
                   
               
            
           
         
       
     
     The above algorithm provides for creation of trust policies for each participant&#39;s domain, to extract trust relationships which are relevant to a specific participant and these policies can be represented by generated abstract trust rules. After trust relationships and concrete business and technical information of the participants become available, vendor specific trust policies can be created and enforced in participant domains through a policy deployment infrastructure. Those trust policies specify how identities and attributes are shared between participants in terms of derived trust relationships. 
     Generated rules can be complemented with specific information from the UDDI registry (in example process  100 , at  140 , UDDI registry is accessed for business entity and service descriptions). This UDDI information can be used in process  100  for producing ( 145 ) deployable policies in the participant domain. For example, an abstract rule may be that Participant SeatEngineering  52  trusts Requests from Participant SeatMaker  51 . Such abstract rule can be materialized as: 
     Request from (source=“http://services.seatMaker.com:8080/soap/send” with serviceKey=“c5921160-3e16-11d5-98bf-002035229c64”) is trustable. 
     In some security frameworks such as WS-Security and WS-Federation, trust policies can be expressed in the format of WS-Policy and deployed to Security Token Services (STS) of participant domains. Trust policies can be also presented as configurations of trust federation technologies such as open SAML or WS-Federation tokens for cross-domain single sign-on. Available technologies help implement authentication in cross-enterprise business processes and these technologies are not exhaustively described herein, to avoid obscuring pertinent disclosures. 
     Derivation of trust federation from collaborative business processes is expected to contribute to building security and trust for emerging computing paradigms such as Internet of Services and cloud computing. Internet of Services creates a comprehensive service ecosystem on the Internet, which consists of multiple parties such as service marketplaces, service providers, and service consumers. Before any business collaboration can be executed, proper trust relationships must be established between participants and necessary security configurations must be in place. To model business collaboration as choreography process models and derive trust federation policies can effectively help holistic security design and implementations for collaborative applications on the Internet of Services. 
     Embodiments of the disclosed systems and processes can also help applications hosted on clouds where computing resources are provided as services in a pay-per-use manner to reduce Total Cost of Ownership (TCO). Composition of services to support business collaboration on clouds is exact the use case where the trust federation derivation approach can be applied. 
     Implementations of the disclosure provide that necessary trust requirements can be captured and corresponding policies can be derived. The derivation can be conducted either at design time for security policy authoring, or at runtime to support dynamic configuration. In addition, with support of a service registry, trust federation policies can be materialized into deployable security policies and made ready to be enforced in the security domain of the participating organizations. Some advantages of trust federation derivation from BPMN choreography models are summarized below. 
     Business process modeling languages, such as BPMN, are designed to address business functions instead of technical implementation of security or trust. Computing trust relationships from choreography process models can effectively help system designers capture trust requirements of business collaborations. Trust federation can be derived on demand, which enable trust configuration to adapted just-in-time for reflecting dynamic changes of business demands. 
     Derivation of trust federation from business process models can reduce overhead of security management and reduce or eliminate human errors. By use of a service registry and policy deployment infrastructure, derivation of trust federation automates trust management of service-oriented applications and can be applied in the next generation of computing environments such as Internet of Services and cloud computing. 
       FIG. 7  depicts hardware of a machine configured to perform processes according to this disclosure. An example computer system  210  is illustrated in  FIG. 7 . Computer system  210  includes a bus  205  or other communication mechanism for communicating information, and a processor  201  coupled with bus  205  for processing information. Computer system  210  also includes a memory  202  coupled to bus  205  for storing information and instructions to be executed by processor  201 , including information and instructions for performing the techniques described above, for example. This memory may also be used for storing variables or other intermediate information during execution of instructions to be executed by processor  201 . Possible implementations of this memory may be, but are not limited to, random access memory (RAM), read only memory (ROM), or both. A storage device  203  is also provided for storing information and instructions. Common forms of storage devices include, for example, a hard drive, a magnetic disk, an optical disk, a CD-ROM, a DVD, a flash memory, a USB memory card, or any other medium from which a computer can read. Storage device  203  may include source code, binary code, or software files for performing the techniques above, for example. Storage device and memory are both examples of computer readable mediums. 
     Computer system  210  may be coupled via bus  205  to a display  212 , such as a cathode ray tube (CRT) or liquid crystal display (LCD), for displaying information to a computer user. An input device  211  such as a keyboard and/or mouse is coupled to bus  205  for communicating information and command selections from the user to processor  201 . The combination of these components allows the user to communicate with the system. In some systems, bus  205  may be divided into multiple specialized buses. 
     Computer system  210  also includes a network interface  204  coupled with bus  205 . Network interface  204  may provide two-way data communication between computer system  210  and the local network  220 . The network interface  204  may be a digital subscriber line (DSL) or a modem to provide data communication connection over a telephone line, for example. Another example of the network interface is a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links are another example. In any such implementation, network interface  204  sends and receives electrical, electromagnetic, or optical signals that carry digital data streams representing various types of information. 
     Computer system  210  can send and receive information, including messages or other interface actions, through the network interface  204  across a local network  220 , an Intranet, or the Internet  230 . For a local network, computer system  210  may communicate with a plurality of other computer machines, such as server  215  one or more of which may run backend system software such as an ERP software system, CRM, or database for example. Accordingly, computer system  210  and server computer systems represented by server  215  may form a local network, which may be programmed with processes described herein. In the Internet example, software components or services executing on computer system in the local network may communicate with computer programs on a cloud network  299  across the Internet. Communications with program on the Internet may include communication with programs residing on multiple different computer systems  210  or servers  231 - 235  across the network. The processes described above may be implemented for communication with programs implemented on one or more servers, for example. A server  235  on cloud  299 , for example, may transmit messages through Internet  230 , local network  220 , and network interface  204  to a component on computer system  210 . The software components and processes described above may be implemented on any computer system and send and/or receive information between networks as set forth above, for example. 
     The apparatuses, methods, and techniques described below may be implemented as computer programs (software) executing on one or more computers. The computer program may further be stored on a computer readable medium, such as a tangible computer readable medium. The computer readable medium may include instructions for performing the processes described below. In the description, for purposes of explanation, numerous examples and specific details are set forth in order to provide a thorough understanding of the present invention. It will be evident, however, to one skilled in the art that the present invention as defined by the claims may include some or all of the features in these examples alone or in combination with other features described below, and may further include modifications and equivalents of the features and concepts described herein. Based on the above disclosure and the following claims, other arrangements, embodiments, implementations and equivalents will be evident to those skilled in the art and may be employed without departing from the scope defined by the claims. 
     
       
         
           
               
             
               
                 APPENDIX 
               
               
                   
               
               
                 XML for Choreography Model of FIG. 3 
               
               
                   
               
             
            
               
                   
               
            
           
           
               
            
               
                 &lt;?xml version=“1.0” encoding=“UTF-8”?&gt; 
               
               
                 &lt;bpmn:definitions xmlns:bpmn=http://www.omg.org/spec/BPMN/20100524/MODEL 
               
               
                 targetNamespace=“carseatdesign” xmlns:csd=“carseatdesign”&gt; 
               
               
                 &lt;participant id=“CarMaker” name=“CarMaker” /&gt; 
               
               
                 &lt;participant id=“SeatMaker” name=“SeatMaker” /&gt; 
               
               
                 &lt;participant id=“SpecEngineering” name=“SpecEngineering” /&gt; 
               
               
                 &lt;participant id=“EcoConsult” name=“EcoConsult” /&gt; 
               
               
                 &lt;bpmn:choreograhy id=“chor_carseat-design”&gt; 
               
               
                 &lt;startEvent id=“StartProcess”/&gt; 
               
               
                 &lt;sequenceFlow sourceRef=“StartProcess” targetRef=“SendReqs”/&gt; 
               
               
                 &lt;choreograhyTask id=“SendReqs” name=“SendReqs”&gt; participantRef=“CarMaker” 
               
               
                 participantRef=“SeatMaker” initiatingParticipantRef=“CarMaker” &lt;/choreographyTask&gt; 
               
               
                 &lt;sequenceFlow sourceRef=“SendReqs” targetRef=“SendDesign”/&gt; 
               
               
                 &lt;choreograhyTask id=“SendDesign” name=“SendDesign”&gt; participantRef=“SeatMaker” 
               
               
                 participantRef=“SpecEngineering” initiatingParticipantRef=“SeatMaker” &lt;/choreographyTask&gt; 
               
               
                 &lt;sequenceFlow sourceRef=“SendDesign” targetRef=“CalculateEcoValue”/&gt; 
               
               
                 &lt;choreograhyTask id=“CalculateEcoValue” name=“CalculateEcoValue”&gt; participantRef=“EcoConsult” 
               
               
                 participantRef=“SpecEngineering” initiatingParticipantRef=“SpecEngineering” &lt;/choreographyTask&gt; 
               
               
                 &lt;sequenceFlow sourceRef=“CalculateEcoValue” targetRef=“EcoValueDecision”/&gt; &lt;exclusiveGateway 
               
               
                 id=“EcoValueDecision” gatewayDirection=“diverging”/&gt; 
               
               
                 &lt;sequenceFlow sourceRef=“EcoValueDecision” targetRef=“DisapproveSpec”&gt; 
               
               
                 &lt;conditionExpression&gt;EcoValue not OK?&lt;/conditionExpression&gt; &lt;/sequenceFlow&gt; 
               
               
                 &lt;sequenceFlow sourceRef=“EcoValueDecision” targetRef=“ApproveSpec”&gt; 
               
               
                 &lt;conditionExpression&gt;EcoValue OK?&lt;/conditionExpression&gt; 
               
               
                 &lt;/sequenceFlow&gt; 
               
               
                 &lt;choreograhyTask id=“DisapproveSpec” name=“DisapproveSpec”&gt; participantRef=“CarMaker” 
               
               
                 participantRef=“SeatMaker” initiatingParticipantRef=“CarMaker” 
               
               
                 &lt;/choreographyTask&gt; 
               
               
                 &lt;sequenceFlow sourceRef=“DisapproveSpec” targetRef=“DisapproveDesign”/&gt; 
               
               
                 &lt;choreograhyTask id=“DisapproveDesign” name=“DisapproveDesign”&gt; participantRef=“SeatMaker” 
               
               
                 participantRef=“SpecEngineering” initiatingParticipantRef=“SeatMaker” 
               
               
                 &lt;/choreographyTask&gt; 
               
               
                 &lt;sequenceFlow sourceRef=“DisapproveDesign” targetRef=“SendDesign”/&gt; 
               
               
                 &lt;choreograhyTask id=‘ApproveSpec’ name=‘ApproveSpec’&gt; participantRef=‘EcoConsult’ 
               
               
                 participantRef=‘SpecEngieeringeatMaker’ initiatingParticipantRef=‘EcoConsultCarMaker’ 
               
               
                 &lt;/choreographyTask&gt; 
               
               
                 &lt;sequenceFlow sourceRef=‘ApproveSpec’ targetRef=‘ApproveDesign’/&gt; 
               
               
                 &lt;choreograhyTask id=‘ApproveDesign’ name=‘ApproveDesign’&gt; participantRef=‘SpecEngineering’ 
               
               
                 participantRef=‘SeatMaker’ initiatingParticipantRef=‘SpecEngineering’ 
               
               
                 &lt;/choreographyTask&gt; 
               
               
                 &lt;sequenceFlow sourceRef=‘ApproveDesign’ targetRef=‘DeliverDesign&amp;Spec’/&gt; 
               
               
                 &lt;choreograhyTask id=‘DeliverDesign&amp;Spec’ name=‘DeliverDesign&amp;Spec’&gt; participantRef=‘SeatMaker’ 
               
               
                 participantRef=‘CarMaker’ initiatingParticipantRef=‘SeatMaker’ &lt;/choreographyTask&gt; 
               
               
                 &lt;sequenceFlow sourceRef=‘DeliverDesign&amp;Spec’ targetRef=‘EndProcess’/&gt; &lt;endEvent id=‘EndProcess’/&gt; 
               
               
                 &lt;/bpmn:choreography&gt; &lt;/bpmn:definitions&gt;