Risks of password re-use

Tip: Choose Save as PDF in the print dialog to download. Use A4 paper size.

Risks of password re-use

Name:
Date:
Class:

Quick Questions

Shade in the A or B circle for each question.

1. Mia uses the same password for her email, her game account and her school login. One site is hacked. What is the risk?
A Attackers can try that password on her other accounts and unlock them too
B Only the hacked site is at risk because her other accounts are separate
2. Which statement about a data breach is correct?
A Stolen passwords from a breach can only ever be used on the hacked site
B Stolen passwords from a breach may be tried on other websites
3. Which choice is the safer way to set up passwords?
A A different password for every account
B One easy-to-remember password for every account
4. Ravi's password leaks from a small gaming site. He used the same password for his email. What is likely to happen next?
A Attackers try the leaked password on his email and other sites
B Nothing, because email accounts can't be reached with a leaked password
5. Why is password re-use compared to a domino effect?
A Each account is protected by the one before it in a line
B One account falling can make the other accounts fall one after another

Match the Pairs

Draw a line connecting each item on the left to its match on the right.

Left columnRight column
1password re-use AThe same password is used on every account, so one data breach lets attackers unlock the game, email and school accounts like a row of dominoes falling. Each account needs its own unique password.
2credential stuffing Bshop_site.password = "Blue!Tiger7"; email.password = "Quiet-Moon-Bike-42"; bank.password = "Red$Kite9Sun"
3A data breach on one site leaks a password that is also used on email and banking accounts, so all of them are at risk CUsing the same password on many accounts, so one leaked password can unlock all of them
4Using a different password for each account stops one breach from unlocking the others Dshop_site.password = "cat123"; email.password = "cat123"; bank.password = "cat123"
5game.password = "Sunny2024"; email.password = "Sunny2024"; school.password = "Sunny2024" EAttackers trying passwords stolen in a data breach on other websites to see where else they work
6if breach("gameSite"): change_password("gameSite") FOnly the breached site's password is changed. If that password was re-used, attackers can still unlock other accounts, so every account sharing it must be changed too.

Definitions

password re-use

Fill in the Blanks

Complete each line of code by filling in the missing parts.

1.
shopPass = "cat123" bankPass = ________
2.
___ site in otherSites: login(site, stolenPass)
3.
samePass = True if ________: print("Every account is at risk")
4.
accounts = 5 reused = True unlocked = ________ if reused else 1
5.
if shopPass __ bankPass: print("Re-use risk!")

Spot the Error

Shade in the letter of the line that contains an error.

Question 1
A a_pw = "dog2020"
B b_pw = a_pw
C breached = True
D if breached and a_pw != b_pw:
E print("b is at risk")
Question 2
A sites = ["mail", "shop"]
B for site in sites:
C print("Try on" site)
Question 3
A accounts = "5"
B passwords = 1
C if passwords < accounts:
D print("Password re-used")
Question 4
A leaked = "sun123"
B my_pw == "sun123"
C if leaked == my_pw:
D print("Change it now")
Question 5
A stolen_pw = "sun123"
B sites = ["mail", "shop"]
C for s of sites:
D print(s, "unlocked")

Answer Key

Risks of password re-use
Section A: Quick Questions
Q1
A — Attackers can try that password on her other accounts and unlock them too
Q2
B — Stolen passwords from a breach may be tried on other websites
Q3
A — A different password for every account
Q4
A — Attackers try the leaked password on his email and other sites
Q5
B — One account falling can make the other accounts fall one after another
Section B: Match the Pairs
Q1
password re-use → Using the same password on many accounts, so one leaked password can unlock all of them
Q2
credential stuffing → Attackers trying passwords stolen in a data breach on other websites to see where else they work
Q3
A data breach on one site leaks a password that is also used on email and banking accounts, so all of them are at risk → shop_site.password = "cat123"; email.password = "cat123"; bank.password = "cat123"
Q4
Using a different password for each account stops one breach from unlocking the others → shop_site.password = "Blue!Tiger7"; email.password = "Quiet-Moon-Bike-42"; bank.password = "Red$Kite9Sun"
Q5
game.password = "Sunny2024"; email.password = "Sunny2024"; school.password = "Sunny2024" → The same password is used on every account, so one data breach lets attackers unlock the game, email and school accounts like a row of dominoes falling. Each account needs its own unique password.
Q6
if breach("gameSite"): change_password("gameSite") → Only the breached site's password is changed. If that password was re-used, attackers can still unlock other accounts, so every account sharing it must be changed too.
Section C: Definitions
Q1
password re-use — Using one password on many accounts. If a data breach leaks it, attackers try it on other sites and can unlock every account that shares it.
Section D: Fill in the Blanks
Q1
shopPass = "cat123" bankPass = shopPass
Q2
for site in otherSites: login(site, stolenPass)
Q3
samePass = True if samePass: print("Every account is at risk")
Q4
accounts = 5 reused = True unlocked = accounts if reused else 1
Q5
if shopPass == bankPass: print("Re-use risk!")
Section E: Spot the Error
Q1
D — The check should use == to test whether both accounts share the same password. With !=, the warning only appears when the passwords are different, which hides the re-use risk.
Q2
C — A comma is missing between the two print arguments. It should be print("Try on", site) so the attacker tries the stolen password on every site.
Q3
A — accounts should be the number 5, not the string "5". Comparing a number with a string causes an error. It should be accounts = 5.
Q4
B — A single = is needed to store a value in the variable my_pw. Using == compares instead, so my_pw is never created. It should be my_pw = "sun123".
Q5
C — Python loops use the word in, not of. It should be for s in sites: so the stolen password is tried on each site in the list.