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

[CovPassCheck] 2G+ & (recent) Boosters: Introduce optional serial scanning of multiple DCCs per user #107

Closed
1 task done
vaubaehn opened this issue Nov 18, 2021 · 16 comments
Labels
enhancement New feature or request

Comments

@vaubaehn
Copy link

vaubaehn commented Nov 18, 2021

THIS ENHANCEMENT REQUEST FOR COVPASSCHECK AFFECTS BOTH ANDROID & iOS

Avoid duplicates

  • This enhancement request has not already been raised before - searched all repos, couldn't find anything.

Current Implementation

Currently CovPassCheck scans 1 EU DCC per user/use case. Combining multiple EU DCCs of one user for a single result/check is not implemented yet.

Suggested Enhancement

Please implement an optional serial scanning mode to CovPassCheck that makes it possible to scan multiple EU DCCs of one user, combine them and validate them to a single result. This would make it possible to easily check in situations, where 2G+ or Boosters (probably in the future) are required to enter a venue.

Use Case: 2G+

Whenever the proof of the status 2G+ ([vaccinated OR recovered] AND tested negative) is required to enter a venue, it will be necessary to scan two independent EU DCCs: vaccination/recovery certificate and test certificate (if available). In the current implementation a gate keeper would first need to scan one v/r-certificate, check whether it's valid, and then scan again the test-certificate (if available as DCC). Gate keeper then needs to combine both results in his mind and decide, whether entry to the venue can be granted for the holder.
This sounds a simple task at a glance, not necessarily needing a serial scanning mode.
But try to imagine bigger events with many people, hectic, rush and distraction: how often it could happen, that the gate keeper accidently scans twice the same DCC (e.g., twice the same test, or twice the v-DCC)? He just sees 2 times "green" and checks the holder in.
A serial scanning mode can support the gate keeper in this case: After the first DCC is scanned, CovPassCheck prompts (displays a message to) the gate keeper, which certificate is next to scan from the holder, then combine both certificates to a single PASS or FAIL and request the gate keeper to now scan the next guest.
In case the necessary proofs have different formats (e.g., one is paper, the other EU DCC) the current scan then would need an option (button) to skip the second scan and switch to the next guest.

Use Case: Recent Booster Vaccination

