Cybersecurity

Integrity

Integrity is the certainty that information is accurate.

Although confidentiality is the most well-known aspect of information security, integrity may be the most important. In considering the difference between the two, imagine an online banking system. Confidentiality dictates that only the account’s owner has access to the information. Integrity guarantees that the information is correct. If every time the page is refreshed, a new (and incorrect) bank balance is shown, then the confidentiality of the information is arguably less important than its integrity.

We will discuss bits (binary digits) in detail in Unit 3: Data Representation, but for now, at a high level, imagine that your bank balance is encoded using only zeroes and ones.

So, your balance of $1,000 might be stored in the bank’s database as:

0000001111101000

However, in transmission between the bank’s database in Switzerland and your home computer, one of the bits gets flipped from a 1 to a 0:

      X
0000000111101000

When you view your bank balance, instead of the expected $1,000, you see $488 instead! One little binary digit just cost you half of your money!

Computer scientists have created an entire subfield called “coding theory” devoted to solving problems such as these.

Can you brainstorm some ways to protect against this type of error?

Repetition

TIMMY: You’re dead as a doornail, Smalls.
TOMMY: You’re dead as a doornail, Smalls.
TIMMY: Nice knowing you.
TOMMY: Nice knowing...
TIMMY: ...shut up, Tommy.

—Timmy and Tommy “Repeat” Timmons from The Sandlot

One of the simplest ways to detect errors such as this is to simply repeat what you send multiple times.

  • How might this help resolve errors?
  • Is it guaranteed to resolve errors?
  • What is a drawback of using this method?

Can you brainstorm any other methods to present data to guarantee its correctness?