We followed the evolution of SwissCovid and did our own analysis on it. Lots of consensual opinions have already been expressed. We wish here to present an alternative viewpoint about SwissCovid. Our position on SwissCovid is that
What's new? A comment statistics not done during weekends was added in the usefulness section. A reference to the coronadetective demonstrator was added in the attacks section. A paper about ethics was added in the conclusion.
Disclaimer: We are strong advocate of transparency and objectivity in scientific communication. We reckon that the pandemic has made tools such as proximity tracing (sadly) unavoidable. We respect the political decision to deploy it. The political decision took the way of a voluntary acceptance, which requires trust to be effective. We do not believe in a conspiracy. We have no doubt all involved people, organizations, and companies are in good wills and did their restless best to fight the pandemic. At the same time, we know that the road to hell is paved with good intentions. It has been claimed many times that data is anonymous, that there is no threat, that the app is transparent because of being open source by law, that people should not be scared, that fear is irrational, that communication is monopolized by conspiracy theories. By trying to communicate over-simplified information and giving paternalistic advises for adopting SwissCovid, SwissCovid has failed to be transparent. By failing in providing fair information, by adopting an opaque proprietary solution, and by bypassing the law, we feel that trust is broken. We believe that showing all these facts is helping to support transparency. We do not think open information would affect the acceptance by people because contact tracing is a necessity. People who support SwissCovid will continue to support and skeptical people will be confirmed in their skepticism. We think people deserve to know facts.
Disclaimer 2: The content of this page does not reflect the position of EPFL. EPFL, by the voice of its president, states that SwissCovid is "super-smart", reaches "the highest possible standard on what we can do now today", "influences our Californian friends", but that "Swiss people have difficulties to be proud of what they do" (translated).
In early April, a fight occurred between developers of centralized and decentralized systems, within the PEPP-PT project, with the conquest of countries for the adoption of one or the other system in background. DP3T, which was developing a decentralized system, split from PEPP-PT and won the battle. We reckon that
Since all these was also clear for policy makers, we can wonder why decentralized systems succeeded to conquer most of European countries. This is most likely due to the heavy support of Apple and Google. It is known (with the previous experience of Singapore) that access to Bluetooth can drain the battery of the phone quite a lot. Apple and Google announced that they would provide an optimized access to Bluetooth to decentralized contact tracing apps only but would keep on restricting it to other applications.
Our study about centralized versus decentralized systems, as well as directions for a 3rd way, was published on May 6, 2020:
What Google and Apple do with the data collected by Bluetooth is also out of control. Finally, the resulting difference between centralized and decentralized systems is that, on the former case, data is stored in a central server which is maintained by local authorities, while in the latter case, data is stored in a distributed server (the GAEN memory of the phones) which is maintained by Apple and Google. In the former case, trust is based on a democratic system. In the latter case, trust is based on a commercial system.
France had a controvery about StopCovid - the French app which relies on a centralized system - storing more information than what is necessary. Contact tracing indeed aims at storing only contacts which last long enough and at a close distance (in Switzerland: less than 1.5m during 15 minutes). It was shown that StopCovid was actually sending all contacts (either brief or distant ones) to the central server. A similar controversy could occur in Switzerland: GAEN actually stores all contacts. They are stored locally on the phone, in this distributed decentralized server. However, since there is no control about what Apple and Google are doing with those stored contacts, the same controversy is possible. Apparently, this problem was fixed in France. It is unlikely it will be in Switzerland as it depends on GAEN.
Apple and Google could further abuse their dominant position to have their parallel contact tracing system, in order to identify people who had any contact (long or not, at distance or not) with a targetted category of people. This category would not necessarily be the category of diagnosed people. For instance, it could be the category of people who used a given commercial product. Identifying the contacts of users of a product could be a good target for advertisement. If maliciously used, GAEN could become a gold mine for Apple and Google.
ENE actually strengthens the dominant position of Apple and Google. Citizens have no longer anything to say about it except taking it as a whole or refusing it. This is a major loss of government's digital sovereignty. So far, there is no plan in switching from SwissCovid to ENE, but we cannot predict what Apple and Google will impose next.
If a user is diagnosed, his app gets the daily keys of the last few days from GAEN and uploads them on a public server. Those uploaded TEKs are called the Diagnosis Keys.
This server can be observed by anyone. Apps regularly download the diagnosis keys and give them to GAEN. GAEN checks if those keys derive one of the collected ephemeral identifiers RPI, to check if a diagnosed user was in contact. GAEN reports the contacts with diagnosed users with information about the date, the duration, and the distance to the app. The app decides to raise a notification or not.
To estimate the distance of a contact, phones compare the power of the Bluetooth signal when being sent and when being received. However, the power of the sending signal is encrypted (using the daily key) inside the Bluetooth message. Consequently, it is not visible by the receiving phone until it obtains the daily key of the sender (because he was diagnosed and reported). Hence, it is only at the time of the comparison that the distance can be estimated.
Similarly, the ephemeral identifiers are rolling every 10-12 minutes. Normally, a receiver cannot link two identifiers until it receives the daily key which derived them. Hence, the duration of a contact (and that it was at least 15-minute long) can only be determined at the time of the comparison.
The server. The "server" is actually an infrastructure of several servers within a network. The app regularly downloads reports from the server and also the configuration parameters to be used to calculate the at-risk notification. Both types of downloads are supposed to be done by millions of devices every day. To provide the download service reliably, SwissCovid uses a Content Delivery Network (CDN) which is provided by Amazon. When we try to download from anywhere in the world, it is a local Amazon server which responds. The content is obtained from the servers of Swiss Federal offices and signed by them so that Amazon cannot tamper with the content.
The "server" also includes another site where to upload daily keys after diagnosis. As this operation is (hopefully) rare, there is no need for a third party service for this operation. Essentially, a diagnosed user is in contact with the public health authorities which give them an access code, called covidcode, of 12 decimal digits. With this 12 decimal digit, the app gets from another server another code (namely, a JWT code) which allows the app to upload the daily keys on the server.
One problem is that the network sees all requests to the server made by the app and can possibly identify the phone. One trick to protect privacy is to make "fake" queries once a while at random. Queries are encrypted, so the network cannot see if they are fake or real.
What the app is doing. We can list the roles of the app below.
The usefulness of SwissCovid can be analyzed with several factors. First of all, FOPH reports to FSO an estimate for the number of "SwissCovid activations" per day as well as the number of entered covidcodes and a number of downloads. FOPH also reports the number of COVID-positive cases in Switzerland.
The estimate for the "number of activations" was changed on July 23. Before July 23, it was estimated based on the number of requests to the server to retrieve the configuration parameters. In the source code, we can see that the app is configured to make such query every 6 hours. FOPH has no means to figure out if two different queries come from the same app (otherwise, it would be a violation of the design principles). Actually, the queries are not directly visible by FOPH as FOPH is outsourcing the reception and treatment of those queries to Amazon. Hence, the "number of daily activations" was simply the total number of queries (provided by Amazon) divided by 4 (because always running apps makes queries 4 times per day). However, this rather indicates an average number of queries. For instance, 1 million of activations could be an average number between 500'000 nightly activations and 1.5 million daily activations. Someone who was activating his app for only one minute every 6 hours was counted as a full activation although someone who was activating his app only when useful (e.g. when taking public transport or at the restaurant) was counted as a fraction of activation. However, the second user was clearly making an effective use of the app compared to the first who was not using it at all. Hence, the figures provided by FOPH was probably underestimating the effective number of active users.
Since July 23, the "number of activations" is estimated based on the number of fake reports that the app submits at random (to hide from the network when it is really submitting a report). In the source code, we can see that the next fake report is scheduled after a random duration which follows an exponential probability distribution with an average of 5 days. Hence, FOPH essentially multiplies the daily number of received fake reports by 5. This is a probabilistic estimate which has a standard deviation in the 2000-3000 range (the square root of 5 times the number of apps which is about one million). Hence, this number is rounded with a 10'000 precision to be significant. With this method, an app which is activated a few seconds every day is fully counted (as its scheduled fake report may be sent during these few seconds and another fake report can be scheduled). Hence, the "number of activations" estimates the number of apps which have been activated at least once during the day. It may over-estimate the number of apps which are always running whenever running it is useful. It may also have a few days delay to reflect the reality: if the number of apps changes a lot today, it may take a few days to observe it on the estimate.
We however stress that this number of activations is based on the received queries but nothing proves that they were made by a SwissCovid app. Indeed, anyone could buy several millions of malicious queries from a botnet on the darknet to maliciously inflate this number. (This would be illegal.)
Another interesting measure of usefulness is based on the number of reports from diagnosed users. This corresponds to the number of entered covidcodes. If, during a given period, we have a total of r reports of diagnosed users for c positive diagnoses, we can deduce the probability r⁄c for a random diagnosed person to be a willing-to-report SwissCovid user. We represent below the obtained ratio by using the official figures.
The next interesting question is whether SwissCovid, which spots an infecting contact, is able to alert infected people before a human-based contact tracing does. Indeed, in between the time the infecting person is diagnosed, the time he reports (he has 24h for that), and the time the infected person's app downloads the new report (which can take a few more hours), the traditional contact tracing may be done. Most likely, SwissCovid is only useful when the contaminated person is completely unknown by the contaminating person, e.g. in the case they encountered in public transportation or they were seated close to each other in a restaurant.
FOPH also communicates the number of entered covidcodes. However, the SwissCovid design makes it impossible for FOPH to determine how many at-risk notifications were raised and how many of them led to a diagnosis case. The protocol will not reveal this. However, users receiving a notification may call a infoline, as recommended by the app. Statistics through the infoline is feasible.
The August 28 press conference. Interesting figures were announced by FOPH: since July 20, 13 people did a test after being notified by SwissCovid and this test revealed positive. We do not know if this was helpful to prevent them from contaminating other people. However, we can see that 13 positive cases out of 7483 (in this period) are spotted by SwissCovid. This is 0.17% of all positive cases. Those 13 cases are also to be compared to 857 entered covidcodes in this period. Hence, 1.5% of entered covidcodes generate a useful notification. It is argued by SwissCovid promoters that those numbers can only increase with the adoption of SwissCovid. It is actually weird that this number 13 is the only figure from FOPH which is not given over the period of the last 7 days. The same press conference also reveals that "over the last 7 days", 250 covidcodes were entered (for 350 generated covidcodes, for actually 800 SwissCovid users who were tested positive). By entering those codes, among the notifications to other users they generated, 150 contacted the infoline. How to compare the above 13 cases since July 20 and the 150 infoline contacts over the last 7 days? If we estimate that about 700 people contacted the infoline for the same reason since July 20 and that they include the 13 cases, this means that SwissCovid generates a population of people calling the infoline less than 2% of among whom are useful to identify. Contrarily to the above computation, there is no reason to believe that this fraction can increase with adoption. In comparison, the fraction of positive tests among all the tests being done in Switzerland was around 3.2%. It is now around 15-20% at this time while the 2% from SwissCovid did not increase. Hence, SwissCovid is clearly underperforming.
Early Evidence of Effectiveness of Digital Contact Tracing for SARS-CoV-2 in Switzerland. A paper posted on September 4 gives other information. This paper is cowritten by 20 scientists which are mostly from EPFL, but also from FOPH and several Swiss universities. Besides, eight of the coauthors are members of the Swiss National COVID-19 Science Task Force. Hence, this paper is likely to be the mainstream supporting argument of SwissCovid. The original paper was revised on September 19 by giving new figures. Below, we give the table of both figures (and the number H from the August 28 press conference) but we comment only on the latest ones.
The contribution of the SwissCovid digital proximity tracing app to pandemic mitigation in the Canton of Zurich. On October 29, a new paper was posted. It is mentioned as an "in progress" document (v1.5 on October 29) in which a single author is mentioned as a "corresponding author". This author is a co-author of the previous paper and also member of the national COVID-19 science task force. Although this new report provides more precise figures and computations, by focusing on the Canton of Zurich, it was again written in a biased manner, with a clear objective to reach a pre-written conclusion: that SwissCovid is useful and that more people should use it. As usual, the release of this report was synchronized with the release of articles in the press (like in Le Temps).
The report ignores the comments which were mentioned above and uses the number of tests which were done with SwissCovid as a reason in the same way. It provides new figures for the Canton of Zurich during September 2020 (J): 1715 (A) cases, 429 (B) of which being SwissCovid users, 344 (C) entered covidcodes, 756 (D) calls to infoline, and 30 (H) cases with a SwissCovid alert as a reason to be tested. Contrarily to the previous paper in which numbers are real counts, most of these numbers are estimates following one or two methods. The value H is obtained in the same way as in the previous paper, as provided by FOPH, and confirmed by multiplying a total of 1715 cases by a percentage 1.9% coming from a "Zurich Sars-CoV-2 Cohort Study". It is not clear at all where this 1.9% is coming from, but given that it may comes from the health authority of the Canton of Zurich, who gave the data to FOPH, the source of the data is likely to be the same in both computations. The canton has a population of 1.54 Million (T).
The new report makes interesting estimates for new numbers.
LotoCovid. An interesting idea is to design an app which would alert people at random, possibly using some biases but without using any exchanged information. Such app was ironically proposed on Twitter as LotoCovid by Gaëtan Leurent. If we alert 1418 (Q) people completely at random in Zurich, making them test would find A*Q/T=1.6 cases. This is twenty times lower than the score 30 (H) by SwissCovid but it is a much simpler app and infrastructure. Most likely, adding biases on the probability to alert (for instance, increasing the probability to clubers, to commuters, decreasing the probability to people living alone and teleworking) would certainly find many more cases by keeping the number of alerts the same. The performance of SwissCovid should seriously be compared to this trivial approach.
Some attacks are easy to be done by anyone. Some of them are clearly illegal and people must not try them. For other attacks, which are based on collecting data, the legality is not clear at all because we are not sure the collected data are considered as personal data or not. Thus, we suggest not to try them.
Here are a few attacks which are easy to mount. Welcome to the brave new world!
Legal issues. We believe such attacks should be illegal. However, what they only collect is the ephemeral identifiers which are broadcasted over the air. (Own location and time belongs to whoever wants to store it.) If such data is not considered as personal data, such attack may be perfectly legal, which we find absurd.
The notion of personal information is actually a key issue here, because of the law on data protection. On the FOPH website we can read "The phone does not send any personal or location data to a central storage location or server". On another page we can read "The CDN only gives users access to information that cannot be used to obtain personal information (i.e. anonymous keys)". SwissCovid beams via Bluetooth some ephemeral identifiers which are derived (and can be recomputed) from keys. Diagnosed people post their keys on a publicly available server. Clearly, the position of SwissCovid promoters is that keys are anonymous. Anonymous information is not considered as personal information, thus not subject to regulation. If keys are anonymous, the identifiers which can be recomputed from them is anonymous too. Consequently, it is legal to make keys transit through a CDN, possibly abroad, without any regulation constraint. However, ephemeral identifiers become anonymous too hence no personal information. Therefore, they can be collected by anyone without regulation.
Instead, we believe that information which is exchanged via Bluetooth between phones and the one which is posted on the server are pseudonyms in the sense of the European regulation GDPR. They are not anonymous. Following GDPR, pseudonyms are private information. Hence, they should be subject to regulation on data protection. However, such recognition may have consequences on how the data stored on the server be regulated, and even on how phones collect ephemeral identifiers.
Extension with (other) personal data. We can of course improve the previous attacks by collecting more (personal) data. For instance, the Bluetooth surveillance can be enriched with a video-surveillance system so that ephemeral identifiers would link to a recorded video. If a reported key happens to generate an identifier which was collected, we can see the holder on the video, even though the contact was very brief and at distance.
An organization which identifies people can at the same time collect an ephemeral identifier and later one recognize if this person has become sick. This can be made at the reception of a hotel, at the cashier of a shop for people using a loyalty card, or at the entrance of a company for visitors or employee. Essentially, diagnosed people can be identified if they have even be seen by such surveillance system.
The basic attack was called the paparazzi attack in our April 8 report on DP3T. Essentially, a paparazzi can capture from far away one ephemeral identifier of a celebrity and regularly check on the server if this celebrity reported as diagnosed. Such information can be sold to tabloids. In a variant of this attack, a paparazzi can check which politicians are using SwissCovid and report. As acceptance of SwissCovid is becoming a political act, this could be a valuable information.
In the (imaginary) lazy student attack, a student runs this attack on their classmates to send the entire class in quarantine and have an exam cancelled. Presumably, we can turn an event or an organization down in the same way.
In another type of attack, a group of people could use a malicious app which mimics the Bluetooth ephemeral identifier broadcasting but synchronize all devices on the same keys. The effect is that all those people would be considered as a single person. They can try to broadcast with high intensity to make a wide neighborhood think of a close encounter. If one person of the group is diagnosed, this can create a very high number of false at-risk notifications. This is a kind of terrorist attack which sends a huge number of people to quarantine.
Those attacks could exploit a problem in the GAEN implementation (namely, that the encrypted metadata in the Bluetooth signal is malleable). They could even be done from abroad, to escape from legal jurisdiction, by using sponsored add-ons in benign apps, as described in the following paper.
Finally, a more drastic attack could be to corrupt a diagnosed user to buy his covidcode, then meet the persons we want to send to quarantine, then use the covidcode to report our keys. A covidcode can be used only once, but it remains valid during 24 hours. Interestingly, a much easier attack was possible during the first three weeks of SwissCovid. FOPH was adding on the server 10 fake keys per day for maintenance reasons. However, the validity period of those keys was posterior to the date of insertion. Consequently, a malicious person could download them and use them during their validity period to simulate the broadcast of a diagnosed person. This problem was announced to be corrected on July 20.
The attack based on buying/selling covidcodes can be organized in a black market in a secure way (for the seller and the buyer). This can be automatized using the blockchain technology. A complete descriptions and analysis is provided in
Another option is to corrupt time, as described by Vincenzo Iovino. The adversary could replay identifiers derived from already reported keys on the server and send his victim to the past to receive those identifiers. Sending a phone to the past should be easy by corrupting the NTP protocol when the victim is connected to WiFi (for instance, when the adversary owns the WiFi network). When the victim is connected to the cellular network, it is also possible with a fake base station. We succeeded to send a phone to the past and receive a false alert. This was successfully tried for SwissCovid and its Italian relative Immuni as the following video explains.
|Provide data to epidemiologists||(This goal was originally present but was dropped in the May 25 version)||Only the numbers of fake and genuine reports are available|
|Open-source||Code available and runnable with changes||Code not runnable, protocol in GAEN with partial/sample code|
|Decentralized||Data stored on users's phone||Data stored on Apple/Google distributed storage|
|Privacy-by-design||Preserves the privacy of users||Bluetooth technology creates severe privacy threats|
|Complete||All proximity cases (<1.5m) are captured||Some people living together do not seem to be captured|
|Precise||Only proximity cases are captured||Some far away cases (>1.5m) may be captured|
|Authentication||Proximity cases cannot be faked||Proximity cases can be faked|
The first three goals are due to GAEN (we suspect providing data to epidemiologists was dropped because of being incompatible by the GAEN regulations to authorize the app). Completeness and precision are due to the well predicted hardness to measure distances with Bluetooth. The privacy loss is due to Bluetooth and to the DP3T decentralized architecture. The authentication problem is due to the DP3T scheme which is implemented by GAEN.
We collected encountered problems about SwissCovid in
We can wonder if the debate about privacy took the right direction. Of course, in countries with governments having too much power, privacy is a concern. But SwissCovid is deployed in Switzerland. In Switzerland, the SwissCovid approach on privacy consists of making sure that FOPH has no way to see who met whom or who activated SwissCovid from the data they collect. However, the health authority has legal means to investigate on contacts between people when it is needed. We can wonder if protecting against a possibly intrusive FOPH is making sense. At the same time, SwissCovid prevents FOPH from having fine grained access to epidemiological data or statistics. FOPH cannot see how many alerts SwissCovid raises and has little ways to measure the usefulness of the system. It does not say how SwissCovid is activated. Even worse: this architecture which is protecting against a corrupted FOPH is creating privacy issues which can come from any third party. In our April 8 report we already claimed that this dogmatic approach of decentralization was creating more privacy threats than it was solving.
Recently, Lanzing described three pitfalls related to ethics in digital contact tracing. The first common mistake is to associate privacy with anonymity. Privacy relates to the control on who uses people's data. For that, anonymity is neither necessary nor sufficient. Second, this technology currently means encouraging the monopoly of Apple and Google in framing digital public health. Finally, it creates some form of coercion by adding social pressure to adopt the technology, if not restrictions, and by excluding people who are already threatened by the digital divide.
Our concerns are about broken promises. SwissCovid was aimed to be transparent with open source but is not. SwissCovid was aimed to be privacy-preserving but is not. SwissCovid was aimed to be secure but is not. SwissCovid was aimed to be precise and complete but is not. Is it important enough to shut down SwissCovid? A big question is whether SwissCovid is useful at all. The law specifies that the Government should shut down SwissCovid if it appears that it is not efficient enough to fight against the pandemic LEp Art.60a al.8. We find abnormal that after three months of activities, there is still no reliable data, nor any established objective metric to measure the efficiency, nor any precision about what "efficient enough" would mean.
SwissCovid was developed and deployed in a rush, with the pressure of the pandemic. It is remarkable that SwissCovid was fully deployed so fast, but SwissCovid could have been much better with more time. Regarding GAEN, we are faced with fait accompli. The deal with Apple and Google could have been more careful. Those companies could have released a real interface giving access to Bluetooth instead of implementing the protocol by themselves. They could have released their source code too. (We reckon that some partial source code was released on July 21, which seems to move in the right direction.) SwissCovid could also have developed an app without GAEN as other countries did, but with battery issues. Other solutions in the protocol could have been investigated too. We listed several possible options in our May 6 report. For instance, there are ways to keep a decentralized flavor and to fix some privacy issues at the same time. For the next pandemic, we believe that more research should start now.
At the moment, there is no other option than SwissCovid. We can continue to beg Swiss residents to keep faith in that SwissCovid is or will be useful. However, we urge on establishing an objective usefulness metric and to open the debate on whether SwissCovid should be shut down.
Last update: November 11, 2020.