Hi Nathan,

I tried to modify the examples/OCFSecure code to use certificates instead
of hard-coded symmetric keys in the credentials. I think there is something
missing beyond the setup of the creds in the json file. I tested my created
certificates and keys via the provisioiningclient and sampleserver_mfg.

I reported the issue here
https://lists.iotivity.org/g/iotivity-dev/message/10044. Could you comment
on what actions are needed to setup the ciphersuite/PSK?

Any pointers are appreciated.

Khaled



On Thu, Dec 6, 2018 at 2:45 AM Heldt-Sheller, Nathan <
nathan.heldt-shel...@intel.com> wrote:

> Thanks Max,
>
>
>
> Yes you’re right; my typo on that one thanks for catching J
>
> And yes, Certificate-based TLS handshake can require authentication by one
> or both parties (that is, one or both present a Cert or Cert Chain to be
> validated by the other).
>
> Thanks,
> Nathan
>
>
>
> *From:* Max Kholmyansky [mailto:max...@gmail.com]
> *Sent:* Wednesday, November 28, 2018 10:41 PM
> *To:* Heldt-Sheller, Nathan <nathan.heldt-shel...@intel.com>
> *Cc:* khaledi...@gmail.com; iotivity <iotivity-dev@lists.iotivity.org>
> *Subject:* Re: [dev] Server to communicate via DTLS session with any
> client?
>
>
>
> Hi Nathan
>
>
>
> Thanks for educating us.
>
>
>
> One point to clarify: when you say *"the reason the Client trusts the
> Server"  - *you actually meant that the *server *is making a decision *to
> trust the client*, based on the technical explanation you provided?
>
>
>
> I understand that technically, same private key and sam certificate may be
> reused between multiple clients connecting to the server, and all what the
> server cares - is that each client can present the certificate and proof
> the private key possession.
>
>
>
> Also, can you please clarify of TLS can work "in the reverse way", i.e.
> requiring the server to present its certificate, and the client to verify
> its validity. This is "inspired" by what I know about the public Internet
> services: each organization running a secure web site has to obtain a
> certificate, and web browsers (in client role) validate the certificates
> presented by the server they connect to, but there is no requirement for a
> browser (client) to carry any certificate. Can you please explain whether
> this way is supported by IoTivity, and what are the considerations.
>
>
>
> Nathan, thanks again for your valuable feedback, and best regards.
>
>
>
> Max.
>
>
>
>
>
>
>
>
>
> On Wed, Nov 28, 2018 at 6:07 PM Heldt-Sheller, Nathan <
> nathan.heldt-shel...@intel.com> wrote:
>
> Thanks Khaled, Max,
>
>
>
> Khaled is correct: the way to avoid needing a /cred entry for each Client
> is to use asymmetric crypto (Certs in the IoTivity case).
>
>
> A thorough explanation of asymmetric crypto is a bit much for an email but
> I think this Q&A is pretty decent:
> https://crypto.stackexchange.com/questions/32304/how-exactly-does-certificate-based-authentication-work.
> There’s a lot more on the web if you search for “certificate based
> handshake”.
>
>
>
> The (very) simplified version is that the Client presents a public
> Identity certificate (also called End Entity Certificate) to the Server.
> That EE Certificate contains a public key which corresponds to the private
> key held by the Client, so that the Client can prove that it is the
> rightful owner of the EE Cert, via asymmetric crypto operations.
>
>
>
> The Client’s EE Certificate is also signed by an entity called a
> “Certificate Authority” or “CA”.  The Server has a pre-installed
> certificate called a “Root Certificate”.  This is what allows the Server to
> verify EE Certs issued by that CA.  Using the public key in the Root
> Certificate, the Client can verify the veracity of the EE Cert.
>
>
>
> So in the end, the reason the Client trusts the Server is that a) the
> Client’s EE cert can be verified to have been issued by the CA, to the
> owner of the corresponding private keys, and b) the Client can demonstrate
> that it is the owner of those private keys.
>
>
>
> This doesn’t require a /cred entry for each Client, because the same Root
> Certificate can be used to verify the veracity of many different Client
> certificates.  But the Server does need to have a the Root Cert installed
> for the CA(s) that issued the Client cert.   We call that Root Cert the
> “Trust Anchor” because it is the last point in the dotted line of items
> that form a logical chain of trustworthiness.
>
>
> Hope that helps,
>
> Thanks,
> Nathan
>
>
>
> *From:* iotivity-dev@lists.iotivity.org [mailto:
> iotivity-dev@lists.iotivity.org] *On Behalf Of *Khaled Elsayed
> *Sent:* Wednesday, November 28, 2018 6:10 AM
> *To:* khaledieee <khaledi...@gmail.com>
> *Cc:* max...@gmail.com; iotivity-dev <iotivity-dev@lists.iotivity.org>
> *Subject:* Re: [dev] Server to communicate via DTLS session with any
> client?
>
>
>
> Also, if you can clearly identify what is happening, please share your
> findings. I had a look but still not totally clear about the exact
> procedure.
>
>
>
>
>
>
>
> On Wed, Nov 28, 2018 at 4:07 PM Khaled Elsayed via Lists.Iotivity.Org
> <khaledieee=gmail....@lists.iotivity.org> wrote:
>
> This can be done via certificates. You can find the example for the
> provisionclient. I am still trying to figure out myself as it is not very
> well documented. Quoting Nathan reply on my question sent last week or so.
>
> There is indeed an example of Certificate-based Client/Server
> authentication in the IoTivity example “sampleserver_mfg”, which is in the
> resource/csdk/securitiy/provisioning/sample folder.
>
>
>
> On Wed, Nov 28, 2018 at 2:56 PM Max <max...@gmail.com> wrote:
>
>
>
> Hi,
>
>
>
> I am looking for a technical advice on how a *secure UDP endpoint *("coaps")
> exposed by IoTivity-powered server - may be accessed *from any
> IoTivity-powered client*, without prior coordination between the client
> and the server.
>
>
>
> This is similar to the idea that any browser in the world can access a web
> site via SSL, while the server isn't blocking any particular browser from
> the access.
>
>
>
> *[Note: this is a technology POC, not related to the OCF specification. So
> the question is in the context of IoTivity library capabilities, not in the
> context of the OCF security and compliance]*
>
>
>
> I would appreciate some advice from the people who understand how the DTLS
> "handshake" in IoTivity works.
>
>
>
> Looking at the sample code... The "simpleclient" and "simpleserver" sample
> solve the issue, via placing a shared "credential" into the security
> configuration file.
>
>
>
> Below is the server configuration file.
>
>
>
> However, this isn't good for me, since the server needs a section per
> specific "di" of the connecting client, while my goal is to allow DTLS
> (secure) session for any client.
>
>
>
> I would appreciate ideas on how it can be done.
>
>
>
> Thanks in advance,
>
>
>
> Max.
>
>
>
> "cred": {
>
>         "creds": [
>
>             {
>
>                 "credid": 1,
>
>                 "subjectuuid": "32323232-3232-3232-3232-323232323232",
>
>                 "credtype": 1,
>
>                 "period": "20150630T060000/20990920T220000",
>
>                 "privatedata": {
>
>                     "data": "AAAAAAAAAAAAAAAA",
>
>                     "encoding": "oic.sec.encoding.raw"
>
>                 }
>
>             },
>
>             {
>
>                 "credid": 2,
>
>                 "subjectuuid": "31393139-3139-3139-3139-313931393139",
>
>                 "credtype": 1,
>
>                 "period": "20150630T060000/20990920T220000",
>
>                 "privatedata": {
>
>                     "data": "BBBBBBBBBBBBBBBB",
>
>                     "encoding": "oic.sec.encoding.raw"
>
>                 }
>
>             }
>
>         ],
>
>         "rowneruuid": "32323232-3232-3232-3232-323232323232"
>
>     }
>
>
>
>
>
>
>
>
>
> 
>
>

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#10046): 
https://lists.iotivity.org/g/iotivity-dev/message/10046
Mute This Topic: https://lists.iotivity.org/mt/28430313/21656
Group Owner: iotivity-dev+ow...@lists.iotivity.org
Unsubscribe: https://lists.iotivity.org/g/iotivity-dev/unsub  
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to