SDACS: Blockchain-Based Secure and Dynamic Access Control Scheme for Internet of Things
Abstract
:1. Introduction
- SDACS integrates the interplanetary file system (IPFS), blockchain technology, and ABAC. The encrypted data are stored on the IPFS, effectively solving the problems of high data storage costs and data security. On the blockchain, the scheme enables the sharing of data storage addresses and data hash. The data access control process is automatically executed by blockchain, which solves the trust issues caused by third-party institutions.
- The access control scheme consists of APDC, DRMC, APMC, and DACC. The four smart contracts cooperate with each other to enable detailed and dynamic access control of data. For malicious data users, we design a punishment mechanism to impose corresponding behavioral restrictions through a misbehavior list. The data user can obtain correct data only through both on-chain authorization and off-chain identity authentication.
- We propose a lightweight, certificateless authentication protocol that enables bidirectional identity authentication between a trusted central authority and users. In order to ensure minimal leakage of user identity information, the true identity of the user is known only to himself and TCA. Our protocol not only ensures the legitimacy of the user’s identity source, but also verifies whether the data user has access rights to the data, which achieves double-layer protection of data.
- Our authentication scheme achieves unforgeability under adaptive selected message attacks. We develop a prototype system utilizing Hyperledger Fabric and Python. Theoretical analysis and experimental evaluation show that the performance of SDACS is effective for IoT data security sharing scenarios.
2. Related Work
2.1. Blockchain-Based Access Control
2.2. Privacy Preservation in IoT Access Control
2.3. Secure Storage in IoT Access Control
3. System Model
3.1. System Architecture
- Trusted central authority (TCA): The TCA is a trusted organization, which is responsible for generating system parameters and performing user registration. Additionally, it provides identity authentication and decryption key generation services for the data user.
- Data owner (DO): The DO formulates the access policy for IoT data and encrypts the data based on parameters returned by the TCA. To improve storage efficiency, the DO sends the ciphertext to IPFS and synchronizes the data storage address and data hash, which we call data resource, to the blockchain through smart contracts. The DO is generally an IoT gateway device that connects device clusters to the blockchain network through wireless communication technology.
- Data user (DU): The DU sends a request to the DO to obtain data. The access behavior of the DU will be recorded in the blockchain, ensuring the traceability of the data resource access process. If the verification is successful, they will decrypt the ciphertext based on the decryption key sent by the TCA to obtain the data resource.
- Blockchain (BC): The BC is the core of the access control system. It is accountable for storing the storage address of data in the IPFS and data hash. As a fully trusted entity, all member nodes work honestly under the consensus mechanism. By deploying access control smart contracts, the blockchain system receives the DU’s access request, and automatically matches and verifies the attributes of the DU, which achieves fine-grained access control of the data.
- IPFS: The IPFS is a secure storage system that allows large-size IoT data to be stored for the DO. In addition, the DU can obtain ciphertext from the IPFS based on the storage address.
3.2. Basic Algorithms and Security Model
3.2.1. Basic Algorithms
3.2.2. Security Model
- Create-user query: inputs a query , and searches the user list to confirm whether the user has been created. If so, will return to . Otherwise, will execute a series of algorithms to create users. Then, adds to , and sends and to . It is assumed that create-user query is always asked before other oracles.
- Hash query: sends the relevant parameters to to obtain the corresponding hash value.
- TCA partial private key query: requests the TCA partial private key of the user, whose pseudonym is . In response, searches list and returns to .
- User private key generation query: requests the private key of the user, whose pseudonym is . The challenger outputs the corresponding user private key . If the public key is replaced and does not provide the corresponding , then is returned.
- User public key replacement query: For any user whose pseudonym is , the adversary can choose a new public key , and will replace of the user. In addition, may not provide corresponding to . In this case, is returned.
- Message authentication encryption query: Challenger runs the algorithm and outputs the message ciphertext, satisfying , where is the latest public key stored in .
- .
- has never submitted to perform message authentication encryption queries.
- has never submitted to perform TCA partial private key queries.The probability of winning Game I is defined as .
- Create-user query: takes as input a query , and searches the user list to confirm whether the user has been created. If so, will return to . Otherwise, will execute a series of algorithms to create users. Then, adds to , and sends and to . It is assumed that create-user query is always asked before other oracles.
- Hash query: sends the relevant parameters to to obtain the corresponding hash value.
- TCA partial private key query: requests the TCA partial private key of the user, whose pseudonym is . In response, searches list and returns to .
- User private key generation query: requests the private key of the user, whose pseudonym is . The challenger outputs the corresponding user private key . If the public key is replaced and does not provide the corresponding , then is returned.
- User public key replacement query: For any user whose pseudonym is , the adversary can choose a new public key , and will replace of the user. In addition, may not provide corresponding to . In this case, is returned.
- Message authentication encryption query: Challenger runs the algorithm and outputs the message ciphertext, satisfying , where is the latest public key stored in .
- .
- has never submitted to perform message authentication encryption queries.
- has never submitted to perform user private key generation queries.
- The probability of winning Game II is defined as .
3.3. Workflow of SDACS
3.3.1. Process 1: System Initialization and User Registration Process
3.3.2. Process 2: Data Encryption Process
3.3.3. Process 3: Blockchain Initialization Process
3.3.4. Process 4: Access Control Process
3.3.5. Process 5: Data Decryption Process
4. System Design
4.1. System Initialization
4.2. User Registration
4.3. Data Encryption and Storage
4.4. Design of Smart Contracts
Algorithm 1 APMC.AddPolicy(): Add the policy into the blockchain network |
Input: Policy |
Output: Text or Error |
%policy=<AS, AO, AP, AE> |
ResourceID = SHA256 (Policy. AS. OwnerID + Policy. AO. DataID) |
if (QueryPolicy (ResourceID) == True) then % Policy already exists |
UpdatePolicy (Policy) |
return Text (“Policy is updated”) |
else |
API.Putstate (ResourceID, Policy) |
return Text (“Policy is added”) |
endif |
Algorithm 2 APMC.DeletePolicy(): Delete the policy from the blockchain network |
Input: Policy |
Output: Null or Error |
<AS, AO, AP, AE> ← Policy |
ResourceID = SHA256(Policy. AS. OwnerID + Policy. AO. DataID) APIStub.DelState(ResourceID, Policy) |
return null |
Algorithm 3 DACC.AccessData(): Get Data Resource According to Policy. |
Input: Request of Data User |
Output: Data Resource or Error |
% MinTime represents the minimum allowed time interval for the data user, and the initial default value for UserID_LastTime is 0 |
User_Policy = <, , UserID> ← GetUserReq (User_Request) record ← GetMisbehavior(APIstub, UserID) if (record.ErrorTime < AllowedTimes) then return Text (“Access denied, access error limit reached”) endif |
Policy = <AS, AO, AP, AE> ← APIStub.InvokeChaincode (APMC.QueryPolicy, User_Policy.GetID()) |
if (Time.Now()–UserID_LastTime < MinTime) then AddMisbehavior(APIstub, UserID, Time.Now(), AO.DataID) |
return Text (“Time interval is too short, please access again after a while”) |
endif |
if (Policy. AP == 0) then |
return Text (“Access Denied”) endif |
if (Policy. AE. Mode == 1) then |
if (Time.Now() > Policy. AE. EndTime) then |
return Text (“Access Time Error”) |
endif |
endif |
if ((User_Policy. != Policy. AS) || (User_Policy. != Policy. AO)) then |
return Text (“Attribute Mismatch”) |
endif |
Data_Resource ← APIStub.InvokeChaincode (DRMC.GetData, User_Policy.AO. DataID) UserID_LastTime ← APIstub.PutState(UserID, Time.Now()) |
return Data_Resource |
Algorithm 4 DACC. AddMisbehavior (): Add the misbehavior into the list of incorrect behaviors. |
Input: UserID, Timestamp, DataID |
Output: Null or Error |
record = GetMisbehavior (UserID) |
Errortime = record.Errortime + 1 |
Misbehavior = APDC. NewReocrd (UserID, Timestamp, DataID, Errortime) |
API.Putstate (UserID, Misbehavior) |
return Null |
4.5. Security Authentication and Key Generation
4.6. Data Decryption
5. Security Analysis
5.1. Security Analysis of Lightweight, Certificateless Authentication Protocol
5.1.1. Proof of Correctness
- (1)
- Correctness of the message ciphertext
- (2)
- Correctness of message decryption
5.1.2. Proof of Security
- Create-user query: For the query with identity , queries the list . If there is a corresponding entry in the list, is returned. Otherwise, if , generates a pseudonym , randomly selects , calculates , and sets . If , randomly selects , and computes . Finally, sends and pseudonym to , and adds to the list .
- query: When receiving the query from , queries the list . If is in the list, it returns to . Otherwise, performs the create-user operation and extracts from and returns it to .
- query: When receiving the query from , queries the list . If the query value is in list, then returns to . Otherwise, randomly selects and sets . Finally, returns to .
- query: When receiving a request from , queries the list . If the query value exists in the list , it returns to . Otherwise, selects the random number , sets , and returns to .
- TCA partial private key query: When receiving the query from , if , returns and terminates the game. Otherwise, searches list and returns to .
- User private key generation query: When receiving a request from , queries the list . If is in the list, then it returns to . Here, when the user’s public key is replaced and does not provide the corresponding , the command to extract the user’s private key does not output the user’s private key.
- User public key replacement query: When receiving the query from , queries the list and replaces the existing public key with , where is set to .
- Message authentication encryption query: checks whether these three tuples, , and , are in the lists , and , respectively.
- Create-user query: For the query with identity ID, queries the list . If there is a corresponding entry in the list, is returned. Otherwise, generates a pseudonym , randomly chooses , computes and , then sets . If , randomly selects and calculates . If , sets and . Finally, sends and pseudonym to , and adds to the list .
- query: When receiving the query from , queries the list . If is in the list, it returns to . Otherwise, performs the create-user operation and extracts from and returns it to .
- query: When receiving the query from , queries the list . If the query value is in the list, then returns to . Otherwise, randomly selects and sets . Finally, returns to .
- query: When receiving a request from , queries the list . If the query value exists in the list , it returns to . Otherwise, selects the random number , sets , and returns to .
- TCA partial private key query: When receiving the query from , searches list , and if the entry exists, returns to . Otherwise, performs a create-user query using the identification and returns to .
- User private key generation query: When receiving a request from , if , returns and terminates the game. Otherwise, searches list and returns to .
- User public key replacement query: When receiving the query from , if , returns and terminates the game. Otherwise, updates the list to , where is set to .
- Message authentication encryption query: checks whether these three tuples, , , and , are in the lists , and , respectively.
5.1.3. Informal Security Analysis
- (1)
- Bidirectional identity authentication
- (2)
- Anonymity
- (3)
- Traceability
- (4)
- Resist replay attacks
- (5)
- Resist Man-in-the-Middle attacks
5.2. Data Security Analysis
- (1)
- Data confidentiality
- (2)
- Data immutability
- (3)
- Data security
6. Performance Evaluation
6.1. Authentication Evaluation
6.1.1. Computational Cost
6.1.2. Communication Cost
6.1.3. Storage Cost
6.2. Encryption and Decryption Evaluation
6.3. Access Control Evaluation
6.3.1. System and Function Display
6.3.2. Performance Testing
7. Conclusions and Future Work
Author Contributions
Funding
Institutional Review Board Statement
Informed Consent Statement
Data Availability Statement
Conflicts of Interest
References
- Han, P.C.; Zhang, Z.Y.; Ji, S.; Wang, X.W.; Liu, L.; Ren, Y.J. Access control mechanism for the Internet of Things based on blockchain and inner product encryption. J. Inf. Secur. Appl. 2023, 74, 103446. [Google Scholar] [CrossRef]
- Liang, W.; Zhang, D.F.; Tang, M.D.; Li, K.C.; Albert, Y.Z. Circuit Copyright Blockchain: Blockchain-Based Homomorphic Encryption for IP Circuit Protection. IEEE Trans. Emerg. Top. Comput. 2021, 9, 1410–1420. [Google Scholar] [CrossRef]
- Liang, W.; Huang, W.H.; Long, J.; Zhang, K.; Li, K.C.; Zhang, D.F. Deep Reinforcement Learning for Resource Protection and Real-Time Detection in IoT Environment. IEEE Internet Things J. 2020, 7, 6392–6401. [Google Scholar] [CrossRef]
- Ghaffari, F.; Bertin, E.; Hatin, J.; Crespi, N. Authentication and access control based on distributed ledger technology: A survey. In Proceedings of the 2nd Conference on Blockchain Research & Applications for Innovative Networks and Services, Paris, France, 28–30 September 2020; pp. 79–86. [Google Scholar]
- Hao, J.L.; Tang, W.J.; Huang, C.; Liu, J.; Wang, H.M.; Xian, M. Secure Data Sharing with Flexible User Access Privilege Update in Cloud-Assisted IoMT. IEEE Trans. Emerg. Top. Comput. 2021, 10, 933–947. [Google Scholar] [CrossRef]
- Fan, Y.K.; Zhao, G.Q.; Lei, X.; Liang, W.; Li, K.C.; Choo, K.K.R.; Zhu, C.S. SBBS: A Secure Blockchain-Based Scheme for IoT Data Credibility in Fog Environment. IEEE Internet Things 2021, 8, 9268–9277. [Google Scholar] [CrossRef]
- Iqal, Z.M.; Selamat, A.; Krejcar, O. A Comprehensive Systematic Review of Access Control in IoT: Requirements, Technologies, and Evaluation Metrics. IEEE Access 2024, 12, 12636–12654. [Google Scholar] [CrossRef]
- Wang, J.P.; Li, M.H.; Sun, Y.B.; Tian, Z.H. An Access Control Method Against Unauthorized and Noncompliant Behaviors of Real-Time Data in Industrial IoT. IEEE Internet Things J. 2024, 11, 708–727. [Google Scholar] [CrossRef]
- Ameer, S.; Benson, J.; Sandhu, R. Hybrid Approaches (ABAC and RBAC) Toward Secure Access Control in Smart Home IoT. IEEE Trans. Dependable Secur. Comput. 2023, 20, 4032–4051. [Google Scholar] [CrossRef]
- Dan, N.; Ji, S.H.; Yuan, C.; Hu, G.J. Attribute based access control (ABAC)-based cross-domain access control in service-oriented architecture (SOA). In Proceedings of the International Conference on Computer Science and Service System, Nanjing, China, 11–13 August 2012; pp. 1405–1408. [Google Scholar]
- Panduro-Ramirez, J.; Lourens, M.; Gehlot, A.; Singh, D.P.; Singh, Y.; Salunke, D.J. Blockchain Approach for Implementing Access Control in IoT. In Proceedings of the 2023 International Conference on Artificial Intelligence and Smart Communication, Greater Noida, India, 27–29 January 2023; pp. 596–599. [Google Scholar]
- Hao, X.H.; Ren, H.; Fei, Y.Y.; Zhu, T.Q.; Choo, K.K.R. A Blockchain-Based Cross-Domain and Autonomous Access Control Scheme for Internet of Things. IEEE Trans. Serv. Comput. 2023, 16, 773–786. [Google Scholar] [CrossRef]
- Jiang, Y.; Xu, X.L.; Xiao, F. Attribute-Based Encryption with Blockchain Protection Scheme for Electronic Health Records. IEEE Trans. Netw. Serv. Manag. 2022, 19, 3884–3895. [Google Scholar] [CrossRef]
- Fugkeaw, S. Achieving Decentralized and Dynamic SSO-Identity Access Management System for Multi-Application Outsourced in Cloud. IEEE Access 2023, 11, 25480–25491. [Google Scholar] [CrossRef]
- Riabi, I.; Dhif, Y.; Ayed, H.K.B.; Zaatouri, K. A blockchain based access control for IoT. In Proceedings of the 15th International Wireless Communications and Mobile Computing Conference, Tangier, Morocco, 24–28 June 2019; pp. 2086–2091. [Google Scholar]
- Sarfaraz, A.; Chakrabortty, R.K.; Essam, D.L. AccessChain: An access control framework to protect data access in blockchain enabled supply chain. Future Gener. Comput. Syst. 2023, 148, 380–394. [Google Scholar] [CrossRef]
- Zhang, Y.Y.; Kasahara, S.J.; Shen, Y.L.; Jiang, X.H.; Wan, J.X. Smart Contract-Based Access Control for the Internet of Things. IEEE Internet Things J. 2018, 6, 1594–1605. [Google Scholar] [CrossRef]
- Li, S.; Zhou, T.; Yang, H.; Wang, P. Blockchain-Based Secure Storage and Access Control Scheme for Supply Chain Ecological Business Data: A Case Study of the Automotive Industry. Sensors 2023, 23, 7036. [Google Scholar] [CrossRef]
- Luo, X.; Xue, K.; Xu, J.; Sun, Q.; Zhang, Y. Blockchain Based Secure Data Aggregation and Distributed Power Dispatching for Microgrids. IEEE Trans. Smart Grid 2021, 12, 5268–5279. [Google Scholar] [CrossRef]
- Hao, J.; Huang, C.; Tang, W.; Zhang, Y.; Yuan, S. Smart Contract-Based Access Control Through Off-Chain Signature and On-Chain Evaluation. IEEE Trans. Circuits Syst. II Express Briefs 2022, 69, 2221–2225. [Google Scholar] [CrossRef]
- Jambi, K.; Almarhabi, K.; Khemakhem, M.; Basuhail, A.; Yamin, M. Hierarchical. Blockchain-Based Multi-Chaincode Access Control for Securing IoT Systems. Electronics 2022, 11, 711. [Google Scholar] [CrossRef]
- Ali, A.; Rahim, H.A.; Pasha, M.F.; Dowsley, R.; Masud, M.; Ali, J.; Baz, M. Security, Privacy, and Reliability in Digital Healthcare Systems Using Blockchain. Electronics 2021, 10, 2034. [Google Scholar] [CrossRef]
- Liu, H.; Han, D.Z.; Li, D. Fabric-IoT: A Blockchain-Based Access Control System in IoT. IEEE Access 2020, 8, 18207–18218. [Google Scholar] [CrossRef]
- Sun, S.A.; Du, R.; Chen, S.D.; Li, W.W. Blockchain-Based IoT Access Control System: Towards Security, Lightweight, and Cross-Domain. IEEE Access 2021, 9, 36868–36878. [Google Scholar] [CrossRef]
- Azbeg, K.; Ouchetto, X.M.; Andaloussi, S.J. Access Control and Privacy-Preserving Blockchain-Based System for Diseases Management. IEEE Trans. Comput. Soc. Syst. 2023, 10, 1515–1527. [Google Scholar] [CrossRef]
- Zhao, X.J.; Wang, S.P.; Zhang, Y.L.; Wang, Y. Attribute-based Access Control Scheme for Data Sharing on Hyperledger Fabric. J. Inf. Secur. Appl. 2022, 67, 103182. [Google Scholar] [CrossRef]
- Fan, X.; Fan, C.; Wu, Y. Realization of Privacy Protection of Food Supply Chain Based on Blockchain and IPFS. J. Appl. Sci. 2019, 37, 179–190. [Google Scholar]
- Huang, X.; Mu, Y.; Susilo, W.; Wong, D.S.; Wu, W. Certificateless Signatures: New Schemes and Security Models. Comput. J. 2012, 55, 457–474. [Google Scholar] [CrossRef]
- Basudan, S.; Lin, X.; Sankaranarayanan, K. A Privacy-Preserving Vehicular Crowdsensing-Based Road Surface Condition Monitoring System Using Fog Computing. IEEE Internet Things J. 2017, 4, 772–782. [Google Scholar] [CrossRef]
- Barbosa, M.; Farshim, P. Certificateless signcryption. In Proceedings of the 2008 ACM Symposium on Information, Computer and Communications Security, Tokyo, Japan, 18–20 March 2008; pp. 369–372. [Google Scholar]
- Eslami, Z.; Pakniat, N. Certificateless Aggregate Signcryption: Security Model and A Concrete Construction Secure in the Random Oracle Model. J. King Saud. Univ. Comput. Inf. Sci. 2014, 26, 276–286. [Google Scholar] [CrossRef]
- Liao, Y.J.; Liu, Y.L.; Liang, Y.K.; Wu, Y.; Nie, X.Y. Revisit of Certificateless Signature Scheme Used to Remote Authentication Schemes for Wireless Body Area Networks. IEEE Internet Things J. 2020, 7, 2160–2168. [Google Scholar] [CrossRef]
- Li, H.Z.; Han, D.Z.; Chang, C.C. DAC4SH: A Novel Data Access Control Scheme for Smart Home Using Smart Contracts. IEEE Sens. J. 2023, 23, 6178–6191. [Google Scholar] [CrossRef]
Reference | Basic Model | Blockchain Platform | Storage Platform | Identity Privacy Protection | Application |
---|---|---|---|---|---|
[15] | CapBAC, IBAC | Ethereum | - | No | IoT |
[16] | ABAC | Ethereum | Blockchain | No | Supply Chain |
[17] | CapBAC | Ethereum | Storage Device | No | IoT |
[20] | ABAC | Ethereum | Resource Pool | No | Common scenarios |
[21] | ABAC | Hyperledger Fabric | Edge Blockchain Manager | No | IoT |
[22] | ABAC | Hyperledger Fabric | Blockchain | Yes | Healthcare |
[24] | ABAC | Hyperledger Fabric | Local Database | No | IoT |
[26] | ABAC | Hyperledger Fabric | IPFS | No | IoT |
[27] | DAC | Ethereum | IPFS | No | Food Supply |
Ours | ABAC | Hyperledger Fabric | IPFS | Yes | IoT |
AS | AO | AP | AE |
---|---|---|---|
OwnerID: DO1250 | DataID: Data1110 | 1 | CreationTime: 1698143280 |
Dep1: home1 | Dep2: sensor_company1 | 0 | Endtime: 1798748080 |
Role1: owner1 | Role2: light_intensity_sensor1 | Mode:1 | |
Place: room1 |
UserID | DataID | Timestamp | Error Number | Results |
---|---|---|---|---|
DU1110 | Data1110 | 1701332571 | 2 | Time interval is too short. |
DU1111 | Data1110 | 1701332654 | 10 | Access denied, access error limit reached, access denied. |
Curve | Pairing | Group | Length of Elements of Group | |
---|---|---|---|---|
Cryptographic Operation | Running Time (ms) |
---|---|
Bilinear pairing operation | 1.87 |
Scalar multiplication operation | 0.61 |
Hash operation | 0.04 |
Protocol | Message Authentication Encryption Cost | Message Authentication Decryption Cost |
---|---|---|
Basudan et al. [29] | ||
Barbosa et al. [30] | ||
Eslami et al. [31] | ||
Liao et al. [32] | ||
Our Protocol |
Protocol | Basudan et al. [29] | Barbosa et al. [30] | Eslami et al. [31] | Liao et al. [32] | Our Protocol |
---|---|---|---|---|---|
Message Ciphertext Length |
Protocol | Basudan et al. [29] | Barbosa et al. [30] | Eslami et al. [31] | Liao et al. [32] | Our Protocol |
---|---|---|---|---|---|
Storage Cost of the User |
Hardware | Software | ||
---|---|---|---|
CPU | i5-7500 CPU 3.40 GHz | OS | Ubuntu 16.04.7 LTS |
Memory | 16.00 GB | docker | v20.10.7 |
Hard Disk | 1 TB | docker-compose | v1.17.0 |
node | v16.17.0 | ||
golang | v1.18.5 | ||
git | v2.7.4 | ||
Hyperledger Fabric | v1.4 |
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content. |
© 2024 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (https://creativecommons.org/licenses/by/4.0/).
Share and Cite
Gong, Q.; Zhang, J.; Wei, Z.; Wang, X.; Zhang, X.; Yan, X.; Liu, Y.; Dong, L. SDACS: Blockchain-Based Secure and Dynamic Access Control Scheme for Internet of Things. Sensors 2024, 24, 2267. https://doi.org/10.3390/s24072267
Gong Q, Zhang J, Wei Z, Wang X, Zhang X, Yan X, Liu Y, Dong L. SDACS: Blockchain-Based Secure and Dynamic Access Control Scheme for Internet of Things. Sensors. 2024; 24(7):2267. https://doi.org/10.3390/s24072267
Chicago/Turabian StyleGong, Qinghua, Jinnan Zhang, Zheng Wei, Xinmin Wang, Xia Zhang, Xin Yan, Yang Liu, and Liming Dong. 2024. "SDACS: Blockchain-Based Secure and Dynamic Access Control Scheme for Internet of Things" Sensors 24, no. 7: 2267. https://doi.org/10.3390/s24072267