Skip to main content

On Password-Authenticated Key Exchange Security Modeling

  • Conference paper
Technology and Practice of Passwords (PASSWORDS 2015)

Part of the book series: Lecture Notes in Computer Science ((LNSC,volume 9551))

Included in the following conference series:

  • 1079 Accesses

Abstract

Deciding which security model is the right one for Authenticated Key Exchange (AKE) is well-known to be a difficult problem. In this paper, we examine definitions of security for Password-AKE (PAKE) in the style proposed by Bellare et al. [5] at Eurocrypt 2000. Indeed, there does not seem to be any consensus, even when narrowing the study down to this particular authentication method and model style, on how to precisely define fundamental notions such as accepting, terminating, and partnering. The aim of this paper is to begin addressing this problem. We first show how definitions vary from paper to paper. We then propose and thoroughly motivate a definition of our own, and use the opportunity to correct a minor flaw in a more recent and more PAKE-appropriate model proposed by Abdalla et al. [3] at Public Key Cryptography 2005. Finally, we argue that the uniqueness of partners holding with overwhelming probability ought to be an explicitly required and proven property for AKE in general, but even more so in the password case, where the optimal security bound one aims to achieve is no longer a negligible value. To drive this last point, we exhibit a protocol that is provably secure following the Abdalla et al. definition, and at the same time fails to satisfy this property.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 34.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 44.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    To simplify our exposition, in this preliminary study we make no attempt at dealing with the corruption query - used to model the important property of forward secrecy - in this paper.

  2. 2.

    Of course, these are not the only beacons in the field; they are just the most relevant to our work.

  3. 3.

    A server aids two clients that wish to exchange a key between themselves; each client shares a private password with the server.

  4. 4.

    [19] contains a notion of semi-partnering in order to have a definition for instances that have had a correct exchange even if the last message has not been delivered. We adopt this further in this work.

  5. 5.

    We stuck to the idea in [5] that accepting may happen before terminating, even though the term “accepting” seems better suited to designate “successful termination”. We did this because the original BPR model is still the most used, so it is probable that this is how the terminology is commonly understood.

  6. 6.

    This may even be desirable for efficiency reasons.

  7. 7.

    Similar reasoning shows that the FtG model suffers from the phenomenon as well, basically because if \({\mathcal {U}}^i\) is tested, the freshness condition prohibits testing of the two other instances. Thus, our observation is valid “beyond RoR”.

  8. 8.

    The fact that signatures are strongly secure is used to make the security proof simpler, but is not strictly necessary.

  9. 9.

    One may think of a setup of this sort as being implemented e.g. for a large group of employees in a company.

