19:02:17 RRSAgent has joined #did 19:02:17 logging to https://www.w3.org/2019/11/13-did-irc 19:02:19 ken_ has joined #did 19:02:20 Zakim has joined #did 19:02:23 present+ 19:02:27 rrsagent, make logs public 19:02:29 present+ 19:02:31 present+ 19:02:34 present+ 19:03:03 selfissued has joined #did 19:03:04 present+ 19:03:10 present+ 19:03:22 present+ 19:03:39 Meeting: DID WG Public Key Discussion 19:03:43 scribe: ken 19:03:43 present+ 19:03:55 tplooker has joined #did 19:03:59 Topic: Public Key Formats 19:04:03 q+ 19:04:25 ack selfissued 19:04:33 Orie_ has joined #did 19:04:42 present+ 19:05:18 present + 19:05:20 present+ 19:05:39 present+ 19:05:54 selfissued: I thought when we last met that to support interoperability we would support JWK as the key format for keys. 19:06:20 ... Other key formats would be considered on a case-by-case basis. 19:06:32 ... This is not what was written. 19:06:36 q? 19:06:44 q+ 19:06:45 ... I am disappointed by this outcome. 19:06:54 ack dlongley 19:07:06 q+ 19:07:18 q+ to discuss case by case key type formats 19:07:31 dlongley: I thought the consensus was that for each key type we would look at each key and select the most popular to recommend. 19:07:32 q+ to discuss why are we mandating key type formats 19:07:48 ack selfissued 19:07:59 ... There may have been misunderstanding on what the concensus was. 19:08:08 q+ to suggest some choices 19:08:23 selfissued: The point of standards is to make choices for an international standard. 19:08:44 ... Standards involves making choices. 19:09:28 ... In my mind, the reason we were willing to allow a single non-json encoding is that we would have a standard for the json encoding. 19:09:32 q? 19:10:06 ack Orie_ 19:10:06 Orie_, you wanted to discuss case by case key type formats 19:10:11 ... I hope we can a agree on JWK for all key types; secondarily consider other representations where there is a compelling reason. 19:10:14 oliver has joined #did 19:10:18 present+ oliver_terbu 19:10:33 Orie: There is progress on what signatures are being used. And libraries. 19:10:57 q+ 19:11:08 ... If we think in terms of "If a given key type is represented by a JWK, no processor should throw an error." 19:11:21 ... If you want something else, that should be ok, too. 19:11:38 q+ danielB 19:11:45 q+ to note that "secondarily on a case by case basis" is new, at least as far as I know... and I'm hearing new positions on the call. What Orie is saying is different from what Mike is saying is different from what Dave is saying. 19:11:46 present+ 19:11:48 daniel has joined #did 19:11:48 ... There is some support for PEM. There is some support for others. 19:11:53 q+ 19:11:56 ack mike-lodder 19:11:56 mike-lodder, you wanted to discuss why are we mandating key type formats 19:12:46 mike-lodder: I don't see why each method can't choose a format. We shouldn't force everyone to use just one. 19:13:04 q- later 19:13:15 ack dlongley 19:13:15 dlongley, you wanted to suggest some choices 19:13:18 ... I think other formats such as hex or pem are just as interoperable. 19:13:32 dlongley: Interop should be the focus. 19:14:02 Am I the only one not hearing anything? 19:14:09 agreed dlongley 19:14:12 ... We could consider apps that are trying to understand did docs. 19:14:57 Strange, I can hear everyone but dave longley, if he's speaking 19:15:04 yes, daniel == danielB 19:15:06 I think 19:15:16 ... I agree it makes sense to pick something for apps. Picking JWK might not be the best choice. We need to see how peoople are using the key types. 19:15:18 (i guess that'd be strict ===) 19:15:18 q- danielB 19:15:38 ... This could help us avoid multiple representations for each type. 19:15:54 q+ to note information gathering exercise. 19:16:05 ... Representing keys in their native formats could simplify our work. 19:16:12 q? 19:16:30 This discussion is not about things other than public keys (lets not drag ethereum into this) :) 19:16:40 ... It might be better to represent a key in its native format. 19:17:55 ... Another argument for not using JWK is that not all libraries adopted a new standard and forced the community to create conversion tools. 19:18:23 ... This creates a interop burden. 19:18:34 ack selfissued 19:18:46 q+ to discuss we are not adopting ONE way... 19:18:57 q- later 19:18:58 selfissued: I agree with Orie that we agreed that no processor would err on JWK. 19:19:13 ... Dave's points about native formats are good. 19:19:43 ... For RSA, ASM would be problematic to convert. 19:19:50 s/ASM/ASN.1/ 19:20:01 Compressed Points vs Uncompressed for ECDSA 19:20:01 q+ to talk about modern crypto going to simple representations for keys (just encoded bytes) 19:20:02 ... For elliptic curves the native formats are all binary. 19:20:03 gannan has joined #did 19:21:01 ... Every processor of elliptic curves is already capable of conversion between base58 or base64 to binary. 19:21:07 q? 19:21:43 present+ jonathan_holt 19:22:54 ... Library burden is small for the conversion of elliptic curves to JWK. 19:22:55 ack daniel 19:23:43 q+ 19:23:57 daniel: I think that most methods under the covers could be using CBOR or other formats. On output can be in any format or representation. 19:24:20 ... Having a universal output format has some benefits. 19:24:30 ... I don't know if this is compelling. 19:24:59 q? 19:25:19 ack Orie_ 19:25:19 Orie_, you wanted to discuss we are not adopting ONE way... 19:25:56 In the native Method code, you should be free to use brainfuck or TypedArrays 19:26:07 Orie_: I think we have an opportunity to decide on a representation that will not cause errors. This does not preclude using other methods in your method. 19:26:11 but what are we losing by saying we will output one format? 19:26:26 daniel - implementation complexity 19:26:32 kdenhartog has joined #did 19:26:39 daniel - the people that are opposed to that are concerned about implementation complexity 19:26:46 q? 19:26:46 So it's more complex to know you're going to get back the same format every time? 19:27:09 daniel - it's complex to convert when you don't have to today. 19:27:22 But why would you ever error on any of them under this direction? 19:27:28 ... Pem could even be the format. There will be methods that have multiple key formats. I prefer JWK. 19:27:31 you'd just warn that it is unsupported 19:27:42 daniel: I think the main argument is the ol' federalist vs state rights argument :) Does the core DID spec dictate a single key type, or do individual DID methods dictate a key type for themselves. 19:27:46 daniel - for example, if you use PEM today ... zero conversion going to/from openssl ... but if it's JWK, then you have to go to/from that format to PEM 19:27:56 can someone clarify what we mean by we don't "error"? what is throwing the error? a resolver? a did library? etc.? 19:27:57 Does the browser dictate HTML? 19:28:10 ack manu 19:28:10 manu, you wanted to note that "secondarily on a case by case basis" is new, at least as far as I know... and I'm hearing new positions on the call. What Orie is saying is different 19:28:11 why don't they use Gopher? 19:28:13 ... from what Mike is saying is different from what Dave is saying. and to note information gathering exercise. 19:28:19 ... I would like to see better interop by saying that no one should err out on a single key format. 19:28:36 manu: There are at least three suggestions. 19:29:04 ... The spec will end up with MUST, SHOULD, or MAY. 19:29:09 +1 to gannan_'s question about clarifying what we mean about throwing an error 19:29:12 Why not support Dart in the standard JS engines in browsers? 19:29:30 ... It the secondary representation a MUST or MAY. 19:29:54 MUST support JWK, MAY support PEM, or vice versa. 19:30:15 ... selfissued would be happy with MUST be JWK. 19:30:25 But you can convert to other formats, no? 19:30:34 ... Others including mike-lodder and dlongley would not be happy with that. 19:30:52 q+ to be crytal clear 19:31:02 ... From an editor's perspective, the language we would use in unclear. 19:31:08 https://docs.google.com/spreadsheets/d/12dwUaAruKKpq3a3IfEMEMhpRhI7oM1tQnkmDbW2VGoU/edit 19:31:14 Survey of existing libs ^ 19:31:26 DID Method implementer survey here: https://forms.gle/Hovf3irBJ5KwgXLQ6 19:31:37 ... There is a survey of existing libraries and did methods to gather information. 19:32:09 ... This will help us determine what is currently in use. 19:32:48 ... There are arguments being made without data behind it. 19:33:30 ... Some people are fine without the mandate to use JWK. Don't make my life more difficult by mandating JWK. 19:34:04 ... There is not a single path to interoperability. 19:34:11 ack dlongley 19:34:11 dlongley, you wanted to talk about modern crypto going to simple representations for keys (just encoded bytes) 19:34:33 dlongley: MUST vs SHOULD from a implementors perspective. 19:35:07 ... Cryptography is trying to make development simpler by using libraries to make simple methods. 19:35:49 If multiple formats are allowed, I think we MUST have everyone who implements using a format/type commit to a common lib that encompasses every one in common usage, and they all swear to commit the resources necessary to maintain that lib in perpetuity 19:36:07 q+ 19:36:08 ... If we just use ed25519, I would prefer a single representation. If we have to add JWK support to our node software, it will require additional work. 19:36:39 That lib can depend on other modules, but we better have a simple, single lib that works in the most common envs that we track, update, maintain, and strongly protect 19:36:53 ... Can we select a single JWK representation that we have to add, even though we don't have a use for them right now? 19:37:26 ... Did methods should not have to deal with the extra complexity that isn't needed for the did method or the application. 19:37:33 q+ to talk about the process around how we're going to make this decision.... gather data, analyze it, apply it to arguments, ranked choice straw poll. 19:37:45 q+ to put some easy proposals in to get feedback. 19:37:50 q+ 19:37:58 q- later 19:38:04 ack selfissued 19:38:07 ... I'm interested to hear what mike-lodder who uses the same ed25519 that we do thinks? 19:38:33 selfissued: mike-lodder said "can't we let the did methods choose their methods? 19:38:45 I'm less resistant to mandating ed25519 to base58 19:38:47 q+ to talk about limitations of interop. 19:38:51 I agree with selfissued here... we don't want the DID Methods defining what key representations they support, that's the other extreme. 19:39:03 q+ 19:39:03 ... As new key methods are added we have to keep adding new code. 19:39:22 it may be significantly more difficult to revise DID method code (DLT technology) than application/resolution driver code 19:39:25 ... I thought we agreed to limit the key formats to a finite set. 19:39:38 ... All formats MUST be supported. 19:39:59 ... Pick a small set that we can agree on. 19:40:07 manu: All MUSTs? 19:40:11 selfissued: Yes. 19:40:15 I agree there 19:40:19 I agree with selfissued here... we did say we'd limit DID Document public key formats. 19:40:45 And not only MUST in the spec, but everyone here needs to pick up a shovel and commit to maintaining shared libs 19:40:47 selfissued: If we don't, then the set will grow continually. 19:41:20 ... The native formats are all binary for most new key formats. 19:41:29 Should be a repo somewhere like DIF where we can aggressively maintain the lib to ensure devs have an option for use across common envs 19:41:56 ... I hope we can agree on the call to define a format which always is supported and then add some other things. 19:42:09 there are two different groups: DID method implementers and DID Doc consumers 19:42:12 ... This is for the benefit of developers. 19:42:14 q? 19:42:30 q+ to say i have different thoughts about DID Doc consumers to DID method implementers 19:42:34 Yeah, none of this should encumber the internal DID Method internal representations 19:42:38 from a DLT perspective, JWKs require more bytes, 19:42:38 Yes, but PEM/DER/ASN.1 is implemented everywhere 19:42:44 (not for elliptic curve) 19:42:50 and agree with selfissued there. 19:42:50 agrees that ASN.1/DER is grossly over complicated ... but it is implemented everywhere 19:42:53 ... I could understand choosing pem, but its support for elliptic curves is not mature. 19:43:09 q+ 19:43:11 q? 19:43:15 https://w3id.org/security#publicKeyPem 19:43:21 it is implemented for elliptic curve in OpenSSL 19:43:22 ack Orie_ 19:43:22 Orie_, you wanted to be crytal clear 19:44:01 Orie_: On the question of pem is from my experiencing trying to use the universal resolver. 19:44:14 Hell, i'd even like to see a spreadsheet with names of DID Method maintainers and what types they are introducing in the world, with an email, telephone numbers, and other ways to contact them if their support in the shared library lapsts 19:44:14 ... I am not a did method implementor. 19:44:20 *lapses 19:44:53 ... I deal with pem and jwk all the time. 19:45:05 q? 19:45:20 I want to call someone and say "Buddy, pal, you wanted to use ASNPEMDAS v12.3.54564, so you need to get your module in this lib updated NOW, because your DIDs are circulating everywhere" 19:45:22 ... I am asking for each did method MUST support JWK and pem. Or one or the other. 19:45:33 ack jonathan_holt 19:45:40 jonathan_holt: I am a proponent of multi formats. 19:46:02 ... It is onerous to keep up with all the different representations. 19:46:22 Secp256k1 is 19:46:25 I don't want to be stuck with JSON as the only format for keys which is what JWKs require 19:46:26 it was recently added 19:46:27 ... With JWK you are stuck with the represenrations in the registry. 19:46:45 q? 19:46:46 ... its a good idea to use unregistered crypto in standards? ... shouldn't we register the crypto we use? 19:46:49 It was added in direct response to this ecosystem's desire to have it 19:46:53 ... It is behind the times in keeping up with the most recent curves. 19:47:36 selfissued: That registry is extensible by anyone who wants to register the algorithm with a spec. 19:47:45 ack daniel 19:49:01 Part of good crypto is also considering constant time operations. I haven't seen a constant time JWK implementation 19:49:05 daniel: If the decision is made to select more than one format, I think it is not in the best of the world because it can cause failures. 19:49:25 CS is important when designing end user handlers where timing and power attacks are real 19:49:43 ... A set of modular libraries that is maintained will be critical. 19:49:46 and I doubt I ever will see a JWK CS implementation 19:49:58 ack manu 19:49:58 manu, you wanted to talk about the process around how we're going to make this decision.... gather data, analyze it, apply it to arguments, ranked choice straw poll. and to put 19:50:01 ... some easy proposals in to get feedback. 19:50:30 manu: What is next? I will continue to gather data regarding did methods to base decisions on. 19:50:55 ... I would like to make a few proposals. 19:50:59 +1 for removing options 19:51:09 I would like to see a fixed set of encodings that are allowed like a key MUST be encoded in one of the following 19:51:30 Yeah I'm good for that 19:51:43 PROPOSAL: Standardize on JWK as the only public key format that MUST be supported. 19:51:50 -1 19:51:51 -1 19:51:51 -1 19:51:52 -1 19:51:52 -1 19:51:53 -1 19:51:54 NO 19:51:54 -1 19:51:57 -1 19:51:59 -1 19:52:01 +1 19:52:10 PROPOSAL: Standardize on JWK and PEM as the only two supported key formats for at least RSA, secp256k1, secp256r1, ed25519, Curve25519. At least ONE format MUST be supported. 19:52:16 manu: That one will not fly. 19:52:23 -1 19:52:24 -1 19:52:24 -1 19:52:24 +1 19:52:26 -1 19:52:27 +1 19:52:27 -1 19:52:28 -1 19:52:33 -1 19:52:35 rofl dead 19:52:44 manu: Nope. 19:52:45 dmitriz has joined #did 19:52:47 PROPOSAL: Standardize on JWK (FormatA) and a per key type format as the only two supported key formats for at least RSA, secp256k1, secp256r1, ed25519, Curve25519. At least ONE format MUST be supported. 19:53:07 +1 19:53:16 dmitriz has joined #did 19:53:18 +1 19:53:19 +1 19:53:20 +1 19:53:21 +1 19:53:22 +1 19:53:24 +1 to OR 19:53:24 +1 19:53:26 +1 19:53:27 0 19:53:30 manu: This means JWK for everything or just BASE58 raw bites encoding 19:53:32 +1 19:53:34 +0.5 19:53:36 -1 19:53:40 +1 19:53:40 not just base58 19:53:40 0 19:53:41 lol 0.5, that was funny 19:53:42 manu:OK 19:53:46 PROPOSAL: Standardize on JWK (FormatA) and a per key type format as the only two supported key formats for at least RSA, secp256k1, secp256r1, ed25519, Curve25519. At least TWO formats MUST be supported. 19:53:57 +1 19:53:57 -1 19:53:59 -1 19:53:59 -1 19:54:00 -1 19:54:01 manu: -1 19:54:14 s/manu: -1// 19:54:17 -1 19:54:34 manu: You have to support both. 19:54:44 -1 19:54:58 ... THis is too gauge support only. 19:55:00 -0.5 19:55:24 selfissued: There is a difference between producers and consumers 19:55:34 q? 19:55:34 manu: Yes more polls would be needed. 19:55:38 thanks for that elimination process! 19:55:54 ack dmitriz 19:55:54 dmitriz, you wanted to talk about limitations of interop. 19:55:59 +1 to there being a difference between producers and consumers and DID methods/applications 19:56:34 dmitriz: All are for interop. Our main audiences are did method developers and app developers. 19:56:48 ack kdenhartog 19:56:53 ... Most will use one method or rely on a universal resolver. 19:57:02 skip me 19:57:05 ... The burden is concentrated. 19:57:08 dlon 19:57:08 I'll type 19:57:09 ack dlongley 19:57:09 dlongley, you wanted to say i have different thoughts about DID Doc consumers to DID method implementers 19:57:43 dlongley: There is a difference between producers and consumers; we should explore this further. 19:58:04 yep 19:58:07 s/yep// 19:58:13 selfissued: I think there was agreement about having all the key representations in the spec. 19:58:16 s/dlon// 19:58:19 PROPOSAL: There will be a small fixed set of key representations for DID documents described in the spec 19:58:20 rrsagent, draft minutes 19:58:20 I have made the request to generate https://www.w3.org/2019/11/13-did-minutes.html manu 19:58:25 +1 19:58:27 +1 19:58:28 +1 19:58:33 +1 19:58:35 +1 plus -- you can extend to add more but not for the same key type 19:58:35 +1 19:58:35 +1 19:58:36 +1 19:58:38 +1 19:58:42 +1 19:58:42 +1 19:58:44 +1 19:59:01 selfissued: Good 19:59:25 i think my main issue right now is figuring out *which* software MUST support these different key representations is unclear 19:59:29 ... Can manu create a PR to say that there is a fixed set? 19:59:55 manu: I could do it if you will write some concrete text. 20:00:04 great progress, thanks all! 20:00:09 brent_: Thanks all for the progress today. 20:00:15 +1 20:00:15 yes 20:00:15 +1 20:00:16 +1 20:00:18 +1 20:00:19 +1 20:00:20 +1 20:00:30 ... Do we need another special call? 20:00:43 thanks 20:00:44 ... Yes. We'll schedule another call. 20:00:46 rrsagent, draft minutes 20:00:46 I have made the request to generate https://www.w3.org/2019/11/13-did-minutes.html manu 20:01:16 ken_ has left #did 20:02:06 Chair: Brent 20:02:27 rrsagent, draft minutes 20:02:27 I have made the request to generate https://www.w3.org/2019/11/13-did-minutes.html manu 20:02:30 rrsagent, publish minutes 20:02:30 I have made the request to generate https://www.w3.org/2019/11/13-did-minutes.html manu 20:08:27 another important point to consider ... JWK has a number of places that would allow someone to sneak in PII -- which is a problem for DID methods that use blockchain tech... so DID method software/validators that accept JWK may have to reject *some* JWKs and not others. 20:09:14 none of this impacts applications on the consumer side. 20:16:31 rrsagent, publish minutes 20:16:31 I have made the request to generate https://www.w3.org/2019/11/13-did-minutes.html manu 20:47:45 dmitriz has joined #did 20:58:18 dmitriz has joined #did