<div dir="ltr"><span style="font-size:12.8px">TL;DR:</span><div style="font-size:12.8px">Secure ROS (SROS) is a set of proposed enhancements to ROS, enabling secure communications over networks, access control in the computation graph, and policy profile templates for linux security modules.</div><div style="font-size:12.8px">To read more: <a href="http://wiki.ros.org/SROS" target="_blank">http://wiki.ros.org/SROS</a></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Hello everyone,</div><div style="font-size:12.8px"><br></div><div><div style="font-size:12.8px"><span style="font-size:12.8px">I'm happy to announce a set of </span>proposed enhancements to Secure ROS, duly named SROS [1].</div><div style="font-size:12.8px"><br></div><div><div style="font-size:12.8px">You may remember me from last year, myself being that one Docker enthusiast that wished to make ROS more repeatable, reproducible, and deployable using linux containers [2]. Following my ambition to help make existing ROS <span style="font-size:12.8px">code </span><span style="font-size:12.8px">even more reusable and relevant in the greater robotics community, I've again worked with OSRF this summer to help found the beginning of SROS.</span></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><div><span style="font-size:12.8px">Obligatory Disclaimer:</span></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span style="font-size:12.8px"><b>SROS is currently highly experimental and under heavy development<br></b>At time of writing, this effort is highly experimental and must not be considered production-grade. Rather, it is currently an exploration of various strategies for mitigating some of the most obvious ways that ROS systems would be compromised by "bad actors" of various sorts</span></blockquote></div></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">SROS is intended to secure ROS across three main fronts:</div><div><ul><li style="font-size:12.8px;margin-left:15px"><span style="font-size:12.8px">Transport Encryption<br></span>Verify the identity of nodes, the integrity of the traffic, and the privacy of the connection.</li><ul style="font-size:12.8px"><li style="margin-left:15px"><span style="font-size:12.8px">Native TLS support for all socket level communication</span></li><li style="margin-left:15px"><span style="font-size:12.8px">X.509 PKI certificates for chains of trust, authenticity and integrity</span></li><li style="margin-left:15px"><span style="font-size:12.8px">Keyserver for key pair generation and certificate customisation </span></li></ul><li style="font-size:12.8px;margin-left:15px"><span style="font-size:12.8px">Access Control</span><br><span style="font-size:12.8px">Restrict a node's scope of access within the </span>ROS graph to only what is necessary.</li><ul style="font-size:12.8px"><li style="margin-left:15px"><span style="font-size:12.8px">Definable namespace globbing for node restrictions and actions</span></li><li style="margin-left:15px"><span style="font-size:12.8px">Audit graph network through security logs and events</span></li><li style="margin-left:15px"><span style="font-size:12.8px">User constructed and/or auto trained access control policies</span></li></ul><li style="font-size:12.8px;margin-left:15px"><span style="font-size:12.8px">Process Profiles<br>Restrict a node's scope of access within the host machine to only what is necessary.</span></li><ul><li style="font-size:12.8px;margin-left:15px"><span style="font-size:12.8px">Harden node processes on using Linux Security Modules in kernel</span></li><li style="margin-left:15px"><span style="font-size:12.8px">Quarantine a node’s file, device, signal, and networking access</span></li><li style="font-size:12.8px;margin-left:15px"><span style="font-size:12.8px">Reusable AppArmor profile component library for ROS</span></li></ul></ul></div><div style="font-size:12.8px">Now that we have a working prototype, we'd like to formalize a REP for SROS to standardize some of the finer details [3]. </div><div style="font-size:12.8px">If you happen to have an expertise in cybersecurity or an <span style="font-size:12.8px">interest</span> in securing ROS, you are welcome to review and contribute to the developing REP. </div><div style="font-size:12.8px">Visit the <span style="font-size:12.8px">cross-post on </span><span style="font-size:12.8px">discourse for </span><span style="font-size:12.8px">discussion </span><span style="font-size:12.8px">[6].</span></div></div><div style="font-size:12.8px"><br></div></div><div style="font-size:12.8px"><div style="font-size:12.8px">And as another plug for ROSCon 2016 [4], I'll also be giving a talk on this subject:</div><div style="font-size:12.8px">​<i style="font-size:small"><span style="font-size:12.8px">{,S}ROS: Securing ROS over the wire, in the graph, and through the kernel</span></i></div><div style="font-size:12.8px">So if you'd like to meet up and talk about securing ROS for robotic systems out in the wild, I'll see you there.</div><div style="font-size:12.8px"><br></div></div><div style="font-size:12.8px"><div style="font-size:12.8px">Special thanks to OSRF for making this possible,</div><div style="font-size:12.8px">Ruffin White</div></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">[1] <a href="http://wiki.ros.org/SROS" target="_blank">http://wiki.ros.org/SROS</a></div><div style="font-size:12.8px">[2] <a href="https://vimeo.com/142150815" target="_blank">https://vimeo.com/<wbr>142150815</a></div><div style="font-size:12.8px">[3] <a href="https://github.com/ros-infrastructure/rep/pull/121">https://github.com/ros-infrastructure/rep/pull/121</a></div><div style="font-size:12.8px">[4] <a href="http://roscon.ros.org/2016/" target="_blank" style="font-size:12.8px">http://roscon.ros.org/<wbr>2016/</a></div><div style="font-size:12.8px">[5] <a href="http://wiki.ros.org/SROS/Installation/Docker" target="_blank">http://wiki.ros.org/SROS/<wbr>Installation/Docker</a></div><div style="font-size:12.8px">[6] <a href="http://discourse.ros.org/t/announcing-sros-security-enhancements-for-ros/536">http://discourse.ros.org/t/announcing-sros-security-enhancements-for-ros/536</a></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">P.S. If you'd like to play with SROS right away, be sure to try out the SROS docker image available from OSRF [5]:</div><div style="font-size:12.8px"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">$ docker run --rm -it \<br>    osrf/sros \<br>    bash -c "source /ros_entrypoint.sh && \<br>        sroskeyserver & \<br>        sleep 3 && \<br>        sroslaunch rospy_tutorials talker_listener.launch"</blockquote></div></div>