References

  1. Abdalla, M., Benhamouda, F., MacKenzie, P.: Security of the J-PAKE Password-Authenticated Key Exchange Protocol. In: 2015 IEEE Symposium on Security and Privacy (2015)

    Google Scholar 

  2. Abdalla, M., Benhamouda, F., Pointcheval, D.: Public-key encryption indistinguishable under plaintext-checkable attacks. In: Katz, J. (ed.) PKC 2015. LNCS, vol. 9020, pp. 332–352. Springer, Heidelberg (2015). http://dx.doi.org/10.1007/978-3-662-46447-2_15

    Google Scholar 

  3. Abdalla, M., Fouque, P.-A., Pointcheval, D.: Password-based authenticated key exchange in the three-party setting. In: Vaudenay, S. (ed.) PKC 2005. LNCS, vol. 3386, pp. 65–84. Springer, Heidelberg (2005). http://dx.doi.org/10.1007/978-3-540-30580-4_6

    Chapter  Google Scholar 

  4. An, J.H., Dodis, Y., Rabin, T.: On the security of joint signature and encryption. In: Knudsen, L.R. (ed.) EUROCRYPT 2002. LNCS, vol. 2332, p. 83. Springer, Heidelberg (2002). http://dl.acm.org/citation.cfm?id=647087.715701

    Chapter  Google Scholar 

  5. Bellare, M., Pointcheval, D., Rogaway, P.: Authenticated key exchange secure against dictionary attacks. In: Preneel, B. (ed.) EUROCRYPT 2000. LNCS, vol. 1807, p. 139. Springer, Heidelberg (2000)

    Chapter  Google Scholar 

  6. Bellare, M., Rogaway, P.: Entity authentication and key distribution. In: Stinson, D.R. (ed.) CRYPTO 1993. LNCS, vol. 773, pp. 232–249. Springer, Heidelberg (1994)

    Chapter  Google Scholar 

  7. Bellovin, S.M., Merritt, M.: Encrypted key exchange: password-based protocols secure against dictionary attacks. In: 1992 IEEE Computer Society Symposium on Research in Security and Privacy, May 4–6, pp. 72–84 (1992)

    Google Scholar 

  8. Benhamouda, F., Blazy, O., Chevalier, C., Pointcheval, D., Vergnaud, D.: New techniques for SPHFs and efficient one-round PAKE protocols. In: Canetti, R., Garay, J.A. (eds.) CRYPTO 2013, Part I. LNCS, vol. 8042, pp. 449–475. Springer, Heidelberg (2013). http://dx.doi.org/10.1007/978-3-642-40041-4_25

    Chapter  Google Scholar 

  9. Boyko, V., MacKenzie, P.D., Patel, S.: Provably secure password-authenticated key exchange using Diffie-Hellman. In: Preneel, B. (ed.) EUROCRYPT 2000. LNCS, vol. 1807, p. 156. Springer, Heidelberg (2000)

    Chapter  Google Scholar 

  10. Bresson, E., Chevassut, O., Pointcheval, D.: Security proofs for an efficient password-based key exchange. In: Jajodia, S., Atluri, V., Jaeger, T. (eds.) ACM Conference on Computer and Communications Security, pp. 241–250. ACM (2003)

    Google Scholar 

  11. Bresson, E., Chevassut, O., Pointcheval, D.: New security results on encrypted key exchange. In: Bao, F., Deng, R., Zhou, J. (eds.) PKC 2004. LNCS, vol. 2947, pp. 145–158. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  12. Canetti, R.: Universally composable security: a new paradigm for cryptographic protocols. In: Proceedings of the 42Nd IEEE Symposium on Foundations of Computer Science, FOCS 2001, p. 136 (2001). http://dl.acm.org/citation.cfm?id=874063.875553

  13. Canetti, R., Halevi, S., Katz, J., Lindell, Y., MacKenzie, P.: Universally composable password-based key exchange. In: Cramer, R. (ed.) EUROCRYPT 2005. LNCS, vol. 3494, pp. 404–421. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  14. Choo, K.-K.R., Boyd, C., Hitchcock, Y.: Examining indistinguishability-based proof models for key establishment protocols. In: Roy, B. (ed.) ASIACRYPT 2005. LNCS, vol. 3788, pp. 585–604. Springer, Heidelberg (2005). http://dx.doi.org/10.1007/11593447_32

    Chapter  Google Scholar 

  15. Cremers, C.: Examining indistinguishability-based security models for key exchange protocols: The case of CK, CK-HMQV, and eCK. In: Proceedings of the 6th ACM Symposium on Information, Computer and Communications Security, ASIACCS 2011, NY, USA, pp. 80–91 (2011). http://doi.acm.org/10.1145/1966913.1966925

  16. Diffie, W., Hellman, M.: New directions in cryptography. IEEE Trans. Inf. Theor. 22(6), 644–654 (2006). http://dx.doi.org/10.1109/TIT.1976.1055638

    Article  MathSciNet  MATH  Google Scholar 

  17. Gennaro, R., Lindell, Y.: A framework for password-based authenticated key exchange. In: Biham, E. (ed.) EUROCRYPT 2003. LNCS, vol. 2656, pp. 524–543. Springer, Heidelberg (2003). http://dx.doi.org/10.1007/3-540-39200-9_33

    Chapter  Google Scholar 

  18. Goldreich, O., Lindell, Y.: Session-key generation using human passwords only. In: Kilian, J. (ed.) CRYPTO 2001. LNCS, vol. 2139, p. 408. Springer, Heidelberg (2001). http://dx.doi.org/10.1007/3-540-44647-8_24

    Chapter  Google Scholar 

  19. Groce, A., Katz, J.: A new framework for efficient password-based authenticated key exchange. In: Proceedings of the 17th ACM Conference on Computer and Communications Security, CCS 2010, NY, USA, pp. 516–525 (2010). http://doi.acm.org/10.1145/1866307.1866365

  20. Halevi, S., Krawczyk, H.: Public-key cryptography and password protocols. ACM Trans. Inf. Syst. Secur. 2(3), 230–268 (1999). http://doi.acm.org/10.1145/322510.322514

    Article  Google Scholar 

  21. Jablon, D.P.: Strong password-only authenticated key exchange. ACM SIGCOMM Comput. Commun. Rev. 26(5), 5–26 (1996)

    Article  Google Scholar 

  22. Jiang, S., Gong, G.: Password based key exchange with mutual authentication. In: Handschuh, H., Hasan, M.A. (eds.) SAC 2004. LNCS, vol. 3357, pp. 267–279. Springer, Heidelberg (2004). http://dx.doi.org/10.1007/978-3-540-30564-4_19

    Chapter  Google Scholar 

  23. Katz, J., Ostrovsky, R., Yung, M.: Efficient password-authenticated key exchange using human-memorable passwords. In: Pfitzmann, B. (ed.) EUROCRYPT 2001. LNCS, vol. 2045, p. 475. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  24. Katz, J., Ostrovsky, R., Yung, M.: Efficient and secure authenticated key exchange using weak passwords. J. ACM 57(1), 78–116 (2009)

    Article  MathSciNet  MATH  Google Scholar 

  25. Katz, J., Vaikuntanathan, V.: Smooth projective hashing and password-based authenticated key exchange from lattices. In: Matsui, M. (ed.) ASIACRYPT 2009. LNCS, vol. 5912, pp. 636–652. Springer, Heidelberg (2009). http://dx.doi.org/10.1007/978-3-642-10366-7_37

    Chapter  Google Scholar 

  26. Katz, J., Vaikuntanathan, V.: Round-optimal password-based authenticated key exchange. In: Ishai, Y. (ed.) TCC 2011. LNCS, vol. 6597, pp. 293–310. Springer, Heidelberg (2011). http://dx.doi.org/10.1007/ 978-3-642-19571-6_18

    Chapter  Google Scholar 

  27. Kiefer, F., Manulis, M.: Oblivious PAKE: efficient handling of password trials. Cryptology ePrint Archive, report 2013/127 (2013). http://eprint.iacr.org/

  28. Kwon, T.: Authentication and key agreement via memorable password. In: ISOC Network and Distributed System Security Symposium (2001)

    Google Scholar 

  29. Kwon, T.: Practical authenticated key agreement using passwords. In: Zhang, K., Zheng, Y. (eds.) ISC 2004. LNCS, vol. 3225, pp. 1–12. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  30. Lucks, S.: Open key exchange: how to defeat dictionary attacks without encrypting public keys. In: Christianson, B., Crispo, B., Lomas, M., Roe, M. (eds.) Security Protocols 1997. LNCS, vol. 1361, pp. 79–90. Springer, Heidelberg (1998). http://dl.acm.org/citation.cfm?id=647215.720526

    Chapter  Google Scholar 

  31. MacKenzie, P.: The PAK Suite: protocols for password-authenticated key exchange. DIMACS Technical report 2002–46 , pp. 7 (2002)

    Google Scholar 

  32. MacKenzie, P., Patel, S., Swaminathan, R.: Password-authenticated key exchange based on RSA. Int. J. Inf. Secur. 9(6), 387–410 (2010). http://dx.doi.org/10.1007/s10207-010-0120-3

    Article  MATH  Google Scholar 

  33. Pointcheval, D.: Password-based authenticated key exchange. In: Fischlin, M., Buchmann, J., Manulis, M. (eds.) PKC 2012. LNCS, vol. 7293, pp. 390–397. Springer, Heidelberg (2012)

    Chapter  Google Scholar 

  34. Shoup, V.: On Formal Models for Secure Key Exchange. Cryptology ePrint Archive, Report 1999/012 (1999). http://eprint.iacr.org/1999/012

