Banks that limit the complexity of passwords? [duplicate]

This question already has an answer here:

  • What are the technical reasons for low maximum password lengths?

    14 answers

  • Bank forces me to a six-digit alphanumeric password

    3 answers

I was wondering why, when setting up a bank account, I can only use uppercase and lowercase letters and integers, with a limited password length. As far as I know, the longer the password and the more complex the password, the harder it is to decrypt the hash, assuming it's salted. Is there a reason why a bank can do this?

How should the passwords of the customers be managed?

How should the passwords of the customers be managed? By "customer", I mean, of course, people you serve, people you need to work on their belongings (their websites, their servers, their emails, or other services they generally use).

Every time I read something about password managers, I always see examples and arguments that only concern personal passwords, not passwords managed for other people. I am not sure if using a password manager for this purpose is a good idea or if there are better standard practices. What if I manage passwords for a hundred clients and get hacked? Shall I tell every customer, "Sorry, I was hacked, now we need to change your e-mail password?" A better option would be to avoid storing other people's passwords, but that would mean asking the client to provide their password each time they need to access their services (which, depending on the nature of the application, is common or rare can be) support). Many customers may not even know their passwords (or forget about them regularly or lose them regularly), for example, those needed to manage their domains or web panels, and so on, everything they never touch, but it's always still "her stuff".

So I'm wondering if there are better methods, policies or procedures to deal with these scenarios, or if the usual password manager with "All Eggs in a Basket" (mine and all eggs) is still the only solution.

Infringement – Check if my passwords are among the stolen ones

This question has been explained by Troy Hunt several times in his blog, on Twitter and in the FAQ by haveibeenpwned.com

Look here:

If you are looking for an e-mail address

When searching for an e-mail address, only the address is retrieved from memory and returned in the response. The requested address is not stored explicitly at any point. See the section "Logging" below for situations in which it can be stored implicitly.

Sensitive data breaches are not returned for public searches. They can only be viewed by using the notification service and checking ownership of the e-mail address first. Confidential violations can also be found by domain owners who can prove that they are controlling the domain using the domain lookup feature. Read why non-sensitive violations are publicly searchable.

See also the section "Logging"

And from the FAQ:

How do I know that the website is not just getting the email addresses you're looking for?

They do not do it, but it's not like that. The Site is intended solely as a free service for individuals to assess the risk associated with the account management of their account. As with any website, you should not use it if you have concerns about intent or security.

Of course, we have to trust Troy Hunt for his allegations because we can not prove that he is doing nothing else in the dealings Your Specific request.
But I think it's more than fair to say that Havepensing is a valuable service and Troy Hunt is a respected member of the Infosec community.

But suppose we do not trust Troy. What are you up to? You can tell him your e-mail address. What is the risk for you if you can simply enter any email address?

Passwords – How should I share the key of the AES algorithm in each client?

What you are trying to do is called key distribution. Key distribution requires that you use a secure channel. It can be:

  • Symmetric with a password (but then you need to distribute the password safely, so it's a chicken and egg problem).
  • A database is not considered a secure method of key sharing
  • SSL: Asymmetric encryption is one option, but in this case you can easily implement SSL / TLS in your app. Similar to HTTPS is used (in fact, it uses hybrid encryption to exchange a symmetric key, which is then used with AES or another symmetric cipher for data exchange)
  • Another option is to use a hardware token that contains the encryption key (for example, Yubikey). This can be used, for example, for mutual SSL authentication.

For the second part of your question:

  • This is very controversial, in general it depends on the use case of your application and how much data is encrypted. The more data you encrypt, the faster you have to rotate it. However, it all depends on the algorithm, etc. (for example, AES GCM mode loses protection if more than 64 GB is encrypted on the same key, see NIST SP 800-38D, Section 5.2.1.1). So there is no right answer. If you choose the SSL option, the best option is probably every 365 days.
  • Whether this variable is public or private does not matter. Note that instead of String, it should be a char array (if using a managed language such as Java or .NET) to prevent the key from being stored in a memdump when the computer crashes. The idea is that you load the key before each encryption / decryption and then overwrite the variable with 0 when you finish. This reduces the likelihood that the key will expire.

Using SSL / TLS with certificate pinning in your application is easiest because you can actually use a different, mutually agreed, symmetric key for each session you set up with your client.

What do we do if passwords are no longer secure?

We have no idea yet.

Because passwords are not unsafe due to a combination of factors.

  1. People choose bad passwords (only with X-bits entropy).
  2. Companies have a wrong password.
  3. Passwords are stored in plain text.
  4. Password hashes are created using "bad" cryptographic hash functions.

All these factors are theoretically "solvable".

  1. We could tell people to use stronger passwords.
  2. We could instruct companies to have better password policies.
  3. Companies storing passwords in clear text could receive a penalty or create "simple" password hashes.

We (and many other people) have been doing this for a long time and nothing or very little has changed. So your question is absolutely valid and has been asked many times. The problem is that nobody has a good solution yet.

Why this?
There are several basic problems: creation, storage, recovery.

Every factor that is used for authentication must be created by something or someone. It has to be stored on the client side (to transfer it to the server) and on the server side (to prove its correctness) and must be possible Create a new one if it gets lost.

All suggestions have at least one weakness in one of these categories. Take biometrics, for example:

  1. Creation: relatively simple, almost everyone has a fingerprint / veins / face
  2. Storage (client): easy for your body
  3. Memory (server): simple, either plain text (multiple images are stored) or a hash is derived (both solutions are suboptimal)
  4. Recovery at loss: not possible

There are other basic issues, such as usability, reuse of factors, privacy, etc. You can accept any new suggestion listed below and the topic of authentication research today, and you will not be able to solve at least one of these issues.

Which other solutions are discussed?
These: More biometrics (heart rate, voice, running patterns), N-factor authentication, OTP everywhere, network of trust systems, trust score system (scary!).

Encryption – KeePassXC for Managing Passwords, Threat Model: The entire world is actively trying to decrypt my password when the file is specified

I use KeePassXC in a Linux distribution to manage my passwords.

Suppose, for the argument, that the file is publicly available and the priority of the whole world for the next 100 years is to decrypt my kdbx file. No more Facebook, no further activities, the entire workforce of the world (including individuals, businesses, organizations, etc.) devotes its best efforts and knowledge 18 hours a day for the next 100 years.

Suppose for the argument that I and my computer are not in the equation (no rubber hose cryptanalysis, no system hacking, etc.), the whole world has the kdbx file, the log information (below). and some notes about the password.

Details: Encryption Algorithm: AES 256 Bit Key Derivation Function: Argon2 (KDBX4) Transformation Rounds: 11, Memory Usage 64 MiB Parallelism 4 Threads (Benchmark for 1 second delay). Only password, no key file.

Password: 49 characters that do not include words in the dictionary (perhaps just random words with three letters), but not even randomly generated.

The question is: how likely is it that the file will be decrypted within 100 years?