Thanks Ned. I think we?re saying the same thing in different ways: that a ?non-secure? binary wouldn?t meet OIC v1.1 Security Spec requirements, and a ?dual-mode? binary would, from a robustness point of view, be equivalent to a ?non-secure? binary.
However, SWG has no direct control over IoTivity, and IoTivity can implement what it wants to in the end? the only thing SWG can do is ensure that such a binary couldn?t pass Certification (which is supposed to mean ?implementation meets the spec?). Thus, I suggested an illustrative example of how the use case suggested by Uze could be achieved, but hoping to be very clear that this is just an example. And in this example, the binary with this feature would fail Certification. Any other implementation that meets the use case requirements is fine, too, but my hope is that whatever is settled on will be documented so that we can test for the feature in the CTT. I realize that a better Certification answer would be to say CTT verifies that the implementation conforms to the spec, but since I cannot fathom a way to verify that no possible API for disabling security exists in a given binary (outside of penetration testing or code analysis, both of which are outside the scope of our CTT), I proposed a cooperative approach to ensuring we don?t Certify a non-secure or dual-mode binary. Make sense? Even if you disagree that?s fine, I just want to make sure my explanation follows ? Thanks, Nathan From: Smith, Ned Sent: Friday, June 3, 2016 5:09 PM To: Ih, Ronald <Ronald.Ih at atmel.com>; Heldt-Sheller, Nathan <nathan.heldt-sheller at intel.com>; uzchoi at samsung.com; 'RANDEEP SINGH' <randeep.s at samsung.com> Cc: iotivity-dev at lists.iotivity.org; security_wg at openconnectivity.org Subject: Re: [security_wg] RE: [dev] [feature request] merging secure/non-secure IoTivity build binaries The general rule regarding debug switches is if the testing agency can turn security off, so can the attacker. Hence, this should not be allowed. There are other ways to solve this kind of problem. I don't think the 'problem' has been sufficiently described and a set of options considered / explained. There has only been one option forwarded and the choice is between either security or compliance. This is a false choice. Security should not be the trade-off for compliance. The existence of this type of false choice is an indication that the problem isn't understood well enough. Regarding this thread: There shouldn't be a "non-secure binary" hence there is no need to validate it and no need to consider 'interoperability' between non-secured and secured instances. There is nothing in our specs that calls for the creation of a 'non-secure' binary or mode. So we are being asked to make decisions about something that isn't supposed to exist. This type of issue should be considered in the context of a more formalized security review where specific recommendations are made and where the decision of the security review board(?) is binding. Ned Smith Principal IoT Security Architect Intel SSG-OTC Ned.smith at intel.com<mailto:Ned.smith at intel.com> +1.503.712.3695 From: "Ih, Ronald" <Ronald.Ih at atmel.com<mailto:[email protected]>> Date: Friday, June 3, 2016 at 10:21 AM To: Nathan Heldt-Sheller <nathan.heldt-sheller at intel.com<mailto:nathan.heldt-sheller at intel.com>>, Ned Smith <ned.smith at intel.com<mailto:ned.smith at intel.com>>, "uzchoi at samsung.com<mailto:uzchoi at samsung.com>" <uzchoi at samsung.com<mailto:uzchoi at samsung.com>>, ??? <randeep.s at samsung.com<mailto:randeep.s at samsung.com>> Cc: "iotivity-dev at lists.iotivity.org<mailto:iotivity-dev at lists.iotivity.org>" <iotivity-dev at lists.iotivity.org<mailto:iotivity-dev at lists.iotivity.org>>, "security_wg at openconnectivity.org<mailto:security_wg at openconnectivity.org>" <security_wg at openconnectivity.org<mailto:security_wg at openconnectivity.org>> Subject: RE: [security_wg] RE: [dev] [feature request] merging secure/non-secure IoTivity build binaries I think it is relevant to SecWG in that we should account for the possibility that OCF adopters will likely have development implementations that allow you to switch the security on/off to make debug iterations easier. I can see the value in that from a development perspective. I am not an expert on this, but I think this may affect the Security Spec because if manufacturers implement their own security switch methods, it may be difficult to have a test case(s) that catches all possible implementations where a device can be put in a debug mode with security disabled. If it is not possible to screen out all potential unsecure debug implementations, we may need to explicitly state in the spec that those modes are specifically disallowed from production. Ron From: security_wg at openconnectivity.org<mailto:security_wg at openconnectivity.org> [mailto:[email protected]] On Behalf Of Heldt-Sheller, Nathan Sent: Thursday, June 02, 2016 11:02 PM To: Smith, Ned <ned.smith at intel.com<mailto:ned.smith at intel.com>>; uzchoi at samsung.com<mailto:uzchoi at samsung.com>; 'RANDEEP SINGH' <randeep.s at samsung.com<mailto:randeep.s at samsung.com>> Cc: iotivity-dev at lists.iotivity.org<mailto:iotivity-dev at lists.iotivity.org>; security_wg at openconnectivity.org<mailto:security_wg at openconnectivity.org> Subject: RE: [security_wg] RE: [dev] [feature request] merging secure/non-secure IoTivity build binaries Hi Ned, This is not a Security Spec question. This is an implementation-specific question for IoTivity. However I would like to get SecWG feedback as security experts on the proposal for this feature from Uze (below). I too am generally uncomfortable but I will concede that if the build containing such a feature cannot pass Certification, then I cannot come up with a good reason to disallow it for developer use. But I?d like to hear the opinions of the SecWG on this idea, too. Thanks, Nathan From: Smith, Ned Sent: Thursday, June 2, 2016 10:56 PM To: Heldt-Sheller, Nathan <nathan.heldt-sheller at intel.com<mailto:nathan.heldt-sheller at intel.com>>; uzchoi at samsung.com<mailto:uzchoi at samsung.com>; 'RANDEEP SINGH' <randeep.s at samsung.com<mailto:randeep.s at samsung.com>> Cc: iotivity-dev at lists.iotivity.org<mailto:iotivity-dev at lists.iotivity.org>; security_wg at openconnectivity.org<mailto:security_wg at openconnectivity.org> Subject: Re: [security_wg] RE: [dev] [feature request] merging secure/non-secure IoTivity build binaries This seems really risky from a security perspective. If the goal is to provide a convenient way to turn off security in a development or even a production environment. That should be a vendor specific choice. I don't see why it should impact the specification. There is no reason why a vendor can't make changes to their OCF approved code base in ways that don't affect the standard (such as compile time switches and config file options ). I just don't understand why it is even being brought up in the context of SecWG. -Ned Ned Smith Principal IoT Security Architect Intel SSG-OTC Ned.smith at intel.com<mailto:Ned.smith at intel.com> +1.503.712.3695 From: <security_wg at openconnectivity.org<mailto:security_wg at openconnectivity.org>> on behalf of Nathan Heldt-Sheller <nathan.heldt-sheller at intel.com<mailto:[email protected]>> Date: Thursday, June 2, 2016 at 10:18 PM To: "uzchoi at samsung.com<mailto:uzchoi at samsung.com>" <uzchoi at samsung.com<mailto:uzchoi at samsung.com>>, ??? <randeep.s at samsung.com<mailto:randeep.s at samsung.com>> Cc: "iotivity-dev at lists.iotivity.org<mailto:iotivity-dev at lists.iotivity.org>" <iotivity-dev at lists.iotivity.org<mailto:iotivity-dev at lists.iotivity.org>>, "security_wg at openconnectivity.org<mailto:security_wg at openconnectivity.org>" <security_wg at openconnectivity.org<mailto:security_wg at openconnectivity.org>> Subject: [security_wg] RE: [dev] [feature request] merging secure/non-secure IoTivity build binaries Thanks Uze, sorry if my proposal for compile-time feature wasn?t clear. To clarify, I think your requested feature (a single binary with both modes, which I am calling ?Dual Security Mode?) is okay, so long as it is done in the following way: 1) ?Dual Security Mode? version of IoTivity would have a ?Disable Security? API (e.g. config file read at boot time, or similar) to disable security-related code, and bypass Security Layer. This would allow dev to test with Security turned off by changing a file and rebooting the device. If a network API is required, a dev could provide an application resource that would change the file (e.g. a PUT to a resource ?SecurityModeSwitch?) etc., then reboot. Whatever your use case is can be supported, I think. 2) ?Dual Security Mode? version is *not* the default version of IoTivity, and must be intentionally built using a compile-time switch (e.g. ?DUAL_SECURITY_MODE=1?) 3) ?Normal Security Mode? version does not have the API in 1), and *cannot* have Security disabled (e.g. because the ?Disable Security? API is #ifdef removed when ?DUAL_SECURITY_MODE=0?) 4) ?Dual-Security-Mode? version cannot be certified and will fail a CTT test that checks for the ?Disable Security? API, etc Does this make sense? My primary concern is not the API or mechanism, those were just to illustrate. My primary concern is that if such a feature is added to IoTivity, that the dual-mode binary is optional, not built by default, and not certifiable. Please share your thoughts and let me know if this is clear, Thanks, Nathan From:???(Uze Choi) [mailto:uzchoi at samsung.com] Sent: Thursday, June 2, 2016 6:41 PM To: Heldt-Sheller, Nathan <nathan.heldt-sheller at intel.com<mailto:nathan.heldt-sheller at intel.com>>; 'RANDEEP SINGH' <randeep.s at samsung.com<mailto:randeep.s at samsung.com>> Cc: iotivity-dev at lists.iotivity.org<mailto:iotivity-dev at lists.iotivity.org>; security_wg at openconnectivity.org<mailto:security_wg at openconnectivity.org> Subject: RE: [dev] [feature request] merging secure/non-secure IoTivity build binaries Hi Nathan, Thank you your kind response and proposal. Your approach looks a little different from mine focusing on the developer instead of product. Please understand my position. Mostly agree, however, the point that ?developer should not be confused by accidental inclusion? is somewhat not understandable. Whether they take the mistake or not, this is developer?s responsibility, product company should take care. Anyway, could you propose how developer can set the mode from your proposal? Compile time mean ifdef statement? I cannot imagine further. BR, Uze Choi From: Heldt-Sheller, Nathan [mailto:[email protected]] Sent: Friday, June 03, 2016 4:04 AM To: uzchoi at samsung.com<mailto:uzchoi at samsung.com>; 'RANDEEP SINGH' Cc: iotivity-dev at lists.iotivity.org<mailto:iotivity-dev at lists.iotivity.org>; security_wg at openconnectivity.org<mailto:security_wg at openconnectivity.org> Subject: RE: [dev] [feature request] merging secure/non-secure IoTivity build binaries Thanks Uze, This idea of ?run-time mode switch? for developer testing only seems useful, but this is different from the first requirement (for ?public? resources) in the original email. So I wanted to be clear that ?public? resources can (and should) be implemented using SECURED=1 build, and a wildcard-read-access Access Control List entry. If we are agreed on this point, then let?s discuss the dev/testing run-time mode switch idea. A run-time switchable binary is a very useful thing, but also very dangerous from a security perspective. If there is an application-level API, or even a run-time configurable library (e.g. via a config file, etc.) then there is a built-in attack vector that can circumvent all the security measures on the device. This kind of binary should never be certified in my opinion, and therefore we would need to add Certification Tests to verify that the binary doesn?t expose a SECURED=0 mode switch. If this is acceptable (meaning, if it is okay to use this kind of dual-mode binary for dev, but NOT for Certification) then I suppose it is okay to create such a thing, but I would *not* want this mode-switch feature enabled by default. A dual-mode binary must be a compile-time choice, that is disabled by default, so that there is no confusion and accidental inclusion of a the SECURED=0 mode in a device intended for Certification. Does this make sense and do you agree? Thanks, Nathan CC: security_wg to give them opportunity to comment From:???(Uze Choi) [mailto:uzchoi at samsung.com] Sent: Wednesday, June 1, 2016 9:37 PM To: Heldt-Sheller, Nathan <nathan.heldt-sheller at intel.com<mailto:nathan.heldt-sheller at intel.com>>; 'RANDEEP SINGH' <randeep.s at samsung.com<mailto:randeep.s at samsung.com>> Cc: iotivity-dev at lists.iotivity.org<mailto:iotivity-dev at lists.iotivity.org> Subject: RE: [dev] [feature request] merging secure/non-secure IoTivity build binaries Hi Nathan, I?m sorry I missed you mail. Anyway thank you for your answer. Beside the discussion which mode will be deployed in real world, Let?s think about the SDK binary distribution or embedding into some platform. Developer may start the development first with non-secure SDK library. And after functions are implemented, developer may enable the secure setting, which requires to replace SDK library by secure SDK library. Let?s think about the platform. Some platform such as Tizen, may embed the library by default. Platform should decide one of them as embedded library. If secure binary is selected, then non-secure mode testing and so on cannot be executed. BR, Uze Choi From: Heldt-Sheller, Nathan [mailto:[email protected]] Sent: Thursday, May 26, 2016 4:13 PM To: uzchoi at samsung.com<mailto:uzchoi at samsung.com>; RANDEEP SINGH Cc: iotivity-dev at lists.iotivity.org<mailto:iotivity-dev at lists.iotivity.org> Subject: RE: [dev] [feature request] merging secure/non-secure IoTivity build binaries Hi Uze, I may be misinterpreting your below email, but I am concerned there may be some confusion regarding the ?secure build? vs ?non-secure build?. I believe SECURED=0 build should be purely for development and testing, and should not be expected to function with a SECURED=1 ?real-world? build. There are basic functions (e.g. Device ID persistent across reboots) that require SECURED=1 build, regardless of whether there are ?public? resources on the device (resources which do not need Access Control). To be clear, resources can be effectively made ?public? using a SECURED=1 build. If a resource doesn?t need access control at all, then (still using a SECURED=1 build) the Device will have an Access Control Entry that allows all requests from any requester (even from anonymous endpoint). Effectively, the resource is ?non-secure?, even though the *build* is still SECURED=1, and the resource is hosted on a CoAPS port. In short, I would not expect a SECURED=0 Client to be able to access any real-world Server, and a SECURED=0 Server would never be deployed in a real-world product. Therefore the SECURED=1 configuration should be expected for proper functioning, and SECURED=0 just kept for dev/testing/debug use. Thanks, Nathan From:iotivity-dev-bounces at lists.iotivity.org<mailto:iotivity-dev-bounces at lists.iotivity.org> [mailto:iotivity-dev-bounces at lists.iotivity.org] On Behalf Of ???(Uze Choi) Sent: Wednesday, May 25, 2016 8:46 PM To: RANDEEP SINGH <randeep.s at samsung.com<mailto:randeep.s at samsung.com>> Cc: iotivity-dev at lists.iotivity.org<mailto:iotivity-dev at lists.iotivity.org> Subject: [dev] [feature request] merging secure/non-secure IoTivity build binaries Hi Randeep, As a member Developer Ecosystem Build TG, I have the requirement merging the non-secure binary and secure binary into single one. Currently, secure mode build does not provide the communication with non-secure resource. If this is configurable by API or both support by default, it will be very easy to distribute iotivity binary. Moreover, current separate build scheme cannot support the use case that connects both resources one is secure resource and the other is non-secure resource. e.g) An application read the temperature resource (public resource) and personal information storage resource together. Please evaluate this requirement from maintainer perspective. If feasible, I?ll issue the jira ticket for this thing. BR, Uze Choi -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.iotivity.org/pipermail/iotivity-dev/attachments/20160604/30462505/attachment.html>
