:::: MENU ::::

삼성 Artik Edge-to-cloud Security

삼성 아틱의 보안은 Edge-to-cloud Security라고 설명을 한다. 즉 칩레벨에서 부터 클라우드까지 보안요소가 있다는 얘기.

Device Protection and Trusted Code Execution

Hardware의 경우 Device protection과 trusted code execution이 가장 중심이 되는 요소임.

  • Secure Boot
    타겟 디바이스에서 동작하는 코드의 신뢰성을 보장이 필요
    소프트웨어는 타겟장치에서 코드 실행을 허용하기 위해 소프트웨어 공급자가 서명해야함.
  • KMS infrastructure for code signing
    코드 서명을 쉽게하기위한 Key Management Service (KMS), ARTIK CodeSigner service, FIPS-certified hardware security modules (HSM)를 제공
  • Secure Element
    각 디바이스에 SmartThings cloud에 등록된 private/public key쌍이 저장이 되어서 출시됨.
  • Secure JTAG access
    JTAG을 사용시 패스워드 필요

Protected Communications

디바이스와 클라우드 사이의 통신 보안

  • Encryption
    Transport Layer Security (TLS) 또는 datagram transport layer security (DTLS)사용
    ARTIK modules also provide hardware acceleration (Crypto Engine) for AES and RSA encryption and decryption. Additionally, the ARTIK platform uses Elliptic Curve Diffie–Hellman (ECDH) for session encryption key generation, which provides a high level of protection with low power consumption.
  • Authentication
    Public Key Infrastructure (PKI) 사용
  • Easy secure onboarding
    Secure Device Registration (SDR): Mutual authentication between a gateway device and the cloud registration servers

Edge-to-cloud Security


이 한장의 그림으로 지금까지 설명된 내용이 나와있음.

참고


Lerdge 3D printer board

Aliexpress에서 본 괜찮은 중국산 3D 프린터보드인 Lerdge – STM32,TFT LCD, WiFi, USB memory 지원.. 가격도 $69불

http://www.lerdge.com/에서 만드는데, 설정을 어떻게 하는지 나와있지만 관련 펌웨어 코드는 없다. 3D프린터 해외 포럼에도 글들이 올라와서 찾아보니 다음과 같다. 공감이 가는 얘기이다.

 I don’t want to depend on some anonymous developer working for some money-driven company who may or may not upgrade the software and/or may or may not fix bugs and/or may stop support at any moment and/or may decide to suck money out of me for any of these things.

이에 비해 MKS 보드는 (Aliexpress에서 $52) 그래도 github에 자료가 있다.



MQTT 란?

MQTT?

MQ Telemetry Transport 약자

It is a publish/subscribe, extremely simple and lightweight messaging protocol, designed for constrained devices and low-bandwidth, high-latency or unreliable networks.

MQTT 사용하는가?

IoT(Internet of Thing): Thing Internet에 연결을 하려면 Ethernet, WiFi, Cellular 등이 필요하다. 이런 connectivity가 대부분 무선으로 가고 있는데, 무선이라 함은 이동성이 보장되야 하므로 밧데리가 필요하고 파워소모는 중요한 요소이다. 파워를 적게 사용하기 위해서는 빨리 연결을 하고, 데이터를 보내고 빨리 연결을 끊어야 한다. 특히 데이터에 오버헤드가 없어야 한다. 셀룰라에서 데이터는 돈이니

HTTP?

HTTP stateless 이므로 데이터를 보내기 위해서는 매 데이터 전송 연결을 해야한다. 따라서 HTTP는 웹페이지 같은 대용량의 데이터를 보내기에는 적합하지만 가볍지 않고, 빠르지 않다또다른 문제는 HTTP pull only이다. 즉 디바이스는 서버에 데이터를 보낼수 있지만, 서버에서 데이터를 받야하 하는 경우는 지속적으로 서버에 물어봐야 한다. 이런 pull update는 시간이 많이 걸리고 데이터도 많이 소비된다.

MQTT

이에비해 MQTT 아주 간단하고 가볍다. 서버에 연결시 단지 80바이트만 필요하다. 계속 연결이 되며(MQTT Broker 연결을 유지하기 위해 Keep alive packet 주기적으로 보내야 ), 데이터 publication(디바이스가 데이터를 서버에 보내는 ) subscription(서버가 디바이스로 데이터를 보내는 ) 20바이트 정도이다. MQTT 메쉬네트웍이나 TCP/IP, Bluetooth위에서 동작가능하다.

Topic

Pub Sub는 토픽을 기준으로 작동한다. 토픽은 슬래시(/)를 이용해서 계층적으로 구성할 수 있어서 대량의 센서 기기들을 효율적으로 관리 할 수 있다

Port Number: 1883, 8883

TCP/IP port 1883 is reserved with IANA for use with MQTT. TCP/IP port 8883 is also registered, for using MQTT over SSL.

QoS

