LAN과 WAN 그리고 Ethernet

Posted by ironmask84
2017. 8. 8. 11:11 컴퓨터공학/통신 기술


센서를 이용하는 HW 보드 제품을 연구개발하다 보니,

이제는 LAN, WAN 포트를 통한 데이터 통신 테스트를 위해...

어렴풋이 알고있는 LAN, WAN, Ethernet에 대한 개념 정리를 하게되네요 ㅎㅎ

간단하게 얘기드리면,

LAN, WAN은 네트워크의 유형입니다.

그리고 Ethernet은 네트워크에 사용되는 프로토콜 즉, 규약의 한 종류입니다.




LAN (Local Area Network)

- 통신 주체인 자신이 포함된 동일 네트워크를 의미하며 비교적 작은 범위로 구성된다. (사용자가 포함된 지역 네트워크)

- 연결 방법 : LAN장비를 사용하여 연결 실시
- 연결 장비 : NIC(랜카드) , Switch , T/P Cable

- 스위치, 랜카드(NIC), UTP 캐이블, 무선 AP를 사용하여 구축

- Ethernet 프로토콜 사용

- 버스 토폴로지나 스타 토폴로지 방법으로 구성

- 특징 : 네트워크 구축시 비용이 증가하지만 통신 , 유지/보수 비용이 감소한다.

- 통신 Protocol : Ethernet (IEEE에서 지정한 LAN구간 표준 Protocol)

      * Ethernet : 10Mbps
      * FastEthernet : 100Mbps
      * GigabitEthernet : 1,000Mbps

- 통신 주소 : Mac-address (16진수 48bit , HH-HH-HH-HH-HH-HH)


WAN (Wide Area Network)

- 자신이 포함되지 않은 외부 네트워크구간을 의미하며 비교적 큰 범위로 구성된다. (분리된 LAN과 LAN을 연결하는 네트워크)

- 연결 방법 : WAN장비를 사용하여 연결 실시
- 연결 장비 : Router

- 특징 : 일반적으로 ISP로부터 임대회선을 사용하기때문에 네트워크 구축 비용이 감소하지만 통신 , 유지/보수 비용이 증가한다.
- 통신 Protocol : IP  (Internet Protocol : IANA에서 관리), HDLC, PPP,  최근에는 Ethernet 을 많이 사용
- 통신 주소 : IP address (10진수 32bit , A.B.C.D)


라우터는 서로 다른 네트워크를 연결하며, 로컬 환경에서 리모트 환경으로 원거리 데이터 전송을 담당한다.

이때, 라우터로 연결된 WAN 구간에서 사용하는 대표적인 프로토콜 중 점-대-점 환경에서

사용하는 HDLC 와 PPP가 있으며, 패킷 스위칭 환경에서 사용하는 Frame-Relay가 있다.

 

WAN 구간은 ISP로부터 고객 환경에 적합한 서비스를 임대하는 방식이므로 유지 보수 비용이

지속적으로 나온다는 특징을 갖고 있으며, 관리는 ISP 업체 관리자가 시행하는 것이 일반적이다.


하나의 LAN에서 다른 LAN으로 가려면 반드시 라우터를 거쳐야한다.

윗 그림 WAN 구간에서 사용하는 전송 프로토콜이 HDLC,PPP 등 있는것이다.

 

 

데이터링크 2계층 전송 프로토콜 간략한 설명

 

PPP(Point-To-Point)

점대점 프로토콜이라고 불리우는 이 프로토콜은 네트워크 분야에서 두 통신 노드 간의 직접적인 연결을 위해

일반적으로 사용되는 2계층 데이터 링크 전송 프로토콜이다.

 

HDLC(High-Level Data Link Control)

HDLC 프로토콜은 Cisco 전용 프로토콜이다. PPP와 마찬가지로 2계층 데이터링크 전송 프로토콜이다.

 

Frame-Relay

PPP와 HDLC와 마찬가지로 2계층 데이터 링크 전송 프로토콜이고

HDLC나 PPP와는 다르게 point to multi-point 가 가능하다.

즉 뭐냐.. HDLC나 PPP는 단말과 서버가 1:1 작용인 Point to Point 인데

이건 1:다수(N) 이 가능한 point to multi-point 란 뜻이다.

 

 

☆참고로 HDLC나 PPP는 WAN구간의 프로토콜이지만 2계층장비 데이터링크 전송 프로토콜이다.

꼭 잊어버리지 말고 기억해 두자!

( 3계층 프로토콜로 착각하는 분들이 많음 )


common carrier(공동망 사업자)에 의해 운영된다. (한국 같은 경우 SK, SKT, LG U+ 등)

WAN 경로 구축에는 두 가지 기술적 방안이 있다.


Circuit Switching : 주로 전화망에 사용

Packet Switching : 인터넷 및 여러 분야에서 광범위하게 사용


Circuit Switching (회선 교환 방식)

물리적 회선을 잡아서 통신하는 방식이다.


Medium : 전송 매체. 동축 케이블, 광섬유 등 물리적 매체의 종류를 가리킨다. 

도로에 비유하면 비포장 도로, 콘크리트 도로, 아스팔트 도로와 같은 종류를 가리킨다.

Link : Medium + Protocol

도로에 비율 하면 "강남대로" 라는 링크는 : Medium은 아스팔트 도로이고 대한민국 교통법규라는 프로토콜에 맞춰서 운영된다.

Channel : 한 회선을 여러명이 나눠쓸 수 있도록 시간대별이나 주파수 폭 등으로 구분

도로에 비유하면 차선에 해당한다.

Circuit : 한 호스트에서 다른 호스트로 가기 위하 전체 경로

도로에 비유하면 [대구시청 -> 북대구 IC > 무슨 고속도로 -> 무슨 IC -> 3번 국도 -> 부산 대로 -> 해운대로 -> 부산시청] 이 대구시청에서 부산시청간 Circuit이다.


Packet Switching (패킷 교환 방식)

패킷이라는 작은 조각 단위로 데이터를 나눠 각각을 각 node를 거쳐 목적지까지 전달시킨다.


Virtual Circuit방식과 Datagram방식이 있다.

Datagram : 패킷을 하나씩 발송한다. 각 노드에선 네트워크 상황에 따라 각각의 경로를 임의 결정해서 보낸다.

Virtual Circuit : Store & forward 방식으로 패킷들을 잠깐 저장 해 뒀다가 적절한 가상의 경로(Circuit)을 설정해서 한꺼번에 보낸다.




아래는 보너스로 ISP 및 국내 인터넷 망 구조에 대한 내용입니다. :)

Internet Structure

