BankAPI
github.com
github.com
What is the point of this? Seems to me there'd be no problem in using 3072 bit RSA keys, which makes more sense given that the lowest security symmetrical encryption algorithm permitted for use is AES128, and the difficulty of breaking AES128 is roughly equivalent to breaking 3072 bit RSA.
I'm still interested in the reasoning behind accepting 2048 bit RSA keys instead of setting a 3072 bit minimum, which corresponds to AES128 in security[1][2].
[1] http://csrc.nist.gov/publications/nistpubs/800-57/sp800-57_p... (Page 64, Table 2)
[2] http://www.emc.com/emc-plus/rsa-labs/standards-initiatives/k...
openssl s_client -connect www.google.com:443 Server public key is 2048 bit openssl s_client -connect www.twitter.com:443 Server public key is 2048 bit openssl s_client -connect www.hsbc.com:443 Server public key is 2048 bit openssl s_client -connect www.citibank.com:443 Server public key is 2048 bit
I don't know the limitations in all the legacy bank systems around the world, but I know my personal OpenPGP smart-card is limited to 3072 bits, but that card is quite modern. Maybe the limits for legacy systems is even worse.
The System Design supports multiple keys per bank, so if a stronger key length is required, keys can easily be upgraded in the future.
But, I agree the strongest key length possible should be used if possible, which is 4096 bits according to the OpenPGP specs.
We will update the specs accordingly.
If any bank for some reason cannot support 4096 bits, then I think it's fair to require at least 2048 bits, as that key length is used by a lot of high profile websites, including banks, already today. (see above list)
I'm don't understand the purpose - it's all about transmission, not data. Banks could sure do sure do with a standardised API, but is interbank message encryption a problem needing solved? I've haven't heard anything like that.
The author is very sure of it's production-readiness. If this transpires to be true, then I could easily see this spec as a good way to encrypt message-based data of all kinds. But where does this bank angle come from?
I don't think I'm comfortable with the 1960s singer-songwriter Peter Noone having this much control of your system.
</snark>
This is a grammatical pet peeve of mine[1], principally because I used to use it exclusively and was horrified when a girl I liked at the time corrected me.
For a grammar Nazi, you are rather loose with capitalization.
ttp://www.yourdictionary.com/noone#wiktionary
I saw that on one of the interactive maps on your site there's no line to/from the UK, which is hardly surprising if you are - I would be staggered if they got on board with anything outside their little circle. Are banks in mainland Europe open to this kind of innovation?
I think the main reason why BankAPI has been accepted, is actually the lack of innovation. Banks are in general very skeptic to new "unproven" technology, but as BankAPI relies on old standards like TCP/IP, OpenPGP, RSA, SHA512 and HTTPS, there is nothing "unproven" in it to be afraid of.
I've heard of a proper API once - it was only available to corporate account holders with turnover of £3m+ and the bank had to QA your code.
And yet when I took them to task for validating user passwords with `/^[\d\w]{8,16}$/` they refused to see a problem.
But then, i didn't work in anything in the area of settlement or trade execution - it was in the general area of equities advice, so we moved research, trade ideas, restricted lists, prices, performance calculations, etc.
Given that SFTP and HTTPS are doing the job mostly adequately, i'm not sure why i'd adopt BankAPI (or rather, layer BankAPI on top of the HTTPS i already have). What value does it add?
BankAPI is actually using HTTPS, but doesn't depend on SSL alone, as the files/messages are also encrypted/signed using OpenPGP. This means banks would not have to trust all the CAs who issue SSL-certificates, as the OpenPGP public keys are imported once for each bank you wish to communicate with, and won't change unless you explicitly update them.
The value it adds is the two layers of security (HTTPS+OpenPGP) and the "DeliveryReceipt" which makes it possible for both parties (the sending and the receiving bank) to prove they did send and did receive all files/messages sent over BankAPI.
It doesnt do anything except send to a validation API, which currently is down cuz i've not touched it in months, but i figured some people might find this interesting.
Denmark has had a few occasions in the last few years where this has failed because one bank failed to deliver their transactions one night.
While it's probably critical for the future of humanity for a project like this to succeed, frankly anything that leaves the trust and reputation aspects to manual negotiation as per conventional business is just lipstick on a pig. In this sense, Bitcoin is superior. For some more ambitious ideas forming in this area check out http://ifex-project.org/
[1] Quote from European Data Protection Supervisor in response to FOIA: "since at least 2001" http://www.asktheeu.org/en/request/information_on_financial_...
[2] http://www.swift.com/about_swift/shownews?param_dcr=news.dat...
The ability of the US to seize USD transaction has nothing to do with any control they might have over SWIFT. All USD transfers -- even USD transfers between two EU citizens -- hapen via a US bank, because only US banks can have a USD balance.
The actual transfers happen by way of so-called US "intermediate" banks, who perform the actual USD transfer. The process is described here: https://bitcoinfoundation.org/2012/12/international-bank-tra...
There are USD balances right across the world. Some of them are backed with cash (really!). That's fundamentally because, unlike bitcoin or company shares, currency is what's known as a 'non-consolidated' asset: ie. there is no central ledger anywhere in the world with a complete list of who owns every piece of currency on issue, like exists for Bitcoin on the blockchain.
For electronic currency, there is a central ledger (for USD it's the Federal Reserve).
Thanks for a well written description and background of SWIFT, I think it is accurate.
I have a question on this paragraph:
>While it's probably critical for the future of humanity for a project like this to succeed, frankly anything that leaves the trust and reputation aspects to manual negotiation as per conventional business is just lipstick on a pig. In this sense, Bitcoin is superior. For some more ambitious ideas forming in this area check out http://ifex-project.org/
Does "for a project like this" refer to SWIFT or BankAPI? If SWIFT, then I understand. But if BankAPI, then you have misunderstood, because it does not "leaves the trust and reputation aspects to manual negotiation", since it's decentralized and peer-to-peer (or in this context bank-to-bank), just like a lot of other successful peer-to-peer technologies of which you mentioned one.
I think banking is an artificial industry, one that doesn't really have to exist. I believe that money that is state issued, electronically issued, trust that can be quantified, reputation and physical goods are all equally valid assets for forward-looking exchange protocols. I believe that any distinction between participants is farcical and that risk management models, encryption preferences, topology specification and other qualitative decisions regarding deployment must be left out of scope.
To clarify my original comment further, I do think that BankAPI, just at a glance, is probably focusing too much on the conventional world of banking rather than looking at the big picture ... which has nothing to do with banks and everything to do with a potential revolution in the way we organize society, removing anachronistic middle men and vested interests who consistently fail to demonstrate any meaningful reason for being while extracting vast quantities of wealth from society at large and encouraging the continuation of a socio-political and economic trajectory that will see our environment destroyed within a generation.
Part 1: http://engineering.zenpayroll.com/how-ach-works-a-developer-... (HN: https://news.ycombinator.com/item?id=7636066)
Part 2: http://engineering.zenpayroll.com/how-ach-works-a-developer-... (HN: https://news.ycombinator.com/item?id=7740967)
Part 3: http://engineering.zenpayroll.com/how-ach-works-a-developer-... (HN: https://news.ycombinator.com/item?id=8007838)
The total balance of electronic currency in a commercial bank is tracked by the central bank of the currency in question (eg. the Federal Reserve for USD for the US, Danmarks Nationalbank for DKK in Denmark).
The Federal Reserve is the authority on the (electronic) USD balance of each US bank, and no non-US banks can have a USD balance (this happens via so-called intermediate banks where, for example, a Danish bank has a USD balance with a US "intermediate" bank).
Intrabank transfers (transfers from one account at a bank to another account in the same bank) is simply a change in that bank's local database. Interbank transfers (a transfer from one commercial bank to another) within the same country is handled by the central bank (since the central bank is the authority on the commercial bank balance of the currency they produce/manage).
More and more financial institutions are starting to implement messaging using the FIX protocol
Its' no longer suitable for market data. Its barley suitable for sending order messages around. And with the explosion of order types and growth I'm not sure that's a valid statement anymore.
Its not anywhere near as compressible as binary formats. Many exchanges and dark pools have already replaced it with binary formats.
What fix does have going for it are quickfix/j and a wealth of knowledge, which will keep it relevant for a long time, but
Possibly you haven't looked at it since 1992...
In theory... 1) The keys never leave the physically-hardened HSM, so they're "safe", 2) Transmission between the HSM clients and the HSM is done over an encrypted channel, so that's "safe"
There's always a very high risk of implementing things improperly and negating any security benefits of this type of setup, but that risk exists with on-prem infrastructures, too.
or
How stupid do you have to be to trust core financial information to public communication methods?
All security is a trade-off between 'enough security' and expense. There is no such thing as 'absolute security', if dedicated lines are not measurably more secure than the public internet then choosing to route your traffic via the net rather than via dedicated lines is the right decision.
Banks are in general not 'stupid' when it comes to what they do with their data, they try to do their best within the triangle of security, expenses and technical demands.
If you think using 'public communication methods' for the transport of core financial information is stupid then I guess you are also against banks that are connected to the internet using websites, against banks that use 'swiftnet' (SWIFT is a provider of a secure network used to transfer financial information between banks, which - surprise - has been compromised in the past by the NSA and where payments in transit between two other countries has been seized by the USA because those payments violated a US policy).
In the end, at some point a bank will have to trust the wires and the parties that maintain those wires. From a banks point of view an operator like SWIFT and the public internet vary in degree as to their security but which one to use will always be a business decision and as noted above even SWIFT is not 100% secure and might in some ways be less secure than the public internet.
I also wonder how you propose banks communicate with their customers and with their branch offices.
Here is a nice page on the connectivity options a SWIFT partner gives to its customers all the way from DSL to dedicated lines:
http://www.orange-business.com/en/swift-connectivity
And dedicated lines can be tapped too, so in the end the encryption matters more than the physical connection.
The CIA got a lot of info out of the Soviet Union by tapping their military undersea communications cables, which carried unencrypted data as they assumed they were protected.
Sometimes the dangers of public communications methods lead to better security in that you have to consider it rather than assuming you're safe.
In finance, you get dedicated lines for bandwidth/latency guarantees (i.e., no congestion out of your control) or for redundancy and fault tolerance; not for security.
Also, a multitude of factors affect the 'true' price including various risk estimates of your company, and it would be counterproductive to say "factor X, as measured by Y, gives you a price increase/decrease of Z", as that would just result in gaming the measurement and misleading about the nature of your business.
Compare: FromBank <-> ToBank (BankAPI, decentralized) vs. FromBank <-> SWIFT <-> ToBank (SWIFT, centralized)
(FromBank = Bank sending the message) (ToBank = Bank receiving the message)
That lumps a whole lot of complexity on FromBank, if the onus is on them to ensure ToBank correctly received the payload.
SWIFT takes care of all of this. You also have to guarantee to be connected to the SWIFT network for at least 7 hours per day to process your inbox, and new banks get silo'd in a test area for two months where they have to prove their systems are functioning properly within the SWIFT env before they're connected for real.
As long as FromBank gets its confirmation when it posts to SWIFT, job done. SWIFT takes care of ensuring it gets to ToBank.
With BankAPI, the response from the request comes directly from the beneficiary bank, meaning you know in real-time the message has been delivered. Compared with SWIFT, you only know SWIFT has received the message in real-time.
If the beneficiary bank can't be contacted for what ever reason, the sending bank (FromBank) simply keeps on trying until the beneficiary bank (ToBank) are back online again. The problem with DDoS is a valid concern, but given the banks Internet banking services are also accessed by the banks users via the Internet, they are already dependent on the Internet.
If you don't need real-time messaging and if cost nor complexity is a concern, then you probably won't find BankAPI interesting.
BankAPI (trustly.github.com) not BankAPI (github.com)
Always takes me a moment or two to work out if it's a Github specific link or a project on Github
https://news.ycombinator.com/item?id=8256653
https://news.ycombinator.com/item?id=8249953
https://news.ycombinator.com/item?id=8252208That being said, I think for less regulated sectors of the industry this could be a very interesting project.
Fond memories of my REXX days, although I shudder to think of going back..
There are certain universities that teach Fortran specifically for companies like this; any student of Fortran has an automatic offer once they graduate.
Both Fortran and Cobol are capable, but unexciting, languages. I'd be OK working with either one if the pay was good and the employment guaranteed.
Of course it varies from bank to bank, and of course there's still some legacy systems on Cobol. But many banks run primarily Java [1] in their backend. They have to: besides the fact that Java is a much more productive language than Cobol, it's the only way you can actually hire people nowadays! No bank running "most software" on Cobol is sustainable. The supposed fear to rewrite or touch simply isn't real either: if a bank does not understand and therefore care enough for "most" of its infrastructure, it isn't a sustainable bank either. These large corporations tend to be as conservative as you can get, but they are not totally oblivious.
That doesn't mean there are some little used systems still running on ancient stuff. I once heard an anecdote (no way to verify if true) that the Dutch revenue service rehired 80 year olds because they were the only ones that understood how to program some of their old machines that were programmed using wires and knobs.
The financial services market was the first market that was primarily an IT market, and a lot of infrastructure was built up on stuff that is totally unfamiliar nowadays. There are places that will pay you a lot of money for programming in an ancient language.
[1]: It's interesting to think that Java will be the Cobol of next few decades. Although I've seen signs that Scala and even Clojure are entering the banking world as well, which is encouraging.
Interesting thoughts, I agree most banks won't change because they don't even think they have a problem. Although there are a few modern banks who actually do use Linux, PostgreSQL and modern programming languages (not COBOL). :-)
I've addressed many of your thoughts in this text: https://github.com/trustly/bankapi/blob/master/doc/rationale...
I hope you will find it interesting.
According to Trustly themselves, it is used by 45 banks spread out over 7 EU countries (Sweden, Finland, Denmark, Estonia, Poland, Italy and Spain): https://trustly.com/en/#map-holder