Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Excluding certain fields when calculating conditions-hash #48

Closed
kamil-olszewski-uw opened this issue Mar 9, 2021 · 120 comments
Closed

Comments

@kamil-olszewski-uw
Copy link
Contributor

There are fields in the cooperation coditions that are not in the IIAs template. Those are:

  • sending-contact
  • receiving-contact
  • sending-ounit-id
  • receiving-ounit-id

Recently, there has been the idea that certain fields should be removed from the conditions-hash computations, because changing these fields would change the hash, but they do not contain information that should affect the validity of the agreement.

We believe that this should apply to fields sending-contact and receiving-contact, as the contact details of cooperation coordinators can indeed change.

However, we believe that the hash should take into account the field sending-ounit-id and receiving-ounit-id, because the faculties implementing cooperation conditions are unlikely to change. And if this happens (or the name of the organizational unit changes due to changes in the structure of the university), a new agreement should be signed in such a case.

Please comment if you think we should do it differently.

@fmapeixoto
Copy link
Contributor

In my opinion, the contacts shouldn't be calculated because, as referred by Kamil, "...do not contain information that should affect the validity of the agreement.".

Regarding the OUnits in the cooperation conditions, I have 2 use cases that I understand may exists or not:

  1. in case a OUnit is specified at the partners level, no more different OUnits should appear in the cooperation conditions right? if affirmative they can:
    a) be present (required)
    b) present (optional)
    c) none at all (because they are already at the top
  2. in case no OUnit is specified at the partner level, then the possibility of having OUnits in the Cooperation Conditions is something that may be needed in much cases.
    In order to make easier for specifications, the optional parameters may be the best option.

@kamil-olszewski-uw
Copy link
Contributor Author

  1. in case a OUnit is specified at the partners level, no more different OUnits should appear in the cooperation conditions right? if affirmative they can:
    a) be present (required)
    b) present (optional)
    c) none at all (because they are already at the top

There may be situations when e.g.:

  • faculty is specified at the partner level, and institutes are specified at the cooperation conditions level,
  • subsidiary of the university is specified at the partner level, and its faculties are specified at the cooperation conditions level.

Of course, an erroneous situation may arise when, for example, faculty is specified at the partner level, and other faculties are specified at the cooperation conditions level. But it is a business error that should be noticed by the user and not by the system.

@fmapeixoto
Copy link
Contributor

And one more remark, does it make sense, per cooperation condition, to have it 0-unbounded? Shouldn't it be just 0-1 per cooperation? Just asking because I don't know practical use-cases of these.

@umesh-qs
Copy link

Restricting to a maximum of 1 can also resolve #29. This was closed today without any solution.

@EvelienRenders
Copy link

I don't know if this is relevant, but the Erasmus Dashboard right now only allows one OUnit per Agreement (so not even on the cooperation level). Is this something that EUF should 'fix'?

For example: @umesh-qs, it might prove weird when one of your MoveOn users starts an agreement with 4 cooperation conditions that each has a different OUnit, and it comes into the Dashboard as 4 separate agreements.

What happens if the Dashboard user then changes things on an agreement level, and sends it back? What does the MoveOn user see then?

As for your remark @fmapeixoto

And one more remark, does it make sense, per cooperation condition, to have it 0-unbounded? Shouldn't it be just 0-1 per cooperation? Just asking because I don't know practical use-cases of these.

It depends; right now the Dashboard users are making up OUnits for 'institution-wide' agreements - because they cannot choose multiple OUnits per Agreement in the Dashboard. That means that we have 7 faculties + 1 institution-wide OUnit.

That is not a problem per se, but might not be the perfect way to use these Units...

@umesh-qs
Copy link

umesh-qs commented Mar 11, 2021

@EvelienRenders
I did not understand whether you are supporting multiple cooperation conditions or not. But it is certainly possible.
How it is implemented in the Dashboard is something that is specific to Dashbord and if it is implemented the way you described then personally that is not the best way.

But that is not what is there under the issue #29. What I was asking is that when there is no limit on the number of cooperation conditions then how do I uniquely identify each cooperation condition. Restriction to max 1 for each type can resolve the issue.

@EvelienRenders
Copy link

@umesh-qs
Forgive my non-technical question ;) I'm an information manager at a Dutch university and not working directly on the development of the connection to our SIS (Osiris, developed by CACI). I'm trying to get a grip of the issues that are still ongoing - and I understand your issue #29 - although unfortunately, I can only add an HEI's perspective on these issues.

