JSON Serialization Specifications JWS JSON Serialization JWE JSON

  • Slides: 10
Download presentation
JSON Serialization Specifications: JWS JSON Serialization JWE JSON Serialization Mike Jones August 1, 2012

JSON Serialization Specifications: JWS JSON Serialization JWE JSON Serialization Mike Jones August 1, 2012

JSON Serialization Goals • JSON representation for JWS, JWE values • Support multiple signatures/recipients

JSON Serialization Goals • JSON representation for JWS, JWE values • Support multiple signatures/recipients • Use identical crypto operations as compact (dot-separated) serializations

Design Methodology • Use JSON members for each JWS/JWE element – (instead of separating

Design Methodology • Use JSON members for each JWS/JWE element – (instead of separating them with ‘. ’ characters) • Use single JSON values for elements common to multiple signatures/recipients – JWS Payload – JWE Ciphertext • Use JSON arrays for elements specific to each signature/recipient – JWS Header, JWS Signature – JWE Header, JWE Encrypted Key, JWE Integrity Value

Headers from Example JWS-JS {"alg": "RS 256"} {"alg": "ES 256"}

Headers from Example JWS-JS {"alg": "RS 256"} {"alg": "ES 256"}

Example JWS-JS {"headers": [ "ey. Jhb. Gci. Oi. JSUz. I 1 Ni. J 9",

Example JWS-JS {"headers": [ "ey. Jhb. Gci. Oi. JSUz. I 1 Ni. J 9", "ey. Jhb. Gci. Oi. JFUz. I 1 Ni. J 9"], "payload": "ey. Jpc 3 Mi. Oi. Jqb 2 Ui. LA 0 KICJle. HAi. Oj. Ez. MDA 4 MTkz. ODAs. DQog. Imh 0 d. HA 6 Ly 9 le. GFtc. Gxl. Lm. Nvb. S 9 pc 19 yb 290 Ijp 0 cn. Vlf. Q", "signatures": [ "c. C 4 hi. UPoj 9 Eetdgtv 3 h. F 80 EGrhu. B__dz. ERat 0 XF 9 g 2 Vt. Qgr 9 PJbu 3 XOi. Zj 5 RZ mh 7 AAu. HIm 4 Bh-0 Qc_l. F 5 YKt_O 8 W 2 Fp 5 juj. Gbds 9 u. Jdb. F 9 CUAr 7 t 1 dn. Zc. Ac. Qjb. KBY NX 4 BAyn. RFdiu. B--f_n. ZLgrnby. Ty. Wz. O 75 v. RK 5 h 6 x. BAr. LIARNPvk. Sjt. QBMHlb 1 L 07 Q e 7 K 0 Gar. ZRm. B_e. SN 9383 Lc. OLn 6_d. O--xi 12 jz. Dwus. C-e. Ok. HWEsqt. FZESc 6 Bf. I 7 no. O Pqvh. J 1 ph. Cnv. Wh 6 Ie. YI 2 w 9 QOYEUip. UTI 8 np 6 Lbg. GY 9 Fs 98 rq. Vt 5 AXLIh. Wk. Wywl. Vmt Vr. Bp 0 igc. N_Ioyp. Gl. UPQGe 77 Rw", "Dt. Eh. U 3 ljb. Eg 8 L 38 VWAf. UAq. Oy. KAM 6 -Xx-F 4 Gawxaepm. XFCgf. Tj. Dxw 5 djx. La 8 IS l. SApm. WQxf. KTUJq. PP 3 -Kg 6 NU 1 Q"] }

Headers from Example JWE-JS {"alg": "RSA 1_5", "enc": "A 128 CBC", "int": "HS 256",

Headers from Example JWE-JS {"alg": "RSA 1_5", "enc": "A 128 CBC", "int": "HS 256", "iv": "Ax. Y 8 DCt. Da. Glsb. Gljb 3 Ro. ZQ"} {"alg": "RSA-OAEP", "enc": "A 128 CBC", "int": "HS 256", "iv": "Ax. Y 8 DCt. Da. Glsb. Gljb 3 Ro. ZQ"}

Example JWE-JS {"headers": [ "ey. Jhb. Gci. Oi. JSU 0 Ex. Xz. Ui. LCJlbm.

Example JWE-JS {"headers": [ "ey. Jhb. Gci. Oi. JSU 0 Ex. Xz. Ui. LCJlbm. Mi. Oi. JBMTI 4 Q 0 JDIiwia. W 50 Ijoi. SFMy. NTYi. LCJp di. I 6 Ik. F 4 WTh. EQ 3 REYUdsc 2 JHb. Gpi. M 1 Jv. Wl. Eif. Q", "ey. Jhb. Gci. Oi. JSU 0 Et. T 0 FFUCIs. Im. Vu. Yy. I 6 Ik. Ex. Mjh. DQk. Mi. LCJpbn. Qi. Oi. JIUz. I 1 Ni. Is Iml 2 Ijoi. QXh. ZOERDd. ERh. R 2 xz. Ykdsam. Iz. Um 9 a. USJ 9"], "encrypted_keys": [ "IPI_z 172 h. SWHMFg. ED 8 EG 9 DM 6 h. IXU_6 Na. O 1 DIm. Cn 0 v. Neuo. Bq 847 Sl 6 qw_GHSYHJUQ Xt. XJq 7 S_Cx. WVr. I 82 wjr. Oya. Qca 5 t. LZRZc 45 Bf. KHeq. By. Th. KI 261 Qev. EK 56 Sy. Aww. Xf. K KZj. Svk. Q 5 dw. TFSgfy 76 r. MSUv. Vyn. HYEhd. Cat. BF 9 HWTAi. XPx 7 hg. Zix. G 1 Fe. P_QCm. Oylz 2 VCl. Vy. YFCbj. KREOw. BFf-pu. NYf. O 75 S 3 LNl. JUt. Ts. GGQL 2 o. TKp. Ms. Ei. UTdefkje 91 VX 9 h 8 g 7908 l. Fsggbj. V 7 Nic. Jsufu. Xxn. Tj 1 fc. WIr. RDe. NIOmaki. PEODi 0 g. TSz 0 ou-W-LWK -3 T 1 z. Yl. OIi. IKBjs. Ex. QKZ-w", "gyh. QHQYGy. PZQP 21 Oxd 6 Td. Jjrm. Nkals 3 Jin 2631_ea. W-8 t. PEZxje. NA 1 l. JD 7 gi 2 t. AQ X 9 ERZkb. D 8 -9 -8 Gq 9 Hkp. JIh. INX 4 Tkqm. Cynm. T 8 k. Qfjiv 5 t 8 Ku. TI_Ojh. D-I 0 Cfv. Ws 3 T 7 yf 2 W 6_v. Qcs 1 ezsap. KPGj 92 i 6 Z 1 xp. Wgt. Du. K 5 Yw. U 3 PLAEf. Ne. Ag. BK 0 f. M 9 x 9 Dk. Iuh. BN 7 O 9 LWRt. P 6 Fn. YKaygc 5 -tz. R_O 9 n. TJ 0 u 4 Ims. BPGa. HHQEfvz. MBt. Qg. APQCdk. Di. ITx. Sd. J Odv. BQVmg 7 u. GKOyb. F 42 R-gz. P 63 lx. Aqi. Ymp 6 DVPl. PYyd. IEB 2 l. CZx. GUJIsm. EM 0 qw. Xt 1 GEmj_a. YGh. CUrk. PSidv. E 6 Ag"], "ciphertext": "_Z_djl. Io. C 4 MDSCKire. WS 2 beti 4 Q 6 i. SG 2 Uj. Fuj. Qvdz-_PQd. Uc. FNk. O uleg. D 6 Bgjgd. FLje. B 4 HHOO 7 UHv. P 8 PEDu 0 a 0 s. A 2 a_-CI 0 w 2 YQQ 2 QQe 35 M", "integrity_values": [ "c 41 k 4 T 4 e. Ag. CCt 63 m 8 ZNmi. Oin. Mci. FFyp. OFpvid 7 i 6 D 0 k", "NX 62 w-GLPh. XVJu. Qx. Xnb. Wr. BKLkt 9 j 14 IULc. Md. J 9 kze. F 0"] }

Pros and Cons • Pros: – Compact serialization and JSON serialization use identical crypto

Pros and Cons • Pros: – Compact serialization and JSON serialization use identical crypto operations and values – Simple to support both representations • Cons: – Header values for block encryption duplicated for each recipient

Observation on JWE Open Issue • If we move the IV out of the

Observation on JWE Open Issue • If we move the IV out of the header and make it a separate element, the single IV value can be shared by all recipients – (as well as save space for both serializations)

Request for WG Draft Status • Request WG decision to adopt JSON Serialization specs

Request for WG Draft Status • Request WG decision to adopt JSON Serialization specs as WG documents – To meet needs of use cases requiring multiple signatures/recipients • Documents: – JSON Web Signature JSON Serialization (JWS-JS) • draft-jones-jose-jws-json-serialization – JSON Web Encryption JSON Serialization (JWE-JS) • draft-jones-jose-jwe-json-serialization