Download references

Acknowledgments

We would like to thank the reviewers for their comments. The author is supported by the Fonds National de la Recherche, Luxembourg, via the CORE project AToMS and the INTER project SEQUOIA.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Jean Lancrenon .

Editor information

Editors and Affiliations

A BPR-style Models Revisited

A BPR-style Models Revisited

This appendix is just a formal recap of our complete list of requirements.

Principals and Instances. An interactive game, indexed by the security parameter \(\lambda \in \mathbb {N}\), is played between a challenger \({\mathcal {CH}}\) and an adversary \({\mathcal {A}}\). All of the algorithms considered are Probabilistic, Polynomial-Time (PPT) in \(\lambda \).

At the beginning of the game, there is a fixed set of principals (or users), partitioned into non-empty sets of clients \({\mathcal {C}}\) and servers \({\mathcal {S}}\). Each client \({\mathcal {C}}\) is assigned a password \(pw_{\mathcal {C}}\) drawn uniformly at random from some finite set \(\mathsf {PW}\) of bitstrings. Each server \({\mathcal {S}}\) holds the full set of all clients’ passwords \(\{pw_{\mathcal {C}}\}_{\mathcal {C}}\).

Adversary \({\mathcal {A}}\) has oracle access - via the queries described below - to any number of instances \({\mathcal {U}}^i\) (\(i\in \mathbb {N}\)) of any principal \({\mathcal {U}}\). An instance of \({\mathcal {U}}^i\) represents an attempt \({\mathcal {U}}\) makes at running the PAKE protocol over the network fully controlled by \({\mathcal {A}}\). An instance’s objective is to compute a Session Key (or SK) it believes it shares with an instance \({\mathcal {V}}^j\) of some other principal \({\mathcal {V}}\). This should happen only if \({\mathcal {U}}^i\) thinks it is partnered (see below) to \({\mathcal {V}}^j\).