I find it comforting to hear that you think the Dashboard's implementation is not the best because personally, I'm thinking that as well - I will send EUF the feedback via their support portal once it is online again...

Thank you for all the hard work that is going into this on your end, but also on the ends of the other 3rd party providers - it's much appreciated (although not many might let you know during the 'trial and error' phase 😉)

@pleys
Copy link

pleys commented Mar 12, 2021

@kamil-olszewski-uw I think we should leave contacts out of conditions hash. I see a great advantage of having contacts connected the the agreements, e.g. for sharing the academic coordinator of a given agreements (who can be the responsible person for signing learning agreements) but this person can change every year and we don't want to re-approve our agreement every year.

@pleys
Copy link

pleys commented Mar 12, 2021

The organisational units discussion is somewhat more complex and the discussion above points to the issue of grouping agreements that I raised earlier.

@umesh-qs
Copy link

@kamil-olszewski-uw
I am sorry, I did not understand, what are we trying to solve here by adding/removing fields from the calculation of hash?

@kamil-olszewski-uw
Copy link
Contributor Author

I am sorry, I did not understand, what are we trying to solve here by adding/removing fields from the calculation of hash?

The point is that the mobility coordinators are not part of the agreement. They would not be on a traditional paper agreement. However, since the coordinators are part of the cooperation conditions in API, the change of the coordinator would make the hash, which was the basis for accepting the agreement, obsolete. And the change of coordinator is something common. Therefore, we want sending-contact and receiving-contact not to be taken into account when hash is calculated.

@fmapeixoto
Copy link
Contributor

I believe the discussion here should be directly related to whether we remove some fields from the calculation of the Hash, and or they should exist, and if so, in which circumstances.

For the IIA ecosystem (all APIs) to work properly, all the systems (ownsys and providers) have to guarantee that they are able to comply with all the fields (at least for the calculation of the hash) and have proper ways of storing and sending the exact same values, in the same order, so the hash match every time. I don't think we should discuss here already what is supported by whom because what is agreed here should be implemented to comply.

I agree with Paul regarding the contacts. Regarding the ounits, I leave the he discussion to the ones who have more deep knowledge about all the use-cases and needs.

@umesh-qs
Copy link

@kamil-olszewski-uw
I think too much weightage is given to hash. Your scenario is frequent changes to agreement contact. Others are talking about ounit.
I have a problem that recent API changes will change the hash of all the agreements exchanged via EWP network.
Are our clients supposed to approve all of them again now and again in future if more changes are done?

@fmapeixoto
Copy link
Contributor

@umesh-qs that is actually a good question which I believe is related because what else is proof that a specific agreement has been "signed" if the hashes don't match on both sides? Perhaps coming back to the topic of having a digital signature in the XML somehow fixes everything. But is the same of having the fields and not being able to change any of them after "signing" (including contacts).

@kamil-olszewski-uw
Copy link
Contributor Author

I have a problem that recent API changes will change the hash of all the agreements exchanged via EWP network.
Are our clients supposed to approve all of them again now and again in future if more changes are done?

We are currently in the infant stage of the IIAs Approval API. I cannot speak for others, but we do not have any digitally approved IIA yet, not including test agreements. And even if some agreements between partners using EWP have been approved via EWP, there should still be signed agreements on paper. The most important thing is to meet the specification on the deadlines set by the EC regarding agreements, which will be signed only digitally.

@kamil-olszewski-uw
Copy link
Contributor Author

There are a few important issues in this thread - related, but still separate, so we have a slight chaos here. I will try to answer here to unanswered questions:

