<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.1 20151215//EN" "http://jats.nlm.nih.gov/publishing/1.1/JATS-journalpublishing1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" xml:lang="en" article-type="research-article" dtd-version="1.1">
<front>
<journal-meta>
<journal-id journal-id-type="pmc">CMC</journal-id>
<journal-id journal-id-type="nlm-ta">CMC</journal-id>
<journal-id journal-id-type="publisher-id">CMC</journal-id>
<journal-title-group>
<journal-title>Computers, Materials &#x0026; Continua</journal-title>
</journal-title-group>
<issn pub-type="epub">1546-2226</issn>
<issn pub-type="ppub">1546-2218</issn>
<publisher>
<publisher-name>Tech Science Press</publisher-name>
<publisher-loc>USA</publisher-loc>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">42000</article-id>
<article-id pub-id-type="doi">10.32604/cmc.2023.042000</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Article</subject>
</subj-group>
</article-categories>
<title-group>
<article-title>EduASAC: A Blockchain-Based Education Archive Sharing and Access Control System</article-title>
<alt-title alt-title-type="left-running-head">EduASAC: A Blockchain-Based Education Archive Sharing and Access Control System</alt-title>
<alt-title alt-title-type="right-running-head">EduASAC: A Blockchain-Based Education Archive Sharing and Access Control System</alt-title>
</title-group>
<contrib-group>
<contrib id="author-1" contrib-type="author">
<name name-style="western"><surname>Hu</surname><given-names>Ronglei</given-names></name><xref ref-type="aff" rid="aff-1">1</xref></contrib>
<contrib id="author-2" contrib-type="author">
<name name-style="western"><surname>He</surname><given-names>Chuce</given-names></name><xref ref-type="aff" rid="aff-1">1</xref></contrib>
<contrib id="author-3" contrib-type="author">
<name name-style="western"><surname>Chi</surname><given-names>Yaping</given-names></name><xref ref-type="aff" rid="aff-2">2</xref></contrib>
<contrib id="author-4" contrib-type="author">
<name name-style="western"><surname>Duan</surname><given-names>Xiaoyi</given-names></name><xref ref-type="aff" rid="aff-1">1</xref></contrib>
<contrib id="author-5" contrib-type="author">
<name name-style="western"><surname>Fan</surname><given-names>Xiaohong</given-names></name><xref ref-type="aff" rid="aff-1">1</xref></contrib>
<contrib id="author-6" contrib-type="author">
<name name-style="western"><surname>Xu</surname><given-names>Ping</given-names></name><xref ref-type="aff" rid="aff-1">1</xref></contrib>
<contrib id="author-7" contrib-type="author" corresp="yes">
<name name-style="western"><surname>Gao</surname><given-names>Wenbin</given-names></name><xref ref-type="aff" rid="aff-1">1</xref><email>gaowenbin@besti.edu.cn</email></contrib>
<aff id="aff-1"><label>1</label><institution>Department of Electronics and Communication Engineering, Beijing Electronic Science and Technology Institute</institution>, <addr-line>Beijing, 100070</addr-line>, <country>China</country></aff>
<aff id="aff-2"><label>2</label><institution>Department of Cyberspace Security, Beijing Electronic Science and Technology Institute</institution>, <addr-line>Beijing, 100070</addr-line>, <country>China</country></aff>
</contrib-group>
<author-notes>
<corresp id="cor1"><label>&#x002A;</label>Corresponding Author: Wenbin Gao. Email: <email>gaowenbin@besti.edu.cn</email></corresp>
</author-notes>
<pub-date date-type="collection" publication-format="electronic">
<year>2023</year></pub-date>
<pub-date date-type="pub" publication-format="electronic"><day>26</day>
<month>12</month>
<year>2023</year></pub-date>
<volume>77</volume>
<issue>3</issue>
<fpage>3387</fpage>
<lpage>3422</lpage>
<history>
<date date-type="received"><day>14</day><month>5</month><year>2023</year></date>
<date date-type="accepted"><day>03</day><month>11</month><year>2023</year></date>
</history>
<permissions>
<copyright-statement>&#x00A9; 2023 Hu et al.</copyright-statement>
<copyright-year>2023</copyright-year>
<copyright-holder>Hu et al.</copyright-holder>
<license xlink:href="https://creativecommons.org/licenses/by/4.0/">
<license-p>This work is licensed under a <ext-link ext-link-type="uri" xlink:type="simple" xlink:href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</ext-link>, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
</license>
</permissions>
<self-uri content-type="pdf" xlink:href="TSP_CMC_42000.pdf"></self-uri>
<abstract>
<p>In the education archive sharing system, when performing homomorphic ciphertext retrieval on the storage server, there are problems such as low security of shared data, confusing parameter management, and weak access control. This paper proposes an Education Archives Sharing and Access Control (EduASAC) system to solve these problems. The system research goal is to realize the sharing of security parameters, the execution of access control, and the recording of system behaviors based on the blockchain network, ensuring the legitimacy of shared membership and the security of education archives. At the same time, the system can be combined with most homomorphic ciphertext retrieval schemes running on the storage server, making the homomorphic ciphertext retrieval mechanism controllable. This paper focuses on the blockchain access control framework and specifically designs smart contracts that conform to the business logic of the EduASAC system. The former adopts a dual-mode access control mechanism combining Discretionary Access Control (DAC) and Mandatory Access Control (MAC) and improves the tagging mode after user permission verification based on the Authentication and Authorization for Constrained Environments (ACE) authorization framework of Open Authorization (OAuth) 2.0; the latter is used in the system to vote on nodes to join requests, define access control policies, execute permission verification processes, store, and share system parameters, and standardize the behavior of member nodes. Finally, the EduASAC system realizes the encryption, storage, retrieval, sharing, and access control processes of education archives. To verify the performance of the system, simulation experiments were conducted. The results show that the EduASAC system can meet the high security needs of education archive sharing and ensure the system&#x2019;s high throughput, low latency, fast decision-making, and fine-grained access control ability.</p>
</abstract>
<kwd-group kwd-group-type="author">
<kwd>Blockchain</kwd>
<kwd>data security</kwd>
<kwd>access control</kwd>
<kwd>smart contract</kwd>
</kwd-group>
<funding-group>
<award-group id="awg1">
<funding-source>Fundamental Research Funds for the Central Universities</funding-source>
<award-id>3282023017</award-id>
<award-id>328202251</award-id>
</award-group>
</funding-group>
</article-meta>
</front>
<body>
<sec id="s1"><label>1</label><title>Introduction</title>
<p>With the rapid improvement of social education, many multidisciplinary and multi-form education archives have been generated involving students, educational institutions, enterprises, government departments, and other stakeholders. At the same time, data breaches occur frequently in the education field, and attack methods are increasing day by day. In January 2022, Illuminate Education, an online scoring and attendance system, was attacked, and hackers gained access to the personal database of approximately 820,000 New York City public school students. In May of the same year, a large-scale data breach occurred in Chicago Public Schools in the United States, and the data of nearly 500,000 students and 60,000 employees were leaked. Therefore, the needs of organizations and institutions for the authority, security, and comprehensiveness of education archives have increased, and the confidentiality, completeness, authenticity, and availability of educational archive-sharing systems have been improved [<xref ref-type="bibr" rid="ref-1">1</xref>]. In particular, new privacy regulations (such as the California Privacy Rights Act (CPRA) implemented in California, USA on July 01, 2023) impose stricter privacy protection obligations on organizations. The high-requirement education archive-sharing system is designed to store education archives in the ciphertext state in the storage server and control the access of users who request data. After the user access permission is approved, the storage server runs the ciphertext retrieval mechanism, thus completing the process of searching and sharing the target data in the database.</p>
<p>In the research work, this storage server used for data storage, ciphertext retrieval, and access control is generally designed as a third-party storage service provider. It has the advantages of large storage capacity, low cost, multi-functionality, and easy sharing. Still, as a third party of interest, it may raise problems such as low user trust, high user privacy risk, and less user control over data. The homomorphic ciphertext retrieval mechanism running on the storage server has a high algorithm, key, encrypted data security, and retrieval efficiency. Still, it has problems such as extensive computation, complex parameter sharing, and retrieval access control. The centralized access control mechanism running on storage servers can deny unauthorized access requests from illegal users and overstepped access requests from legitimate users to ensure controlled and legitimate use of system resources. Still, it has problems such as centralized power, single point of failure, high operating costs, third-party service trust, low scalability, etc. It cannot be used in application scenarios with decentralized equipment, multi-party management, and multiple power assignments [<xref ref-type="bibr" rid="ref-2">2</xref>,<xref ref-type="bibr" rid="ref-3">3</xref>].</p>
<p>This paper adopts a blockchain network with distributed, non-tamperable, public, and traceable features to run the access control mechanism to solve the abovementioned problems and challenges. It can provide a retrieval permission verification service for the homomorphic ciphertext retrieval mechanism on the storage server. It finally realizes a blockchain-based education archive sharing and access control system, EduASAC. The system scheme includes access control policies and an education archive-sharing framework and realizes data encryption, storage, retrieval, sharing, and access control processes in modules. The blockchain can realize voting node joining requests, algorithm parameter sharing, access policy storage, access permission verification, and record system behavior, which is a verifiable and unchangeable ledger. The storage server is responsible for storing big data education archives and running homomorphic ciphertext retrieval mechanisms. The smart contract on the chain automatically executes the behaviors, functions, and strategies that have reached consensus, responds to member nodes&#x2019; join requests or access data requests, and ensures the consistency of network-wide behavior under non-manual intervention.</p>
<p>The significance and value of this paper are that the designed system framework can be combined with most of the proposed retrieval schemes in the homomorphic cryptographic retrieval research field and has universal applicability. We adopt blockchain technology to realize distributed access control, including the fusion of multiple access control models and the innovation of an access authorization framework. We use smart contracts to modularize and automate the system workflow, reducing errors&#x2019; impact, improving operational efficiency, and reducing system costs. The system is applied to the field of education to ensure confidentiality, integrity, controllability, availability, and non-repudiation in the process of sharing education archives, which provides new solutions and ideas for various problems faced by the research work of educational systems. The main contributions of the article can be summarized as follows:</p>
<p>1) The EduASAC system adopts a dual-mode access control mechanism combining DAC and MAC models. It improves the access authorization framework based on the ACE authorization framework of OAuth 2.0. The system can be combined with most homomorphic ciphertext retrieval schemes to provide retrieval permission verification, retrieval parameter sharing, retrieval process records, and other services for homomorphic ciphertext retrieval mechanisms. This article details the architecture, parameters, workflow, access control, and homomorphic ciphertext retrieval modules of the EduASAC. It can encrypt, store, retrieve, share, and access education archives among educational institutions and record system parameters and user behavior in a way that prevents tampering.</p>
<p>2) Four smart contracts, Vote Contract, Mapping Contract, Control List Contract, and Access Control Contract are designed to automate the process of secure sharing and access control of education archives. In the scheme, joining new member nodes requires the whole network to call Vote Contract to vote, and then the vote count, result return, and record on the chain are completed through contract automation. The management of system security parameters is executed through Mapping Contract, and a variety of parameter mappings are formed and stored on the chain. Users call Control List Contract to dynamically set up Access Control List (ACL) for education archives, including adding, deleting, updating, and querying table items. The access control scheme is written into the Access Control Contract to verify permission when users request data, and the system behavior logs are recorded on the chain.</p>
<p>3) The theoretical analysis and experiments tested the EduASAC system. The specific work includes analyzing and comparing the system&#x2019;s security and performance, testing the efficiency of four smart contracts on the chain, and simulating the system&#x2019;s data sharing and user access control process to test the system&#x2019;s operational efficiency. The experimental results show that the EduASAC system has a short running time, low cost, and high application value.</p>
<p>The rest of this paper is organized as follows. In <xref ref-type="sec" rid="s2">Section 2</xref>, we introduce the relevant work of this paper. In <xref ref-type="sec" rid="s3">Section 3</xref>, we present the system architecture, system parameters, and workflow of EduASAC, and we detail the access control module and homomorphic ciphertext retrieval module. <xref ref-type="sec" rid="s4">Section 4</xref> introduces the design of four smart contracts in detail. In <xref ref-type="sec" rid="s5">Section 5</xref>, we theoretically analyze the system&#x2019;s security and performance, test the EduASAC system&#x2019;s operation efficiency in the sharing and access control process of education archives, and analyze the experimental results. <xref ref-type="sec" rid="s6">Section 6</xref> concludes the paper and looks forward to future research work.</p>
</sec>
<sec id="s2"><label>2</label><title>Related Works</title>
<p>This section outlines the research on blockchain application in education, focusing on innovative research on access control schemes running on different blockchain system frameworks. The advantages of blockchain technology in education are becoming increasingly prominent [<xref ref-type="bibr" rid="ref-4">4</xref>&#x2013;<xref ref-type="bibr" rid="ref-6">6</xref>]. These applications include (1) ensuring the integrity and traceability of educational information on the chain [<xref ref-type="bibr" rid="ref-7">7</xref>], (2) student degree management and summative assessment of learning outcomes [<xref ref-type="bibr" rid="ref-8">8</xref>], (3) management, dissemination, and documentation of learning resources [<xref ref-type="bibr" rid="ref-9">9</xref>], (4) peer-to-peer, secure interaction and sharing of relevant people [<xref ref-type="bibr" rid="ref-10">10</xref>], (6) and decentralized control of a distributed digital ledger [<xref ref-type="bibr" rid="ref-11">11</xref>]. These advantages motivate the following summary of related research.</p>
<p>Literature [<xref ref-type="bibr" rid="ref-7">7</xref>] proposed an education record storage and sharing scheme EduRSS on the blockchain architecture, in which the storage server ciphertext stores the original education records and the blockchain records Hash to ensure the security and reliability of the education record storage and sharing process. The scheme design smart contract standardizes the storage and sharing behavior between nodes, and introduces cryptographic technology to encrypt and sign data. In the literature [<xref ref-type="bibr" rid="ref-10">10</xref>], a practical architecture for student certificate sharing was proposed on the underlying technology of the blockchain, using an off-chain storage mechanism and a novel privacy protection mechanism to ensure shared data security, user identity privacy, and system scalability. Finally, develop a Decentralized Application (DApp) based on Ethereum for testing. In the literature [<xref ref-type="bibr" rid="ref-12">12</xref>], a system CredenceLedger that uses blockchain to store certificate Hash was designed, which can be used to protect, share and verify student certificates. Literature [<xref ref-type="bibr" rid="ref-13">13</xref>] designed a lifelong learning log for students that can be recorded on the blockchain. That is, verifiable proof of all learning activities is recorded on the chain, which can verify the authenticity of the log and evaluate student achievement, employment options, and intelligence. In the literature [<xref ref-type="bibr" rid="ref-14">14</xref>], a blockchain-based academic degree traceability authentication system was designed, and smart contracts were used to realize the functions of data collaborative storage, user access control, and degree determination to ensure the safe and efficient operation of the system.</p>
<p>The above summarizes some system research work that uses the blockchain as the underlying technical architecture to serve the upper education platform. Among these works, the research on implementing access control to educational information is one of the key points which can allow or restrict users&#x2019; access to education archives and improve the security of shared data. Unfortunately, the results of the survey show that there is little research work on educational systems based on blockchain networks operating access control mechanisms, and this model is mainly applied in healthcare [<xref ref-type="bibr" rid="ref-15">15</xref>], the Internet of Things [<xref ref-type="bibr" rid="ref-16">16</xref>], the Internet of Vehicles [<xref ref-type="bibr" rid="ref-17">17</xref>], and other fields.</p>
<p>The literature [<xref ref-type="bibr" rid="ref-18">18</xref>] was specifically designed for Internet of Things (IoT) data traffic, using blockchain technology for distributed access control, sensor data management, and auditable logging to support secure sharing and fine-grained access control of data-by-data owners. The literature [<xref ref-type="bibr" rid="ref-19">19</xref>] designs a distributed trusted access control system for IoT, which is centered on three smart contracts, namely Access Control Contract (ACC), Judgment Contract (JC), and Registration Contract (RC), and finally implemented based on the Ethernet smart contract platform. In the literature [<xref ref-type="bibr" rid="ref-20">20</xref>], IoTChain, designed based on the Object Security Architecture for the Internet of Things (OSCAR) object security model and the ACE authorization framework [<xref ref-type="bibr" rid="ref-21">21</xref>], was proposed to provide an End to End (E2E) solution for secure authorized access to IoT resources. In the literature [<xref ref-type="bibr" rid="ref-22">22</xref>], a medical application framework based on blockchain, and a cloud database solved the problem of storing and sharing big medical data in a trustless environment. The literature [<xref ref-type="bibr" rid="ref-23">23</xref>] used encryption and signature techniques to control user access to shared data pools. It used permission blockchain to ensure the security of electronic medical records, user identity legality, and traceability of behavior logs. The literature [<xref ref-type="bibr" rid="ref-24">24</xref>] proposed a cloud storage framework with fine-grained access control capability by combining Ethernet with Ciphertext-Policy Attribute-Based Encryption (CP-ABE). The data owner can set properties and access validity periods for users and invoke smart contracts to realize on-chain data storage and tracking. In the literature [<xref ref-type="bibr" rid="ref-25">25</xref>], based on the Hyperledger Fabric framework and smart contract, Attribute Based Access Control (ABAC) and decentralized, fine-grained, and dynamic access control management were implemented that can be applied to large-scale IoT environments.</p>
<p>The above research shows that blockchain-based access control research focuses on different system frameworks, can meet business needs in various fields, and has different research characteristics, application advantages, and realization value. The core of the research work in this paper is the framework design of a blockchain-based access control system, which is the first to serve a homomorphic ciphertext retrieval mechanism and provide retrieval permission verification service for storage servers running a homomorphic ciphertext retrieval mechanism. Therefore, the designed access control scheme is antecedence, innovation, and universality. Meanwhile, the data sharing scheme designed can solve the problems of third-party service distrust, data source uncertainty, data legitimacy, data access control, user identity privacy, as well as log integrity recording, and illegal behavior pursuit when running homomorphic ciphertext retrieval mechanisms on storage servers. In addition, the system application fully considers the user needs in the field of education, the data characteristics, and security features of education archives, so that the blockchain system has both data security sharing and access control capabilities.</p>
</sec>
<sec id="s3"><label>3</label><title>System Model and Design</title>
<p>In this section, the architecture, threat model, parameters, workflow, and core functional modules of the EduASAC system are outlined in detail, which can ensure the security of educational archives and the privacy of user identities and perform efficient access control management on data.</p>
<sec id="s3_1"><label>3.1</label><title>System Architecture</title>
<p>The EduASAC system architecture is shown in <xref ref-type="fig" rid="fig-1">Fig. 1</xref>, which mainly includes four major entities: government, educational institutions, storage servers, and blockchain.</p>
<fig id="fig-1"><label>Figure 1</label><caption><title>System architecture</title></caption><graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_42000-fig-1.tif"/></fig>
<p><bold>1) Educational Institution:</bold> Educational institutions refer to schools, training institutions, educational enterprises, and other organizational units involved in student education. As the largest subject in the EduASAC system, each educational institution has a lifetime-bound account on the blockchain, where keys and identity information are stored. The identity information of the new educational institution is verified by the member nodes of the whole network and then joins the network after voting. Educational institutions can carry out the process of uploading, retrieving, and downloading education archives; set access rights to education archives to define the scope of data sharing; and request access tokens for target education archives.</p>
<p><bold>2) Storage Server:</bold> As another main body in the EduASAC system, the storage server can provide educational institutions with services such as cryptographic storage of education archives, homomorphic cryptographic retrieval, and source data download. It can verify the identity legality of the data requestor and the authenticity of the access token on the chain and run the homomorphic ciphertext retrieval mechanism in the database after verification is passed.</p>
<p><bold>3) Government:</bold> The only authoritative entity in the field of education, with the force of law and administrative capacity. The government can be divided into three major departments: management, secrecy, and supervision. Different departments have different identities, different participation links, and different roles in the system. The following describes separately:
<list list-type="bullet">
<list-item><p><bold>Management Department:</bold> responsible for the off-chain verification of the identity information of the nodes requesting to join; able to assign the static access permission level of the system based on the identity information; publish the verified identity information and level on the chain, and initiate Vote Contract to count the opinions of the whole network on the new nodes joining the network; record all registration behaviors and voting results on the chain.</p></list-item>
<list-item><p><bold>Secrecy Department:</bold> responsible for re-encryption work of ciphertext data to ensure the security of the key.</p></list-item>
<list-item><p><bold>Supervision Department:</bold> for illegal member nodes, illegal system behavior, and illegal data sharing. Review, determine responsibility and punish illegal targets, and maintain the security and stability of the system.</p></list-item>
</list></p>
<p><bold>4) Blockchain:</bold> blockchain is the underlying technical architecture of the system and is responsible for promoting the network-wide voting process, verifying entity identity information, sharing system security parameters, enforcing data access control, and recording system behavior and data. The on-chain nodes are responsible for constructing new transactions from the uploaded, shared data, packaging them into blocks after verification, and recording all behaviors and data of the system as evidence of future review and accountability by the Supervision Department.</p>
<p>In addition to the system architecture briefly described above, to simplify the description of the scheme, this paper divides the system participants into two identity entities, i.e., Data Owners (DO) and Data Users (DU):
<list list-type="bullet">
<list-item><p>DO: It has the authority to manage, control, and share education records, is the owner of interests related to the data, and can set data access permission to control the scope of sharing.</p></list-item>
<list-item><p>DU: It requests targeted education archives from multiple parties according to individual needs and uses the data in various application scenarios.</p></list-item>
</list></p>
</sec>
<sec id="s3_2"><label>3.2</label><title>Threat Model and Goals</title>
<p>The threat model of the EduASAC system is divided into three levels:
<list list-type="bullet">
<list-item><p><bold>Data threat level:</bold> The data threat level defines that the attacker performs some illegal operations on the data without the data owner&#x2019;s knowledge or against the data owner&#x2019;s will, thereby endangering the privacy of the user&#x2019;s identity and the value of the data.</p></list-item>
<list-item><p><bold>Entity identity threat level:</bold> The entity identity threat level defines that attackers join the network with illegal identities or pretend to be legal identities and bring security threats to other legitimate users.</p></list-item>
<list-item><p><bold>System behavior threat level:</bold> The system behavior threat level defines the system or system entity, due to its own economic interests or software and hardware failures, does not operate following pre-consensus rules and terms, which affects the stability of the system operation.</p></list-item>
</list></p>
<p>This paper aims to achieve the following threat model goals:
<list list-type="bullet">
<list-item><p>The public key encryption algorithm is used to encrypt the data, and the private key is stored confidentially to ensure the security of the encrypted data; some sensitive data are stored on the chain, relying on the anti-tampering feature of the blockchain to ensure the integrity of the data.</p></list-item>
<list-item><p>The authoritative entity verifies the identity information off-chain, and allows new users to join by voting to ensure the fairness and openness of entity identity information; the smart contract automatically executes the process of storing entity identity information on the chain, ensuring that there is no manual intervention so that the entire network can query that identity information.</p></list-item>
<list-item><p>Record all system behaviors through smart contracts to ensure that system behaviors are auditable and traceable; the authoritative entity determines the system behavior threat level based on high-reliability records on the chain.</p></list-item>
</list></p>
</sec>
<sec id="s3_3"><label>3.3</label><title>Access Control Model</title>
<p>As a core module of the system architecture, access control is based on improving the ACE authorization framework, DAC, and MAC model, with enhanced security and availability as research objectives.</p>
<p>Internet Engineering Task Force (IETF) ACE [<xref ref-type="bibr" rid="ref-21">21</xref>] proposes a generic framework for authentication and authorization in restricted environments-an ACE based on OAuth 2.0 [<xref ref-type="bibr" rid="ref-26">26</xref>]. DO do not have the ability to control access by themselves and need to issue tokens through third-party authorization servers to control access to sensitive, protected resources. To securely distribute Tokens with access control capabilities must establish a secure channel between users and authorization servers to encrypt data and verify the identity or use technologies such as certificates and secret sharing. At the same time, the third-party authorization server that performs access control according to the user&#x2019;s wishes must be honest and trustworthy to ensure the authority and authenticity of the Token. These problems make the application of the ACE framework subject to multiple environmental constraints, with low security and availability. The research work in this paper uses blockchain instead of a third-party authorization server in the ACE framework, and smart contracts are responsible for generating access Tokens and storing them securely on the chain for other users to query and verify.</p>
<p>DAC means that the data owner can autonomously grant or withdraw access permissions for the object requesting access to the data. The research work in this paper uses an ACL to add, change, and delete user access permissions dynamically. It combines with MAC to improve access control management&#x2019;s flexibility, reduce access control mechanisms&#x2019; operating costs, and make the system scheme more robust and available.</p>
<p>MAC is a mandatory security attribute setting rules for all subjects, where the system decides whether the user can access according to the user&#x2019;s fixed security attributes. The research work in this paper adopts static permission levels as the fixed security attributes. They are collectively referred to as Static Access Control (SAC) below for ease of description. It can make up for the decentralized permission control ability of ACL. Because the system forcibly sets the static authority level, it has unchangeable and strong control characteristics and improves user permissions&#x2019; security.</p>
</sec>
<sec id="s3_4"><label>3.4</label><title>System Parameter</title>
<p>In this subsection, we define the designed system security parameters. The parameters include four Identity Documents (ID) of Data Owner <inline-formula id="ieqn-1"><mml:math id="mml-ieqn-1"><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>DO</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>, Data User <inline-formula id="ieqn-2"><mml:math id="mml-ieqn-2"><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>DU</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>, Data <inline-formula id="ieqn-3"><mml:math id="mml-ieqn-3"><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>data</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>, and Access Token <inline-formula id="ieqn-4"><mml:math id="mml-ieqn-4"><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>token</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>, two access control policies <inline-formula id="ieqn-5"><mml:math id="mml-ieqn-5"><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mtext>P</mml:mtext></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> of SAC and ACL, three mappings <inline-formula id="ieqn-6"><mml:math id="mml-ieqn-6"><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mtext>M</mml:mtext></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> of Verification Parameter Mapping <inline-formula id="ieqn-7"><mml:math id="mml-ieqn-7"><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mtext>MV</mml:mtext></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>, Retrieval Parameter Mapping <inline-formula id="ieqn-8"><mml:math id="mml-ieqn-8"><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mtext>MR</mml:mtext></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>, and Encryption Parameter Mapping <inline-formula id="ieqn-9"><mml:math id="mml-ieqn-9"><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mtext>ME</mml:mtext></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>, four smart contracts of Vote Contract, Mapping Contract, Access Control Contract, and Control List Contract, three attributes of <inline-formula id="ieqn-10"><mml:math id="mml-ieqn-10"><mml:mrow><mml:mtext>User</mml:mtext></mml:mrow></mml:math></inline-formula>, <inline-formula id="ieqn-11"><mml:math id="mml-ieqn-11"><mml:mrow><mml:mtext>Data</mml:mtext></mml:mrow></mml:math></inline-formula>, and <inline-formula id="ieqn-12"><mml:math id="mml-ieqn-12"><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:math></inline-formula> with the access token (Token). The used symbols are described in <xref ref-type="table" rid="table-1">Table 1</xref>. The above system parameters are defined as follows:
<disp-formula id="ueqn-1">
<mml:math id="mml-ueqn-1" display="block"><mml:mrow><mml:mtext>P</mml:mtext></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:mtext>SAC</mml:mtext></mml:mrow><mml:mo>,</mml:mo><mml:mtext>&#x00A0;</mml:mtext><mml:mrow><mml:mtext>ACL</mml:mtext></mml:mrow><mml:mo>}</mml:mo></mml:mrow></mml:math></disp-formula>
<disp-formula id="ueqn-2">
<mml:math id="mml-ueqn-2" display="block"><mml:mrow><mml:mtext>M</mml:mtext></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:mtext>MV</mml:mtext></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">M</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">M</mml:mi><mml:mi mathvariant="normal">E</mml:mi></mml:mrow><mml:mo>}</mml:mo></mml:mrow></mml:math></disp-formula>
<disp-formula id="ueqn-3">
<mml:math id="mml-ueqn-3" display="block"><mml:mrow><mml:mtext>MV</mml:mtext></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>DO</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="normal">I</mml:mi><mml:mi mathvariant="normal">D</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mtext>data</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">V</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:mrow><mml:mo>}</mml:mo></mml:mrow></mml:math></disp-formula>
<disp-formula id="ueqn-4">
<mml:math id="mml-ueqn-4" display="block"><mml:mrow><mml:mtext>MR</mml:mtext></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>DO</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="normal">I</mml:mi><mml:mi mathvariant="normal">D</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mtext>data</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">C</mml:mi></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>RK</mml:mtext></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>}</mml:mo></mml:mrow></mml:math></disp-formula>
<disp-formula id="ueqn-5">
<mml:math id="mml-ueqn-5" display="block"><mml:mrow><mml:mtext>ME</mml:mtext></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>DO</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="normal">I</mml:mi><mml:mi mathvariant="normal">D</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mtext>data</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">C</mml:mi></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>EP</mml:mtext></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>}</mml:mo></mml:mrow></mml:math></disp-formula>
<disp-formula id="ueqn-6">
<mml:math id="mml-ueqn-6" display="block"><mml:mrow><mml:mtext>User</mml:mtext></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>DO</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>DU</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">P</mml:mi><mml:mi mathvariant="normal">K</mml:mi></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">S</mml:mi><mml:mi mathvariant="normal">K</mml:mi></mml:mrow><mml:mo>,</mml:mo><mml:mtext>&#x00A0;</mml:mtext><mml:mrow><mml:mtext>Info</mml:mtext></mml:mrow><mml:mo>,</mml:mo><mml:mtext>&#x00A0;</mml:mtext><mml:mrow><mml:mtext>S</mml:mtext></mml:mrow><mml:mo>}</mml:mo></mml:mrow></mml:math></disp-formula>
<disp-formula id="ueqn-7">
<mml:math id="mml-ueqn-7" display="block"><mml:mrow><mml:mtext>Data</mml:mtext></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>data</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">V</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">R</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">E</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">K</mml:mi></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">D</mml:mi></mml:mrow><mml:mo>}</mml:mo></mml:mrow></mml:math></disp-formula>
<disp-formula id="ueqn-8">
<mml:math id="mml-ueqn-8" display="block"><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>token</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">C</mml:mi></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>RK</mml:mtext></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">C</mml:mi></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>EP</mml:mtext></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>}</mml:mo></mml:mrow></mml:math></disp-formula></p>
<table-wrap id="table-1"><label>Table 1</label><caption><title>Symbol descriptions</title></caption>
<table frame="hsides">
<colgroup>
<col align="left"/>
<col align="left"/>
</colgroup>
<thead>
<tr>
<th align="left">Name</th>
<th align="left">Meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">VP</td>
<td align="left">Security parameters used in the validation process</td>
</tr>
<tr>
<td align="left">RP</td>
<td align="left">Security parameters used in the retrieval process</td>
</tr>
<tr>
<td align="left">EP</td>
<td align="left">Security parameters used in the encryption process</td>
</tr>
<tr>
<td align="left">C (EP)</td>
<td align="left">EP is encrypted by the public key of the government secrecy department</td>
</tr>
<tr>
<td align="left">C (RK)</td>
<td align="left">RP and ciphertext keywords are encrypted by the public key of the storage server</td>
</tr>
<tr>
<td align="left">K</td>
<td align="left">Keywords</td>
</tr>
<tr>
<td align="left">C (K)</td>
<td align="left">Ciphertext keywords</td>
</tr>
<tr>
<td align="left">D</td>
<td align="left">Education archive data</td>
</tr>
<tr>
<td align="left">C (D)</td>
<td align="left">Education archive ciphertext data</td>
</tr>
<tr>
<td align="left">Info</td>
<td align="left">Node identity information, which needs to be authentic and legal for all nodes to verify</td>
</tr>
<tr>
<td align="left">S</td>
<td align="left">Static access permission level</td>
</tr>
<tr>
<td align="left">Message</td>
<td align="left">Formed by Info and S Packaging</td>
</tr>
</tbody>
</table>
<table-wrap-foot><fn id="tfn1_1"><p>Note: Security parameters include algorithm parameters and keys required in various workflows, and their values are safe and confidential.</p></fn>
</table-wrap-foot>
</table-wrap>
</sec>
<sec id="s3_5"><label>3.5</label><title>Workflow</title>
<p>As shown in <xref ref-type="fig" rid="fig-2">Fig. 2</xref>, the entire workflow of the system is divided into four parts. This section will detail the specific steps of each part, and the symbols are shown in <xref ref-type="table" rid="table-1">Table 1</xref>.
<list list-type="simple">
<list-item><label>1)</label><p><bold>Register</bold></p>
</list-item>
</list></p>
<fig id="fig-2"><label>Figure 2</label><caption><title>Workflow of EduASAC system</title></caption><graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_42000-fig-2.tif"/></fig>
<p>When an educational institution joins the network, it sends a registration application to the government. As the guide node, the Government Management Department verifies the identity information of the node off-chain and publishes it on the chain, and then initiates a Vote Contract to vote for the joining request of the new node by the nodes of the whole network.</p>
<p>Step 1 When an educational institution applies to enter the EduASAC system, it will send <inline-formula id="ieqn-13"><mml:math id="mml-ieqn-13"><mml:mrow><mml:mtext>Info</mml:mtext></mml:mrow></mml:math></inline-formula> to the government off-chain, including the institution&#x2019;s name, type, number, and relevant identity certificates. The Government Management Department is responsible for verifying the authenticity of the <inline-formula id="ieqn-14"><mml:math id="mml-ieqn-14"><mml:mrow><mml:mtext>Info</mml:mtext></mml:mrow></mml:math></inline-formula>.</p>
<p>Step 2 After the Government Management Department approves, the static node access level <inline-formula id="ieqn-15"><mml:math id="mml-ieqn-15"><mml:msub><mml:mrow><mml:mtext>S</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>Info</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> is allocated according to <inline-formula id="ieqn-16"><mml:math id="mml-ieqn-16"><mml:mrow><mml:mtext>Info</mml:mtext></mml:mrow></mml:math></inline-formula>. Pack <inline-formula id="ieqn-17"><mml:math id="mml-ieqn-17"><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:mtext>Info</mml:mtext></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">S</mml:mi></mml:mrow><mml:mo>}</mml:mo></mml:mrow></mml:math></inline-formula> into Message, forming a transaction and publishing it on the chain.</p>
<p><disp-formula id="eqn-1"><label>(1)</label><mml:math id="mml-eqn-1" display="block"><mml:mrow><mml:mtext>Build</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>Info</mml:mtext></mml:mrow><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="normal">S</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mtext>Info</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo stretchy="false">&#x2192;</mml:mo><mml:mrow><mml:mtext>Message</mml:mtext></mml:mrow></mml:math></disp-formula></p>
<p>Step 3 The Government Management Department calls Vote Contract to initiate an on-chain vote. The nodes of the entire network participate in the voting within the voting period, and the contract automatically counts the number of votes. If the consent vote exceeds 90&#x0025; of the total votes, the contract returns the Yes result and allows the new node to join; otherwise, it returns the Refuse result and rejects the new node.
<disp-formula id="eqn-2"><label>(2)</label><mml:math id="mml-eqn-2" display="block"><mml:mrow><mml:mtext>Vote</mml:mtext></mml:mrow><mml:mtext>&#x00A0;</mml:mtext><mml:mrow><mml:mtext>Contract</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>Message</mml:mtext></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo stretchy="false">&#x2192;</mml:mo><mml:mrow><mml:mtext>Yes</mml:mtext></mml:mrow><mml:mo stretchy="false">&#x2192;</mml:mo><mml:mrow><mml:mtext>join</mml:mtext></mml:mrow></mml:math></disp-formula>
<disp-formula id="eqn-3"><label>(3)</label><mml:math id="mml-eqn-3" display="block"><mml:mrow><mml:mtext>Vote</mml:mtext></mml:mrow><mml:mtext>&#x00A0;</mml:mtext><mml:mrow><mml:mtext>Contract</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>Message</mml:mtext></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo stretchy="false">&#x2192;</mml:mo><mml:mrow><mml:mtext>No</mml:mtext></mml:mrow><mml:mo stretchy="false">&#x2192;</mml:mo><mml:mrow><mml:mtext>refuse</mml:mtext></mml:mrow></mml:math></disp-formula></p>
<p>Step 4 Vote Contract will record the results on the chain after the voting is completed, providing valid evidence for the follow-up work such as review and accountability. Details are shown in <xref ref-type="table" rid="table-2">Table 2</xref>.</p>
<table-wrap id="table-2"><label>Table 2</label><caption><title>Voting result record</title></caption>
<table frame="hsides">
<colgroup>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
</colgroup>
<thead>
<tr>
<th align="left">Node ID</th>
<th align="left">Total number of votes participated</th>
<th align="left">Statistical results (Yes/No)</th>
<th align="left">Nodes allowed/denied to join</th>
<th align="left">Voting time (start/end)</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">2023010</td>
<td align="left">100</td>
<td align="left">98/2</td>
<td align="left">allowed</td>
<td align="left">20230101/20230901</td>
</tr>
<tr>
<td align="left">2023011</td>
<td align="left">200</td>
<td align="left">5/195</td>
<td align="left">denied</td>
<td align="left">20230521/20230721</td>
</tr>
<tr>
<td align="left"><bold>&#x2026;</bold></td>
<td align="left"><bold>&#x2026;</bold></td>
<td align="left"><bold>&#x2026;</bold></td>
<td align="left"><bold>&#x2026;</bold></td>
<td align="left"><bold>&#x2026;</bold></td>
</tr>
</tbody>
</table>
</table-wrap>
<p>Step 5 When a new educational institution joins the EduASAC system, it will act as a blockchain member node. Certificate Authority (CA) creates a certificate for it, generates a public key <inline-formula id="ieqn-18"><mml:math id="mml-ieqn-18"><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mtext>PK</mml:mtext></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula> and secret key <inline-formula id="ieqn-19"><mml:math id="mml-ieqn-19"><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mtext>SK</mml:mtext></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:math></inline-formula>, and deposits them in the wallet. <inline-formula id="ieqn-20"><mml:math id="mml-ieqn-20"><mml:mrow><mml:mtext>PK</mml:mtext></mml:mrow></mml:math></inline-formula> is published to the public as a blockchain address, a unique identifier on the chain of educational institutions to participate in or link to the blockchain network. <inline-formula id="ieqn-21"><mml:math id="mml-ieqn-21"><mml:mrow><mml:mtext>SK</mml:mtext></mml:mrow></mml:math></inline-formula> is secretly stored for transaction signatures or decryption of secret data.
<list list-type="simple">
<list-item><label>2)</label><p><bold>Data Management</bold></p></list-item>
</list></p>
<p>DO first processes the data with various algorithmic mechanisms for the education archives that must be uploaded to the storage server, generating parameters that participate in the sharing and access control process. Then DO invokes the Mapping Contract to establish three parameter mappings and store them securely on the chain for easy calling by other system entities when performing arithmetic operations on the data.</p>
<p>Step 1 DO generate parameters or keys <inline-formula id="ieqn-22"><mml:math id="mml-ieqn-22"><mml:mrow><mml:mtext>EP</mml:mtext></mml:mrow></mml:math></inline-formula>, <inline-formula id="ieqn-23"><mml:math id="mml-ieqn-23"><mml:mrow><mml:mtext>RP</mml:mtext></mml:mrow></mml:math></inline-formula> and <inline-formula id="ieqn-24"><mml:math id="mml-ieqn-24"><mml:mrow><mml:mtext>VP</mml:mtext></mml:mrow></mml:math></inline-formula> off-chain applying them to homomorphic encryption, ciphertext retrieval, and access control processes, respectively. The <inline-formula id="ieqn-25"><mml:math id="mml-ieqn-25"><mml:mrow><mml:mtext>VP</mml:mtext></mml:mrow></mml:math></inline-formula> settings are shown in <xref ref-type="table" rid="table-3">Table 3</xref>.
<disp-formula id="eqn-4"><label>(4)</label><mml:math id="mml-eqn-4" display="block"><mml:mrow><mml:mtext>Build</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>DO</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo stretchy="false">&#x2192;</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:mtext>VP</mml:mtext></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">R</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">E</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:mrow><mml:mo>}</mml:mo></mml:mrow></mml:math></disp-formula></p>
<table-wrap id="table-3"><label>Table 3</label><caption><title>VP settings</title></caption>
<table frame="hsides">
<colgroup>
<col align="left"/>
<col align="left"/>
</colgroup>
<thead>
<tr>
<th align="left">Parameter</th>
<th align="left">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">0</td>
<td align="left">No access control is required.</td>
</tr>
<tr>
<td align="left">1</td>
<td align="left">The access control process performs SAC only.</td>
</tr>
<tr>
<td align="left">2</td>
<td align="left">The access control process performs ACL only.</td>
</tr>
<tr>
<td align="left">3</td>
<td align="left">SAC and ACL run the access control process.</td>
</tr>
<tr>
<td align="left">Other</td>
<td align="left">Perform other access control procedures. This parameter represents other access control schemes or is used as a security parameter in a permission verification scheme.</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>Step 2 DO extract <inline-formula id="ieqn-26"><mml:math id="mml-ieqn-26"><mml:mrow><mml:mtext>n</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>n</mml:mtext></mml:mrow><mml:mo>&#x2265;</mml:mo><mml:mn>1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> keywords <inline-formula id="ieqn-27"><mml:math id="mml-ieqn-27"><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mo>&#x22EF;</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> from the education archive and set static access permission level <inline-formula id="ieqn-28"><mml:math id="mml-ieqn-28"><mml:msub><mml:mrow><mml:mtext>S</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>data</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> for the education archive.
<disp-formula id="eqn-5"><label>(5)</label><mml:math id="mml-eqn-5" display="block"><mml:mrow><mml:mtext>Build</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>data</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo stretchy="false">&#x2192;</mml:mo><mml:msub><mml:mrow><mml:mtext>S</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>data</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></disp-formula></p>
<p>Step 3 DO homomorphically encrypts the education archive with <inline-formula id="ieqn-29"><mml:math id="mml-ieqn-29"><mml:mrow><mml:mtext>EP</mml:mtext></mml:mrow></mml:math></inline-formula> and sends it to the storage server; homomorphically encrypts the keywords with the same <inline-formula id="ieqn-30"><mml:math id="mml-ieqn-30"><mml:mrow><mml:mtext>EP</mml:mtext></mml:mrow></mml:math></inline-formula>; encrypts the <inline-formula id="ieqn-31"><mml:math id="mml-ieqn-31"><mml:mrow><mml:mtext>EP</mml:mtext></mml:mrow></mml:math></inline-formula> with <inline-formula id="ieqn-32"><mml:math id="mml-ieqn-32"><mml:mrow><mml:mtext>PK</mml:mtext></mml:mrow></mml:math></inline-formula> of the Government Secrecy Department to get <inline-formula id="ieqn-33"><mml:math id="mml-ieqn-33"><mml:mrow><mml:mtext>C</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>EP</mml:mtext></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>; for the ciphertext keyword list and <inline-formula id="ieqn-34"><mml:math id="mml-ieqn-34"><mml:mrow><mml:mtext>RP</mml:mtext></mml:mrow></mml:math></inline-formula>, encrypt them with <inline-formula id="ieqn-35"><mml:math id="mml-ieqn-35"><mml:mrow><mml:mtext>PK</mml:mtext></mml:mrow></mml:math></inline-formula> of the storage server to form <inline-formula id="ieqn-36"><mml:math id="mml-ieqn-36"><mml:mrow><mml:mtext>C</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>RK</mml:mtext></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. This step is the data processing process, the algorithmic process runs off-chain, and the computing process can be changed according to the system scheme design.
<disp-formula id="eqn-6"><label>(6)</label><mml:math id="mml-eqn-6" display="block"><mml:mrow><mml:mtext>Encrypt</mml:mtext></mml:mrow><mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>D</mml:mtext></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mrow><mml:mtext>EP</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo stretchy="false">&#x2192;</mml:mo><mml:mrow><mml:mtext>C</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>D</mml:mtext></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:math></disp-formula>
<disp-formula id="eqn-7"><label>(7)</label><mml:math id="mml-eqn-7" display="block"><mml:mrow><mml:mtext>Encrypt</mml:mtext></mml:mrow><mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mtext>&#x00A0;</mml:mtext><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub><mml:mo>&#x22EF;</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mrow><mml:mtext>EP</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo stretchy="false">&#x2192;</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:mtext>C</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">C</mml:mi></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">C</mml:mi></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>&#x22EF;</mml:mo><mml:mrow><mml:mtext>C</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>}</mml:mo></mml:mrow></mml:math></disp-formula>
<disp-formula id="eqn-8"><label>(8)</label><mml:math id="mml-eqn-8" display="block"><mml:mrow><mml:mtext>Encrypt</mml:mtext></mml:mrow><mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>EP</mml:mtext></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mrow><mml:mtext>PK</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo stretchy="false">&#x2192;</mml:mo><mml:mrow><mml:mtext>C</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>EP</mml:mtext></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:math></disp-formula>
<disp-formula id="eqn-9"><label>(9)</label><mml:math id="mml-eqn-9" display="block"><mml:mrow><mml:mtext>Encrypt</mml:mtext></mml:mrow><mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>C</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">C</mml:mi></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">C</mml:mi></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>&#x22EF;</mml:mo><mml:mrow><mml:mtext>C</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">R</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mrow><mml:mtext>PK</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo stretchy="false">&#x2192;</mml:mo><mml:mrow><mml:mtext>C</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>RK</mml:mtext></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:math></disp-formula></p>
<p>Step 4 DO invokes Mapping Contract to establish <inline-formula id="ieqn-37"><mml:math id="mml-ieqn-37"><mml:mrow><mml:mtext>ME</mml:mtext></mml:mrow></mml:math></inline-formula>, <inline-formula id="ieqn-38"><mml:math id="mml-ieqn-38"><mml:mrow><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula>, and <inline-formula id="ieqn-39"><mml:math id="mml-ieqn-39"><mml:mrow><mml:mtext>MV</mml:mtext></mml:mrow></mml:math></inline-formula> and stores the three mapping on the chain. Different mappings will be used in different system entities and steps, effectively reducing the correlation between algorithm parameters and keys and facilitating system management and sharing.
<disp-formula id="eqn-10"><label>(10)</label><mml:math id="mml-eqn-10" display="block"><mml:mrow><mml:mtext>Build</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>DO</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="normal">I</mml:mi><mml:mi mathvariant="normal">D</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mtext>data</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">C</mml:mi></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>EP</mml:mtext></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo stretchy="false">&#x2192;</mml:mo><mml:mrow><mml:mtext>ME</mml:mtext></mml:mrow></mml:math></disp-formula>
<disp-formula id="eqn-11"><label>(11)</label><mml:math id="mml-eqn-11" display="block"><mml:mrow><mml:mtext>Build</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>DO</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="normal">I</mml:mi><mml:mi mathvariant="normal">D</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mtext>data</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">C</mml:mi></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>RK</mml:mtext></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo stretchy="false">&#x2192;</mml:mo><mml:mrow><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></disp-formula>
<disp-formula id="eqn-12"><label>(12)</label><mml:math id="mml-eqn-12" display="block"><mml:mrow><mml:mtext>Build</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>DO</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="normal">I</mml:mi><mml:mi mathvariant="normal">D</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mtext>data</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">V</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:mrow><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="normal">S</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mtext>data</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo stretchy="false">&#x2192;</mml:mo><mml:mrow><mml:mtext>MV</mml:mtext></mml:mrow></mml:math></disp-formula>
<list list-type="simple">
<list-item><label>3)</label><p><bold>Access Control</bold></p></list-item>
</list></p>
<p>The access control process of the EduASAC contains SAC, ACL, or other access control mechanisms to realize DO fine-grained access control education archives.</p>
<p>Step 1 DO calls Control List Contract as needed to set data access permissions on the chain. The process will be matched to the <inline-formula id="ieqn-40"><mml:math id="mml-ieqn-40"><mml:mrow><mml:mtext>VP</mml:mtext></mml:mrow></mml:math></inline-formula> values, as shown in <xref ref-type="table" rid="table-2">Table 2</xref>.
<disp-formula id="eqn-13"><label>(13)</label><mml:math id="mml-eqn-13" display="block"><mml:mrow><mml:mtext>Build</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>DO</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="normal">I</mml:mi><mml:mi mathvariant="normal">D</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mtext>data</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo stretchy="false">&#x2192;</mml:mo><mml:mrow><mml:mtext>P</mml:mtext></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:mtext>SAC</mml:mtext></mml:mrow><mml:mo>,</mml:mo><mml:mtext>&#x00A0;</mml:mtext><mml:mrow><mml:mtext>ACL</mml:mtext></mml:mrow><mml:mo>}</mml:mo></mml:mrow></mml:math></disp-formula>
<list list-type="bullet">
<list-item><p>SAC: the <inline-formula id="ieqn-41"><mml:math id="mml-ieqn-41"><mml:msub><mml:mrow><mml:mtext>S</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>data</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> of the data has been set when DO creates the <inline-formula id="ieqn-42"><mml:math id="mml-ieqn-42"><mml:mrow><mml:mtext>MV</mml:mtext></mml:mrow></mml:math></inline-formula> of the education archive. The <inline-formula id="ieqn-43"><mml:math id="mml-ieqn-43"><mml:msub><mml:mrow><mml:mtext>S</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>Info</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> of educational institutions has been configured by government management according to the <inline-formula id="ieqn-44"><mml:math id="mml-ieqn-44"><mml:mrow><mml:mtext>Info</mml:mtext></mml:mrow></mml:math></inline-formula> of educational institutions and voted by the member nodes of the whole network.</p>
</list-item>
<list-item><p>ACL: realize adding, updating, deleting, and querying dynamic access list. The dynamic access list is divided into Dynamic Allowed Access List (DAAL), Dynamic Denied Access List (DDAL):
<list list-type="alpha-lower">
<list-item><p>DAAL: can be used in the separate ACL process, allowing only the allowed objects set by DO in the list to share data; can be used in the ACL and SAC co-working process, which is for users with low static access permission level, and DO adds their information to DAAL to give them additional access permissions. See <xref ref-type="table" rid="table-4">Table 4</xref>.</p>
</list-item></list></p></list-item></list></p>
<table-wrap id="table-4"><label>Table 4</label><caption><title>Dynamic allowed access list</title></caption>
<table frame="hsides">
<colgroup>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
</colgroup>
<thead>
<tr>
<th align="left">ID<sub>data</sub></th>
<th align="left">ID<sub>DO</sub></th>
<th align="left">PK of the user allowed accessing</th>
<th align="left">Validity period</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">20239111</td>
<td align="left">20230001</td>
<td align="left">AAAC3Nzax1459dAeRfs&#x2026;</td>
<td align="left">20231231</td>
</tr>
<tr>
<td align="left">20239112</td>
<td align="left">20230002</td>
<td align="left">GBn1eGHL5478E9F457R&#x2026;</td>
<td align="left">20240101</td>
</tr>
<tr>
<td align="left"><bold>&#x2026;</bold></td>
<td align="left">&#x2026;</td>
<td align="left">&#x2026;</td>
<td align="left">&#x2026;</td>
</tr>
</tbody>
</table>
</table-wrap>
<list list-type="simple">
<list-item>
<list list-type="simple">
<list-item><label>b.</label><p>DDAL: serves SAC and will allow DO to deny access to users with high static access permission levels. See <xref ref-type="table" rid="table-5">Table 5</xref>.</p>
</list-item></list></list-item></list>
<table-wrap id="table-5"><label>Table 5</label><caption><title>Dynamic denied access list</title></caption>
<table frame="hsides">
<colgroup>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
</colgroup>
<thead>
<tr>
<th align="left">ID<sub>data</sub></th>
<th align="left">ID<sub>DO</sub></th>
<th align="left">PK of the user denied accessing</th>
<th align="left">Validity period</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">20230312</td>
<td align="left">20231001</td>
<td align="left">RdnfG45efe85Gfge4584G&#x2026;</td>
<td align="left">20240501</td>
</tr>
<tr>
<td align="left">20230313</td>
<td align="left">20231002</td>
<td align="left">L14Gh54eGi8feges87g4fg&#x2026;</td>
<td align="left">20241231</td>
</tr>
<tr>
<td align="left"><bold>&#x2026;</bold></td>
<td align="left">&#x2026;</td>
<td align="left">&#x2026;</td>
<td align="left">&#x2026;</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>Step 2 DU calls the Access Control Contract to request access to the target data. The contract validates DU access permissions according to DO&#x2019;s access control management of the data. When the access permissions are verified, the contract generates Tokens and forms blockchain transactions stored on the chain.
<disp-formula id="eqn-14"><label>(14)</label><mml:math id="mml-eqn-14" display="block"><mml:mrow><mml:mtext>Access</mml:mtext></mml:mrow><mml:mtext>&#x00A0;</mml:mtext><mml:mrow><mml:mtext>Control</mml:mtext></mml:mrow><mml:mtext>&#x00A0;</mml:mtext><mml:mrow><mml:mtext>Contract</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>DU</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="normal">I</mml:mi><mml:mi mathvariant="normal">D</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mtext>data</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo stretchy="false">&#x2192;</mml:mo><mml:mrow><mml:mtext>Token</mml:mtext></mml:mrow></mml:math></disp-formula></p>
<p>Step 3 Access Control Contract will record the access control process and results for review and accountability by the Government Supervision Department. The access control information records are shown in <xref ref-type="table" rid="table-6">Table 6</xref>.
<list list-type="simple">
<list-item><label>4)</label><p><bold>Data Sharing</bold></p></list-item>
</list></p>
<table-wrap id="table-6"><label>Table 6</label><caption><title>Access control information record</title></caption>
<table frame="hsides">
<colgroup>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
</colgroup>
<thead>
<tr>
<th align="left">ID<sub>DU</sub></th>
<th align="left">ID<sub>data</sub></th>
<th align="left">Access control policy</th>
<th align="left">Whether the Token has been issued (ID<sub>token</sub>)</th>
<th align="left">Request/Response time (Request, issue Token time)</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">20232001</td>
<td align="left">20235311</td>
<td align="left">SAC</td>
<td align="left">2023645001</td>
<td align="left">20230901/20230901</td>
</tr>
<tr>
<td align="left">20232002</td>
<td align="left">20236312</td>
<td align="left">ACL</td>
<td align="left">2023645002</td>
<td align="left">20230912/20230912</td>
</tr>
<tr>
<td align="left">&#x2026;</td>
<td align="left">&#x2026;</td>
<td align="left">&#x2026;</td>
<td align="left">&#x2026;</td>
<td align="left">&#x2026;</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>Step 1 DU sends <inline-formula id="ieqn-45"><mml:math id="mml-ieqn-45"><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>DU</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> and <inline-formula id="ieqn-46"><mml:math id="mml-ieqn-46"><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>data</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> to the storage server on the chain, requesting <inline-formula id="ieqn-47"><mml:math id="mml-ieqn-47"><mml:mrow><mml:mtext>C</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>D</mml:mtext></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>.</p>
<p>Step 2 The storage server queries the Token and verifies the validity according to the correspondence of <inline-formula id="ieqn-48"><mml:math id="mml-ieqn-48"><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>DU</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>, <inline-formula id="ieqn-49"><mml:math id="mml-ieqn-49"><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>data</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>, and <inline-formula id="ieqn-50"><mml:math id="mml-ieqn-50"><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>token</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> stored on the chain. After passing, <inline-formula id="ieqn-51"><mml:math id="mml-ieqn-51"><mml:mrow><mml:mtext>SK</mml:mtext></mml:mrow></mml:math></inline-formula> is used to decrypt some parameters of the Token to obtain <inline-formula id="ieqn-52"><mml:math id="mml-ieqn-52"><mml:mrow><mml:mtext>RP</mml:mtext></mml:mrow></mml:math></inline-formula>, <inline-formula id="ieqn-53"><mml:math id="mml-ieqn-53"><mml:mrow><mml:mtext>C</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>K</mml:mtext></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>; the homomorphic ciphertext retrieval mechanism is run to get <inline-formula id="ieqn-54"><mml:math id="mml-ieqn-54"><mml:mrow><mml:mtext>C</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>D</mml:mtext></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> returned to DU.
<disp-formula id="eqn-15"><label>(15)</label><mml:math id="mml-eqn-15" display="block"><mml:mrow><mml:mtext>Decrypt</mml:mtext></mml:mrow><mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>C</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>RK</mml:mtext></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mrow><mml:mtext>SK</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo stretchy="false">&#x2192;</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:mtext>C</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">C</mml:mi></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">C</mml:mi></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>&#x22EF;</mml:mo><mml:mrow><mml:mtext>C</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">R</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:mrow><mml:mo>}</mml:mo></mml:mrow></mml:math></disp-formula>
<disp-formula id="eqn-16"><label>(16)</label><mml:math id="mml-eqn-16" display="block"><mml:mrow><mml:mtext>Retrieval</mml:mtext></mml:mrow><mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>C</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">C</mml:mi></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mi mathvariant="normal">C</mml:mi></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>&#x22EF;</mml:mo><mml:mrow><mml:mtext>C</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mrow><mml:mtext>RP</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo stretchy="false">&#x2192;</mml:mo><mml:mrow><mml:mtext>C</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>D</mml:mtext></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo stretchy="false">&#x2192;</mml:mo><mml:mrow><mml:mtext>DU</mml:mtext></mml:mrow></mml:math></disp-formula></p>
<p>Step 3 DU sends <inline-formula id="ieqn-55"><mml:math id="mml-ieqn-55"><mml:mrow><mml:mtext>C</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>D</mml:mtext></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> through the off-chain secure channel to the Government Secrecy Department to request a re-encryption process to obtain <inline-formula id="ieqn-56"><mml:math id="mml-ieqn-56"><mml:mrow><mml:mtext>D</mml:mtext></mml:mrow></mml:math></inline-formula>. This step aims to reduce the range of key sharing and improve key security.</p>
<p>Step 4 According to the correspondence of <inline-formula id="ieqn-57"><mml:math id="mml-ieqn-57"><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>DU</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>, <inline-formula id="ieqn-58"><mml:math id="mml-ieqn-58"><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>data</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> and <inline-formula id="ieqn-59"><mml:math id="mml-ieqn-59"><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>token</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> stored on the chain, the Government Secrecy Department queries the Token and verifies the validity; after passing, decrypts some parameters of the Token to obtain <inline-formula id="ieqn-60"><mml:math id="mml-ieqn-60"><mml:mrow><mml:mtext>EP</mml:mtext></mml:mrow></mml:math></inline-formula> using <inline-formula id="ieqn-61"><mml:math id="mml-ieqn-61"><mml:mrow><mml:mtext>SK</mml:mtext></mml:mrow></mml:math></inline-formula>; runs the re-encryption process and returns the DU decryptable education archive. The re-encryption process is that the Government Secrecy Department Decrypts <inline-formula id="ieqn-62"><mml:math id="mml-ieqn-62"><mml:mrow><mml:mtext>C</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>D</mml:mtext></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> with <inline-formula id="ieqn-63"><mml:math id="mml-ieqn-63"><mml:mrow><mml:mtext>EP</mml:mtext></mml:mrow></mml:math></inline-formula>, then queries <inline-formula id="ieqn-64"><mml:math id="mml-ieqn-64"><mml:mrow><mml:mtext>PK</mml:mtext></mml:mrow></mml:math></inline-formula> of DU on the chain, and re-encrypts the education archive back to DU.
<disp-formula id="eqn-17"><label>(17)</label><mml:math id="mml-eqn-17" display="block"><mml:mrow><mml:mtext>Decrypt</mml:mtext></mml:mrow><mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>C</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>EP</mml:mtext></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mrow><mml:mtext>SK</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo stretchy="false">&#x2192;</mml:mo><mml:mrow><mml:mtext>EP</mml:mtext></mml:mrow></mml:math></disp-formula>
<disp-formula id="eqn-18"><label>(18)</label><mml:math id="mml-eqn-18" display="block"><mml:mrow><mml:mtext>Decrypt</mml:mtext></mml:mrow><mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>C</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>D</mml:mtext></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mrow><mml:mtext>EP</mml:mtext></mml:mrow></mml:mrow></mml:msub><mml:mo stretchy="false">&#x2192;</mml:mo><mml:mrow><mml:mtext>D</mml:mtext></mml:mrow></mml:math></disp-formula></p>
<p>Step 5 DU uses <inline-formula id="ieqn-65"><mml:math id="mml-ieqn-65"><mml:mrow><mml:mtext>SK</mml:mtext></mml:mrow></mml:math></inline-formula> to decrypt the education archives of the cryptographic state.</p>
</sec>
<sec id="s3_6"><label>3.6</label><title>Homomorphic Ciphertext Retrieval Module</title>
<p>The ciphertext retrieval scheme [<xref ref-type="bibr" rid="ref-27">27</xref>] based on a homomorphic encryption algorithm was first proposed by BONEH [<xref ref-type="bibr" rid="ref-28">28</xref>], and it is based on Difficulties in cryptography. The strategy is to obtain retrieval results by comparing homomorphic ciphertext and ciphertext keywords with high data security and retrieval efficiency. The EduASAC system proposed in this paper can be used with most homomorphic ciphertext retrieval schemes running on storage servers to achieve decentralized fine-grained access control and efficient data sharing.</p>
<p>Homomorphic encryption schemes generally consist of four Probabilistic Polynomial Time (PPT) algorithms [<xref ref-type="bibr" rid="ref-29">29</xref>]. The specific content is as follows:
<list list-type="simple">
<list-item><label>1)</label><p>Key generation algorithm (KeyGen). Input security parameters and public parameters that meet other actual needs and can output the encryption key (public key), the decryption key (private key), and the public key used for homomorphic ciphertext calculation.</p></list-item>
<list-item><label>2)</label><p>Encryption algorithm (Encrypt). Input the plaintext and encryption key and output the ciphertext result of the encryption operation. Among them is a one-to-one correspondence between plaintext and ciphertext, and the ciphertext results obtained by encrypting the same plaintext are different.</p></list-item>
<list-item><label>3)</label><p>Decryption algorithm (Decrypt). Input the ciphertext and decryption key and output the plaintext result of the decryption operation.</p></list-item>
<list-item><label>4)</label><p>Homomorphic computing algorithm (Evaluate). It is a homomorphic correctness verification algorithm, which does not involve any system modules in this paper, and the specific process is omitted.</p></list-item>
</list></p>
<p>In the workflow shown in <xref ref-type="fig" rid="fig-2">Fig. 2</xref>, Mark 2.1 corresponds to KeyGen (). DO generates keys and security parameters of the homomorphic encryption algorithm. Mark 2.2 is DO extracts keywords from archives. Mark 2.3 corresponds to Encrypt (), DO encrypts education archives and keywords and uploads them to the storage server and blockchain. Mark 4.4 corresponds to Decrypt (), the government department decrypts education archives, performs re-encryption operations, and then shares them with DU. Mark 4.2 corresponds to the homomorphic ciphertext retrieval algorithm Retrieval (), which is run independently by the storage server. The above steps are all run off-chain. It can effectively reduce the amount of computation on the chain, improve the system&#x2019;s scalability, enable the system framework to be used in conjunction with most homomorphic ciphertext retrieval schemes, and meet the different needs of different retrieval schemes for access control.</p>
<p>The EduASAC system provides the following services for the homomorphic ciphertext retrieval mechanism:
<list list-type="simple">
<list-item><label>1)</label><p>For the key and security parameter <inline-formula id="ieqn-66"><mml:math id="mml-ieqn-66"><mml:mrow><mml:mtext>EP</mml:mtext></mml:mrow></mml:math></inline-formula> of the homomorphic encryption algorithm, it is packaged to form <inline-formula id="ieqn-67"><mml:math id="mml-ieqn-67"><mml:mrow><mml:mtext>ME</mml:mtext></mml:mrow></mml:math></inline-formula> and stored on the chain.</p></list-item>
<list-item><label>2)</label><p>For the ciphertext keywords after homomorphic encryption, they are packaged together with the retrieval security parameter <inline-formula id="ieqn-68"><mml:math id="mml-ieqn-68"><mml:mrow><mml:mtext>RP</mml:mtext></mml:mrow></mml:math></inline-formula> to form <inline-formula id="ieqn-69"><mml:math id="mml-ieqn-69"><mml:mrow><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula> and stored on the chain.</p></list-item>
<list-item><label>3)</label><p>For the educational archives stored on the storage server, the access control management of SAC and ACL is carried out based on the blockchain network, and the retrieval permission can be verified before running the homomorphic ciphertext retrieval mechanism.</p></list-item>
<list-item><label>4)</label><p>Blockchain implements access control on the DU that requests the retrieval data service, calls the contract to verify the DU&#x2019;s retrieval permission, and automatically generates a Token and stores it on the chain. Token indicates the access permission of DU and provides corresponding parameters for the subsequent retrieval and decryption process.</p></list-item>
</list></p>
<p>The above content can be set according to user needs and the homomorphic ciphertext retrieval scheme. For example, the generation algorithm of the key and security parameter <inline-formula id="ieqn-70"><mml:math id="mml-ieqn-70"><mml:mrow><mml:mtext>EP</mml:mtext></mml:mrow></mml:math></inline-formula> is set according to the homomorphic encryption scheme; when the homomorphic ciphertext retrieval process does not require additional security parameters, there is no <inline-formula id="ieqn-71"><mml:math id="mml-ieqn-71"><mml:mrow><mml:mtext>RP</mml:mtext></mml:mrow></mml:math></inline-formula> setting; DO implement different levels of access control for different education archives and users.</p>
</sec>
</sec>
<sec id="s4"><label>4</label><title>Smart Contract Design</title>
<p>The EduASAC system uses smart contract technology to control the system&#x2019;s workflow, that is, the process of education archive sharing and access control. This section details four kinds of smart contracts: Vote Contract, Mapping Contract, Control List Contract, and Access Control Contract, and their associated algorithms and logic interfaces.</p>
<sec id="s4_1"><label>4.1</label><title>Vote Contract</title>
<p>The Government Management Department invokes the Contract and can initiate the voting of the entire network nodes on the educational institutions applying to join the network. After the voting, the Contract will automatically count the votes, return the information of allowing or rejecting the joining request, and record the voting results in a table on the chain, see <xref ref-type="table" rid="table-2">Table 2</xref> in the previous section. The specific content of the Contract is as follows:</p>
<p><italic>VoteInstitution</italic>(): As shown in Algorithm 1, member nodes vote before the voting deadline. Info is the identity information of the voting node. Nodes vote for the Info included in the AccessmemberMap mapping and against the Info in the RefusememberMap mapping. Both mapping records will be uploaded to the chain. The two-mapping records deadline is the voting period, a fixed value stipulated and released by the Government Management Department on the chain.</p>
<fig id="fig-11">
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_42000-fig-11.tif"/>
</fig>
<fig id="fig-12">
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_42000-fig-12.tif"/>
</fig>
<fig id="fig-13">
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_42000-fig-13.tif"/>
</fig>
<p><bold>typedefine &#x003C;Struct&#x003E;</bold> <inline-formula id="ieqn-101"><mml:math id="mml-ieqn-101"><mml:mrow><mml:mi mathvariant="bold">I</mml:mi><mml:mi mathvariant="bold">n</mml:mi><mml:mi mathvariant="bold">f</mml:mi><mml:mi mathvariant="bold">o</mml:mi></mml:mrow></mml:math></inline-formula><bold>&#x007B;</bold></p>
<p>&#x2002;&#x2002;<inline-formula id="ieqn-102"><mml:math id="mml-ieqn-102"><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow></mml:math></inline-formula>: String.</p>
<p>&#x2002;&#x2002;<inline-formula id="ieqn-103"><mml:math id="mml-ieqn-103"><mml:mrow><mml:mtext>Publickey</mml:mtext></mml:mrow></mml:math></inline-formula>: String.</p>
<p>&#x2002;&#x2002;<inline-formula id="ieqn-104"><mml:math id="mml-ieqn-104"><mml:mrow><mml:mtext>Verification</mml:mtext></mml:mrow></mml:math></inline-formula>: String.</p>
<p>&#x2002;&#x2002;<inline-formula id="ieqn-105"><mml:math id="mml-ieqn-105"><mml:mrow><mml:mtext>Level</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>S</mml:mi><mml:mrow><mml:mi>I</mml:mi><mml:mi>n</mml:mi><mml:mi>f</mml:mi><mml:mi>o</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>: String.<bold>&#x007D;</bold></p>
<p><italic>VoteCounting</italic>(): As shown in Algorithm 2, after the voting deadline, the votes are counted. When the approval votes account for more than 90&#x0025; of the total votes, new nodes are allowed to join. Otherwise, the joining request is rejected. The percentage of votes allowed to join can be changed according to actual needs.</p>
<p><italic>institutionMap</italic>(): As shown in Algorithm 3, this function describes the process of establishing a mapping between <inline-formula id="ieqn-106"><mml:math id="mml-ieqn-106"><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow></mml:math></inline-formula> and <inline-formula id="ieqn-107"><mml:math id="mml-ieqn-107"><mml:mrow><mml:mtext>Info</mml:mtext></mml:mrow></mml:math></inline-formula>, which is executed by newly joined member nodes to initialize their official information and provide parameter records for the subsequent process of verifying user identity.</p>
<p><italic>isExitInstitution</italic>(): This function checks whether the educational institution applying to join already exists in the network to prevent the internal nodes from sending many requests to affect the system&#x2019;s proper operation.</p>
<p><italic>addVoteCase</italic>()/<italic>queryVoteCase</italic>(): Upload or query events that require member nodes to vote, including the id, name, content, time limit, and the number of votes in favor and against. In the initial state, the number of votes in favor and against is 0; after the voting, this value is the final result provided to <italic>VoteCounting</italic>() for calculation.</p>
</sec>
<sec id="s4_2"><label>4.2</label><title>Mapping Contract</title>
<p>This Contract is invoked by DO, who uploads education archives and hopes to share them with other users, to establish three parameter mapping: <inline-formula id="ieqn-108"><mml:math id="mml-ieqn-108"><mml:mrow><mml:mtext>ME</mml:mtext></mml:mrow></mml:math></inline-formula>, <inline-formula id="ieqn-109"><mml:math id="mml-ieqn-109"><mml:mrow><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula>, and <inline-formula id="ieqn-110"><mml:math id="mml-ieqn-110"><mml:mrow><mml:mtext>MV</mml:mtext></mml:mrow></mml:math></inline-formula>. It can associate DO identity information, education archives information, and parameters required for system work and serve the homomorphic ciphertext retrieval, access control, and re-encryption process. DO initiates the Contract, and its blockchain address needs to match the input <inline-formula id="ieqn-111"><mml:math id="mml-ieqn-111"><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>DO</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula> so that the Contract can normally execute the process of establishing, updating, deleting, and querying parameter mapping. The specific content of the Contract is as follows.</p>
<fig id="fig-14">
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_42000-fig-14.tif"/>
</fig>
<fig id="fig-15">
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_42000-fig-15.tif"/>
</fig>
<fig id="fig-16">
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_42000-fig-16.tif"/>
</fig>
<fig id="fig-17">
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_42000-fig-17.tif"/>
</fig>
<p><italic>initVerifyMap</italic>()/<italic>initRetrievalMap</italic>()/<italic>initEncryptMap</italic>(): Establish validation parameter mapping, retrieval parameter mapping and encryption parameter mapping process, as shown in Algorithm 4. The same input parameters of the three functions are the IDs of DO and data, and the different input parameters are <inline-formula id="ieqn-189"><mml:math id="mml-ieqn-189"><mml:mrow><mml:mtext>VP</mml:mtext></mml:mrow></mml:math></inline-formula> and <inline-formula id="ieqn-190"><mml:math id="mml-ieqn-190"><mml:msub><mml:mrow><mml:mtext>S</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>data</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>, <inline-formula id="ieqn-191"><mml:math id="mml-ieqn-191"><mml:mrow><mml:mtext>C</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>RK</mml:mtext></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, and <inline-formula id="ieqn-192"><mml:math id="mml-ieqn-192"><mml:mrow><mml:mtext>C</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>EP</mml:mtext></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>.</p>
<p><bold>typedefine &#x003C;Struct&#x003E;</bold> <inline-formula id="ieqn-193"><mml:math id="mml-ieqn-193"><mml:mrow><mml:mtext mathvariant="bold">VerifyPara</mml:mtext></mml:mrow></mml:math></inline-formula><bold>&#x007B;</bold></p>
<p>&#x2002;&#x2002;<inline-formula id="ieqn-194"><mml:math id="mml-ieqn-194"><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>DO</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>: String.</p>
<p>&#x2002;&#x2002;<inline-formula id="ieqn-195"><mml:math id="mml-ieqn-195"><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>data</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>: String.</p>
<p>&#x2002;&#x2002;<inline-formula id="ieqn-196"><mml:math id="mml-ieqn-196"><mml:mrow><mml:mtext>Validation</mml:mtext></mml:mrow><mml:mtext>&#x00A0;</mml:mtext><mml:mrow><mml:mtext>parameter</mml:mtext></mml:mrow></mml:math></inline-formula>: String.</p>
<p>&#x2002;&#x2002;<inline-formula id="ieqn-197"><mml:math id="mml-ieqn-197"><mml:mrow><mml:mtext>Level</mml:mtext></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>S</mml:mi><mml:mrow><mml:mi>d</mml:mi><mml:mi>a</mml:mi><mml:mi>t</mml:mi><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>: String.<bold>&#x007D;</bold></p>
<p><bold>typedefine &#x003C;Struct&#x003E;</bold> <inline-formula id="ieqn-198"><mml:math id="mml-ieqn-198"><mml:mrow><mml:mtext mathvariant="bold">EncryptPara</mml:mtext></mml:mrow></mml:math></inline-formula><bold>&#x007B;</bold></p>
<p>&#x2002;&#x2002;<inline-formula id="ieqn-199"><mml:math id="mml-ieqn-199"><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>DO</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>: String.</p>
<p>&#x2002;&#x2002;<inline-formula id="ieqn-200"><mml:math id="mml-ieqn-200"><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>data</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>: String.</p>
<p>&#x2002;&#x2002;<inline-formula id="ieqn-201"><mml:math id="mml-ieqn-201"><mml:mrow><mml:mtext>Encryption</mml:mtext></mml:mrow><mml:mtext>&#x00A0;</mml:mtext><mml:mrow><mml:mtext>parameter</mml:mtext></mml:mrow></mml:math></inline-formula>: String.<bold>&#x007D;</bold></p>
<p><bold>typedefine &#x003C;Struct&#x003E;</bold> <inline-formula id="ieqn-202"><mml:math id="mml-ieqn-202"><mml:mrow><mml:mtext mathvariant="bold">RetrievalPara</mml:mtext></mml:mrow></mml:math></inline-formula><bold>&#x007B;</bold></p>
<p>&#x2002;&#x2002;<inline-formula id="ieqn-203"><mml:math id="mml-ieqn-203"><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>DO</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>: String.</p>
<p>&#x2002;&#x2002;<inline-formula id="ieqn-204"><mml:math id="mml-ieqn-204"><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>data</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>: String.</p>
<p>&#x2002;&#x2002;<inline-formula id="ieqn-205"><mml:math id="mml-ieqn-205"><mml:mrow><mml:mtext>Retrieval</mml:mtext></mml:mrow><mml:mtext>&#x00A0;</mml:mtext><mml:mrow><mml:mtext>parameter</mml:mtext></mml:mrow></mml:math></inline-formula>: String.<bold>&#x007D;</bold></p>
<p><italic>updateVerifyMap</italic>()/<italic>updateRetrievalMap</italic>()/<italic>updateEncryptMap</italic>(): It is the same as the input of establishing the mapping function, and the old mapping is overwritten with <inline-formula id="ieqn-206"><mml:math id="mml-ieqn-206"><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>data</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>, as shown in Algorithm 5.</p>
<p><italic>deleteVerifyMap</italic>()/<italic>deleteRetrievalMap</italic>()/<italic>deleteEncryptMap</italic>(): Need to input the IDs of DO and data to delete the corresponding parameter mapping, as shown in Algorithm 6.</p>
<p><italic>queryVerifyMap</italic>()/<italic>queryRetrievalMap</italic>()/<italic>queryEncryptMap</italic>(): Query validation parameter mapping, retrieval parameter mapping and encryption parameter mapping procedures, as shown in Algorithm 7. Need to input the IDs of DO and data to query the parameter mapping and return the corresponding parameter or error reminder information.</p>
</sec>
<sec id="s4_3"><label>4.3</label><title>Control List Contract</title>
<p>The role of this Contract is for the DO to perform access control management on shared education archives and call the Contract to manage and maintain two types of lists on the chain, namely the DAAL and the DDAL. As the contract initiator, DO&#x2019;s blockchain address needs to match the input <inline-formula id="ieqn-207"><mml:math id="mml-ieqn-207"><mml:msub><mml:mrow><mml:mtext>ID</mml:mtext></mml:mrow><mml:mrow><mml:mrow><mml:mtext>DO</mml:mtext></mml:mrow></mml:mrow></mml:msub></mml:math></inline-formula>, and then the Contract can be called to add, delete, and modify the list.</p>
<p><italic>addAllowList</italic>()<italic>/updateAllowList</italic>()<italic>/deleteAllowList</italic> ()<italic>/queryAllowList</italic> (): This function is to add, delete, modify, and query table items in the DAAL.</p>
<p><italic>addDenyList</italic>()<italic>/updateDenyList</italic>()<italic>/deleteDenyList</italic>()<italic>/queryDenyList</italic>(): This function is to add, delete, modify, and query table items in the DDAL.</p>
</sec>
<sec id="s4_4"><label>4.4</label><title>Access Control Contract</title>
<p>This Contract is the core of the system access control process and is used to verify the access permissions of the person who initiated the Contract. The Contract is designed according to the EduASAC system scheme, and the verification parameter mapping corresponding to the target data is queried on the chain. According to <inline-formula id="ieqn-208"><mml:math id="mml-ieqn-208"><mml:mrow><mml:mtext>VP</mml:mtext></mml:mrow></mml:math></inline-formula> settings, execute the related access control process to verify DU access permissions. After the verification is passed, a Token is generated for the legal DU and stored on the chain, which can be used for subsequent operation of the homomorphic ciphertext retrieval mechanism and re-encryption process.</p>
<p><italic>checkAccess</italic>(): Check DU access permissions, as shown in Algorithm 8. The input is the IDs of DU, data, and DO. A Token is generated if the verification is successful; otherwise, empty data returns to indicate that the verification failed. The access control mechanism adopted by the system will be based on the <inline-formula id="ieqn-209"><mml:math id="mml-ieqn-209"><mml:mrow><mml:mtext>VP</mml:mtext></mml:mrow></mml:math></inline-formula> value set by DO. See <xref ref-type="table" rid="table-3">Table 3</xref> in the previous section.
<list list-type="bullet">
<list-item><p>If <inline-formula id="ieqn-210"><mml:math id="mml-ieqn-210"><mml:mrow><mml:mtext>VP</mml:mtext></mml:mrow></mml:math></inline-formula> is 0, no verification permission is required to access data, and the contract directly generates a Token.</p>
</list-item>
<list-item><p>If <inline-formula id="ieqn-211"><mml:math id="mml-ieqn-211"><mml:mrow><mml:mtext>VP</mml:mtext></mml:mrow></mml:math></inline-formula> is 1, only the SAC mechanism is required to access the data. The contract compares the static permission level <inline-formula id="ieqn-212"><mml:math id="mml-ieqn-212"><mml:mrow><mml:mtext>S</mml:mtext></mml:mrow></mml:math></inline-formula> of the DU and the target data and allows access when the DU level is high. The comparison algorithm can change according to the design of the actual scheme, and choosing an algorithm with higher security and efficiency is recommended.</p></list-item>
<list-item><p>If <inline-formula id="ieqn-213"><mml:math id="mml-ieqn-213"><mml:mrow><mml:mtext>VP</mml:mtext></mml:mrow></mml:math></inline-formula> is 2, only the ACL mechanism is needed to access the data. The contract queries the DAAL item of the target data and allows access when there is DU information.</p></list-item>
<list-item><p>If <inline-formula id="ieqn-214"><mml:math id="mml-ieqn-214"><mml:mrow><mml:mtext>VP</mml:mtext></mml:mrow></mml:math></inline-formula> is 3, it indicates that SAC and ACL mechanisms are required to access data. The contract compares the static permission level <inline-formula id="ieqn-215"><mml:math id="mml-ieqn-215"><mml:mrow><mml:mtext>S</mml:mtext></mml:mrow></mml:math></inline-formula> of the DU and the target data: When the DU level is high, query the DDAL item of the target data and deny access if there is DU information; when the DU level is low, query the DAAL item of the target data, and allow access if there is DU information.</p></list-item>
<list-item><p>If <inline-formula id="ieqn-216"><mml:math id="mml-ieqn-216"><mml:mrow><mml:mtext>VP</mml:mtext></mml:mrow></mml:math></inline-formula> is other values, the scheme will implement other access control procedures. <inline-formula id="ieqn-217"><mml:math id="mml-ieqn-217"><mml:mrow><mml:mtext>VP</mml:mtext></mml:mrow></mml:math></inline-formula> represents other access control schemes or is used as a parameter in the access permission verification algorithm. The smart contract still performs the verification process, and the corresponding algorithm code needs to be written into the contract.</p></list-item>
</list>
<italic>deleteToken</italic>()/<italic>queryToken</italic>(): Delete or query the Token already stored on the chain.
<fig id="fig-18">
<graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_42000-fig-18.tif"/>
</fig></p>
</sec>
</sec>
<sec id="s5"><label>5</label><title>Implementation and Evaluation of EduASAC</title>
<sec id="s5_1"><label>5.1</label><title>Security Analysis</title>
<p>According to the threat model mentioned in <xref ref-type="sec" rid="s3_2">Section 3.2</xref>, this section theoretically analyzes the specific solutions proposed by the EduASAC system for data threat, entity identity threat, and system behavior threat.
<list list-type="simple">
<list-item><label>1)</label><p><bold>Data security on the chain</bold></p></list-item>
</list></p>
<p>The EduASAC system uses the blockchain network to store and share the data used or generated during the system&#x2019;s work. It deploys the smart contract that regulates the system&#x2019;s behavior on the chain to record the data operation process and ensure the data&#x2019;s integrity, correctness, and validity. <xref ref-type="table" rid="table-7">Table 7</xref> below is the security data stored on the chain.</p>
<table-wrap id="table-7"><label>Table 7</label><caption><title>Secure data on the chain</title></caption>
<table frame="hsides">
<colgroup>
<col align="left"/>
<col align="left"/>
</colgroup>
<thead>
<tr>
<th align="left">Notation</th>
<th align="left">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Token</td>
<td align="left">Each system entity can determine whether the data user has access permissions according to the valid Token and then call the security parameters in the Token according to the execution mechanism.</td>
</tr>
<tr>
<td align="left">P</td>
<td align="left">Running SAC and ACL mechanisms on the blockchain can prevent attackers from illegally tampering with the access control mechanism, resulting in abnormal operation of the system.</td>
</tr>
<tr>
<td align="left">ME/MR/MV</td>
<td align="left">The mapping is stored on the chain to ensure integrity, which is convenient for users to query and share.</td>
</tr>
<tr>
<td align="left">VP/C(RK)/<break/>C(EP)</td>
<td align="left">The contract queries the chain and extracts it as one of the Token&#x2019;s parameters during token generation. The homomorphic ciphertext retrieval scheme implemented on the storage server uses C (RK), which can prevent unauthorized system entities from accessing educational archives illegally through other means after having the correct ciphertext keywords; C (EP), which is used in the re-encryption process performed on Government Secrecy Departments to improve key security. VP denotes the user&#x2019;s access control management of data.</td>
</tr>
<tr>
<td align="left">User</td>
<td align="left">Part of the information in user attributes is stored on the chain so that system entities can verify user identity information on the chain.</td>
</tr>
<tr>
<td align="left">Data</td>
<td align="left">Part of the information in the data attributes is stored on the chain so that system entities can query other associated data through the data information.</td>
</tr>
<tr>
<td align="left">T</td>
<td align="left">Part of the information in the Token attribute is stored on the chain so that system entities can query the corresponding Token information to ensure its validity and correctness.</td>
</tr>
<tr>
<td align="left">S</td>
<td align="left">The static access level S of shared data and system entities are publicly stored on-chain. It is set by government management and data owners, respectively, and the source of parameters is authoritative. Based on the immutable feature of blockchain, it prevents participants from illegally changing permission levels to meet their interests. It facilitates system entities to check users&#x2019; static access permission levels on the chain and improves operational efficiency.</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>One data item is not listed in the above list, i.e., all system workflow records stored on the chain. These records will serve as evidence of dishonest behavior by system entities and reduce the impact of malicious tampering of execution results or changes to the execution process by system entities. It can also provide extremely reliable data records for authorities&#x2019; subsequent review and accountability process.
<list list-type="simple">
<list-item><label>2)</label><p><bold>Parameter security</bold></p></list-item>
</list></p>
<p>The generation, storage, and sharing of security parameters in the EduASAC system are all done by DO alone without third-party participation. Each workflow of the system is modularized, and different system working mechanisms require different security parameters, which can meet the security requirements of different mechanisms. The security parameters required by a system entity to run a certain mechanism have been encrypted by the asymmetric key of the system entity and stored on the chain in a ciphertext state.
<list list-type="simple">
<list-item><label>a)</label><p>The access control mechanism needs <inline-formula id="ieqn-269"><mml:math id="mml-ieqn-269"><mml:mrow><mml:mtext>VP</mml:mtext></mml:mrow></mml:math></inline-formula> when verifying access permissions. Because it does not involve the security of the data itself, the access control policy setting of the data by DO, therefore, <inline-formula id="ieqn-270"><mml:math id="mml-ieqn-270"><mml:mrow><mml:mtext>VP</mml:mtext></mml:mrow></mml:math></inline-formula> does not need to be stored in a ciphertext state and can be viewed by any system entity.</p></list-item>
<list-item><label>b)</label><p>The homomorphic ciphertext retrieval mechanism requires <inline-formula id="ieqn-271"><mml:math id="mml-ieqn-271"><mml:mrow><mml:mtext>RP</mml:mtext></mml:mrow></mml:math></inline-formula> and ciphertext keywords to be used when retrieving data. When a data owner grants permission to a storage server to share data, the <inline-formula id="ieqn-272"><mml:math id="mml-ieqn-272"><mml:mrow><mml:mtext>SK</mml:mtext></mml:mrow></mml:math></inline-formula> of that storage server is used to encrypt the retrieved security parameters. It improves the control of DO over the data, ensures that the data is not shared by unauthorized third-party storage servers, and improves the security of the homomorphic ciphertext retrieval mechanism.</p></list-item>
<list-item><label>c)</label><p>The re-encryption mechanism requires <inline-formula id="ieqn-273"><mml:math id="mml-ieqn-273"><mml:mrow><mml:mtext>EP</mml:mtext></mml:mrow></mml:math></inline-formula> to be used when decrypting the data, which are critical keys to protect the data security and cannot be obtained by third-party service providers. Therefore, DO encrypts it with <inline-formula id="ieqn-274"><mml:math id="mml-ieqn-274"><mml:mrow><mml:mtext>SK</mml:mtext></mml:mrow></mml:math></inline-formula> of the authoritative Government Secrecy Department and then uploads it to the chain in a ciphertext state. It dramatically reduces the scope of sharing critical keys and improves the security of education archives.</p></list-item>
</list>
<list list-type="simple">
<list-item><label>3)</label><p><bold>Security of system entity identity</bold>
<list list-type="simple">
<list-item><label>a)</label><p>At the time of registration, the system entity&#x2019;s identity information must be verified off-chain by the Government Management Department. After verification, the identity information will be published on the chain and voted on by the whole network. The opinions will be counted before deciding whether to allow them to join the EduASAC system.</p></list-item>
<list-item><label>b)</label><p>The identity information, public key, voting process, and results of newly joined nodes are recorded on the chain for network-wide nodes to verify node identity, obtain <inline-formula id="ieqn-275"><mml:math id="mml-ieqn-275"><mml:mrow><mml:mtext>SK</mml:mtext></mml:mrow></mml:math></inline-formula> and review the voting process. The private key is kept independently by the user and is not known by any system entity to ensure the secure operation of the system workflow.</p></list-item>
<list-item><label>c)</label><p>The blockchain address of the contract initiator needs to match the input ID to ensure the authenticity and legitimacy of the participant&#x2019;s identity in the process of parameter mapping setting, data access permission setting, and request permission verification.</p></list-item>
<list-item><label>d)</label><p>When DU requests retrieval and re-encryption of education archives from storage servers and the Government Secrecy Department, respectively, they need to verify the entity&#x2019;s identity information in the chain based on its ID.</p></list-item>
</list></p></list-item>
</list></p>
</sec>
<sec id="s5_2"><label>5.2</label><title>Performance Comparison and Testing</title>
<p>This section explains the research characteristics, application advantages, and realization value of the EduASAC system by comparing the performance of related research schemes and conducting simulation tests.
<list list-type="simple">
<list-item><label>1)</label><p><bold>Test environment</bold></p></list-item>
</list></p>
<p>The performance test environment is shown in <xref ref-type="table" rid="table-8">Table 8</xref>.
<list list-type="simple">
<list-item><label>2)</label><p><bold>Performance analysis</bold></p></list-item>
</list></p>
<table-wrap id="table-8"><label>Table 8</label><caption><title>Simulation environment</title></caption>
<table frame="hsides">
<colgroup>
<col align="left"/>
<col align="left"/>
</colgroup>
<thead>
<tr>
<th align="left">CPU</th>
<th align="left">i7-10750H 2.60&#x2005;GHz</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Operating system</td>
<td align="left">CentOS7</td>
</tr>
<tr>
<td align="left">Blockchain platform</td>
<td align="left">Hyperledger Fabric 1.4.3</td>
</tr>
<tr>
<td align="left">Blockchain organizations and nodes</td>
<td align="left">OrdererOrgs(1 Orderer node) PeerOrgs(Org1 and Org2 two organizations, 4 peer nodes)</td>
</tr>
<tr>
<td align="left">Docker</td>
<td align="left">18.06.3</td>
</tr>
<tr>
<td align="left">Docker-compose</td>
<td align="left">1.23.2</td>
</tr>
<tr>
<td align="left">Smart contract development platform/language</td>
<td align="left">Visual Studio Code/go 1.8.1</td>
</tr>
<tr>
<td align="left">Drawing tool</td>
<td align="left">Excel/Visio</td>
</tr>
<tr>
<td align="left">Test framework</td>
<td align="left">Caliper Benchmarks 0.2.0</td>
</tr>
</tbody>
</table>
</table-wrap>
<p><xref ref-type="table" rid="table-9">Table 9</xref> below will use the designed EduASAC system as the base point to compare the data characteristics of the shared system under different storage modes.</p>
<table-wrap id="table-9"><label>Table 9</label><caption><title>Comparison of data characteristics</title></caption>
<table frame="hsides">
<colgroup>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
</colgroup>
<thead>
<tr>
<th align="left">Data characteristics</th>
<th align="left">Local database (paper carrier)</th>
<th align="left">Centralized database</th>
<th align="left">Distributed database</th>
<th align="left">Cloud</th>
<th align="left">Blockchain</th>
<th align="left">Our scheme</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Confidentiality</td>
<td align="left">&#x00D7;</td>
<td align="left">&#x00D7;</td>
<td align="left">&#x00D7;</td>
<td align="left">&#x221A;</td>
<td align="left">&#x221A;</td>
<td align="left">&#x221A;</td>
</tr>
<tr>
<td align="left">Integrity</td>
<td align="left">&#x00D7;</td>
<td align="left">&#x00D7;</td>
<td align="left">&#x00D7;</td>
<td align="left">&#x00D7;</td>
<td align="left">&#x221A;</td>
<td align="left">&#x221A;</td>
</tr>
<tr>
<td align="left">Authenticity</td>
<td align="left">&#x221A;</td>
<td align="left">&#x221A;</td>
<td align="left">&#x00D7;</td>
<td align="left">&#x00D7;</td>
<td align="left">&#x00D7;</td>
<td align="left">&#x221A;</td>
</tr>
<tr>
<td align="left">Share whether a third party is involved</td>
<td align="left">&#x00D7;</td>
<td align="left">&#x221A;</td>
<td align="left">&#x00D7;</td>
<td align="left">&#x221A;</td>
<td align="left">&#x00D7;</td>
<td align="left">&#x221A;</td>
</tr>
<tr>
<td align="left">Sharing scope</td>
<td align="left">Small</td>
<td align="left">Small</td>
<td align="left">Big</td>
<td align="left">Big</td>
<td align="left">Big</td>
<td align="left">Big</td>
</tr>
<tr>
<td align="left">Share efficiency</td>
<td align="left">Low</td>
<td align="left">Low</td>
<td align="left">High</td>
<td align="left">High</td>
<td align="left">High</td>
<td align="left">High</td>
</tr>
<tr>
<td align="left">Data status</td>
<td align="left">Handwritten paper version</td>
<td align="left">Plaintext storage</td>
<td align="left">Plaintext storage</td>
<td align="left">Ciphertext storage</td>
<td align="left">Ciphertext storage</td>
<td align="left">Ciphertext storage</td>
</tr>
<tr>
<td align="left">Manual identification required</td>
<td align="left">&#x221A;</td>
<td align="left">&#x221A;</td>
<td align="left">&#x221A;</td>
<td align="left">&#x00D7;</td>
<td align="left">&#x00D7;</td>
<td align="left">&#x00D7;</td>
</tr>
<tr>
<td align="left">Access control</td>
<td align="left">&#x00D7;</td>
<td align="left">&#x221A;</td>
<td align="left">&#x221A;</td>
<td align="left">&#x221A;</td>
<td align="left">&#x00D7;</td>
<td align="left">&#x221A;</td>
</tr>
<tr>
<td align="left">Revocable or not</td>
<td align="left">&#x00D7;</td>
<td align="left">&#x00D7;</td>
<td align="left">&#x221A;</td>
<td align="left">&#x221A;</td>
<td align="left">&#x00D7;</td>
<td align="left">&#x00D7;</td>
</tr>
<tr>
<td align="left">Easy to destroy</td>
<td align="left">Easy</td>
<td align="left">Easy</td>
<td align="left">Hard</td>
<td align="left">Hard</td>
<td align="left">Hard</td>
<td align="left">Hard</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>The system solution in this paper uses a combination of storage server and blockchain to store different data based on two different storage models, centralized and decentralized ledger, to jointly complete the work of sharing the data. As shown in the above table, the blockchain is a distributed structure, an open platform, without third-party participation and user access control. At the same time, because the authenticity of pre-chain data cannot be verified, there is a security threat of legitimate users uploading illegal data. There are third-party government departments with the force of law and administrative capacity in the EduASAC system, which can guarantee data security, verify data authenticity, and protect user identity privacy. Therefore, the advantages of system data characteristics are significant, and the social application value is greater. <xref ref-type="table" rid="table-10">Table 10</xref> below compares the research schemes of other blockchain education systems, highlighting the uniqueness of the scheme in this paper.</p>
<table-wrap id="table-10"><label>Table 10</label><caption><title>Comparison of system characteristics</title></caption>
<table frame="hsides">
<colgroup>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
</colgroup>
<thead>
<tr>
<th align="left">System characteristics</th>
<th align="left">[<xref ref-type="bibr" rid="ref-7">7</xref>]</th>
<th align="left">[<xref ref-type="bibr" rid="ref-10">10</xref>]</th>
<th align="left">[<xref ref-type="bibr" rid="ref-12">12</xref>]</th>
<th align="left">[<xref ref-type="bibr" rid="ref-13">13</xref>]</th>
<th align="left">[<xref ref-type="bibr" rid="ref-14">14</xref>]</th>
<th align="left">Our scheme</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Voting nodes join</td>
<td align="left"><bold>Y</bold></td>
<td align="left"><bold>N</bold></td>
<td align="left"><bold>N</bold></td>
<td align="left"><bold>N</bold></td>
<td align="left"><bold>N</bold></td>
<td align="left"><bold>Y</bold></td>
</tr>
<tr>
<td align="left">On-chain/off-chain storage</td>
<td align="left"><bold>Y</bold></td>
<td align="left"><bold>Y</bold></td>
<td align="left"><bold>N</bold></td>
<td align="left"><bold>N</bold></td>
<td align="left"><bold>Y</bold></td>
<td align="left"><bold>Y</bold></td>
</tr>
<tr>
<td align="left">Multiple access control mode</td>
<td align="left"><bold>N</bold></td>
<td align="left"><bold>N</bold></td>
<td align="left"><bold>N</bold></td>
<td align="left"><bold>N</bold></td>
<td align="left"><bold>N</bold></td>
<td align="left"><bold>Y</bold></td>
</tr>
<tr>
<td align="left">On-chain access grant</td>
<td align="left"><bold>Y</bold></td>
<td align="left"><bold>N</bold></td>
<td align="left"><bold>Y</bold></td>
<td align="left"><bold>Y</bold></td>
<td align="left"><bold>Y</bold></td>
<td align="left"><bold>Y</bold></td>
</tr>
<tr>
<td align="left">Smart contract</td>
<td align="left"><bold>Y</bold></td>
<td align="left"><bold>Y</bold></td>
<td align="left"><bold>N</bold></td>
<td align="left"><bold>Y</bold></td>
<td align="left"><bold>Y</bold></td>
<td align="left"><bold>Y</bold></td>
</tr>
<tr>
<td align="left">Homomorphic ciphertext retrieval application</td>
<td align="left"><bold>N</bold></td>
<td align="left"><bold>N</bold></td>
<td align="left"><bold>N</bold></td>
<td align="left"><bold>N</bold></td>
<td align="left"><bold>N</bold></td>
<td align="left"><bold>Y</bold></td>
</tr>
</tbody>
</table>
</table-wrap>
<p>By comparing the system&#x2019;s characteristics, it can be concluded that there is originality in the research of EduASAC system. It can be combined with most homomorphic ciphertext retrieval schemes. It adopts on-chain authorization and off-chain storage, integrates multiple access control modes, and realizes sharing and access control of educational archives based on smart contracts. <xref ref-type="table" rid="table-11">Table 11</xref> compares other system research schemes that run access control policies on the blockchain.</p>
<table-wrap id="table-11"><label>Table 11</label><caption><title>Solution performance comparison</title></caption>
<table frame="hsides">
<colgroup>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
<col align="left"/>
</colgroup>
<thead>
<tr>
<th align="left">Scheme</th>
<th align="left">Technology/Application background</th>
<th align="left">Access control policy</th>
<th align="left">Security</th>
<th align="left">Efficiency</th>
<th align="left">Function</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">[<xref ref-type="bibr" rid="ref-18">18</xref>]</td>
<td align="left">Based on a publicly verifiable blockchain, a centralized trusted institution is used for access control management. It is a system design scheme<break/>for IoT data traffic.</td>
<td align="left">Access to the data stream is granted using the stream identifier and the public key address of the service.</td>
<td align="left">Security based on data signature; data security is guaranteed through consensus protocols in the blockchain and its decentralization features.</td>
<td align="left">During access control, the request throughput of the storage system is reduced by 10&#x0025;; distributed storage systems with more than 1000 nodes experience a two times deceleration.</td>
<td align="left">The location-aware decentralized storage system managed by blockchain technology can promote the storage of time-series IoT data storage at the network edge, enabling secure and flexible access control management.</td>
</tr>
<tr>
<td align="left">[<xref ref-type="bibr" rid="ref-19">19</xref>]</td>
<td align="left">Based on blockchain smart contract technology. It enables distributed and trusted access control for IoT systems.</td>
<td align="left">Static access permissions verification based on predefined policies. Dynamic access permissions verification by checking the behavior of the subject.</td>
<td align="left">The system records user misbehavior on certain resources and gives appropriate penalties.</td>
<td align="left">No efficiency analysis.</td>
<td align="left">The system provides functions to add, update and delete access control policies; provides methods to judge misbehavior and returns corresponding penalties after receiving misbehavior reports; can register IoT device information and can perform adding, updating, or delete operations.</td>
</tr>
<tr>
<td align="left">[<xref ref-type="bibr" rid="ref-22">22</xref>]</td>
<td align="left">A medical application framework based on blockchain and cloud database; based on blockchain smart contract technology. It solves the problem of storing and sharing big medical data in a trustless environment.</td>
<td align="left">A public key signature is used to verify the legitimacy of access requests.</td>
<td align="left">Smart contracts and access control mechanisms can effectively track the behavior of data and realize the traceability and audit of data sources; they can revoke the access permissions of violators and minimize the risk of data privacy.</td>
<td align="left">Test the time required for the transactions to analyze the latency of the system when different numbers of requesters send requests or different numbers of cloud service providers receive requests. The results show that the system is more efficient.</td>
<td align="left">The system provides data source auditing and access control for big medical data that needs to be shared in the cloud database. All operations performed on the system are recorded on the chain in a tamper-proof manner, and access to the offending entity can be revoked.</td>
</tr>
<tr>
<td align="left">[<xref ref-type="bibr" rid="ref-23">23</xref>]</td>
<td align="left">The operation mechanism is based on the permission blockchain. The system leverages the blockchain&#x2019;s invariance and built-in autonomy features to address access control-related issues for sensitive data in cloud databases.</td>
<td align="left">Secure encryption technology (encryption and digital signatures) ensures access control to sensitive shared data pools.</td>
<td align="left">Cryptographic key sets ensure that security-related tasks in the system are performed correctly. Keys are applied to the user authentication process.</td>
<td align="left">Test the number of user transactions on different chains for different lengths of time and the final amount of blocks generated. The system is<break/> a lightweight blockchain that is more efficient compared to Bitcoin.</td>
<td align="left">The system allows users to access electronic medical records in a shared database after their identity and encryption key have been authenticated.</td>
</tr>
<tr>
<td align="left">[<xref ref-type="bibr" rid="ref-24">24</xref>]</td>
<td align="left">Based on the Ethernet blockchain, cloud-based servers store data. It solves the security problem of key management controlled by a third party.</td>
<td align="left">Ciphertext Policy Attribute-Based Encryption (CP-ABE).</td>
<td align="left">Attribute sets have access cycles. Key distribution is decentralized and uses the Diffie-Hellman key exchange protocol to negotiate encryption keys. Smart contract invocations are restricted to specific users. Blockchain logs have privacy-preserving features.</td>
<td align="left">The access control algorithm running on the contract has the same efficiency as the original one before the improvement. The system is based on the blockchain and is more efficient than the original solution.</td>
<td align="left">The system implements a decentralized cloud storage framework with fine-grained access control for the stored data.</td>
</tr>
<tr>
<td align="left">[<xref ref-type="bibr" rid="ref-25">25</xref>]</td>
<td align="left">Based on Hyperledger Fabric framework; based on blockchain smart contract technology. It can be applied to large-scale IoT environments.</td>
<td align="left">Attribute-based access control, and decentralized, fine-grained, and dynamic access control management.</td>
<td align="left">Security based on blockchain Proof of Work (PoW) consensus.</td>
<td align="left">By simulating concurrent access to the system by multi-threaded clients, the processing time of Policy Contract (PC), Access Contract (AC) and Device Contract (DC) under a different number of concurrent requests is tested.</td>
<td align="left">The system can store the Uniform Resource Location (URL) of resource data generated by the device and a query method, allow administrator users to manage Attribute Based Access Control (ABAC) policies, and enable user access control of the data.</td>
</tr>
<tr>
<td align="left">Our scheme</td>
<td align="left">Based on the ACE authorization framework of OAuth 2.0, based on the Hyperledger Fabric platform, based on smart contract technology. The system can be applied to sharing education archives and access control scenarios.</td>
<td align="left">The system adopts a dual-mode access control mechanism combining the DAC and MAC models and improves the access authorization framework based on the ACE authorization framework of OAuth 2.0.</td>
<td align="left">The security of multiple objects has been analyzed in detail, as described in the previous subsection.</td>
<td align="left">Test contract uploading blockchain efficiency, Application Programming Interface (API) operation efficiency, and access control process time indicate that the system solution is within acceptable runtime. The system has modularized the workflow, with different modules run by various system entities, and the overall system efficiency is high.</td>
<td align="left">The system framework can be used with most homomorphic cryptographic retrieval schemes. The process of encryption, storage, retrieval, sharing, and access control of education archives are among multiple education institutions. A network-wide vote conducts user registration. All system entities&#x2019; action logs are recorded in a tamper-proof manner on the chain.</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>As can be seen from the <xref ref-type="table" rid="table-11">Table 11</xref>, compared with the centralized trusted institutions used in the literature [<xref ref-type="bibr" rid="ref-18">18</xref>] to manage access permissions, this paper uses a distributed network of blockchain without trust relationship to manage access permissions, which solves the problems of single point failure and third-party service trust; compared with the literature [<xref ref-type="bibr" rid="ref-19">19</xref>] based on static access permissions verification, this paper adopts a combination of static and dynamic access permissions verification mode, which has higher system flexibility and usability; compared with the literature [<xref ref-type="bibr" rid="ref-22">22</xref>,<xref ref-type="bibr" rid="ref-23">23</xref>], which use encryption or signature technology to control access to sensitive data, the security encryption technology used in this paper does not play a role in access control, but ensures the security of data sharing on the chain and reduce security threats from members of the system; compared with the public platform of the Ethernet blockchain used in literature [<xref ref-type="bibr" rid="ref-24">24</xref>], the newly registered system entities in this paper need to be joined after a whole network voting vote; literature [<xref ref-type="bibr" rid="ref-25">25</xref>] is similar to the research scheme of this paper, but the access control mechanism and specific application scenarios adopted by both are different, and this paper also combines homomorphic ciphertext retrieval mechanism and improves the access authorization framework. By comparing various research works, the safety, efficiency, and functional advantages of the scheme in this paper are outstanding, and it has high research significance and application value.
<list list-type="simple">
<list-item><label>3)</label><p><bold>Test results</bold>
<list list-type="simple">
<list-item><label>a)</label><p>Test contract efficiency</p>
</list-item>
</list></p></list-item>
</list></p>
<p>On the Hyperledger Fabric, test the running time of installing and instantiating four EduASAC system smart contracts, and test the impact of the average memory of the contract Docker container and the number of APIs in the contract on the contract initialization efficiency, as shown in <xref ref-type="fig" rid="fig-3">Fig. 3</xref>.</p>
<fig id="fig-3"><label>Figure 3</label><caption><title>Comparison chart of various factors affecting contract efficiency</title></caption><graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_42000-fig-3.tif"/></fig>
<p>Smart contract code written in the Go language generally cannot run directly on the blockchain but needs to be run in a specific sandbox environment Docker container. The installation process is that the smart contract is uploaded to the chain, and the running time is short. The instantiation process needs to call the Docker container and initialize the smart contract, which takes a long time. As can be seen from the figure above, the on-chain efficiency of different smart contracts is related to the amount of memory in the Docker container, the number of APIs, and the complexity of the system behavior controlled by the contract. Tested the average latency and Central Processing Unit (CPU) of the three contracts when writing and querying ledger data, as shown in <xref ref-type="fig" rid="fig-4">Fig. 4</xref>; tested the average latency and throughput of AccessControlContract under different transaction numbers, as shown in <xref ref-type="fig" rid="fig-5">Fig. 5</xref>.</p>
<fig id="fig-4"><label>Figure 4</label><caption><title>Average latency and CPU when contracts write and query ledger data</title></caption><graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_42000-fig-4.tif"/></fig><fig id="fig-5"><label>Figure 5</label><caption><title>The average latency and throughput of AccessControlContract under different transaction numbers</title></caption><graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_42000-fig-5.tif"/></fig>
<p>The experimental results in the above figure show that the EduASAC system can maintain high throughput in a large-scale transaction environment with high efficiency and low latency. It enables all network parties to reach a low-cost consensus to ensure data consistency.
<list list-type="simple">
<list-item><label>b)</label><p>Test contract API</p></list-item>
</list></p>
<p>To illustrate the system performance of EduASAC, four contracts of the EduASAC system are called, and the running time of each contract API was recorded in detail. The specific test results are shown in <xref ref-type="fig" rid="fig-6">Figs. 6</xref>&#x2013;<xref ref-type="fig" rid="fig-9">9</xref>.</p>
<fig id="fig-6"><label>Figure 6</label><caption><title>API runtime of Vote Contract</title></caption><graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_42000-fig-6.tif"/></fig><fig id="fig-7"><label>Figure 7</label><caption><title>API runtime of Map Contract</title></caption><graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_42000-fig-7.tif"/></fig><fig id="fig-8"><label>Figure 8</label><caption><title>API runtime of Control List Contract</title></caption><graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_42000-fig-8.tif"/></fig><fig id="fig-9"><label>Figure 9</label><caption><title>API runtime of Access Control Contract</title></caption><graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_42000-fig-9.tif"/></fig>
<p>Note: <italic>checkAccess</italic>() in the Access Control Contract is when VP is set to 0, the API running time without access control.</p>
<p>API is the behavior code for smart contracts to perform specific operations on data on the chain, including adding, deleting, updating, and querying data. As can be seen from the figure above, the operating efficiency of codes of the same behavior is roughly the same, and the subtle difference is the amount of data stored on the chain and the amount of data of the operation object. The scheme in this paper stores and shares the parameters relating to the homomorphic ciphertext retrieval scheme and access control strategy on the chain. Asymmetric algorithms encrypt all of them. Mechanisms with a large amount of calculation are all run off-chain, and education archives with a large amount of data are stored in the storage server. The data operated by smart contracts on the chain has high security, a small amount of data, and simple operation, improving the EduASAC system&#x2019;s operating efficiency to a certain extent.
<list list-type="simple">
<list-item><label>c)</label><p>Test access verification</p></list-item>
</list></p>
<p>When DO sets different <inline-formula id="ieqn-276"><mml:math id="mml-ieqn-276"><mml:mrow><mml:mtext>VP</mml:mtext></mml:mrow></mml:math></inline-formula> parameters for shared data, different access control mechanisms will operate in the Access Control Contract. In the experimental system of EduASAC, the process of DU calling <italic>checkAccess</italic>() in the Access Control Contract to verify the access permission has been simulated. The specific running time of 9 verification access permission workflows has been tested. <xref ref-type="table" rid="table-12">Table 12</xref> below shows the previous conditions for operating the nine verification access permissions processes.</p>
<table-wrap id="table-12"><label>Table 12</label><caption><title>Operating conditions</title></caption>
<table frame="hsides">
<colgroup>
<col align="left"/>
<col align="left"/>
</colgroup>
<thead>
<tr>
<th align="left">Number</th>
<th align="left">Operating conditions</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">1</td>
<td align="left">VP is set to 0, that is, there is no verification access process, only the Token generation part.</td>
</tr>
<tr>
<td align="left">2</td>
<td align="left">VP is set to 1, and the S<sub>Info</sub> of DU is higher than the S<sub>data</sub> of the target data, allowing DU to access the data.</td>
</tr>
<tr>
<td align="left">3</td>
<td align="left">VP is set to 1, and the S<sub>Info</sub> of DU is lower than the S<sub>data</sub> of target data, refusing DU to access the data.</td>
</tr>
<tr>
<td align="left">4</td>
<td align="left">VP is set to 2, and the system queries the DU information in DAAL, allowing DU to access the data.</td>
</tr>
<tr>
<td align="left">5</td>
<td align="left">VP is set to 2, and the system does not query the DU information in DAAL, refusing DU to access the data.</td>
</tr>
<tr>
<td align="left">6</td>
<td align="left">VP is set to 3. Although the S<sub>Info</sub> of DU is higher than the S<sub>data</sub> of target data, the system queries DU information in DDAL, refusing DU access to the data.</td>
</tr>
<tr>
<td align="left">7</td>
<td align="left">VP is set to 3, and the S<sub>Info</sub> of DU is higher than the S<sub>data</sub> of target data, the system does not query DU information in DDAL, allowing DU access to the data.</td>
</tr>
<tr>
<td align="left">8</td>
<td align="left">VP is set to 3. Although the S<sub>Info</sub> of DU is lower than the S<sub>data</sub> of target data, the system queries DU information in DAAL, allowing DU access to the data.</td>
</tr>
<tr>
<td align="left">9</td>
<td align="left">VP is set to 3. Although the S<sub>Info</sub> of DU is lower than the S<sub>data</sub> of target data, the system does not query DU information in DAAL, refusing DU access to the data.</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>In the simulation test, if DU&#x2019;s access request to the data is allowed, the test content will include the generation of the Token and the storage process on the chain; otherwise, the contract will end directly after the verification permissions fail. <xref ref-type="fig" rid="fig-10">Fig. 10</xref> below shows the running time results of <italic>checkAccess</italic>() in the Access Control Contract under different conditions.</p>
<fig id="fig-10"><label>Figure 10</label><caption><title>Runtime of checkAccess()</title></caption><graphic mimetype="image" mime-subtype="tif" xlink:href="CMC_42000-fig-10.tif"/></fig>
<p>It can be seen from the figure that compared with the running time of <italic>checkAccess</italic>() without access control when <inline-formula id="ieqn-277"><mml:math id="mml-ieqn-277"><mml:mrow><mml:mtext>VP</mml:mtext></mml:mrow></mml:math></inline-formula> is 0, the efficiency of the various access control processes designed in this paper is higher, and the running time of Token generation and on-chain storage is shorter. It shows that the EduASAC system using smart contracts for on-chain access control is well-designed, with low operating costs, high efficiency, and high application value.</p>
</sec>
</sec>
<sec id="s6"><label>6</label><title>Conclusion and Future Works</title>
<p>The EduASAC system studied in this article takes advantage of the decentralization, tamper-proof, and traceability of blockchain technology, and applies blockchain smart contract technology to implement a dual-mode access control mechanism and a new access authorization framework. At the same time, the system can be combined with most homomorphic ciphertext retrieval schemes running on storage servers to solve the problem of low data security in the storage and sharing of education archives. The paper designs the system workflow of educational archive sharing and access control in detail, including the core modules of the system&#x2014;access control and homomorphic ciphertext retrieval; introduces the algorithm input, operating logic, and data output of four smart contracts running on the blockchain, emphasizing the role of each smart contract in the system; tests the operating efficiency and memory of the smart contract, as well as the running time of the smart contract API and access control process to prove the availability of the system.</p>
<p>In summary, the design and implementation of the EduASAC system provide a practical reference for other researchers to carry out relevant research. In future work, we can improve in the following areas:
<list list-type="simple">
<list-item><label>1)</label><p>The experiments in this paper were conducted on the test network of Hyperledger Fabric. In the future, we will consider deploying a Blockchain as a Service (BaaS) platform closer to the actual blockchain application and further verify the system&#x2019;s performance.</p></list-item>
<list-item><label>2)</label><p>This scheme involves the design and implementation of multiple smart contracts. In the future, we will consider using a more professional platform to deploy, schedule and manage smart contracts.</p></list-item>
<list-item><label>3)</label><p>Sharing homomorphic ciphertext data involves the security of sharing encryption keys. This paper uses a re-encryption process that allows education archives in a ciphertext state to be shared among education institutions without revealing the encryption key to third-party service providers. In the future, we can try to combine the homomorphic ciphertext retrieval mechanism with proxy re-encryption to jointly complete the secure retrieval and sharing process of data.</p></list-item>
</list></p>
</sec>
</body>
<back>
<ack>
<p>Not applicable.</p>
</ack>
<sec><title>Funding Statement</title>
<p>This work was supported by the Fundamental Research Funds for the Central Universities. Nos. 3282023017, 328202251. RL H received the grant.</p></sec>
<sec><title>Author Contributions</title>
<p>Study conception and design: Ronglei Hu, Chuce He; Data collection: Yaping Chi, Xiaohong Fan; Analysis and interpretation of results: Xiaoyi Duan, Ping Xu; Draft manuscript preparation: Chuce He, Wenbin Gao. All authors reviewed the results and approved the final version of the manuscript.</p></sec>
<sec sec-type="data-availability"><title>Availability of Data and Materials</title>
<p>The scheme design, flow, smart contract pseudo-code and related data of this paper have been provided in the paper, readers can reproduce the scheme according to the content of the article. If you need the smart contract code and simulation data, please contact the corresponding author.</p></sec>
<sec sec-type="COI-statement"><title>Conflicts of Interest</title>
<p>The authors declare that they have no conflicts of interest to report regarding the present study.</p></sec>
<ref-list content-type="authoryear">
<title>References</title>
<ref id="ref-1"><label>[1]</label><mixed-citation publication-type="web"><person-group person-group-type="author"><string-name><given-names>D.</given-names> <surname>Schaffnauser</surname></string-name></person-group>, <source>Blockchain: Letting Student Own Their Credentials</source>, <publisher-name>Campus Technology</publisher-name>, <year>2017</year>. [<comment>Online</comment>]. Available: <ext-link ext-link-type="uri" xlink:href="https://campustechnology.com/articles/2017/03/23/blockchain-letting-students-own-their-credentials.aspx">https://campustechnology.com/articles/2017/03/23/blockchain-letting-students-own-their-credentials.aspx</ext-link> (<comment>accessed on 30/10/2023</comment>)</mixed-citation></ref>
<ref id="ref-2"><label>[2]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>M. U.</given-names> <surname>Bokhari</surname></string-name>, <string-name><given-names>Q.</given-names> <surname>Makki</surname></string-name> and <string-name><given-names>Y. K.</given-names> <surname>Tamandani</surname></string-name></person-group>, &#x201C;<article-title>A survey on cloud computing</article-title>,&#x201D; <source>Big Data Analytics, Advances in Intelligent Systems and Computing</source>, vol. <volume>654</volume>, pp. <fpage>149</fpage>&#x2013;<lpage>164</lpage>, <year>2018</year>.</mixed-citation></ref>
<ref id="ref-3"><label>[3]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>C.</given-names> <surname>Cachin</surname></string-name>, <string-name><given-names>I.</given-names> <surname>Keidar</surname></string-name> and <string-name><given-names>A.</given-names> <surname>Shraer</surname></string-name></person-group>, &#x201C;<article-title>Trusting the cloud</article-title>,&#x201D; <source>ACM Sigact News</source>, vol. <volume>40</volume>, no. <issue>2</issue>, pp. <fpage>81</fpage>, <year>2009</year>.</mixed-citation></ref>
<ref id="ref-4"><label>[4]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>X.</given-names> <surname>Chen</surname></string-name>, <string-name><given-names>D.</given-names> <surname>Zou</surname></string-name>, <string-name><given-names>G.</given-names> <surname>Cheng</surname></string-name>, <string-name><given-names>H.</given-names> <surname>Xie</surname></string-name> and <string-name><given-names>M.</given-names> <surname>Jone</surname></string-name></person-group>, &#x201C;<article-title>Blockchain in smart education: Contributors, collaborations, applications and research topics</article-title>,&#x201D; <source>Education and Information Technologies</source>, vol. <volume>28</volume>, pp. <fpage>4597</fpage>&#x2013;<lpage>4627</lpage>, <year>2023</year>.</mixed-citation></ref>
<ref id="ref-5"><label>[5]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>A. O. J.</given-names> <surname>Kwok</surname></string-name> and <string-name><given-names>H.</given-names> <surname>Treiblmaier</surname></string-name></person-group>, &#x201C;<article-title>No one left behind in education: Blockchain-based transformation and its potential for social inclusion</article-title>,&#x201D; <source>Asia Pacific Education Review</source>, vol. <volume>23</volume>, no. <issue>3</issue>, pp. <fpage>445</fpage>&#x2013;<lpage>455</lpage>, <year>2022</year>.</mixed-citation></ref>
<ref id="ref-6"><label>[6]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>R. J.</given-names> <surname>Maestre</surname></string-name>, <string-name><given-names>J. B.</given-names> <surname>Higuera</surname></string-name>, <string-name><given-names>N. G.</given-names> <surname>G&#x00F3;mez</surname></string-name>, <string-name><given-names>J. R. B.</given-names> <surname>Higuera</surname></string-name> and <string-name><given-names>J. A. S.</given-names> <surname>Montalvo</surname></string-name></person-group>, &#x201C;<article-title>The application of blockchain algorithms to the management of education certificates</article-title>,&#x201D; <source>Evolutionary Intelligence</source>, vol. <volume>16</volume>, pp. <fpage>1967</fpage>&#x2013;<lpage>1984</lpage>, <year>2023</year>.</mixed-citation></ref>
<ref id="ref-7"><label>[7]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>H.</given-names> <surname>Li</surname></string-name> and <string-name><given-names>D.</given-names> <surname>Han</surname></string-name></person-group>, &#x201C;<article-title>EduRSS: A blockchain-based educational records secure storage and sharing scheme</article-title>,&#x201D; <source>IEEE Access</source>, vol. <volume>7</volume>, pp. <fpage>179273</fpage>&#x2013;<lpage>179289</lpage>, <year>2019</year>.</mixed-citation></ref>
<ref id="ref-8"><label>[8]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>M.</given-names> <surname>Sharples</surname></string-name> and <string-name><given-names>J.</given-names> <surname>Domingue</surname></string-name></person-group>, &#x201C;<article-title>The blockchain and kudos: A distributed system for educational record</article-title>,&#x201D; <source>Adaptive and Adaptable Learning, EC-TEL 2016: Adaptive and Adaptable Learning</source>, pp. <fpage>490</fpage>&#x2013;<lpage>496</lpage>, <year>2016</year>.</mixed-citation></ref>
<ref id="ref-9"><label>[9]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>D.</given-names> <surname>Tapscott</surname></string-name> and <string-name><given-names>A.</given-names> <surname>Tapscott</surname></string-name></person-group>, &#x201C;<article-title>The blockchain revolution and higher education</article-title>,&#x201D; <source>Educause Review</source>, vol. <volume>52</volume>, no. <issue>2</issue>, pp. <fpage>11</fpage>&#x2013;<lpage>24</lpage>, <year>2017</year>.</mixed-citation></ref>
<ref id="ref-10"><label>[10]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>R. A.</given-names> <surname>Mishra</surname></string-name>, <string-name><given-names>A.</given-names> <surname>Anshuman</surname></string-name>, <string-name><given-names>A.</given-names> <surname>Braeken</surname></string-name> and <string-name><given-names>M.</given-names> <surname>Liyanage</surname></string-name></person-group>, &#x201C;<article-title>Privacy protected blockchain based architecture and implementation for sharing of students&#x2019; credentials</article-title>,&#x201D; <source>Information Processing and Management</source>, vol. <volume>58</volume>, no. <issue>3</issue>, pp. <fpage>102512</fpage>, <year>2021</year>.</mixed-citation></ref>
<ref id="ref-11"><label>[11]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>T.</given-names> <surname>Hewa</surname></string-name>, <string-name><given-names>M.</given-names> <surname>Ylianttila</surname></string-name> and <string-name><given-names>M.</given-names> <surname>Liyanage</surname></string-name></person-group>, &#x201C;<article-title>Survey on blockchain based smart contracts: Applications, opportunities and challenges</article-title>,&#x201D; <source>Journal of Network and Computer Applications</source>, vol. <volume>177</volume>, pp. <fpage>102857</fpage>, <year>2021</year>.</mixed-citation></ref>
<ref id="ref-12"><label>[12]</label><mixed-citation publication-type="conf-proc"><person-group person-group-type="author"><string-name><given-names>R.</given-names> <surname>Arenas</surname></string-name> and <string-name><given-names>P.</given-names> <surname>Fernandez</surname></string-name></person-group>, &#x201C;<article-title>CredenceLedger: A permissioned blockchain for verifiable academic credentials</article-title>,&#x201D; in <conf-name>2018 IEEE Int. Conf. on Engineering, Technology and Innovation (ICE/ITMC)</conf-name>, <conf-loc>Stuttgart, Germany</conf-loc>, pp. <fpage>1</fpage>&#x2013;<lpage>6</lpage>, <year>2018</year>.</mixed-citation></ref>
<ref id="ref-13"><label>[13]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>P.</given-names> <surname>Ocheja</surname></string-name>, <string-name><given-names>B.</given-names> <surname>Flanagan</surname></string-name>, <string-name><given-names>H.</given-names> <surname>Ueda</surname></string-name> and <string-name><given-names>H.</given-names> <surname>Ogata</surname></string-name></person-group>, &#x201C;<article-title>Managing lifelong learning records through blockchain</article-title>,&#x201D; <source>Research and Practice in Technology Enhanced Learning</source>, vol. <volume>14</volume>, pp. <fpage>1</fpage>&#x2013;<lpage>19</lpage>, <year>2019</year>.</mixed-citation></ref>
<ref id="ref-14"><label>[14]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>F.</given-names> <surname>Hua</surname></string-name>, <string-name><given-names>Y.</given-names> <surname>Ding</surname></string-name>, <string-name><given-names>J.</given-names> <surname>Sun</surname></string-name>, <string-name><given-names>J.</given-names> <surname>Li</surname></string-name> and <string-name><given-names>W.</given-names> <surname>Shen</surname></string-name></person-group>, &#x201C;<article-title>A blockchain-based trusted education and degree certification system</article-title>,&#x201D; <source>Cyberspace Security</source>, vol. <volume>11</volume>, no. <issue>9</issue>, pp. <fpage>9</fpage>&#x2013;<lpage>18</lpage>, <year>2020</year>.</mixed-citation></ref>
<ref id="ref-15"><label>[15]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>W.</given-names> <surname>Yuan</surname></string-name>, <string-name><given-names>B.</given-names> <surname>Yan</surname></string-name>, <string-name><given-names>W.</given-names> <surname>Li</surname></string-name>, <string-name><given-names>L.</given-names> <surname>Hao</surname></string-name> and <string-name><given-names>H.</given-names> <surname>Yang</surname></string-name></person-group>, &#x201C;<article-title>Blockchain-based medical health record access control scheme with efficient protection mechanism and patient control</article-title>,&#x201D; <source>Multimedia Tools and Applications</source>, vol. <volume>82</volume>, pp. <fpage>16279</fpage>&#x2013;<lpage>16300</lpage>, <year>2022</year>; <pub-id pub-id-type="pmid">36404935</pub-id></mixed-citation></ref>
<ref id="ref-16"><label>[16]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>P.</given-names> <surname>Bagga</surname></string-name>, <string-name><given-names>A. K.</given-names> <surname>Das</surname></string-name>, <string-name><given-names>V.</given-names> <surname>Chamola</surname></string-name> and <string-name><given-names>M.</given-names> <surname>Guizani</surname></string-name></person-group>, &#x201C;<article-title>Blockchain-envisioned access control for Internet of Things applications: A comprehensive survey and future directions</article-title>,&#x201D; <source>Telecommunication Systems</source>, vol. <volume>81</volume>, pp. <fpage>125</fpage>&#x2013;<lpage>173</lpage>, <year>2022</year>; <pub-id pub-id-type="pmid">35879968</pub-id></mixed-citation></ref>
<ref id="ref-17"><label>[17]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>L.</given-names> <surname>Zhang</surname></string-name>, <string-name><given-names>Y.</given-names> <surname>Zhang</surname></string-name>, <string-name><given-names>Q.</given-names> <surname>Wu</surname></string-name>, <string-name><given-names>Y.</given-names> <surname>Mu</surname></string-name> and <string-name><given-names>F.</given-names> <surname>Rezaeibagha</surname></string-name></person-group>, &#x201C;<article-title>A secure and efficient decentralized access control scheme based on blockchain for vehicular social networks</article-title>,&#x201D; <source>IEEE Internet of Things Journal</source>, vol. <volume>9</volume>, no. <issue>18</issue>, pp. <fpage>17938</fpage>&#x2013;<lpage>17952</lpage>, <year>2022</year>.</mixed-citation></ref>
<ref id="ref-18"><label>[18]</label><mixed-citation publication-type="conf-proc"><person-group person-group-type="author"><string-name><given-names>H.</given-names> <surname>Shafagh</surname></string-name>, <string-name><given-names>L.</given-names> <surname>Burkhalter</surname></string-name>, <string-name><given-names>A.</given-names> <surname>Hithnawi</surname></string-name> and <string-name><given-names>S.</given-names> <surname>Duquennoy</surname></string-name></person-group>, &#x201C;<article-title>Towards blockchain-based auditable storage and sharing of IoT data</article-title>,&#x201D; in <conf-name>Proc. of the 2017 on Cloud Computing Security Workshop</conf-name>, <conf-loc>Dallas, USA</conf-loc>, pp. <fpage>45</fpage>&#x2013;<lpage>50</lpage>, <year>2017</year>.</mixed-citation></ref>
<ref id="ref-19"><label>[19]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>Y.</given-names> <surname>Zhang</surname></string-name>, <string-name><given-names>S.</given-names> <surname>Kasahara</surname></string-name>, <string-name><given-names>Y.</given-names> <surname>Shen</surname></string-name>, <string-name><given-names>X.</given-names> <surname>Jiang</surname></string-name> and <string-name><given-names>J.</given-names> <surname>Wan</surname></string-name></person-group>, &#x201C;<article-title>Smart contract-based access control for the Internet of Things</article-title>,&#x201D; <source>IEEE Internet of Things Journal</source>, vol. <volume>6</volume>, no. <issue>2</issue>, pp. <fpage>1594</fpage>&#x2013;<lpage>1605</lpage>, <year>2019</year>.</mixed-citation></ref>
<ref id="ref-20"><label>[20]</label><mixed-citation publication-type="conf-proc"><person-group person-group-type="author"><string-name><given-names>O.</given-names> <surname>Alphand</surname></string-name>, <string-name><given-names>M.</given-names> <surname>Amoretti</surname></string-name>, <string-name><given-names>T.</given-names> <surname>Claeys</surname></string-name>, <string-name><given-names>S. D.</given-names> <surname>Asta</surname></string-name>, <string-name><given-names>A.</given-names> <surname>Duda</surname></string-name> <etal>et al.,</etal></person-group> &#x201C;<article-title>IoTChain: A blockchain security architecture for the Internet of Things</article-title>,&#x201D; in <conf-name>2018 IEEE Wireless Communications and Networking Conf. (WCNC)</conf-name>, <conf-loc>Barcelona, Spain</conf-loc>, pp. <fpage>1</fpage>&#x2013;<lpage>6</lpage>, <year>2018</year>.</mixed-citation></ref>
<ref id="ref-21"><label>[21]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>S.</given-names> <surname>Erdtman</surname></string-name>, <string-name><given-names>L.</given-names> <surname>Seitz</surname></string-name>, <string-name><given-names>E.</given-names> <surname>Wahlstroem</surname></string-name>, <string-name><given-names>G.</given-names> <surname>Selander</surname></string-name> and <string-name><given-names>H.</given-names> <surname>Tschofenig</surname></string-name></person-group>, <source>Authentication and Authorization for Constrained Environments (ACE)</source>, <year>2017</year>. [<comment>Online</comment>]. Available: <ext-link ext-link-type="uri" xlink:href="https://datatracker.ietf.org/doc/html/draft-ietf-ace-oauth-authz-07">https://datatracker.ietf.org/doc/html/draft-ietf-ace-oauth-authz-07</ext-link> (<comment>accessed on 30/10/2023</comment>)</mixed-citation></ref>
<ref id="ref-22"><label>[22]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>Q.</given-names> <surname>Xia</surname></string-name>, <string-name><given-names>E. B.</given-names> <surname>Sifah</surname></string-name>, <string-name><given-names>K. O.</given-names> <surname>Asamoah</surname></string-name>, <string-name><given-names>J.</given-names> <surname>Gao</surname></string-name>, <string-name><given-names>X.</given-names> <surname>Du</surname></string-name> <etal>et al.,</etal></person-group> &#x201C;<article-title>MeDShare: Trust-less medical data sharing among cloud service providers via blockchain</article-title>,&#x201D; <source>IEEE Access</source>, vol. <volume>5</volume>, pp. <fpage>14757</fpage>&#x2013;<lpage>14767</lpage>, <year>2017</year>.</mixed-citation></ref>
<ref id="ref-23"><label>[23]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>Q.</given-names> <surname>Xia</surname></string-name>, <string-name><given-names>E. B.</given-names> <surname>Sifah</surname></string-name>, <string-name><given-names>A.</given-names> <surname>Smahi</surname></string-name>, <string-name><given-names>S.</given-names> <surname>Amofa</surname></string-name> and <string-name><given-names>X.</given-names> <surname>Zhang</surname></string-name></person-group>, &#x201C;<article-title>BBDS: Blockchain-based data sharing for electronic medical records in cloud environments</article-title>,&#x201D; <source>Information</source>, vol. <volume>8</volume>, pp. <fpage>44</fpage>, <year>2017</year>.</mixed-citation></ref>
<ref id="ref-24"><label>[24]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>S.</given-names> <surname>Wang</surname></string-name>, <string-name><given-names>X.</given-names> <surname>Wang</surname></string-name> and <string-name><given-names>Y.</given-names> <surname>Zhang</surname></string-name></person-group>, &#x201C;<article-title>A secure cloud storage framework with access control based on blockchain</article-title>,&#x201D; <source>IEEE Access</source>, vol. <volume>7</volume>, pp. <fpage>112713</fpage>&#x2013;<lpage>112725</lpage>, <year>2019</year>.</mixed-citation></ref>
<ref id="ref-25"><label>[25]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>H.</given-names> <surname>Liu</surname></string-name>, <string-name><given-names>D.</given-names> <surname>Han</surname></string-name> and <string-name><given-names>D.</given-names> <surname>Li</surname></string-name></person-group>, &#x201C;<article-title>Fabric-IoT: A blockchain-based access control system in IoT</article-title>,&#x201D; <source>IEEE Access</source>, vol. <volume>8</volume>, pp. <fpage>18207</fpage>&#x2013;<lpage>18218</lpage>, <year>2020</year>.</mixed-citation></ref>
<ref id="ref-26"><label>[26]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>D.</given-names> <surname>Hardt</surname></string-name></person-group>, &#x201C;<article-title>The OAuth 2.0 authorization framework</article-title>,&#x201D; <source>Internet Requests for Comments</source>, vol. <volume>6749</volume>, pp. <fpage>1</fpage>&#x2013;<lpage>76</lpage>, <year>2012</year>.</mixed-citation></ref>
<ref id="ref-27"><label>[27]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>R. L.</given-names> <surname>Rivest</surname></string-name>, <string-name><given-names>L. M.</given-names> <surname>Adleman</surname></string-name> and <string-name><given-names>M. L.</given-names> <surname>Dertouzos</surname></string-name></person-group>, &#x201C;<article-title>On data banks and privacy homomorphisms</article-title>,&#x201D; <source>Foundations of Secure Computation</source>, vol. <volume>4</volume>, pp. <fpage>169</fpage>&#x2013;<lpage>179</lpage>, <year>1978</year>.</mixed-citation></ref>
<ref id="ref-28"><label>[28]</label><mixed-citation publication-type="conf-proc"><person-group person-group-type="author"><string-name><given-names>D.</given-names> <surname>Boneh</surname></string-name>, <string-name><given-names>G. D.</given-names> <surname>Crescenzo</surname></string-name>, <string-name><given-names>R. M.</given-names> <surname>Ostrovsky</surname></string-name> and <string-name><given-names>G.</given-names> <surname>Persiano</surname></string-name></person-group>, &#x201C;<article-title>Public key encryption with keyword search</article-title>,&#x201D; in <conf-name>Int. Conf. on the Theory and Application of Cryptographic Techniques</conf-name>, <conf-loc>Interlaken, Switzerland</conf-loc>, vol. <volume>3027</volume>, pp. <fpage>506</fpage>&#x2013;<lpage>522</lpage>, <year>2004</year>.</mixed-citation></ref>
<ref id="ref-29"><label>[29]</label><mixed-citation publication-type="journal"><person-group person-group-type="author"><string-name><given-names>Y.</given-names> <surname>Yang</surname></string-name>, <string-name><given-names>Y.</given-names> <surname>Zhao</surname></string-name>, <string-name><given-names>J.</given-names> <surname>Zhang</surname></string-name>, <string-name><given-names>J.</given-names> <surname>Huang</surname></string-name> and <string-name><given-names>Y.</given-names> <surname>Gao</surname></string-name></person-group>, &#x201C;<article-title>Recent development of theory and application on homomorphic encryption</article-title>,&#x201D; <source>Journal of Electronics and Information Technology</source>, vol. <volume>43</volume>, no. <issue>2</issue>, pp. <fpage>475</fpage>&#x2013;<lpage>487</lpage>, <year>2020</year>.</mixed-citation></ref>
</ref-list>
</back></article>