Slashdot Mirror


Do You Code Sign?

Saqib Ali asks: "I am a regular reader of Bruce Schneier's Blog, Articles, and Books, and I really like what he writes. However I recently read his book titled 'Secret and Lies' and I think he has done some in-justice to the security provided by the 'Code Signing.' On page 163 of his books, he (Bruce Schneier) basically states that: 'Code signing, as it is currently done, sucks.' Even though I think that Code Signing has its flaws, it does provide a fairly good mechanism for increasing security in an organization." What are your thoughts on the current methods of code signing in existence, today? If you feel like Bruce Schneier, how would you fix it? If you feel like Saqib Ali, what have you signed and how well has it worked? "The following are the reasons that he (Bruce Schneier) gives:

Bruce's Argument #1) Users have no idea how to decide if a particular signer is trusted or not.

My comments: True. However in an organization it is the job of the IT/security dept to make that determination. It shouldn't be left up to users. The IT dept should know not to trust "Snake Oil Corp.", however anything from "Citrix Corp" should be fairly safe. Moreover Windows XP SP2 provides provides a mechanism to create a Whitelist of certain trusted signers, and reject everything else. This is a very powerful security mechanism, and greatly increase the security in a corporate environment, if the workstations are properly configured. Having said that, this feature may not be that useful for home user, who can not tell the difference between Snake Oil and Citrix Corp.

Bruce's Argument #2) Just because a component is signed doesn't mean that it is safe.

My Comments: I fully agree with this. However Code Signing was never intended for this purpose. Code signing was design to prove the authenticity and integrity of the code. It was never designed to certify that the piece is also securely written.

Bruce's Argument #3) Just because two component are individually signed does not mean that using them together is safe; lots of accidental harmful interactions can be exploited.

My comment: Again Code Signing was was never designed to accomplish this.

Bruce's Argument #4) "safe" is not all-or-nothing thing; there are degrees of safety.

My comment: I agree with this statement.

Bruce's Argument #5) The fact that the evidence of attack (the signature on the code) is stored on the computer under attack is mostly useless: The attack could delete or modify the signature during the attack, or simple reformat the drive where the signature is stored.

My comments: I am not sure what this statement means. I think this type of attack is outside the realm of Code Signing. 'It is like saying host based IDs or anti-virus are useless, because if you can compromise the system you can turn them off.'

I would really appreciate any comments / thoughts / feedback on the above mentioned Bruce's arguments and my commentary. I am planning to give a short talk about benefits of code signing, so any feedback will really help me."