Internet Service Provider (ISP

 - 사용자에게 인터넷이 제공되는 가장 말단의 관문

 - 사용자에게 temporary IP를 제공

Point of Presence (POP)

 - 가입자가 ISP로 접속하기 위한 접속점

 - 접속과 인증 절차를 관장

Network Service Provider (NSP)

 - ISP에 Backbone Network를 제공

Network Access Point (NAP)

 - ISP끼리의 접속점


아래 두 그림을 비교해서 보면 이해가 갈 것이다.


Internet Structure Example





국내 인터넷 망

참조 사이트
http://blog.naver.com/izam23/90149229470
http://blog.naver.com/asd7979/30102690564
http://raisonde.tistory.com/240



 

다시 주목받는 Bluetooth 통신 BLE Beacon

Posted by ironmask84
2017. 7. 28. 11:42 컴퓨터공학/통신 기술


BLE(Bluetooth Low Energy)란?         

 

Bluetooth는 주변에서 자주 접하는 무선 통신 방법 중 스마트폰, 마우스, 이어폰 등 여러 방면에서 사용 되는 근거리 무선 통신방법의 하나로, Bluetooth v4.0기준 2가지 기술로 구분하고 한다.

– Bluetooth Classic

– Bluetooth Smart (BLE)

– Bluetooth Smart Ready(Classic and Smart)


출처 : http://www.Bluetooth.com

Bluetooth Classic은 데이터 스트리밍, 대용량의 데이터 전송 서비스를 지원하며 최대 데이터 전송률과 전력소모가 높다는 특징을 갖고 있어 적은 용량의 배터리 사용 및 작은 데이터 전송을 사용 하는 분야에서 약점을 갖고 있다. 이를 보안하기 위해 등장한 기술이 Bluetooth Smart 또는 BLE라 불리는 경량화된 Bluetooth v4.0 기술이다.



출처 : http://verticalplatform.kr/archives/2010

Beacon과 BLE(Bluetooth Low Energy)

Apple과 Paypal이 최근 공개한 BLE 방식의 Beacon 방식은 아니지만 두 사업자들 보다 먼저 Beacon을 이용해 솔루션을 구축한 사업자가 있다. Local Commerce의 구세주라 불리우는 Shopkick이다. Shopkick은 저주파 Sound Beacon을 통해 자동체크인 기능을 중심으로 모바일 리워드 서비스를 제공며 약 3년간  500만 명의 가입자를 확보하는 등 성공가도를 달리고 있다. 이미 Beacon을 이용해 성공한 사업자가 있었음에도 불구하고 최근 Beacon이 주목을 받는 것일까? 그 첫번째 이유로 BLE 기술을 꼽을 수 있다. 

Bluetooth 기술은 1994년 Ericsson의 무선 개발 연구를 기반으로해 1998년 Ericsson, Nokia, Tosiba, IBM, Intel 등이 참여해 조직한 Special Interest Group에 의해 개발되었다. 2010년 6월 30일에 채택된 Blutooth4.0이 가장 최신 버전 이며, Bluetooth4.0은 기존의 버전과 다른 주요 특이점을 가지고 있는데 동전 크기만한 전지만으로 1년 이상 Device를 사용할 수 있을 정도로 저전력의 장점을 가지고 있다. 또한 2011년 말에 Bluetooth Smart와 센서를 위한 Bluetooth Smart가 BLE의 새로운 로고로 선보였다. 또한 이전 Bluetooth 버전의 경우 Slave 기기가 7대 까지만 가능했으나 Bluetooth 4.0부터는 무제한 동기화가 가능하게 되었다.

Shopkick의 Sound Beacon과 비교해 기기의 소형화, 저전력화, 그리고 벽과 같은 물리적인 환경 요인의 영향이 적은 Bluetooth 의 장점들으로 인해 Apple과 Paypal은 BLE를 선택한 것으로 판단된다. 이미 이러한 장점들로 인해 다양한 IoT 제품들이 대부분 Bluetooth를 적용하고 있다.

 

Beacon과 NFC (Payment & 위치측위)

Google은  NFC 기반 Wallet 서비스를 통해 Local Commerce Redemption Loop를 닫고자 했으나 이해관계자 간의 불화와 동글 보급에 대한 문제 등으로 인해 현재까지 결제 또는 전자태그를 이용한 정보를 읽는 수준의 서비스만이 제공되고 있다. 최근 Google이 Cloud 기반의 Google Wallet 서비스를 지원함에 따라 NFC의 종말을 암시하는 것이 아니냐는 목소리가 힘을 얻고 있다. 이런 상황속에 Paypal과 Beacon을 이용한 결제 서비스를 공개 함에 따라 모든 이들이 BLE Beacon에 주목하게 만들었다. Apple 역시 결제와 연계한 실내 위치 측위 기반의 플랫폼이 iBeacons를 내놓음에 따라 Beacon은 더욱 주목을 받을 수 밖게 없는 분위기다.

BLE Beacon은 NFC와 비교해 전송거리가 10~50 미터 까지 넓기 때문에 위치측위 기능을 통한 마케팅 플랫폼과 결제 서비스를 통합해 제공할 수 있는 우위를 가지고 있다. 뿐만 아니라 BLE Beacon은 NFC 보다 이해관계자가 적어 Local Commerce Redemption Loop를 닫을 수 있는 Key Man이 되지 않을 까하는 기대를 모으고 있다. (Redemption Loop에 대한 자세한 내용이 알고 싶으면 9월 28일에 올라온  "커머스 플랫폼의 성공, 'Redemption Loop'를 닫는데 달렸다."  참조)

 

개방성으로 인한 잠재력

Beacon으로서 Apple의 iBeacons이 Shopkick과 비교해 더 주목을 받는 이유는 3rd Party 개발자들(ex. Estimote, Roximity 등)의 참여로 다양한 풍부한 애플리케이션이 개발되고 이를 다시 스마트폰 이용자가 이용하게 되는 생태계를 구축했다는 점이다. 또한 Passbook 역시 iBeacons 생태계와 통합되어 Passbook에 저장된 티켓 또는 쿠폰 등이 iBeacons을 통해 좀더 정교한 위치 기반으로 Alert 기능을 제공할 것으로 보인다. Shopkick의 솔루션이 3rd Party 개발자를 포함해 생태계를 구축한다면 현재 단계에서 1단계 Quantum Jump를 할 수 있는 기회를 마련 할 수도 있지 않을까라는 개인적인 생각을 해본다.





'컴퓨터공학 > 통신 기술' 카테고리의 다른 글

LAN과 WAN 그리고 Ethernet  (2) 2017.08.08
최신 WiFi 기술 어디까지 왔나?  (0) 2017.07.28
cdma 1x, cdma 1x evdo, wcdma 간단 비교  (0) 2010.12.02
CDMA 1x EVDO의 정의  (0) 2010.12.02
CDMA2000 1X EVDO의 비교  (0) 2010.12.02
cdma2000 1x EVDO의 초간단 정의  (0) 2010.12.02
 

최신 WiFi 기술 어디까지 왔나?

Posted by ironmask84
2017. 7. 28. 09:36 컴퓨터공학/통신 기술


현재 세상에서는 여러 무선 통신 규격이 존재합니다.
그 중 WiFi 의 동향에 대해 간략하게 소개합니다. ^^



우리 생활에 통신 기술이 발전해온 과거를 조금 되짚어 보겠습니다.. (제 인생 기준 ^^)

1990년대는 모뎀을 이용한 PC통신이 한창 유행이었습니다. (하이텔, 나우누리, 천리안 등)

2000년대 들어서면서 광케이블을 이용한 초고속 유선 인터넷을 통해 인터넷이 보급화 되기 시작했습니다.

2005년 쯤일까요 데스크탑이나 노트북에 사용되는 블루투스를 이용한 무선 마우스, 무선 키보드가 보이기 시작했고,

2007년에는 아이폰이 등장하면서 WiFi을 이용한 무선인터넷, 블루투스를 이용한 오디오 송수신이 활성화 되기 시작합니다.

2009년에 아이폰이 국내 통신사를 통해 정식으로 보급되면서 WiFi와 블루투스 라는 기술은 빠르게 확산되고 인식됩니다.
             이때, 스마트폰이라는 용어가 나돌기 시작합니다.

2010년 이후, 무선통신을 이용한 제품들이 쏟아져 나오기 시작합니다. 
          무선 스피커, 무선 헤드폰, TV 무선연결, 자동차에 접목, 가전제품 접목을 통한 홈네트워크 등
          기존에 있던 제품들에 이러한 무선통신이 탑재됩니다.

그리고 언제부턴가 유비쿼터스라는 용어가 나돌더니, 요즘은 IoT 라는 용어가 나돌기 시작합니다. ㅋㅋ
크게는 둘다 비슷한 뜻으로 어디서든 통신이 이루어지는 세상이 그려지네요.

최근 센서 관련 연구개발에 발을 들여놓게 되어서 무선통신에 다시 관심이 쏟기 시작하는 요즘입니다.


서론이 길었네요..ㅋㅋ WiFi 기술이 발전해온 로드맵은 아래와 같습니다.



최근에는 슈퍼와이파이로 불리는 802.11af의 경우,  54~790MHz사이의 VHF와 UHF에서 TV 화이트 스페이스(TVWS)에서 무선인터넷을 가능하게 하는 무선표준기술입니다.  기존무선보다 도달거리가 3배이상 높고, 투과율은 9배, 커버리지 면적은 16배에 달하는 것으로 알려져있습니다.



                                     [TTA 저널 제공]



 

                                    [TTA 저널 제공] 



아래는 최근 WiFi 이용 동향에 관한 기사입니다.



http://www.etnews.com/20161117000312



http://www.datanet.co.kr/news/articleView.html?idxno=107039

출처 : http://unjerry.blog.me/220991647323



 

머신러닝을 알린 알파고의 알고리즘 분석

Posted by ironmask84
2017. 7. 12. 12:08 컴퓨터공학/IT 트렌드


(출처 : 소프트웨어 센터 웹진 자료)


머신러닝을 알린 알파고의 알고리즘 분석 



인공지능에 대한 관심은 이전에도 있었지만 최근처럼 뜨거운 열풍을 일으킨 것은 역시 알파고(AlphaGo)다. 알파고는 우리나라 이세돌 9단과 바둑 대결을 한 구글 딥마인드(DeepMind)에서 개발된 인공지능이다. 대결 전에는 이세돌 9단의 우세를 점치는 전문가들이 많았지만 실제 경기에서는 알파고의 승리로 끝났다. 그렇다면, 어떻게 컴퓨터가 사람처럼 바둑을 두는 것인지 자연스러운 의문을 가지게 된다. 이번 회에서는 알파고가 바둑을 두는 알고리즘에 대해 단국대학교 소프트웨어공학연구센터의 김규억 박사를 만나 자세한 사항을 들어본다. 





Q: 본격적인 이야기 전에 머신러닝에 대해 설명을 부탁 드립니다. 

머신러닝(Machine Learning)은 컴퓨터에 답이 정해진 샘플 데이터를 넣으면서 반복적으로 학습을 시킨 후, 새로운 문제가 나타나면 스스로 답을 찾을 수 있도록 하는 것입니다. 말 그대로 컴퓨터한테 공부를 가르쳐서 지식을 얻게 하는 것이지요. 학습 자료를 계속 입력하고, 거기서 일정한 패턴을 찾아낸 후 문제가 입력되면 정답을 제시할 수 있는 모델이 만들어집니다(그림1).  



<그림1> 머신러닝의 학습을 통한 예측 모델 생성 



 이렇게 만들어진 모델로 새로운 문제가 제시되면 정답을 찾아낼 수 있는 것이죠. 사람이 수학 문제를 많이 풀면, 비슷한 유형의 문제가 나오면 풀 수 있는 것처럼 컴퓨터도 학습을 하면 별다른 로직 없이 정답을 알려주는 것입니다. 



<그림2> 머신러닝으로 만들어진 모델로 정답 예측 




Q: 컴퓨터가 스스로 생각한다는 것은 잘 알겠는데 어떤 원리인지는 잘 모르겠습니다. 이 부분을 설명 부탁 드립니다. 

우리가 코딩을 할 때, 가장 많이 사용하는 예약어 중의 하나가 바로 “IF THEN”문입니다. 무슨 얘기냐 하면, 선택이 필요한 경우 어떤 것을 선택했는지에 따라 다양한 로직으로 분기를 하게 됩니다. 예를 들어, 고양이 사진을 보여주고 이 것이 고양이 사진인지 컴퓨터가 판단을 한다면 이전에는 주로 “IF THEN”문으로 했는데 아시는 것처럼 “IF THEN”문은 비교해야 하는 대상을 주어야 분기가 가능하다는 것입니다. 그런데, 고양이 형태가 한둘이 아니기 때문에 이를 모두 “IF THEN”문으로 만들기는 거의 불가능하지요. 

기계학습의 경우는 고양이 사진을 컴퓨터한테 보여주면서 “이것은 고양이 사진이야”라고 알려주게 되는데, 다양한 고양이 사진을 수없이 보여주면 어떠한 패턴이 생겨납니다. 패턴이 만들어지면, 새로운 고양이 사진을 패턴에 대입하고 이것이 고양이 사진인지 아닌지를 판단하는 것이지요. 이러한 것은 다양한 알고리즘에 의해 만들어지는데 자세한 사항은 아래 사이트를 참고하시면 될 것 같습니다. 그림3은 기계학습의 한 종류인 딥러닝을 보여주고 있습니다. 

 


<그림3> 고양이 사진을 판단하는 기계학습의 예 

 


출처: 사이언스 모션 



 <참고사이트>



Q: 사람하고 똑 같은 학습을 한다는 말씀이시지요? 그래서, 알파고가 바둑을 둘 수 있었던 것 같네요. 기계학습을 하기 위해 필요한 것들이 있을 것 같은데 어떤 것이 있을까요? 

기계학습에는 지도 학습, 비지도 학습, 그리고 강화 학습과 같이 크게 3종류로 구분할 수 있습니다. 지도 학습은 앞에서 말한 것처럼 정답을 알려줘서 학습을 하는 것이고, 비지도 학습은 정답은 없고 데이터 요소에 따라 군집화나 밀도를 추론해서 결과값을 예측하게 됩니다. 마지막으로, 강화 학습은 현재 상태에서 최적의 행동은 무엇인지를 학습하는 것입니다. 어떤 행동이냐에 따라 보상이 주어지는데 이 보상이 최대화 되도록 학습을 반복하게 됩니다. 강화 학습의 대표적인 예가 게임 트리 탐색 알고리즘입니다. 알파고를 설명하기 위해 필요한 것이죠. 게임 트리 탐색은 바둑이나 체스처럼 두 명의 플레이어가 번갈아 취하는 행동을 트리 형태로 표현하는 것입니다(그림4).  



<그림4> 게임 트리 탐색 알고리즘의 예 



 출처: LG CNS 



그림4에서 보는 것처럼 체스를 한번씩 둘 때마다 오른쪽과 같이 트리의 노드가 하나씩 늘어나는 것입니다. 이러한 방법은 모든 경우의 수를 탐색할 수 있는데, 어떤 순서로 각 노드에 방문하냐에 따라 탐색 시간이 엄청나게 차이가 날 수 있습니다. 일반적으로 게임 트리 알고리즘에서 많이 사용되는 것이 최소-최대 알고리즘인데, 알파고는 최소-최대 알고리즘을 개선한 몬테카를로 트리 탐색(MCTS; Monte Carlo Tree Search) 알고리즘을 사용한 것입니다. 



Q: 몬테카를로 트리 탐색을 특별히 선택한 이유가 있을 것 같은데요. 

바둑은 다양한 경우의 수를 미리 예측해서 두게 됩니다. 다시 말해, 얼마나 다양한 경우의 수를 미리 예측할 수 있냐에 따라 승패가 갈릴 수는 없겠지만 바둑기사가 최적의 위치에 돌을 두게 할 수 있는 정보이기 때문에 많으면 많을수록 좋을 것입니다. 그런데, 한정된 시간에 항상 모든 경우의 수를 찾을 수는 없을 겁니다. 몬테카를로 트리 탐색 알고리즘은 현재 상태에서 한 단계 예측을 하고, 이 예측에 따른 시뮬레이션 결과에 따라 다음 단계를 예측하는 것입니다. 이 과정을 일정 횟수 반복하게 되는데, 모든 경로를 탐색할 필요가 없다는 장점이 있어 시간이 한정되어 있다면 매우 효율적인 방법입니다(그림5). 

 


<그림5> 몬테카를로 트리 탐색 알고리즘의 구동 방식 


 


출처: http://mcts.ai  



정리를 해보면, 바둑과 같이 턴 형태의 게임은 게임 트리 탐색 알고리즘을 사용하게 되는데 모든 경우의 수를 확인할 수 없으니 몬테카를로 트리 탐색 알고리즘으로 탐색 횟수를 줄이는 것이라고 생각하면 됩니다. 



Q: 학교 다닐 때 배웠던 기억이 날 정도로 보통의 이론으로 들리는데, 정말 이 것으로 알파고가 이세돌 9단을 이긴 것입니까? 

그 질문이 나올 줄 알았습니다. 많은 분들이 기계학습, 딥러닝과 같은 얘기를 들으면 마치 새로운 기술로 생각하시는데, 이 이론은 이미 오래 전부터 뉴럴 네트워크(Neural Network) 등으로 알려져 있던 이론입니다. 마치, 사람의 뇌와 같이 컴퓨터가 생각하도록 하자는 것이었죠.



Q: 그럼, 그렇게 오래된 이론이 왜 이제서야 주목을 받게 된 것인가요? 

기계학습의 핵심은 학습입니다. 얼마나 많은 학습을 시키냐에 따라 컴퓨터의 똑똑함이 결정되는 것이죠. 이 때, 가장 중요한 요소가 학습 데이터와 컴퓨터의 처리 속도입니다. 그림6을 보시면, 왼쪽 그림처럼 15개의 학습 데이터로 일정 패턴이 나타난 것을 맞는 것이다라고 할 수 있겠지만 신뢰도는 다소 떨어지겠지요. 오른쪽 그림을 보시면, 100개의 학습 데이터로 패턴이 만들어졌습니다. 15개일 때보다 신뢰도가 많이 올라갈 겁니다. 

 


<그림6> 학습 데이터 수에 따른 비교 

 


출처: Pattern Recognition and Machine Learning 



15개일 때와 100개일 때 만들어진 두 개의 패턴이 있다고 가정할 때, 새로운 데이터를 예측해야 한다면 100개로 만들어진 패턴이 더 정확하게 나타날 것입니다. 학습 데이터가 천개, 만개로 늘어난다면 정확도는 더 올라갈 수 있겠지요. 과거에는 학습 데이터를 만들기가 너무 어려웠습니다. 지금도 어렵기는 마찬가지이지만 IoT나 빅데이터와 같은 것을 통해 많은 학습 데이터를 확보할 수 있게 되었지요. 

또 하나의 요소인 학습 속도에 대해 알아보죠. 학습 속도는 말 그대로 컴퓨터의 처리 속도에 비례합니다. 학습 데이터를 많이 학습을 하기 위해서는 오랜 시간이 필요한데 처리 속도가 빠르다면 짧은 시간에도 많은 학습을 할 수 있는 것이지요. 최근에는 기술 발달로 인해 컴퓨터의 처리속도가 많이 빨라져 기계학습의 발전을 도와주고 있습니다. 






Q: 그럼 다시 알파고 얘기로 돌아가 보겠습니다. 알파고 승리의 원동력은 무엇입니까? 

알파고는 1202개의 CPU와 176개의 GPU가 사용되었다고 합니다. 어마어마한 수치이죠. 아마도 구글이 아니면 해내기 어려울 정도의 하드웨어가 사용되면서 처리 속도를 높였죠. 이러한 처리 속도는 학습 속도와 이세돌 9단과 바둑을 두는 속도에도 엄청난 영향을 주게 됩니다.

자 그럼, 이제 알파고의 트레이닝 과정을 살펴보겠습니다. 단순합니다. 알파고 한테 바둑 기사들이 두었던 이전의 기보를 계속 학습시키는 것입니다(그림7). 알파고는 학습한 기보의 내용을 모두 기억하는 것이 아니라 패턴으로 기억하는 것이라고 생각하는 것이 이해하기가 쉽습니다. 

 


<그림7> 알파고가 학습한 경우의 수 


 


출처: Google  



이렇게 기억한 것을 기초로, 실제 바둑 기사와 바둑을 두게 됩니다. 바둑 기사가 착수하는 점을 입력 받아 많은 패턴 중에서 최적의 대응을 하게 되는 것이지요. 기억하실 것은 알파고니까 가능한 겁니다. 



Q: 알파고 말고는 불가능 하다는 말씀인가요? 

무슨 얘기냐 하면, 아까 얘기한 것처럼 1202개의 CPU와 176개의 GPU이기 때문에 이세돌 9단과 대적을 했다는 것입니다. 이 정도의 하드웨어가 아니었다면 한정된 시간에서 많은 오류를 범했을 겁니다. 고성능의 처리 속도로 많은 경우의 수를 예측했기 때문에 이길 수 있었다는 얘기지요. 그만큼, 기계학습의 가장 중요한 성공 포인트는 많은 학습 데이터와 빠른 처리 속도입니다. 물론, 이 외에도 예측을 위해서 더 세밀한 부분들이 있지만 이번 시간에는 기본적인 부분만 다뤄야 할 것 같습니다. 



Q: 왜 구글이나 IBM이 인공지능의 선두 주자인지 알 것 같습니다. 알파고가 이세돌 9단을 이기고 세계랭킹 4위에 올랐습니다. 향후 알파고의 랭킹을 예측해 보신다면요? 

재미있는 질문입니다. 제가 확실하게 얘기하고 싶은 것은 알파고는 시간이 갈수록 기하급수적으로 더 강해진다는 것입니다. 왜냐하면, 계속 기존의 바둑 기보를 학습할 것이기 때문입니다. 


 

<그림8> 알파고의 세계랭킹 


 



출처: 인사이트  



알파고가 이세돌 9단과의 대전을 준비할 때는 이세돌 9단의 이전 공식 기보는 통째로 학습 했을 것이고, 세계적인 기사들의 기보도 학습했을 겁니다. 새로운 도전자가 나타난다면, 순식간에 도전자의 바둑 방식을 파악해서 패턴화할 것입니다. 이세돌 9단과의 대전에서 나타난 수준을 생각하면서 도전했다가는 아마 큰 낭패를 볼 수 있을 겁니다. 



Q: 스타크레프트와 같은 진짜 게임에 도전하겠다는 의사도 밝혔는데 어떤 결과가 올지 기대가 됩니다. 오늘 말씀을 정리해 주시죠. 

IoT가 발전하면서 빅데이터의 활용도와 중요성이 점점 커지고 있고, 빅데이터로 인해 기계학습의 활용도도 더 확대될 것으로 예상됩니다. 많은 산업들이 사람들에 의해 의사결정이나 관리가 이루어졌던 것이 현실이었습니다. 하지만, 기계학습을 활용한다면 사람보다 더 세밀하고 정확한 예측과 대응책을 제시해 줄 것으로 기대됩니다. 앞으로 많은 분야에서 기계학습에 대한 관심이 필요한 시점인 것 같습니다.  

출처 : 
http://www.sw-eng.kr/member/customer/Webzine/BoardView.do?boardId=00000000000000045466&currPage=1&searchPrefaceId=&titOrder=&writeOrder=&regDtOrder=&searchCondition=TOT&searchKeyword=%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D



 

인공 지능과 머신 러닝, 딥 러닝의 차이점

Posted by ironmask84
2017. 7. 12. 12:04 컴퓨터공학/IT 트렌드



5년 전 부터 빅데이터 라는 용어가 유행처럼 등장해서는 


알파고 등장 이후 머신러닝, 딥러닝 이라는 용어가 핫 이슈가 되었습니다.


그 동안 어렴풋하게 빅데이터란 머신러닝이란 이런 것이지 하고 생각하고 있다가 


이제서야 관심을 좀 더 가지고 여기저기 관련 정보를 습득하는 도중 포스팅 합니다. ^^


우선 머신러닝은 인공지능의 한 분야 이며, 딥러닝은 머신러닝의 한 부분 입니다.


즉, 인공지능 > 머신러닝 > 딥러닝  이런 관계죠.


인공지능은 컴퓨터가 지능적으로 스스로 무언가를 처리하는 것인데,
머신러닝은 그 과정을 학습하면서 더 개선되고 업그레이드 되어가면서 무언가를 처리하는 것이라고 볼 수 있습니다.


빅데이터는 말 그대로 대량의 데이터를 분석하고 처리하는 기술입니다.

인공지능은 이 빅데이터 기술을 이용하기 참 좋다는 생각이 드네요.


아래에 인공 지능과 머신 러닝, 딥 러닝의 차이점에 대한 글을 소개드립니다. ^^



출처 : http://blogs.nvidia.co.kr/2016/08/03/difference_ai_learning_machinelearning/ (NVDIA)



세기의 바둑대전에서 구글 딥마인드의 인공지능 ‘알파고(AlphaGo)’ 프로그램이 한국의 이세돌 9단을 꺾었을 때, 알파고의 승리 배경을 논할 때 인공 지능과 머신 러닝, 딥 러닝의 정확한 개념에 대해 혼란을 느끼시는 분들이 많으셨을텐데요^^

오늘은 이러한 세가지 개념에 대해서 명쾌하게 설명해 드리겠습니다. 이러한 세 가지 개념의 관계를 가장 쉽게 파악하는 방법은 세 개의 동심원을 상상하는 것입니다. 인공 지능이 가장 큰 원이고, 그 다음이 머신 러닝이며, 현재의 인공지능 붐을 주도하는 딥 러닝이 가장 작은 원이라 할 수 있죠.


인공지능 기술의 탄생 및 성장

인공 지능이라는 개념은 1956년 미국 다트머스 대학에 있던 존 매카시 교수가 개최한 다트머스 회의에서 처음 등장했으며, 최근 몇 년 사이 폭발적으로 성장하고 있는 중이랍니다. 특히 2015년 이후 신속하고 강력한 병렬 처리 성능을 제공하는 GPU의 도입으로 더욱 가속화되고 있죠. 갈수록 폭발적으로 늘어나고 있는 저장 용량과 이미지, 텍스트, 매핑 데이터 등 모든 영역의 데이터가 범람하게 된 ‘빅데이터’ 시대의 도래도 이러한 성장세에 큰 영향을 미쳤습니다.

인공 지능: 인간의 지능을 기계로 구현하다


1956년 당시 인공 지능의 선구자들이 꿈꾼 것은 최종적으로 인간의 지능과 유사한 특성을 가진 복잡한 컴퓨터를 제작하는 것이었죠. 이렇듯 인간의 감각, 사고력을 지닌 채 인간처럼 생각하는 인공 지능을 ‘일반 AI(General AI)’라고 하지만, 현재의 기술 발전 수준에서 만들 수 있는 인공지능은 ‘좁은 AI(Narrow AI)’의 개념에 포함됩니다. 좁은 AI는 소셜 미디어의 이미지 분류 서비스나 얼굴 인식 기능 등과 같이 특정 작업을 인간 이상의 능력으로 해낼 수 있는 것이 특징이죠.

머신 러닝: 인공 지능을 구현하는 구체적 접근 방식


머신 러닝은 메일함의 스팸을 자동으로 걸러주는 역할을 합니다.

한편, 머신 러닝은 기본적으로 알고리즘을 이용해 데이터를 분석하고, 분석을 통해 학습하며, 학습한 내용을 기반으로 판단이나 예측을 합니다. 따라서 궁극적으로는 의사 결정 기준에 대한 구체적인 지침을 소프트웨어에 직접 코딩해 넣는 것이 아닌, 대량의 데이터와 알고리즘을 통해 컴퓨터 그 자체를 ‘학습’시켜 작업 수행 방법을 익히는 것을 목표로 한답니다.

머신 러닝은 초기 인공 지능 연구자들이 직접 제창한 개념에서 나온 것이며, 알고리즘 방식에는 의사 결정 트리 학습, 귀납 논리 프로그래밍, 클러스터링, 강화 학습, 베이지안(Bayesian) 네트워크 등이 포함됩니다. 그러나 이 중 어느 것도 최종 목표라 할 수 있는 일반 AI를 달성하진 못했으며, 초기의 머신 러닝 접근 방식으로는 좁은 AI조차 완성하기 어려운 경우도 많았던 것이 사실이죠.

현재 머신 러닝은 컴퓨터 비전 등의 분야에서 큰 성과를 이뤄내고 있으나, 구체적인 지침이 아니더라도 인공 지능을 구현하는 과정 전반에 일정량의 코딩 작업이 수반된다는 한계점에 봉착하기도 했는데요. 가령 머신 러닝 시스템을 기반으로 정지 표지판의 이미지를 인식할 경우, 개발자는 물체의 시작과 끝 부분을 프로그램으로 식별하는 경계 감지 필터, 물체의 면을 확인하는 형상 감지, ‘S-T-O-P’와 같은 문자를 인식하는 분류기 등을 직접 코딩으로 제작해야 합니다. 이처럼 머신 러닝은 ‘코딩’된 분류기로부터 이미지를 인식하고, 알고리즘을 통해 정지 표지판을 ‘학습’하는 방식으로 작동된답니다.

머신 러닝의 이미지 인식률은 상용화하기에 충분한 성능을 구현하지만, 안개가 끼거나 나무에 가려서 표지판이 잘 보이지 않는 특정 상황에서는 이미지 인식률이 떨어지기도 한답니다. 최근까지 컴퓨터 비전과 이미지 인식이 인간의 수준으로 올라오지 못한 이유는 이 같은 인식률 문제와 잦은 오류 때문이죠.

딥 러닝: 완전한 머신 러닝을 실현하는 기술


초기 머신 러닝 연구자들이 만들어 낸 또 다른 알고리즘인 인공 신경망(artificial neural network)에 영감을 준 것은 인간의 뇌가 지닌 생물학적 특성, 특히 뉴런의 연결 구조였습니다. 그러나 물리적으로 근접한 어떤 뉴런이든 상호 연결이 가능한 뇌와는 달리, 인공 신경망은 레이어 연결 및 데이터 전파 방향이 일정합니다.

예를 들어, 이미지를 수많은 타일로 잘라 신경망의 첫 번째 레이어에 입력하면, 그 뉴런들은 데이터를 다음 레이어로 전달하는 과정을 마지막 레이어에서 최종 출력이 생성될 때까지 반복합니다. 그리고 각 뉴런에는 수행하는 작업을 기준으로 입력의 정확도를 나타내는 가중치가 할당되며, 그 후 가중치를 모두 합산해 최종 출력이 결정됩니다.

정지 표지판의 경우, 팔각형 모양, 붉은 색상, 표시 문자, 크기, 움직임 여부 등 그 이미지의 특성이 잘게 잘려 뉴런에서 ‘검사’되며, 신경망의 임무는 이것이 정지 표지판인지 여부를 식별하는 것입니다. 여기서는 충분한 데이터를 바탕으로 가중치에 따라 결과를 예측하는 ‘확률 벡터(probability vector)’가 활용되죠.

딥 러닝은 인공신경망에서 발전한 형태의 인공 지능으로, 뇌의 뉴런과 유사한 정보 입출력 계층을 활용해 데이터를 학습합니다. 그러나 기본적인 신경망조차 굉장한 양의 연산을 필요로 하는 탓에 딥 러닝의 상용화는 초기부터 난관에 부딪혔죠. 그럼에도 토론토대의 제프리 힌튼(Geoffrey Hinton) 교수 연구팀과 같은 일부 기관에서는 연구를 지속했고, 슈퍼컴퓨터를 기반으로 딥 러닝 개념을 증명하는 알고리즘을 병렬화하는데 성공했습니다. 그리고 병렬 연산에 최적화된 GPU의 등장은 신경망의 연산 속도를 획기적으로 가속하며 진정한 딥 러닝 기반 인공 지능의 등장을 불러왔죠.

신경망 네트워크는 ‘학습’ 과정에서 수많은 오답을 낼 가능성이 큽니다. 정지 표지판의 예로 돌아가서, 기상 상태, 밤낮의 변화에 관계 없이 항상 정답을 낼 수 있을 정도로 정밀하게 뉴런 입력의 가중치를 조정하려면 수백, 수천, 어쩌면 수백만 개의 이미지를 학습해야 할지도 모르죠. 이 정도 수준의 정확도에 이르러서야 신경망이 정지 표지판을 제대로 학습했다고 볼 수 있습니다.

2012년, 구글과 스탠퍼드대 앤드류 응(Andrew NG) 교수는 1만6,000개의 컴퓨터로 약 10억 개 이상의 신경망으로 이뤄진 ‘심층신경망(Deep Neural Network)’을 구현했습니다. 이를 통해 유튜브에서 이미지 1,000만 개를 뽑아 분석한 뒤, 컴퓨터가 사람과 고양이 사진을 분류하도록 하는데 성공했습니다. 컴퓨터가 영상에 나온 고양이의 형태와 생김새를 인식하고 판단하는 과정을 스스로 학습하게 한 것이죠.

딥 러닝으로 훈련된 시스템의 이미지 인식 능력은 이미 인간을 앞서고 있습니다. 이 밖에도 딥 러닝의 영역에는 혈액의 암세포, MRI 스캔에서의 종양 식별 능력 등이 포함됩니다. 구글의 알파고는 바둑의 기초를 배우고, 자신과 같은 AI를 상대로 반복적으로 대국을 벌이는 과정에서 그 신경망을 더욱 강화해 나갔습니다.

딥 러닝으로 밝은 미래를 꿈꾸는 인공 지능

딥 러닝의 등장으로 인해 머신 러닝의 실용성은 강화됐고, 인공 지능의 영역은 확장됐죠. 딥 러닝은 컴퓨터 시스템을 통해 지원 가능한 모든 방식으로 작업을 세분화합니다. 운전자 없는 자동차, 더 나은 예방 의학, 더 정확한 영화 추천 등 딥 러닝 기반의 기술들은 우리 일상에서 이미 사용되고 있거나, 실용화를 앞두고 있습니다. 딥 러닝은 공상과학에서 등장했던 일반 AI를 실현할 수 있는 잠재력을 지닌 인공 지능의 현재이자, 미래로 평가 받고 있답니다.


 

IoT 사례 연구 - 빅데이터와 연계

Posted by ironmask84
2017. 7. 11. 16:23 컴퓨터공학/IT 트렌드


(출처 : 소프트웨어 센터 웹진 자료)

IoT 사례 연구 - 빅데이터와 연계 



IoT(Internet of Things)의 시대에는 빅데이터를 빼놓고 말할 수 없을 만큼 중요한 요소이다. 엄청난 양(Volume)의 다양한(Variety) 데이터가 엄청난 속도(Velocity)로 쏟아지기 때문이다. 반대로, 빅데이터는 대량의 데이터가 입력되지 않으면 가치를 찾기 어렵기 때문에 빅데이터와 IoT는 뗄 수 없는 관계일 수 밖에 없다. 이번 회에서는 IoT와 빅데이터를 활용하기 위해 사용되는 구성에 대해 알아보기로 한다. 상호 보완적 개념인 빅데이터와 IoT를 연결한 컴퓨팅 구성을 이해하는데 도움이 되기를 기대한다. 



사례 연구 전 확인 사항 


IoT와 빅데이터 


IoT는 사물이 다양한 센서를 통해 수집한 데이터를 네트워크를 통해 전달하는 것이 일반적인 역할이라고 할 수 있다(그림1). IoT에서 수집하는 데이터는 실시간 데이터가 대부분이기 때문에 사물이 24시간 동안 인터넷에 접속되어 있으면서 쉬지 않고 데이터를 수집한다. 이러한 일을 위해 과거에는 많은 비용과 기술이 필요했지만 현재는 디바이스가 점점 소형화 되면서 비용도 함께 내려가는 추세다. 따라서, 지금은 거의 모든 산업에서 IoT를 이용해 빅데이터를 수집하고 있다. 



 <그림1> IoT의 데이터 수집과 전달 


 출처: http://www.tkt.cs.tut.fi/research/waps/ 



IoT와 빅데이터, 그리고 클라우드 


IoT, 클라우드(Cloud), 빅데이터를 ‘제3의 IT혁명’이라고 불리고 있다. IoT 센서를 통해 빅데이터를 수집하고, 수집된 빅데이터를 정제하고 분석, 이를 다시 서비스하기까지 클라우드 환경이 구축되어 있어야 가능하기 때문이다. 실제 세상의 정보를 센서를 통해 수집하고, 이를 디지털화하여 정제, 분석한 후 디지털 세상에 저장하고, 분석된 결과를 실제 세상에 다시 제공한다. 실제 세상과 디지털 세상을 이어주는 역할을 클라우드가 하게 된다(그림2). 


 

<그림2> IoT, Cloud, Big data의 연결 

 


출처: SK Telecom - The ERA of Smart things 



지금까지도 수집된 데이터는 대부분 실시간으로 저장하는 경우가 많았다. 하지만, IoT가 쏟아내는 빅데이터의 양은 시간이 갈수록 기하급수적으로 늘어나기 때문에 데이터센터를 구축해도 감당하기 힘든 경우도 발생할 수 있다. 따라서, 센서에서 수집되는 데이터를 효율적으로 수집하고 분석하는 것도 중요하지만 효율적인 데이터 전송, 저장 방법도 중요한 요소로 남아있는 상태다(그림3). 



<그림3> IoT, Cloud, Big data의 연결의 예 

 


출처: Cisco blog - IoT Platform Architecture 



IoT를 통한 실시간 빅데이터 분석의 필요성 증대 


IoT에서 수집하는 빅데이터의 증가로 인해 수집된 빅데이터를 분석하기 위해 저장할 수 있는 시간과 공간이 점차 줄어들고 있다. 이로 인해, 필요성이 증가하고 있는 것이 실시간 빅데이터 분석이다. 일반적인 데이터 분석은 데이터의 생성 시점과 분석 시점을 크게 고민할 필요가 없지만, 실시간 분석은 데이터가 생성되는 시점에 분석을 해야 하기 때문에 다양한 방법들이 연구되고 있다. 센서나 소셜 미디어에서 생성되는 시계열 데이터나 로그 데이터가 주 대상이며, 머신 데이터는 빅데이터 중에서도 증가세가 가장 빠른 영역이다. IoT 활용에서 실시간 빅데이터 분석의 중요성이 강조되는 이유는 IoT에서 수집하는 데이터가 워낙 방대하기 때문에 계속 쌓아놓고 데이터를 볼 경우 원하는 IoT 활용이 어렵기 때문이다. 그림4와 같은 방법으로 IoT를 활용한 실시간 데이터 분석이 가능하다. 

 


<그림4> 실시간 데이터 분석 방법 

 


출처: http://www.openwith.net/?page_id=976 


 

<참고사이트> 

 - 실시간 빅데이터 분석 원리 http://d2.naver.com/helloworld/694050



사례 연구 


시스코(Cisco) - 포그 컴퓨팅(Fog Computing) 


IoT의 확산과 빅데이터의 양과 실시간 처리의 필요성이 증가하고 센서 디바이스의 한계로 인해 클라우드 컴퓨팅의 영역보다 더 확대된 역할이 필요하게 되었다. 클라우드 컴퓨팅을 실제 네트워크에 보다 근접한 경계 영역까지 확장하는 새로운 아키텍처가 제시되었는데 이 것이 포그 컴퓨팅이다(그림5). 

 


<그림5> 포그 컴퓨팅의 구성 

 


출처: Cisco 



포그 컴퓨팅은 센서나 디바이스에서 생성된 데이터를 실시간으로 처리할 수 있는 노드를 기지국처럼 두고 컴퓨팅 파워가 필요한 데이터만 클라우드로 넘겨서 처리하는 방식이다. 노드에는 컴퓨팅에 필요한 메모리나 저장 기능을 가지고 있어 즉각적인 데이터 분석이 가능하도록 되어 있다. 스마트폰과 같은 디바이스에서 생성된 데이터를 근거리 통신망을 이용해 포그 노드에 연결하여 분석하고, 그 이상의 컴퓨팅 파워가 필요한 작업은 클라우드로 보내 처리하게 한다. 이러한 방식은 간단한 데이터 분석은 포그 노드에서 해결하기 때문에 데이터 분석에 필요한 비용과 시간을 절약할 수 있고, 대부분 데이터 분석이 완료된 데이터가 네트워크를 통해 저장되기 때문에 빅데이터 저장공간도 줄일 수 있는 장점이 있다. 아키텍처를 보면 컴퓨터, 네트워크, 저장장치가 있고, 사용자 위치 파악해 주는 엔진과 그 위에서 애플리케이션이 구동된다. 이러한 아키텍처가 라우터나 셋톱박스, AP 등에 탑재될 수 있다. 즉, 전통적인 컴퓨팅 모델과 비교하면, 물리적인 디바이스와 인터넷 사이에 분산 플랫폼을 가지고 있는 것이다.(그림6). 

 


<그림6> 전통적 컴퓨팅 모델과 포그 컴퓨팅 모델의 비교 

 


출처: Cisco 



파스트림(ParStream) 


고성능 압축 비트맵 인덱스(HPCI; High Performance Compressed Index) 기술을 특허 등록하여 사용하는 파스트림은 수십억 건의 데이터도 1초 이내 분석 결과를 도출할 수 있다고 알려져 있다. IoT를 통한 빅데이터 분석에 강점이 있는 이유가 여기에 있다. 파스트림의 가장 큰 특징은 하둡 기반이 아닌 관계형 데이터베이스 기술을 적용한다는 점이다. 이 것은 사용자가 기존에 사용하던 SQL과 관련 기술을 그대로 사용할 수 있다는 장점이 있다. HPCI 기술은 압축 해제 없이 바로 쿼리가 가능하도록 한 것(그림7)으로 압축 해제에 필요한 CPU나 메모리의 성능 저하나 처리 시간이 필요 없다는 장점을 가지고 있다. 

 


<그림7> HPCI 개념 

 


출처: 파스트림 



데이터스트림즈의 TeraStream Bass 


데이터스트림즈에서는 IoT를 통한 빅데이터 실시간 분석을 위한 메모리 기반 플랫폼을 제시하고 있다(그림8). 전력장비, 보안장비, 로그데이터 등을 실시간으로 수집하여 실시간 인덱싱 후 데이터를 메모리에 분산 저장하는 방식이다. 오래된 데이터나 사용자 설정을 벗어나는 데이터는 Hadoop의 HDFS에 분산 저장 처리하여 실시간 처리 요건과 Batch처리 요건을 동시에 만족할 수 있는 Hybrid 분석 기능을 제공하는 것이 특징이다. 수집된 데이터를 메모리와 디스크에 분산 저장하기 때문에 사용 빈도가 높은 것은 메모리에 위치할 수 있어 분석과 검색 속도가 빠르다는 장점이 있다. 메타데이터를 활용해 메모리와 하둡에 저장하는 데이터를 구분하는 것도 좀더 체계적인 기준으로 데이터를 분산 배치할 수 있다. 

 


<그림8> 데이터스트림즈의 IoT를 통한 실시간 데이터 처리 

 


출처: 데이터스트림즈 



기대 효과와 결론 


IoT와 빅데이터 간의 연계는 소프트웨어적인 요소보다는 아키텍처적 요소가 많이 반영되어 있지만 센서나 디바이스의 네트워크 연계, 빅데이터의 분석, 저장 등을 위한 입력 데이터의 연계 방법에 대해 알고 있어야 효율적으로 전체 아키텍처를 구성할 수 있다. IoT를 통한 빅데이터 활용의 최근 트렌드는 실시간 분석이기 때문에 IoT의 센서나 디바이스의 데이터 수집 부담과 데이터를 분석하고 저장하는 부담을 줄이기 위한 노력이 계속되고 있다.

출처 : 
http://www.sw-eng.kr/member/customer/Webzine/BoardView.do?boardId=00000000000000045319&currPage=1&searchPrefaceId=&titOrder=&writeOrder=&regDtOrder=&searchCondition=TOT&searchKeyword=IoT+%EC%82%AC%EB%A1%80+%EC%97%B0%EA%B5%AC 



 

IoT 사례 연구 - 개발 기법

Posted by ironmask84
2017. 7. 11. 16:04 컴퓨터공학/IT 트렌드


(출처 : 소프트웨어 센터 웹진 자료)

IoT 사례 연구 - 개발 기법 



IoT(Internet of Things) 소프트웨어는 기존 ICT(Information & Communication Technology) 소프트웨어와는 다소 상이한 부분이 있다. IoT 기반 소프트웨어의 경우 IoT 디바이스를 중심으로 개발되어야 하기 때문에 소프트웨어 개발부터 운영까지 확인해야 할 사항들이 존재한다. 이번 회에서는 IoT을 위한 소프트웨어의 구성과 개발에 관해 알아보기로 한다. IoT 기술 적용을 위한 소프트웨어의 요소를 이해하는데 도움이 되기를 기대한다. 



사례 연구 전 확인 사항 



IoT는 사물을 이용한 방식이기 때문에 디바이스와 네트워크에 대한 제어를 소프트웨어에 포함시켜야 하는 경우가 많다. 기존에는 각 산업이나 서비스에서 필요한 정보만을 수집하다 보니 소프트웨어의 규모도 그리 크지 않았지만, 최근에는 엄청난 양의 정보가 수집되어 소프트웨어의 규모도 커지고 그에 필요한 아키텍처도 다양해지는 추세다. 이렇게, 정보를 한 곳으로 모았다가 다시 필요한 곳으로 정보를 제공하는 중앙 집중 식 클라우드 형태가 현재 많이 사용되는 모델이고, 이후 분산 클라우드 형태의 IoT가 많이 연구되어 발표되고 있는 추세다. 


<참고사이트>



이처럼, IoT의 모델이 다양하게 존재하지만, 소프트웨어 입장에서 근본적인 IoT의 모델은 다양한 사물에서 데이터를 수집하는 형태다(그림1). 기존에는 단독 사물에서 데이터를 수집하는 형태였지만, 여러 사물에서 중앙집중식으로 변화가 일어나면서 소프트웨어는 더 많은 디바이스와 연결하고 더 많은 데이터를 가져오는 것으로 변화됐다. 

 


<그림1> IoT 모델의 변화 


 



출처: 전자부품연구원  



그림1에서 보는 것처럼, 소프트웨어 관점에서는 표준화된 플랫폼을 구축하여 다양한 디바이스와 네트워크의 제어가 가능하게 된다. 아래는 이렇게 표준화된 플랫폼 기반에서 다양한 IoT 서비스 위한 소프트웨어 개발에 필요한 능력이다. 



IoT 디바이스를 제어하기 위한 시스템 소프트웨어 개발 능력 


IoT를 위한 디바이스들은 모바일폰과 같은 스마트 디바이스와는 다르게 센서와 같은 하드웨어 측면의 부가적인 기능을 가진 디바이스가 많다. 이러한 기능을 원활히 동작하게 하고 다양한 하드웨어를 추가하기 위해서는 유연성과 확장성이 필요하다. 이를 위해, 펌웨어보다는 임베디드 적용이 필요하고 임베디드 기반의 소프트웨어 개발 능력이 요구된다. 여기서, 기존의 임베디드는 하드웨어 중심의 기능은 단순하고 독립적으로 구성되었지만 IoT가 적용되면서 최근에는 소프트웨어를 중심으로 구성되어 많은 기능을 제어할 수 있고 확장이 용이하게 변화되었다(그림2). 하드웨어의 비중이 줄어들고 유연한 확장이 용이한 소프트웨어 중심의 임베디드 시스템 설계가 이루어지고 있기 때문이다.


 

<그림2> IoT 모델 변화에 따른 임베디드 시스템의 변화 

 


출처: RENESAS 



IoT 네트워크와 인터페이스를 위한 소프트웨어 개발 능력 


IoT의 발전과 함께 빠질 수 없는 요소가 IoT 게이트웨이(Gateway)다. IoT 게이트웨이는 각 디바이스에서 수집되는 데이터를 모아 전송하기 때문에 IoT 게이트웨이가 있으면 디바이스가 꼭 인터넷에 접근할 필요가 없어 네트워크 대역폭의 부담을 낮출 수 있다. 또한, 불필요한 데이터는 거르고 필요한 데이터만 전송하도록 한다면 데이터의 신뢰도를 높이고 네트워크의 트래픽을 낮출 수 있다. 또, 통신 네트워크와 인터페이스의 유연한 확장을 위해서도 소프트웨어를 통한 제어가 필요하다. 

 


<그림3> IoT 게이트웨이를 적용한 IoT 구성 

 



출처: Intel 



IoT에서 수집된 빅데이터를 지식화 하기 위한 소프트웨어 개발 능력


IoT는 엄밀히 IoT 자체적인 서비스는 거의 없다. 대부분 IoT에서 수집된 정보를 활용하는 서비스이다. IoT 소프트웨어에 빅데이터 관련 개발 능력이 필요한 이유다. 사물에서 데이터를 수집하고 네트워크를 통해 전달한 후 빅데이터 활용 프로세스에 맞춰 서비스를 제공한다(그림4). 


 

<그림4> IoT를 통한 빅데이터 수집 및 활용 

 

출처: 공개소프트웨어포털  



<참고링크>



IoT 플랫폼은 위 세 가지를 적용하여 구성할 수 있다(그림5). 특정 디바이스만이 아닌 일반적인 디바이스는 모두 제어할 수 있고 인터페이스를 통해 데이터를 주고 받을 수 있으며, 빅데이터 수집, 분석, 정보화 등을 통해 다양한 서비스를 제공하게 된다. 이러한 일들은 소프트웨어를 통해 유연하게 확장할 수 있고, 서비스 특성에 따라 소프트웨어를 설계하면 된다. 


 

<그림5> IoT 플랫폼의 예 


 



출처: 사물인터넷 - 개념, 구현기술 그리고 비즈니스 



IoT 플랫폼을 사용하게 되면 전통적인 소프트웨어 개발보다 현저히 줄어든 개발 기간을 확인할 수 있다(그림6). 왜냐하면, 센서와 디바이스, 네트워크와 인터페이스의 제어 방법이 플랫폼에서 제시될 수 있고, 빅데이터 수집과 분석 후 서비스를 제공하는 방법까지 플랫폼에서 정의될 수 있기 때문이다. 

 


<그림7> 전통적인 개발과 플랫폼을 사용한 개발의 비교 

 


출처: RENESAS 



그림7을 살펴보면, 위 쪽의 전통적인 개발에서는 드라이버, 미들웨어 설계까지 포함되어 있지만 아래는 그 부분이 모두 플랫폼에 포함되어 있기 때문에 별도의 설계나 개발이 필요하지 않다. 그리고, 기존 개발에서는 요구사항에 따라 기능에 필요한 하드웨어를 선택하고 주변 하드웨어를 설계하지만, 플랫폼 기반에서는 사용자가 사용하는 기능에 따라 플랫폼에서 사용자가 필요한 부분을 정의하고 적당한 소프트웨어를 개발하면 된다. 




사례 연구 


AWS 플랫폼 


AWS IoT 플랫폼은 디바이스에 SDK(Software Development Kit)을 제공하고, 게이트웨이를 통해 애플리케이션과 디바이스 간의 통신을 제공해주고 있다(그림8). 플랫폼 밖인 디바이스에서 정보를 쉽게 전달 받고 플랫폼의 인증과 다양한 개발 라이브러리 등도 활용할 수 있도록 SDK를 제공하고 있다. 

 


<그림8> AWS IoT 플랫폼 

 



출처: Amazon 



규칙 엔진(Rule Engine)을 사용하면 인프라를 관리할 필요 없이 디바이스에서 수집된 데이터를 처리, 분석할 수 있고, 비즈니스 규칙에 따라 다른 디바이스나 클라우드 서비스로 이를 변환하거나 전송할 수 있다. 그림에서 보는 것처럼 IoT 서비스에 따라 달라질 수 있는 디바이스나 애플리케이션을 제외한 부분을 플랫폼으로 구성하면서 아키텍처의 강건성이 매우 높아질 수 있고 개발 기간이나 복잡도를 낮출 수 있다. 


 

<참고사이트>


AWS IoT 플랫폼 https://aws.amazon.com/ko/iot/how-it-works/  





LG CNS의 IoT 플랫폼 


LG에서는 나날이 발전하고 있는 IoT 시장을 위해 6가지 기술을 정의하여 발전 전략을 수립했다. 아래를 살펴보면, 디바이스 관련 기술(⑤), 네트워크와 인터페이스 관련 기술(①②), 빅데이터 관련 기술(③)과 이를 통합 지원하는 기술(④⑥)로 구분된 것을 확인할 수 있다. 이를 통해, LG가 지향하는 바는 “다양한 디바이스로부터 수집된 대량의 센서 데이터들을 안정적으로 송/수신하고, 클라우드 환경에 저장된 데이터의 처리 및 분석을 통해 지능형 서비스까지 제공하는 플랫폼”이다. 


① Gateway와 Edge Device 관련 기술  

② 대량의 데이터를 안정적으로 전달할 수 있는 통신 기술 

③ 이벤트 처리와 데이터 분석 및 추천을 위한 빅데이터(Big Data) 관련 기술 

④ 위의 언급한 기술들의 Base 제공 및 융합을 지원할 플랫폼과 Enabler 관련 기술 

⑤ 인증/권한을 통한 데이터 보안뿐만 아니라 디바이스와 칩(Chip) 레벨의 보안 기술 

⑥ 사용자와 상호 작용할 수 있는 UI/UX 기술 



LG에서는 디바이스의 쉼 없는 발전과 폭발적으로 증가하는 데이터를 활용한 새로운 비즈니스가 IoT를 통해 나타난다고 하고 있다. 이 때, 특정되지 않은 디바이스나 서비스를 쉽게 받아들이고 표준화된 서비스를 통해 쉽게 IoT 서비스에 접근할 수 있도록 가이드 하고 있다. 그림9는 LG에서 제시하는 IoT 플랫폼인데, 다른 곳에서 제시하는 IoT 플랫폼과 레이아웃이 거의 유사하다.  디바이스→네트워크→서비스 로 이어지는 흐름을 기본으로 하고 있고, 다수의 디바이스와 사용자에 대한 인증, 보안이 추가되어 있기 때문이다. 



<그림9> LG CNS의 IoT 플랫폼 

 



출처: LG CNS 



기대 효과와 결론 


지금까지 IoT에 대해 아키텍처, 보안, 빅데이터 연계, 개발에 대해 살펴보았다. IoT는 소프트웨어보다는 많은 부분이 하드웨어 중심으로 서비스되어 왔던 것이 사실이다. 하지만, 기하급수적으로 늘어나는 IoT 관련 디바이스와 서비스로 인해 개별적으로 개발이 이루어지는 것은 매우 소모적이고 많은 손실을 가져온다. 체계적이고 표준화된 플랫폼 사용으로 IoT를 활용한 신규 서비스가 더 많이 늘어나기를 기대한다. 



참고자료 

□ https://aws.amazon.com/ko/iot/how-it-works/ 

□ http://www.lgcns.com/ 

출처 : 
http://www.sw-eng.kr/member/customer/Webzine/BoardView.do?boardId=00000000000000045453&currPage=1&searchPrefaceId=&titOrder=&writeOrder=&regDtOrder=&searchCondition=TOT&searchKeyword=IoT+%EC%82%AC%EB%A1%80+%EC%97%B0%EA%B5%AC

 

IoT 사례 연구 - 아키텍처

Posted by ironmask84
2017. 7. 11. 15:45 컴퓨터공학/IT 트렌드



(출처 : 소프트웨어 센터 웹진 자료)


IoT 사례 연구 - 아키텍처 



최근 ICT(Information & Communication Technology)의 최고 관심 대상 중 하나는 IoT(Internet of Things)이다. IoT를 다양한 형태로 해석하고 사용하지만 가장 큰 특징은 사물 스스로가 정보를 수집하고 스스로 전달한다는 것이다. 불과 몇 년 전만해도 사물에 네트워크가 연결이 되어도 사람이 지시하지 않으면 아무 일도 할 수 없었지만 이제 스스로 일을 하는 사물을 사용한 다양한 형태의 서비스가 거의 모든 산업에서 나타나기 시작했다. 그만큼 사물이 네트워크에 연결된 일은 매우 흥미롭고 고부가가치를 창출하는 일이기 때문이다. 이번 회에서는 IoT의 아키텍처에 대해 살펴보면서 IoT의 구성 방법에 대해 알아보기로 한다. 체계적인 IoT 아키텍처 구성으로 효율적인 IoT 서비스가 제공되기를 기대한다. 



사례 연구 전 확인 사항 



IoT 모델의 변화 


현재의 IoT가 나오기 이전에도 사물을 활용한 정보 수집은 존재했지만, 필요에 의해 사물에 별도의 네트워크가 연결이 되었고 수집하는 정보도 극히 일부로 제한되었다. 이미 필요한 데이터만 미리 정해서 수집했기 때문에 데이터 양도 적고 데이터 활용처도 한정되어 있었다. 하지만, 최근 들어 빅데이터(Big Data) 활용이 늘어나고 빅데이터 속에서 사람들이 생각하지 못하는 인사이트를 찾아내면서 빅데이터를 수시로 수집할 수 있는 IoT에 대해 더 관심을 갖기 시작했다. 

기존에는 각 산업이나 서비스에서 필요한 정보만을 수집하다 보니 소프트웨어의 규모도 그리 크지 않았지만, 최근에는 엄청난 양의 정보가 수집되어 소프트웨어의 규모도 커지고 그에 필요한 아키텍처도 다양해지는 추세다. 이렇게, 정보를 한 곳으로 모았다가 다시 필요한 곳으로 정보를 제공하는 중앙 집중 식 클라우드 형태가 현재 많이 사용되는 모델이고, 이후 분산 클라우드 형태의 IoT가 많이 연구되어 발표되고 있는 추세다(그림1).  



<그림1> IoT 모델의 변화 




 출처: “분산형 데이터베이스 기반 비중앙식 IoT 플랫폼을 이용한 스마트 홈 서비스”  



IoT는 사물을 상호 연결하여 어떤 서비스를 제공할 것인지가 가장 큰 목표이기 때문에 사물과 사람, 그리고 사물과 사람을 이어주는 디바이스를 기본으로 필요한 서비스를 제공하게 된다. 사물 간 통신을 나타내는 M2M, 사물인터넷을 나타내는 IoT, 그리고 IoT에 공간 개념을 도입한 만물인터넷이 IoT 모델의 변화 모델로 정의할 수 있다. 



IoT 아키텍처의 기본 구성 



IoT는 사물 기반이기 때문에 임베디드(Embedded) 아키텍처와 유사하게 보일 수 있다(그림2). 하지만 사물이 인터넷(Internet)에 연결이 되어 있고 다양한 데이터를 수집한다는 것이 주목적이기 때문에 임베디드 아키텍처와 다소 차이가 있다. 인텔(Intel)에서는 <그림2>와 같은 IoT 아키텍처 구성도와 <표1>과 같은 IoT 아키텍처의 특징을 5가지로 정의하고, 이러한 특징을 고려하여 소프트웨어를 설계하도록 가이드하고 있다.  



<그림2> IoT 아키텍처 구성도의 예 


출처: Intel  



<표1> 인텔에서 제시하는 IoT 아키텍처의 특징 

구분

내용

확대성 (Scale)

다량의 디바이스 지원

자율성 (Autonomous)

사람의 제어가 거의 불필요

탄력성 (Resiliency)

장애를 극복하고 기능을 지속적으로 수행

내구성 (Durability)

장시간 사용에도 견딜 수 있는 성능

접속성 (Connected)

M2M 또는 H2M 간의 원활한 커뮤니케이션



IoT로 연결된 디바이스는 일반적으로 게이트웨이(gateway)를 거쳐 시스템으로 연결된다. IoT 게이트웨이를 통해 디바이스가 직접 시스템에 연결되지 않기 때문에 네트워크 대역폭을 낮추는 역할을 하고, 분석이 불필요한 데이터를 제거하고 과도한 데이터 수집을 줄이는 역할도 한다(그림3). 그림3을 살펴보면, 무선 네트워크 노드에서 수집된 정보가 게이트웨이에서 걸러져서 빅데이터로 저장되고 필요한 서비스에 제공된다. 


 

<그림3> IoT 게이트웨이 


 

출처: www.seminartoday.net



IoT 서비스 아키텍처 



IoT 서비스의 주요 기능에는 IoT 보안인증, 리소스 및 서비스 관리, 수집 데이터의 가공 및 처리 등이 있다. 이러한 서비스는 맞춤형 서비스인 응용 서비스(Application & Service) 형, 빅데이터 기반으로 정보를 분석하여 예측 정보를 제공하는 지식정보(Semantics & Knowledge) 형, IoT와 소프트웨어의 인증, 연동 등을 제공하는 보안인증(Security & Privacy) 형 등이 있다. 이런 내용을 기반으로 그림4와 같은 IoT 서비스 아키텍처가 구성될 수 있다. 



<그림4> IoT 서비스 아키텍처 




출처: KT - IoT 서비스 플랫폼 아키텍처 분석  



그림4를 살펴보면, 센서 등을 통해 수집된 정보는 게이트웨이를 통해 보정되거나 걸러지고, 사용자에게 제공되는 서비스 별로 서비스 플랫폼을 가지게 된다. IoT 서비스 플랫폼은 앞 단의 IoT 구성요소를 연결하는 역할과 데이터 기반 서비스를 제공하는 역할을 수행하게 된다. 서비스 플랫폼을 표준형으로 구성한다면 초기 공수는 많이 들어갈 수 있으나 확장이 용이하고, 또한 제공하는 IoT 서비스들을 독립적인 모듈 형태로 제공되도록 구성하면 IoT 서비스 아키텍처에 IoT 서비스를 쉽게 추가할 수 있다. 




사례 연구 



KT에서 제시하는 IoT 서비스 



현재의 IoT 서비스의 아키텍처는 비 표준형인 경우가 일반적이다. 비 표준형인 경우는 IoT 서비스와 아키텍처의 확장이나 사용자, 디바이스 추가가 쉽지 않다. 최근에는 표준 프로토콜을 적용하고 IoT 서비스나 디바이스에도 표준이 적용되는 노력이 이루어지고 있다. KT에서는 비 표준 식의 Integral과 표준 식의 Modular 식으로 구분하여 IoT 아키텍처 변화를 제시하고 있다(그림5). 


 

<그림5> KT의 IoT 아키텍처 변화 

 



출처: KT - IoT 서비스 플랫폼 아키텍처 분석  



현재는 하드웨어 특성이 강하고 표준화 영향이 적은 센서, 디바이스 위주로 IoT 발전이 이루어졌지만 향후에는 IoT 서비스 전용 플랫폼 개발, IoT 전용 디바이스 개발과 표준화와 모듈화가 적용된 IoT 서비스가 필요하다고 제시한다. 표준화된 플랫폼 중심으로 IoT가 구성되면 그에 따른 IoT 센서, 디바이스 등의 표준화도 쉽게 이루어질 것으로 보인다. KT는 Integral과 Modular 방식에 따라 IoT 서비스와 소프트웨어 개발 방식도 달라진다고 말하고 있는데 그림6에 나타나 있다. 

 


<그림6> KT의 IoT 서비스 개발 프로세스 


 



출처: KT - IoT 서비스 플랫폼 아키텍처 분석  



그림5의 Integral 형의 경우, 요구사항에 따라 서비스 기능과 소프트웨어, 시스템을 설계해야 하고, 이에 따른 플랫폼과 디바이스 등을 고민해야 한다. 반면에, 표준이 적용된 Modular 형의 경우는 표준화된 환경에 맞춰 플랫폼, 소프트웨어, 시스템 등을 개발하기 때문에 설계에 필요한 공수가 매우 줄어들게 된다. 물론, 최초로 IoT 서비스를 개발할 경우는 표준 설계에 필요한 공수가 필요하겠지만, 범용적인 IoT 아키텍처가 이미 만들어져 있다면 서비스 요청 업체에 따라 별도로 구성하는 부담을 피할 수 있다. Modular 형으로 발전하기 위해 오픈소스를 활용하는 것도 방법이다. Ocean은 IoT 플랫폼을 구성하도록 하는 오픈소스를 제공한다. 오픈 디바이스 플랫폼인 &Cube와 서버 플랫폼인 Mobius 오픈소스로 구분된다(그림7). 

 


<그림7> ocean의 IoT 아키텍처 

 



출처 : http://www.sw-eng.kr/member/customer/Webzine/BoardView.do?boardId=00000000000000045080&currPage=1&searchPrefaceId=&titOrder=&writeOrder=&regDtOrder=&searchCondition=TOT&searchKeyword=IoT+%EC%82%AC%EB%A1%80+%EC%97%B0%EA%B5%AC



 

IoT의 중요성과 SW개발 방향

Posted by ironmask84
2017. 7. 11. 15:36 컴퓨터공학/IT 트렌드



(출처 : 소프트웨어 센터 웹진 자료)

 IoT (사물인터넷 : Internet of Things) 모든 사물이 컴퓨팅  통신 기능을 지니는 것을 기반으로 서로 연결되어 다양한 형태의 정보를 주고받음으로써 기존에는 가능하지 않은  융합형 응용  제공해   있는 개념이다이러한 IoT  대두는 세계적인 ICT (Information and Communication Technology) 패러다임을 변화시키고 있으며우리나라 정부에서도 미래창조과학부 주관하에 소프트웨어중심사회 라는 과제를 진행함으로써 국가산업시장인력 교육 등의 다양한 분야에서의 범국가적 IoT 융합화를 시도하고 있다.

이러한 IoT 개념을 현실화  보급하기 위해서는 IoT 기반 소프트웨어 개발이 선행되어야 하며최근 국내 기업들 중심으로 IoT 기반소프트웨어 개발이 활발하게 진행되고 있다하지만 IoT 기반의 소프트웨어는 기존의 IT-orient 소프트웨어와는 달리  IT 와의 융합을 통해 새로운 형태의 응용을 창출하는 것을 목표로 하고 있으므로소프트웨어 요구사항 분석  설계 단계에서부터 개발/검증 단계까지 세심한 주의가 필요하다이러한 IoT 기반 소프트웨어 개발  주의사항에 대해 창신대학교 소프트웨어공학과 김범석 교수로부터조언을 구할  있었다.

 

 


< 창신대학교 소프트웨어공학과 김범석 교수 >


1. IoT SW의 정의 및 파급력

2. IoT SW의 종류

3. IoT SW 개발 시 주의사항

4. 향후 IoT SW 개발의 방향


 

Q)  시점에서 IoT SW 중요한 이유가 무엇인가요?

 

 IoT SW  사물간 통신을 통해 수집되는 방대한 양의 데이터를 기반으로 새로운 형태의 서비스를 창출할  있는 SW  정의될  있습니다. IoT 라는 개념이 있기 전에 SW  IT 뿐만 아니라 다른 산업의 생산성을 높일  있는 도구로 사용되었지만지금은 사회 전반을 이끌어나갈  있는 핵심 솔루션 역할을 하고 있죠따라서 IoT SW  기존에 독립적으로 운용되어오던 응용과의 융합을 위한 키워드가   있고이를 기반으로 새로운 형태의 응용을 개발할  있는 계기를 제공하는 역할을 합니다. [ 그림 참조 ]

 