Booster vaccination is a complex thing to validate, because it needs to be determined whether the presented EU DCC is a (recent) booster after a completed vaccination series ([a] 2x AstraZeneca, Biontech, Moderna: booster -> 3/3; [b] 1x J&J: booster -> 2/2), or a single vaccination after a recovery ([c] vaccination -> 1/1), or a booster after a vaccination after a recovery ([d] booster -> 2/2).
Currently, when holders present their EU DCC, it's critical to determine whether it's a booster or a vaccination, when the booster has been received less than 14 days ago, but according to legislation a booster is already valid and granting access to the venue. With today's CovPassCheck, a single certificate with a 2/2 booster received less than 14 days ago would be rejected. Because in this case different DCCs would need to be taken into account for people of the groups [b] and [d], the CovPassCheck today can't give a valid result for this use case, so it will likely need high awareness of the gate keeper and discussion/questions with holders to decide whether access can be granted. This is error prone and slowing down the check-in.
It will become even more difficult for gate keepers with current CovPassCheck, if one day boosters are mandatory to gain access to a venue, because then in many cases (groups [b] and [d] it's a must that multiple proofs need to be checked (at least for recovered and J&J-jabbed people). We are far away from that scenario in these days, but it's not completely unrealistic that this may happen one day...
CovPassCheck could support the gate keeper in a serial mode, when after scanning a 2/2 v-DCC that was issued <14 days ago (current days) or when a booster is mandatory (possible future days) the gate keeper is prompted to ask for/scan for a second proof that reflects that the 2/2 v-DCC is actually a booster, and after the scan of the necessary document display a PASS or FAIL.

Use Case: 2G+ together with Boosters

Already today, when 2G+ will need to be checked, people will present their booster certificates together with a test result. For the reasons described above, this will become even more complex for gate keepers.
A serial mode of CovPassCheck could take care of it, reducing errors and speeding up the check-in.

Expected Benefits

As described above:
Reducing complexity and errors, speeding up checks/check-in when handling 2G+ and Booster DCCs.

How to implement

Basically, the multiple DCCs that have been scanned (and have been validated against their digital signature each) can be then combined internally, and then be checked using CertLogic against special crafted Booster Notification Rules (BNR). Corona-Warn-App is using this mechanism already to detect booster certificates stored in its wallet, see corona-warn-app/cwa-app-android#4001 for details.
For 2G+, this can easily be extended with test certificates.

CovPassCheck's scan logic would need to be extended accordingly to allow for multiple scans per holder, using BNR's would most likely need to be adapted/extended, UI would need to represent options to turn on serial mode and to present results accordingly. It would also be nice when gate keepers can choose to use presets (2G with booster support, 2G+, 3G with booster support...) or the presets could also determine whether a serial mode is to be switched on automatically.

@ThiefMaster
Copy link

ThiefMaster commented Dec 3, 2021

"2G+B" should NOT require scanning multiple certificates - instead, maybe the vaccine type and serial should be used, e.g. "3/3 moderna/biontech is a booster".

I think all the booster cases can be covered with this logic: If in the future additional boosters become required, this will either be with the initial vaccines "revision", or with a newer one (to improve omicron immunity). If it's the initial revision, then 3/3 with a recent-enough data might be OK (if "very late booster" is acceptable); and if the vaccines have been updated by then I guess they will get a new vaccine code in the certificate anyway, so any certificate for the old one would simply no longer be valid at some point.

For cases where you do need to show two certificates (2G+ without boosters), I think the only user-friendly solution would be to show a QR code that contains both certificates - otherwise it'll always be slow because the user will have to switch certificates during a check...

@vaubaehn
Copy link
Author

vaubaehn commented Dec 4, 2021

@ThiefMaster

"2G+B" should NOT require scanning multiple certificates

I have a different understanding of "2G+B": For the 2G people that did not receive a booster yet, additional presenting/scanning of a test certificate is still mandatory.

instead, maybe the vaccine type and serial should be used, e.g. "3/3 moderna/biontech is a booster".

This does for example not care about all the people, who received a single "J&J" shot and were boostered with Moderna/Biontech, as their does number/total number of doses in series is "2/2".

I think all the booster cases can be covered with this logic: If in the future additional boosters become required, this will either be with the initial vaccines "revision", or with a newer one (to improve omicron immunity). If it's the initial revision, then 3/3 with a recent-enough data might be OK (if "very late booster" is acceptable); and if the vaccines have been updated by then I guess they will get a new vaccine code in the certificate anyway, so any certificate for the old one would simply no longer be valid at some point.

If I understand your thoughts correctly, this is not impossible but very difficult to achieve: it would require new product names for booster jabs. Otherwise it is not possible to conclude that the scanned certificate was a booster DCC. This would need negotiations and common agreements between vaccine manufacturers and all countries operating DCCs (at least EU). But even there was such an agreement, the logistics would become very difficult, because all places giving vaccines then would need to hold products for 1st and 2nd jabs, as well as the same vaccine(s) but with a different product name for the boosters. That would possibly result in rather chaotic planning/handling practically.
When there are new vaccines for virus variants (i.e., omicron) which will very likely receive a new product name, just getting a jab with that new vaccine can still not be considered as a "booster": people still might get their 1st or 2nd jab with that new vaccine, but likely their immunization is still not as good after max 2 jabs compared to after 3 jabs. So it will still be necessary to take all the vaccination history into account, which requires to have insight into a series of DCCs, not only one.

For cases where you do need to show two certificates (2G+ without boosters), I think the only user-friendly solution would be to show a QR code that contains both certificates - otherwise it'll always be slow because the user will have to switch certificates during a check...

I would prefer this solution, but that won't happen, unfortunately, for 2 reasons:

  • It's not possible for a wallet app to "create" a new single DCC that contains information of multiple certificates without breaking the digital signature, as each certificate holds a signature of the hash of its certificate's contents. You might then say, it would be possible to "chain" two complete DCCs into one QR code, but: each single DCC already results in >700 bytes (compressed!), and I guess you followed the media/reports, that many people have problems in scanning them reliably (because of data density). If you chained two DCCs into one QR code, the QR code would need to represent data of at least 1.4KB, which likely will make scanning these QR codes very difficult to impossible in many (most?) cases.
  • It is very unlikely, that EU will change the DCC schema in that way, that more than one certificate will be represented by a single DCC - please read Why restrict vaccination, test and recovery group properties to one item? ehn-dcc-development/eu-dcc-schema#110 (comment) and following. I was already explaining this to you here: Active certificate switched before it is valid #106 (comment)

So in all, I don't see any change in basic assumptions and still think, implementation of serial scanning of DCCs into CovPassCheck will be very helpful if not even necessary.

@Cybso
Copy link

Cybso commented Dec 8, 2021

As already mentioned in https://github.com/corona-warn-app/cwa-app-android/issues/4473#issuecomment-988211651:

The alternative, which would also be easier to manage, would be an organizational/policy solution: a booster vaccination could always be entered as 3/3, regardless of whether the previous full vaccination series consisted of one or two vaccinations. So the "vaccination 2/2" would simply be skipped in such cases, there would only be "1/1" and "3/3".

It would only mean for those affected that they would have to get a new certificate.

The advantage would be that the booster vaccination would be immediately recognized as such and no second certificate would have to be scanned.

@SoftwareApe
Copy link

each single DCC already results in >700 bytes (compressed!), and I guess you followed the media/reports, that many people have problems in scanning them reliably (because of data density). If you chained two DCCs into one QR code, the QR code would need to represent data of at least 1.4KB, which likely will make scanning these QR codes very difficult to impossible in many (most?) cases.

I just had an idea how we could fix this AND make scanning easier, by transmitting the data through NFC this amount of data could be transferred near instantly (~400kbit/s).

Of course this would be CWA app only for now, but if we forge the way here maybe others will follow.

Benefits:

  1. faster scanning without needing good lighting
  2. could scan hundreds of certificates if necessary.

Cons:

  1. only CWA (at first)
  2. only works if phone has NFC, but I haven't owned one without NFC for years

@Jo-Achim
Copy link

Jo-Achim commented Dec 12, 2021

@Cybso wrote:
The alternative, which would also be easier to manage, would be an organizational/policy solution: a booster vaccination could always be entered as 3/3, regardless of whether the previous full vaccination series consisted of one or two vaccinations. So the "vaccination 2/2" would simply be skipped in such cases, there would only be "1/1" and "3/3".
...
The advantage would be that the booster vaccination would be immediately recognized as such and no second certificate would have to be scanned.

I am not sure at the moment. However, the necessary additional booster vaccinations could of course be named 4/4, 5/5 etc. based on this.

@Jo-Achim
Copy link

Jo-Achim commented Dec 13, 2021

each single DCC already results in >700 bytes (compressed!), and I guess you followed the media/reports, that many people have problems in scanning them reliably (because of data density). If you chained two DCCs into one QR code, the QR code would need to represent data of at least 1.4KB, which likely will make scanning these QR codes very difficult to impossible in many (most?) cases.

@SoftwareApe answered:
I just had an idea how we could fix this AND make scanning easier, by transmitting the data through NFC this amount of data could be transferred near instantly (~400kbit/s).
...

NFC - a note.

I think the idea of bringing NFC into play is good. However, I don't have an overview of whether all smartphone and tablet price ranges actually have NFC built in. And for reasons of acceptance, security and perhaps also power consumption, NFC can only be a parallel alternative.
(Security regulations in companies with regard to NFC may also play a role. And tablets should be taken into account because 'business tablets' are used for scanning in many shops.)

Should an NFC functionality be implemented in the CWA, I imagine it to be like this ...
In the CWA settings, the use of NFC for the CWA must first be allowed in principle (similar to the "data donation"). And every data transfer would have to be explicitly approved by the user by tapping on a corresponding button inside the CWA.
In addition, if the CWA had switched on NFC for the data transfer, it should also switch off NFC again after the data transfer. So that, simply put, the NFC is back in its previous on / off state.

@vaubaehn
Copy link
Author

vaubaehn commented Jan 20, 2022

Follow-up: Serial/multiple scanning feature is planned for release 1.17.
See #172, #139
🎉 🚀

@cmorty
Copy link

cmorty commented Jan 20, 2022

@vaubaehn : Good to hear. I was worried after reading this article: German / Google-Translate

@vaubaehn
Copy link
Author

@cmorty , yes, the current situation is a bit unfortunate...

@alexcimander and @timokoenig , you probably agree that public should be informed that the problem is addressed and solved soon. Did you already plan a press release in a timely manner? Or is this a responsibility of RKI?
Could people like @Ein-Tim begin spreading the good news in their social media channels?

@timokoenig
Copy link
Member

@vaubaehn I agree with you but I don't have any information on that. I guess @alexcimander or @oliver-steinbrecher have the answers

@Ein-Tim
Copy link
Contributor

Ein-Tim commented Jan 20, 2022

@vaubaehn reg. #107 (comment):

Did you see what the release note of version 1.16 of CovPassCheck is?

Die Version 1.16 der CovPassCheck enthält einige Fehlerkorrekturen, die zusammen mit der Community erarbeitet wurden. Eine Erweiterung zur Unterstützung und Vereinfachung von 2G+ Kontrollen wird in den nachfolgenden Releases ergänzt.

@vaubaehn
Copy link
Author

@Ein-Tim Thanks for the hint/link! Yes, that's nice, but if you read newer comments of CovPassCheck users, you'll see that they didn't read that the improvement reg. 2G+ and others will come in the next releases... More information in media would be nice...

@Ein-Tim
Copy link
Contributor

Ein-Tim commented Jan 20, 2022

@vaubaehn

I mean, I can do something here (-;

I'll send a Tweet tomorrow!

@vaubaehn
Copy link
Author

@Ein-Tim

I'll send a Tweet tomorrow!

🎉 🚀 ❤️

@vaubaehn
Copy link
Author

Closing this issue as implemented.
Thank you all for the good work!

@cmorty
Copy link

cmorty commented Mar 21, 2022

...unfortunately a few month late, when it isn't that (legally) necessary any more. :-/ But as a pessimist I'm optimistic that it will be needed again in the future...

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

No branches or pull requests

8 participants