MQTT 3단계의 QoS(Quality of service) 제공한다.

  • 0 : 메시지는 한번만 전달하며, 전달여부를 확인하지 않는다. Fire and Forget 타입이다.
  • 1 : 메시지는 반드시 한번 이상 전달된다. 하지만 메시지의 핸드셰이킹 과정을 엄밀하게 추적하지 않기 때문에, 중복전송될 수도 있다.
  • 2 : 메시지는 한번만 전달된다. 메시지의 핸드셰이킹 과정을 추적한다. 높은 품질을 보장하지만 성능의 희생이 따른다.

참고


스텝모터 – Stepper Motor

스텝모터

스텝 모터는 일반적으로 스텝 사이즈 규격 (예 : 1.8 ° 또는 200 회전당)을 가진다. 즉 360도, 한바퀴 회전시 2000 스텝이 필요하니, 한 스텝당 1.8 °가 움직인다.

마이트로 스텝핑

스텝모터 드라이버의 기능중 마이트로 스텝핑기능은 이 스텝을 분주를 해서 더 정밀하게 모터를 회전시킨다. 예를 들면 A4988 드라이버의 경우 다음과 같이 1/16까지 가능하니, 한 스텝당 0.1125 °(1.8 °/16)까지 제어가 가능하다. 반면 TMC2130드라이버의 경우 1/256까지 가능하므로 1스텝당 0.007°(1.8°/256)까지 가능하다.

참고


IoT 관련 단상

IoT의 핵심요소

  • Connectivity: 이건 당연하고, 여기에 security가 필요
  • Interoperation: 이건 가능하면 좋겠지만, IoT응용이 vertical market이라서 대기업이 아니고는 큰 의미가 없을 듯.
  • Intelligence: 이건 조만간 반드시 있어야 서비스에 차별화가 될 듯

Blynk 사용법

Blynk는 IoT응용을 쉽게만들어 주는 앱이다.  동작 방식은 아래 그림과 같이 앱이 서버를 거쳐서 디바이스에 접근을 하고, 디바이스역시 서버를 거쳐서 앱과 통신을 한다. 단 디바이스에는 Blynk에서 제공하는 라이브러리를 설치를 해야한다.

디바이스

현재 지원하는 디바이스는 아두이노, ESP8266, 라즈베리파이… 등 다양하며(지원하는 하드웨어), Bluetooth, WiFi등의 connectivity가 없는 경우에도 PC를 통해서 동작이 가능하다. 아두이노에서는 스케치 > 라이브러리 포함하기 > 라이브러리 관리…를 선택해서 Blynk로 검색을 하면 라이브러리 및 예제의 설치가 가능하다. 그리고 펌웨어에서는 앱을 통해 받은 토큰을 코드에 넣어서 서버와 통신을 한다.

다운로드 받은 앱에서는 사용자 등록을 하고 디바이스와 연결될 위젯을 선택하고 이 위젯에 연결할 물리적 핀을 할당한다. 즉 버튼을 추가하고, 이 버튼을 PIN13에 연결을 하면 앱에서 버튼을 누를때 마다 보드의 PIN13이 On/Off된다. 재미있는 것은 물리적인 핀뿐 아니라 Vitrual Pin을 지정해서 아무런 값이나 파라미터로 전달이 가능하다는 것.  BLYNK_WRITE 함수는 서버에서 virtual pin값을 쓰면 실행되는 함수, BLYNK_READ 함수는 디바이스에서  virtual pin에 값을 쓰면 서버에 반영이 되는 함수이다. 즉 read / write는 서버의 관점.

BLYNK_WRITE(vPIN)

BLYNK_WRITE defines a function that is called when device receives an update of Virtual Pin value from the server:

BLYNK_WRITE(V0)
{   
  int value = param.asInt(); // Get value as integer

  // The param can contain multiple values, in such case:
  int x = param[0].asInt();
  int y = param[1].asInt();
}

BLYNK_READ(vPIN)

BLYNK_READ defines a function that is called when device is requested to send it’s current value of Virtual Pin to the server. Normally, this function should contain some Blynk.virtualWrite calls.

BLYNK_READ(V0)
{
  Blynk.virtualWrite(V0, newValue);
}

예제

구체적인 것은 이 문서의 설명과 예제를 따라가면 쉽게 이해가 간다.

기타

Blynk Doc 참고


AC 전원

교류용 전선(3선)의 극성

접지선(EARTH) 

중립선(NEUTRAL) –

전력선(LIVE)        +

퓨즈는 전력선(LIVE)에 연결한다.

Hi-link사의 AC/DC 컨버터 모듈

데이터 시트에 AC연결이 어떻게 되는지 안나와 있는데, 위쪽이 N(Neutral)이고 아래핀이 L(Live)이다.

어떤 블로거의 이 모듈과 관련해서 테스트한 자료1 – Conducted emission fail 됨. 그래서 이후에 테스트한 자료 <= 결론은 싼 중국 파워제품을 무턱대로 사용하면 인증에서 골치아픔. 🙁

 




Pages:1234567...46