Yocto에 OSTree upgrade 적용(2) - 부팅 절차

이전글 Yocto에 OSTree upgrade 적용(1) - 이미지 생성 에서는 Yocto 빌드 과정을 통한 target 에 write 할 이미지를 만드는 과정까지 설명 하였다. 이번글에서는 부팅 이미지를 이용하여 부팅 절차를 설명한다. 디스크 이미지 파일최종적으로 디스크에 쓰는 이미지를 Yocto 의 wic 툴을 이용하여 확인해 보면 다음과 같이 두개의 partition 으로 구성된다. Partiton 1(fat16): DOS FAT16 의 부팅 디스크로 u-boot 과 부팅에 필요한 설정 파일이 있다. 파일 중 boot.scr 파일이 있는데, 이 파일로 u-boot 의 script를 대체하여 OSTree 이미지가 로드되도록 한다.

TLS/암호 알고리즘 쉽게 이해하기(2) - Random

암호 알고리즘에서 난수는 중요한 요소이다. 예를 들어 암호 키 생성 시에도 난수로 만드는데, 생성된 난수가 편향성을 가지게 되면 암호 알고리즘이 아무리 좋아도 취약해 질 수 밖에 없다. 한 예로 오래전 일이지만, 2008년 Debian linux OpenSSL 0.9.8 의 잘못된 patch로 seed를 current process ID 로만 사용하여 결과적으로 65,536개의 값 중 하나로 난수가 생성되어 brute force 공격으로 키를 찾을 수 있는 문제가 발생한 적도 있고, 이외에도 CWE(Commn Weakness Enumeration) 에서 random 으로 검색해보면 문제가 되었던 여러 케이스들을 찾아 볼 수 있다.

TLS/암호 알고리즘 쉽게 이해하기(1) - 개요

HTTPS의 SSL/TLS를 이해하는 것은 생각만큼 쉽지 않다. React, kubernetes 같이 오픈 생태계에서 핫 한 분야들은 다양한 시각으로 설명한 자료들이 많아 여러 방법으로 이해할 수도 있겠지만, 수십여년간 수학자, 암호학자들에게서 다듬어진 암호학에 대해서는 말랑말랑한 자료를 찾기가 쉽지는 않다. 좋은 자료라고 찾아 보아도 읽다 보면 이내 수많은 용어들과 수학 이론에 막혀 버리곤 한다. 그렇다고 제대로된 이해없이 SSL/TLS 나 암호화 알고리즘을 사용하게 되면 작은 실수로 인하여 보안에 심각한 문제를 만들 수도 있다. 여기에서는 일반 개발자를 위한 관점으로 암호 알고리즘과 TLS/SSL을 정리해 보기로 한다.

Yocto에 OSTree upgrade 적용(1) - 이미지 생성

Linux PC 의 경우 각 배포본 마다 yum, rpm, dpkg 등의 package manager를 제공하여, 이를 이용하여 패키지를 최신 버전으로 유지 관리할 수 있다. 임베디드의 경우도 Raspberry Pi OS, armbian 은 PC 에서 사용하는 package manager 방식을 제공하고, Yocto 도 rpm 등을 이용하여 패키지 관리가 가능하다. 이들 패키지 매니저는 패키지 데이타베이스를 업데이트 하고, 패키지 업그레이드 시 의존성 있는 추가 패키지도 다운로드 받아서 설치/삭제하고, 설치 전/후처리를 위한 script를 자동으로 실행시켜서 최종 상태를 만들어 준다.

Port Mirroring 기능 지원 저렴한 스위치 - GS108Ev3

네트워크 프로토콜을 개발 하다보면 Wireshark 등으로 패킷을 캡쳐하여 분석할 일이 종종 생긴다. Linux 장치라면 tcpdump나 wireshark을 실행해서 직접 패킷 캡쳐가 가능하지만, 그렇지 않은 경우에는 Network TAP 이나 이더넷 스위치의 port mirroring 기능을 사용하여서 패킷을 캡쳐하여야 한다. Amazon 등에서 검색해보면 Network Tap 도 $200~300 정도로 비싼 편이고, 포트 미러링와 유사한 기능도 고급 스위치에서만 지원된다. 찾다 보니 Netgear GS108Ev3(8포트), GS105Ev2(5포트) 가 가격도 5~8만원 정도로 비싸지 않고, 포트 미러링 기능이 지원되어 소개한다. 외관은 금속으로 되어 있어 크기에 비하여 무게가 묵직하게 나간다.

Yocto Project 개발하기(3) - 개발 시 로컬 패키지 관리하기

Yocto Project 개발 절차는 기본적으로 이미 개발이 완료된 패키지들의 recipe를 만들고, 이를 bitbake로 전체 이미지를 빌드하는 과정이다. 하지만 개발 진행 중인 소프트웨어 패키지를 yocto에 추가하고, 이를 계속 수정 개발을 할 때 어떤 방식으로 관리를 할지 고민을 하여야 한다. 여기에서는 이와 같이 개발 중인 패키지를 yocto 에 추가하여 빌드 하는 방법을 알아본다. Yocto Project 개발하기(1) - Orange Pi 보드 빌드 Yocto Project 개발하기(2) - Custom Layer 만들기 Yocto Project 개발하기(3) - 개발 시 로컬 패키지 관리하기 Yocto Project 개발하기(4) - Yocto SDK 빌드 Yocto Project 개발하기(5) - Yocto eSDK 이용한 개발 모델 방법들예를 들어 u-boot 를 수정 하는 경우를 예로 들어 보자.

Yocto Project 개발하기(2) - Custom Layer 만들기

이전 글 에서 meta-sunxi 를 추가하여 orage pi 용으로 빌드를 만들었고, 이번 과정은 project 용으로 meta layer를 만들어서 관리하는 방법을 설명한다. 실제 개발 과정을 이해하기 좋도록 meta layer 를 만들어 가는 과정을 설명한다. Yocto Project 개발하기(1) - Orange Pi 보드 빌드 Yocto Project 개발하기(2) - Custom Layer 만들기 Yocto Project 개발하기(3) - 개발 시 로컬 패키지 관리하기 Yocto Project 개발하기(4) - Yocto SDK 빌드 Yocto Project 개발하기(5) - Yocto eSDK 이용한 개발 모델 Layer 및 machine 생성프로젝트를 sc-gateway 라고 명하고(이름에 특별한 의미는 없음), 이를 layer로 만든다.

Nearley 로 설정용 파서 만들기

이 문서에서는 Nearley parsing toolkit 을 이용하여 IoT 기기에서 사용할 설정 정보의 binary pack 및 loader 를 생성하는 방법을 설명한다. 예를 들어 아래와 같은 간단한 문법을 정의하고, 이를 Nearley 로 parser를 만들어 구분 분석을 하여, 디바이스에 로드할 수 있는 바이너리 데이터로 변환을 한다. 그리고, 변환된 바이너리 파일을 장치에서 로드하여 설정 정보를 얻는다. 1 2 3 4 5 6 7 topic/test1 { temperature I8; humidity U8; pressure U16; timestamp U32; name STR[12]; } 배경아래 그림과 같이 IoT 기기는 기기 고유의 컨트롤을 담당하는 Host MCU와 별도의 Wi-Fi 모듈로 IoT 기능을 구현하는 경우가 많다.

Yocto Project 개발하기(1) - Orange Pi 보드 빌드

이 문서는 Orange Pi Zero 보드에서 Yocto Project를 이용하여 배포본을 만들고, 개별 패키지를 관리하는 방법에 대하여 설명한다. 설명은 다음과 같이 나누어서 설명을 할 예정이다. Yocto Project 개발하기(1) - Orange Pi 보드 빌드 Yocto Project 개발하기(2) - Custom Layer 만들기 Yocto Project 개발하기(3) - 개발 시 로컬 패키지 관리하기 Yocto Project 개발하기(4) - Yocto SDK 빌드 Yocto Project 개발하기(5) - Yocto eSDK 이용한 개발 모델 이 문서에서는 첫번째 과정인 필요한 layer를 추가해서 빌드하여 타겟에 올려서 동작을 확인하는 과정을 설명한다.

Wireshark 으로 TLS 캡쳐 및 디코딩 하기

프로토콜을 개발하거나 검증하려고 할 때 SSL/TLS 암호화 채널로 전송되는 데이타를 디코딩하여 확인이 필요할 때가 있다. 이 글에서는 시험하려는 프로그램의 수정 없이 또는 최소한의 수정으로 디코딩 하는 방법을 설명한다. 개요TLS 채널의 초기 셋업 절차는 크게 보면 다음과 같은 절차로 이루어진다. 서버 인증서를 받아서 검증하기 필요하면 클라이언트 인증서를 받아서 검증하기 암호화 방식을 이용하여 대칭키 교환 대칭키를 이용한 암호화된 데이타 송수신 패킷을 분석하기에 필요한 사항은 결국은 위 세번째 과정에서 교환한 대칭키(Master Secret)를 얻는 것이다.