I have an account in an online banking system and they have the FAQ with something like this:

How secure is the <Online Banking System Name>?

Each page you view and any information submitted on <Online Banking System Name> is encrypted between the client's computer and the <Online Banking System Name> server using 128-bit SSL...

Sensitive data is encrypted

Sensitive data such as the client's <Online Banking System Name> password is encrypted using a one-way 160-bit hash cryptographic algorithm that turns an arbitrary-length input into a fixed-length binary value, and this transformation is one-way, that is, given a hash value it is statistically infeasible to recreate a document that would produce this value...

Does this make their online banking system more prone to malicious attack?

  • 3
    and who says that they're telling you the truth? They could be saying that to misled wannabe hackers that would attempt to crack the totally random 160-bit hash instead of that innocent-looking 256-bit session cookie. In any case, it's a fairly safe assumption that your real enemies have infiltrated the office of whoever had made your software system; therefore modern systems are designed so that knowing how the system works only provides marginal benefit in cracking the system.
    – Lie Ryan
    Mar 28, 2012 at 10:07
  • 8
    I find this a very good thing, it actually enables me as a customer to evaluate their security! Keeping these things secret is just security by obscurity, which is generally not helpful at all.
    – Legolas
    Mar 28, 2012 at 11:55
  • 2
    Having worked in some financial institutions, chances are the institution is posting the actual algorithm specs... Mar 28, 2012 at 13:26
  • So they user RIPEMD-160 without salting? And without an iterative key derivation scheme? Oh dear :P
    – drxzcl
    Mar 30, 2012 at 12:18

5 Answers 5


Is it alright to tell everyone your encryption information?

It's not just alright, it's actually a design feature of modern ciphers. The whole concept of cryptography is that you can freely publish the algorithm used, but must keep secret a specific piece of information, called the key.

password is encrypted using a one-way 160-bit hash cryptographic algorithm

Encrypted is the wrong word here - this is not encryption; rather, it's hashing. Encryption is a reversible process where recovery of the data is the aim of the game. A hash function, however, is designed such that it is "one way", i.e. it is trivial to take a given input and produce the hash, but hard to go backwards.

If you think about it, this makes an awful lot of sense - the bank don't need to know your password; they only need to know that the person entering the password has entered the same one as you initially told them. So, by storing the hash of your password, they can compare future password inputs against that password and voila! They need not know the password, but they can check it.

Technically, they're on the right lines; 160 bits suggests an SHA1 or RIPEMD160 algorithm. However, if a simple hash is all they do, there is more they can do to improve security:

  • Use a salt value, ideally uniquely generated per password.
  • Use a slow hashing function such as PBKDF2.
  • 10
    Encrypted is the wrong word here I think that if I walk up to a non-techie and say one-way encryption, they will know what I mean, but if I say cryptographic hash, they are less likely to know what it means, unless I again say one-way, and I may even need to firm things up by saying it is like encryption. -- Just guessing here, a better phrasing might be Technically it is called hashing, not encryption because encryption is specifically not a one-way only process. Mar 28, 2012 at 12:52
  • 2
    Bailey is right. It is better to communicate than to be right. Also, +1 on the answer. The best cryptographic functions don't depend on the algorithm being secret; rather the output reversed to input being hard to generate. For further reading, consider looking up pidgeon hole principle.
    – Jeff
    Mar 28, 2012 at 16:21

The information that they're providing is relatively standard stuff. In the case of protecting data in transit, 128-bit SSL is a standard mechanism and knowning that it's in use wouldn't provide an attacker significant benefit.

On the encryption of sensitive data, apart from a niggle that they're describing hashing and not encryption, password hashing is again a standard process, so telling people that they're doing it shouldn't materially make them more prone to attack.


For the SSL security: there is no harm in telling it because it is sent in the clear as part of the connection protocol anyway. The client sends the list of ciphers that it supports, the server chooses one and sends back the information to the client; this happens, necessarily, before any encryption takes place, so it is visible to anybody spying on the network. See the SSL/TLS specification (message ServerHello, section

For the password hashing: the password hashing the bank uses is information which is incarnated as code on some machine. Several computers have that code. The people who worked on it also know the algorithm; this probably includes a rather long list of consultants, past interns and third-party vendors. If they did their development correctly, the specifications of their password hashing mechanism is described in various documents, many of which likely to have been printed and to rest on anonymous shelves somewhere. Thus, this information cannot be considered as really secret. Corollary: disclosing it makes no extra harm.

For the general case: the big advance in the field of cryptology in the post-WWII years was the split of ciphers between the algorithm and the key. This was done precisely because it was observed that implementations of algorithms (such as the Enigma machine) were hard to keep secret -- much harder than a short piece of data, which could be, if necessary, memorized and typed again when needed. The key concentrates the secret. The algorithm is considered public, and designed such that making it public does not degrades its security. As a (big) bonus, public disclosure of algorithms allows for external reviews, and there is no better method to validate security than to let many specialists try to break it for some time (indeed, there is no other method at all, when you come down to it). This is how we now have fine ciphers and hash functions: because people in the early 1970s decided to make cryptography a public research field.


Does this make their online banking system more prone to malicious attack?

No in any way - they don't disclosure any sensitive data, only description of used methods and technologies


I don't think it makes them more prone to malicious attack in the real world -- probably it makes them less prone to attack, because the fact they've published some details of a not-completely-useless mechanism, that puts them well outside the low-hanging fruit for a random/non-targeted attack.

However, the information they have provided would give a determined attacker some potentially useful clues:

  • "160-bits" indicates which hash functions they might be using -- if SHA1 or RIPEMD160 were found in the future to have significant algorithmic weaknesses (and the bank was still using them) that might help an attacker
  • There is no mention of either salting or multiple iterations in the hashing (both of which should be standard practice) which might encourage an attacker to attempt password db theft for offline cracking e.g. using rainbow tables.
  • They describe secure hashing as being used to sensitive information "such as your password", but hashing is really only applicable to passwords/authenticators, not to sensitive information generally. They don't mention any other mechanism (such as normal encryption) so perhaps any other sensitive data they hold has no specific protection.

But getting a bunch of passwords from engadget/Sony/DHS/random forum and hoping for password and username re-use is probably a much more practical attack than directly attacking this bank's online presence.

  • Regarding salting and multiple iterations, they're probably trying to keep the explanation simple enough for non-techies to understand.
    – Jonathan
    Mar 30, 2012 at 13:48

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.