Non-‑browser ¡TLS ¡Woes ¡ Dan ¡Boneh ¡ ¡ Joint ¡work ¡with ¡M. ¡Georgiev, ¡S. ¡Iyengar, ¡ ¡ S. ¡Jana, ¡R. ¡Anubhai, ¡and ¡V. ¡Shma?kov ¡ Proc. ¡ACM ¡CCS ¡2012 ¡
30 ¡second ¡summary ¡ Lots ¡of ¡non-‑browser ¡systems ¡using ¡TLS: ¡ – Payment ¡gateway ¡SDK, ¡ ¡Mobile ¡ads, ¡ ¡ ¡ Web ¡services ¡middleware, ¡ ¡cloud ¡client ¡API, ¡… ¡ Developers ¡use ¡TLS ¡through ¡a ¡higher ¡level ¡library: ¡ ¡ ¡ ¡e.g. ¡ ¡HRpClient, ¡cURL, ¡Weberknecht, ¡PHP, ¡Python ¡ • Problem ¡1 : ¡ ¡ ¡complex ¡and ¡confusing ¡interfaces ¡to ¡TLS ¡layer ¡ – result: ¡ ¡ ¡ lots ¡ of ¡improper ¡server-‑side ¡cert ¡valida?on ¡ ¡ ¡ ⇒ ¡man ¡in ¡the ¡middle ¡vulnerabili?es ¡ • Problem ¡2 : ¡ ¡ ¡liRle ¡tes?ng ¡of ¡ ¡server-‑side ¡cert. ¡valida?on ¡ ¡ ¡Should ¡be ¡part ¡of ¡QA ¡tes?ng ¡… ¡ ¡ ¡
Case ¡studies: ¡ ¡(1) ¡PHP ¡/ ¡cURL ¡binding ¡ We ¡found ¡four ¡SDKs ¡ PHP ¡TLS ¡binding: ¡ using ¡it ¡for ¡SSL ¡ • fsockopen ( ¡“ssl://…”) ¡ ¡: ¡ ¡ ¡ ¡no ¡server-‑side ¡cert. ¡valida?on ¡ • cURL ¡binding : ¡ ¡ ¡ ¡ ¡cert. ¡verifica?on ¡controlled ¡by ¡ ¡ ¡ ¡ ¡ ¡ boolean ¡ ¡ ¡CURLOPT_SSL_VERIFYPEER ¡ ¡ ¡ ¡ ¡int ¡ ¡ ¡CURLOPT_SSL_VERIFYHOST ¡ ¡ ¡0: ¡ ¡no ¡server-‑side ¡cert ¡valida?on ¡ ¡ ¡1: ¡ ¡check ¡the ¡existence ¡of ¡a ¡common ¡name ¡in ¡server ¡cert. ¡ ¡ ¡2: ¡ ¡check ¡common ¡name ¡in ¡cert. ¡matches ¡provided ¡hostname ¡ (default ¡= ¡2) ¡ ¡ Very ¡common ¡mistake: ¡ ¡ CURLOPT_SSL_VERIFYPEER ¡ = ¡true ¡ ¡ CURLOPT_SSL_VERIFYHOST ¡ = ¡true ¡
Real ¡World ¡Crypto ¡Workshop, ¡ ¡Jan. ¡2013. ¡ Instead: ¡ Recent ¡Developments ¡in ¡ Broadcast ¡EncrypTon ¡ Dan ¡Boneh ¡ Stanford ¡University ¡
Background: ¡ ¡ ¡bilinear ¡maps ¡ G ¡, ¡G 2 ¡ : ¡ ¡ ¡finite ¡cyclic ¡groups ¡of ¡prime ¡order ¡q ¡ An ¡admissible ¡bilinear ¡map ¡ ¡ ¡ ¡e: ¡G × G ¡ → ¡G 2 ¡ ¡ ¡ ¡ ¡is: ¡ – Bilinear: ¡ ¡ ¡ ¡e(g a , ¡g b ) ¡= ¡e(g,g) ab ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ∀ a,b ∈ Z, ¡ ¡ ¡g ∈ G ¡ – Non-‑degenerate: ¡ ¡ ¡ ¡ ¡g ¡generates ¡G 1 ¡ ¡ ¡ ¡ ¡ ⇒ ¡ ¡ ¡ ¡e(g,g) ¡ ¡generates ¡G 2 ¡ ¡ – Efficiently ¡computable ¡ ¡ Several ¡examples ¡where ¡Dlog ¡in ¡G ¡believed ¡to ¡be ¡hard ¡
Many ¡ApplicaTons: ¡ ¡ ¡enc., ¡sigs., ¡NIZK, ¡… ¡ Simplest ¡example: ¡ ¡ ¡ ¡ ¡BLS ¡signatures ¡ ¡ ¡ ¡ [B-‑Lynn-‑Shacham’01] ¡ ¡KeyGen: ¡ ¡ ¡ ¡sk ¡= ¡rand. ¡x ¡ ¡ ¡in ¡ ¡Z q ¡ ¡ ¡ ¡, ¡ ¡ ¡ ¡pk ¡= ¡g x ¡ ¡ ∈ ¡G ¡ e ( g, ¡H(m) x ) ¡ = ¡ ¡ ¡e ( g x , ¡H(m) ) ¡ ¡Sign(sk, ¡m) ¡ ⟶ ¡ ¡H(m) x ¡ ¡ ∈ ¡G ¡ ¡ verify(pk, ¡m, ¡sig) ¡ ⟶ ¡ ¡accept ¡iff ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡e ( g, ¡ ¡ ¡ ¡sig ¡ ¡ ¡ ) ¡ ¡ ≟ ¡ ¡ ¡e ( pk, ¡H(m) ) ¡ ¡ Thm : ¡ ¡Existen?ally ¡unforgeable ¡under ¡CDH ¡in ¡the ¡RO ¡model ¡ ¡ Beyond ¡bilinear ¡maps : ¡ ¡ ¡ ¡k-‑linear ¡maps ¡ ¡ ¡ ¡ [BS’03] ¡ ¡k-‑linear ¡map ¡ ¡ ¡ ¡ ¡ e: ¡G×G× ⋯ ×G ¡ ⟶ ¡G k ¡ ¡ ¡ ¡ ¡ non-‑degen. ¡& ¡efficient ¡ hard ¡Dlog ¡in ¡G ¡ k ¡ ¡Even ¡more ¡applica?ons. ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ Can ¡they ¡be ¡constructed? ¡
k-‑linear ¡maps: ¡ ¡a ¡recent ¡breakthrough ¡ S. ¡Garg, ¡C. ¡Gentry, ¡S. ¡Halevi ¡ ProperTes : ¡ ¡ ¡ ¡(informal) ¡ • The ¡map ¡ ¡ ¡x ¡ ⟶ ¡g x ¡ ¡ ¡is ¡randomized ¡ • Representa?on ¡of ¡ ¡ ¡g ¡ ∈ ¡G ¡ ¡ ¡is ¡ ¡ ¡O(k) ¡ ¡bits ¡ • BeRer ¡than ¡k-‑linear ¡map: ¡ ¡ ¡ ¡ ¡ ¡ gradaTon ¡ For ¡our ¡purposes: ¡ e 1 : ¡G×G ¡ ¡ ⟶ ¡G 2 ¡ ¡e k : ¡G× ⋯ ×G ¡ ¡ ⟶ ¡G k ¡ e 2 : ¡G×G 2 ¡ ⟶ ¡G 3 ¡ ¡ ¡ ¡ ¡ ⋮ ¡ ¡e: ¡ ¡ ¡G k ¡× ¡G k ¡ ¡ ⟶ ¡G 2k ¡ e k : ¡G×G k ¡ ⟶ ¡G k+1 ¡ ¡ ¡
Broadcast ¡EncrypTon ¡ ¡ [Fiat-‑Naor ¡1993] ¡ Encrypt to arbitrary subsets S: d 1 c ⟵ E(pk,S,m) d 2 S ⊆ {1,…,n} d 3 Security goal (informal): Full collusion resistance: secure even if all users in S c collude
Broadcast ¡EncrypTon ¡ Public-‑key ¡BE ¡system: ¡ – Setup (n) ¡ ¡ ⟶ ¡ ¡ ¡ pub. ¡key ¡ ¡ pk, ¡ ¡ ¡ ¡ master ¡sec. ¡key ¡ ¡ ¡ msk ¡ – KeyGen ( ¡msk, ¡j ) ¡ ⟶ ¡ ¡ ¡ d j ¡ ¡ ¡ ¡ ¡ ¡(private ¡key ¡for ¡user ¡j) ¡ – Enc ( ¡pk, ¡S ¡) ¡ ⟶ ¡ ¡ ¡ct ¡ ¡ ¡, ¡ ¡ ¡k ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ k ¡used ¡to ¡encrypt ¡ ¡msg ¡ ¡for ¡users ¡ ¡S ¡ ⊆ ¡{1, ¡…, ¡n} ¡ – Dec ( ¡pk, ¡d j , ¡S, ¡ct) : ¡ ¡ ¡ ¡ ¡ ¡If ¡ ¡j ¡ ∈ ¡S, ¡ ¡ ¡output ¡ ¡ k ¡ ¡ Broadcast ¡contains ¡ ¡ ¡ ¡ ( ¡[S], ¡ ¡ ¡ct ¡, ¡ ¡ ¡ E SYM (k, ¡ msg ) ¡ ¡ ¡ ) ¡
Broadcast ¡EncrypTon: ¡StaTc ¡Security Seman?c ¡security ¡when ¡users ¡collude ¡ ¡ ¡ ¡(sta?c ¡adversary) ¡ S ¡ ⊆ ¡{1, ¡…, ¡n ¡} ¡ challenger ¡ aRacker ¡ run ¡ pk, ¡ ¡ ¡ { ¡d j ¡ | ¡ ¡j ¡ ∉ ¡S ¡ } ¡ Setup(n) ¡ (ct, ¡k 1 ) ¡ ← ¡Enc( ¡pk, ¡S) ¡ k 0 ← K ¡ ¡(ct, ¡ ¡k 0 ) ¡ ¡ ¡ ¡ ¡or ¡ ¡ ¡ ¡(ct, ¡k 1 ) ¡ b ’ ∈ ¡{0,1} ¡ Def: ¡ ¡ ¡ ¡ ¡ ¡ ¡Adv[A] ¡ ¡= ¡ ¡ ¡ | ¡Pr[ ¡b’ ¡is ¡correct ¡] ¡-‑ ¡½ ¡ ¡ | ¡ Security: ¡ ¡ ¡ ∀ poly-‑?me ¡A: ¡ ¡ ¡ ¡ ¡Adv[A] ¡ ¡is ¡ ¡negligible ¡
Broadcast ¡systems ¡are ¡everywhere ¡ File ¡sharing ¡in ¡ encrypted ¡file ¡systems ¡ ¡ (e.g. ¡ ¡EFS): ¡ d Bob ¡ file ¡ ACL ¡ file ¡ encrypted ¡ file ¡system ¡ d Ned ¡ Encrypted ¡mail ¡system : ¡ recipients ¡ d Bob ¡ mail ¡ mail ¡ mail ¡ system ¡ d Ned ¡ Social ¡networks : ¡ ¡ ¡ ¡privately ¡send ¡message ¡to ¡a ¡group ¡
ConstrucTons ¡ small ¡sets ¡ revoca?on ¡ Subs. ¡Service ¡ n ¡ 0 ¡ email ¡ DVD ¡players ¡ |ct| ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡|sk| ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡|pk| ¡ The ¡trivial ¡system: ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ O(|S|) ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ O(1) ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡O(n) ¡ Revoca?on ¡schemes: ¡ ¡ ¡ ¡ ¡ ¡ ¡ O(n-‑|S|) ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ O(log ¡n) ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡O(1) ¡ ¡ [ ¡NNL,HS,GST, ¡ ¡LSW,DPP,…] ¡ ¡ ¡Can ¡we ¡have ¡ ¡O(1) ¡ ¡size ¡ciphertext ¡for ¡all ¡sets ¡ ¡ ¡S ¡?? ¡ The ¡BGW ¡system: ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ O(1) ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ O(1) ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡O(n) ¡ ¡ ¡ ¡[B-‑Gentry-‑Waters’05] ¡
The ¡BGW ¡system ¡ Setup(n): ¡ ¡ ¡ ¡g ¡ ← ¡G ¡, ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ α , ¡ ¡ msk ¡ ← ¡Z q ¡ , ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡def: ¡ ¡ ¡ ¡g k ¡= ¡g ( α k) ¡ ¡ ¡ ¡ ¡ ¡pk ¡= ¡( ¡g, ¡ ¡ ¡ ¡g 1 , ¡ ¡g 2 , ¡… ¡, ¡g n ¡, ¡ ¡ ¡ ¡ ¡ ¡g n+2 ¡, ¡…, ¡ ¡g 2n ¡, ¡ ¡ ¡ ¡ ¡v=g msk ¡) ¡ ∈ ¡G 2n+1 ¡ ¡ hole ¡ KeyGen( ¡msk, ¡j) ¡ ⟶ ¡ ¡ ¡ ¡ ¡ ¡ d j ¡= ¡(g j ) msk ¡ ¡ ¡ ¡ ∈ ¡G ¡ Enc(pk, ¡ S ): ¡ ¡ ¡ ¡ ¡ ¡ t ⟵ Z q ¡ ¡ ¡ct ¡ ¡= ¡ ¡ ( ¡ ¡g t ¡, ¡ ¡ ¡ ¡ ¡(v ¡ ⋅ ¡ Π j ∈ S g n+1-j ) t ) , key = e(g n ,g 1 ) t ¡
Recommend
More recommend