At any point in time, an instance \({\mathcal {U}}^i\) may terminate (see below). By this time, \({\mathcal {U}}^i\) should have computed (1) a Partner Identity (or PID) \(pid_{\mathcal {U}}^i\), a (2) Session Identity (SID) \(sid_{\mathcal {U}}^i\), and (3) a SK \(sk_{\mathcal {U}}^i\). The PID is a bitstring indicating the identity of the instance with which \({\mathcal {U}}^i\) believes it has communicated with. The SID is a bitstring serving as an identifier for both the key exchange run that just occurred, and the session in which the computed SK will subsequently serve. Often the SID is always in practice set to being the ordered concatenation of all exchanged protocol messages, except possibly the last message. At any point in time an instance may also abort (see below), with no SK. Once an instance has halted (see below) it can no longer be reused.

Status of Instances and Partnering.

Halting. An instance halts if it stops sending and receiving messages, and ceases to compute anything. Halting can be “good” (i.e. with a SK) or “bad” (i.e. without a SK).

Accepting. An instance \({\mathcal {U}}^i\) accepts if and only if \(sid_{\mathcal {U}}^i\) is set to a non-\(\varepsilon \) value. Accepting means that \({\mathcal {U}}^i\) believes it is holding enough information to compute a SK.

Terminating. An instance \({\mathcal {U}}^i\) terminates if and only if \(sk_{\mathcal {U}}^i\) is set to a non-\(\varepsilon \) value. If an instance terminates, it halts. Terminating means \({\mathcal {U}}\) believes it holds a good SK, and is now willing to use it in higher-level applications. \({\mathcal {U}}^i\) will no longer send nor receive PAKE protocol messages. If an instance terminates, it accepts, or has previously accepted. In both cases, \(sid_{\mathcal {U}}^i\) is set to a non-\(\varepsilon \) value and remains so.

Aborting. An instance \({\mathcal {U}}^i\) aborts if it halts without having terminated.