< 그림 1> 스마트 기기들의 증가 추세


 

자료 : Cisco IBSG, 2011 -   http://keminet.net/source/web/about/ac79/index.html

 

Q) 그렇다면 IoT  파급으로 인해 생긴 새로운 SW 어떤 것들이 있을까요?

 

 IoT  모든 사물에게 연산  통신 자원을 부여함으로써 상호  연결을 통해  사물에서 수집되는 방대한 양의 데이터를 가공하여새로운 서비스를 제공하는 일종의 인프라 요소가 강합니다, IoT 기술의 활용은  세계에서 운용되고 있는 모든 영역에 적용 가능하다고 보아도 무방합니다실제로 최근 IoT 기술은 의료운송홈서비스공장  다양한 방면에서의 융합을 시도하고 있으며, IoT 관련 기기들의 성능 향상  보급이 가속화되면서 다양한 서비스로의 IoT 융합을 위한 SW 들의 개발이 시도되고 있습니다상세히 살펴보면의료 분야에서는 인체정보를 수집할  있는 IoT 기기들을 환자에게 장착시켜 실시간으로 환자의 상태를 파악하고 치료할  있는 SW  개발을 추진 중에 있으며운송 분야에서는 차량에 부착된 GPS, 가속도 정보를 공유하여 현재 교통정보를 얻고이를 활용하여 교통량을 고려한 신호관리 시스템과 같은 SW 개발을 진행 중에 있죠홈서비스 분야에서도 집안에 존재하는 온도습도 센서로부터수집되는 정보와 기상청과 같은 외부 날씨 정보를 결합하여외출을 하고자 하는 사용자에게 의상을 추천해주는 등의 서비스를 고려하고 있습니다뿐만 아니라최근 여러 산업에서 주목하고 있는 스마트 공장에서는 공장  기계들의 부품 상태 모니터링기자재/제고관리 등의 부문에서 IoT  활용한 생산성 향상 솔루션들을 개발 중에 있습니다. [ 그림 참조 ]

 

