Christina Shih Notebook - cps-vip/cps-cosimulation-env GitHub Wiki

Spring 2025

Week 1: 1/9-1/16

  • Virtually attended first class of semester, learned about the different subteams and started thinking about which specific team I wanted to join

Week 2: 1/16-1/23

  • Decided which subteam I wanted to be a part of within device modeling (devices)
  • Completed Kickoff Presentation
  • Did research into DNP3 networking protocol https://www.dpstele.com/dnp3/index.php

Week 3: 1/23-1/30

Screenshot 2025-01-30 at 2 54 56 PM

Week 4: 1/30-2/6

  • Got familiar with the existing device models that the device modeling subteam has already completed
  • Poked around Github to read through the implementation and thinking about what I can do to add to them
  • Thinking about writing test cases for existing models (but there's no way to actually run the tests...)

Week 5: 2/6-2/13

  • Discussed with my subteam what can be done at the moment
  • Device modeling should be completed by the end of the semester, Maria and Chungman already working on the rest of the device models
  • Looked into encryption for the existing device models

Week 6: 2/13-2/20

Week 7: 2/20-2/27

  • Discussed with Kaden and Sam the usefulness of encrypting device data and how to go about implementation
  • Kaden suggested looking into disk encryption for the data at rest rather than AES encryption

Week 8: 2/27-3/6

Week 9: 3/6-3/13

Week 10: 3/13-3/20

spring break, no device modeling team meeting

Week 11: 3/20-3/27

  • Outlined what variables needed to be updated for DNP3 implementation
  • Outlined which priorities should be assigned to device models for different cases

Week 12: 3/27-4/3

  • Outlined which variations should be assigned for each device data point

Week 13: 4/3-4/10

  • Haven't had much time to work on anything recently, as I was away for a week for Collegiate Club Fencing Championships.

Week 14: 4/10-4/17

  • Final presentation on 4/17
  • Introduced the device modeling subteam during the presentation and the purpose of the VIP

Week 15: 4/17-4/24


Fall 2025

Week 1: 8/20-8/27

  • As this was the last week of my internship, I was unable to attend class.

Week 2: 8/27-9/3

  • Team prepared for the kickoff presentation, I decided to switch from the Devices team to the Security team.

Week 3: 9/3-9/10

Week 4: 9/10-9/17

Week 5: 9/17-9/24

Week 6: 9/24-10/1

  • Wireshark demonstration by Will
  • Led me to think about possible injection attacks that could alter the state of the device faster than the device would normally change state and how to potentially detect them.
    • Need to implement periodic checksum? to make sure that values aren't being changed past a given threshold.
      • Potential attacks: modifying station messages (with incorrect sensor measurements / instructions)
      • Timestamps also very important
    • Detect based on suspicious source IPs or replay attacks that occur through duplicated messages
    • Potential of creating detection rules based off of simulated abnormal activity in Wireshark?
      • ex: match only source IP of 10.0.0.10 (example SCADA Master) can send DNP3 control commands

Week 7: 10/1-10/8

  • Preparation for midterm presentation- redid semester goal slides
  • Discussed with team what we can do for the rest of the semester to model what the current threat landscape looks like within our subteam.

Week 8: 10/8-10/15

  • Research into IEC61850 substation model
    • As we know, legacy protocols such as DNP3 and Modbus have significant weaknesses (no or weak encryption/authentication, poor logging).
    • IEC61850 provides more observability, which can help security by making the process of monitoring easier but it's not a 1 size fits all solution as it introduces more vulnerabilities through its connection to the internet.
    • IEC61850 is more reliable and automated, need to do more research into it but might not be a viable path for us based off of existing work.
  • https://www.mdpi.com/2079-9292/12/15/3345
  • https://ieeexplore.ieee.org/document/7066594

Week 9: 10/15-10/22

  • Looking into issues with inheritance
  • Since everything inherits from DNP3Outstation, they are inheriting access to the DNP3 control interface if I'm understanding it correctly (which gives an attacker root-level access if they have access to 1 device in the network)
    • No permission tiers resulting in devices having access to methods that can update thresholds and reset relays
    • If a bad actor gains access to 1 device in the network, they can potentially just start calling methods since there's no enforcing who's allowed to perform those actions.
    • Need to implement rw privileges / roles

Week 10: 10/22-10/29

  • Worked on threat model
  • Brainstorming what potential vulnerabilities could be exploited within the network
    • Mainly thinking about broken access control- since we have only a small number of people working on many devices, it's hard to implement access control to only the parts they are working on
    • But implementing access control should definitely be done in the future since this would put up blockers for a threat actor to move laterally though the network
  • Also need to make sure default credentials aren't being used once we move past initial implementation stage.

Week 11: 10/29-11/5

  • Worked on threat model
    • Looking into external entry points- from what the repo currently shows and what the networking team is trying to do, the DNP3 outstation level is the only place where the network can be accessed
    • Through previous research on device vulnerabilities, ensuring that the entry point is controlled is the most effective way of blocking attacks by implementing allow-lists instead of blocklists.
    • This ensures a zero-trust approach where we make sure that all traffic has to enter through specified port(s), rather than blocking ports that we think malicious traffic can come through.

Week 12: 11/5-11/12

  • Fell sick this week, was unable to do much.

Week 13: 11/12-11/19

  • Final presentation- detailed potential attack vectors and implementations to mitigate them in future semesters into the threat model and finalized the threat model diagram, wrote up bay controller and switchgear vulnerabilities.
  • Discussed future directions for the team for upcoming semesters.

Week 14: 11/19-11/26

  • Thanksgiving break

Week 15: 11/26-12/3

  • Final paper- rewrote introduction and conclusion for security team's part for this semester, expanded the threat modeling with work we did this semester, wrote the conclusion for the device modeling paper.

Spring 2025

Week 1: 1/15-1/22

  • First week- decided to switch to device security team because I wanted to work more on hardware solutions, which is something that I haven't really been able to touch on in class but have an interest in.

Week 2: 1/22-1/29

  • Discussed with new group mates how to split up work for the presentation.
  • Researched into SRAM PUFs for the kickoff presentation, which is something that we are planning on working on during this semester.
    • In our project, we want to try to generate a secure cryptographic key from a SRAM PUF, providing a secure way for devices to authenticate to the SCADA system without having to deal with local key storage in memory, as SRAM PUFs are generated when the SRAM is powered on.
    • These keys would be truly random, since silicon chips have slight manufacturing differences that are impossible to replicate, expressed through 0's and 1's in the cells of the SRAM.
    • The uniqueness of the silicon chips allows them to create secure sequences, but an error correction algorithm still allows it to be reproduced whenever needed.
  • sources:

Week 3: 1/29-2/5

  • Wasn't able to get much done this week due to interview prep (had interview on 2/5 so I was preparing for it the majority of this week).

Week 4: 2/5-2/12

  • Did research into the 2 papers that Hayden sent
    • sram puf overview
      • Attacks with probes and side channel attacks have not led to any leakage of sensitive information
      • Doesn't require much space (only a few dozen bytes are needed to create a unique identifier)
    • poc for sram puf
      • Must choose more reliable cells in memory so that the key generation is consistent across every startup.
  • Team decided to pivot to using STM32 microcontroller instead of Raspberry Pi, since it'll be a few weeks before we are all able to get Pi's to use.

Week 5: 2/12-2/19

  • Started learning Rust through Rustlings so that we individually have the skill set to work with the microcontroller.
  • Got through sections 00-04 (up to primitive types) on Rustlings.

Week 6: 2/19-2/26

  • Midterm presentation- worked on editing the status of our team's goals, as well as the overview slide for our subteam and the introduction for device security team.

Week 7: 2/26-3/5

  • Continued to learn Rust, got through to section 07 (structs).
  • Spent some time going back over earlier sections like ownership and borrowing, since memory management is important in Rust
  • Did some additional research into how SRAM PUF responses vary across temperature conditions, since it can affect startup values and introduce more bit errors than expected
    • Building a larger error correction margin into the fuzzy extractor or pre-selecting only the most stable cells helps with this problem
    • https://arxiv.org/html/2603.15320

Week 8: 3/5-3/12

  • Continued working through Rustlings, got through to section 08 (enums) and starting to get a better idea of how Rust handles data types differently from the languages I'm used to using
  • Did some more reading into fuzzy extractors and how they're used in PUF key generation to correct for bit errors that happen between power cycles
    • Since SRAM PUF responses aren't perfectly stable between startups, the fuzzy extractor takes the noisy response and reproduces a consistent cryptographic key using helper data that is stored separately
    • This is going to be important for our project since the key needs to be the same every time the device authenticates to the SCADA system.
    • https://arxiv.org/abs/1907.12144

Week 9: 3/12-3/19

  • Started looking into BCH error correction for our key generation, since it can be tuned to specific needs
  • To configure BCH, we need to work backwards from the maximum acceptable failure rate (the probability the key can't be reconstructed) and the bit error rate (the average percentage of bits that flip between power cycles)

Week 10: 3/19-3/26

  • Spring break

Week 11: 3/26-4/2

  • Got back from spring break, picked up from where I left off on Rustlings and finished section 09 (strings).
  • Did more research into BCH
    • BCH can be used with SHA256 to hash it into a usable key, with AES-128 for encryption and HMAC-SHA256 for authentication.
    • BCH(127,15,53) configuration can correct up to 20.5% of noisy bits, creating a 128-bit key.

Week 12: 4/2-4/9

  • Started putting together notes and findings for the final presentation slides. Looked back on the past semester's work, started coordinating with teammates to start splitting up parts for the final presentation.

Week 13: 4/9-4/16

  • Went home for personal family reasons, wasn't able to get much done this week.

Week 14: 4/16-4/23

  • Final week, preparing for final presentation
  • Worked on slides for security subteam introduction, PUF team goals and description of the purpose of our subteam, and the status of our tasks.
⚠️ **GitHub.com Fallback** ⚠️