April 13, 1995 John Lowry Senior Member of the Technical Staff Bolt Beranek and Newman, Inc. 70 Fawcett St Cambridge, MA. 02138 email: jlowry@bbn.com (617) 873-2435 Direct (617) 873-4086 Fax Project: Location Independent Information Object Security (IOS) Bolt Beranek and Newman, Inc. (BBN), under contract to the Advanced Research Projects Agency (ARPA), has developed the Information Object Security (IOS) Tools. These tools use object identifiers which are registered as Computer Security Objects. ARPA has unlimited rights in the software containing the objects. BBN specified, created, and named the objects under contract to ARPA, and remains the primary point of contact on all questions regarding naming conflicts. The NIST Computer Security Objects Register (CSOR) assumes no responsibility pertaining to any inquiry regarding ownership or naming conflicts. The IOS software is publicly available and can be obtained on the Internet for anonymous ftp at ests.bbn.com. Object naming information ------------------------- IOS Signature Component: 2.16.840.101.3.3.0.3 iosp (3) components (0) signatureComponent (3) id-ios-signatureComponent Object definition and description --------------------------------- The signature component is one of several components defined by the Location Independent Information Object Security (IOS) project. The IOS components are used singly or in combination with others to achieve a variety of security services. This is a syntax that denotes an IOS signature component. The signature component is used to provide digital signature services and to carry elements necessary for an application or user to establish non-repudiation. Multiple signatures are supported, done sequentially or in parallel. SignatureComponent ::= SEQUENCE { signedInfo SEQUENCE { dataID DataID, signedData ReferenceID, certComponentID [0] DataID OPTIONAL, annotationComponentID [1] DataID OPTIONAL, timeStamp [2] TimeStampData OPTIONAL, signatureAlgorithm AlgorithmIdentifier }, signature ENCRYPTED OCTET STRING } DataID ::= SEQUENCE { componentType OBJECT IDENTIFIER, time GeneralizedTime, random OCTET STRING SIZE (2..2), name EntityName} EntityName ::= SEQUENCE { formal Name OPTIONAL, informal OCTET STRING OPTIONAL} TimeStampData ::= SEQUENCE { time GeneralizedTime, management ManagementInfo } ManagementInfo ::= SEQUENCE { source TimeSource } TimeSource ::= PrintableString Object usage and rules ----------------------- Signature components contain a DataID with the object identifier that defines the type of component. The DataID provides a unique identification for a component by the combination of the componentType, time, random, and name items. The random element distinguishes among components created at the same time by the same user, with the EntityName. The informal name field is provided for those users who do not have Names. Such users must take care to supply an informal name that they can be certain is unique, such as an RFC822 address. The signature component is constructed so that it can refer to many components. The signature value covers the hashes, of the ASN.1-encoded components listed in the signedData field plus the hash of the SignedInfo element. The annotationComponentID is provided as a convenience to indicate any specific annotation made at the time of signing. The annotationComponentID is referenced in the signedData list if it is covered by the signature. The TimeStampData associates a time stamp with the component that contains it. The time is the actual time of signing, which may be the same time as in the dataID. That time, however, is primarily to ensure uniqueness, whereas the value of this time is significant as actual time. ManagementInfo captures information which allows the recipient to establish trust in the time value. It may include the distinguished name of the server, information to assure that no post-dating has occurred, Certificate/CRL information, and a signature. The signature value is generated by passing the final hash value into the appropriate signature function. This final hash value is generated by computing a hash value for each encoded component referenced in the signedData element, concatenating those in the same order as the elements appeared in the signedData list, calculating a hash value for the signedInfo element, appending that to the concatenation, and then calculating a hash over that entire string.