< 그림 2>  IoT 기반 융합 가능 

 


자료 : http://www.intel.com/content/www/us/en/internet-of-things/infographics/iot-platform-infographic.html )

 

Q) IoT SW 개발에 있어 개발자에게 요구되는 사항은 어떤 것이 있나요?

 

  초연결을 지향하는 IoT 에서의 SW 다양한 요구사항이 존재하게 됩니다.

 

첫째, IoT  구성하는 end-device  스마트 기기에서의 시스템 레벨의 프로그래밍 능력이 필요합니다.

IoT  위한 스마트 기기들은 기존의 단순한 임베디드 시스템과는 달리 센서와 같은 부가 장치를 장착할  있어야 하며이를 기반으로 새로운 형태의 서비스를 추가로 적용하여 수행함에 있어 유연성과 확장성을 제공해줘야 합니다기존의 펌웨어 기반의 시스템에서는 이러한 요구사항을 만족 시킬  없기 때문에 embedded OS  적용해야 하며이를 위해서는 embedded OS  전반적인 이해와더불어상용화된 IoT 기기 플랫폼과 OS 레벨의 프로그래밍에 대한 다양한 경험이 필요합니다.

 

둘째, IoT 스마트 기기에 장착된 다양한 형태의 통신 인터페이스를 위한 네트워크 지식  프로그래밍 능력이 필요합니다.

