| Literature DB >> 35818399 |
Pietro Colombo1, Elena Ferrari1, Engin Deniz Tümer1.
Abstract
Recent emergencies, such as the COVID-19 pandemic have shown how timely information sharing is essential to promptly and effectively react to emergencies. Internet of Things has magnified the possibility of acquiring information from different sensors and using it for emergency management and response. However, it has also amplified the potential of information misuse and unauthorized access to information by untrusted users. Therefore, this paper proposes an access control framework tailored to MQTT-based IoT ecosystems. By leveraging Complex Event Processing, we can enforce controlled and timely data sharing in emergency and ordinary situations. The system has been tested with a case study that targets patient monitoring during the COVID-19 pandemic, showing promising results.Entities:
Keywords: ABAC; Complex event processing; Emergency detection; Emergency policies; MQTT environments
Year: 2022 PMID: 35818399 PMCID: PMC9259026 DOI: 10.1016/j.cose.2022.102829
Source DB: PubMed Journal: Comput Secur ISSN: 0167-4048 Impact factor: 5.105
MQTT control packets.
| Control packet | Acronym | Description |
|---|---|---|
| Connection request | ||
| Connect acknowledgment | ||
| Publish message | ||
| Publish acknowledgement | ||
| Publish received | ||
| Publish release | ||
| Publish complete | ||
| Subscribe to topics | ||
| Subscribe acknowledgement | ||
| Unsubscribe from topics | ||
| Unsubscribe acknowledgement | ||
| PING request | ||
| PING response | ||
| Disconnect notification |
An abstract event algebra for complex event specification (Giatrakos et al., 2020).
| Primitive Event | ||
| Sequence | ||
| Disjunction | ||
| Conjunction | ||
| Iteration | ||
| Negation | ||
| Selection | ||
| Projection | ||
| Windowing from |
Fig. 1An high-level view of the architecture in Colombo and Ferrari (2018).
Fig. 2The stm diagram corresponding to the emergency development plan PulmonaryIssues.
Fig. 3A high-level view of the system architecture.
Fig. 4System control flow for the exemplified scenario.
Primitive event types specified for the case study.
| pet | adc | bcr | adf | description |
|---|---|---|---|---|
| Result | {“pid”: string, “result”: boolean, “tDate”: date, “reqId”: long, “time”: long} | t.TopicName. includes(“result”) | {“pid”:o.patientID, “result”:t.Payload.result, “tDate”:t.Payload.testDate, “reqId”:t.Payload.reqId, “time”:e.time} | Shows the results of a COVID-19 test to which a patient has undergone. |
| Prescription | {“pid”: string, “tDate”: date, “reqId”: long, “time”: long} | t.TopicName. includes(“prescription”) | {“pid”:o.patientID, “tDate”:t.Payload.testDate, “reqId”:t.Payload.reqId, “time”:e.time} | Shows the prescription of a COVID-19 test for a patient. |
| Location | {“pid”: string, “pos”: string, “time”: long} | t.TopicName. includes(“location”) | {“pid”:o.patientID, “pos”:t.Payload.location, “time”:e.time} | Shows the room where a patient is located at specified time |
| Temperature | {“pid”: string, “temp”: float, “time”: long} | t.TopicName. includes(“temperature”) | {“pid”:o.patientID, “temp”:t.Payload.temperature, “time”:e.time } | Shows the body temperature of a patient at a specified time. |
| RespiratoryRate | {“pid”: string, “bpm”: float, “time”: long} | t.TopicName. includes(“respiratory”) | {“pid”:o.patientID,“bpm”:t.Payload.respiratory, “time”:e.time} | Shows the respiratory rate of a patient at a specified time. |
| EstimatedSpO2 | {“pid”: string, “SpO2”: float, “time”: long} | t.TopicName. includes(“saturation”) | {“pid”:o.patientID,“SpO2”:t.Payload.saturation, “time”:e.time} | Shows the peripheral oxygen saturation of a patient at a specified time. |
| ReqAttSet | {“cid”: string, “uid”: string, “gid”: string, “pSet”: Set(string),“relativeOf”: Set(string),“pid”: string, “ts”: long } | {“cid”: s.cid, “uid”: s.uid, “gid”: s.gid,“pSet”: s.pSet, “relativeOf”: s.relativeOf,“pid”: o.patientId, “ts”: e.time} | Maps the set of subject, object and environments attributes which characterize access requests in the considered application scenario. |
Fig. 5State machine representing the possible evolution of a COVID-19 case.
Complex event types specified for the case study.
| cet | adc | ets | exp |
|---|---|---|---|
| Symptom | {“pid”: string} | {Temperature, RespiratoryRate, EstimatedSpO2} | |
| NoSymptom | {“pid”: string} | {Temperature, RespiratoryRate, EstimatedSpO2} | |
| SevereSymptom | {“pid”: string, “bpm”: float} | {RespiratoryRate} | |
| NoSevereSymptom | {“pid”: string} | {RespiratoryRate} | |
| Activation | {“pid”: string, “reqId”: long} | {ReqAttSet} | |
| UnderTest | {“pid”: string} | {LastTest, Activation, Prescription} | |
| LastTest | {“pid”: string, testDate: date, reqId: long, result: boolean} | {Result} | |
| Positive | {“pid”: string } | {LastTest, UnderTest} | |
| Negative | {“pid”: string } | {LastTest, UnderTest} | |
| VisitedRoom | {“pid”: string, “pos”: string, “time”: datetime, “date”: date, “ts”: long} | {Location, ReqAttSet} | |
| Contact | {“pid”: string,“rpid”: string, “pos”: string, “time”: datetime, “date”: date, “ts”: long} | {Location, VisitedRoom, ReqAttSet} | |
| CloseContact | {“pid”: string, “rpid”: string, “date”: datetime, “duration”: float, “ts”: long} | {Contact, ReqAttSet} | |
Actions involved in the COVID-19 case study.
| aid | cet | tp | pl |
|---|---|---|---|
| NotifyCloseContact | CloseContact | closecontact | {“pid”: CloseContactce.pid} |
| WarnActivation | Activation | warning | {“pid”: Activationce.pid, “time”: Activationce.reqId} |
Ordinary policies for the nursing home application.
| s | tf | exp | pr | description |
|---|---|---|---|---|
| patient | prescription | o.patientId==s.uid | r | Allows patients to be informed of COVID-19 tests they must undergo. |
| patient | result | o.patientId==s.uid | r | Allows patients to get the results of COVID-19 test they underwent. |
| patient | warning | o.patientId==s.uid | r | Allows patients to be warned of having activated a COVID-19 case. |
| patient | closecontact | o.patientId==s.uid | r | Allows patients to be warned of being close contacts of suspected / confirmed COVID-19 cases. |
| patient | treatment | o.patientId==s.uid | r | Allows patients to be informed of treatment options. |
| patient | consent | o.patientId==s.uid | w | Allows a patient to consent to undergo a treatment. |
| medical_personnel | physiological/# | o.patientId | r | Allows physicians to access physiological data of their patients. |
| medical_personnel | prescription | o.patientId | w | Allows physicians to prescribe COVID-19 tests for their patients. |
| medical_personnel | result | o.patientId | r | Allows physicians to receive COVID-19 test results of their patients. |
| medical_personnel | warning | o.patientId | r | Allows physicians to be notified of patients’ COVID case activations. |
| medical_personnel | treatment | o.patientId | w | Allows physicians to communicate treatment options to their patients. |
| medical_personnel | consent | o.patientId | r | Allows physicians to collect the consent from their patients. |
| medical_personnel | bulletin | o.patientId | w | Allows physicians to publish medical bulletins for their patients. |
| medical_personnel | closecontact | o.patientId | r | Allows physicians to be warned of patients identified as close contact of a suspected / confirmed COVID-19 case. |
Emergency policies for the COVID-19 case study.
| s | tf | exp | pr | esf | stf |
|---|---|---|---|---|---|
| medical_personnel | location | o.patientId | r | edp=“COVID-19 case” | All |
| external specialist | physiological/# | true | r | edp=“COVID-19 case” | {COVID-19 symptomatic, Severe COVID-19} |
| relative | bulletin | o.patientId | r | edp=“COVID-19 case” | All |
| guardian | treatment | o.patientId | r | edp=“COVID-19 case” | {Severe COVID-19} |
| guardian | consent | o.patientId | w | edp=“COVID-19 case” | {Severe COVID-19} |
| guardian | result | o.patientId | r | edp=“COVID-19 case” | {Severe COVID-19} |
Observed performance measures.
| Phase | Monitor 1 | Monitor 2 | Monitor 3 | Avg | Tot | ||
|---|---|---|---|---|---|---|---|
| Target setup | Time overhead | c2b | 25.25 ms | 25.74 ms | 25.35 ms | 25.45 ms | – |
| b2c | 5.1 ms | 5.17 ms | 5.15 ms | 5.14 ms | – | ||
| c2c | 30.36 ms | 30.91 ms | 30.50 ms | 30.59 ms | – | ||
| Transmission time | c2c | 40.48 ms | 44.49 ms | 44.09 ms | 43.02 ms | – | |
| Throughput | c2b | 14.75 cp/s | 14.69 cp/s | 14.72 cp/s | 14.72 cp/s | 44.16 cp/s | |
| b2c | 17.28 cp/s | 17.26 cp/s | 17.29 cp/s | 17.28 cp/s | 51.83 cp/s | ||
| c2c | 32.03 cp/s | 31.94 cp/s | 32.01 cp/s | 32.00 cp/s | 95.99 cp/s | ||
| Extreme case setup | Time overhead | c2b | 62.15 ms | 62.24 ms | 64.03 ms | 62.80 ms | – |
| b2c | 5.83 ms | 5.73 ms | 6.16 ms | 5.91 ms | – | ||
| c2c | 67.98 ms | 67.97 ms | 70.19 ms | 68.71 ms | – | ||
| Transmission time | c2c | 70.86 ms | 70.77 ms | 72.27 ms | 71.3 ms | – | |
| Throughput | c2b | 13.93 cp/s | 13.85 cp/s | 13.85 cp/s | 13.87 cp/s | 41.63 cp/s | |
| b2c | 15.50 cp/s | 15.46 cp/s | 15.48 cp/s | 15.48 cp/s | 46.44 cp/s | ||
| c2c | 29.43 cp/s | 29.31 cp/s | 29.33 cp/s | 29.36 cp/s | 88.07 cp/s |
Fig. 6Performance analysis results.