Authentication defintion
RFC-4949: the process of verifying a claim that a system entity or system resource has a certain attribute value
Whatis.com: the process of determining whether someone or something is who or what it is declared to be
NIST: verifying the identity of a user, process, or device, often as a prerequisite to allowing access to resources in an information system.
What is important: these definitions mention authentication of an “actor” that could be anything, even not human (software component, hw element).
Shorthand for authentication is authN or AuthC, while AuthZ is for authorization.
Authentication factors
Digital authentication model (NIST SP800.63B)

User authentication flow

Password-based authentication
Password best practices
Dictionary attack
When possible: known hash algorithm and password hash values.
Pre-computation: for each word in the dictionary store in the DB hash(word)
Attack: check hash value of unknown password against DB
Pre-computation is key, because creating the DB could take more than the password lifetime.
Rainblow table
Space-time tradeoff technique to store (and lookup) an exhaustive hash table (less space, more time).
Makes exhaustive attack feasible for certain password sets.
Example for 12 digits password:
Rainbow table fusion
The reduction function is going from a hash to one possible password, there could be two different hashes that generates the same password.
Password salting
passwords in MySQL
the user table contains user passwords that aren’t salted, just double hashed with SHA1.
Strong authN
ECB strong auth def.
PCI-DSS strong authN def.
CRA
Challenge response authentication
possible way to implement strong authentication.
a challenge is sent to the claimant from the verifier, claimant replies with solution computed using secret knowledge; then the verifier compares expected and actual response.
The challenge must be non-repeateable to avoid replay attacks. (usually the challenge is a random nonce0
Function f must be non-invertible, otherwise listeners can easily discover the shared secret by computing f-1(response, challenge)

Symmetric CRA

Mutual authentication with symmetric challenge

Attack to the symmetric challenge protocol
Here there’s Mike pretending to be Alice. Mike send to Bob the Alice’s identity (A) and Alice’s challenge (𝐶𝐴). Bob
replies with 𝐶𝐵 and 𝑒𝑛𝑐(𝐾𝐴𝐵, 𝐶𝐴 ).
t this point, Mike does not know 𝐾𝐴𝐵 and cannot compute
the response to the challenge. But at this point Mike opens a
new connection with Bob, sending again Alice’s identity (A)
but this time sends the challenge sent from Bob (𝐶𝐵). Bob
replies again with another challenge 𝐶𝐶 and 𝑒𝑛𝑐(𝐾𝐴𝐵 ,𝐶𝐵)
which is the answer to the challenge of the 1st connection.
Mike can finally provide the correct answer.

Asymmetric challenge-response systems
This time the user does not send his identity, but its X.509 certificate, which is declaring his identity and public key (the claimant has the corresponding private key ID.kPri).
R is a random nonce encrypted using claimant public key.
Claimant will then sent the verifier the original value of R if it’s true who they say they are.
Analysis:
strongest mechanism
does not require secret storage at the verifier
implemented for peer authentication in IPsec, SSH, and TLS.
Fundamental for user authentication in FIDO.
Problems:

OTP
Users have passwords valid only for one login.
Claimant receives authentication request, that must be replied by using userId; server now requests a specifie password among a list (e.g. no. 48, assuming 49th and 50th have already been used), the user sends the requests password and marks it as used.
The server has the secret used to generate the user’s password, and uses it to verify that the otp was corresponds. This makes password immune to sniffing, ‘cause next time it will be different.
Issues:

The S/KEY system
First OTP definition and implementation by Bell Labs.
MITM is possible, so needs server authentication.
Pass generation: users inserts a pass phrase, which must be minimum 8 characters long, if disclosed securty is compromised. Pass phrase is then concatenated with server seed (public), so that the same pp can be used for multiple servers.
Passwords are 64-bit, a compromise, but since they have to be inserted by humans it’s fair enough, otherwise it would take too much time.

OTP problems
uncomfortable: strange passwords.
expensive when based on hardware authenticators
paper based cannot be used by a computer (only by a human)
password provisioning (generator? SMS?)
when time is used to generate OTP, synchronization must be managed (if the attacker makes the user believe it’s 5pm, user will generate code for 5pm)
HW authenticator problems
time based otp
requires local computation
requires clock sync.
requires time-slot and authentication window
only one authenticato run per time-slot
time attacks against subscriber and verifier
sensitive database at the verifier