IoT  기존의 단일 통신 기술을 사용하는 기기들과는 달리 하나의 기기에 다양한 통신 기술을 적용시킬  있으며필요에 따라서는새로운 통신 인터페이스를 추가할  있어야 합니다따라서이러한 통신 기술들을 SW  구동시키기 위해서는 IoT 기기에 적합한 네트워크 인터페이스 관련 디바이스 드라이버  이를 활용한 SW 개발을 위한 지식  프로그래밍 능력이 필요하게 됩니다.

 

셋째방대한 양의 데이터를 저장하기 위한 데이터베이스 구축과 융합 서비스의 기초가 되는 정보를 창출하기 위한 데이터 프로세싱이 필요합니다.

IoT 시대에서는 Cloud  통해 방대한 양의 데이터를 Big Data 라는 형태로 구축하게 됩니다따라서 수집된 데이터를 BigData  저장하고 관리하는 기법이 필요하며이렇게 수집된 데이터를 기반으로 새로운 형태의 정보를 창출하기 위해 기계학습이나 데이터마이닝과 같은 데이터 프로세싱이 요구됩니다.

 



마지막으로, End user  사용할  있는 융합된 형태의 응용 소프트웨어 개발 능력이 요구됩니다

현재 많이 사용되고 있는 안드로이드, iOS  물론, Web 기반의 프로그래밍, embedded OS 기반의 응용 소프트웨어  이들을 원활하게 동작하게   있는 미들웨어 개발 능력도 필요합니다.

 