1. Number of organizational units with cooperation conditions:

We understand that @fmapeixoto asked about the 0-unbounded to 0-1 change in the context of organizational units under cooperation conditions, and not in the context of the cooperation conditions themselves. We don't remember who postulated the unbounded organizational units and think we can limit them to 0-1 as long as no one objects.

2. Number of cooperation conditions of one kind:

We cannot change cooperation conditions from 0-unbounded to 0-1. A simple use case where the unbounded option matters:

  • Student mobilities for studies from university A to university B, EQF level 6: 5 people, 25 months
  • Student mobilities for studies from university B to university A, EQF level 6: 4 people, 20 months
  • Student mobilities for studies from university A to university B, EQF level 8: 3 people, 16 months

3. Differences between Dashboard and API:

@EvelienRenders - If something in the Dashboard currently looks different than the final API shape that we collectively agree to, we are convinced that the Dashboard will be adapted to the API structure.

@kamil-olszewski-uw
Copy link
Contributor Author

SUMMARY (our proposed changes to IIAs API based on our discussion):

  1. We will remove sending-contact and receiving-contact from the calculation of the hash.

  2. We will NOT remove sending-ounit-id and receiving-ounit-id from the calculation of the hash.

  3. We will change maxOccurs of sending-ounit-id and receiving-ounit-id from unbounded to 1.

  4. We will NOT change max Occurs of student-studies-mobility-spec, student-traineeship-mobility-spec, staff-teacher-mobility-spec and staff-training-mobility-spec from unbounded to 1.

  5. We will NOT force a specific number of digits in the isced-f-code, but in the commentary to this element we will strongly recommend that the ISCED code should be four-digit, because this way it will be compliant with the requirements of Mobility Tool+ apllication, which only accepts four-digit codes for mobilities (see issue: Number of digits in the ISCED code #49).

@umesh-qs
Copy link

Please suggest how to handle hash/approval for existing agreements in the EWP network.

@umesh-qs
Copy link

@kamil-olszewski-uw
Not sure if this was discussed before releasing the new IIA API. How do we handle hash changes for the approved agreements in EWP?

@EvelienRenders
Copy link

With regards to point 3 - we found that this would be a bit restrictive. Could someone explain elaborate if this is a technical requirement?

  1. We will change maxOccurs of sending-ounit-id and receiving-ounit-id from unbounded to 1.

@umesh-qs
Copy link

@kamil-olszewski-uw
I think IIA API changes have been released, without considering all the points. I would like to know what is the process for approving the changes for an API and who takes the final call to release the changes even if there are unanswered questions?

@kamil-olszewski-uw
Copy link
Contributor Author

We will change maxOccurs of sending-ounit-id and receiving-ounit-id from unbounded to 1.

With regards to point 3 - we found that this would be a bit restrictive. Could someone explain elaborate if this is a technical requirement?

Do you really have individual cooperation conditions dedicated to several (but not all) organizational units? We have several thousand agreements with universities from the EU and almost as much with the rest of the world, and it was always enough for us to indicate one unit or no unit at all.

@kamil-olszewski-uw
Copy link
Contributor Author

Not sure if this was discussed before releasing the new IIA API. How do we handle hash changes for the approved agreements in EWP?

Do you mean (1) changes to the existing agreement due to the modification of the cooperation conditions or (2) obsolescence of the hashes calculated so far due to the change in the method of calculating the hash?

Ad 1. We thought about it and many voices were in favor of the solution that the change in cooperation conditions should result in signing a new agreement.

Ad 2. As I wrote earlier, we are currently in the infant stage of the IIAs Approval API. First stable version was released few years ago. It is difficult to consider earlier versions as an unchanging basis without the risk of numerous backwards incompatible changes

@umesh-qs
Copy link

@kamil-olszewski-uw
So this is an official stand that because of new changes to the API structure all the existing agreements are not valid anymore until approved again? Is it ok to communicate this to our clients once we release the new changes?

@umesh-qs
Copy link

@kamil-olszewski-uw
Awaiting your response to my last comment, please.

@janinamincer-daszkiewicz
Copy link
Member

This is not true that because of the new changes to the API structure all the existing agreements are not valid anymore.
First of all they have already been approved. No need to approve them again.
Second, they will stay approved under the old API.
It is natural that the new APIs will show up and will have to be implemented.
We have nothing else to add so please do not push.

@umesh-qs
Copy link

"We have nothing else to add so please do not push.". This is a very harsh comment.
I was just trying to get some answers since I have to respond to multiple stakeholders in my organization.
And I don't have the option to tell them not to push me, since EWP API designers/approvers don't like asking questions.

Let me come back to the issue of hash change, with an example

  1. HEI A creates and shares an IIA with HEI B.
  2. HEI B pulls the IIA data.
  3. HEI B validates the hash and approves the IIA of HEI A.

Now both HEI A and HEI B implements IIA API version 6.0

  1. HEI B pulls the data of the same IIA from HEI A.
  2. Since there is a change in hash calculation logic in the new API, HEI B will get a new hash and has to approve again.

Can any of the IIA service provider, suggest ways, where our clients, don't have to re-approve the already approved agreement in the above scenario?

@sascoms
Copy link

sascoms commented Mar 23, 2021

If I have not misunderstood the question:

There two ways:

  1. To keep the approval status in your systems.
    This way, even if the hash or the api version changes, you still have a previous agreement set as approved in the past.
    And no need for a re-approval operation.
    Or even if the API version changes, these IIAs are already approved. No need to re-approve (if there is no IIA content updated/changed)

  2. To send CNR to the partner and re-initiate the approval process.

In my opinion, already approved IIAs do not need to go through a new approval check or process as the re-approval process should apply only if one of the partners change any of the content or the valid years or similar data in the IIA.

However, if the IIA API version sets new required fields and these fields are missing in the existing IIAs and the provider systems require these fields to exist for approval process or mobilities, then #2 option should definitely be applied.

@fmapeixoto
Copy link
Contributor

This will be a problem over time, not only from 5 to 6 or 4 to 5.
In my opinion, adding the signature field in the XML will make it irrefutable and, if signed by both, APIs can change the whole structure that the signature of the saved XML is always valid and you can keep it in the DB. Instead of calculated hashes, signatures of both parties are enough.
The past ones, we have to trust that partners support older versions, or at least keep the older hashes in the approvals API.

@kamil-olszewski-uw
Copy link
Contributor Author

As Francisco wrote, this problem may reappear many times in the future - for example, when the EC decides to introduce completely new elements to the cooperation conditions.

We plan to add signatures in the future. But this is a more general issue that also applies to other APIs.

Currently, for example, you can use such a solution: If the institution wants the approve agreement only once - with a hash that will never expire and can always be used to check whether the agreement has not changed - then the institution may keep an information in the system, which the IIAs API version was used during approval of the agreement, and the system may have hash calculation algorithms implemented for different versions of the IIAs API.

@BavoNootaert
Copy link

Of course one would use libraries as much as possible. The point is: the hash is effectively a reference to a response received earlier (in some of the comments above it is treated as a nonce.) That is relatively straightforward.

The entire XML is harder:

  • Extracting the response as it was received by the partner is awkward with many frameworks, as it is parsed to some object before it is handled by the application itself. So if you include it in the approval response, you have the same awkwardness as with hashes. That part isn't solved.
  • Upon receiving the approval response, you have to compare that xml with you own data. Instead of a simple string comparison, you now have to resort to libraries to help you. For which you still have to specifiy what is a significant difference and what is not. (If that is at all possible, given that partners may store the same IIA differently.) So you have made things more complex.

I think the legal argument (that it is a better proof) should be moved to a different issue, as it solves a different problem, and leads to other questions.

@demilatof
Copy link

If some one is interested, I tried here #72 (comment) to explain a different approach to the problem; this approach can produce two possible solutions:

  1. sharing the same algorithm or exposing the exact string on a single line to compute for hash, between tags <toHash> and </toHash>
  2. indicating that there is no need to compute again the hash received, just saving it together with IIA_id, and writing it in the approval. Every developer will choose how to bind iia_id, hash and data: storing XML or single fields.

@mkurzydlowski
Copy link
Contributor

Returning to the issue of emulating signature with a hash.

For HEI A to be able to acquire a "signature" on A's IIA it currently needs to:

  1. Store B's IIA approval of A's IIA. Otherwise if B looses, changes or can't temporarily serve the IIA approval, then A looses its signature.

What's more A has to store B's IIA approval in a way that can be used as a proof of B's will. Currently B would need to implement HTTP signature and A would need to store the data being transmitted. Also B's server key needs to be kept. This key needs to emulate the signing party even if an actual person is a better fit in this scenario.

  1. Obtain and store the exact format of it's own IIA being transmitted to B. This can be cumbersome for many implementers and strictly depends on the data not being changed between B's request for A's IIA and B's approval.

For a "signature" to be emulated we need both IIA XML and "signed" IIA approval XML, and also be sure that hashes are equal.

It should be noted that such "signature" would not be subject to IIA data and version changes, as both IIA and approval would be stored based on the moment of signing.

It should also be noted that what has been described above is in fact a simulation of XML signature but a very cumbersome and error prone one. For an XML signature to take place:

  1. B has to take A's IIA XML and sign it (all of it - no XML operations needed) by an XML signature library.
  2. A has to store this signed XML.

Such signed XML is in fact a well defined proof and it additionally keeps the exact information about the signing party.

@janinamincer-daszkiewicz
Copy link
Member

Some changes in the IIA and IIA Approval APIs will take place by the end of 2022. It makes sense to group them to make the change in the major number of the APIs once.

Have a look at arguments listed in #48 (comment).

During the Infrastructure Forum meeting on 2022-11-16 the providers will vote if we want to replace hash with XML signature as proposed by UWarsaw.

@demilatof
Copy link

demilatof commented Oct 23, 2022

My bad, I don't completely understand the advantage of XML signature respects the hash code, whilst it could offer similar issues in hash computation.
Since the specifications give importance to the cooperation conditions hash code, I thought that there was a reason: "signing" the essential part of an IIA and allowing changes elsewhere.

If introducing XML signature is for saving a copy of the XML signed by the partner (as a proof), the same could be achieved saving our XML and the Approval Response where there is the hash code.
To be noticed that when B takes A's IIA XML, B could even modify the XML before signing it (intentionally or because of a library or an intermediary). Therefore, when A downloads the signed copy, it has to check that B has signed what A previously sent. We have to take care of all of these issues, keeping in mind that the two documents could contain the same information, but an empty space or a carriage return would make them different, breaking the XML signature.

@umesh-qs
Copy link

There is no advantage of XML Signature over current hash in current context. This just seems a fancy proposal with no real need.
Not in favor of it for the proposed use case.

@jiripetrzelka
Copy link

By XML Signatures you mean what we already have in ToRs, i.e. this element?:

https://github.com/erasmus-without-paper/ewp-specs-api-imobility-tors/blob/d051d8a66b7fa86624590109529669832a31d4d4/endpoints/get-response-example.xml#L61-L94

Do you suggest to encrypt the entire IIA contents and not only the cooperation-conditions element?

Do you suggest to encrypt the raw xml or first canonize the xml?

Which/whose private key do you suggest to use for encryption?

How would the approvals work? Would partners still approve some kind of digest/hash?

What is the main added value of introducing this change?

@mkurzydlowski
Copy link
Contributor

@demilatof, @umesh-qs and @jiripetrzelka asked about added value of XML Signature solution but I'm not really able to add anything more than what I tried to summarize in my previous comment. This solution gives the simplest way (calling XML signing library) to obtain a proper proof of partner's will (properly signed XML with credentials). It is intended to replace the current solution that proved to be very cumbersome and misleading.

Do you suggest to encrypt the entire IIA contents and not only the cooperation-conditions element?

Entire IIA.

Do you suggest to encrypt the raw xml or first canonize the xml?

Raw XML.

Which/whose private key do you suggest to use for encryption?

We might decide to impose whose credentials should be used for signing but there is a possibility, in this solution, to acknowledge that an agreement is signed be an actual person.

How would the approvals work? Would partners still approve some kind of digest/hash?

By returning a signed XML with the partner's IIA. The side that gets and approval may (but is not obliged to) check if the signed XML is in fact what it supposed to be. But I wouldn't stress on that, as the IIA might changed in time (data or IIA format) but what is crucial is the exact IIA "state" that has been signed and the fact of signing.

What is the main added value of introducing this change?

As I wrote in my previous comment, we want to have a proper proof and a simple one to obtain.

@umesh-qs
Copy link

@mkurzydlowski
I am not sure who wants to have a proper proof and for what? What purpose is not severed by current hash process?

How is XML signature a better proof as compared to hash?
How is the XML signature process simpler as compared to current process?

@janinamincer-daszkiewicz
Copy link
Member

janinamincer-daszkiewicz commented Oct 26, 2022

I am not sure who wants to have a proper proof and for what?

This argument we have heard during analysis from various IROs. Some told us that occasionally they have to go to court and need some proof. This was the main reason the idea to have hash was born.

@sascoms
Copy link

sascoms commented Oct 26, 2022

As well as I remember, this proposal/solution was discussed last year and nobody was in favor of it from the providers.

And we now found it on the desk again. Why?

Not having a better solution does not mean we need/have to accept a bad or complicated solution.

Better, continue with the current implementation until we find a better one.

@umesh-qs
Copy link

I am not sure who wants to have a proper proof and for what?

This argument we have heard during analysis from various IROs. Some told us that occasionally they have to go to court and need some proof. This was the main reason the idea to have hash was born.

@janinamincer-daszkiewicz I assume before proposing this new process as a legally binding proof, you might have checked and confirmed this with legal expert. Please confirm.

@janinamincer-daszkiewicz
Copy link
Member

@janinamincer-daszkiewicz I assume before proposing this new process as a legally binding proof, you might have checked and confirmed this with legal expert. Please confirm.

No. Are you suggesting that we do not need hashes at all or that neither the current solution not the proposed one will solve the legal issues?

@umesh-qs
Copy link

@janinamincer-daszkiewicz I assume before proposing this new process as a legally binding proof, you might have checked and confirmed this with legal expert. Please confirm.

No. Are you suggesting that we do not need hashes at all or that neither the current solution not the proposed one will solve the legal issues?

I am amused with this question. You and Michal (not sure if this is coming from EWP Consortia) are suggesting that the reason for this proposal is for providing valid legal proof, because some IROs have asked for it. And we are discussing that. If the new complex solution is not solving that then why propose it?

@janinamincer-daszkiewicz
Copy link
Member

I am amused with this question. You and Michal (not sure if this is coming from EWP Consortia) are suggesting that the reason for this proposal is for providing valid legal proof, because some IROs have asked for it.

Yes. The busines requirement was to provide a legal proof. Yes, the request came from Business Process Owners, meaning IROs.

And we are discussing that. If the new complex solution is not solving that then why propose it?

I assume that we are not discussing the business need but the technical solution. We have implemented hashes. We discuss other option, HTTP signatures. Some of us argue that it is more complex, some not. We are gathering all arguments here to be ready for making the final decision and voting.

@umesh-qs
Copy link

I am amused with this question. You and Michal (not sure if this is coming from EWP Consortia) are suggesting that the reason for this proposal is for providing valid legal proof, because some IROs have asked for it.

Yes. The busines requirement was to provide a legal proof. Yes, the request came from Business Process Owners, meaning IROs.

And we are discussing that. If the new complex solution is not solving that then why propose it?

I assume that we are not discussing the business need but the technical solution. We have implemented hashes. We discuss other option, HTTP signatures. Some of us argue that it is more complex, some not. We are gathering all arguments here to be ready for making the final decision and voting.

I don't agree. We are discussing a technical solution to a business problem. And since the trigger for this proposed technical solution is for providing a legally binding proof, a natural question is "Can this new process provide legally binding proof?". And the proposer(s) is not ready to answer this, but still wants a discussion.

@janinamincer-daszkiewicz
Copy link
Member

And since the trigger for this proposed technical solution is for providing a legally binding proof, a natural question is "Can this new process provide legally binding proof?". And the proposer(s) is not ready to answer this, but still wants a discussion.

The same question can be asked about hashes and the answer would be the same.

Do you suggest that discussing various technical options does not make sense?

@umesh-qs
Copy link

Really? Aren't we already discussing this?
Since you are the strong proposer and support of this new solution, you need to have answers to the valid questions. And if there are no answers then it means that proposal is weak.

I am repeating again. Whole premise of this new proposal is legal validity of the approved agreements. If that is not happening then take is back, work on it and come back. But lets close it for now. I wouldn't even consider it for a vote at this stage.

@jiripetrzelka
Copy link

jiripetrzelka commented Oct 27, 2022

If I understand it correctly, the main benefit of introducing XML signatures would be increased security. Currently, in case of a dispute, I would show the log containing HTTP communication with partner IIA Approval endpoint and the log containing HTTP communication with my IIA Get endpoint. I would then show that conditions-hashes match and consider it to be the proof of what the partner has approved.

In which case this would not be enough? Well, if anybody with fraudulent intentions could get to the logs and modify them. They could modify anything except HTTP headers signed by partner using Http signature.

By proposing to start signing the entire IIA and not only Http headers, you suggest that the current mechanism is not secure enough. But I would argue that it is not less secure than what coordinators have been using so far - that is, scanned PDFs with pen signatures. Is forging a pen signature harder than forging HTTP communication logs? I wouldn't say so.

@janinamincer-daszkiewicz You mention that Business Process Owners asked for this. Did they mention any legal dispute concerning IIAs in the past in which a pen signature was the weak point? Or have they mentioned that their national or EU legislation requires this level of security or that this kind of legislation is to be introduced in the next 2 years?

@mkurzydlowski Do I understand it correctly that instead of approving a hash or digest, the partner A would take the entire IIA of partner B, sign it with their private key and then expose the entire signature element in their approval endpoint, i.e. something like this?:
https://github.com/erasmus-without-paper/ewp-specs-api-imobility-tors/blob/d051d8a66b7fa86624590109529669832a31d4d4/endpoints/get-response-example.xml#L61-L94

@jiripetrzelka
Copy link

I have probably made a mistake in my previous comment because Http signature contains message digest on input. So if I am correct, introducing XML signatures is not about increased security but just about a more standard solution. And with the potential to start using personal certificates for signatures. But is it something we need/want?

@mkurzydlowski If the entire IIA would be signed and not just the cooperation-conditions, wouldn't it bring some new problems? What if I change just a contact person? The counterparty will need to inspect the my IIA and find out whether the changes made need a new signature? Wouldn't this complicate the process?

@demilatof
Copy link

I totally agree with @umesh-qs

@janinamincer-daszkiewicz

I assume that we are not discussing the business need but the technical solution.

I don't understand how could be possible discussing the technical solution without fully understanding the business needs.
What kind of legal proof they need? What is the specification of this needs? What analysis have we made?

@mkurzydlowski you said:

This solution gives the simplest way (calling XML signing library) to obtain a proper proof of partner's will (properly signed XML with credentials)

But on what basis you state that is the simplest way to obtain a proper proof?
A legal proof must be strong or it is not a legal proof.
And the XML signature doesn't appear to be accepted, not in Italy.
But even the Europe requires a different type of signature; not an XML signature, but XAdES (XML Advanced Electronic Signatures).
This point arises a question: is the choice of XML Signature supported by jurists or lawyers?
I have the doubt that the XML signature will be a solution that complicates everything to solve nothing, because "courts are not obliged to accept XAdES-based electronic signatures as evidence in their proceedings; at least in EU, this is compulsory only for "qualified" signatures. A "qualified electronic signature" needs to be doted with a digital certificate, encrypted by a security signature creation device, and the identity of the owner of this signing-certificate must have been verified according to the "high" assurance level of the eIDAS regulation"
https://en.wikipedia.org/wiki/XAdES

In order to have a legal proof that is valid in Europe we cannot experiment new solutions that bring only new problems.
And I'm conscious that implementing XML Signature is not so simple as represented; the digital signature requires always a great effort to solve several questions and a deep analysis that cannot be concluded in a couple of months.

For example: what XML Signature? Enveloped, Enveloping or detached signature?
If we choice XAdES, what profile? XAdES-B-B, XAdES-B-T, XAdES-B-LT, XAdES-B-LTA?
What about public/private key, CA and so on? And PKI certificate contents, certificate ordering, certificate revocation and CRL management?
Who will responsible to put the signature? If a human operator, will he/she accept such a duty?

You also suggest to encrypt the "Raw XML"; but what you mean with "raw XML"? We have already seen that the "RAW cooperation conditions" element was not so "RAW" and unique.
And XML Signature requires canonicalization; if we start using a library, avoiding its requirement we don't make a good use of it.

In my opinion the great problem that underlies the legal proof issue is the master-master model and the distributed architecture.
With a central repository, a single portal and a single language implemented (English) most problems would disappear.
Everyone makes the rules for incoming student from a foreign Institute, that if accepts put a flag on the proposal.
A makes the rule for B's incoming students and A just accepts the rules created by B on the unique platform. And vice versa.
No more than this; after that web services could be used to export data from the central repository to each internal system to conform the internal processes.
Here instead is everything so overcomplicated...

@pleys
Copy link

pleys commented Oct 28, 2022

"Can this new process provide legally binding proof?". And the proposer(s) is not ready to answer this, but still wants a discussion.

On the request from the European Commission we included in the mandatory business requirements:

For the time being and until eSignature becomes a function available in EWP, approval by both parties in the EWP network is considered as the equivalent of a digital signature confirming institutional commitment, provided the institutional legal representative has given an internal mandate. If necessary, due to local rules or regulations, a legal representative can sign Inter-institutional agreements on top of the EWP approval outside the network. In such exceptional cases, HEIs are encouraged to sign digitally and in full compliance with eIDAS legislation.

It will also be added to all official EC documentation about IIAs.

@demilatof
Copy link

@pleys

On the request from the European Commission we included in the mandatory business requirements:

For the time being and until eSignature becomes a function available in EWP,

I think you have included in the mandatory business requirements a statement too generic.
What kind of eSignature should be available in EWP to satisfy the European Commission' request?

  1. electronic signature (natural person) or electronic seal (legal person)?
  2. simple, advanced or qualified? Because "something as simple as writing your name under an e-mail might constitute an electronic signature" but if we want a qualified signature it must be "created by a qualified signature creation device (QSCD)" and "based on a qualified certificate for electronic signatures." (similar for electronic seal)

"While different levels of electronic signatures may be appropriate in different contexts, only qualified electronic signatures are explicitly recognized to have the equivalent legal effect of hand-written signatures all over EU Member States."

To have almost an Advanced electronic signature/seal (AdES) I think we have to consider XML AdES (XAdES) and not simply XML Signature.
Therefore, to avoid misunderstanding, we should clarify if when we say "XML Signature" we mean XML DSig or XML AdES.
Because in my opinion the simple XML Signature (DSig) doesn't rise up the level from simple to advanced, voiding every effort

https://ec.europa.eu/digital-building-blocks/wikis/display/DIGITAL/eSignature+FAQ

@umesh-qs
Copy link

@pleys does EC considers "XML Signature" as a concrete legal proof? If so please let us know from whom in EC is this requirement coming from, so that we can directly talk to them and present our case.

@janinamincer-daszkiewicz
Copy link
Member

This topic is continued in #109.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests