fido-alliance / iot-fdo-conformance-tools

FIDO Alliances Reference FDO Implementation and Conformance Testing
https://fidoalliance.org/intro-to-fido-device-onboard/
Other
5 stars 2 forks source link

Ownership Voucher with device attestation type of RSA #23

Closed quanvincss closed 1 year ago

quanvincss commented 1 year ago

The specification does not require FDO components to support device attestation and verification using RSA cryptography: https://fidoalliance.org/specs/FDO/FIDO-Device-Onboard-PS-v1.1-20220419/FIDO-Device-Onboard-PS-v1.1-20220419.html#device-attestation

Sample voucher in Msg22-OwnerSign during RV test: 825915098385186559019086186550f1d0fd009e6b47d2b9f94d39bb1245608181820e41f678244920616d2061207669727475616c204649444f20416c6c69616e6365206465766963652183010159012630820122300d06092a864886f70d01010105000382010f003082010a0282010100a86c7834f8fe62366157e64e73c962fa282eb272ac56b39ef6f30563f9426c3f3b5fd092b7b45c55b11fedaf48b1bb194f12d776b9d3196df3439ba4aa2209642a70f7ba5c19b8e7bcd7c33376a82b017507198999dfe8481a404f48635808b1c650b13811ca95b1db4f4f5670477983f91b324f2cd6f73482bfef2a5de3af254d779f3f24310f55acb35584d358f61b1356df11d35efef4bab661065f65d4d7e5e8059e23c322a3b4619c31699541c15f729ffd23affcc398ac3129d4e0710b061b3f7b4fbd11bfaad5e2fde2e73055edf6e2c858407576774c6ba93da4f4f92ce1f9f1ee9ff93e2fc3dec7d48f3ecc9045a3182911948a288394836319626b0203010001822f58204db7a347ed39a81cf9e2bc739ec771385a31ea5c860633c4f507bdb538e3d6b882055820d9b610a980686710d12fd218af5fd9ce7b7df28d26165b971133155b0ce5ddcb8359032730820323308202caa003020102021100f1d0fd009e6b47d2b9f94d39bb124560300a06082a8648ce3d040302307d311e301c06035504030c1546444f205445535420494e5445524d4544494154453122302006092a864886f70d0109011613696e666f40776562617574686e2e776f726b7331173015060355040a0c0e576562617574686e20576f726b73310b3009060355040613024e5a3111300f06035504070c0854617572616e6761301e170d3233303330363039303331385a170d3333303330363039303331385a3081a9310b3009060355040613025553311630140603550407130d53616e204672616e636973636f31163014060355040a130d4649444f20416c6c69616e6365316a3068060355040313615741572046444f205649525455414c2054455354203636333136343330363636343330333032443339363533363632324433343337363433323244363233393636333932443334363433333339363236323331333233343335333633302057415730820122300d06092a864886f70d01010105000382010f003082010a0282010100ac27678fb721ac8a8caaa47f58b8aa6b45e1457a3f6a7a9508a9aad364b7f0b7ec789f3ca51fe21748f52656daea0387bda5face45860e798d330bf58797cd51d5ed9cfb22f786652abf7ee740010802465d3588dc79f94471988e25c7c0e8be86b41be0f31d86cc83f619bc6ad795d96db0ea16e641237673a85d04fdaaf019823b33bfe5bc6038c97d3126169aee63a62c349a9827e4bacdf3a36956e2fdc8993dec10aeee408db22a2888f4852ce709686b0c925438ed313784b55f1c061f7a2df71b4906d5795fe8e3c3de98c37fef743017ad970471330dd6f7b67243b4e74ffd3e7c00c768112a9a08c633f72fef76e1cdfc73f8be1c10edeb2525e2530203010001a3333031300e0603551d0f0101ff040403020780301f0603551d230418301680143ea70672c2102b98767f3edcc905b7d7f3f9a704300a06082a8648ce3d04030203470030440220719b4e2e100452281df119aa8ead9bdc4b1de26dc52cec05d1ab93c965e15feb022052e5c2a935a8740c5d35f152b821556f4b32567a65cbc1242105ae2bb9e799865903d5308203d1308201b9a003020102020102300d06092a864886f70d010105050030753116301406035504030c0d46444f205445535420524f4f543122302006092a864886f70d0109011613696e666f40776562617574686e2e776f726b7331173015060355040a0c0e576562617574686e20576f726b73310b3009060355040613024e5a3111300f06035504070c0854617572616e6761301e170d3232303132333136303232395a170d3439303631303136303232395a307d311e301c06035504030c1546444f205445535420494e5445524d4544494154453122302006092a864886f70d0109011613696e666f40776562617574686e2e776f726b7331173015060355040a0c0e576562617574686e20576f726b73310b3009060355040613024e5a3111300f06035504070c0854617572616e67613059301306072a8648ce3d020106082a8648ce3d030107034200041076e0d0e67dbce00fd0ba7202f073a24a6ce1faecb20a69a2aad9b3203cb503ad1d24841c4f85d63d896b43104e5dd3c023b79f80e0d6c60bd725ade40fae30a32f302d300c0603551d13040530030101ff301d0603551d0e041604143ea70672c2102b98767f3edcc905b7d7f3f9a704300d06092a864886f70d010105050003820201003ab2db5fae488ebaf76996a086f9c001ce352028f6293af1a23f0c4b276f1b54a3f93d7e3f5250c2870a892d75fdcd3ab05d4cd489083c14c18ad3b104ae0b6af55ac5bfaa7ff5195a1611d3640d88ad99b72e053f30d494e6cbfcefb6f1cc2c88233ffc28276eddec3aff3588c7d70f1277e672abfb5adac9167d0f8bedb645908bb8a4a6f20127e61e4c5414e2f1406a1fbc542ec263862ab36b38721e95686f5ae2adfacd78a2a50edc31422c542b8716deca4c0a2e8b3ff438fc412632ec3e8b3224c048a84c978a92ebe4e8752a6fa0f6252feeada7e0125ab79af2e386a6739463cb252fbedec3b907dbde4c1fc0931e95d1321600910c023682fccce72c0c540ff64452fe961de8bd1464cbbdd6ea69cfb28a4ce3d738ffea76e1fcc221f161193d0e17b596ef323d6571cecc030f9190768531b2d5a76ad6d913b85364333170f5c40d544be09f5d2739248f61d86e8c5552322c11e4c43483e07dcc629338ab08da125f7fc79ffd194f107d28c03cc90b01b6fcb4aea40a61ae183b41e301a4c9af4b38ba4cd69142a989beab15a5d442d6194ebb7db5026559a85457cb77473876f9fc3a0d8c5b573518a077fd075e187b112b2f2119007712aa4744b5f15de42ad80f410d79f57b1f220b364fa6c8265e5753cf5404786069c194852daaf2e8e2c868aade2aab27c7d1f7990ac4b4536370cb1b8b371cd22a447359056a308205663082034e020900ada31b6ce9a9c313300d06092a864886f70d01010b050030753116301406035504030c0d46444f205445535420524f4f543122302006092a864886f70d0109011613696e666f40776562617574686e2e776f726b7331173015060355040a0c0e576562617574686e20576f726b73310b3009060355040613024e5a3111300f06035504070c0854617572616e6761301e170d3232303132333136303232395a170d3439303631303136303232395a30753116301406035504030c0d46444f205445535420524f4f543122302006092a864886f70d0109011613696e666f40776562617574686e2e776f726b7331173015060355040a0c0e576562617574686e20576f726b73310b3009060355040613024e5a3111300f06035504070c0854617572616e676130820222300d06092a864886f70d01010105000382020f003082020a0282020100dd22f3a4d369939feba7961af8f9b8d05ca379fa30b04a7d9381c823cf61744a505f96c7ac55cbf8dc3406580518301d2e485c4662efdede9ab24954ed53b9d80d49b7d71490b330ddf534f1ee899926893d1b4625a06cef7356acefc62f8072ec26feb65ed75a05f90312c5adf63ac03b92b2f1ac3347ef1347b9911b9d96ee53b1786e308b03273fd7608197f27f81461d32899651c02f930c5afc8b8ff526d2d96431759a2dd583d248ced3d2fd6251f1de29aec08727fea086d18bb008703c27b4caa73a2988379f3cefd0037ba90a0950484c593dacb5d6c6ad1f5aa1c61fbf6c207875038eed43d13f84fd1d0a9ce4e1f474933a7725bf266deeb2c562207f95fbce81ece0c76d942890254243563c2443886e6e171aca913329aafca38f88364e8845cb2363e2d85fcac85e14dc5d74557a6cfbe1331bcb2560a479468f94a9e167a4d28deb35d93606e8bcd6e1c94c2ff9bb8970dc5649c34d1584723d600d89a6d3f35db00ab9581c83364b4552430eb97e9b9d0f558fa92b50e133b6fffd2950a0cff5442f53d2ceb9f49e50dfcdd2c4363f130337530584fbd9885f9d21bf0f31f75fd4bc7c9c5714409148f85759820b511d3a53bf1ef07e918b1511894ba7dbce4c11b0845459552c5ca3b78d3891fd580aef78ac6b24fdbcf5db3ad713328d8f2f227d3b1a539094c4d69117bba3c2dc0b976c653b3efb27370203010001300d06092a864886f70d01010b050003820201005e317fa6dccf6a653b9551db115ff9ca31db25ad0947d9bead51c0258d2fb38832fb9e5cae00097552a941bfb1fc11abff87c8aef8e7a8e33a81130f31cd72fdd2f7ec68a7020bcfdcabf95e3855f311ea12e21de13f091937a594e7e48cd46322a787e965a7690684ee35647d08c3bd93d03fbc42a1a99c3af23cc828ca0e59dfd048bbfb7e9075c21d1d619bbae58207bc868e6cf1713cab689443ad329973340f9021d522a908fa22bcda6c37db845a417c6c4ba186697b368095825fb49e30562f88f1c492b55ad130756c8eaea5d70c61a217764f8e5594a3f7f2f817b81d5c71f59bb6dde9a1097f5cc9e54e923ba7b56f4248db0ae90df1c846bd60eb82473961097c3cf9fe1f3218eb109f1cf66989484fb84426864b4cd3cc9e4d631a46460566c96b1dafdb59976b1f5d696ec1e9d03f5338afd2df590df18191a3997d3e5f1141b2c2bbc0ec10487b6f63dda5c75621c54f77227db983ebe96367a6dbecfd7bb4d6fcff5071c4f906152cd3ecb52f3477ad6750a5d1e230a9b62259421e66365cb12d401ba0819ad14af7e43b06fda5998279a2b2a20134fa1cb2181cf025a0d30cd4c02a9c29ed3d8cfadfa873b06d6cc766b44a33a2bb7a09d46bf397843ff3ed12d5be5126eca7b843e42d766678d7fd77e34789d6b2a8f1c06b022540e55c747d031b5b53e17d1c2dd0623de58f5d078c298edcf5bfe4555f838445a101390100a31901005000000000000000000000000000000000190101830000f6390102500000000000000000000000000000000059017684822f5820dcd37d20a358704d4a03218bd6ed0a5e82cc33407a02a2b608a9e6083417f3d2822f5820478633617fb5114430768b5943231c9c79805c029a801a8b64e45632b918eeb1f683010159012630820122300d06092a864886f70d01010105000382010f003082010a0282010100e341c111aa0b8192a37e8026f3e36ecbbb26aba9e3e1e74465929150e824a1ff43dc9f4e1e5d95cf81d2976198995433edf2f4ecb5f65475ec84c919dba5d7254831320aab1e4d47858b9c289dc6fb5ad7618e80b00a1adb0addfdb188e390908fd6747d906a33a1177a1a611605b8a969eb7dec0efce2d296a89f6a5e98270cda28a501c9cc139000e249764fcd7e9991c2dd57f177e025be1d4097633496e479dd8bb84823e46447cdcd27b392cf7574b93bfbc5e77ac5aa7b972f0202ad649ef6fd309c89faeb435779fac15e21bad63fd1af5b13219c1cf0e2a161391bf928f467591ffed0593a8bfc26dfa866f07bc0077a80ce2baddc5d92b4a0f5965b02030100015901001cd2022c0b148ee60d7d858101a412219330ffec87ab50815351ae3cb17cb4a47ce7557b11fc1e1bc6f1d4da6e92c137b57dbbf961f5959b3fac6d0c795458ae60671d4fcde359e27b6c970599b3f4a524273ea21c661904757f402363670030402d38e449bcc1366e5063f0094b746ba832f9881601ab7a52eb44da62cae30e25fae0b477ff98477c609444fa5d4cce6bbd6e7a8ea33d68422488769d64ab8679b1d5273c50261282eed6d5545a1bb8f8c53b55891991120a9a75d8314d3511348b41294ed9fa9a35d7e0b5e374fe2578afbb42c018155df8b64ece4203b381e47c565166df7ea767195533afbd797f61934e115456bf122992d4861633507d8445a101390100a31901005000000000000000000000000000000000190101830000f6390102500000000000000000000000000000000058c784822f5820f18e2f70b0a4dd9845e698a02288d9d99fce2ee221241875f678152dbfa2efa9822f5820478633617fb5114430768b5943231c9c79805c029a801a8b64e45632b918eeb1f6830b0158783076301006072a8648ce3d020106052b8104002203620004ed8827298a1cabb309414912a354f734bd55973aeea7b59b78c367550b08ee03f9f277b98a5fc2b93fc5d9ca2df3037aff40fc81e4f4e82bd785053c0c1deb8caa27316fdf33f3eec344a145ad7298611cd075e0bfd603a9bbde01ed9109908759010084b9dc3bd1ebb2b42533c4f255f79996408a6c7951829bbb163b13d4193657db0e1b42490958a63b09bd1ef86d99595ddc140433146abb0c1f7cf2469559664b2aa2368f3c1440d3efd35cef1ed7f3f46140e08fa7d624cd58b6dfe9ec73c2cce285bb7128a5a93e8864d6447950679b694145d24f59b7b08eb21535b1e934036db0201e946cfccbdd52dd2de74571aebb6b44112ac81cbef767170fdc2c06a619a70563ba20a111d5d803bf0a2100d3049e637c66dd28296a726c4adfeba2856be8d3ffce52a545239fec3786feaea2dffa50eaef911e3fb86b24ef3095f82f8d251d80a2c30e63560e2046347afea4dcad6e728edf18eefa5ad70c2e90abef8444a1013822a31901005000000000000000000000000000000000190101830000f6390102500000000000000000000000000000000059017684822f5820ccea60a113b3bb5ca290ff17d59c7ee4d74947ab4321e771158d0ad7bb15ec10822f5820478633617fb5114430768b5943231c9c79805c029a801a8b64e45632b918eeb1f683010159012630820122300d06092a864886f70d01010105000382010f003082010a0282010100be1417c302a91e667b9ecd1fc4c36b303e19a9a2e55e3c65f1dd0b128ce2996788529b5b4b0dc86ccebdec5e792c8783ea86505fa1239b374a8ff4171525641db58bd59b7ab0d87f08380f93a03882287edbdd7acaddde3699415fde7a8f1395c0fbeaa49e0ad26e49120cf9a070d4065f275575ade432a4b6b7fbd00d6c89f43f3061a0dd8e982e36a242365b924b63744431ccc93afdf027ba20d2855bfe4b23b8b6c208f860b352757943a1f8a828abe607a4ea61877ac367cf61b2c51d54b15419546da6ca01dfa8e0d5b130d82ebbcc7e7d7f703f535b51ae7ba1f3b95b3d69f652763a0258c1b121412c7a4e6b80f7f93889b62408e96d4954190f61b7020301000158607db049b869261d8b0149e7f50481b82df7bd97f4481912c6d8af0a7cb397e2dcc3a44ec825534517ae562941d68925a329dbe77d1b9dd67bb69b8a47beba186590c46634c29fa720304653d4951cf7d2545ebbabe743f56c73a19dad4d26e2d71a00278d0050e71c627b1ba5f306a7834cd6148bdef88441a0a31901005000000000000000000000000000000000190101830000f639010250000000000000000000000000000000005831828184447f000001f6191f9003822f5820fa86e03fb5fd6cd0c64416a7bce85da0ee9c5deab66a484363819075ffcb2d605901003725976e60d92ea2514f2953ab8cf012df5abcf0aaf9f604b4cf73487d3dc5db180dfc8cfdece41b46c0fc3436fc5bcd99ea1bba5900ddd457bb434c10fad481720314c7042eb9ae2345d8259b2c6378a8d220ef10a42fd9df98030704b7fa7216f0c81a2611a910d0c75ebb4bbf30ab4bb1ba384eae88e9cda9c674ef0f16d1a2a1dec84d9311bce17d5043b9a14a316677b872f2f76c7214900c6185936bc3a78d8ea53e52a2f83cfbb9fce68aca519ed1d756fb3c7156bd3c6d82f72b47a97676693335445336e1c573293ce7b694de8ec5e23a191772cdccc86e865c75bfde3a74b4e789727436df7d70ab8793c4cd84e3aedea89a2a266e36f85a781128

yackermann commented 1 year ago

@quanvincss this is 22 but you are talking about attestation which happens in 32?

quanvincss commented 1 year ago

yes, it is 22, the problem is the device public key in OVDevCertChain in the voucher from this message, it is an RSA key but the specification does not require FDO components to support RSA type of Device Attestation

@quanvincss this is 22 but you are talking about attestation which happens in 32?

quanvincss commented 1 year ago

Hi @herrjemand, why was this issue closed? I pulled your update and the issue was not fixed

yackermann commented 1 year ago

Ok @quanvincss. You are right.

I've added converter so that it would force ECDSA for OVEntries when device uses RSA. Try now.

quanvincss commented 1 year ago

Ok @quanvincss. You are right.

I've added converter so that it would force ECDSA for OVEntries when device uses RSA. Try now.

I've seen your update but are you sure? I thought the signature type in OVEntries depends on the Owner Attestation (Owner key type) but not the Device Attestation (Device key type), and the Hash types for HashHdrInfo and HashPrevEntry depend on both OA and DA? The device key can not be an RSA-type key or DA (signature type of EAToken) can not be RSA-type.

yackermann commented 1 year ago

@quanvincss Now I am lost.

@GeofCooper

So the spec says three different things:

Section 1.5.2 says that all FDO components must support device attestation, that SHALL only be ECDSA or EPID

