IoT Devices Compliant with JC-STAR Using Linux as a Container OSTomohiro Saneyoshi
?
Security requirements for IoT devices are becoming more defined, as seen with the EU Cyber Resilience Act and Japan’s JC-STAR.
It's common for IoT devices to run Linux as their operating system. However, adopting general-purpose Linux distributions like Ubuntu or Debian, or Yocto-based Linux, presents certain difficulties. This article outlines those difficulties.
It also, it highlights the security benefits of using a Linux-based container OS and explains how to adopt it with JC-STAR, using the "Armadillo Base OS" as an example.
Feb.25.2025@JAWS-UG IoT
12. シフトの実装
let termShift d t =
let rec walk c t = match t with
TmVar(fi,x,n) -> if x>=n then TmVar(fi,x+d,n+d)
else TmVar(fi,x,n+d)
| TmAbs(fi,x,t1) -> TmAbs(fi,x,walk (c+1) t1)
| TmApp(fi,t1,t2) -> TmApp(fi,walk c t1,walk c t2)
in walk 0 t
項tをd個シフトする
内部のシフトは内部関数walkで表現
13. 代入関数の実装
let termSubst j s t =
let rec walk c t = match t with
TmVar(fi,x,n) -> if x=j+c then termShift c s
else TmVar(fi,x,n)
| TmAbs(fi,x,t1) -> TmAbs(fi,x,walk (c+1) t1)
| TmApp(fi,t1,t2) -> TmApp(fi,walk c t1,walk c t2)
in walk 0 t
項tのj番の変数へ項sを代入する
実際の処理は内部関数walkで表現
22. ラムダ式による実装①
c_0 = lambda s. lambda z. z;
scc = lambda n. lambda s. lambda z. s (n s z);
plus = lambda m. lambda n. lambda s. lambda z. m s (n s z);
times = lambda m. lambda n. m (plus n) c_0;
fix = lambda f. (lambda x. f (lambda y. x x y)) (lambda x. f
(lambda y. x x y));
cn = lambda f. lambda m. if iszero m then c_0 else scc (f
(pred m));
churchnut = fix cn;
realnut = lambda m. m (lambda x. succ x) 0;
使う関数等をいろいろ宣言しとく
23. ラムダ式による実装②
w = 4;
bit = (churchnut 32);
answer = times (churchnut w) bit;
realnut answer;
変数wに手打ちで4を入れとく
32をChurch数に変換してbitに入れとく
答えは4と32をかけたものである
答えをChurch数からプリミティブな数に変換
26. ラムダ式による実装
c_1 = lambda s. lambda z. s z;
tru = lambda t. lambda f. t;
fls = lambda t. lambda f. f;
pair = lambda f. lambda s. lambda b. b f s;
fst = lambda p. p tru;
snd = lambda p. p fls;
zz = pair c_0 c_0;
ss = lambda p. pair (snd p) (plus c_1 (snd p));
prd = lambda m. fst (m ss zz);
a = 5; b = 7;
answer = times (prd (churchnut a)) (prd (churchnut b));
realnut answer;