(continuing top posting to keep thread consistent)
Note that the point of using an X.509 signature at file creation time
and/or client approval time was to reuse the internal file structure
that is already designed to hold that particular signature format
(specifically, the internal file structure that would eventually hold
the final signature, which was already specified to be in that format).
Thus the idea was to simplify and reuse code, given the existence of
code, tools and data formats to sign those particular files with X.509
signatures. This was also (presumably) the reason Microsoft did it this
way.
But yes, of cause if the file generation is already secure, then the
secure file generation machine should apply an initial signature and the
client just add some kind of counter-signature authorizing this
particular one of the securely generated files.
On 24/06/2015 15:24, Michael Wojcik wrote:
In Marco's original description, the file is created by a trusted
system and then transmitted to the client. Then, later, the client
transmits it to the server, which verifies the contents. If the file
is signed by the creating system, it doesn't matter if the client is
compromised. A compromised client can refuse to send the file, or it
can send a forged or corrupted file, but the server can dectect all of
those cases.
It's not clear from Marco's description whether the system that
creates the file can perform the signing process, but I don't see any
reason (in the description) why not. It would help if this point were
clarified.
The Windows driver-signing process and similar look wildly
overengineered for Marco's purposes, if my understanding of his
requirements is correct. They have a very different threat model - and
that's why this isn't "a common requirement". Windows drivers are
created by thousands of organizations and consumed by thousands of end
users. Marco has files created on a trusted system (or handful of
trusted systems) he controls, and verified by trusted systems he controls.
His followup message below says "data has to be signed with an X.509
certificates public key that already exists". I'm guessing this
actually means "data has to be signed with the private key
corresponding to a public key that happens to be in an X.509
certificate that already exists". That doesn't mean X.509 PKI must be
used; X.509 isn't some sort of virus that infects everything it
touches (appearances to the contrary). There's an asymmetric key pair
of some sort - RSA probably - and we need to use it for signing. Fine.
Here's what I'd do: the originating trusted system creates the data
and runs "openssl rsautl -sign" with appropriate parameters to create
a signature. (Just script the openssl command-line utility; this is a
trusted system, so why reimplement the code?) Add the signature to the
proprietary file format. Send the whole thing to the client.
Client subsequently sends the signed data and signature to the server,
as part of a file in the proprietary format, along with whatever
unsigned data is included.
Server extracts the signed data and signature, and uses "openssl
rsautl -verify" to verify it.
Michael Wojcik
Technology Specialist, Micro Focus
(original text snipped)
Enjoy
Jakob
--
Jakob Bohm, CIO, Partner, WiseMo A/S. http://www.wisemo.com
Transformervej 29, 2860 Søborg, Denmark. Direct +45 31 13 16 10
This public discussion message is non-binding and may contain errors.
WiseMo - Remote Service Management for PCs, Phones and Embedded
_______________________________________________
openssl-users mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-users