Semi-partnering. \({\mathcal {U}}^i\) and \({\mathcal {V}}^j\) are semi-partnered if (1) one is a client and one is a server, (2) \(pid_{\mathcal {U}}^i={\mathcal {V}}\) and \(pid_{\mathcal {V}}^j={\mathcal {U}}\), (3) \(sid_{\mathcal {U}}^i\ne \varepsilon \), \(sid_{\mathcal {V}}^j\ne \varepsilon \), and \(sid_{\mathcal {U}}^i=sid_{\mathcal {V}}^j\).

Partnering. \({\mathcal {U}}^i\) and \({\mathcal {V}}^j\) are partnered if (1) they are semi-partnered and (2) \(sk_{\mathcal {U}}^i\ne \varepsilon \), \(sk_{\mathcal {V}}^j\ne \varepsilon \), and \(sk_{\mathcal {U}}^i=sk_{\mathcal {V}}^j\). So, if an instance is semi-partnered to another, it has accepted, and holds a SID. If it is partnered to another, it has terminated and holds a SK.

Partnering Graph. A partnering graph is a graph with instances for nodes. Two nodes have an edge if and only if the corresponding instances are partners.

Correctness. If \({\mathcal {C}}^i\) with \(pid_{\mathcal {C}}^i={\mathcal {S}}\) and \({\mathcal {S}}^j\) with \(pid_{\mathcal {S}}^j={\mathcal {C}}\) run the protocol fully and correctly, \({\mathcal {C}}^i\) and \({\mathcal {S}}^j\) are partnered.

Find-then-Guess.

  • \(\mathsf {send}({\mathcal {U}},i,m)\): \({\mathcal {A}}\) has message m delivered to \({\mathcal {U}}^i\). \({\mathcal {U}}^i\) processes the message according to protocol specification. To instruct an instance \({\mathcal {U}}\) to send the first protocol message to entity \({\mathcal {V}}\), \({\mathcal {A}}\) makes the query with \(M={\mathcal {V}}\). This query is used to model arbitrary message delivery to an instance. In particular, it serves to count impersonation attacks.

  • \(\mathsf {execute}({\mathcal {U}},{\mathcal {V}},i,j)\): The protocol is executed faithfully and completely between \({\mathcal {U}}^i\) and \({\mathcal {V}}^j\) and the resulting transcript is given to \({\mathcal {A}}\). \({\mathcal {A}}\) thus gets to see as many honest protocol runs as it wishes.

  • \(\mathsf {reveal}({\mathcal {U}},i)\): If \({\mathcal {U}}^i\) has not terminated or if it is part of a partnering graph in which an instance has been tested, the query returns \(\bot \). Otherwise, it returns \(sk_{\mathcal {U}}^i\) to \({\mathcal {A}}\).

  • \(\mathsf {test}({\mathcal {U}},i)\): \(\mathsf {test}({\mathcal {U}},i)\): If \({\mathcal {U}}^i\) has not terminated or is not fresh, this returns \(\bot \). Otherwise, \({\mathcal {CH}}\) flips a coin b outside of \({\mathcal {A}}\)’s view. If \(b=0\), a random string R is drawn from the session key space and \(tk_{\mathcal {U}}^i\leftarrow R\). Otherwise, \(tk_{\mathcal {U}}^i\leftarrow sk_{\mathcal {U}}^i\). \(tk_{\mathcal {U}}^i\) is then returned to \({\mathcal {A}}\). The \(\mathsf {test}\) query may only be used once in the game.

