Keeping a Secret, that is, Data Confidentiality

--Originally published at Bytes of Mind

This time, we are going to be talking about data confidentiality and how it was handled in my STATS project. To give a little recap, there is more to confidentiality than just making data private,rather, it’s about keeping the needed information private, and letting the user know what it needs to know.

On our project we were handling four different types of users: students, teachers, principal and admin, and each had a different level of access to information. First we have the students, who are able to see their average scores based on they perform on the game Mateoro. Then we have teachers, who can see the average score for each student in their class, an average of the whole group and a comparison between students. After that we have the principal, who can see the same information as a teacher but for every group in the school. And finally we have the admin, who can’t see test results, but is able to add new users (with the exception of a principal) to the or edit some of their information (such as name, date of birth, class, etc.). This is deliberately handled such that students can’t compare their scores through our platform, or that teachers can’t measure the progress of classes not related to them.

This ensures that data is confidential between users, but what about the database? Well, once again, this is where the power of encryption comes in. By running our data through an encryption algorithm we can ensure that data can’t be interpreted even if someone can get their hands on it. Thus, we can ensure that the data can reach their respective users while keeping it safe from people looking from the outside or even from the inside, since the data is basically useless without

Continue reading "Keeping a Secret, that is, Data Confidentiality"

Keeping a Secret, that is, Data Confidentiality

--Originally published at Bytes of Mind

This time, we are going to be talking about data confidentiality and how it was handled in my STATS project. To give a little recap, there is more to confidentiality than just making data private,rather, it’s about keeping the needed information private, and letting the user know what it needs to know.

On our project we were handling four different types of users: students, teachers, principal and admin, and each had a different level of access to information. First we have the students, who are able to see their average scores based on they perform on the game Mateoro. Then we have teachers, who can see the average score for each student in their class, an average of the whole group and a comparison between students. After that we have the principal, who can see the same information as a teacher but for every group in the school. And finally we have the admin, who can’t see test results, but is able to add new users (with the exception of a principal) to the or edit some of their information (such as name, date of birth, class, etc.). This is deliberately handled such that students can’t compare their scores through our platform, or that teachers can’t measure the progress of classes not related to them.

This ensures that data is confidential between users, but what about the database? Well, once again, this is where the power of encryption comes in. By running our data through an encryption algorithm we can ensure that data can’t be interpreted even if someone can get their hands on it. Thus, we can ensure that the data can reach their respective users while keeping it safe from people looking from the outside or even from the inside, since the data is basically useless without

Continue reading "Keeping a Secret, that is, Data Confidentiality"

Planning ahead, that is, Data Integrity

--Originally published at Bytes of Mind

In my last post I talked a bit about the project I’m working on right now, and a lot of the things I mentioned had to do with data and the way we managed it. I will use this post to continue talking about data, more specifically, keeping it’s integrity.

Let me start by saying that the first thing we did to ensure that our data was complete was to define how the information was going to be stored. We decided on using a non relational database with MongoDB to be able to link and handle our data more freely, but it’s not a silver bullet. Since we are not using SQL, there isn’t really a danger to some data schemes making no sense, but that’s why we had to be careful and make sure every single little piece of data we needed was accounted for in the way it was intended. Even though we didn’t use relational schemas we still had to create our own pseudo-schemas.

But there is more to integrity than defining the way data is going to be handled. The principle of integrity basically states that information only has value if it is correct, in other words, that it hadn’t been tampered with. So what we decided to do about this was to encrypt the data and for things such as the login the encrypted data sent had to be checked against the encrypted data stored checking if it was correct. Other things such as the result of the game were a bit more tricky, since there isn’t anything to compare them to being dynamic data, so integrity of this was kept in line more by the sheer amount of information being generated by the game time and time again, and then running the data through

Continue reading "Planning ahead, that is, Data Integrity"

Developing, that is, Integrating Security

--Originally published at Bytes of Mind