Q) IoT SW 개발에 있어 주의사항은 어떤 것이 있나요?

 

위에서 언급한 요구사항을 기반으로 IoT SW 개발하는데 있어 개발자가 주의해야  사항은 기존의 SW 개발과는 상이한 부분이 있습니다.

먼저개발하고자 하는 SW  어떤 Data  활용하여 어떤 서비스를 제공해 주는 것을 목표로 하는지를 면밀히 검토하여이를 기반으로 IoT SW  설계하는 것이 중요하게  것입니다기존의 SW  단일 목적으로 개발되는 사례가 대부분이었으며이에 따라 SW 설계 부분이 단순화되었습니다하지만 IoT 기반의 SW  다양한 응용과의 융합을 지향하고 있으므로 상이한 목적을 결합한 새로운 형태의 SW 되며이에 따른 요구사항  고려사항의 절대적인 양이 많아지게 되므로 설계 단계의 세밀함이 보다 중요하게 됩니다.

보안 또한 IoT SW 에서 중요한 유의사항이   있습니다. IoT 기기들은 기존의 기기와는 달리 서로의 연결을 위해 통신 인터페이스를 가지고 있으며이를 역이용하여 외부에서의 데이터 변조정보탈취는 물론기기 자체의 시스템 장악 등의 보안관련 이슈가 일어날 있습니다이를 해결하기 위해서는 기존의 네트워크에서의 보안 뿐만 아니라 기기 자체의 보안 강화가 필요하게 되며효율적인 보안 향상을 위해서는 시스템 레벨에서의 보안도 고려되어야 합니다실제로 최근 개발되고 있는 ARM 프로세서 기반의 상용 IoT 기기를위한 개발 플랫폼에서는 시스템 레벨의 보안을 위해 TrustZone  지원하며기기 자체에서의 보안을 위해 TPM (Trusted Platform Module)  적용하여 제품을 생산하고 있습니다따라서 이와 같은 보안 향상을 위해 추가된 부분에 대한 이해도는 물론이를 활용하여 IoT SW  높은 보안 수준을 유지할  있는 방안을 고려해야  것입니다. [ 그림 3,4 참조 ]

 

< 그림 3>  ARM 사의 TrustZone

 


자료 구글 이미 


< 그림 4>   TPM (Trusted Platform Module)


자료 구글 이미 

 

마지막으로, embedded 기반의 IoT 기기를 위한 SW 개발에 따른 SW 최적화가 필요합니다.

최근 생산되는 IoT SW  구동시킬  있는 기기들의 성능이 비약적으로 향상되고 있지만, PC  Server  같은 높은 성능을 지니고있지는 않으며오히려 전력연산능력저장장치의 용량 등의 제약적인 성능을 가지고 있습니다특히 IoT framework  말단에서 정보를 수집하는 센서는 기존의 스마트 기기에 비해 더욱 제약사항이 많은 특징을 지닙니다따라서 SW 자체의 구현 복잡도를 최소화 하고구동 성능을 최적화하여 성능의 제약이 많은 기기에서도 개발된 SW  정상적으로 동작할  있도록 해야할 것입니다

출처 : 
http://www.sw-eng.kr/member/customer/Webzine/BoardView.do?boardId=00000000000000040729&currPage=1&searchPrefaceId=&titOrder=&writeOrder=&regDtOrder=&searchCondition=TOT&searchKeyword=iot

 

Secure 코딩과 기본해킹 3가지 기법

Posted by ironmask84
2017. 3. 27. 11:53 컴퓨터공학/Security




1. Secure Cording
SW개발과정에서 개발자 실수, 논리적 오류 등으로 발생하는 취약점을 최소화하는 보안활동
좁게는 소스코드 구현단계에서의 활동이고,
넓게는 SW 개발생명주기 SDLC 의 각 단계별 요구되는 보안활동이 모두 포함됨

1) 입력데이터의 검증

가) SQL Injection
DB와 연동된 웹 어플리케이션에서 입력되는 데이터에 대해 유효성 검증을 하지 않을 경우,
공격자가 입력폼에 SQL문을 삽입하여 DB로부터 정보를 조회하거나 조작하는 취약점

DB와 연동되는 입력값들에 대해서는
SQL 쿼리문관련 특수문자나 SQL명령어들을 필터링 하도록 코드 구현함으로 해결
(ex) ' or 1=1 #  을 통해 TRUE 값 만들수 있음)

나) XSS (크로스 사이트 스크립트)
웹페이지에서 악의적인 스크립트를 포함시켜 사용자 측에서 실행되도록 유도하여 정보 유출 등의 공격 유발

