Advanced Topics in Computer Security CS643 Course project This project will be done collectively by the entire class. Several of the parts can be done in parallel and are not meant to be done sequentially. Part I: Electronic Medical Records (EMR) format survey For the first part of the assignment, you will research data formats used to encode electronic medical records. The deliverable will be a survey paper highlighting the to four formats and comparing and contrasting them. You must include Google Health. For each of the top four systems, identify, among other things: - how widely it is used - the availability of the format for research purposes - give several examples of how different types of records are encoded - describe the software that is available to perform operations on the records - discuss any security issues related to that format (if any) - collect or generate at least 20 different EMRs with fake data in each format The survey paper, along with the collection of records is due on February 10. Parts II & III should be done in parallel. Part II: Google Health Using Google's developer sandbox at https://www.google.com/h9, set up a Google health account for four hypothetical patients with different medical conditions. Create records for their various lab tests and doctor's visits. All the information should be faked. Research what types of export formats exist and how the information you've stored in Google Health can be operated on from an API via a third party program or exported to an external device such as a smartphone. Write a report about using Google Health for EMRs. The report on google health is due on February 17. Part II: Mobile phone platform For this part of the project, you will begin to build an application on Google Android. The first step is to familiarize yourself with Google's open source mobile phone platform and Google's open source emulator for Android phones. The first week should be spent installing the system and experimenting with writing code on the platform. Next, pick an open data format for EMRs that you studied in the survey project above, and write an application for Android that can take EMRs as input and store them on the phone in the same data format that they are stored in the EMR. For example, if you choose Google Health, your application should be able to download records from Google Health and store them on an Android phone. This capability must be completed by February 24. On February 24, you will demo the capability in class, and we will use that class period to discuss the current project and the remaining parts. Be prepared to present the work on google health's sandbox as well. Part III: Attribute Based Encryption for EMRs (a) Role Based Access Control. In this part, you will be given an access control matrix for a hypothetical patient with certain medical conditions. Design an ABE scheme for 10 different medical records that this person could have. Use public keys that represent "roles" such as doctor, nurse, pharmacist, etc. Recall that an access policy consists of any combination of AND, OR or THRESHOLD gates. Find reasonable applications for as diverse a collection of policies as possible. (b) Key Policy Encryption. Using the medical records you collected/generated in the previous sections of this assignment, construct a design for a parsing engine that will process medical records and automatically "tag" the data with attributes for encryption. Propose various policies that could be embedded in the key that would give reasonable access controls to various data collections. Consider various possible applications: research, billing, insurance, treatment. (c) Format extensions. Propose an update to the existing EMR formats that will permit self-protection of medical records using the ABE frameworks discussed above. The design is due March 10 Using Matt Green's ABE library, implement an access control application that restricts who can access each medical record based on possession of a key representing that person's role. The application should run on the emulated Android phone. Records should be stored encrypted and only be viewable if the proper private key is presented. Records may be stored on the phone and/or in a remote data store such as Google Health. You should consider various systems issues such as (a) where the Private Key Generator (PKG) will live, (b) how users and doctors will authenticate themselves to obtain keys, (c) how the records will be formatted within an existing standard. The final project is due on April 26. On April 26 and 28, the students will give a presentation on the entire project, along with demos. Each student will focus on a different part of the project that they were most involved in.