I'm working on a project which asks fellow students to share their original text data for further analysis using data mining techniques, and, I think it would be appropriate to anonymize student names with their submissions.

Setting aside the better solutions of a url where students submit their work and a backend script inserts the anonymized ID, What sort of solutions could I direct students to implement on their own to anonymized their own names?

I'm still a noob in this area. I don't know what are the norms. I was thinking the solution could be a hashing algorithm. That sounds like a better solution than making up a fake name as two people could pick the same fake name.possible people could pick the same fake name. What are some of the concerns I should be aware of?

  • 2
    $\begingroup$ Why collect the names at all? $\endgroup$ – Emre Dec 12 '14 at 8:33
  • $\begingroup$ Records need to be unique, and everybody knows their own name (that sounds sarcastic, but it's just simplicity). $\endgroup$ – xtian Dec 13 '14 at 13:43

I suspected you were using the names as identifiers. You shouldn't; they're not unique and they raise this privacy issue. Use instead their student numbers, which you can verify from their IDs, stored in hashed form. Use the student's last name as a salt, for good measure (form the string to be hashed by concatenating the ID number and the last name).

| improve this answer | |
  • $\begingroup$ I get the point, but just to be clear, it sounds like you're mixing two options. The first is the option to take student ID together with the name, which would be likely unique and somewhat obscure to anyone who would obtain the data from the internet. Plus a second option to take this encoded ID+Lname and has that as well. Plus a further measure to use a salt of their last name. In other words, pre-computer I imagine the ID+Lname could be an acceptable obfuscation? $\endgroup$ – xtian Dec 14 '14 at 1:17
  • $\begingroup$ No, I did not say to take the PIN and the name; just the PIN, as it is already unique. Using the last name as the salt was just a suggestion; you can use any user-specific information. $\endgroup$ – Emre Dec 14 '14 at 1:36

A standard practice in psychology (where you want to code participants in order to link different measurements together) is to have participants choose their mother's maiden name initials and birthdate, e.g., in the format XX-YYMMDD.

This if course can still run into conflicts. Then again, I don't think there is any surefire conflict-free anonymization algorithm your students could do without knowing all the other students. Mothers' names and birthdates could be identical, own birthdates could be identical, shoe sizes could be, favorite superhero characters... The only thing I could think of would be (US) Social Security numbers, but you really don't want to use them.

Bottom line: anonymize on the backend. Or, as @Emre suggests, think about whether you really need an identifier at all. Maybe the DB-generated index is enough?

| improve this answer | |
  • $\begingroup$ I wasn't aware of those alternative naming schemes. Thank you. On the conflict issue, a high vote answer on SO suggests this about SHA-1, "To address the birthday paradox, a database with 10^18 (a million million million) entries has a chance of about 1 in 0.0000000000003 of a collision." $\endgroup$ – xtian Dec 13 '14 at 13:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.