259 comments

  1. "Always trust code from Microsoft" by DeadSea · · Score: 5, Insightful
    The best example of why code signing as it is currently implemented is broken is Windows Update. During the windows update process you are asked to accept signed code and you may "Always trust code from Microsoft". In the context of Windows update, that sounds perfectly legit to most users. They want to update their computers. They don't want to be bothered by the dialog again to do so in the future.

    By agreeing to always trust Microsoft you are agreeing to several things you may not realize:

    1. You are trusting all code by Microsoft, not just Windows update (obvious to most people)
    2. You are trusing Microsoft code that folks other that Microsoft give you to run.

    The second one is the kicker. If there is a bug in some signed code by microsoft that allows JavaScript to call it and write to any file, then anybody can give you that signed code and some JavaScript and take over your computer. This will be done without any further notification at all to you as the end user.

    You are trusting microsoft to:

    1. Write perfect code
    2. Envision every possible use of code they write

    Even if you believe that code can be bug free, there is no way anybody who write code really locks it down so it can't be used for anything other than what it was intended. There was a security vulnerability that took advantage of just this. I bug in some signed Microsoft code. I'm not sure how it was fixed.

    Currency conversion with understands "convert 23 dollars to pounds"

    1. Re:"Always trust code from Microsoft" by crummynz · · Score: 1

      Re: your coinmill link in your sig...

      Doesn't Google do that too?

      --
      ~ Crummy
    2. Re:"Always trust code from Microsoft" by Evro · · Score: 0, Offtopic

      Currency conversion with understands "convert 23 dollars to pounds"

      Psst... http://www.google.com/search?q=23+dollars+to+pound s

      --
      rooooar
    3. Re:"Always trust code from Microsoft" by Homology · · Score: 4, Insightful
      During the windows update process you are asked to accept signed code and you may "Always trust code from Microsoft".

      For some reason there is no option to never trust certain certificates.

    4. Re:"Always trust code from Microsoft" by owlstead · · Score: 4, Insightful

      You are trusing Microsoft code that folks other that Microsoft give you to run.

      I know this is true, and bugs have been found in libraries. What was even more wrong is that the same key was used for multiple libraries, making it hard for Microsoft to put the key out of its misery (put it in a Certificate Revocation List.

      This is an example where the technique is not so much wrong, but the system in which the technique is used is wrong (one of the spearpoints of Bruce). I do not want to give any web-site the ability to upload and install code on my computer, even if it is signed by someone I trust.

      In principle, the idea that MS signs code for automatic updates of their own code is great, it takes out the man in the middle attack (taking over the update site, attack on proxies etc). Leave the code signing be, but leave the snags out.

    5. Re:"Always trust code from Microsoft" by ad0gg · · Score: 4, Insightful

      When you sign an activex control you can choose not to allow scripting calls to it. XP is pretty weak when it comes to security, server 2003 is lot better, it actually forces you to whitelist a site by default before javascript and activex runs on it. Problem with activex is that you can't fine tune security, its either all or nothing. Java code signing and code security is lot better alowing more control over what the code can do which be set by the programmer, from what i read you can replace activex controls with .net controlls for more fine tune controls. I just never seen it done in the real world.

      --

      Have you ever been to a turkish prison?

    6. Re:"Always trust code from Microsoft" by owlstead · · Score: 4, Informative

      You mean like under windows, view a certificate, go to details tab, click edit properties, disable all purposes of this certificate? Something like that?

      In firefox you will have to remove 3 ticks instead of one button, but those ticks are way easier to find. Not that anyone knows, but it is possible.

    7. Re:"Always trust code from Microsoft" by bafio · · Score: 2, Insightful

      >You are trusting microsoft to: > 1. Write perfect code > 2. Envision every possible use of code they write Since I am running MS OS, I am trusting (or risking) it already. This makes no sense!
      I already have some 100MB of library that may (and do) contain bugs! What the signature says is that that code come from MS, and that is a lot more than "I hope I typed the URL correctly".

    8. Re:"Always trust code from Microsoft" by bitslinger_42 · · Score: 5, Informative

      In addition to the two points on what you are trusting Microsoft to do, there is a third, even more important, thing that you are trusting. By "trusting" the signed code, you also trusting the chain of certificates involved.

      "Huh?" you say? "WTF does that mean?" Most of the time, the certificate that was used to sign the code was also signed by another certificate. This is supposed to establish a chain of trust. In Microsoft's example, their root certificate may be signed by Verisign. The theory is that Verisign is trusted by everybody, and therefore if Verisign signs someone's key, the signed key can also be trusted.

      Unfortunately, the theory breaks down. There was a well-publicized instance where Verisign issued a code-signing certificate to someone claiming to be from Microsoft but actually wasn't. When Verisign screws up, or otherwise proves themselves to be not trustworthy, then the end user is left with trying to figure out which "Microsoft" keys are good and which ones aren't. Above and beyond the fact that many users aren't equiped to make those decisions, the vast majority simply don't care.

      In a closed-form environment (i.e. inside a company with a PKI in place, physical security on the PKI servers and root key, documented procedures for establishing the identities of the cert requestors, where the apps being signed are for internal use only), code signing, and even chain of trust, mostly works. Once you get out of that tight model, the signature on the code only says "This code was signed by someone claiming to be Microsoft".

    9. Re:"Always trust code from Microsoft" by kfg · · Score: 1

      Even if the code is bug free, omniscient and without vulnerability you are trusting one more thing as well:

      That the code is of benefit to you. To whom is it without vulnerability?

      KFG

    10. Re:"Always trust code from Microsoft" by madbrain · · Score: 2, Funny

      If you don't trust Microsoft code, what the hell are you doing running Windows ? I think Microsoft should have preloaded their cert store with the trust bit set.

      --
      -- Julien Pierre http://www.madbrain.com/blog
    11. Re:"Always trust code from Microsoft" by Taladar · · Score: 1

      You mean like there is no option to never overwrite a file even though most people complained about that in Windows 95 (or even before)? MS seems to have an aversion to the word "never".

    12. Re:"Always trust code from Microsoft" by DeadSea · · Score: 1

      You want to trust Microsoft code to run windows and do a windows update. You don't trust anything every signed by Microsoft to be download and run from just any idiots web site.

    13. Re:"Always trust code from Microsoft" by Splatypus · · Score: 1

      Currency conversion with understands "convert 23 dollars to pounds"

      Ummm, Google?

    14. Re:"Always trust code from Microsoft" by cooldev · · Score: 1

      For some reason there is no option to never trust certain certificates.

      Actually, this was finally added to XP SP2.

    15. Re:"Always trust code from Microsoft" by edunbar93 · · Score: 1

      This is the best part of your post:
      "2. Envision every possible use of code they write"

      Because, you know, they couldn't predict the possible abuses of automatic execution of VB code in e-mail attachments. I mean, *that* was a tough stretch of the imagination.

      --
      "No problem. I have the capacity to do infinite work so long as you don't mind that my quality approaches zero."-Dilbert
    16. Re:"Always trust code from Microsoft" by Anonymous Coward · · Score: 0

      That's not a sig... i have sigs turned off. He manually added it.

    17. Re:"Always trust code from Microsoft" by erik_norgaard · · Score: 1

      This is not strictly correct. If you trust a specific user/code certificate to sign code or documents, you do not implicitly or explicitly trust any certificate authority up the chain.

      The PKI trust model allows the users to determine if the certificate is trustable by assuming trust on some authorities. Hence, the trust only goes down. You can still disregard some or all CAs for trust and establish your own web of trust as in the PGP trust model by accepting individual certificates.

      However, if the windows update really requests you to acknowledge the authority that assigns code signing certificates to Microsoft developers, then you are accepting far more than is indicated. I don't know if this is the case.

      But there is another problem: Many CA certificates are preinstalled with software such as browsers (and I suppose for windows, the entire OS), without the user ever getting the challenge to individually accept these, view their CPS and other related information to determine if these CAs are in fact trustable.

      Who decided which CAs should be trusted by my browser? AFAIK, in many cases, the CAs pays their way to the list, because it means business.

      I think the PKI trust model only works if users are required to opt-in for each CA, and CAs are required to report any iregularities just as companies are required to inform of any identity theft.

    18. Re:"Always trust code from Microsoft" by abandonment · · Score: 1

      xe.com has done this for oh about since the internet existed - how is this something new?

      http://www.xe.com/ucc/

    19. Re:"Always trust code from Microsoft" by baadger · · Score: 1

      xe.com doesn't let you type in vague but useful input like "62 dollars in australian money" which is supported by both Google and coinmill.com.

      The benefit of this form of input is questionable when you have a nice scrollable select list, but maybe some people find typing "south african money" easier...I think I do.

      Oh, and you're all way offtopic :P

    20. Re:"Always trust code from Microsoft" by KDR_11k · · Score: 1

      The majority of the users don't want to validate every certificate authority, never mind they probably don't know how to do that.

      If you want to validate them, look into your browser's certificate authority list, validate them and remove any that aren't acceptable to you.

      --
      Justice is the sheep getting arrested while an impartial judge declares the vote void.
    21. Re:"Always trust code from Microsoft" by CastrTroy · · Score: 1

      Dollars is Australian money. That doesn't make any sense. Dollars is used in many countries as a form of currency. Seems like google defaults to U.S. dollars, even when i'm at google.ca. I think XE has the best user interface, type in the amount, and select the currency from a list. You can't make a mistake by it assuming the wrong type of dollars. Also, being of importance, XE updates its rates more often than google, making the results more accurate.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    22. Re:"Always trust code from Microsoft" by bitslinger_42 · · Score: 1

      You're correct. The popup, if it occurs, is asking if you trust that particular certificate. The problem with chain-of-trust occurs when your system is configured to trust any certs signed by a trusted cert (i.e. your browser). In those cases, if the chain is broken, as it was with the Verisign/Microsoft event, the end user will NOT get prompted at all for the malicious traffic, just as they will not be prompted for going to an official Microsoft SSL site.

      The CA certs are preloaded in browsers because a) end users are not capable of making valid decisions in this space, and b) Microsoft/Netscape/Mozilla/whomever decided that those certificate providers were fairly commonly used. Even though the certificate purpose is that of establishing trust, browsers set up certificate acceptance based on end-user convenience.

    23. Re:"Always trust code from Microsoft" by merlin_jim · · Score: 1

      There was a well-publicized instance where Verisign issued a code-signing certificate to someone claiming to be from Microsoft but actually wasn't.

      I was getting ready to reply to the thread when I saw this. Have you ever tried to get a code signing certificate? There seem to be extremely few checks and balances on it. Basically you just wait a couple days. They say they do checks to verify you are who you say you are and whatnot... but whoever they called at my company never asked me if I was requesting a certificate. So if they did make the call they didn't ask whoever picked up the phone to verify that it was really me asking for it.

      Broader point; certificate and PKI work, as long as there is a seperate communication channel. Sure I can publish my public key out there. But unless someone calls me to verbally confirm the hash there's no way to know if that's MY public key, or the guy that wants to pretend be me's public key...

      --
      I am disrespectful to dirt! Can you see that I am serious?!
    24. Re:"Always trust code from Microsoft" by smyle · · Score: 1
      During the windows update process you are asked to accept signed code and you may "Always trust code from Microsoft".

      I've always wanted an option on that screen that says "Don't trust code from Microsoft, but install it anyway."

      --

      Sleep is just a poor substitute for caffeine, anyway. -Bob Lehmann

    25. Re:"Always trust code from Microsoft" by aonaran · · Score: 1

      That's strange, because I had a hell of a time getting web site certificates from both Verisign and Thawte (a verisign subsidiary) because we are a municipal government in Canada, so more manual checking was required because we don't have a business licence number for them to look up. (we issue business licences for certain types of businesses, but we aren't a business in that sense ourselves. They DID call and they had us fax documents to them to prove we at least have access to things like the town charter... I thought their proceedures in our case were very thorough.

    26. Re:"Always trust code from Microsoft" by merlin_jim · · Score: 1

      Well we did have to submit a few ID numbers and whatnot. I think even a D&B number or some such. But these numbers, while not public knowledge, aren't exactly secret either...

      Bottom line is, I should have had to do some sort of out of band verification. Which I didn't.

      --
      I am disrespectful to dirt! Can you see that I am serious?!
    27. Re:"Always trust code from Microsoft" by Anonymous Coward · · Score: 0

      the whole PKI is based on a trusted root. if the root is compromised none would be trustworth. it has nothing to do with msft code signing. if the verisign keys that signs your banks certificates is compromised, would you say that your bank or SSL sucks ?

  2. No, but... by TeknoHog · · Score: 4, Funny

    I co-sign. It comes in handy when your code has lots of trig math.

    --
    Escher was the first MC and Giger invented the HR department.
    1. Re:No, but... by The+Allmighty+Fluffy · · Score: 1

      On a related note, I code sign. Signed, He-thay Reat-Gay Luffy-Fay

      --
      Don't Mind Me, I'm Just Nuts
    2. Re:No, but... by Anonymous Coward · · Score: 0, Funny

      Trying to take the thread on a tangent, are you?

    3. Re:No, but... by Anonymous Coward · · Score: 0

      Now you've gone off at a tangent, with all that hyperbole...

    4. Re:No, but... by Anonymous Coward · · Score: 0

      So are you great or [sic] allmighty?

    5. Re:No, but... by The+Allmighty+Fluffy · · Score: 1

      Both, of course!

      --
      Don't Mind Me, I'm Just Nuts
    6. Re:No, but... by Quarters · · Score: 1

      Co-signing is such a bad idea. If the original certificate can't fulfil its loan obligations you'll be held liable to repay the outstanding principal + interest, or else your credit rating will suffer.

    7. Re:No, but... by LOTHAR,+of+the+Hill · · Score: 1

      I never co-sign. It can destroy your credit.

  3. Do You Code Sign? by frovingslosh · · Score: 4, Funny

    Of course I code sign, I'm deaf and mute you insensitive clod!

    --
    I'm an American. I love this country and the freedoms that we used to have.
  4. Yes, I sign everything by Anonymous Coward · · Score: 5, Funny
    FIRST POST

    -----BEGIN PGP SIGNATURE-----
    Version: PGP for Personal Privacy 5.0
    MessageID: 5NWrD3M0/1xt+ynMPHbCYX+e3KSK9qhU

    iQCVAwUBOFV2W1FO4fmE3w/VAQHgrgP9GlNAaTdNR7DI/Mh62H aZj49496wbM1Nh
    YKlmtJIse2vcLF4LFVLJ47zQi4dK21vPlQ9XXAk4n4cype4gDn p6nWR+Rrz+3DPC
    gpTUtsdlxZyMh0PvbAmssEX8z3In+cWgs43sjw6Tf0G4ENx68K 8yCEK0oe/aX0vv
    mktgUuXP6A4=
    =3mUU
    -----END PGP SIGNATURE-----

    1. Re:Yes, I sign everything by A+beautiful+mind · · Score: 4, Funny

      That's great you know!

      In case there is an imposter Anonymous Coward, finally we've got a way to detect it!

      --
      It takes a man to suffer ignorance and smile
      Be yourself no matter what they say
    2. Re:Yes, I sign everything by Anonymous Coward · · Score: 0

      error, no matching key in database.

      Don't trust this signature! I'm the real Anonymous Coward.

    3. Re:Yes, I sign everything by Spy+der+Mann · · Score: 1

      I agree, but now there's no way to change his post from 'FIRST POST' to 'FOURTH POST' without rechecking the PGP signature.

    4. Re:Yes, I sign everything by mystik · · Score: 1
      gpg: key 84DF0FD5: public key "CERT Coordination Center <cert@cert.org> expires 2000-09-30)"
      CERT makes first-posts on Slashdot? nice. With expired keys, how thoughtful!
      --
      Why aren't you encrypting your e-mail?
    5. Re:Yes, I sign everything by Piquan · · Score: 2, Funny
      gpg: BAD signature from "CERT Coordination Center <cert@cert.org> (expires 2000-09-30)"

      No.

    6. Re:Yes, I sign everything by luiss · · Score: 3, Interesting
    7. Re:Yes, I sign everything by Ernesto+Alvarez · · Score: 2, Informative

        That's great you know!

      In case there is an imposter Anonymous Coward, finally we've got a way to detect it!


      You joke about that, but that's exactly what the authors of "Who wrote Sobig" did. They published anonymously, but put a public key in their text so no other "anonymous coward" could pretend to be them (or he, she or otherwise).
    8. Re:Yes, I sign everything by AZURERAZOR · · Score: 1

      Very nice...

  5. Re:Is Bruce Gay??!! by neongrey · · Score: 0, Offtopic

    You know, something tells me that the majority of gay men are not named Bruce.

  6. Bruce is right by Anonymous Coward · · Score: 4, Insightful

    Bruce is right. You mention that code signing is not designed to handle problems of security or safety. Well, what good is that? The primary reason you want to know who wrote the code is because some you trust some organizations to write safe code. Yet a restricted security model (sandbox, etc.) would give you a greater level of security. It's nice to know that Friendly Company X put their seal of approval on some flunky's ActiveX, but it's much nicer to know that the system is restricting system calls and network access.

    1. Re:Bruce is right by Anonymous Coward · · Score: 5, Insightful

      This isn't "insightful".

      You need both a sandbox and authentication of the provider. I can give you code for your sandbox that purports to be a login client for your bank, you enter your creds and I can send them to another URL or do other nasty things.

      Code signing is designed to handle the problem of types "is this software from my bank really from my bank". It's the same problem an SSL certificate solves. You can have a perfectly valid SSL certificate, but if it claims to be from your bank and really isn't your data could go anywhere.

      In other news, seatbelts proven not to prevent auto-accidents!

    2. Re:Bruce is right by owlstead · · Score: 1

      This is not a good reason. Since *both* sandboxing and code signing can be used, you can have a safer system by not excluding one or the other because the other one is better.

      That's like saying you don't want cream on your cake since it already has chocolate on it.

    3. Re:Bruce is right by ad0gg · · Score: 1

      You can use both sandbox and code signing together. If wanted to write an accounting system that used plugins say for document export. I could sandbox the plugins to disallow network access and then only accept plugins that have been signed by certs I trust. Java and .net both support sandboxing and code signing.

      --

      Have you ever been to a turkish prison?

    4. Re:Bruce is right by vadim_t · · Score: 5, Insightful

      It has its value. It's just not a panacea.

      You can apply code signing for several things. For instance, you might use it while working from home. This way whoever receives your source can be quite sure it comes from you. This also assures that the source was not changed since you signed it, for instance, by a virus. The later relies on that it couldn't have been infected before it was signed, though.

      It could be also useful for distributions. Let's say, somebody breaks into a Debian mirror and replaces sshd with a version with a backdoor. If code signing was in place, you could notice it quite easily. Now, probably you don't trust every developer individually, but trust them because their key was signed by the general Debian key. But still, something can be arranged. For instance:

      Debian would have a master key that signs developers' keys. Debian would also have a list of developers, and a list of their projects, also signed with a key. And then there are packages signed by each developer.

      To check trust, you check the signature, then make sure the developer who signed it belongs to that project. This way merely being a Debian developer is not enough to put a backdoor in some random package.

      Of course, none of this assures complete security. It could be a bug, the developer's key could be stolen, etc. But this gives you interesting mechanisms, such as revoking a developer's key, and it makes life much harder for random script kiddies.

      Now, I completely agree that this is not a panacea. But let's be realistic, while a web browser could run in a VM, I doubt very much this approach would work so well with sudo. Being able to make sure that the update to sudo you're about to install comes from the usual developer has some value.

    5. Re:Bruce is right by dnoyeb · · Score: 1

      If you cant authenticate the source of the code, you can never make any assumptions about its intentions.

      Of course ultimate security is like what you get in Java, don't trust anybody and only allow the operations you specifically grant it. But not many turn that on on their JVM. Anyway, that too is based first on code signing.

    6. Re:Bruce is right by harlows_monkeys · · Score: 4, Insightful
      Yet a restricted security model (sandbox, etc.) would give you a greater level of security

      However, pretty much every sandbox implemention has had exploitable bugs that allowed code running in the sandbox to get out.

      So, even with a sandbox, it is wise to also avoid running code from people that you don't trust, so signing is still useful in a sandbox environment.

      Also, a sandbox doesn't help with code that has to run outside the sandbox, such as device drivers, or new versions of whatever implements the sandbox.

      Look at it this way: for a piece of code to do something malicious on your system, two things must happen:

      1. the code has to run on your system with sufficient privilege or access to do its malicious deeds
      2. the code has to actually contain something malicious

      You can protect your system by making sure that at least one of these conditions does not hold. Sandboxes try to make sure the first condition does not hold. Code signing tries to make sure the second condition does not hold.

    7. Re:Bruce is right by dilvish_the_damned · · Score: 1

      Just because you sign a check doesnt mean there is money in the bank. It just means you endorsed it.

      --
      I think you underestimate just how much I just dont care.
    8. Re:Bruce is right by Taladar · · Score: 1

      Four words: "false sense of security"

    9. Re:Bruce is right by geekoid · · Score: 1

      A lesson my ex-wife could never figure out.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    10. Re:Bruce is right by digitalrevolution · · Score: 0

      Yep. Bruce is right. Signing as is currently exists is useless.

    11. Re:Bruce is right by Ernesto+Alvarez · · Score: 2, Interesting

      It has value, especially in the situation you're describing, but used as it's mostly used (and I mean signed activex) it's not useful at all.

      In the example you're describing, the intended user is probably experienced so that the signature means something to him (admin, developer, etc). He probably knows that if he finds a piece of signed code, but has no verified public key, the signature is worthless. He knows of webs of trust and chains of certificates. Some code is in fact signed with OpenPGP in the way you're describing.

      A user getting some signed code via IE has no way of knowing the details of the signing (how, why and for what purpose it was signed), he only knows that "Foo corp wants to install xxxx, do you trust Foo corp?" (good answer: "How in the hell should I know"). He doesn't know how the other party could get a validated signature (did someone check they were Foo corp?). He doesn't know what the signature means (he's thinking "Signed code = Good code"). Basically, the only thing he has to decide if he should accept it or not is the bunch of letters that spell "Foo corp" on the screen.

      Without education, code signing is useless.

    12. Re:Bruce is right by Minna+Kirai · · Score: 2, Informative

      Let's say, somebody breaks into a Debian mirror and replaces sshd with a version with a backdoor. If code signing was in place, you could notice it quite easily.

      You've got some typos there. The word "if" falsely implies that Debian doesn't already do this. Replace it with "because". Several other words should be changed to past tense.

    13. Re:Bruce is right by Anonymous Coward · · Score: 1, Insightful
      I understand the "working from home" scenario. Code signing helps in checking the origins of the code. It works because the employees know each other personnaly, and so it is easy to verify the validity of the signatures.

      But now the "linux distribution" scenario (say "Debian"): how do I, as an outsider, verify that the signature (for the code that I downloaded) really comes from Debian? You would need to go to their office(s), speak to their representatives and verify the credentials of those representatives.

      The above is overkill and unworkable for software that is intended to be wide spread (at low cost). This is why the "chain of trust" was invented: the theory goes that an individual trusts a CA, the CA trusts the company, so by implication the individual wouble be able to trust the company. However, in practice:
      • The individual does not trust the CA; at best he/she gives it the benefit of the doubt.
      • The CA does not trust the company; at best it checks the status of the company in the chamber of commerce.
      • The rules of logical reasoning ("implication") do not apply when it comes to trust. Exempli gratia: my brother trusts me, I trust my Peruvian friend, but yet my brother does not trust my friend. I am sure you can come up with similar examples.

      In short: Bruce Schneier rightfully criticizes the way code signing is handled in practice, today.
    14. Re:Bruce is right by m50d · · Score: 1
      The individual does not trust the CA; at best he/she gives it the benefit of the doubt.

      When using OpenPGP the only "root" is you. You need to trust someone, but it only needs to be someone you know.

      The CA does not trust the company; at best it checks the status of the company in the chamber of commerce.

      You can assign how much weight to give "recommendations", people trusted by people you trust, and decide how many "degrees of separation" are acceptable before you stop trusting people.

      The rules of logical reasoning ("implication") do not apply when it comes to trust. Exempli gratia: my brother trusts me, I trust my Peruvian friend, but yet my brother does not trust my friend. I am sure you can come up with similar examples.

      This must be because your brother doesn't trust you to verify people as trustworthy. OpenPGP would allow him to do this.

      --
      I am trolling
    15. Re:Bruce is right by ACNiel · · Score: 1

      This "In Other News" is finally one that is more on point than just funny.

      This is exactly what Bruce is saying, "We shouldn't use code signing to identify the author, because it won't completely harden our system (which it wasn't meant to do)."

      To bad there isn't a extra mod for painfully obvious ideas that no body see because of the verbage surrounding it.

    16. Re:Bruce is right by Minna+Kirai · · Score: 1

      You would need to go to their office(s), speak to their representatives and verify the credentials of those representatives.

      That still won't work. How do you know it's a genuine Debian representative, and not a disguised Gentoo spy? He could've tied up the real crew in a closet just before you came in, all part of a huge conspiracy to hack your PC (secretly forcing everything to recompile).

      You would need to go to their office(s), speak to their representatives and verify the credentials of those representatives.

      As just implied, the truth of that so-called "need" depends on just how hugely paranoid you are. While it's true that GPG keys can be tampered with if transported over the internet (either by man-in-the-middle, or subverting the Debian server), they're still useful.

      For an attack to be successful, the tampering must be uninterrupted: in place when you got the key, when you download the packages, and every other time you re-verify the key inbetween. If the active tampering is ever discontinued, either you or the remote admin will detect the attack.

      In particular, if Debian's server was OK when you got the key and then is hacked later, the key will protect you from altered packages. That alone creates a very big probability region of removed vulnerability. (Especially useful because the packages are likely to be supplied by 3rd party mirror-servers that pay far less attention to their own security)

    17. Re:Bruce is right by 51mon · · Score: 1

      Streuth - you are saying we sign code to prove it was written or approved by us, whatever next.

      Next your be claiming the "always trust Microsoft" box means you trust Microsoft to manage their certificates correctly.

      In other news SPF failed to stop the spam problem, but did ensure email from Paypal.com came from Paypal.com.

  7. Re:Is Bruce Gay??!! by bleaknik · · Score: 0, Troll

    Just because Bruce Willis is gay, doesn't mean all Bruces are gay...

    And most people who work with computers (while they may appear uninterested in women), aren't gay... Asexual would probably be a better term for it... ;)

    --
    Deja Vu
    n. 1. The sensation that you've read this very article before.
  8. barf by bobalu · · Score: 1

    It IS useful in a perfect world, but most people are too clueless to not just go ahead and accept everything anyway.

    I personally never accept "always accept".

    --
    The revolution will NOT be televised.
    1. Re:barf by Anonymous Coward · · Score: 0

      I personally never accept "always accept"

      Do you always never accept "always accept"?

    2. Re:barf by Anonymous Coward · · Score: 0

      I personally never accept "always accept"

      Do you always never accept "always accept"?


      Probably about half the time, yeah.

  9. Why code signing sucks. by imac.usr · · Score: 4, Insightful
    I recently installed Fedora Core 4, and after setting it all up I ran up2date and noted that it's set to require GPG signatures by default (I imported the key as well). Upon running up2date, though, practically every package it found brought up an error message stating that it couldn't recognize the signature, and asking if I wanted to install the package anyway. After about ten packages, I said "fuck it" and turned off GPG signing. (I had to do so by editing up2date's config file manually, since it only runs through its config process once, it seems.)

    If Red Hat can't be bothered to sign any of its updates (even the kernel, for pete's sake), then why as a user should I care one way or another?

    --
    I use Macs for work, Linux for education, and Windows for cardplaying.
    1. Re:Why code signing sucks. by Anonymous Coward · · Score: 4, Informative

      Then you imported the wrong key, tool. All the packages are signed. There are several different keys, you know. And why would Red Hat be signing Fedora's packages?

    2. Re:Why code signing sucks. by Anonymous Coward · · Score: 1

      This idiot is modded up?! I challenge anyone to post the url of an unsigned package in Fedora's official repository.

    3. Re:Why code signing sucks. by Anonymous Coward · · Score: 0

      I sign my code releases under Linux with GPG, but I don't understand how the code signing woks under windows.
      I created a certificate, signed a .exe file with it, using codesign from Microsoft, changed some bytes in the file, and checked the properties tab. No single warning, just "this program is signed".

      Does somebody know how why ? I must be missing something...

    4. Re:Why code signing sucks. by Anonymous Coward · · Score: 0

      Because it is still signed. Doesn't mean the signature is valid. You have to check that seperately (I belive it does so automatically when you try to run it).

    5. Re:Why code signing sucks. by The+Bungi · · Score: 1
      So what you're saying is that code signing as a concept sucks because a non-reference implementation of the concept is badly done?

      That's quite a stretch - kinda like categorically stating Java sucks because I saw this really crappy hashing code on some website once.

    6. Re:Why code signing sucks. by mev · · Score: 1
      Here is some more information about this topic from the: Fedora FAQ

      I believe there is also an option to up2date to turn off signature checking (--nosig). I don't understand the full implications but this behavior is new in Fedora Core 4, and I thought earlier versions of Fedora Core also had signed packages but an implementation that worked...

    7. Re:Why code signing sucks. by Anonymous Coward · · Score: 0

      In fact, the program still runs fine.
      For example, I can change the author name using an hexadecimal editor, run the program without problem and see the changes in the "about" box. If it is done automatically when it is run, why is there no warning or error ?
      I shouldn't be able to run modified signed code ! I can't see any warning anywhere, check by yourself.

    8. Re:Why code signing sucks. by kevmo · · Score: 1

      Perhaps because Fedora is owned by Red Hat?

    9. Re:Why code signing sucks. by RoadWarriorX · · Score: 1

      Then you imported the wrong key, tool.

      Just because he imported the wrong key, there absoultely no reason to call him a tool.

      :-)

    10. Re:Why code signing sucks. by dtfinch · · Score: 3, Funny

      Every newbie and their grandmother knows you just have to type "rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*" before using up2date, and do the same for any other repositories you might add.

    11. Re:Why code signing sucks. by Anonymous Coward · · Score: 1, Insightful
      This is why code signing doesn't work, because NOBODY knows they are supposed to type:
      "rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*"
      (where NOBODY == normal person, i.e. the poor schmuck who's rooted box is bombarding you with spam).

    12. Re:Why code signing sucks. by Anonymous Coward · · Score: 0

      Fedora is not something that can be "owned". Dumbass.

    13. Re:Why code signing sucks. by Anonymous Coward · · Score: 2, Funny
      Every newbie and their grandmother knows you just have to type "rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*" before using up2date, and do the same for any other repositories you might add.


      Apparently the guy who wrote the Fedora installer didn't know it.

    14. Re:Why code signing sucks. by jimmyharris · · Score: 1

      I think you've got this around the wrong way. The problem is that you need to manually import the appropriate public keys, rather than the fact that Red Hat doesn't sign its updates. They're all signed - it's just that by default the public keys aren't in the RPM database.

      See the bottom of this page for more information (and no, I don't know why they keys don't come pre-installed).

    15. Re:Why code signing sucks. by Anonymous Coward · · Score: 0

      As a Fedora Core 4 user, I was also annoyed by the GPG signature problem when running up2date.
      For future reference, however, you may find it useful to know that you can disable package verification in up2date by selecting "Red Hat Network Configuration" from the "System Settings" menu. Pick the "Retrieval/Installation" tab and uncheck "Use GPG to verify package integrity." This should save you some time finding and editing config files.
      I wish there was some decent documentation for this sort of thing...

    16. Re:Why code signing sucks. by Chrax · · Score: 1

      So what you're saying is that code signing as a concept sucks because a non-reference implementation of the concept is badly done?

      That's quite a stretch - kinda like categorically stating Java sucks because
      ... Are you sure you wanted to use that comparison?

    17. Re:Why code signing sucks. by cortana · · Score: 1

      I expect it's in the release notes.

      If you can't be arsed to read them then use Ubuntu (or wait for the next version of Debian); Apt 0.6 makes sure that the packages you install come from a trusted place.

    18. Re:Why code signing sucks. by danielrose · · Score: 1

      I have a rooted box that begs to differ..

      --
      i hate pansy republicans
  10. Good comments by Jaborandy · · Score: 3, Informative

    You make some good arguments. Code signing is not a panacea, but it does add value. saying it sucks because it doesn't solve world hunger is a worthless criticism of a good technology.

    I would add that "always trust X" is not appropriate for home users, and it is good that MS makes the unchecked state the default. I don't recall MS telling me to always trust MS, and if they do, I would want to give them feedback about that wording.

    The "always truxt X" feature is best used by domain admins who can pre-approve stuff for their users. It's even better if they can resign the code themselves with a cert on the approved list.

    --Jaborandy

    1. Re:Good comments by lukewarmfusion · · Score: 4, Insightful

      I think Schneier's criticisms often come off that way. His critique of certificates amounts to "they're not perfect, so don't bother." This "all or nothing" type of attitude may not be exactly how he feels, but his writing certainly makes one feel that way.

    2. Re:Good comments by bitslinger_42 · · Score: 4, Interesting

      I've been reading Bruce's writings for several years now. I've even met the man and had dinner with him. To be honest, I'm not entirely sure what keeps him going.

      One common comment at his blog is that most of his writings point out the flaws, but few point out solutions. A perfectly valid criticism, and quite accurate. Having worked in the computer security industry for nearly ten years now, I am coming to the conclusion that there may be no solution. We've all heard the joke about the only secure computer (no power, locked in a safe, encased in concrete, and at the bottom of the ocean), and laughingly made comments about how security would be easier if it weren't for the users, but have we really thought about that?

      I've written several comments on /. regarding security, and I'm starting to come up with a trend: it isn't possible to really secure the computer if the end-user doesn't understand and/or care about security. Here on /. there are many, many people who care and understand. I run multiple firewalls on my systems AT HOME, plus antivirus and antispyware programs. I actually review my logs. I don't run any program that was written more recently than my AV updates. I'm what most "normal" people would consider paranoid. And I still run into issues.

      Since I work in the industry, I am really struggling with this. I believe in security, I desire security, I really, really WANT security. I also see that none of my efforts will bring it as long as people are involved. People make coding mistakes. People are greedy. People are petty. People are malicious. The same instincts at work looting in New Orleans tonite lead some people to do anything in their power to hack other people's systems. The rest of the people, the so-called good people, sit at home and want their computers to be as simple as their toasters. They don't want to have to know about viruses, spyware, phishing, and Nigerian 419 scams. They want email, smilies, and porn.

      Regardless of how despondant I feel about security in general, security theater really pisses me off. When I see a product or a process being sold as perfect security or as any kind of silver bullet, I just have to yell. People believing that one relatively good tool will fix everything is bad enough, but when they're told that a worthless tool will fix all their problems...

      In theory, code signing has the potential in some environments to limit the risks from certain vulnerabilities. In practice, code signing for the masses is worse than worthless, because Joe User sees "Do you trust Microsoft?" and honestly believes that the code will do him no harm. He will then download and run any program, regardless of where it actually came from, as long as he gets presented with another "Do you trust Microsoft?" button, because he's been conditioned to say "Yes" by Windows Update. In this case (i.e. for general use on the Internet), the "all or nothing" concept is appropriate. Joe User would be far better off treating every application with suspicion than learning that the Code Signing Fairy will bless certain bits and everything else will be covered in foul-smelling, rotten tomatoes. There is no way that the code signing theory is applicable in general use, so using it is a bad idea.

      Now that I'm sufficiently depressed, I think I hear a bottle of Jack Daniels calling me

    3. Re:Good comments by lukewarmfusion · · Score: 1

      I've been accused of pointing out flaws but not providing a solution. I've also been accused of suggesting unrealistic solutions after I pointed out the flaws. Major security risk, but the client doesn't want to spend money to fix it. You just can't win.

      In the "all or nothing" world, I envision my wife's grandparents clicking No to every box even when they should click Yes (Do you want to install Ad-aware, Do you want to update your antivirus definitions, Do you want to delete the virus?). They are "all or nothing"-minded people when it comes to computers. They were still running defrag every night because someone told them it would speed things up.

      I agree with Schneier and your comments. Code signing shouldn't part of the end user experience... it's another way to confuse users like my in-laws, who have enough trouble as it is with AOL, replacing printer cartridges, and going swimming with their $500 digital camera in grandpa's pocket.

      I think I'll split that bottle with you now.

    4. Re:Good comments by nwbvt · · Score: 1
      "You make some good arguments. Code signing is not a panacea, but it does add value. saying it sucks because it doesn't solve world hunger is a worthless criticism of a good technology."

      Yes, but one could argue that in this case, the technology is misleading. The average user (unlike an experienced hacker who knows not to click the "always trust" box) may wrongly interpret code signing as a panacea, or at least something close to one. This can give them a false sense of security, which can be a huge risk.

      --
      Mathematics is made of 50 percent formulas, 50 percent proofs, and 50 percent imagination.
    5. Re:Good comments by GnuTzu · · Score: 1

      I have to compliment this post. This is a very meaningful portrayal of how a person may come to feel working in a security position. I appreciate this because this is the direction in which I am now pointed.

      My skeptical mind tells me that there are a few considerations that deserve a poster on the security wall.

      • Nothing is absolute (even this).
      • Everything erodes and decays no matter how permanent you had hoped it would be.
      • Everyone, at some point, succumbs to human frailty, and good habits ultimately degrade from this.
      • Everyone will resist or neglect some area of education (eventually).
      • There will come a time when you feel like your the one with your finger in the dyke, and nobody cares (so get over it).

      But, don't let Jack run your life.

      Social engineering depends upon people being trusting. I doesn't matter if something was signed with a pen or a crypto scheme; someone will interpret the presence of a signature to mean more than it does. And then, there will always be forgers, impersonators, and posers.

      --
      { return clarity; }
    6. Re:Good comments by VENONA · · Score: 1

      "...I'm starting to come up with a trend: it isn't possible to really secure the computer if the end-user doesn't understand and/or care about security."

      Stay in the business long long enough, and you won't regard this as a mere "trend," my friend. It makes some things which should be both useful and easily implemented impossible, etc. You hit stretches where you lose more than you win, because a non-technical manager doesn't really want to hear about a threat. Lots of other frustrations.

      But at the end of the day, the up side is that security work is *fun.* I'd much prefer to be doing it than coding some small piece of a thumping great business app in Java. It's also difficult work. So difficult that I suspect it can't be done well, for any length of time, by those that aren't having fun.

      So may the fun be with you. The victories make it all worthwhile.

      --
      What you do with a computer does not constitute the whole of computing.
    7. Re:Good comments by 51mon · · Score: 1

      "I run multiple firewalls on my systems AT HOME, plus antivirus and antispyware programs. I actually review my logs. I don't run any program that was written more recently than my AV updates. I'm what most "normal" people would consider paranoid. And I still run into issues."

      Funny on my home system, I have one firewall, I don't run antivirus, I don't run antispyware, none of the code I run is signed (or if it is the installation utility doesn't check the signature (yet)), I visit all the worse places, I've run honeypots, and tarpits on the box, and I review the logs erratically usually only when I fiddle and break something, and I've never run into any security issues in 5 years.

      I did have to release a patch for a piece of software in response to a Bugtraq post at one point, no boxes were known to be compromised by that flaw.

      I think perhaps your problem is not selecting the software you use carefully enough.

    8. Re:Good comments by dandraka · · Score: 1

      In economic theory, there's the citadel model and the insurance model. As Bruce has pointed out in http://www.schneier.com/essay-024.html , The Citadel model basically says, "If you have this stuff and do these things, then you'll be safe." The Insurance model says, "Inevitably things will go wrong, so you need to plan for what happens when they do. [...] But in practice, no one has ever built a citadel that is both functional and dependable.

      So while a desire for security is understandable, thinking that you will do this-and-that (antivirus programs, firewalls, code signing, you name it) and you will never have trouble is a lose-lose situation: You both impede your job and end up with some kind of trouble sooner or later.

      By the way, I do code sign my programs. I have distributed my (department's) public key, and almost forced our clients to trust it. Next project: Teach them that a program that says "MyCompany S.A." and is not automagically trusted, is, well, not from MyCompany :-)

      --
      Dimitris
    9. Re:Good comments by Lally+Singh · · Score: 1
      I've written several comments on /. regarding security, and I'm starting to come up with a trend: it isn't possible to really secure the computer if the end-user doesn't understand and/or care about security. Here on /. there are many, many people who care and understand. I run multiple firewalls on my systems AT HOME, plus antivirus and antispyware programs. I actually review my logs. I don't run any program that was written more recently than my AV updates. I'm what most "normal" people would consider paranoid. And I still run into issues.


      Well, I think you hit the nail on the head, even better than you know. The definition of 'security' depends on the user - what do they want the computer to do and not to do? And, the problem is, the user usually doesn't have a good answer for that. They'll know what, abstractly, what they want the computer to do and not do (e.g. talk to only my bank, and never give any personal information to anyone else), but not how to describe that in terms of technology (e.g. only talk to a bank with a valid certificate from a trusted CA, etc).

      SysAdmins will want to educate the users about that gap. That's the best that can be done by a sysadmin, they can't change the terminology of the computer, just make it understood by the user. But, as computers continue to increase in complexity, the amount of education required will be too much of a burden....

      However, the programmers can change the terminology. And finally, my little thought on the topic. Software should work hard, very, very hard, to make it easy to stay secure. And I think they're trying, just not aggressively enough. I think it's ridiculous that users have to accept code from Microsoft, when they're already running Windows -- usually, you can't really say no, as there will always be dependencies. Making the user say yes, without honestly having a real choice in the matter, is a deep insult (e.g. "Who's your daddy?" "Please sir, may I have another?").

      The idea that normal users ever see the word 'certificate' on their screen is absurd -- hell most programmers don't understand digital signatures.

      Only time will tell if this gets any better. Thankfully the attackers aren't getting much more sophisticated than the programmers right now, so the software has a chance to strengthen without losing all of the user's confidence.

      For code signing, the computer's asking you two questions about the signing party when it asks you to accept a segment of code:
      1) Do you think these guys have good intents in the software they write?
      2) Do you think they have their shit together?

      For the entire industry, the answer to #2 is No. Which was Bruce's point. Most people here argued that the #1 is often true, and thusly code signing has its uses. Sadly, until #2 starts becoming true, #1 doesn't really matter. But, I do think that it will, as we get lots of hardcover $50-for-300-pages-of-large-type books about how to do it.

      So, my opinion is that code signing will be useful later, when it actually means something.

      -ls
      --
      Care about electronic freedom? Consider donating to the EFF!
  11. In-justice? by Anonymous Coward · · Score: 0

    I don't know if it's an in-justice, but you might want to con-sider in-stead that maybe it's just on in-dividual's o-pinion.

  12. Do you code write? by Evro · · Score: 3, Informative

    When used in this context, "code sign" doesn't make sense... shouldn't it be "Do you sign your code?" Or if it's intended as a new phrase, maybe it should be "Do you code-sign?"

    --
    rooooar
  13. How is it verified by martok · · Score: 1

    This sounds like a windows-only feature but how can code signatures be verified? Does windows have some sort of certificate chain ala SSL where a developer needs to get an SSL certificate signed in order to code sign. If this is the case and such signatures were verified by the os kernel itself before running the binary, it makes good sense for IT departments to have the ability to restrict binaries based on signatures.

    1. Re:How is it verified by Anonymous Coward · · Score: 0

      Basically, yes. In IE go to "Tools | Internet Options | Content | Certificates | Trusted Root Certification Authorities" to see a list of the root certificates. This includes the usual suspects (e.g. verisign) but also many you've probably never heard of.

  14. Bruce is spot on. by Run4yourlives · · Score: 1

    Code signing is useless dribble, to be quite frank. Your counter-argument for his first point is lacking.

    1. Re:Bruce is spot on. by ehvoy · · Score: 1

      The only advantage of code signing I see is using in-house self-signed certs for in-house VBA programs (MS Office macros). Properly secured (IMHO), MS Office should be set to block all macros to save the network from melissa-like macros and other interesting office attachments emailed by some botnet. But damn that warning thrown up every single time the legitimate macro doc is run sure gets annoying...

      The crafty end user will configure office to trust all macros, those da

      Better solution: Create a self-signed certificate for the mandatory macro document (easy to do with the vba dev environment included with office), configure all clients' copies of office to trust the cert, and protect the cert from misuse (not sure if this is possible where office is concerned, but...)

      Even better solution: do not freaking use vba.

      Anyone know if it is possible to self-sign third-party MS Office macros?

      And that is the only time I have found code signing useful, or trustworthy: when the company I work for completely controlled the creation and deployment of the certificate.

  15. Hey Cliffy Baby by Anonymous Coward · · Score: 0

    Hey Cliffy Baby: You need to stop posting this garbage to Zonk's blog.

  16. Onus on user doesn't help by SilentReallySilentUs · · Score: 3, Interesting

    I think most of the users have no idea what "This code is signed by BlahBlah corp" or "See certificate" etc. means. They simply click on something to get past the annoying window.

    1. Re:Onus on user doesn't help by A+beautiful+mind · · Score: 1

      Or worse, a lot of people fall for the "This code is signed by 'CLICK YES TO CONTINUE' provider".

      --
      It takes a man to suffer ignorance and smile
      Be yourself no matter what they say
    2. Re:Onus on user doesn't help by dtfinch · · Score: 1

      A lot of people including Verisign.

  17. 2 things... by deviantphil · · Score: 2, Informative
    1. The book is a few years old (1999 or 2000 IIRC).
    2. I believe Bruce is referring to the fact that: yeah....you can say so and so created this code. But that doesn't teel you how trustworthy the person or how well the code was made. So therefore putting too much faith into a "seal" saying that it is signed is a mistake.

    Maybe Bruce himself reads /. and will post. I read his blog daily and I know he often posts comments in his own blog.

    1. Re:2 things... by Anonymous Coward · · Score: 0

      "Maybe Bruce himself reads /. and will post."

      Your new here arn't you?

  18. This is it by Anonymous Coward · · Score: 0, Flamebait

    This is all the proof anyone needs that the Slashdot editors don't even have a rudimentary grasp of English.

    "do you code sign" is meaningless.

    ANY other phrasing would be better. ANY.
    How about: "Do you cryptographically sign your program code?" OH LOOK! It still fits in the titlebar, takes only three seconds to type, and contains a complete concept!

    Jesus H. Christ. Fuck slashdot. Digg.com is all you need anymore.

    1. Re:This is it by Monte · · Score: 2, Funny

      At first glance I thought it was a referance to writing the software for those highway text display signs.

      "Yeah, I code signs. Ever been by the I75 exit on the Ohio Turnpike? That's mine."

  19. Point Five by Anonymous Coward · · Score: 0

    Greetings,

    This means if the host has been comprised and the code changed, the black hat will just regenerate the signature.

    The code and signature should be on separate hosts. Maybe something like a keyring server.

    Cheers

  20. Signed is still better than unsigned by nsushkin · · Score: 1
    I'd rather get a certificat and sign my code. Would you rather your application appear as "don't trust this code, it's unsigned" or as "Signed by . Do you want to trust?"

    You can probably co-opt Thawte's freemail certificate for code signing.

  21. Re:Now let's not go off on a tangent.... by 3waygeek · · Score: 2, Funny

    or this thread could get hyperbolic very quickly.

  22. Anybody can get code signed if they send cash by Anonymous Coward · · Score: 0


    and thats the problem, certificates are issued on the basis of whoever pays, gets, requirements have no bearing on authenticity just on whoever writes the cheque gets the certficate

    perhaps this is one thing the goverment should oversee without a price tag attached to it (for the good of society, but thats a concept lost at the moment), so far its been proved to just be another revenue stream for Verisign/Thwarte etc, except its like money for free as far as they are concerned

    1. Re:Anybody can get code signed if they send cash by HishamMuhammad · · Score: 3, Insightful

      You can sign your code using a public key scheme like GPG. No need for a middle-man like VeriSign. Users can get your public key at your project's website and verify that the code is really yours. Of course, your project's website may be compromised... but so can VeriSign's...

    2. Re:Anybody can get code signed if they send cash by Monte · · Score: 1

      Indeed, some time ago somebody managed to get a Genuine(r) Microsoft certificate. AFAIK no mischief was done, but if you ever needed a reason to avoid that bloody "Always trust [fill in blank]" click box, I'd say that's it.

    3. Re:Anybody can get code signed if they send cash by madbrain · · Score: 1

      Verifying data against raw keys is primitive. Ever heard of certificates ?

      They bind the public key to an identity . The cert gets verified against a whole chain.
      It doesn't matter if Verisign's web site gets compromised, as long as your local trusted root store has not been compromised.

      Now if Verisign were to sign certificates for the wrong person, then there would be a risk, but that's very different than a website compromise.

      --
      -- Julien Pierre http://www.madbrain.com/blog
    4. Re:Anybody can get code signed if they send cash by owlstead · · Score: 1

      Verisigns certificates are normally distributed by other means, for instance with your favourite web browser or operating system (or both). Furthermore, how do I know I can trust you or your site? With Verisign, users do have to provide some information and/or money (how much depend on the level of the certificate).

      If they do something bad with their key, Verisign will put their certificate up on their Certificate Revocation List. And last but not least, where do you store your private key? I know Verisign will store their keys pretty safely. I bet they keep a watchfull eye on their webservers too. Their servers are much less likely to break than avarage.

      I do not think that (P)GP(G) fits the bill that well for code-signing. Especially the revocation part seems to be missing. IF you do code signing yourself, use X509v3 certificates and make sure to keep your root keys safe, and publish revocation lists. You can use OpenCA or any other open source CA to keep track of your certificates and keys.

      Note: I myself would not choose Verisign for code signing...

    5. Re:Anybody can get code signed if they send cash by JackDW · · Score: 0
      perhaps this is one thing the goverment should oversee without a price tag attached to it (for the good of society, but thats a concept lost at the moment),

      Not necessarily good. In Britain, our wonderful socialist government has started a process of this kind of thing, and it's enchroaching on all our freedom - they are intent on tagging us all like cattle. Perhaps certain things should remain in the hands of several independent companies, for the good of society.

      --
      You're an immobile computer, remember?
  23. Lamer vocabulary alert! by Anonymous Coward · · Score: 0

    Would it be any different if he unbasically said something?

  24. About as good as "real" signing...? by Monte · · Score: 1

    Hey, this painting I just bought at a garage sail is signed "Piccasso" - W00t! eBay, here I come! Untold riches are surely mine! ...which, I think, would kinda point out the flaw in the system. I hope.

    1. Re:About as good as "real" signing...? by Anonymous Coward · · Score: 1, Interesting

      Isn't it more like some guy on ebay saying "trust me it's a Picaso" versus Christie's Auction house saying "trust us it's a Picaso"?

      Of course neither speaks to how good the painting is.

  25. Just a sine of the times. by jd · · Score: 4, Funny

    Periodically, you have to use trig functions for sine-ing. This technique arcs back to Pythagoras who would tan himself by sitting in the radians of the sun.

    --
    It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    1. Re:Just a sine of the times. by Anonymous Coward · · Score: 0

      guys like you that scare girls away from all math majors..

    2. Re:Just a sine of the times. by heinousjay · · Score: 2, Funny

      No, I think it's all the math...

      --
      Slashdot - where whining about luck is the new way to make the world you want.
    3. Re:Just a sine of the times. by Anonymous Coward · · Score: 0

      Tan?!? I'm a polar bear, you insensitive clod!

  26. Point #5 by rewt66 · · Score: 2, Insightful

    I believe that I understand Bruce's point #5. Let's say that I'm going to download the Linux kernel from RedHat. And let's say that I want to be sure that it's the real Linux kernel instead of some trojaned thing. So I check the signature (assuming that RedHat actually signed it...)

    But how would it not be the real executable? I only see two possibilities:

    1. Somebody hacked into RedHat's servers and overwrote the executable. But if they did that, why not just overwrite the signature too? (I know, it isn't that simple if the signature mechanism uses a public key, which I suspect that it does. Then you would have to have access to a valid RedHat private key to sign the bad executable. But you could just delete the signature instead, making it look like RedHat didn't bother to sign the file.)

    2. Somebody is playing with you via DNS or ARP poisoning or some such, and you aren't going to RedHat at all. But the exact same argument applies - they just remove the signature, and who's to know? (Well, everybody knows who is checking signatures, but everybody assumes "they just didn't sign it" rather than "oops, hostile action!")

    So the point is that signatures don't really protect you here, unless you are really paranoid, and in practice, very few people really operate consistently in paranoid mode...

    1. Re:Point #5 by Keeper · · Score: 3, Insightful

      1. You are correct, you would need access to RedHat's private key to "fake" a signature. If the file isn't signed, you know that whoever created the binary didn't have access to the private key and that you can't determine the origin of the file. If you choose to believe that the file's origin was from RedHat after RedHat told you that they sign their binaries, then you made a poor decision.

      2. Again, poor decision.

      At the end of the day, it is up to the user to determine what to trust and what not to trust. They are the only ones who can make the trust decision. Code signing is intended to give users the information they need to make that decision. If you want to take the decision out of the hands of the users, a 3rd party must decide what can and can't be safely run on a machine. That isn't an acceptable solution.

      Security is entirely about paranoia. You lock your front door because you're afraid someone is going to walk into your house and steal your stuff. You lock your car because you're afraid someone is going to steal it. You have a logon/password to your computer because you're afraid someone is going to find your porn collection.

      If you want to operate a computer in an enviornment that exposes you to to hostile applications, you must be paranoid enough to determine where an executable came from and if you trust that location before running it.

    2. Re:Point #5 by Anonymous Coward · · Score: 0

      1. No one in their right mind keeps their private key on a web server. They sign packages on a secure machine.

      2. The whole point of checking signatures is that you check signatures for *everything*, and assume the worst if there's no signature.

    3. Re:Point #5 by try_anything · · Score: 1

      I think Bruce's point #5 also refers to the usefulness of code-signing in protecting against inside jobs. Since a cryptographic signature can't be faked, it can be used to hold the signer responsible for the signed content. However, as Bruce points out, signed code can let the signer off the hook by erasing its own signature. In this respect signatures on code are less useful than signatures on other kinds of content.

  27. It depends on the context. by Some+Random+Username · · Score: 1

    Are you and/or Bruce talking about code signing as in microsoft pretending that signed activex controls are magically safe? If so, then Bruce is right, it does nothing and is a total waste of time. Signing is just so you know that the code was written by who you think, you still have to decide for yourself wether you trust that person to write good code.

    If we're talking about people like me, who offer pgp signatures of the software they wrote along with the tarballs, then its worth doing. Based on how many people download the tar.gz vs how many people download the .asc, very few people actually verify their downloads. But a tiny fraction do, and its worth the 2 seconds signing takes to help those people know that they downloaded what they thought they downloaded.

    1. Re:It depends on the context. by Bent+Mind · · Score: 1

      Based on how many people download the tar.gz vs how many people download the .asc, very few people actually verify their downloads. But a tiny fraction do, and its worth the 2 seconds signing takes to help those people know that they downloaded what they thought they downloaded.

      Or to verify the download didn't get corrupted. That's what I use the .asc and .md5 files for.

      --
      Request a Linux Shockwave player here: http://www.macromedia.com/support/email/wishform/
  28. If... by jd · · Score: 1

    ...the only I/O was via a camera (a-la HAL 9000), you'd have to code in sign.

    --
    It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    1. Re:If... by xski · · Score: 1

      you could speak to HAL. I suppose you could even do code-singing. Linux Kernel in C minor anyone?

  29. Did you mean: certificate? by SpelingTroll · · Score: 1

    > I'd rather get a certificat [sic] and sign my code. Would you rather your application appear as "don't trust this code, it's unsigned" or as "Signed by . Do you want to trust?"

  30. I do. by stg · · Score: 2, Informative

    I sign my shareware, simply because WinXP's screen when running signed software is slightly less frightening. I think that is worth the yearly US$100 investment (I didn't do a double-blind test, though - it's just an educated guess).

    About Bruce's Argument #1, that is true. However, the idea is that whomever they got their certificate from (Comodo, Thawte, Verisign, etc) will revoke the certificate as soon as they do something against the rules. It will show as revoked if the user is on-line when the screen comes up.

    I previously heard about someone's certificate being revoked for wrongdoing. I can't remember any of the details.

    If the certificate issuers acted fast on reasonable complaints, it could be a great security enhancer.

    As it is, the group that gets the most of it is MS (who gets fees from issuers for being in their OS's root certificate) and the certificate issuers.

    1. Re:I do. by Bent+Mind · · Score: 1

      I think that is worth the yearly US$100 investment

      As it is, the group that gets the most of it is MS (who gets fees from issuers for being in their OS's root certificate) and the certificate issuers.


      I always figured signed code was just a money generater for Microsoft and company. Kind of like "Microsoft: Give us money or we'll encourage people to think your code is malicious". I also figure it's a way for Microsoft to control what software goes on your computer, using scare tactics.

      --
      Request a Linux Shockwave player here: http://www.macromedia.com/support/email/wishform/
    2. Re:I do. by gclef · · Score: 1

      This, of course, assumes that the client machines are checking the certificate revocation list URL, or that the certs even *have* CRLs listed in the cert.

      Neither of those is a safe assumption.

    3. Re:I do. by justasecond · · Score: 1

      $100? We've been looking into code-signing lately, and my impression was that Verisign had the market locked at $400 a pop. Is it cheaper for individuals, or did you get the cert from somewhere else???

    4. Re:I do. by stg · · Score: 1
      $100? We've been looking into code-signing lately, and my impression was that Verisign had the market locked at $400 a pop. Is it cheaper for individuals, or did you get the cert from somewhere else???


      I got mine from Comodo, at http://www.instantssl.com/. There are several providers, with different prices depending on what they can get away with .

      When I renewed, the new cert pointed to http://www.usertrust.com/, no idea why. They also refused to set the new certificate date to add the month left in the previous cert *after* their online support specifically told me they would... I didn't bother to complain more, but I am warning everyone when I mention them.

      It's the same price for everyone, AFAIK. Obviously, the documentation required changes between company/individuals and if you are in the US or elsewhere.

      Please note that Verisign's will be accepted by more default OS configurations than other issuers.
    5. Re:I do. by stg · · Score: 1

      They should be required to have CRLs in the cert...
      Looking at the root certs on WinXP, seems that only a few have a CDP field, though.

      I guess these are going for the accountability angle alone.

  31. Argument #5 by DVega · · Score: 2, Informative

    " Bruce's Argument #5) The fact that the evidence of attack (the signature on the code) is stored on the computer under attack is mostly useless: The attack could delete or modify the signature during the attack, or simple reformat the drive where the signature is stored.

    My comments: I am not sure what this statement means...."

    Sometimes "code-signing" is said that even though it does not garantee the safety of a downloaded component, at least you know who to blame if it crash your computer. But, a bad-guy can sign his component, you accept the signature, and then the component can delete all traces of the signature from your computer. So even if you later realize that it was a "bad-component", you have no mean to review the signature.

    --
    MOD THE CHILD UP!
    1. Re:Argument #5 by jtpalinmajere · · Score: 1

      I think the more important point to make here is that when code is deemed 'trusted' then the existence of the signature is really moot in any case. Who cares if you're running a piece of software that has a/no certificate to authenticate its authorship if the code works as intended? Granted, the system was never designed to track down offenders. It is meant to be a precautionary "before you download" or "before you run" measure of whether you trust the code to come from its owner, and by proxy whether you trust that owner to have written secure code.

      However, IMO trust, whether warranted or not, engenders a feeling of security. If the system in place does not guarantee that security (or some acceptable level of security) then entrusting a piece of code is valueless. It makes me wonder whether a concept such as trust is even appropriate for internet consumption.

  32. Signatures aren't useful for security by iabervon · · Score: 0

    Code signing can be used to determine where the code came from (or, at least, some place that claims to have provided the code). If that's really what you want to know, then it's fine. It's a good mechanism for giving some information to people who click on a program and select "properties".

    On the other hand, this information is not useful for deciding whether to trust some code, because the signature only provides proof of origin, not proof of correctness. Anything that only permits signed code to run is fundamentally flawed, because it makes the assumption that there are signers who only sign good code, which is manifestly false.

    On the other hand, mere origin is useful in some cases, although, lacking any security implications to forged signatures, there's little need for cryptography, which is why I've signed a bunch of my code. (It's worked reasonably well; people sometimes realize when I'm the right person to debug something, and sometimes don't.)

    There is some potential for validating that things haven't been changed using signed code. If the OS knows that you're trying to run Microsoft Word, and it's not signed by Microsoft, it can tell you that. And some OSes could actually retain the public keys with sufficient security to actually catch some problems that way (particularly on applications installed by users). But this is an unusual situation and only protects things that viruses don't generally do these days (modify programs without compromising the system).

    1. Re:Signatures aren't useful for security by tepples · · Score: 1

      Anything that only permits signed code to run is fundamentally flawed

      In that case, the Atari 7800, Atari Lynx, Atari Jaguar, Microsoft Xbox, and Nintendo DS wireless are fundamentally flawed, but the Xbox and NDS still sell. All of the above systems refuse to execute code that has not been signed by the maker of the device.

  33. It's Simple by Anonymous Coward · · Score: 0

    Software signing is a simple case of "who's watching the watchers". If there is no quality controls put in place on the signed code, what truly is the point of signing it? The browser gives me a scaaary dialog box that states "Not trusted!". Most users only want to achieve the installation and get that damn box to go away.

    The solution? Simple. Approve all signed software and actually make the code signing a "process". The code is submitted, analyzed and API's detailed by a clearinghouse, and then receives a rating. Use the certificate mechanism to control what level is acceptable for an organization or an end user. In end loser cases, it's a 10 situation. OS default.

    1. Re:It's Simple by duffbeer703 · · Score: 1

      That's why things like bridges are pretty reliable, and software sucks ass. To the computer industry, words like "standards", "accountability" or "quality" are jokes, with the exception of some financial firms and government agencies.

      --
      Conformity is the jailer of freedom and enemy of growth. -JFK
  34. Do I Code Sign? by Mensa+Babe · · Score: 2

    No But I Sign Code.

    Editors: Please correct the mistake in the headline. Thank you.

    --
    Karma: Positive (probably because of superiour intellect)
    1. Re:Do I Code Sign? by Minwee · · Score: 1

      It's not a mistake. The article really is about combining ASL and Pig Latin into Code Sign Language.

    2. Re:Do I Code Sign? by thebatlab · · Score: 1

      It's actually not a mistake. It's talking about the act of code signing so "do you code sign" is acceptable usage. I can't think of a good example of where else this happens but as much as I enjoy pointing out editor mistakes, I don't believe this is one.

    3. Re:Do I Code Sign? by Anonymous Coward · · Score: 0

      It's actually not a mistake. It's talking about the act of code signing so "do you code sign" is acceptable usage.

      No, it isn't. But you just don't it get, do you?

  35. Quit missing the point by Skeeedunt · · Score: 1

    The only thing that signing anything does is insure that the object you receive is the same as that which a trusted publisher sent you. It says nothing about the usefulness or safety of the code, and isn't meant to. If you trust whoever to write safe code, that's your problem. The only really practical use is to make sure you aren't receiving code that has been modified in transit or posted by someone posing as someone else. Of course to really do this, you need to verify the integrity of the signer's certificate as well as the code's signature. This either costs money or is generally insecure (as no one is going to bother verifying the md5 on joe blow's random certificate authority, and even if they did so, it theoretically could be compromised in transit as well, unless you call joe blow on the phone, and he probably wouldn't know what you were talking about). The only place this really works is in a corporate lan environment (where this type of breach is much less likely anyway) or with big name source distributors like MS or Linux distro's.

  36. On the book of Bruce by owlstead · · Score: 1

    I see this book mostly as an opinion piece, as well as a good starting point on how to think about security. I must say I like his other books much more than this one.

    The small part about code signing is just that, a not so well thought out part of his book with little around it to back it up. It mentions ActiveX especially, which probably means that it is taking code signing to mean "this package has safe code inside it, which other (untrusted) applications may run. I agree wholeheartely that this is little reason to trust some software package *alone*. This can be mitigated if said package runs in a sandbox itself, or has been proven to not contain buffer overflows, or requires user input to install or run. You get my drift.

    But if code signing is used to show that an install package is from someone, and it is signed with its key, then code signing *can* provide some serious security benefits. Saying no to that means that putting digital signatures have no merit. This is however a very different use of code signing than the one Bruce seems to target.

  37. Corporations vs. The World by AlexCV · · Score: 2, Insightful

    You work for a corporation. You have some control over a bunch of desktops. You have an hopefully security aware groups to vet things and inspect and what not. You're the ONLY group of users who see real benefits to code signing. Of course it all works, FROM YOUR POINT OF VIEW. (sorry for shouting).

    Me, I'm just one guy. I'm not going to do due diligence for every software out there. Half of what I use isn't signed. Should I just give up on it? I don't have TIME to deal with security enough to make a whitelist useful.

    Them over there, they're also a big corporation, but they have tons of sites and while people back at HQ are somewhat clueful, the support folks at the site in the Boondocks halfway around the country suck. Or security is just not a priority, whatever. Benefits from code signing? Nil.

    So you, the poster of this article, are in the one group that actually gains anything. I would recommend you investigate the possibility of resigning absolutely everything and banning anything but your own cert, not even microsoft's. Cause it sure seems like you run a tight ship, I envy you.

  38. What it tells you... by jd · · Score: 2, Insightful
    ...is that the code is from who it claims to be from - in other words, nobody tampered with it in transit or on the remote site. This doesn't tell you it is safe, it DOES tell you that any danger is not from an unknown/outsider.


    In other words, it doesn't eliminate risk, but it does quantify it - provided that the signature chain is meaningful.


    For example, a "correct" approach is to have the package maintainer sign the package as verified by the maintainer. The maintainer's key is signed by someone else - preferably someone well known - so that users can be sure that the key's owner is who they say they are.


    The RPM/DEB/whatever packager would then sign their built version of the code. For "perfect" security, the binaries would be handed back to the source package maintainer, who would countersign the binary as authenticly compiled from their work.


    A distribution provider would then add their OWN signature to the binary package, to establish that the copy in their posession is genuinely from them and that they know the source of the package. They'd also countersign the developer's and binary packer's keys.


    At this point, you've an auditable trail and enough cryptographic keys to (almost) guarantee that nobody could break into the package and add malign software to it.


    It does NOT prove that the package is "safe", but COULD be used in a court where digital signatures were accepted to prove responsibility. Thus, if a package was provably untampered-with, but provably had spyware in it, then you could use the signature chain to establish with a high level of certainty as to who had introduced that spyware and when. (It can't have been after the last signature that matches the binary, and must have been the first person who established a valid signature on the file.)

    --
    It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
  39. Code signing for trust by bitslinger_42 · · Score: 4, Insightful

    You state that several of Bruce's arguments do not apply, since code signing wasn't designed to solve problem A or problem B. Unfortunately, this isn't an issue of what signing was designed to solve, it is a question of what the end user thinks code signing is for.

    If the end user is presented with pop-ups asking "Do you want to trust code from Company X?", the user will be making a decision about that trust. They may (or may not) be concerned with questions such as "Will this code crash my computer?" or "Is this a Trojan horse?". They couldn't care less if the code was really authored by Simon P. Coder while under the employ of Company X. When they click "Always Trust", if they're thinking at all (not guaranteed), they will think that the code is safe, won't crash, and won't have extra "features" that steal their private information.

    This is Bruce's point. Because of the presentation and implementation issues, most end users are left with the impression that signed code==good code, an impression that is not always accurate. If the technology is leading the end users to believe things that simply aren't true, there is a problem. In certain, limited, tightly-controlled environments, code signing can work as intented. In general, it is at best an annoyance to the end users and at worst a complete fraud.

    1. Re:Code signing for trust by Anonymous Coward · · Score: 1, Insightful

      > In certain, limited, tightly-controlled environments, code signing can work as intented.

      I work for a company that signs firmware upgrades for our devices (with a hardware protected key), and the devices check the signature before accepting an upgrade, and in that situation, signing works.

      But more generally, I agree with you and Bruce.

  40. Is It Even Solvable? by Feneric · · Score: 1
    If you feel like Bruce Schneier, how would you fix it?

    This makes the assumption that it's a solvable problem; not every problem is, especially when it comes to computer security (or security in general, for that matter).

  41. Nah! by jd · · Score: 1

    Windows in C sharp!

    --
    It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
  42. What do you really want to know? by jcr · · Score: 1

    The question here is, do you want to know who wrote the code in question, or do you want to know if it's correct?

    -jcr

    --
    The only title of honor that a tyrant can grant is "Enemy of the State."
  43. What it's useful for in large enterprises by flanker · · Score: 1

    When you are developing applications and are compiling against packaged components that maybe you didn't write, it's critical to be able to say "I am building this application against this component/library - when it gets out in the production world, don't link/load any version of the library that isn't digitally signed with the private key that matches this public key". That is what code signing is good for. Not some farsical "proof of correctness" aquatic ceremony. :)

    --
    Left shift 1 for e-mail...
  44. It shouldn't matter if your website is comprimised by Some+Random+Username · · Score: 1

    Offering a PGP signature for your code already solves the comprimised website problem. Your public key should not be on your website, it should be in several publicly available keyservers, so an attacker would have to hack a bunch of keyservers, plus your website to be able to do anything. And even then, people who had already downloaded your public key in the past are still safe.

  45. Really? by Anonymous Coward · · Score: 0

    Does code signing really ensure that the code came from the trusted source? I think there is an argument to be made that if someone hacks your software distribution channel, they might have also hacked whatever mechanism is responsible for signing your code. Bruce may have also made this argument, however, I'm not going to reread the book to confirm.

  46. One man's quirky tale by PIPBoy3000 · · Score: 2, Funny

    Our organization recently bought an email encryption product called Tumbleweed that was quite expensive. One of the features is that any e-mail with "[Secure]" at the beginning of the subject would automatically be encrypted. The catch is that in order to make a button in Outlook that added this text, it would cost an extra $8,000 for a custom add-in.

    Naturally the request came to me (even though I develop web applications). I whipped up a ten line Outlook macro that did it, spending about twenty minutes on it. Easy, right? The catch is that Outlook security is incredibly tight and unless you open massive security holes, the macro wouldn't run unless it was digitally signed by a trusted provider.

    I plunked down $400 for a Verisign certificate and spent the next couple weeks working with our SMS guy to create packages for the various Outlook versions, and the desktop guys to deal with people who had custom Outlook macros.

    Basically it was a huge hassle, done only because we had to. Still, it worked, and ended up saving some money. Crazy, though.

    1. Re:One man's quirky tale by rjstanford · · Score: 1

      The catch is that in order to make a button in Outlook that added this text, it would cost an extra $8,000 for a custom add-in.

      Naturally the request came to me (even though I develop web applications). I whipped up a ten line Outlook macro that did it, spending about twenty minutes on it. Easy, right? The catch is that Outlook security is incredibly tight and unless you open massive security holes, the macro wouldn't run unless it was digitally signed by a trusted provider.

      I plunked down $400 for a Verisign certificate and spent the next couple weeks working with our SMS guy to create packages for the various Outlook versions, and the desktop guys to deal with people who had custom Outlook macros.


      So. Their price: $8,000. Your price: $400 + four man weeks. So, you saved money if and only if your internal cost (after SS taxes, office space, insurance, etc) is less than $95,000/yr. Which equates to approximately a $70,000/yr salary. If y'all make less than that, you saved the company money (at least in the short term). More, and you didn't. Not quite so cut and dry.

      --
      You're special forces then? That's great! I just love your olympics!
    2. Re:One man's quirky tale by scotch · · Score: 1
      Sounds like you should have just plonked down the $8000. Probably would have been cheaper in the long run.

      --
      XML causes global warming.
    3. Re:One man's quirky tale by duffbeer703 · · Score: 1

      If he was going to be sitting at his desk pounding his pud and reading slashdot, four weeks is actually a recovery of sunk costs.

      --
      Conformity is the jailer of freedom and enemy of growth. -JFK
    4. Re:One man's quirky tale by PIPBoy3000 · · Score: 1

      We certainly joked about it. Most of my time after writing the code was as an occasional advisor. I ended up talking with the SMS person a bunch, helping him make a package that would work with everything. It certainly wasn't four man weeks. It probably was along the lines if six hours spread across many weeks, as is most of the stuff I do.

      Personally I mock the people who can't juggle more than one or two projects. I typically have a dozen or two, continually ebbing and flowing, often not really ever being truly completed.

    5. Re:One man's quirky tale by Ernesto+Alvarez · · Score: 1

      USD 8000 for an auto encrypt function?!!?!?!

      I don't want to even think about the price of tumbleweed itself....

      What's so special about that software? It's certainly not more secure that PGP (I use GPG+Thunderbird+Enigmail myself). Customer service, I suppose. They appear to use S/MIME.

      At least it looks safe to use.

    6. Re:One man's quirky tale by Anonymous Coward · · Score: 0
      I plunked down $400 for a Verisign certificate and spent the next couple weeks working with our SMS guy to create packages for the various Outlook versions, and the desktop guys to deal with people who had custom Outlook macros.

      In the costing, don't forget the internal costing for the SMS team to create the assorted outlook versions. I bet those guys aren't cheap.

    7. Re:One man's quirky tale by IIH · · Score: 1
      The catch is that Outlook security is incredibly tight and unless you open massive security holes, the macro wouldn't run unless it was digitally signed by a trusted provider.

      Did you notice anything wrong with this? Namely that you, the owner of the computer, could not get to choose *yourself* as a trusted provider, but had to get versign to say that you can trust yourself, for which they get $400. Nice work if you can get it, eh?

      --
      Exigo spamos et dona ferentes
    8. Re:One man's quirky tale by Anonymous Coward · · Score: 0

      Acctually, it's pretty simple to add trusted certificates to outlook. I don't have any machine running Windows at home, but during a job this summer the POP-server that my boss was using was running over SSL, but whoever set the mail-server up didn't bother to import the certs to outlook or buy a certificate from Verisign (or whoever) so whenever my boss checked his e-mail a messagebox would pop up saying that the authenticity of the server couldn't be verified.

      A simple fix to it was to dump the SSL-session with ethereal and extract the servers public key (which is sent in BER-format iirc.) and convert that to whatever format it is that outlook expects using openssl and then import it.

      So yes, you can specify which certificates you want to trust in Outlook.

      (Sorry for posting AC, I don't post very often so I don't have an account I remember the password for.)

    9. Re:One man's quirky tale by RzUpAnmsCwrds · · Score: 1

      No, actually, Office includes a utility that lets you generate (and import) a self-signed certificate.

      You only need to spend $400 if you want to avoid having to deploy that cert to everyone in the organization.

    10. Re:One man's quirky tale by PIPBoy3000 · · Score: 1

      We initially went with the self-certificate approach, which seemed to work just fine, as long as the package created the certificate when it was run. Remember that self signed certificates are device specific and can't be distributed to other computers.

      Unfortunately Office 2003 had further security limitations and this approach didn't work properly. At one point, we brought up our own Certificate Server in the organization, but something didn't work properly and spending $400 was pretty cheap compared to the people's time involved.

  47. i looked at this a few years ago ... by nazarijo · · Score: 1
    and wrote my findings here: signed archives: an evaluation of trust. from the abstract:
    in 2002, a series of high profile compromises of internet software servers resulted in the alteration of software archives. this prompted an evaluation of the state of trust of the signed software distribution system. over 2800 archives representing over 1400 unique software packages were downloaded and their corresponding signatures evaluated for validity. these software packages were pulled from over 260 different sites and the keys retrieved only during the verification stage. of the over 2800 archives checked, only 5 errors were found, three of which were found to be false negatives. additionally, the characteristics of the keys used to sign these archives along with the key distribution systems were studied. these findings highlight weaknesses in the signed archive distribution system and demonstrate clear vulnerabilities facing several projects.
  48. I do not sign my code. by Anonymous Coward · · Score: 0

    I give the end users the source code, so they can make an informed decision whether to trust my code or not, rather than relying on what a dialogue box from a third party _I_ don't even trust tells them.

  49. Whoops! by Asprin · · Score: 2, Interesting


    Bruce's Argument #2) Just because a component is signed doesn't mean that it is safe.

    My Comments: I fully agree with this. However Code Signing was never intended for this purpose. Code signing was design to prove the authenticity and integrity of the code. It was never designed to certify that the piece is also securely written.


    I thought the purpose of code signing was to vouch for the integrity of the SIGNER, not the code itself. If you want to argue that code signing guarantees the code because nobody but the signer could sign it, OK, but that still leaves you having to explain to users which signers are OK and which aren't.

    The thing that's always bugged me about signing is that it relies on the root cert issuers (Verisign, Thawt, etc.) to do their jobs and verify that their customers are who they say they are, and the sense I'm getting lately is that $800 and a valid email address is enough to convince them that you are anyone you want to be. Am I wrong?

    This is a bad example, but what happens if Joe the hacker incorporates a dummy company named "Micr0soft.com", registers a domain for it, installs web & mail servers with matching certs, then buys a code-signing cert from your favorite root-cert company, then uses that cert to sign plugins as "Micros0ft.com"? It would have a valid cert path, wouldn't it? Do the root cert issuers even check for that kind of crap anymore? They used to take D&B numbers as proof of identity, or in lieu of that, notorized copies of incorporation documents on letterhead, but I don't think they even bother checking anymore. At least, they didn't when I bought an SSL cert in December.

    --
    "Lawyers are for sucks."
    - Doug McKenzie
    1. Re:Whoops! by 49152 · · Score: 1

      >They used to take D&B numbers as proof of identity, or in lieu of that, notorized copies of incorporation documents on letterhead, but I don't think they even bother checking anymore. At least, they didn't when I bought an SSL cert in December.

      We bought a code signing certificate from Thawte last week, they still did the check.

  50. Yes, for Paint.NET by Rick+Brewster · · Score: 1

    For Paint.NET v2.2 we are using code signing (http://www.eecs.wsu.edu/paint.net -- Alpha 1 was released on Monday). Every update that is downloaded by the app must be signed and the signature's cert must validate up to a trusted root before it will be installed. We are doing this mostly to prevent users from accidentally installing updates that we didn't release (hax0red DNS or network setups). This isn't a perfect solution, of course, but far better than naively not doing anything.
    This post is made "AS IS" with no warranties, and confers no rights.

  51. What code signing is for by Jaime2 · · Score: 2, Interesting

    As stated numerous times, code signing is not designed to let a user decide whether code is good or bad. But, for signed code, there is a way to track it back and make the author accountable. If all of today's viruses were signed, most of the authors would be caught. Even if they were signed in a fraudulent manner, there would be a thread to trace back. Enough threads and a good investigator will catch the bad guy.

    So, code signing is a sign of software good-faith. Everyone should show that they are distributing software as something more than an Anonymous Coward. It always disappoints me that major hardware manufacturers won't even sign their device drives.

    1. Re:What code signing is for by Ernesto+Alvarez · · Score: 1

      So, code signing is a sign of software good-faith. Everyone should show that they are distributing software as something more than an Anonymous Coward. It always disappoints me that major hardware manufacturers won't even sign their device drives.


      Evidently you haven't seen some fine examples of C2 Media's good faith. I've seen spyware sent signed hoping that some gullible users will accept it thinking it's ok.

      After seeing that I've confirmed what I always suspected: Microsoft's authenticode is 100% pure shit.

      Bruce Scheier is right about code signing. There's an implicit association of signed code with good code, and the crooks are exploiting it.

      Background: C2 media is a spyware company, I checked when they tried to download spyware to my machine.
    2. Re:What code signing is for by asb · · Score: 1

      But, for signed code, there is a way to track it back and make the author accountable. If all of today's viruses were signed, most of the authors would be caught.

      What a silly pipe dream.

      Code signing would have to be mandatory (obviously). There would have to be a trusted certificate authority that does not make mistakes (so that law enforcement can trust the signatures). It would have to be impossible to bypass signature verification (obviously). All code would have to be perfect (so that unsigned viruses can not be installed through security holes). People would have to keep their certificates secure (so that certificates can not be stolen).

      The requirement for perfect code alone would make it impossible to write viruses. So your example is useless.

      --
      Antti S. Brax - Old school - http://www.iki.fi/asb/
    3. Re:What code signing is for by oglueck · · Score: 1

      Exactly. Accountability has proven useful in other situations as well. I once was responsible for running an intranet where people of the whole company (30'000 employees) could add and modify content. There was no role system. Everybody could edit anything basically. The only thing required was authentication and the modification was tagged (i.e. "signed", even though not cryptographically) with their name. We never had a single incident of abuse.

    4. Re:What code signing is for by wagemonkey · · Score: 2, Insightful
      for signed code, there is a way to track it back and make the author accountable
      Unless, as per Bruce's point #5, the code modifies or deletes it's signature - then your 'way to track it back and make the author accountable' doesn't exist.
    5. Re:What code signing is for by Jaime2 · · Score: 1

      That's an implementation issue. Who says the firewall or proxy can't log code signitures?

      Plus, malicious code that only infects select few systems and erases its tracks isn't the real problem in the wild right now. The worst malware is widespread and easy to find. If it were signed, you'd see the sig.

    6. Re:What code signing is for by Jaime2 · · Score: 1

      Well, C2 seems to want to tell you who they are. Either they are operating just barely within legal limits, aren't afraid of prosecution, or have obtained a bogus certificate.

      If they are within legal limits, there's nothing we can do.

      If they aren't afraid of prosecution, then if the software is deemed a security threat by Microsoft, they can simply revoke it with the next Windows security update.

      If they have a bogus certificate, then the issuer will put it on their Certificate Revocation List and it will stop working. Interestingly, IE is the only browser I know of that checks the CRL for certiciates it uses.

      Those are some of the points of accountability. Signitures don't fix any problems, but they let other fix them effectively. It's like logging onto a network. If you force everyone to log on, security problems don't magically go away. But if you let everyone use the system anonymously, security problems will never go away.

    7. Re:What code signing is for by Ernesto+Alvarez · · Score: 2

      Well, C2 seems to want to tell you who they are. Either they are operating just barely within legal limits, aren't afraid of prosecution, or have obtained a bogus certificate.


      What they probably want is to get their software accepted, identification is mostly a secondary effect.

      When I saw signed spyware, I first though someone had compromised a key (it was a 512 bit RSA, so it could have been factored). Further investigation showed that the certificate was good and they were a spyware company.

      The problem with the accountability is that it's worth nothing, mostly because there are no warranties on software, and the scum can always say that they showed an EULA or something that indicated "clearly" what the software was about.

      Joe User would have thought the code was ok, I did not because I know better. It's a matter of education.

      They're within legal limits, and it's true there's nothing we can do, just like most other "legal" spyware. If people were responsible for the software they create, it would be another story, though.
    8. Re:What code signing is for by wagemonkey · · Score: 2
      Who says that you have a firewall or proxy?
      That imples that if you have enough other software installed you may be able to derive some benefit from a signature - not that it's of much use by itself. Of course if you have the right additional software which is properly configured (along with the rest of the system) you are less likely to get into trouble in the first place.

      What would a sig tell you? there are a few possiblities:
      1) Who signed the code
      2) If the certificate system has been cracked then who the software author claims to have written the code to get you to run it.
      3) Verisign (for example) issued a certificate in error
      4) Someone earlier in the chain of trust had a valid cert but that was a while ago.
      5) ...
      You should get the idea.

      I'm not saying that certs are no use, just that they may not be much use. They're definitely not the protection that a lot of people seem to think.

      Security is an ongoing process.

    9. Re:What code signing is for by Jaime2 · · Score: 0

      Signitures are NOT protection of any kind. And the above issues don't make signitures any less relevant. So what if YOU don't have a proxy. The security professional investigating the virus/malware issue does. He will be able to get the signiture even if the virus wipes out the infected computer. That's more than we have today. Also, certificate systems have feature to fix 2 through 5 above. Al certificate have a URL in them to a Certificate Revocation List. If a certificate is found to have been issued in error, it can be revoked even if it is in the wild. If the Cerificate Authority (eg. Verisign) is compromised, a security patch can take it out of the root certificate list and all certs issued by it become invalid.

      Certificates are a wonderful code source authentication system. They are not a code security system.

      A good lock on a bad door won't keep burglers out..... does that mean good locks are worthless?

  52. Who are you anyway? by samj · · Score: 2, Informative

    Bruce is right, code signing (at least in its present form) sucks. In fact trust in general sucks, and will until we come up with an intelligent way to assign it. So you want a 'whitelist'? By that you presumably think that the 'whitelist' of CAs rolled out with browsers works? It doesn't. Nor will telling 'safer' to consult it before running code.

    1. Re:Who are you anyway? by Anonymous Coward · · Score: 0

      I hate all these Bruce fanboys

      --
      Whatever you do, do not send me an email.

  53. My answer to your answers:... by pVoid · · Score: 4, Insightful
    Bruce's Argument #1) Users have no idea how to decide if a particular signer is trusted or not.

    My comments: True. [...]The IT dept should know not to trust "Snake Oil Corp." [...]

    You are missing the point entirely: What if I were to present you with "Citrix Corp." and "Citrix Corporation" and "Cirtix Inc.". Which would you *know* comes from *the* Citrix corp. Also, notice how the third one had a typo. Also, I will remind you of some guy who had obtained a cert from verisign for the name of a well known company. I forget which one it was, but it was something like Microsoft or Sun.

    Bottom line: the cert only assures you that the string ("Citrix") it corresponds to is correct. It doesn't say anything else. Which begs to ask: why have a signature?

    Bruce's Argument #2) Just because a component is signed doesn't mean that it is safe.

    My Comments: [...]Code signing was design to prove the authenticity and integrity of the code.[...]

    Again, this is aside the point: when you for example give shell access to students at university machines, all the binaries they run are part of a secure base. cp and ls are *the* tried and true binaries from every distribution. An administrator *knows* that they can trust that code.

    Now, let's say an administrator installs a signed ActiveX plugin. Let's say it's even the Flash player. What we cannot know, and what makes this mechanism extremely dangerous (by means of perceived safety), is that the player might have a security hole in it. So you might go to a web page, and an action script loaded into the player could cause the player to execute random code. This is a big no-no. And not because the player is flawed, but rather because you've decided to integrate this piece of code into your trusted base OS.

    Bruce's Argument #3) Just because two component are individually signed does not mean that using them together is safe; lots of accidental harmful interactions can be exploited.

    My comment: Again Code Signing was was never designed to accomplish this.

    Bruce's Argument #4) "safe" is not all-or-nothing thing; there are degrees of safety.

    My comment: I agree with this statement.

    Combined with the first two points, you're basically saying that there's no point in having code signing.

    Bruce's Argument #5) The fact that the evidence of attack (the signature on the code) is stored on the computer under attack is mostly useless: The attack could delete or modify the signature during the attack, or simple reformat the drive where the signature is stored.

    This is a very important feature of security: auditing. If you have a system that's been compromised, you want to know how it happened. *Especially* if you are in a corporate environment: you see one workstation get 0wn3d and formated, you won't be sitting around to see when the next one hits. You will want to know what did it.

    All in all, I agree with everything he says. Even though I'm just a mere mortal.

    1. Re:My answer to your answers:... by Sigma+7 · · Score: 1
      I agree with most of your posting.

      Also, I will remind you of some guy who had obtained a cert from verisign for the name of a well known company.


      Actually, he got two certificates - both of which impersonated Microsoft Corporation. They aren't much of a threat anymore, since both have been since revoked.

      Bottom line: the cert only assures you that the string ("Citrix") it corresponds to is correct. It doesn't say anything else. Which begs to ask: why have a signature?


      A proper cert system will also keep track of any new certificates - thus Citrix Corporation will be a common code signer, while Cirtix Inc will be tagged as a first timer. ZoneAlarm keeps track of new programs in this fashion - why can't a certificate system be the same?

      This system is still useless to monkey-clickers, bit helps power users as long as code signing messages don't become incessant.

      The closest bet is from http://www.ossecurity.ca/, which keeps a whitelist of trustable apps. I don't have the product myself, but I'm sure that they can allow software based on code signing (especially when it identifies something as new).

    2. Re:My answer to your answers:... by cjmnews · · Score: 1

      Bruce's Argument #1) Users have no idea how to decide if a particular signer is trusted or not.
      My comments: True. [...]The IT dept should know not to trust "Snake Oil Corp." [...]
      You are missing the point entirely: What if I were to present you with "Citrix Corp." and "Citrix Corporation" and "Cirtix Inc.". Which would you *know* comes from *the* Citrix corp. [...]. Bottom line: the cert only assures you that the string ("Citrix") it corresponds to is correct. It doesn't say anything else. Which begs to ask: why have a signature?
      This is where obtaining the public key through a trusted method comes into play. If you were to obtain through a trusted channel, a self-signed certificate with the public key from Citrix, and used that key to validate the signature that came with the code, then you know that the code came from the same source you obtained the self-signed certificate from.
      The other purpose of the signature is to validate that the code provided has not been altered since it left the source.

      Bruce's Argument #2) Just because a component is signed doesn't mean that it is safe.
      My Comments: [...]Code signing was design to prove the authenticity and integrity of the code.[...]
      [... a long example...]
      Agreed. A bad component can be signed too.

      Bruce's Argument #3) Just because two component are individually signed does not mean that using them together is safe; lots of accidental harmful interactions can be exploited.
      My comment: Again Code Signing was was never designed to accomplish this.

      Bruce's Argument #4) "safe" is not all-or-nothing thing; there are degrees of safety.
      My comment: I agree with this statement.
      Combined with the first two points, you're basically saying that there's no point in having code signing.
      Not really, the point of code signing is to positively identify the source, and to verify the code has not been altered.

      Bruce's Argument #5) The fact that the evidence of attack (the signature on the code) is stored on the computer under attack is mostly useless: The attack could delete or modify the signature during the attack, or simple reformat the drive where the signature is stored.
      This is a very important feature of security: auditing. If you have a system that's been compromised, you want to know how it happened. *Especially* if you are in a corporate environment: you see one workstation get 0wn3d and formated, you won't be sitting around to see when the next one hits. You will want to know what did it.
      It's part of the process. If you receive new code, validate the signature. If the signature does not validate delete the code. If you are trying to run the code before you validate it, of course you can't detect the attack. The attack may circumvent the validation.

      --
      You can lose something that is loose, so tighten the loose item so you don't lose it.
    3. Re:My answer to your answers:... by tepples · · Score: 1

      This is where obtaining the public key through a trusted method comes into play. If you were to obtain through a trusted channel, a self-signed certificate with the public key from Citrix, and used that key to validate the signature that came with the code, then you know that the code came from the same source you obtained the self-signed certificate from.

      So if I want to release free software that I have developed, and I can't afford what Verisign charges for an SSL certificate, then how else can I set up such a "trusted channel" from me to the people who want to use my software?

    4. Re:My answer to your answers:... by Chirs · · Score: 1

      You sign your releases via PGP. Your public key should be available from multiple keyservers, and presumably you've hooked yourself into the web of trust.

      The end user downloads your software, downloads your public key from one (or more, if they're paranoid) public keyservers, and verifies the signature on the software.

    5. Re:My answer to your answers:... by Anonymous Coward · · Score: 0

      It was Microsoft. That's why Microsoft bothered to implement the Certificate Revocation List at all, previously they had just ignored that part of the standard. Lucky for them the guys with the fake cert hadn't any bad intentions, because it took them quite some time to roll out the updates first.

  54. Do You Headline Write? by Anonymous Coward · · Score: 1, Funny

    Apparently, not do you grammar understand....

  55. Practical vs. doable in theory by Anonymous Coward · · Score: 0

    Really nice ...

    When you are factoring in the regular annoyance for the sysadmin who has to verify everything, maintain all listings on a regular base and when the next big crash happens has to disable it (or because the boss has the fancy new laptop with special needs w/o signed code), you really want to forget about it if you do not have the budget for it, or a real need (working in secure environment where it makes sense or even is a requirement).

    Cheers, G

  56. I agree with all Bruce's points by sinewalker · · Score: 1

    I find code-signing to be almost useless. The only real value it has is that it tells me that the code I have is not corrupted or switched for something else.

    Once you get into the whole "web of trust" mess it really becomes a case of diminishing returns. But it's one of those "check-box" security "features" that PHBs insist upon. Maybe there is where the percieved "value" is...

    Next para is sorta OT...

    My favourite rant about message signing is that stupids are using externally-verified SSL in internal links (!). That is, we are using external-signed SSL for links between our app servers and our database! Huh? Appart from shelling out a lot of wasted money to VeriSign, what does this get you? So your DB is certian that the transaction request came from your app server, yes. But why external signatures? It beets me too, but there you go: it was on some PHB's check-list...

    --
    “Our opponent is an alien starship packed with nuclear bombs. We have a protractor.” — Neal Stepnenso
  57. GNU LGPL by tepples · · Score: 1

    it's critical to be able to say "I am building this application against this component/library - when it gets out in the production world, don't link/load any version of the library that isn't digitally signed with the private key that matches this public key".

    Interpreting "don't" as "you break the EULA if you" violates the GNU Lesser General Public License, as the license requires the author of a program that depends on a covered library to allow users to upgrade libraries that a program depends on. On the other hand, interpreting "don't" as "all express and implied warranties shall become null and void and all update subscriptions shall be terminated if you" should be OK.

  58. Sigh by phaqa · · Score: 1

    Stupid! That's what blame is for. ;)

  59. "Not Signed; Don't Install" is FUD against free SW by tepples · · Score: 1

    If the issuers of code signing certificates still relied on proof of incorporation, they would be discriminating against purchasers that are not corporations. Because the current version of Microsoft Windows puts up scary warnings if a program is not published by someone who has been issued a code signing certificate, Microsoft is using FUD against all software published by an individual, which includes much of the available free software. This could lead to yet another antitrust case, especially in a country whose government has taken the initiative of promoting open source.

  60. Windows code signing does not work with GPG by tepples · · Score: 1

    You can sign your code using a public key scheme like GPG. No need for a middle-man like VeriSign.

    Microsoft Internet Explorer in Windows XP Service Pack 2 marks each file that you download from the Internet as "from the Internet". If an executable is "from the Internet", Windows Explorer will attempt to verify the file's digital signature. If this fails, you get a Big Scary Alert Box whose suggested action is Cancel. Problem here: Windows Explorer understands only signatures using middle-man technology, not GPG signatures.

  61. Is OpenCA "trusted"? by tepples · · Score: 1

    You can use OpenCA or any other open source CA to keep track of your certificates and keys.

    But has Microsoft chosen to trust OpenCA for Windows Code Signing? Because of the Big Scary Alert Box in Windows XP SP2 when running a setup.exe file downloaded from the Internet, a lot of inexperienced users have chosen to trust only those organizations that Microsoft has chosen to trust. Are OpenCA's certificates distributed along with the home PC market's "favourite web browser or operating system (or both)"?

    1. Re:Is OpenCA "trusted"? by HishamMuhammad · · Score: 1

      But has Microsoft chosen to trust OpenCA for Windows Code Signing? Because of the Big Scary Alert Box in Windows XP SP2 when running a setup.exe file downloaded from the Internet, a lot of inexperienced users have chosen to trust only those organizations that Microsoft has chosen to trust.

      Well, in that case, as far as I can see, the problem here is with Microsoft and its Internet Explorer.

      I, for one, wouldn't trust Microsoft to be my "security advisor" telling me what's safe and what's not (Big Scary Alert Box: "hey, this Firefox thing you're trying to install is NOT SAFE! Stick to IE!!!"). But then again, I don't even use their operating systems...

      I concede that when I suggested PGP I was thinking about signing source code in Linux systems. Not to say that this approach wouldn't work in any other system, especially including the other suggestions posted in the replies (OpenCA, federated keyservers).

  62. Typos in certificates? by tepples · · Score: 1

    Offering a PGP signature for your code already solves the comprimised website problem.

    How can one get the Windows operating system's built-in code authentication systems to work with OpenPGP format signatures in addition to X.509 format signatures?

    Your public key should not be on your website, it should be in several publicly available keyservers, so an attacker would have to hack a bunch of keyservers, plus your website to be able to do anything.

    In this case, "hack[ing] a bunch of keyservers" would likely just involve creating certificates whose name contains a typo (e.g. "example.com" vs. "www.example.com") and uploading them to the keyservers, right?

    1. Re:Typos in certificates? by Some+Random+Username · · Score: 1

      I have no idea about windows code authentication stuff, I only write unix software. Any windows users of my stuff would have to be running cygwin, in which case they have gpg.

      And for hacking a bunch of keyservers, there are no certificates involved. Its just your public key. Someone could upload a public key of "bobdol@mydomain.com" instead of "bobdole@mydomain.com" and hope people make the typo when they search for the key, and then don't notice when they download and install it, but that's pretty unlikely.

      To really have much chance at trojaning my software, you'd need to hack my webserver to upload your bad tarball, and a PGP signature for it. Then somehow hack a bunch of keyservers to put your public key in under my name. And even then, people who had already downloaded my public key to verify a previous release would not bother downloading it again, so they would notice the signature was wrong, and hopefully contact me.

      Luckily for the evil badguys, most people don't verify signatures, so they can just upload a bad tarball and still ownz a bunch of people who don't check the signature, until someone who does check tells me my webserver got hacked.

  63. If You Are Even Talking About Code-Signing by the0ther · · Score: 2, Funny

    If you're even talking about this topic you are clearly not living in the real world of tight schedules and out-of-control projects. Chances are you're working in government. Who cares?

  64. cert security depends on fingerprint checks by Anonymous Coward · · Score: 0

    i worked with DoD PKI for quite a few years. certs are ok when you actually have a central authority that everyone trusts. but one of the big problems is fingerprints. you can make a cert look exactly like a verisign cert except with different fingerprints. users never actually check the fingerprints. but fixing this problem via central control of a whitelist will always involve ignorant/conservative sysadmins breaking your app because they have a different bottom line from you. they would keep you from running your own CA under the assumption that it's a source you can't trust...because it's not on the list.

    users should be able to check the reputation of a certificate. for code signing they need to be granting a *specific* set of privilege to a specific app. all of this means that with code signing, you have to be using a good virtual machine architecture (JVM,CLR,etc) and a great user interface for maintaining policy. you should get alerts in the policy manager whenever an app tries to exceed its privilege, and extensive logging of privileges used by an app should be done.

    otherwise we have the idiotic system we have now, where we assume perfect heirarchial trust in which trust is totally black and white.

  65. It has it's uses... by Anonymous Coward · · Score: 0

    limited as they are. It allows you verify the integrity of data which is usefully if your distributing your code from different place.

    It could also be used to ensure code hasn't been modified. This is where the attack pointed out in Bruce's last argument comes in. It's not beyond the realm of possiblities that a peace of signed code could be modified and it's signature updated. All thought the certificate authority would have to be changed. I doubt the average user pays much attention.

  66. "And then I'm like... and then she's like..." by Anonymous Coward · · Score: 0

    If you feel like Bruce Schneier, ... If you feel like Saqib Ali, ...

    I don't "feel like" either of these people; what would we have in common?

    Oh, you mean if I feel as they do.

    Posters who can't spell, editors who can't write... impressive forum, Slashdot.

  67. Rebut! by mrsbrisby · · Score: 1

    The IT dept should know not to trust "Snake Oil Corp.", however anything from "Citrix Corp" should be fairly safe.
    No shit. The problem never was that, but wheter "1024D/40558AC9" should be trusted, or perhaps if "1024D/8E297990" is more trustworthy.

    I can label my key with "Citrix Corp" if I like, and I might even be able to convince Verisign to sign it as these guys did.

    Code Signing was never intended for [guaranteeing code is safe].
    But users don't know that. They're being duped into thinking that if only the path between the software developer and the user weren't so muddy, there wouldn't be any viruses or spyware or adware or whatnot.

    Nevertheless, that path is the one attacked less frequently, but it is instead the software that Microsoft got to you completely intact that is the software you cannot trust.

    'It is like saying host based IDs or anti-virus are useless, because if you can compromise the system you can turn them off.'
    That's exactly why they are useless. You don't do scanning on a machine that you fear might be compromised. You do it from a machine that you know isn't, but that still has access to the other machine's frozen state.

  68. What are my thoughts? by Anonymous Coward · · Score: 0

    My thoughts are:

    Slashdot's going downhill fast!

    Questions at the end of summary can be good every once in a while, but they're really getting old. C'mon guys.

    Maybe someone should work on implementing "aspell" or something into Slashcode. That way editors will stop making spelling errors.

    Editors should be more choosey about what is considered as "Front Page" material.

    Also, someone should implement a "dupe checker" into Slashcode.

    These are my thoughts.

  69. Web of what? by tepples · · Score: 1

    You sign your releases via PGP.

    How does one get Internet Explorer from Windows XP SP2 to use something based on OpenPGP instead of its native X.509 based system for disabling the Big Scary Alert Box when running a downloaded program?

    Your public key should be available from multiple keyservers, and presumably you've hooked yourself into the web of trust.

    How does one get into the web of trust? Google (my city) key signing doesn't seem to produce any relevant results. Biglumber.com seems to list key signing parties only in Triangle Area (North Carolina), Munich, and Zurich; I don't live within walking distance of any of those locations.

    1. Re:Web of what? by stevey · · Score: 1
      How does one get into the web of trust? Google (my city) key signing doesn't seem to produce any relevant results.

      You could do worse than look for a local Debian Developer - they are often willing to do keysignings.

      Plus they are often well-connected in terms of trust.

      Failing that if you have a local LUG, or similar you could try posting.

      (As for BigLumber; I've had results with them. I've registered and never approached anybody. But three or four people have got in touch over the past couple of years to say they were "visiting the area" and we've exchanged signatures).

  70. Why take the risk by patternjuggler · · Score: 1

    Given that anything you say, do, or code may become illegal in the future, why would you want it to be so traceable back to yourself? I kind of prefer to have email or whatever where the security is such that it would be very easy to raise reasonable doubt as to whether I myself actually am responsible for it or not.

  71. Sign language. by edunbar93 · · Score: 1

    Since I learned a smattering of ASL years ago, I automatically parsed that to mean something involving coding in sign language, or sign language as code.

    And I thought to myself "Wow, that's some cool shit!"

    But noooo...

    --
    "No problem. I have the capacity to do infinite work so long as you don't mind that my quality approaches zero."-Dilbert
    1. Re:Sign language. by NewStarRising · · Score: 1

      Yes, I'm not sure that dictating ones code in ASL (or UKSL here) would be very productive! Why not type it out! hehehe /me tries signing;
      [html]
      [head]
          [link rel="stylesheet" href="style.css" type="text/css"]
          [title]My Web Page[/title]
      [/head]
      [body]
      Hello World
      [/body]
      [/html] /me heads for hospital with dislocated fingers!

      (hmmm .... just as an aside - IRC commands start with / while /in html means 'end'.)

      I did read once that RMS broke his arm and could not type - he dictated his code to a colleague who entered it. He said it was a very productive time, as he no longer had to work on actually typing, just thinking on what to put and saying it. (Can't recall whether it was vi or emacs - i'm sure there are people with too much time who can find out, and suggest phonetics for this.).

      --
      b3 4phr41d 0f my 4bov3-4v3r4g3 c0mpu73r kn0wI3dg3!
      MadDwarf
  72. S/GCC by Doc+Ruby · · Score: 2, Interesting

    Make GCC sign code in a post-process by default. It can spawn a background child, so the compiled code is immediately available, while the signer completes in the background. But it's become obvious that programmers and security pros (securers?) are two distinct roleplayers. Like programmers and sysadmins, or programmers and users, or even programmers and designers/architects, or programmers and graphic artists: rarely is the same person good at both (though sometimes programmers are good users). So programmer tools should automate the process according to best practices. Leaving it voluntary is no longer an acceptable risk.

    --

    --
    make install -not war

    1. Re:S/GCC by Anonymous+Conrad · · Score: 1

      So programmer tools should automate the process according to best practices. Leaving it voluntary is no longer an acceptable risk.

      Really? So how do you do the key management, then? Unencrypted private key? Or should the background process need to prompt for a password? Or should the password be provided on the compile line? Or left in memory? How do you stop a malicious attacker highjacking your session and generating a signed trojan with your compiler?

      Is the CPU overhead signing everything worth it? Aren't you opening yourself up to theoretical attacks if the enemy can get hold of the hundreds of signatures you autogenerate that you don't really care about?

    2. Re:S/GCC by Doc+Ruby · · Score: 1

      Er, the whole point is that the GCC programmers should make all those design decisions once. Then the downstream GCC users get to take advantage of their design decisions. Without each of us needing the security programming expertise to do all that for ourselves every time we start a project.

      Or are you saying that any or all of those security practices can't be done? Of course they can. But the most effective way for it to be done is to make the tool, GCC, do it for everyone. Each of those risks is smaller than the risk of a wide-open system available to the same threatening population. Security is a cost:benefit tradeoff. Incorporating codesigning into GCC is the lowest cost for the best benefit. And of course better than doing nothing, which is what we're doing now.

      --

      --
      make install -not war

  73. Evidently, they don't by Craig+Ringer · · Score: 1

    I didn't, for example, and I've been using Linux (RH and Debian) since RH 6.2 .

    That said, I've never run into the issue.

    From the description given, it seems that this is mostly a user interface issue. A helpful message might well be all it takes.

    1. Re:Evidently, they don't by dtfinch · · Score: 1

      I've only encountered it on CentOS. Somehow I was modded insightful for trying to be funny.

  74. ls and cp are no different from an ActiveX by throx · · Score: 1

    Again, this is aside the point: when you for example give shell access to students at university machines, all the binaries they run are part of a secure base. cp and ls are *the* tried and true binaries from every distribution. An administrator *knows* that they can trust that code.

    Now, let's say an administrator installs a signed ActiveX plugin. Let's say it's even the Flash player. What we cannot know, and what makes this mechanism extremely dangerous (by means of perceived safety), is that the player might have a security hole in it. So you might go to a web page, and an action script loaded into the player could cause the player to execute random code. This is a big no-no. And not because the player is flawed, but rather because you've decided to integrate this piece of code into your trusted base OS.


    You're being hypocritical here. The obvious flaw in your argument is "how did the Administrator know that cp and ls were tried and true?" The correct answer is "by code signing" and trusting the distribution agent that signed them (and the implied chain of trust with the certificates).

    Now, cp, ls or more likely sendmail can have flaws in them just like any ActiveX component can have flaws. They are all the same thing - binaries that you install which are signed by some developer that you trust. It's up to the Administrator to draw the line on where their level of trust is and that question is wholly independant of code signing.

    It's very educational to replace "ActiveX" with "the ls binary" in any "OMG Code Signing is teh dev1L" arguments because it handily illustrates that it's not code signing but the level of trust Administrators do or don't have that is the real security problem.

    --

    Fear: When you see B8 00 4C CD 21 and know what it means

    1. Re:ls and cp are no different from an ActiveX by pVoid · · Score: 1
      You're being hypocritical here. The obvious flaw in your argument is "how did the Administrator know that cp and ls were tried and true?" The correct answer is "by code signing" and trusting the distribution agent that signed them (and the implied chain of trust with the certificates).

      If you're implying that the MD5 checksum presented on FTP sites is a code signature, then you might be right. But a hash does not qualify as code signing for me.

      Aside from that, what I'm saying is this: I trust ls and cp because the source is sitting on CVS. Because it is part of the trusted source tree, and because when I look for the change log on, I can see that the last change was in may 2001 (random date here). If I were really anal about it, I could audit the code, but the implied security here is that that code *is* perpetually being audited.

      Flawed or not, that is the OSS mentality. So, no actually, it's not because it's signed that I trust it.

      That being said, I'm a Windows user/programmer. I actually don't use OSS that often. But it doesn't change the fact that I trust software not based on the name of the company, but based on their previous track record. Flash is practically ubiquitous, they have been around for a *long* time. Given those two factors, I'm making the assumption that were there severe bugs in their player, they would have been revealed by now. It is an assumption. But their signing code or not has absolutely no bearing on my installing their player. Heck, I Firefox doesn't have a code signature, it didn't stop me and the millions of other savvy (and not) users from installing it.

  75. Solution by halleluja · · Score: 1

    Use the geek code as public key, e.g. GED/J d-- s:++>: a-- C++(++++) ULU++ P+ L++ E---- W+(-) N+++ o+ K+++ w--- O- M+ V-- PS++>$ PE++>$ Y++ PGP++ t- 5+++ X++ R+++>$ tv+ b+ DI+++ D+++ G++++ e++ h r-- y++** This way you can be certain any downloaded updates are from a certified geek. You know what you get.

  76. Code signing applied by oglueck · · Score: 1

    My daily use of code signing is:

    a) Verifying the integrity of the Linux kernel and patches downloaded from mirrors. I can verify them easily as I have the signers public key in my keyring. If it was signed by a foreigner I would notice by the absence of the key. This works here because it is not a one-time only check but I repeatedly verify code from the same source.

    b) Signing MIDlets to leverage access rights on mobile devices. I do this because I have to. It improves usability for the user because she only has to allow network access once after installing and not every time the application is started. Not that you could really tell which application caused a certain amount of cost. So code signing on mobile devices is really bollocks.

  77. Who are *you* anyway? by Anonymous Coward · · Score: 0

    And who is Bruce? And why should I believe anything you say?

  78. trust by qurk · · Score: 1

    It's a learned thing. While most people would think that a peice of executable code signed by "Bill Gates" of "Microsoft" would be trustworthy, I don't want it anywhere near my computer. Not since the day I decided to be lazy and not disconnect my main hard drive like I had 10 times before. Windows 98 installer asked me 3 times if I wanted to install windows on my "main hard drive" and I said yes, because I had my new crap 2 gig hard drive hooked up and bios had recognized it as "primary" and my 40 gig hard drive with all my data was hooked up as secondary. So windows leaves my 2 gig primary hard drive alone and installs windows on a new 2 gig partition on my 40 gig hard drive. I contacted Microsoft repeatedly and after they stopped ignoring me they said sorry your shit out of luck!! So do I "trust" anything from Microsoft? Nope!!!! But you might :) And it's 99/100 going to be ok for you. But still.... I DON'T. It's up to you :)

  79. My take on it: (both are a bit right) by Anonymous Coward · · Score: 0

    Bruce is right, because code signing is marketed as a protection against malware and viruses, which of course it is not.

    But it works perfectly in large companies where it, properly enforced, is a great way to whitelist the applications your users can run.

    That has of course a sort of indirect effect of protection against viruses, but one that could just as easily been done with disabling clicking on attachments entirely.

  80. Occasionally... by vikingpower · · Score: 1

    ... I sign my code. As when I was in a team which wrote that large network monitoring application in Java, and we made an applet version of its client. The applet needed to write .tmp files on the user's HD, so we tweaked the SecurityManager, and signed the whole thing.

    BUT -- and I insist upon the BUT --- we had tech-savvy users, who knew about code signing. Who KNEW that this was not about absence of bugs, but more about integrity of the coders than about anything else.

    Not everyone is blessed with clients who are network admins, able-issimo BOFH and PFY's....

    --
    Religous speak to God. Insane are spoken to by God. When all shut up, one can finally hear Shostakovich in peace
  81. Useless conversions by Roger+W+Moore · · Score: 0, Offtopic

    Google did not give me what I wanted since it assumed US dollars and I'm in Canada forgivable, perhaps since the URL you gave was google.com. However google.ca makes the same assumption which is just plain dumb! The one suggested in the original post took the other approach and included every conversion rate under the sun: want to convert Solomon Island dollars to Egyptian pounts anyone? I think I'll stick to one with the pull down menus to specify currencies precisely since I don't always know the 3 letter currency code.

    1. Re:Useless conversions by Roger+W+Moore · · Score: 0, Offtopic

      My point was not that you can't do it but simply that assuming dollars means US dollars is a stupid default for the Canadian google site!

  82. Supporting Bruce's Critique by QuestorTapes · · Score: 1

    > Bruce's Argument #1) Users have no idea how to decide if a particular signer is trusted or not.
    >
    > My comments: True. However in an organization it is the job of the IT/security dept to make that
    > determination. It shouldn't be left up to users. The IT dept should know not to trust "Snake Oil
    > Corp.", however anything from "Citrix Corp" should be fairly safe.

    This brings up the issue of "what do we mean by 'trust'". Signing allows us to say with some certainty that the code came from Citrix, but why -should- we trust Citrix more than "Snake Oil Corp"?

    In order to trust Citrix, we must determine that:
    -Citrix verifies the integrity of the code, ensuring nothing was added without authorization and testing.
    -Citrix validates the code to ensure there are no common security flaws.
    -BIG point: that the context in which the code will be used is appropriate for the needs of the recipient. This is a big issue when reusing code. A large portion of the flaws in MS products are due to careless code reuse. MS has a buffer overflow in a graphics library, and it affects everything.

    > Moreover Windows XP SP2 provides provides a mechanism to create a Whitelist of certain trusted
    > signers, and reject everything else. This is a very powerful security mechanism, and greatly
    >increase the security in a corporate environment, if the workstations are properly configured.
    > Having said that, this feature may not be that useful for home user, who can not tell the
    > difference between Snake Oil and Citrix Corp.

    Often useless in a corporate environment. It's a lot of work to verify and maintain. So much so that many major corporations remove all use of authenticode and trust everyone.

    > Bruce's Argument #2) Just because a component is signed doesn't mean that it is safe.
    >
    > My Comments: I fully agree with this. However Code Signing was never intended for this purpose.
    > Code signing was design to prove the authenticity and integrity of the code. It was
    > never designed to certify that the piece is also securely written.

    Unfortunately, that is how it is -sold-. This also applies to #3. It results in a false sense of security. The point is, verifying the source of the code is, in isolation, useless. The only reason to verify the code is in order to do smething with it. If the mechanisms for using authentication don't support using that authentication for anything other than identification, they aren't useful.

    The biggest problem with Microsoft's implementation of code authentication is that it is really designed to be all-or-nothing. They made the same mistake in IE3, and I expect them to make it again. They divided the world into "people I trust absolutely" and "people I don't know". They started to make progress with IE4 when they added "people I know and -do not trust-", but they still don't understand that you may want to trust people -to a certain point- and no farther.

    For example, I often trust a parking lot attendant with my car keys. But that doesn't mean I trust him with the keys to my safe deposit box and my credit cards.

  83. Let me deal with your objections one by one by biglig2 · · Score: 1

    Bruce gives 5 reasons why code signing is insecure. Let's look at your arguments that this is wrong, one by one.
    Reason one: your argument is that Bruce is correct. Oh.
    Reason two: you fully agree with Bruce, but point out that this particular security flaw is in there by design. Ah.
    Reason three: see reason two.
    Reason four: warming to your theme, you viciously agree with Bruce again.
    Reason five: for variety, this time your objection is that you do not understand what Bruce means.

    Are there tickets left for your talk?

    --
    ~~~~~ BigLig2? You mean there's another one of me?
    1. Re:Let me deal with your objections one by one by CDarklock · · Score: 1

      It seems to me that Bruce is trying to tell people the *difference* between "signed" and "secure", not demand that code signing be made more secure.

      Cliff's argument is essentially that Bruce expects the wrong things from code signing, but I don't think he expects those things. I think he simply wants the public to know that these things aren't there. As far as whether they are *supposed* to be there, I think Cliff has quite rightly perceived that they're not, but then misinterpreted Bruce's "code signing is not secure" as meaning "code signing is bad".

      Code signing is designed to prove that this code is in fact the code that was released, and that it has not been modified. It's supposed to provide two levels of security: it verifies to the end user that the code has not been modified with a virus or trojan horse after leaving the originating company, and it verifies to a support technician that the code has not been altered by the end user.

      It is NOT supposed to guarantee that the code is what you want, or that it is being used safely, or that it interacts properly with other code, or even that the company is trustworthy. It simply says "this is exactly the software company X shipped".

      The idea here is that if the software turns out not to do what company X says it does, you can hold company X responsible. It does not at any point mean that company X says anything other than "this is our code"; additional statements are left to normal communication channels.

      Bruce's points are valid because they are based on the broader question of security, as is the point raised earlier about trusting all code signed by Microsoft (regardless of who is providing it), but these points do not invalidate code signing because code signing was never intended to address them. It would be rather odd to suggest that Bruce doesn't know this, so I propose that his intent is not to invalidate but to elucidate and educate.

      I don't personally have any need for this variety of security, so I don't sign my code. If I needed it, however, I would indeed sign my code. I wouldn't expect code signing to be my whole security strategy, though.

      --
      Microsoft cheerleader, blue flag waving, you got a problem with that?
  84. Real Reason for code signing by salesgeek · · Score: 1

    Profit. I can charge developers a fee for applying my signature to thier code, therefore enabling trusted installation and a trusted transaction at my bank that pays for my yacht.

    Even better yet, I can expire the cert, requiring the developer to buy a signing again in a year or two.

    And the best part: End users have no idea what it's all about and are totally used to getting a pop up durring the install that says click on install anyway when the security notice comes up.

    But wait, there's more: One day I'll be able to embed the signing stuff in the hardware so only stuff people pay me to sign will run on the PC they paid for. Then we all make more becase we can expire certs and lock the users out then both of us get to make money when the user says uncle and wants get access to their pr0n database...

    --
    -- $G
  85. Mod parent up by Cyn · · Score: 1

    It was killing me reading the grandfathers "if" "could" and "would" statements, covering the truth in a blanket of assumption.

    --
    cyn, free software and *nix operating systems enthusiast.
  86. WIPO by tepples · · Score: 1

    I have no idea about windows code authentication stuff, I only write unix software. Any windows users of my stuff would have to be running cygwin, in which case they have gpg.

    Then they'll likely get the Big Scary Alert Box when they download Cygwin's setup.exe.

    Someone could upload a public key of "bobdol@mydomain.com" instead of "bobdole@mydomain.com" and hope people make the typo when they search for the key, and then don't notice when they download and install it, but that's pretty unlikely.

    The case in question was about when your site is cracked. If your site is cracked, then of course they'll change the public contact address displayed on the cracked web site and listed in the trojaned program's README from bobdole@mydomain.com to bob_dole@mydomain.com or robertdole@mydomain.com. That's very easy not to notice unless 1. you are upgrading from a previous version, 2. you check the signature of the previous version, and 3. the program has a previous version. And what happens when your site is cracked by someone who's working together with the owner of a trademark on "Mydomain" and who can take away your domain in WIPO proceedings?

    1. Re:WIPO by Some+Random+Username · · Score: 1

      "Then they'll likely get the Big Scary Alert Box when they download Cygwin's setup.exe."

      Whatever you say, last time I used windows it didn't give any alert boxes when you download setup.exe. Either way, I don't care, I don't write cygwin so its not my place to sign it. And as I said, my software is for unix, windows does not matter to me. I wouldn't trust any Microsoft signing system anyways, they have demonstrated over and over again that they do not understand security, and do not want to learn.

      And as for your other statements, you don't seem to understand what signing is for. You as the end user downloading the software have to choose to verify that the software is really from me. I simply provide you the means to do this.

      You only download a public key once, so if you have already downloaded any other software from me, including previous versions of the software in question, then you just download the file and the signature, and it will fail to verify and you will email me and say "your website was hacked and trojaned files uploaded". This also lets me fix it before too many of the lazy or careless people who don't verify what they download get owned.

      If you do not already have my public key because this is the first time you are downloading any software from me, then this is that one time that you have to actually be careful. Check the google cache of my mailing list archives for the release announcement, is it from bob_dole? If its from bobdole and the website says bob_dole, you need to find out which one is right. Google for the listed email address and see if it has been used to send mail to lots of mailing lists, archived on lots of different servers, over several months or years. See if the public key has been signed by someone you already have a public key for, or is otherwise in your web of trust. This is one of the most important parts of PGP, I know Joe is Joe, and he knows Bob is Bob, so Joe can sign Bob's key, and now I know Bob is Bob too.

    2. Re:WIPO by tepples · · Score: 1

      See if the public key has been signed by someone you already have a public key for, or is otherwise in your web of trust.

      So if I'm a developer, and I want people to be able to verify that a program came from me, then how should I look for a key signing party within bus distance of my home so that I can enter the web of trust and learn how to use PGP?

    3. Re:WIPO by Some+Random+Username · · Score: 1

      Well, lets pretend you develop apache modules, then your best bet is to go to some conference or something like that where apache devs are, and have them sign your key, this way you are likely to end up with a much shorter path between your key and a key your users already have, and can make things simpler for you.

      If you develop all sorts of random stuff, then you just have to try to get your key out there to anyone and everyone you can. In that case I would suggest seeing if there is a local linux or BSD user group (or both even) and seeing if they have ever done a key signing party, or if they are interested in doing one, as that's probably your best bet for finding a group of local people who will have at least heard of PGP.

      And of course, the end user getting your key has to decide if they believe you are you or not. Not everyone requires as much proof as a web of trust. People who have written books, who I have seen admit they wrote those books, and who's public keys are in their books, I would personally trust without having to have a web of trust. So if you have some other way to show people you are you and include your key with it, that helps too.

      The whole thing would be alot easier if more people used PGP, but unfortunately its too complex for most people to want to deal with.

  87. Re:Is Bruce Gay??!! by Anonymous Coward · · Score: 0

    Then that would be a phallacy.

    OMG, I can't believe I'm lowering myself to this cheap gay-bashing humor. Somebody stop me.

  88. Chains of Trust by Anonymous Coward · · Score: 0

    You don't seem to get it. It's got nothing to do with any feature of the software to automagically assume that you trust a given cert based on who signed it. It's got to do with you explicitly deciding to trust a given cert.

    When you are asked if you want to trust Paypal, and you say yes, you are implicitly trusting the CA that signed the certificate. You are trusting that verisign ( or whoever ) verified that the certificate request did in fact come from Paypal, and not Joe Cracker.

    That's how the chain of trust works. The signing CA is certifiying that they have validated that what this certificate they signed says, is correct. Specifically that it belongs to whom it says it does. It is like accepting driver's licences as identification for people. You are trusting that the DMV made sure that the guy is who he says he is before they issued the license. If you don't believe that the DMV verifies the identity of applicants, then the license you are using for identification isn't worth the paper it is printed on.

  89. Tommy Boy Take by tarsi210 · · Score: 1

    My take on code signing, as nicely inspired by your hero and mine, Tommy Boy:

    The point is, how do you know the Code Signing Fairy isn't a crazy glue sniffer?

    "Building model airplanes" says the little fairy, but we're not buying it. Next thing you know, there's money missing off the dresser and your daughter's knocked up -- I've seen it a hundred times.

    They know all you downloaded was a guaranteed piece of shit. That's all it is. Hey, if you want me to take a Word virus and code sign it, I will. I've got spare time. But for right now, for your sake, for your daughter's sake, ya might wanna think about downloading quality code from me.

  90. Why bruce keeps harping on security... by argent · · Score: 1

    I'll skip point #1, though it's pretty important, because I think you have an idea why it's there.

    #2) Just because a component is signed doesn't mean that it is safe.

    Code signing was design to prove the authenticity and integrity of the code. It was never designed to certify that the piece is also securely written.


    But it doesn't do that unless you have a secure automatic revocation mechanism. And if you have such a mechanism, you don't need Code Signing! because the only way to make sure that a piece of code you're presented with isn't on a revocation list is to check the revocation list when you're presented with it... and if you can do that, why do you need to sign the code? You can directly verify the authenticity and integrity of the code by downloading a checksum instead of a revocation list.

    #5) The fact that the evidence of attack (the signature on the code) is stored on the computer under attack is mostly useless: The attack could delete or modify the signature during the attack, or simple reformat the drive where the signature is stored.

    My comments: I am not sure what this statement means.


    Two things. First, he's pointing out that Code Signing isn't useful for forensics. For example, if someone attacks you using a compromisable signed applet they can remove the evidence that they did it. Secondly and more importantly the signature database becomes a new source of exploits: if you can compromise the signature database, you can sign your exploit code!

    Basically, Code Signing is a tool that you can use to reduce the risks incurred by doing something inherently risky: automatically running unrestricted code provided by a potentially untrusted source. There are two reasons you might want to do this: first, because you're concerned with the performance impact of running the untrusted code in a sandbox; second, because you want to avoid the organizational cost of distributing applications to end-users through other mechanisms.

    In practice, the performance impact of sandboxing has become a moot point, given the speed of modern computers and the efficiency and capability of scripting languages. The difference between the scripted Google Maps and the native Microsoft Streets and Trips is almost entirely attributable to the difference between remote and local map storage. The user interface itself is similarly smooth and responsive when you're not hitting the network.

    As for distribution, the complexity and the amount of manual work involved in making sure each computer is configured to securely allow appropriate signed applets to run without opening up security holes is significant. I find it hard to imagine that distributing software through traditional mechanisms would not be an improvement. Even Microsoft's Software Update requires at least one manual verification step the first time you use it that comparable update mechanisms that use individual package signatures (hashes) manage to avoid.

    And it doesn't implement secure automatic revocation, which means that if you find an exploit in a signed package you can continue to use that package as part of an exploit... if the package had to be explicitly downloaded from a secure server, or if a hash of the package had to be fetched from a secure server before it was accepted, then this attack mechanism wouldn't exist.

    So... deploying signed code reduces security when compared to explicitly installed code or checksummed packages: it opens you up for attacks from old versions of the package, and it opens you up to attacks that compromise the local signature database.

    Which is why Schnier brings up these points... it's not that these are attacks that Code Signing is supposed to prevent, rather they're attacks that Code Signing makes easier.

  91. I thought the same thing. by Anonymous Coward · · Score: 0

    It has always bothered me when people take the phrase "weight-bearing ambulation" and say things like "Is it OK for the patient to weight bear?"

  92. What is code signing for? by IchBinEinPenguin · · Score: 1

    Bruce criticisms of code signing is that it does not increase security for consumers.
    Your comment is that code signing wasn't meant to increaes security.
    OK, so what /IS/ code signing supposed to do for the consumer?

  93. Malware Deletes Its Footprints by Doc+Ruby · · Score: 1

    Bruce's Argument #5) The fact that the evidence of attack (the signature on the code) is stored on the computer under attack is mostly useless: The attack could delete or modify the signature during the attack, or simple reformat the drive where the signature is stored.

    My comments: I am not sure what this statement means. I think this type of attack is outside the realm of Code Signing. 'It is like saying host based IDs or anti-virus are useless, because if you can compromise the system you can turn them off.'


    As you point out, signed code does nothing other than "prove" that the code was issued by its purported publisher, who you might trust. Part of the claimed benefit of signed code is that it stores a record of its publisher for later auditing, if the code does something you don't like. But Bruce's argument is that such evidence will not survive a proper malware attack which deletes that evidence once it controls your machine. So that benefit is useless, a false promise of security.

    --

    --
    make install -not war