스크립트 종류
Client Side : JavaScipt는 Client측에 다운로드 되어서 브라우져에서 수행
Server Side : JSP, ASP, C#, PHP 등

- 스크립트의 코드 중에 서버에서 값을 받아오는 부분에 대해서는 해당 값에 대해 문자변환 함수나 메소드를 이용하여
유효성 검증을 함으로 해결
- HTML 태그를 허용하는 게시판에서는 White List 선정후 해당 태그만 허용 (Script 태그 금지 등)

2) 보안기능
인증, 접근제어, 기밀성, 암호화, 권한관리 등을 적절하지 않게 구현시 발생하는 취약점

가) 중요 자원에 대한 잘못된 권한 설정
password와 같은 중요자원에는 관리자에 의해서만 read/write 되도록 설정한다.

나) Cross Site Request Forgery (사이트 간 요청 위조)
사용자 자신의 의지와 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격
사용자의 인증 없이 정보에 접근하거나 위조가 가능해진다.

중요한 정보를 처리하는 웹페이지에서는 사용자 재인증 작업을 거치도록 한다.
(코드상에서 ID/Password를 다시 입력받게해서 기존 session의 ID/Password를 비교하도록 한다.)

3) 시간 및 상태
데드락(dead lock)나 자원에 대한 경쟁조건(race condition)과 같이
프로그램 동작과정에서 프로세스 혹은 쓰레드나 시스템 상태에 대한 정보(자원잠금, 세션정보)에 관련된 취약점을 말한다.


가) 경쟁조건(race condition)
한 자원에 대해 동시에 여러 프로세스 혹은 쓰레드에서 접근을 하려고 하면,
동기화 문제가 발생할 수 있고, 
이를 임계영역에 대한 처리를 해서 해결하지만, 잘못 처리하면 데드락이 발생할 수 있다.


4) 에러처리 
에러를 처리하지 않거나, 불충분하면 에러정보에 중요 시스템 정보가 노출될 수 있는 취약점
ex) java에서 e.printStackTrace()와 같이 디버깅 정보를 보여주는 건 개발 때 사용하는 것으로 상용 땐 위험
    그래서 대신 따로 에러메세지를 출력하도록 하고, 내부적인 예외상황은 로그로 따로 저장하도록 구현해야 함

5) 코드오류
메모리의 부적절한 반환 등 개발자의 코딩오류로 인해 유발되는 취약점
Null이 될 수 있는 레퍼런스는 참조하기 전에 널 값인지 검사하도록 한다.

6) 캡슐화
중요한 데이터를 불충분하게 캡슐화하면, 인가되지 않은 사용자에게 데이터 노출이 가능해지는 취약점
멀티 쓰레드 환경인 java 서블릿 등에서는 정보를 저장하는 멤버변수가 포함되지 않도록 하여
서로 다른 세션에서 데이터를 공유하지 않도록 해야한다.



* 아래는 http://ironmask.net/261 참조

2. Race Condition

3. Buffer Overflow

4. Format String

 

웹보안 관련과 OWASP 2013 그리고 2017

Posted by ironmask84
2017. 3. 27. 11:51 컴퓨터공학/Security




국내 웹 취약점 진단기준 : 국정원 10대 취약점, KISA 제시 취약점, 행안부 제시 43개 시큐어 코딩 진단기준
--> CVE, CWE, OWASP 에서 나온 문서들을 참고한 것이다.

1. CVE(Common Vulnerabilities and Exposures) : http://cve.mitre.org , CVE-연도-순서 순의 포맷으로 목록화

2. CWE(Common Weakness Enumeration) : http://cwe.mitre.org , 다양한 언어의 소스코드 취약점 목록화

3. OWASP(Open Web Application Security Project) : https://www.owasp.org/index.php/Main_page
--> 웹어플리케이션에 대한 취약점 Top 10 목록화

4. KISA 점검기준 : http://www.kisa.or.kr/public/laws/laws3.jsp

5. 행정안전부 시큐어코딩 항목 : http://www.mospa.go.kr/


OWASP 2013에 대표적 3가지

1) SQL Injection
   - 유형별
      ㄱ) Error Base SQL Injection : SQL시스템에서  error 리턴시, 그 정보를 이용하여 취약점 찾음
      ㄴ) Blind SQL Injection : 쿼리의 참과 거짓을 통해 데이터 추출
   - 공격방식별
      ㄱ) Form SQL Injection : 입력폼에 쿼리문 Injection
      ㄴ) Union SQL Injection : union select 쿼리문 이용하여 한 쿼리의 결과를 다른 쿼리의 결과에 접합
      ㄷ) Stored Procedure SQL Injection : 일련의 쿼리를 함수처럼 실행
      ㄹ) Mass SQL Injection : 한 번의 공격으로 대량의 DB값이 변조 (악성스크립트 이용)
   - 대안
     ㄱ) DB와 연동되는 스크립트의 모든 패러미터 유효성 검증, SQL 특수문자 필터링
     ㄴ) 입력 문자열 길이 제한

2) XSS (cross site script)
   - 유형별
      ㄱ) Stored XSS - 웹서버내에 DB에 악성스크립트가 저장 - 게시판, 방명록 등에서..
      ㄴ) Reflected XSS - 악성스크립트가 공격사이트가 아닌 다른 사이트에 있는 경우
   - 대안
      ㄱ) 사용자 입력값은 반드시 서버단에서 검증 (특수문자는 변환함수로 치환)
      ㄴ) 게시판에서 HTML 태그 허용시, White List 선정후, 해당 태그만 허용 (Script 태그는 금지 등)

3) CSRF 공격 (cross site request Forgery)
웹어플에서 정상적 경로 통한 요청과 비정상 결로 통한 요청을 서버가 구분하지 못할 경우에,
공격자가 스크립트 구문 이용하여, 정상 사용자로 하여금 조작된 요청을 전송하도록 하여
설정 및 정보 변경시키는 경우
   - 대안
      ㄱ) Get 보다는 POST 방식 사용 (Get은 url에 sql문이 노출?)
      ㄴ) 중요기능에는 세션검증과 재인증을 유도한다.



새롭게 TOP 10 에 추가된 3개 항목은 다음과 같습니다.

1. XML External Entities (XXE) 

XXE 라고 부르는 'XML 외부 엔터티' 취약점은 XML 문서의 DTD 구조 정의 시 Entity 항목을 설정할 수 있을 때 발생하는 취약점 입니다.

XML 문서는 마치 변수를 선언한 것 처럼 Entity를 선언하여 사용 할 수 있는데, Entity 선언 시 외부 리소스로 선언이 가능합니다.

아래 코드와 같이 외부 파일, 가령 운영체제의 계정 정보가 기록된 passwd 파일을 외부 엔터터로 선언하고 XML 문서 내에서 '&엔터티명'을 호출하면 해당 파일 내용을 핸들링 할 수 있습니다.

<?xml version="1.0" encoding="ISO-8859-1"?>

 <!DOCTYPE foo [<!ELEMENT foo ANY >

 <!ENTITY xxe SYSTEM "file:///etc/passwd" >]>

 <foo>&xxe;</foo>

참고로 일반적으로 마크업 문서에서 <, > 대신 사용하는 &lt, &gt 는 기본적으로 선언된 Entity 입니다.


2. Insecure Deserialization

Javascript 를 비롯하여 여러가지 개발 언어에서 여러가지 이유로 데이터 혹은 객체를 전송할 때 직렬화(Serialization)을 수행하게 됩니다. 가령 특수 문자나 공백등의 구분자가 포함되어 있다던가, 바이너리 데이터를 전송할 필요가 있다던가 URL 호출로 직접 데이터를 전송 할 경우 일반적으로 사용합니다.

이렇게 serialization 된 정보 전송 시 별도의 무결성 검증이나 암호화를 수행하지 않을 경우 프로그램에 영향을 줄 수 있는 악의적인 정보를 전송할 경우 원래 데이터로 복원하는 Deserializtion 시 문제를 발생시킬 수 있습니다.


3. Insufficient Logging & Monitoring

악의적인 공격 징후에 대한 로그를 남기지 않거나 로그를 기록하더라도 모니터링을 수행하지 않으면 지속적인 공격의 대상이 될 수 있습니다.

공격의 징후 (가령 대량의 포트 스캐닝, Brute force 공격 등)에 대한 로그 기록과 지속적인 모니터링을 통해 공격 징후를 파악하고 사전에 공격을 차단할 수 있도록 방비해야 합니다.

[출처] OWASP TOP 10 2017 릴리즈|작성자 강군



2013 버전과 비교하면 몇가지 변경사항들이 좀 눈에 띄입니다. 특히 2013 버전에 있던 CSRF(크로스 사이트 요청변조)가 이번 버전에서 빠졌는데, OWASP 그룹에 따르면 CSRF는 13위에 랭크되어 이번 TOP 10 에서는 제외되었다고 합니다.



아래는 OWASP Top 10 -2017 관련 내용입니다.

처 : https://blog.naver.com/PostView.nhn?blogId=crehacktive3&logNo=221162402841&proxyReferer=https%3A%2F%2Fwww.google.com%2F


드디어 OWASP Top 10 - 2017 최종 버전이 공개되었습니다. 지난번 OWASP Top 2017 RC1 항목에 관해 포스팅을 하였는데 그때와는 다소 항목이 변경된 것을 아래 그림을 통해 알 수 있습니다. 이전 OWASP Top 10 - 2013 버전 보다 훨씬 더 직관적으로 항목이 변경되었으며, 최신 트랜드를 반영한 것을 알 수 있습니다.



OWASP Top 10 - 2013, OWASP Top 10 - 2017 항목 비교


아래는 본문 내용에서 발췌한 내용입니다.


데이터가 제공한 새로운 문제: 

- A4:2017-XML 외부 개체(XXE)는 주로 소스 코드 분석 보안 테스팅 도구(SAST) 데이터 집합에서 지원되는 새로운 범주입니다.


커뮤니티가 제공한 새로운 문제: 

우리는 커뮤니티가 지켜보고 있는 두 가지 취약점에 대한 통찰력을 제공할 것을 요청했습니다. 500개 이상의 개별 제출 및 민감한 

노출, XXE와 같은 이미 제시된 데이터를 제거한 후 다음과 같은 두 가지 새로운 문제가 있었습니다: 

- A8:2017-안전하지 않은 역직렬화는 영향을 받는 플랫폼에서 원격 코드 실행 또는 중요한 개체 조작을 허용합니다. 

- A10:2017-불충분한 로깅과 모니터링은 악의적인 활동 및 침입 탐지, 사고 대응 및 디지털 포렌식을 방해하거나 크게 지연시킬 수 

있는 결함이 있습니다. 


병합했거나 삭제됐지만, 잊지 말아야 하는 사항: 

- A4-안전하지 않은 직접 객체 참조와 A7-기능 수준의 접근 통제 누락은 A5:2017-취약한 접근 통제 항목으로 병합되었습니다. 

- A8-크로스-사이트 요청 변조 (CSRF)은 CSRF 방어를 포함한 많은 프레임워크에 있기 때문에 5%의 애플리케이션에서만 

발견되었습니다. 

- A10-검증되지 않은 리다이렉트 및 포워드는 약 8%의 애플리케이션에서 발견되었지만 XXE에 밀려났습니다

OWASP Top 10 - 2017(한글버전 PDF)

https://www.owasp.org/images/b/bd/OWASP_Top_10-2017-ko.pdf

OWASP Top 10 - 2017(영문버전 PDF)

https://www.owasp.org/images/7/72/OWASP_Top_10-2017_%28en%29.pdf.pdf




 

네트워크 보안 관련

Posted by ironmask84
2017. 3. 23. 13:15 컴퓨터공학/Security


1. ARP Spoofing
: 논리주소(IP) -> 물리주소(MAC) 로 변환해주는 프로토콜인 ARP를 이용하여,
  ARP Request를 계속해서 보냄으로써 공격대상 통신장비에 ARP Cache Table에 저장되어 있는
  임의의 IP, MAC 주소를 자신의 주소로 변경시켜서, 통신데이터를 Sniffing 하는 공격
--> arp -s ip주소 명령어로 정적주소로 타입을 등록함으로 ARP Cache Table 변경을 막는 방법이 있다.

2. ping, traceroute
: ping은 TCP/IP방식의 3계층인 IP프로토콜의 신뢰할 수 없는 전송을 관리해주는 ICMP의 메세지 중
  echo request(type 8), echo reply(type 0)을 이용하여, 네트워크 속도 및 손실률을 검사하는 유틸이다.

: traceroute는 여러 중계 라우터 각 구간에 대한 네트워크 상태를 관리하는 유틸
  ICMP 메세지 중 Time Exceeded(Type 11)와 Destination Unreachable(Type 3)을 이용하고,
  IP헤더에 포함된 TTL(Time To Live) 을 이용한다.

3. ICMP Redirect 공격
:   ICMP Redirect는 라우터만이 보낼수 있는데, 이를 공격자가 자신이 라우터 인것처럼 보이기 위해 IP헤더에
    source ip를 라우터의 주소로 위조하여 보내고, 라우팅 테이블을 변조시킨다.
   보안상의 이유로 일반적으로 OS에서 ICMP Redirect 옵션을 기본적으로 해제한다.
   리눅스에서는 sysctl -w 명령어 이용

4. ifconfig eth1 promisc (2계층 스위치 관련): 자신에게 온 패킷이 아니어도 다 받는다. Sniffing 목적 

5. DNS Spoofing 공격 (DNS는 도메인명 -> IP주소 로 변경해주는 것)
: 희생자가 DNS 쿼리를 수행하면 공격자가 이를 스니핑하고 있다가 희생자 호스트에 위조된 웹사이트로 접속하는
  DNS응답을 보내 위조된 주소로 접속하게 만드는 공격이다. DNS는 UDP를 이용하므로 비연결이라는 특성의 취약점을
  이용하여, 트랜잭션ID만 일치하면 먼저 들어온 응답을 신뢰하는 특성 이용한 것
  --> 중요한 사이트는 hosts 파일에 등록하여, DNS응답보다 우선순위가 높은 hosts파일을 참조하도록 하여 해결 


