The new Internet of Things (IoT) thrust is one of the most important trends in technology today. IoT systems provide sensors and actuators in our global environment, on the scale of nations and cities, to individual buildings, homes, and vehicles. In this project you will bring up an embedded sensor simulation on an new embedded platform (Intel Edison), demonstrate the hack-ability of an embedded wireless device, and then secure that communication with the Transport Layer Security protocol (successor to SSL).
This lab builds on the socket based communication you prototyped in Project 1, and the distributed system security discussion presented in Saltzer chapter 11 and Lecture 16.
A single tarball (.tar.gz) containing:
IoT systems also include the rapidly expanding world of wearable devices for the field of Wireless Health or Mobile Health (mHealth). A critical requirement of Wireless Health is the support of patient monitoring by applying remote sensors. The sensors monitor such vital signs as heart rate, pulse, blood sugar levels, and many other critical health indicators. Generally, while the devices performing the sensing are located on or near the patient's body, the data ultimately must go to a health care facility for analysis. The first step in that process is using a wireless network to move the data gathered from the patient to some other nearby machine, which typically in turn passes it over the Internet to a doctor, hospital, or other health care facility. So the sensor must not only be able to observe the patient's condition, it must also operate as a wireless host computer. In many cases, the sensor is configurable, perhaps monitoring different vital signs, or monitoring them at different frequencies, or at different levels of sensitivity. In such cases, not only must the sensor's communications and computational capabilities move data off the system, but they must accept commands controlling their behavior coming in over the wireless network.
Health data is inherently private, yet wireless networking is inherently open. Anyone who puts up an antenna within range of a wireless device will hear its signal. So unless measures were taken to protect the wireless communications from sensor to base station, eavesdroppers could learn all the information they exchange. Such a vulnerability is extremely undesirable. As discussed in the reading and lectures, the fundamental way to address this kind of vulnerability is to encrypt the data, making it incomprehensible to anyone except the sender (the Edison here) and the receiver (the base station that will pass the data to the health care facility).
These devices are now based on compact platforms including the Intel Edison IoT platform that you will be provided. This platform uses the Linux Operating System as its software base. Fortunately, the Linux system contains high quality built-in mechanisms to perform encryption and decryption. One only has to use them properly (which can be challenging, itself). You may find this TLS tutorial to be helpful.
You will check out an Edison (which must be returned at the end of the project), and bring up a heart rate monitor simulation that communicates with a server that we will provide. You will run this software and use the tshark network monitoring tool to observe the client/server communication, and demonstrate the ability to hack this communication. Finally, you will extend the application to secure client/server communication using the TLS protocol, and demonstrate both the privacy and the hack-resistance of your solution.
./udp_client.
2. Keep this command running for the full duration of part B.
./get_tshark port#
(where port# is the port on which the UDP server is running).
./set_rate <0-5>
./start_attack
This set of tasks involves improving the UDP version of the client code to provide better security, using TLS. After making the required changes, you will run your new client code and examine the output from a packet analysis tool installed at the server location. You will use this output to understand why encrypted communication channels are crucial.
In the TLS/client subdirectory of the downloaded project materials you will find a file tls_client.c. In the TLS/client subdirectory of the downloaded project materials you will find a file tls_client.c. Navigate to the folder "../heart_beat/TLS/client/" and type "make"
./tls_client.
2. Keep this command running for the full duration of part D.
./get_tshark port#
(where port# is the port on which the TLS server is running).
./set_rate <0-5>
./start_attack
PART E: Demonstration of Improved Security and Resolution of Errors
This set of tasks involves developing a new TLS client that resolves the condition leading to the behavior associated with unmatched message response noted in step 6 above. You may use the tls_client.c program to create a new program.
First, it is important to note that tls_client sends a message to the server via the SSL_write() function. It expects a matching reply via SSL_read().
However, if an unexpected reply message is sent by the server, then the return of SSL_read() will not match that of the message sent by SSL_write(). The behavior appearing in Step 7 will result. This unexpected behavior could result from multiple forms of system error or system compromise.
Your task is to resolve this behavior through two steps:
After making the required changes, you will
Points for this project will be awarded:
Value | Feature |
packaging and build | |
3% | untars expected contents |
3% | clean build w/default action |
1% | correct make dist |
3% | reasonablness of README contents |
Functionality | |
10% | Correctly Encrypted Client/Server Communication |
UDP client screen shots | |
5% | Lab4-B-1.jpg and description |
10% | Lab4-B-2.jpg and description |
5% | Lab4-B-3.jpg and description |
10% | Lab4-B-4.jpg and description |
TLS client screen shots | |
5% | Lab4-D-1.jpg and description |
10% | Lab4-D-2.jpg |
5% | Lab4-D-2 description |
5% | Lab4-D-3.jpg and description |
10% | Lab4-D-4.jpg |
5% | Lab4-D-4 description |
code/package review | |
5% | correctness/reasonableness of TLS implementation |
5% | overall clarity |
Project 4 is due before midnight on Monday June 6, 2016. Slip-days can be used on this project, but if it is turned in after June 8, you may have to take an incomplete in the class, which we will change as soon as we are able to finish the grading.
Your tarball should have a name of the form lab4-studentID.tar.gz, and should be submitted via CCLE.
We will test your work on a SEASnet GNU/Linux server running RHEL 7 (this is on lnxsrv09). You would be well advised to test your submission on that platform before submitting it.