I'm reading about CL-PKC and in Al-Riyami's FullIndent, I find some notations I must be sure to understand, to well explain it in my report.

This algorithm takes paramsand $A$'s secret value $x_A$ as input and constructs $A$'s public Key $P_A$ like this :

$$P_A = \langle X_A, Y_A\rangle$$

With $X_A=x_A P$ and $Y_A = x_A P_0 = x_a s P$

Does $\langle A, B\rangle$ mean the concatenation of $A$ and $B$ ? If yes, why not using the || operator ?

  • $\begingroup$ en.wikipedia.org/wiki/Pairing_function ​ ​ $\endgroup$ – user991 May 19 '16 at 11:34
  • $\begingroup$ It probably just denotes the pair $(A,B)$, I am not sure why some people think parentheses are inadequate... $\endgroup$ – fkraiem May 19 '16 at 11:34
  • $\begingroup$ @RickyDemer I don't see the link between my question and the wikipage... $\endgroup$ – EisenHeim May 19 '16 at 11:37
  • $\begingroup$ @fkraiem : So the "pair" can be seen as 2 strings concatenated, right ? $\endgroup$ – EisenHeim May 19 '16 at 11:37
  • 1
    $\begingroup$ @RickyDemer would you mind writing up a proper answer, instead of answering through comments, so we have an authoritative answer instead of an "educated guess" one? $\endgroup$ – SEJPM May 19 '16 at 13:04

From context, it appears $\langle A,B \rangle$ simply denotes (some value unambiguously encoding) the pair of values $A$ and $B$.

In general, when discussing high-level protocols, no specific encoding for such pairs (or more complex tuples of values) is specified. It is simply assumed that we can unambiguously store and transmit such structured data somehow, but the specific manner in which this is done is considered an implementation detail.

Of course, an interoperability standard may indeed need to specify such an encoding, especially if such data structures are to be processed by cryptographic primitives that are defined as operating on (bit or byte) strings, with the expectation that independent evaluations of the primitive on the same structure should yield the same canonical output. Some standard encoding schemes include e.g. csexps or the various ASN.1 encodings, although it's also common for specific interoperability standards to specify their own custom encoding schemes.

Note that, even if $A$ and $B$ are both strings, the pair $\langle A,B \rangle$ can not generally be unambiguously encoded merely by concatenating $A$ and $B$ together, since concatenation may introduce ambiguity when the length of the strings being concatenated is not fixed. For a simple example, $10 \,||\, 1 = 101 = 1 \,||\, 01$. That said, if the length of either $A$ or $B$ (or both) is fixed, then $A \,||\, B$ can indeed be a valid unambiguous encoding of $\langle A,B \rangle$.


Triangular or angle-brackets represent inner product in linear algebra but it has nothing to do with the same notation in cryptography. Probably, that's why you're confused about it.

I think, here it's used to show that $P_A$ "is made of" $X_A$ and $Y_A$. The reason I think so is that, there's such usage of angular brackets:

$params= \langle G1, G2, e, n, P, P0, H1, H2 \rangle$

  • $\begingroup$ OK, but made of means what ? Concatenation ? bitwise XOR ? $\endgroup$ – EisenHeim May 19 '16 at 12:59
  • $\begingroup$ Think params as a vector, which is made of elementsL $G1, G2, e, n, ..$. And probably $P_A$ is also a vector, whose elements are $X_A$ and $Y_A$. $\endgroup$ – baqx0r May 19 '16 at 13:43
  • $\begingroup$ OK, but the vector $C$ (the ciphertext) cannot be transmitted in a datagram payload. A concatenation of elements of a vector, ok, but again we'rs back at the beginning... $\endgroup$ – EisenHeim May 19 '16 at 14:02
  • $\begingroup$ hm yeah, in that case it becomes the same as concat.. $\endgroup$ – baqx0r May 19 '16 at 14:04
  • 1
    $\begingroup$ @EisenHeim Concatenation may not be reversible let alone canonical. In crypto a lot of parameters are encoded using ASN.1 and BER/DER because of that reason. The paper seems only to specify the algorithm. The algorithm is theoretical, not practical; it doesn't need to be concerned about encoding of parameters. Either you'll have to find a document that specifies the encoding or you'll have to specify one yourself. $\endgroup$ – Maarten Bodewes May 19 '16 at 17:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.