Abstract
                                                                        Recently, with the increasing application of the Internet of Things (IoT), various IoT  environments such as smart factories, smart homes, and smart grids are being generated. In the  IoT environment, a lot of data are generated in real time, and the generated IoT data can be used  as source data for various services such as artificial intelligence, remote medical care, and finance,  and can also be used for purposes such as electricity bill generation. Therefore, data access control  is required to grant access rights to various data users in the IoT environment who need such IoT  data. In addition, IoT data contain sensitive information such as personal information, so privacy  protection is also essential. Ciphertext-policy attribute-based encryption (CP-ABE) technology has  been utilized to address these requirements. Furthermore, system structures applying blockchains  with CP-ABE are being studied to prevent bottlenecks and single failures of cloud servers, as well as  to support data auditing. However, these systems do not stipulate authentication and key agreement  to ensure the security of the data transmission process and data outsourcing. Accordingly, we  propose a data access control and key agreement scheme using CP-ABE to ensure data security in a  blockchain-based system. In addition, we propose a system that can provide data nonrepudiation,  data accountability, and data verification functions by utilizing blockchains. Both formal and informal  security verifications are performed to demonstrate the security of the proposed system. We also  compare the security, functional aspects, and computational and communication costs of previous  systems. Furthermore, we perform cryptographic calculations to analyze the system in practical  terms. As a result, our proposed protocol is safer against attacks such as guessing attacks and tracing  attacks than other protocols, and can provide mutual authentication and key agreement functions. In  addition, the proposed protocol is more efficient than other protocols, so it can be applied to practical  IoT environments.