Eventually, \({\mathcal {A}}\) halts the overall game, at which point it outputs a bit \(b'\). If the game was halted without \({\mathcal {A}}\) making any \(\mathsf {test}\) query, then \({\mathcal {CH}}\) privately flips a coin b.

Freshness: An instance \({\mathcal {U}}^i\) is said to be fresh if it is in a partnering graph in which no instance has been the target of a reveal query.

Real-or-Random. The \(\mathsf {send}\) and \(\mathsf {execute}\) queries are identical to those in the FtG model. However, the \(\mathsf {reveal}\) query is no longer available. Instead, it is replaced by as many \(\mathsf {test}\) queries as \({\mathcal {A}}\) wants. How they are answered depends on the value of a bit b flipped by \({\mathcal {CH}}\) outside of \({\mathcal {A}}\)’s view at the beginning of the game.

  • \(\mathsf {test}({\mathcal {U}},i)\): If \({\mathcal {U}}^i\) has not terminated, \(\bot \) is returned. Otherwise, suppose first that \(b=0\). If \({\mathcal {U}}^i\) is not partnered to any instance, or no instance in the partnering graph it is a part of was subjected to a \(\mathsf {test}\) query, \({\mathcal {CH}}\) selects a random R from the session key space and sets \(tk_{\mathcal {U}}^i\leftarrow R\). If \({\mathcal {U}}^i\) is within a partnering graph where some instance \({\mathcal {V}}^j\) that has been tested, \({\mathcal {CH}}\) sets \(tk_{\mathcal {U}}^i\leftarrow tk_{\mathcal {V}}^j\). Suppose now that \(b=1\). In this case, \({\mathcal {CH}}\) sets \(tk_{\mathcal {U}}^i\leftarrow sk_{\mathcal {U}}^i\). Then, \({\mathcal {A}}\) receives \(tk_{\mathcal {U}}^i\).

The slight complication arising in case \(b=0\) is that even if the SKs assigned are random, they must at least remain consistent across instances that should hold the same keys. As in FtG, at any point in time \({\mathcal {A}}\) may halt the game and output a bit \(b'\).

Technically Defining Security. In both FtG and RoR, one usually considers three security properties: SK security, Client-to-Server (C2S) authentication, and Server-to-Client (S2C) authentication. We explicitly add to this uniqueness of partners by requiring that SIDs are shared by at most two instances (SID).

SK security: Let \(\mathsf {S}\) be the event that “\(b'=b\) at the end of the game”. \({\mathcal {A}}\)’s natural advantage is defined to be \(\mathsf {Adv}^s({\mathcal {A}}):=2\mathsf {Pr}[\mathsf {S}]-1\). A PAKE protocol is said to have semantically secure SKs if there exists a non-zero constant \(C\in \mathbb {N}\) such that for any PPT \({\mathcal {A}}\), there exists a negligible (in \(\lambda \)) function \(\mathsf {negl}\) with the property that \(\mathsf {Adv}^s({\mathcal {A}})\le \frac{Cn_{se}}{|\mathsf {PW}|}+\mathsf {negl}(\lambda )\) where \(n_{se}\) is an upper bound on the number of \(\mathsf {send}\) queries the adversary makes.

Authentication: Let \(\mathsf {C2S}\) be the event that “there exists some server instance \({\mathcal {S}}^j\) that is ready to use a SK, but has not had a correct exchange with a client instance”. Here we simply set \(\mathsf {Adv}^{c2s}({\mathcal {A}}):=\mathsf {Pr}[\mathsf {C2S}]\), and we say that a PAKE achieves client-to-server authentication if there exists a non-zero C such that for any PPT \({\mathcal {A}}\), there exists a negligible function \(\mathsf {negl}\) with the property that \(\mathsf {Adv}^{c2s}({\mathcal {A}})\le \frac{Cn_{se}}{|\mathsf {PW}|}+\mathsf {negl}(\lambda )\). Server-to-client authentication is defined similarly.

Partner Uniqueness: Let \(\mathsf {SID}\) be the event that “there exists more than two instances that have the same non-\(\varepsilon \) SID”. Let \(\mathsf {Adv}^{sid}({\mathcal {A}}):=\mathsf {Pr}[\mathsf {SID}]\). We say that PAKE achieves unique partnering if for any PPT \({\mathcal {A}}\) the function \(\mathsf {Adv}^{sid}\) is negligible.

Rights and permissions

Reprints and permissions

Copyright information

© 2016 Springer International Publishing Switzerland

About this paper

Cite this paper

Lancrenon, J. (2016). On Password-Authenticated Key Exchange Security Modeling. In: Stajano, F., Mjølsnes, S.F., Jenkinson, G., Thorsheim, P. (eds) Technology and Practice of Passwords. PASSWORDS 2015. Lecture Notes in Computer Science(), vol 9551. Springer, Cham. https://doi.org/10.1007/978-3-319-29938-9_8

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-29938-9_8

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-29937-2

  • Online ISBN: 978-3-319-29938-9

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics