[강연] 마크 트웨인의 '허클베리핀의 모험'



지난 달에 들었던 강연에 대해 이제야 정리를 하게 되었다. 요즘 신경 쓸 일이 너무나 많아 정신적으로 조금 힘들다.

마크 트웨인은 헬리 혜성이라는 별명을 가지고 있었다. 그는 헬리 혜성이 나타난 1835년에 태어나 이 혜성이 다시 모습을 보인 1910년 까지 살았다. 또한 문자 그대로 혜성같은 존재의 삶을 보여주었기 때문이라고 한다.

그는 미국 문단에서 유럽과는 전혀 다른 미국만의 독특한 소설세계를 처음으로 선보인 '혜성' 같은 작가였다. 당시 미국지식은 유럽의 문학스타일을 지향했다고 한다. 그러나 마크 트웨인은 그러지 않았다고 한다. 마크 트웨인은 미국 토박이의 거칠고 밝은 구어체의 표현들을 펼쳐보였다. 남부 서민들의 속어와 방언들을 과감하게 담아내는 획기적인 문장들은 미국문학의 새로운 전통을 확립하는데 크게 이바지합니다.

허클베리핀과 톰소여의 모험에서 공통적으로 등장하는 배경은 미시시피 강이다. 미시시피 강은 어른 세계의 어리석음과 거짓으로 채워진 문명세계를 넘어서는 가치를 제공한다. 또한 윤리를 넘어선 자유와 모험을 제공하면서 주인공의 삶을 건강하면서 성숙해지는 방향으로 인도해가는 역할을 수행한다.

솔직히 아직 마크 트웨인의 책을 한번도 읽지 못했다. 기회가 나면 한번 읽어보려 한다.



Continue reading

No comments

[연구자료] 임베디드 시스템의 기초 (3)

이 글은 대학원에서 임베디드 관련 수업을 받은 후, 필자 스스로 임베디드에 대해 정리하기 위해 쓰여졌습니다. 

임베디드 시스템 보안

1) 안전성 모델

일반적인 보안 모델
  • 접근이 쉽지 않음
  • 방화벽 등 추가적인 대응책 마련되어 있음
  • 서버실 등 물리적인, 논리적인 접근통제 및 출입통제시스템이 되어 있어서 접근이 어려움 : 통신 중에 암호를 이용하여 통신되는 데이터 보호되어 있음

임베디드 보안 모델
  • 자원이 제한적이기 때문에 추가적인 방화벽을 설치하기가 어렵고 분실이나 탈취가 용이하기 때문에 jtag로 메모리 탈취가 가능하다.
  • 데이터 보호를 위해 암호 이상의 것이 필요함
사례)
임베디드 디바이스의 특성상. 장치의 접근이 용이하기 위해 정보가 유출될 수 있음
일반적으로 핸드폰 as수리를 업체에 맡긴 이후에 사진등의 개인정보가 외부로 노출된 사례가 있다. 이 때문에 임베디드 디바이스의 접근을 원천적으로 차단하고 물리적 공격에 대한 안전성을 확보하는 것이 임베디드 디바이스 에서는 매우 중요하다.

2) 소프트웨어를 이용한 보안 실패 사례

예) Apple 의 Fairplay DRM 기법
  • PyMusique(파이뮤지크)라는 프로그램에 의해서 쉽게 DRM이 제거됨
  • 2007년 4월, 스티브 잡스는 DRM 없는 음악파일을 판매할 것이라고 언급함
  • 해커들은 항상 DRM 을 공격하기 위한 방법을 찾을 것이고, DRM 자체가 완벽하기 어려움

3) 하드웨어를 이용한 보안 실패 사례
예) Aladdin eToken에 물리적 접근

4) 안전한 임베디드 시스템 설계 방법
  • 속도, 면적, 전력 외에 추가적으로 안전성을 고려한 설계 방법이 필요함
  • Zero-risk 보안은 존재하지 않음
  • 동기, 시간, 자원만 충분히 보장되면 공격자는 어떤 시스템이든 깰 수 있음

예) Zero-power 설계는 전세계 어디에도 존재하지 않음

  • 그러나 Low-Risk 보안은 충분히 가능함 : 보호되어야 할 대상/이유/위협요소 등을 사전에 고려하여 설계함

예) Low-Power 시스템은 존재함

5) 외부로부터 접근 차단
  • 어떤 제품은 간단한 도구(드라이버, 칼 등)를 이용하여 쉽게 분해가 가능함
  • 접착제 사용하여 동봉
  • 그러나 이 역시, 열로 접착제를 부드럽게 하고 칼로 쉽게 분해 가능함
  • 이를 막기 위해 높은 융해점을 갖는 접착제를 사용함, 접착제보다 제품이 먼저 융해 되도록 함
  • 또한 제품의 외피가 한 덩어리가 되도록 용접할 수도 있음, 제품을 열기 위해서는 외피를 파괴할 수 밖에 없도록 함


6) 외부 인터페이스
  • 일반적으로 외부와 연결하기 위한 인터페이스가 필요함 : JTAG, RS232, USB
  • 외부 연결을 위한 인터페이스는 공격자에게 매우 유용한 정보를 제공함 : 데이터, 키, PIN 등
  • 평범하지 않은 인터페이스를 사용함 : OTP 인터페이스 (커넥터 위에 스티커로 동봉)

7) 외부 인터페이스를 이용한 공격
  • 외피를 제거하고 계측기(멀티미터, 오실로스코프 등)를 이용하여 기능이나 동작을 확인함 : 칩에 연결된 핀들의 로직 상태로 칩의 상태를 확인할 수 있음
예 ) 핀의 High나 Low 전압인가 후 결과 확인
  • 하드웨어 또는 소프트웨어 기반 프로토콜 분석기를 이용 통신 모니터링
  • USB : SnoopyPro
  • RS232와 병렬포트 : PortMon
  • 네트워크 프로토콜 : Ethereal
  • 오작동을 일으키기 위하여 비정상적인 패킷을 전송함.
    • 만약 디바이스가 에러를 컨트롤하지 못한다면, 공격자에게 유용한 오동작 실행
  • 필요하지 않는 인터페이스는 물리적으로 제거함 : JTAG, Programming 등

8) JTAG ( Joint Test Action Group)
JTAG (IEEE 1149.1) 인터페이스 -> 테스트와 디버깅을 위한 산업 표준
  • 시스템 레벨 테스트, 바운더리 스캐닝, 하위레벨 테스트
  • JTAG 인터페이스는 종종 보안 취약점을 노출함
  • 스탠다드 바운더리 스캔 인터페이스는 Core State와 관계없이 디바이스의 핀에 대한 정보를 제공함
  • 이 정보는 외부와 연결이 가능할 뿐만 아니라 RAM, Flash 메모리와 같은 다른 컴포넌트에 접근을 허용함
  • 다른 외부의 디바이스를 이용하여 Flash 메모리를 다시 프로그래밍 할 수 있음

JTAG 는 프로그램 개발시에는 매우 유용한 기능이지만, 제품이 출시가 된 이후에는 매우 위험한 기능이다.
  • 선을 자르거나 퓨즈를 끊어 JTAG를 못쓰게 하지만, 공격자는 선을 잇거나 퓨즈를 교체해 다시 사용할 수 있게 할 수 있음
  • 현실적으로 기능을 제거하기가 매우 어렵다.
  • 복잡한 패키지 방법을 이용하여 원천적으로 칩으로의 접근을 방지함
예) 에폭시, BGA, COB, CIB

Continue reading

No comments

[연구자료] 임베디드 시스템의 기초 (2)

이 글은 대학원에서 임베디드 관련 수업을 받은 후, 필자 스스로 임베디드에 대해 정리하기 위해 쓰여졌습니다. 

임베디드 시스템 필요성
  • 1. 특정한 업무를 효과적으로 수행
  • 2. 가격대 성능 최대화


특징
  • 특정 응용에 특화됨(마이크로프로세서, OS 등)
  • Real-Time OS 사용 또는 수행 능력 보유
  • 소형, 경량, 저전력
  • 열악한 환경 노출에 견디는 안정성 보유
  • 편리한 I/O 제공
  • 점점 디자인이 중요시 됨
  • 대량 생산성 및 가격 경쟁력 보유
  • 융합(Convergence) 기능 수행이 추세로 영역이 중복됨

Embedded System 의 등장 초기
  • 낮은 연산능력(4/8/16 bit Microprocessor)
  • 언어 : Assembly Language
  • 순차적으로 등장하는 응용소프트웨어

Embedded System 의 현재
  • 높은 연산능력(32/64 bit Microprocessor)
  • 언어 : C/C++ Language
  • 운영체제(OS) 사용 : 멀티태스킹/네트워킹

<참고> 임베디드 시스템의 4대 응용분야는 다음과 같다
제어 응용
  • 실시간성이 강함
  • 공장자동화, 로봇 제어, 공정제어 등

단말
  • 저전력, 소형 등이 요구됨
  • 핸드폰, PDA 등

통신장비
  • 다양한 입출력 장치가 요구됨
  • 집속기, 교환기

사무용, 가정용 정보기기
  • 고성능의 CPU 요구
  • 프린터, 인터넷 냉장고, 게임기 등


임베디드 하드웨어 특징


  • PC 와는 다르게, 임베디드는 범용이 아니므로 정해진 기능을 위한 사양을 탑재함

1) 프로세서
  • 임베디드 시스템의 가장 중요한 요소
  • 반도체 회사에서 각각 많은 종류의 제품들을 시판함
  • PC에 비해 저전력이 요구됨

1-1) 프로세서의 속도
  • 수 MHz에서 수십 혹은 수백 MHz의 클럭 속도
  • 8비트, 16비트, 32비트, 64비트 (데이터 버스의 크기와 기본 연산의 단위에 따라서 선택)

1-2) 종류
  • 일반 PC를 설계할 때의 프로세서의 선택은 intel 과 AMD 로 나뉘지만,
  • 임베디드 시스템의 경우, 기능의 복잡도 및 시스템의 크기 면에서 매우 다양하다.

마이크로 프로세스 : 데이터부와 제어부로 구성된 CPU core 만 포함
마이크로 콘트롤러 : CPU Core에 여러 종류 및 다양한 크기의 메모리와 다양한 주변 장치들까지도 포함

2) 메모리

  • Embedded System 에서 메모리의 선택 : 운영체제와 응용 소프트웨어의 중요도와 크기에 따라 선택함
  • Embedded System 에서 메모리의 주요 역할 : 프로그램과 데이터 저장


3) 주변장치

3-1) 입출력 장치
  • 임베디드 시스템의 동작 형태 : 외부 입력에 반응하여 정해진 작업을 실행하며 실행된 결과값을 출력
  • 임베디드 시스템의 입력방법 : 폴링 : 명령어를 사용하여 입력 핀 또는 값을 계속 읽어서 변화를 알아내는 것, 인터럽트 : CPU 자체가 하드웨어적으로 그 변화를 체크하여 변화 시 일정한 대처를 하는 것

3-2) 임베디드 리눅스
  • 일반 리눅스 : 일반 데스크탑 환경인 고성능 프로세서와 대용량 메모리 환경에서 동작하는 범용 컴퓨터용 리눅스
  • 임베디드 리눅스 : 저 성능의 마이크로 프로세서와 제한된 메모리 환경에서 동작하는 임베디드 시스템용 리눅스

3-3) 교차 개발 환경 (Cross Development Envirunment)
  • 실제 S/W 가 수행될 시스템과 개발하는 시스템이 다른 개발 환경



Continue reading

No comments

[연구자료] 임베디드 시스템의 기초 (1)

이 글은 대학원에서 임베디드 관련 수업을 받은 후, 필자 스스로 임베디드에 대해 정리하기 위해 쓰여졌습니다. 

임베디드 시스템 관련 용어

1. 임베디드 시스템(Embedded System)
  • 마이크로 프로세서가 내장되어 있고, 마이크로 시스템을 구동하여 특정한 작업을 처리하기 위하여 프로그램이 내장되어 있는 시스템
  • 어떤 제품이나 솔루션에 추가로 탑재되어 그 제품 안에서 특정한 작업을 수행하도록 하는 솔루션
  • 예) 주된 용도가 전화인 휴대폰에 텔레비전 기능이 들어가 있다면, 테레비전 기능(시스템)이 바로 임베디드 시스템임

    2. 임베디드 소프트웨어 (Embedded Software)
    • 개인용 컴퓨터 이외 전자 기기의 임베디드 시스템에 내장(Embedded)되어 제품에 요구되는 특정한 기능을 구현할 수 있도록 하는 소프트웨어
    예)
    일상에서 쉽게 접하는 휴대폰, 텔레비전, 세탁기, 엘리베이터 등의 제품 안에 내장된 시스템에서 하드웨어를 제외한 나머지 부분이라고 말할 수 있음

    3. 임베디드 소프트웨어(Embedded Software)
    • 임베디드 운영 체계 (OS), 미들웨어, 응용 프로그램, 소프트웨어 개발 도구 등이 포함됨

    4. 임베디드 운영 체계(OS)
    • 팜 운영 체계(Palm OS), 마이크로소프트사의 WinCE, 공개 소스 기반의 임베디드 리눅스


    5. 펌웨어
    • ‘임베디드 소프트웨어’와 바꿔 쓸 수 있는 말임.
    • 일반적으로 롬(ROM)에 저장된 하드웨어를 제어하는 마이크로 프로그램을 의미함.
    • 펌웨어은 일반 응용 소프트웨어와 구분되어 소프트웨어와 하드웨어의 특성을 모두 가지고 있다고 할 수 있음
    예)
    1. 기능을 제어하는 모든 회로를 하드웨어로만 만들면, 그 구조도 대단히 복잡해지고 심지어는 논리적인 표현을 하기가 어려운 부분도 발생함
    2. 상당부분을 소프트웨어로 대체하되, 그 소프트웨어가 저장된 기억 장치를 하드웨어의 제어 회로 중의 중심부분으로 구성하면 매우 간단하면서도 적은 비용으로 문제를 해결할 수 있게 됨
    3. 이렇게 만든 하드웨어적인 소프트웨어를 펌웨어라 함

    6. 미들웨어
    • 한 기업에 설치된 다양한 하드웨어, 네트워크 프로토콜, 응용 프로그램, 근거리통신망 환경, PC 환경 및 운영체제의 차이를 메워주는 소프트웨어
    • 분산 컴퓨팅은 초고속정보통신망 등 통신망의 구축이 확산됨에 따라 그 중요성이 부각되고 있지만, 이를 실현하기 위해서는 서로 다른 운영체제와 서버 프로그램과의 호환성 뿐만 아니라 이종의 통신 프로토콜을 사용하는 네트워크 간의 접속, 네트워크 자원에 대한 접근, 그리고 시스템을 연결해 단일한 사용자 환경으로 만들어 주는 것이 필수적임
    • 이처럼 분산 컴퓨팅 환경을 구현하는데 발생하는 여러 문제점들을 해결하기 위해 등장한 소프트웨어가 미들웨어임.

      Continue reading

      No comments

      Popular Posts

      Powered by Blogger.