** 참조 우선순위 : hosts파일 -> 호스트의 dns cache -> resolv.conf파일에 등록된 dns서버정보에 질의

6. DNS Cache Poisoning
: DNS서버의 캐시 메모리에 위조된 데이터를 저장하여 호스트는 이 위조된 정보를 사용하도록 유도는 방식의 파밍 공격
  해당서버에 접근하는 호스트들이 위조된 정보를 응답받으므로 피해가 크다.
  DNS서버가 질의를 받을때, 자신의 Cache에 해당 정보가 없으면 Root DNS서버부터 순환질의를 하는데,
  이틈에 해당 DNS서버에 공격자가 Cache에 정보를 먼저 업데이트 시켜버린다.
  --> DNSSEC 기술을 이용 (기존 DNS에서 공개키 암호화  기능을 추가 부여)
  --> named.conf 파일을 수정하여 재귀적 질의 제한, zone transfer파일 제한

7. DNS Lookup 하는 명령어 (도메인 -> IP주소)
   1) nslookup
   2) dig : nslookup을 대체하기 위함, 리눅스 및 유닉스 계열에는 기본 설치

8. DHCP : 동적으로 클라이언트의 네트워크 주소 (IP)를 설정하기 위한 프로토콜
   * DHCP Starvation 공격 : 할당가능한 IP를 모두 소진하게 만들어  IP할당이 불가능하게 하는 공격
     --> 서로다른 MAC주소로 대량으로 보냄 -> 이에대한 offer 오면 -> request메세지까지 보내고 실제로는 할당안함

9. DDOS : C&C서버(Command & Control)를 이용하여, Bot/좀비PC 들을 컨트롤하여, 타겟을 공격한다.
   ex1) DNS Query Flooding : UDP프로토콜 기반의 서비스를 제공하는 DNS에 대해 DNS쿼리 데이터를 다량으로 서버에
          전송하여 DNS의 정상적인 서비스를 방해
   ex2) TCP SYN Flooding : 공격자는 다량의 SYN패킷을 서버로 전달하여 서버가 새로운 클라이언트의 연결요청을
          처리하지 못함 (syn+ack 받고, ack를 보내지 않아서 처리되지 않은 정보를 계속 쌓이게 만든다.)
   ex3) HTTP Get Flooding : 공격자는 동일한 URL을 반복 요청하여 웹서버가 URL에 대해 데이터를 클라이언트에게 회신하기 위한 서버자원을 사용하도록 공격

10. DRDOS (Distributed Reflection DOS)
: 공격자는 출발지 IP를 공격대상의 IP로 위조하여 다수의 반사서버로 요청정보를 전송,
  공격대상은 반사서버로 부터 다수의 응답을 받아 서비스 거부상태가 됨

  * 공격근원지를 파악하기 어렵다. (출발지 IP를 변조하여, 공격트래픽이 수많은 반사서버를 경유하므로)
  * 좀비PC의 공격트래픽 효율이 증가한다. 반사서버는 syn+ack 패킷에 대한 응답이 없는경우 일정횟수 재전송을
    수행하기 때문에 공격자가 전송하는 syn패킷보다 몇배많은 syn+ack 패킷이 타켓에 전송된다.

** 해결방법
: IP주소가 위조된 패킷이 인터넷망에 유입되지 않도록 ISP가 직접 차단
  반서서버에게는 icmp프로토콜이 필요없는 시스템은 해당프로토콜을 차단




 

Linux 명령어와 시스템보안

Posted by ironmask84
2017. 3. 3. 18:23 컴퓨터공학/Security


1. ls (디렉터리, 파일 정보 출력)
-> 1) 파일종류, 접근권한  2) 하드링크수  3) 소유주  4) 소유그룹  5) 크기  6) 최종 변경일  7) 최종 변경시간  8) 이름

2. stat (i-node 속성정보 출력)
-> 1) i-node number  2) 파일타입  3) 접근권한  4) link count  5) 소유자  6) 소유그룹  7) 크기  8) MAC Time  
    9) Block Index
    ln source_file target_file : 하드링크 
    ln -s source_file target_file : 심볼릭링크 (소프트 링크)

3. find (파일 검색)
-> find path [expression] [action]
    1) find . -name "*.c" : 현재 디렉터리에서 파일명이 .c로 끝나는 파일 검색
    2) find . -size +56 : 현재 디렉터리에서 파일 크기가 56블록보다 큰 것을 검색
    3) find . -perm -664 : 현재 디렉터리에서 user와 group에 읽기 및 쓰기 권한, other에 읽기 권한이 있는 파일 검색
    4) find . -mtime +3 : 현재 디렉터리에서 파일을 수정한지 3일이 지난 것을 검색

4. touch : 0byte 파일을 생성 또는 파일의 시간을 변경

5. umask : 파일 생성 시 접근권한에 영향을 미침 (/etc/profile 에 적용, 개인은 .profile에 적용)

6. diff : 파일이 동일한지 여부를 검사

7. comm : 파일을 비교할 때 사용 (한쪽에만 있거나 양쪽 모두에 있는 행 출력)

8. grep : 파일 내 특정 패턴이나 문자열을 검색

9. ps : 시스템에 상주중인 프로세스 정보 출력
-> UID, PID, PPID, STIME(프로세스 시작 시간), TTY(프로세스가 연결된 터미널), TIME(CPU 사용시간), CMD(프로세스명)

10. 시그널 : UNIX 시스템에서 지원하는 소프트웨어 인터럽트, 프로세스간 통신수단
-> 1) 외부에 의해서 : 키보드 입력 (ctrl + c)
    2) (커널)에러에 의해서 : divde zero 오류, 메모리 참조 오류
    3) 이벤트에 의해서 : alarm() 함수, 프로세스 종료
    4) 인위적으로 : kill() 함수, kill 명령어 (kill -시그널번호 PID)
  * 주요시그널 : SIGKILL(9), SIGSTOP(23) 이 2가지는 무시나 핸들링이 불가능하므로 관리자가 해커를 막기위한 강력권한
  * 좀비프로세스 : 프로세스 수행을 종료했지만 부모 프로세스가 종료상태정보를 확인하지 않아서 소멸하지 않고
                        남아있는 프로세스
  * 고아프로세스 : 자식프로세스가 살아있는 상태에서 부모 프로세스가 종료하게 되면 자식프로세스는 고아프로세스 됨.

11. mount : 보조기억장치에 설치된 파일시스템을 UNIX시스템이 인식하도록 특정 디렉토리에 논리적으로 연결시킴

12. cron : 정기적 처리할 작업을 crontab명령으로 crontab파일에 저장, cron데몬 프로세스가 관리
              해커가 주기적으로 정보를 빼돌리는 데에 사용도 가능하다. -> crobtab 파일 관리 필요

13. /etc/passwd : account / password(x로표시) / user_ID / group_ID / comment / home_directory / login_shell
    /etc/shadow : account / encrypted_password / last_change / minlife / maxlife / warn / inactive / expires
      ** chage 명령어로 패스워드 Aging관련 설정을 할 수 있다. -> /var/log/secure파일에 로그가 남는다.

14. setuid, setgid (chmod ug+s)
   1) setuid, setgid 설정된 경우 -> RUID == EUID,  RGID == EGID
   2) setuid, setgid 설정되지 않은 경우
   -> RUID, RGID = 실행시킨 사용자의 ID
       EUID, EGID  = 실행파일 소유자의 ID (프로세스가 실행중인 동안에 접근권한을 판단하기 위한 ID)
* root소유의 실행파일에 setuid를 설정하면, ruid는 실행자의 id, euid는 root id로 설정이 된다. 
  따라서, 실행 프로그램 내에 euid 설정에 따라 root권한으로 접근하게 된다.

* sticky bit (chmod o+t)
-> 디렉토리에 설정이 되면, 파일의 생성은 자유롭게 할 수 있지만
    파일 삭제 및 파일명 변경은 파일소유자 또는 root만이 가능하다.



 

암호화의 진화

Posted by ironmask84
2017. 2. 17. 18:09 컴퓨터공학/Security


암호화를 통한 정보보안 방법은 계속 발전해왔습니다.

--> 스테가노그라피(최근엔 워터마크) -> 전치 -> 단일치환 -> 다중치환 (에그니마) -> DES -> AES -> RSA -> 양자암호학

DES : 페이스텔 구조
AES : SPN 구조


블록암호 원리 : 특정 비트 수의 집합을 한 번에 처리하는 암호 알고리즘
스트림암호 원리 : 음성, 영상 스트리밍 전송, 무선 암호화 방식 (평문 XOR 키 스트림)

대칭키 -> 키배포문제 -> Diffie-Hellman 키교환 -> 공개키 암호화

hash(무결성 확인)
-> MAC(메세지인증코드, hash + 대칭키암호 이용) -> 2명만이 키 공유하고 있으므로 거짓행세는 해결
-> 부인방지 문제 -> hash + 공개키 암호를 이용하는 전자서명으로 부인방지 해결 -> 중간자 공격으로 공개키 공유 시 올바른지의 문제  
-> PKI도입(공개키 인증서)로 해결 (공개키에 전자서명을 하여 배포, 이 때의 전자서명은 인증기관에서 발급한 공개키로 확인가능, 그 공개키는 App에 포함되어있다. 브라우져 등)


PKI : 공개키 기반구조 라고 하며, 공개키 암호화 알고리즘을 이용하여, 암호화 통신을 하는 구조에서 공개키를 공유하여야 하는데, 이 때 공개키 공유 시 중간자 공격으로 잘못된 키가 공유되지 않도록 하기 위하여, 공개키를 전자서명 기술을 이용하여 공개키 인증서 형태로 공유합니다.  (공개키 + 공개키를 RSA와 hash알고리즘으로 만든 전자서명 형식의 데이터) 이 때 공개키 인증서는 보통 공개키 암호화알고리즘 + hash 알고리즘 형태로 구성된 전자서명 기술로 만들어집니다.

여기서의 전자서명은 CA의 서명입니다.

이 공개키 인증서는 이미 CA에서 인증된 기관이면, 그 공개키 인증서를 브라우져내에 인증할 수 있는 공개키 및 인증방법이 탑재되어 있습니다.  그러므로, 브라우져를 통해 공개키를 안전하게 입수 가능합니다.

* 인증서 표준 규격은 X.509

* 폐지된 인증서의 일련번호의 목록에 대해 인증기관이 전자서명을 붙인 것이 CRL (Certificate Revocation List)

ECC : 타원곡선 문제의 원리를 이용한 공개키 암호화 알고리즘, 1024비트의 RSA 키와 160비트의 ECC는 동일한 보안수준 정도로 ECC가 고속으로 암호/복호가 가능

** 암호알고리즘의 안정성평가
--> 대표적으로 NIST의 CMVP 가 있다.
--> 암호알고리즘->암호모듈->정보보호제품->응용시스템 순으로 평가한다.
--> CMVP는 암호기술의 적합성, 암호키운용 및 관리 물리적 보안 항목으로 평가한다.

* 평가기준 중요요소
1. 암호해독 비용이 암호화된 정보의 가치 초과
2. 암호해독 시간이 정보의 유효기간 초과


** 위험관리 = 보안정책 -> 위험분석 (위험분석 : 자산식별 -> 위협 및 취약점 평가 -> 위험의 측정)
    -> 대책 선택 -> 대책 구현 -> 잔여위험 수용

** 워터마크 -> 판매자정보를 은닉하고, 저작권표시 용도
** 핑거프린트 -> 구매자 추적정보를 은닉하고, 구매자 추적 용도




 

인터넷 쿠키

Posted by ironmask84
2017. 2. 17. 18:01 컴퓨터공학/Security


고객이 특정 홈페이지를 접속할 때 생성되는 정보를 담은 임시 파일로 크기는 4KB 이하로 작다. 쿠키는 애초 인터넷 사용자들의 홈페이지 접속을 돕기 위해 만들어졌다. 특정 사이트를 처음 방문하면 아이디와 비밀번호를 기록한 쿠키가 만들어지고 다음에 접속했을 때 별도 절차 없이 사이트에 빠르게 연결할 수 있다.

쿠키는 사용하는 웹브라우저가 자동으로 만들기도 하고 갱신하기도 하며 웹사이트로 기록을 전달하기도 한다. 따라서 개인의 사생활을 침해할 소지가 있다. 이용자가 인터넷에서 어떤 내용을 봤는지, 어떤 상품을 샀는지 등 모든 정보가 기록되기 때문이다. 온라인 광고업체들은 쿠키를 이용해서 인터넷 사용자의 기호 등을 수집·분석해 광고전략을 짜는 데 유용하게 활용해왔다. 

또 보안문제를 유발하기도 한다. 회원번호나 비밀번호 등이 유출될 가능성이 있기 때문이다. 그래서 마이크로소프트는 인터넷 익스플로러 5.0 이상에서는 쿠키 거부 기능을 첨가했다.

- [네이버 지식백과] 쿠키 [cookie] (두산백과) - 


* 웹 사이트는 해당 사이트에 쇼핑정보, ID, 암호, IP주소 등의 세션 정보를 기억하기 위해
  쿠키를 사용한다. 

  1. 임시 쿠키 : 인터넷 익스플로러가 실행하고 있는 시간만큼만 유효, 익스플로러가 종료되면 삭제된다.
  2. 영구 쿠키 : 인터넷 익스플로러 세션을 통해 하드디스크에 저장된다. 보존기간은 설정에 따라 다르다.

--> 익스플로러에서는 도구-인터넷옵션-개인정보 탭에서 보호정책 단계를 선택할 수 있다.


* 인터넷 익스플로러는 "InPrivate"모드를 통해 탭을 열어 쿠키정보 저장을 안하게 가능
* 크롬은 "시크릿"모드를 통해 탭을 열어 쿠키정보 저장을 안하게 가능