Screenshot 2023-06-26 at 8 44 25 PM

Then Section 1.5.3 says that voucher SHALL support RSA and EPID

Screenshot 2023-06-26 at 8 45 38 PM

And then section 3.4 says that voucher shall consistently use the same alg:

Screenshot 2023-06-26 at 8 47 07 PM

So does that mean that you could have RSA ONLY Device that uses RSA for Voucher, and KEX must also support EDDSA for Device Attestation?

GeofCooper commented 1 year ago

So does that mean that you could have RSA ONLY Device that uses RSA for Voucher, and KEX must also support EDDSA for Device Attestation?

Yes. Device attestation and Owner attestation do not have to use the same crypto. This is evident, since RSA attestation is supported for the Owner / OV and not the device. It is a little weird, but SSH has this asymmetry, too.

There is more. Two of your quotes are from the profile, and the third is not.

Section 1.5. is a normative Profile for FDO. This is the subset of options that all* implementations have to support. It is normative, so all FDO implementations have to support all the options in 1.5.x.

However, other cryptographic options are legal FDO. So 3.4 lists some additional options that are also part of FDO, but not required in all implementations.

(The comment in 3.4 also says that whatever crypto you started with in the OV, you must continue to use the same crypto. This is because later signers of the OV do not know what crypto the device actually supports. This is basic compatibility, so it is stricter than the profile)

@herrjemand and @pheimfido, you must decide what crypto you are testing for in the test suite. It would be reasonable to test only for the FDO Base Profile (section 1.5). You could expand this to permit any crypto referenced in the specification, although it is not an error to fail to support crypto outside the profile.

I know you are also explicitly excluding EPID for now, even though it is in the profile. I think this is also reasonable for now.

Also. A caution that the spec says that any crypto from the COSE spec is automatically grandfathered into the FDO spec. This is in section 4.4. This is intended to allow the current spec to be used for other crypto, e.g., post quantum safe crypto. I advise explicitly excluding this from your testing if you support more than the base profile.

COSEEncType indicates encryption mechanisms from the COSE specification RFC8152. 
The given list is exemplary; all encryption types defined in the COSE spec are permitted 
to be used with FIDO Device Onboard. 
yackermann commented 1 year ago

@GeofCooper The decision regarding mandatory crypto suites is fully a responsibility of the technical working group. CWG is simply enforcing specification.