The keys are not embedded in the program but are secured using the
operating system. Private keys (certificates) are “signed” (encrypted)
by a third party known to be reliable by both bank and client. Each
private key is just a file on a harddrive, protected by the operating
system. Someone who had physical access to that harddrive can get the
key (if they can bypass the operating system) but we assume the bank
keeps it physically secure.
This is pretty similar to my SSH example at the beginning - keys are
held in files apart from the source code, secured by the OS. With SSH
you can also have a “key to a key” where the key file is itself
encrypted and the user has to type a password to decrypt it before it
can be used.
doesn’t matter wheter the program is compiled or interpreted, and you
have a deeper problem in your hands.
It depends on what metric you use for “secure”. If you use “minimum
amount of energy expended to retrieve protected data”, then in an
otherwise like-for-like system, then assuming that the software is not
bypassed completely, the system with compiled code needs additional
energy for the decompilation, making it “more secure”. Simple as that
An open source project compiled (open at design time) and software that
has interpreted open source (open at run time) are different. And
interpreted is less secure than compiled.
How so? I don’t think I’ve ever read anything about this before. Sure,
it’s easier to change interpreted code, but if the attacker already
has enough access to make those alterations in the first place, it
doesn’t matter wheter the program is compiled or interpreted, and you
have a deeper problem in your hands.
Yes two things I am concerned with, I have also looked at Java and .NET
and they also have the same problems.
Hiding code is useless because if it can be executed
by a computer it can be cracked by a person.
I would not say useless, if you offer open source then you are asking
for trouble. If you take measures to obsfucate/encrypt the code the
skill level to get/change it increases. There is no such thing as
absolute security but…
In any case how would you go about securing ruby code or do you think it
is not possible? Is no code secure?
No code is secure against determined attackers. Please remember that
when you post from Ruby Forum, you’re actually posting to a mailing
list read by thousands of people. It would be useful if you kept
context (as I have done) to keep your posts meaningful.
An open source project compiled (open at design time) and software that
has interpreted open source (open at run time) are different. And
interpreted is less secure than compiled. Not much more secure in
skilled hands, but even so. Its easier to write anti-tamper with
compiled. Or better still as suggested using hardware.
You’re confusing your terms. Compiled software is harder to
reverse-engineer than interpreted software. Neither is impossible.
Compiled and interpreted, closed and open have nothing to do with
security; it may have something to do with source availability, but
not security. Don’t pretend otherwise, please.
It would be a layer of protection that would at least prevent casual
attacks.
Casual attacks aren’t your worry. Trust me on this. If you treat your
users like you trust them, you will usually be rewarded. If you don’t,
you’ll get exactly what you deserve because users don’t like being
treated prima facie like probable criminals. This isn’t 100% accurate,
but it’s close enough.
That’s the source of the resistance you perceive. Most of us don’t
want or need what you describe.
Because you dont want it you resist its development…
No. We don’t resist, we don’t need. There’s a difference. You’re
welcome to develop this sort of thing yourself. Just understand that
merely hiding code isn’t going to help you at all.
Actually I remember someone making an obfuscator of some kind 3-4
years ago… I played with it awhile and couldn’t break it. Others
could, though. Or I could given a few hours.
The best suggestion yet was to keep the code off the client machine
and make a web service. That is relatively secure.
But that makes huge limits on profit. My feeling is web software can’t
be sold like desktop software is. Either boxed or a pre-installed
server.
No, web software can’t be sold like desktop software. It can be sold
as a subscription service (which is what my company does). We also
sell our software to companies who want to implement their own version
of it, and we are usually required to place our souce code in escrow
in the event that we go under.
Think a little differently and you’ll find different ways to profit.
Commercial software sales has bad margins anyway at this point.
How so? I don’t think I’ve ever read anything about this before. Sure,
energy for the decompilation, making it “more secure”. Simple as that
Exactly. Just as a closed book is more secure than one lying open
on a table. If it’s closed, you have to be smart enough to open it
before you can read it.