For the past four months, I’ve been working a school project that involves integrating different school courses into a single project. The project revolves around helping elementary school kids practice and start integrating math into their daily lives. I, along with other three team members, am working on a web app called Skalia, and a small game similar to Asteroids called Mateoro, where you shoot the asteroids by solving arithmetic operations within them. In short, an user, be it a student or teacher can log into Skalia, the student can play Mateoro while the teacher can monitor their progress.

mateoro_conept_art
Mateoro concept art

Along developing the web app and the game, we haven’t been forgetting about security either. One of our main concerns was how we were going to manage sensitive data. After talking for a while the team  reached the conclusion that, first and foremost, we were going to use the least possible amount of data, so in case something was compromised, the damages would be kept to a relative minimum. To keep data safe, we also decided that we were going to encrypt the data we stored, at first, it was just the usernames and passwords, but it honestly is a better idea to just encrypt everything.

Besides data management, there were some other things that had to be taken into consideration, mainly because we were going to be dealing with young kids. One of said things was going to be the way we would handle logouts for two reasons. We run a script that automates the difficulty of the game as soon as the session ends, and the other one was that we knew the kids would probably just lose the browser instead of just going login out. We had t play around with cookies for this, but

Continue reading "Developing, that is, Integrating Security"

Software Development, that is, an Ethical Responsibility

--Originally published at Bytes of Mind

Often when we talk about programming, we tend to forget about all the other non-technical aspects, as is for the case of ethics. If we do think about them, it usually tends to be a very limited view; but what would our lives be like if developers and engineers just glanced over ethics and the repercussion software could have in this continually growing technological world (spoiler: it isn’t pretty).

“Why should I care?”

Screenshot_2017-09-10-15-54-16
Some of the permissions asked by the GO Launcher android app.

This is a valid question that is not always easy to answer. By now, you should be familiar with the saying “nothing to hide, nothing fear”, and it is an argument often used by people who don’t care they are being spied by the government. The thing is, we don’t have to go that far to see how our privacy and, in some cases, even safety is compromised; we can actually willingly (albeit sometimes unknowingly) give other people access to our information.

Let’s say you want to download a new app for your phone, but before installing, you gloss over what said app needs access to, and you find there are a lot of things that you don’t feel comfortable with there. I would like to assume that you won’t download it out concern for yourself and peace of mind, but your average user isn’t really worried about these things when downloading something for their phone. Now then, maybe you don’t care about what happens to others, but try to remember that this can happen to anyone: your family, your friends, even you on a bad day.

“What can I do?”

You don’t need to be a major in ethical studies to be able to think about how the code you write can affect

Continue reading "Software Development, that is, an Ethical Responsibility"

The CIA Triad, that is, the Basis of Security

--Originally published at Bytes of Mind

3145784769_b93214e43c_b
Confidential flickr photo by Casey Marshall shared under a Creative Commons (BY) license

Software security can be such a broad concept; there are so many places where we can let our mind wander and so many things to learn that it can sometimes become a bit daunting, but before trying to delve into more complicated things we need to understand the basic ways of how software can be secure. This is where the CIA triad comes in, and yes, this is in fact does not refer to the Central Intelligence Agency, but to the Confidentiality, Integrity and Availability of data, so lets cover these concepts in a bit more detail.

Confidentiality

At first glance, confidentiality seems to revolve around keeping the information private, though this isn’t all there is to it, rather, it’s keeping the right” information private. Information needs to be handled in a need-to-know basis. Imagine a school website where students can check their own grades, you don’t really want a student being able to look at grades that aren’t his.

We have to remember that information has value, so it should be in you best interests to keep said information safe. This can be done with the use of encryption, so that only people that know the key can access the information. Encryption is so widespread now a days that there really isn’t an excuse for not using it to protect data.

Integrity

This concept refers to making sure that data isn’t being tampered with. Simple enough right? We can actually divide this into data being sent, and data being stored. In the case of the first one, we need to verify that the information being sent is valid and that it wasn’t modified along the way; as for data being stored, we have to make

Continue reading "The CIA Triad, that is, the Basis of Security"