shopkeeper/korean_wiki_content_only_120125 huggingface dataset:
야고보는 제베대오(세배대)와 살로메 사이 태어난 첫째 아들로, 동생 요한과 함께 아버지를 도와 갈릴래아 호숫가에서 어부로 일하다가 예수를 만나서 같은 직업의 다른 형제인 베드로와 안드레아와 함께 부름을 받았다. 예수의 부름을 듣자 그들은 곧 배를 버리고 아버지를 떠나 예수를 따라갔다(마태 4,21-22). 마가 복음사가는 제베대오가 일용직 노동자들을 고용했다고 말하는 것을 보면(마가 1:19-20), 야고보, 요한 형제 집안은 임금노동자는 아니고, 사업장을 갖춘 중간계급으로 보인다. 김성 협성대학교 교수에 따르면, 고대 이스라엘에서 물고기는 훈제한 물고기 한 수레를 황소와 바꿀 정도로 비싼 식량이었다고 한다. 그럼에도, 이들은 예수의 부름을 듣고서 즉시 안정된 삶을 버렸다.
복음서에 있는 두 가지 사건이 야고보와 요한 형제의 성격을 보여주고 있다. 하루는 야고보와 요한 형제(또는 그들의 어머니라고도 함)가 예수에게 하늘 나라에서 자신들이 각각 예수의 오른편과 왼편에 앉도록 해달라고 간청했다. 이때 예수는 “너희는 너희가 청하고 있는 것이 무엇인지조차도 모르는구나! 너희는 내가 마시고자 하는 잔을 마실 수 있으며, 내가 받을 고난의 세례를 받을 수 있겠느냐?” 며 물었다. 그러자 그들은 자신있게 할 수 있다고 대답했다. 이에 예수는 “죽음의 잔을 마시고 고통의 세례를 받을 수는 있다. 그러나 나의 오른편이나 왼편에 앉는 특권은 내가 줄 수 있는 것이 아니고 오직 하느님께서 미리 정하신 이들을 위한 것이다.” 라고 대답하였다. 다른 사도들이 이 형제의 야심에 분개하자, 예수는 그들에게 “너희 사이에서 높은 사람이 되고자 하는 사람은 남을 섬기는 사람이 되어야 하고 으뜸이 되고자 하는 사람은 종이 되어야 한다. 사람의 아들도 섬김을 받으러 온 것이 아니라 섬기러 왔고 또 많은 사람을 위하여 목숨을 바쳐 몸값을 치르러 온 것이다”라고 훈계하여 권력의 목적은 봉사하는 것으로서 다른 사람들에게 무언가를 강요하거나 그들 위에 군림하는 것이 아니라는 것을 일깨워 주었다(마태 20,27-28).
또한 두 형제는 예수가 예루살렘으로 가던 길에 자신들을 영접하지 않은 불친절한 사마리아 사람들을 보고 불같이 화를 내며 “주님, 저희가 하늘에서 불을 내리게 하여 그들을 불살라 버릴까요?” 하고 말했다. 예수는 그 말을 듣고 그들을 호되게 질책하였다(누가 9,54).
성령 강림 이후 다른 사도들처럼 야고보 역시 사마리아와 유대 지역에서 복음을 전파하였으며 심지어 이베리아반도까지도 다녀갔다는 기록이 있다. 44년 예루살렘에서 그리스도인을 탄압하던 헤로데 아그리파 1세에 의하여 체포되어 파스카 축일 전날 참수형으로써 순교를 하였다.
야고보의 유해는 처음에는 예루살렘에 안장되었으나, 정확히 어디에 묻혔는지에 대해서는 행방이 묘연하여 찾을 길이 없었다. 그러던 중 9세기 즈음에 하늘에서 한 별빛이 내려와 숲 속의 한 동굴을 비추어 사람들이 그 안으로 가보니 야고보의 무덤이 있었다고 한다. 그 후 야고보의 유해는 에스파냐의 서북부 지역 갈리시아의 산티아고데콤포스텔라로 이장되어 모셔졌고, 당시 국왕 알폰소는 그 묘지 위에 150년에 걸쳐 웅대한 대성당을 건축하였다. 산티아고데콤포스텔라 대성당 안으로 들어가보면 그의 유골함이 전시되어 있다.
그 후 844년 이베리아반도에 세력을 뻗친 이슬람교 세력에 로마 가톨릭 세력이 대항하기 위하여 일어난 클라비호 전투에서 야고보가 에스파냐군 앞에 나타나는 기적을 일으켜 이슬람군을 무찔렀다는 말이 전해지면서 그에 대한 신심이 에스파냐를 중심으로 대폭 커져 산티아고데콤포스텔라는 금새 세계적인 순례지가 되었다. 참고로 산티아고는 야고보의 에스파냐어식 표기이다.
비소츠키는 1938년 1월 25일 모스크바에서 태어났다. 아버지는 군장교였으며 어머니는 독일어 번역사였는데 그의 출생직후 이혼하여 계모의 손에서 컸다. 1954년 부모의 희망에 따라 모스크바 기술대학(Moscow Institute of Civil Engineering)에 진학해서 공부했지만 적성에 맞지 않아 곧바로 중단하고 자신의 꿈을 이루기 위해 1956년 모스크바 예술극단의 배우학교에 입학하여 4년 동안 배우 수업을 받는다.
비소츠키는 1960년 대학을 졸업하고 알렉산드르 푸시킨 극단(Aleksandr Pushkin Theatre)에 입단한 후 단역배우로 전전하던 시절 가끔씩 친구들 앞에서 자신이 작곡하고 가사를 붙인 노래를 불렀다. 독재체제에 대한 비판과 억눌린 인민들의 삶에 대해 분노에 찬 목소리로 절규하듯 700여 곡의 저항가요를 불렀다.
그는 세상을 떠날 때까지 단 한 권의 시집도, 단 한장의 음반도 내지 못하고 정보기관으로부터 늘 감시를 받았다. 본인은 스스로를 가수라고 인정하지 않았지만 카세트테이프에 녹음된 그의 노래는 사람들에게 전해져 소련은 물론 주변 국가들에까지 널리 퍼지게 되었다. 배우로도 성공하여 수많은 연극과 드라마에서 연기했으며 28편의 영화에 출연하였다.
그는 1980년 7월 27일 모스크바에서 42세의 젊은 나이에 심장마비로 죽었는데, 사인은 평소 과도했던 음주벽 때문이라고 하지만 러시아인들 사이에서는 비소츠키의 사인은 마약복용으로 인한 쇼크사라는 이야기도 있다. 사후에도 그의 노래는 꾸준히 사랑받아 1980년대 후반에 이르러 소련 정부는 그의 시와 노래의 출판을 허용하기 시작했으며 그는 아직도 러시아에서 가장 사랑받는 배우/음유시인들 중 한명이다.
답답함을 토해내듯 노래불렀던 비소츠키는 부드러운 목소리로 서정적인 음유시가를 부른 불라트 오쿠자바()와 함께 러시아의 대표적인 음유시인이 되었다. 그는 인기있는 배우였지만 오히려 음유시가의 발전에 지대한 공을 세워 음유시가를 좋아하는 사람들에게 우상이 되었다.
입법부(立法府, , , )는 법률이나 조례 등을 제정하거나 수정 또는 폐기하는 중앙정부 혹은 지방정부 제도 기관(制度 機關)이다. 행정부, 사법부와 함께 국가의 주요 기능을 담당한다. 근데 민주주의 정치는 권력을 독점하는 것을 막기 위해 입법권, 행정권, 사법권을 서로 견제하는 세 개의 국가 기관에 분리하여 부여하는 것을 원칙으로 하고 있다. 이러한 권력의 분리와 견제를 삼권분립의 원칙이라 한다.
나라별 입법부 명칭.
입법부는 나라마다 부르는 명칭이 다르다. 나라에 따른 명칭은 아래와 같다.
버퍼 오버플로() 또는 버퍼 오버런()은 메모리를 다루는 데에 오류가 발생하여 잘못된 동작을 하는 프로그램 취약점이다. 컴퓨터 보안과 프로그래밍에서는 프로세스가 데이터를 버퍼에 저장할 때 프로그래머가 지정한 곳 바깥에 저장하는 것을 의미한다. 벗어난 데이터는 인접 메모리를 덮어 쓰게 되며 이때 다른 데이터가 포함되어 있을 수도 있는데, 손상을 받을 수 있는 데이터는 프로그램 변수와 프로그램 흐름 제어 데이터도 포함된다. 이로 인해 잘못된 프로그램 작동이 나타날 수 있으며, 메모리 접근 오류, 잘못된 결과, 프로그램 종료, 또는 시스템 보안 누설이 발생할 수 있다.
버퍼 오버플로가 코드를 실행시키도록 설계되거나 프로그램 작동을 변경시키도록 설계된 입력에 의해 촉발될 수 있다. 따라서 이는 많은 소프트웨어 취약점의 근간이 되며 악의적으로 이용될 수 있다. 경계 검사로 버퍼 오버플로를 방지할 수 있다.
버퍼 오버플로는 보통 데이터를 저장하는 과정에서 그 데이터를 저장할 메모리 위치가 유효한지를 검사하지 않아 발생한다. 이러한 경우 데이터가 담긴 위치 근처에 있는 값이 손상되고 그 손상이 프로그램 실행에 영향을 미칠 수도 있다. 특히, 악의적인 공격으로 인해 프로그램에 취약점이 발생할 수도 있다.
기술적인 설명.
버퍼 오버플로는 불충분한 경계 검사에 의해 버퍼에 쓰인 데이터가 버퍼에 이미 할당된 근접한 메모리 주소에 있는 데이터 값을 오염시킬 때 발생한다. 대부분 이는 문자열을 하나의 버퍼에서 다른 버퍼로 복사할 때 발생한다.
기본 예제.
아래의 예제에서, 프로그램은 메모리에서 인접해 있는 두 아이템을 정의하였다: 8 바이트 길이 스트링 버퍼, A. 그리고 2 바이트 정수형, B. 우선, A는 8바이트 모두 숫자 0값만 포함하고 B는 숫자 3을 포함한다. 문자들은 1바이트 크기이다.
이제, 프로그램은 문자열 "excessive"를 A 버퍼에 저장한다. 한 바이트짜리 0값이 스트링의 끝임을 알리기 위해 따라온다. 스트링의 길이를 확인하지 않음으로 B의 값을 덮어쓴다.
비록 프로그래머가 B가 바뀌는 것을 전혀 의도하지 않았다 하더라도, B의 값은 문자열의 한 부분을 구성하는 숫자로 바뀌었다. 이 예제에서 ASCII를 사용하는 빅 엔디언 시스템에서 "e" "0"는 숫자 25856가 될 수 있다. B가 프로그램이 정의한 유일한 다른 변수였다면, B의 끝을 지나가는 긴 스트링을 쓰는 것은 세그멘테이션 오류, 프로세스 종료와 같은 오류를 발생시켰을 것이다.
버퍼 오버플로 취약점을 이용하는 기술은 구조, 운영 체제, 메모리 영역에 따라 다르다. 예를 들어 힙(heap, 동적 메모리 할당에 사용됨) 을 이용하는 방법은 함수 호출 스택을 이용하는 방법과 매우 다르다.
스택 기반 이용.
트램폴라이닝(trampolining)이라 불리는 방법을 사용하면, 사용자가 지정한 데이터의 주소를 모르더라도, 레지스터에 그 주소가 저장되어 있다면, 실행 흐름을 사용자 제공 데이터로 도약하도록하는 어떤 실행코드의 주소로 귀환 주소를 덮어쓸 수 있다. 위치가 레지스터 R에 저장되어 있다면 jump R이나 call R과 같이 R에 저장되어 있는 주소로 건너뛰는 작동코드 opcode 로 사용자 제공 데이터가 실행되도록 할 수 있다. 적당한 작동코드 또는 바이트의 위치는 DLL이나 실행 파일 자체 안에서 찾을 수 있다. 그러나 작동 코드의 주소는 전형적으로는 어떠한 무효 문자도 포함할 수 없고, 이러한 작동 코드의 위치는 응용 프로그램마다, 운영 체제 버전에 따라 달라질 수 있다. 메타스플로잇 프로젝트는 그러한 적당한 작동코드의 데이터베이스로 윈도우 운영 체제에 관한 것이 나열되어 있다.
스택 기반 이용 예.
아래의 예에서 "X"는 프로그램이 실행될 때 스택에 있게 되는 데이터이다. 프로그램은 그 다음 작은 양의 저장공간만 필요한 함수 "Y"를 호출한다. 그리고 "Y"는 그 다음 많은 버퍼를 필요로 하는 "Z"를 호출한다.
이것은 대부분의 시스템에서 현재의 프로세스가 호출되기 전 실행되고 있던 프로그램 부분의 위치인 반환값을 스택이 갖고 있기 때문에 특히나 심각하다. 함수가 끝날 때 임시 저장소는 스택에서 제거되고 실행은 반환 주소로 되돌아간다. 그런데 반환 주소를 버퍼 오버플로가 덮어쓰면 어떤 다른 위치를 가리킬 것이다. 처음 예제에서와 같은 버퍼 오퍼플로가 우연히 발생하는 경우 거의 틀림없이 쓸모없는 위치일 것이다. 어떠한 프로그램 명령어 위치가 아닌 이상, 프로세스는 망가질 것이다. 그리고 악의적인 공격자가 시스템 보안과 충돌할 수 있는 임의 위치로 반환 주소를 바꿀 수 있다.
힙 기반 이용.
힙 데이터 영역에서 일어나는 버퍼 오버플로를 힙 오버플로라 부르며 스택 기반 오버플로와는 다른 방법으로 이용할 수 있다. 힙 상의 메모리는 동적으로 응용 프로그램에 의해 실행시간 중에 할당되고 보통 프로그램 데이터를 보관하고 있다. 이용하는 방법은 이 데이터를 특정한 방법으로 오염시켜 응용 프로그램이 연결 리스트 포인터(linked list pointer)등과 같은 내부 자료 구조를 덮어쓰게 한다. 기본적인 힙 오버플로 기술은 동적 메모리 할당 연결(malloc 상위 수준 데이터)을 덮어씀으로써 프로그램 함수 포인터를 조작한다. 마이크로소프트 JPEG GDI+ 취약점은 힙 오버플로도 컴퓨터 사용자에 위험이 될 수 있다는 예이다.
읽히거나 실행되기 전에 버퍼를 조작하면 이용하려는 시도를 막을 수도 있다. 이러한 조작은 이용당할 위협을 완화시켜줄 수는 있지만 불가능하게 만들지는 못한다. 조작에는 대문자로 또는 소문자로 변환, 제어 부호 제거, 숫자 영문자 제거 등이 포함된다. 이러한 방지 수단을 회피하는 기술도 존재한다: 숫자 영문자 코드, 다형성 코드, 자체 수정 코드, libc 귀환 공격 등. 같은 방법을 침입 감지 시스템에 의한 피탐지를 회피하는 데도 사용할 수 있다. 어떤 경우에는, 유니코드 변환의 경우도 포함되지만, 서비스 거부만 가능한 것으로 취약점의 위협이 잘못 표현되었지만 사실은 임의 코드의 원격 실행이 가능할 수도 있다.
이용의 실제.
실세계 이용에서는 다양한 이슈를 극복해야 공격을 신뢰성 있게 수행할 수 있다. 이러한 요소에는 주소에서의 무효값 바이트, 셸 코드 위치 가변성, 환경간 상이성, 그리고 다양한 대응수단이다.
NOP 슬라이드 기법.
NOP 슬라이드 기법은 가장 오래되고 가장 널리 알려진 스택 버퍼 오버플로 공격 기법이다. 버퍼의 정확한 주소를 찾는 문제를 해결하는 것으로, 표적 영역의 크기를 효과적으로 증대시킨다. 이를 위하여 훨씬 큰 영역의 스택을 NOP 기계어 코드 (컴퓨터가 이 명령을 읽으면 그 클럭 싸이클에는 아무 일도 하지 않는다)로 오염시킨다. 공격자 제공 데이터 끝, 즉 NOP 명령어 이후에 버퍼의 최상위 위치, 셸 코드가 있는 곳으로 상대적 jump 명령어를 둔다. NOP 명령어의 모음이 "NOP 슬라이드"라고 불린다. 왜냐하면 귀환 주소를 덮어 쓸 때 NOP 영역 내의 주소값 어디를 써도 결국 NOP 명령어들을 따라 "미끄러져" 최후의 상대 jump로 실제 악성 코드에 도달하기 때문이다. 이 기법은 공격자가 상대적으로 작은 크기의 셸 코드의 위치 대신 스택에서 NOP 슬라이드의 위치를 추정하면 된다.
이 기법이 인기 있기 때문에 많은 침입 방지 시스템 업체에서 이러한 NOP 기계어 명령어 패턴을 탐색하여 사용중인 셸 코드를 검출할 것이다. 중요한 것은 NOP 슬라이드는 반드시 전통적인 NOP 기계어 코드만 담는 것은 아니며 어떤 명령이라도 셸 코드가 실행될 수 없을 만큼 기계 상태를 해치지 않으면 하드웨어로 지원되는 NOP자리에 사용할 수 있다. 결과적으로, 공격자가 NOP 슬라이드를 셸코드 실행에 사실상 지장이 없는 임의로 선택한 명령어로 채우는 관행이 널리 퍼지게 되었다.
레지스터로 건너뛰기 jump to register 기법은 NOP-슬라이드와 같은 추가 공간이나 스택 위치 오프셋을 추정하지 않아도 잘 작동한다. 전략은 복귀 포인터를 덮어써서 통제된 버퍼, 즉 셸코드를 담고 있는 레지스터의 위치로 프로그램이 건너뛰게 만드는 것이다. 예를 들어 레지스터 A가 어떤 버퍼의 시작점을 담고 있다면, 이 레지스터를 오퍼랜드(operand)로 삼은 어떠한 건너뛰기 또는 호출로 실행 흐름의 제어권을 얻을 수 있다. 실전에서는 어떤 프로그램이 의도적으로는 어떤 특정 레지스터에 저장된 주소로 건너뛰는 명령을 포함하지 않을 수도 있다. 전통적인 해법은 어떤 의도되지 않은 적당한 작동코드 opcode 사례를 프로그램 메모리 어딘가 고정된 위치에서 찾는 것이다. 예를 들면, 뜻하지 않게 i386 JMP esp 명령이 포함된 경우가 ntdll.dll 안의 DbgPrint()함수에 있었다. 이 명령의 작동 코드는 FF E4이다. 이 연속 두 바이트 패턴이 call DbgPrint 명령에서 1Byte 떨어진 곳 주소 0x7C941EED에 나타났다. 공격자가 프로그램의 귀환 주소를 이 주소로 덮어 쓰면, 프로그램이 처음에는 0x7C941EED로 건너뛰어 실행 코드 FF E4를 JMP esp 명령으로 인식하여 스택의 정상 위치로 jump, 공격자의 코드를 실행할 것이다. 이 기법이 가능하다면 취약성의 심각성이 상당히 증가한다. 이는 왜냐하면 이용이 충분히 신뢰성 있게 작동하여 공격을 자동화, 실행하면 가상적으로 성공을 보증할 수 있게 되기 때문이다. 이러한 이유로, 이 기법이 인터넷 웜에서 가장 흔히 버퍼 오버플로 취약점을 이용하기 위해 사용된다. 이 방법은 또한 셸코드의 위치를 윈도 플랫폼 상에서 덮어씌어진 귀환 주소 뒤에 위치하더라고 가능하다. 실행 코드는 주소 0x00400000에 기반하고, x86은 리틀 엔디안 구조이므로 귀환 주소의 최후 바이트는 반드시 무효값이 되고, 이것이 버퍼 복사를 마감하며 그 이후에는 아무것도 씌지 않는다. 이로 하여 셸코드의 크기는 버퍼의 크기로 제한되며, 지나친 규제가 될 수 있다. 동적 연결 라이브러리 DLL은 고위 메모리 (0x01000000 이상)에 저장되며 따라서 무효 바이트가 없는 주소를 가지므로, 이 방법은 무효 바이트 (또는 다른 허용 안되는 문자)를 덮어씌어진 복귀 주소에서 제거할 수 있다. 이런 식으로 사용되면, 이 방법은 때때로 DLL 프램폴라이닝이라고 불린다.
보호 대응 수단.
다양한 기법이 버퍼 오버플로를 감지 또는 방지하기 위하여, 다양한 대가를 지불하며 사용되어 왔다. 가장 신뢰성 있는 버퍼 오버플로를 회피 또는 방지하기 위한 방법은 언어 수준에서 자동 보호를 사용하는 것이다. 그러나 이러한 종류의 보호는 기존 코드에 적용할 수 없고, 때때로 기술적, 상업적, 또는 문화적 제한으로 취약한 언어를 요구한다.
프로그래밍 언어 선택.
프로그래밍 언어 선택은 버퍼 오버플로 발생에 깊이 있는 영향을 미칠 수 있다. 2008년 기준으로, C와 그로부터 발전된 C++는 가장 인기 있는 언어들에 포함되며, 거대한 양의 소프트웨어가 이러한 언어로 작성되었다. C와 C++는 메모리상 어떤 부분에서도 데이터 접근과 덮어쓰기에 대한 내장 보호 기능이 없다. 더 구체적으로, 데이터가 어떤 배열 (버퍼의 구현)에 씌어지는 데이터가 그 배열의 범위 안에 씌어지는지 검사하지 않는다. 그러나 표준 C++ 라이브러리는 데이터를 안전히 저장하는 많은 방법을 제공하고, C언어에서 버퍼 오버플로를 회피하기 위한 기술도 존재한다. 장기간 작동시키며 안정성을 유지해야 하는 프로그램을 작성해야 한다면 보다 데이터 타입과 오버플로 검사가 엄격한 C#과 자바를 사용할 수 있다.
많은 다른 프로그래밍 언어는 실행시간 검사를 제공하고, 어떤 경우에는 심지어 컴파일 시 검사하여 C 또는 C++가 데이터를 덮어쓰고 계속하여 더 많은 명령을 실행하여 잘못된 결과가 프로그램을 깨뜨릴 수도 있는 경우 경고 또는 예외를 제기할 수도 있다. 그러한 언어의 예는 에이다, 리스프, 모듈라-2, 스몰토크, OCaml 그리고 C에서 발전된 사이클론과 D이다. 자바와 닷넷 바이트코드 환경도 경계 검사를 모든 배열에 대하여 요구한다. 거의 모든 인터프리터 언어는 잘 정의된 에러 조건에 신호를 보냄으로써 버퍼 오버플로에 대항 보호할 것이다. 어떤 언어가 충분한 형 정보(type information)를 제공하면 때때로 가능케 할것인지 불가능하게 할 것인지 정할 수 있게 해 준다. 정적 코드 분석은 다수의 동적 경계 검사를 제거할 수 있지만, 잘못 구현되거나 부적절한 케이스(case)는 심각하게 성능을 저하시킬 수 있다. 소프트웨어 공학자는 반드시 조심스럽게 안전성과 성능 비용 사이의 조율을 고려하여 언어와 컴파일러 설정을 결정하여야 한다.
버퍼 오버플로의 문제는 C와 C++언어에서는 일반적이다. 왜냐하면 이들 언어가 데이터 형을 보관 장소로서 버퍼의 저수준 표현상 상세를 노출시키기 때문이다. 버퍼 오버플로는 반드시 따라서 버퍼 관리 코드안에서의 높은 수준의 정확성을 유지함으로써 회피되어야 한다. 오래전부터 표준 라이브러리 함수 중 경계를 검사하지 않는 함수의 사용을 피할 것이 권고되어 왔다: gets, scanf, strcpy 등. 모리스 웜은 핑거 데몬 안에서 호출되는 gets 함수를 이용하였다.
잘 씌어지고 검사된 추상 데이터형 라이브러리는 경계 검사를 포함한 버퍼 관리를 중앙집중화하고 자동적으로 실시하여 버퍼 오버플로 발생과 충격을 줄일 수 있다. 버퍼 오버플로가 일상적으로 일어나는 언어의 두가지 주요한 기본 데이터 형은 문자열과 배열이다; 따라서 버퍼 오버플로를 이러한 데이터 형에서 방지하는 라이브러리는 필요 영역 가운데 방대한 대다수를 담당해 줄 수 있다. 여전히 이러한 안전한 라이브러리를 사용하지 못한다면 버퍼 오버플로와 다른 취약점을 낳을 것이다; 자연스럽게 라이브러러 자체의 어떤 버그도 잠재적인 취약점이 된다. "안전한" 라이브러리 구현은 "개선된 문자열 라이브러리", Vstr, 어원을 포함한다. 오픈 BSD 운영체제의 C 라이브러리는 strlcpy와 strlcat 함수를 제공하지만 이들은 전 안전 라이브러리 구현보다 더 제한되어 있다.
2006년 9월 C 언어 표준 위원회 기술 보고서 24731이 공개되었다; 이는 표준 C 라이브러리의 문자열과 입출력 함수들에 기반하였으나 버퍼 크기 매개 변수를 추가로 가진 함수들을 명세하였다. 그러나 이런 함수들의 버퍼 오버플로 방지 효력은 논란의 여지가 있다. 프로그래머가 일부러 함수 호출 마다 개입하여야 하는데 이는 더 오래된 표준 라이브러리 함수의 버퍼 오버플로를 방지하게 만드는 것과 등가의 일이다.
가능한 더 안전한 기능을 제공하는 함수를 사용하는 것도 방법이다. 예를 들어 문자열의 길이를 구하는 C 함수 strlen, wcslen 함수는 NULL 문자를 만날 때까지 계속 다음 메모리를 참조해 나가는 메커니즘으로 되어 있어서 원래의 문자열 끝에 NULL이 없으면 최악의 경우 메모리 영역 끝을 넘어서까지 메모리를 참조하려 시도할 것이다. 이 때에는 좀 더 개선된 함수 strlen s나 wcslen s를 사용하여 참조할 최대 메모리를 제한할 수 있다. 이 외에 기존의 문자열 함수 뒤에 _s가 붙은 이름의 함수를 사용하면 버퍼 오버플로 문제를 개선할 수 있다.
버퍼 오버플로 보호.
버퍼 오버플로 보호는 가장 일반적인 버퍼 오버플로를 검출하기 위해 사용되며 함수가 귀환할 때 스택이 변경되었는지 검사한다. 변경되었다면 프로그램이 세그멘테이션 오류를 발생 시키며 중단된다. 그러한 시스템의 세가지 예가 gcc 패치인 립세이프 LibSafe, 스택 가드, 프로폴리스이다. 마이크로소프트의 데이터 실행 방지 모드는 명백히 SEH 예외 처리기를 가리키는 포인터를 덮어쓰기로부터 보호한다. 더 강력한 스택 보호는 스택을 두가지로 나눔으로써 가능하다: 하나는 데이터용이고 다른 하나를 함수 귀환에 사용하는 것이다. 이러한 구분은 포스 프로그래밍 언어에 비록 안전을 위한 기능은 아니지만 채택되어 있다. 어쨌든, 이는 버퍼 오버플로에 관한 완벽한 해결책은 아닌 것이, 귀환 주소가 아닌 민감한 데이터는 여전히 덮어씌어질 가능성이 있다.
포인터 보호.
버퍼 오버플로는 포인터를 조작함으로써 (저장되어 있는 주소를 포함하여) 작동한다. 포인트 가드는 컴파일러 확장으로 제안되었는데, 공격자가 신뢰성 있게 포인터와 주소를 조작하는 것을 방지한다. 접근 방법은 컴파일러가 추가 코드를 삽입하여 자동적으로 포인터를 사용 전후에 XOR-인코딩하도록 하는 것이다. 공격자가 (이론적으로는) 어떤 값이 포인터를 인코드/디코드할 때 사용할지 알지 못하기 때문에 어떤 값으로 덮어 써야 원하는 효과를 거둘 수 있을지 알기 힘들게 된다. 포인트가드가 배포된 적은 없지만 마이크로소프트에서 비슷한 접근 방법을 구현하여 윈도우 XP SP2와 윈도 서버 2003 SP1 이후에 적용하였다. 포인터 보호를 자동 기능으로 구현하지는 않았고, API를 추가하여 프로그래머의 재량에 따라 호출하여 사용하도록 하였다. XOR이 선형이므로, 공격자가 암호화된 포인터를 조작하여 어떤 주소의 하위 바이트만 덮어쓸 수 있다. 이렇게 하면 공격자가 여러번 시도하거나 복수의 위치 (예를 들어 NOP 슬라이드 안의 어떤 위치)에 대해 시도함으로써 공격이 성공할 수 있다. 마이크로소프트는 임의로 암호화 방안을 변경함으로써 이 약점을 보완, 부분적으로만 덮어쓰기가 가능하게 하였다.
실행 공간 보호.
실행 공간 보호는 버퍼 오버플로를 방지하기 위한 접근 방법으로 스택이나 힙 상의 코드가 실행되는 것을 막는다. 공격자는 버퍼 오버플로를 이용하여 임의의 코드를 프로그램의 메모리에 삽입할 수 있지만, 실행 영역 보호가 있다면, 그 코드를 실행하고자 하는 어떠한 시도도 예외를 발생시킬 것이다. 어떤 CPU는 NX (No eXecute) 또는 XD (eXecute Disabled)비트 라는 기능을 지원하는데 소프트웨어와 연계하여 데이터의 페이지 (즉 스택이나 힙을 담고 있는)를 읽고 쓰기는 가능하나 실행 불가로 표시할 수 있다. 어떤 유닉스 운영 체제는 (예를 들어 오픈 BSD, OS X) 은 실행가능한 공간 보호와 함께 출시되었다. (예: W^X) 옵션 패키지에는 다음이 포함될 수 있다:
새로운 마이크로소프트 변종도 실행 공간 보호를 지원하며 데이터 실행 방지라고 부른다. 상용 추가 기능은 다음과 같다:
주소 공간 배치 난수화.
주소 공간 배치 난수화 (Address space layout randomization, ASLR)는 컴퓨터 보안 기능으로 중요 데이터 영역, 예를 들어 실행 코드의 기반 주소, 라이브러리, 힙, 스택 주소 등을 임의로 프로세서의 주소 공간에 배치하는 것이다. 함수와 변수를 찾을 수 있는 가상 메모리 주소의 난수화로 버퍼 오버플로 이용이 더 어려워지지만 불가능한 것은 아니다. 공격자가 이용 시도를 각각의 시스템에 따라 다르게 하도록 강요하므로 인터넷 웜 방어에 더 유용하다. 비슷하지만 덜 효과적인 방법은 프로세스와 라이브러리를 가상 주소 공간에 리베이스하는 것이다.
심층 패킷 조사.
심층 패킷 조사로 네트워크 경계에서 아주 간단한 버퍼 오버플로 원격 시도를 공격 고유 신호과 경험적 방법으로 검출할 수 있다. 알려진 공격 고유 신호 또는 긴 NOP 명령이 검출되면 패킷을 막을 수 있으며, 공격 패킷 내용으 조금 달라도 사용할 수 있다. 패킷 스캐닝은 효과적이지 못한데, 그 까닭은 알려진 공격만 막을 수 있고 NOP 슬라이드는 다양한 방법으로 암호화 할 수 있기 때문이다. 공격자들은 경험론적 패킷 스캐너와 침입 감지 시스템의 탐지를 회피하기 위하여 영숫자, 탈바꿈, 자기 수정 셸코드를 사용하기 시작하였다.
이용의 역사.
버퍼 오버플로는 1972년 컴퓨터 보안 기술 기획 연구에서 기법을 소개하였을 때부터 이해되었던 개념이다. "이 기능을 수행하는 코드는 출처와 목적지 주소를 적절히 검사하지 않으므로, 사용자가 모니터의 일부를 덮어쓰도록 허용한다. 이는 코드를 모니터에 삽입하여 제어권을 획득하는 데 사용될 수 있다." 오늘날 모니터는 커널이라고 불릴 것이다.
1980년대 개인용 컴퓨터의 확산으로 이 기법에 대해 아는 사람의 수가 증가하였다. 코모도어 PET 상에서 예를 들어 흔히 두 번째 테이프 버퍼를 사용하여 어셈블리 언어 루틴을 저장하였다. 어떤 프로그래머들은 최대 32KB인 컴퓨터의 주기억장소 공간에서 몇바이트를 절약하기 위해 베이직 언어의 번거로운 POKE 명령 사용 대신 프린트 버퍼의 시작점을 테이프 버퍼로 변경하여 6502 어셈블리 언어 코드(이상해 보이는 글자로 이루어진)를 직접 원하는 곳으로 출력하였다. 실제로는 프린터 버퍼가 테이프 버퍼 보다 길었기 때문에, 베이직 문자열이 쉽게 1024 바이트를 넘어갔고, PET상의 마이크로소프트 베이직 인터프리터와 간섭하였다. 초기 맥, 코모도어, 아타리등 초기 개인용 컴퓨터 부트 이미지 로더와 95, 98까지의 마이크로소프트 윈도우 운영 체제는 버퍼 보호에 부적절하였고 많은 프로그래머들이 버퍼 오버플로에 대해 알게 되었다.
최초로 문서에 남은 적대적 버퍼 오버플로 이용은 1988년이었다. 모리스 웜이 인터넷에서 자신을 퍼뜨리기 위해 사용했던 몇가지 공격 가운데 하나였다. 그 프로그램이 이용했던 것은 핑거라는 유닉스 서비스였다. 1995년 토마스 로파틱은 독립적으로 버퍼 오버플로를 재발견하였고 자신의 발견을 버그트랙(Bugtraq) 보안 메일링 리스트에 공개하였다. 1년 후 1996년 엘리아스 레비 (알레프 원으로 알려진)는 프랙 지에 "재미와 소득을 위해 스택 때리기"라는 제목의 기사에서 스택 기반 버퍼 오버플로 취약점을 공략하는 단계별 소개를 공개하였다.
그 이후에 최소한 두가지의 대규모 인터넷 웜이 버퍼 오버플로를 이용하여 많은 수의 시스템에 영향을 주었다. 2001년 코드 레드 웜은 마이크로소프트의 인터넷 정보 서비스 5.0의 버퍼 오버플로를 이용했고, 2003년의 SQL 슬래머 웜은 마이크로소프트 SQL 서버 2000을 실행시키는 컴퓨터에 영향을 주었다.
2003년 허가된 엑스박스 게임 안에 존재했던 버퍼 오버플로가 이용되어 자작 게임을 포함한 허가 받지 않은 소프트웨어도 콘솔에서 모드칩이라고 알려진 하드웨어 변경 없이 이용할 수 있게 되었다. PS2 독립 공격도 버퍼 오버플로를 사용하여 같은 작용을 플레이스테이션 2에 일으켰다. 황홍 공격은 닌텐도 위에서 같은 효과를 거두었는데, 젤다의 전설 황혼의 공주의 버퍼 오버플로를 이용하였다.
예제 소스 코드.
아래의 C 소스 코드는 일반적인 프로그래밍 실수를 보여준다. 일단 컴파일 되면, 너무 긴 커맨드라인 인자 문자열을 가지고 실행하면 프로그램은 버퍼 오버플로 오류를 발생할 것이다. 왜냐하면 이 인자의 길이를 체크하지 않고 버퍼를 채우는 데 사용하기 때문이다.
/* overflow.c - 버퍼 오버플로를 설명한다 */
char buffer[10];
fprintf(stderr, "사용법: %s 문자열\n", argv[0]);
strcpy(buffer, argv[1]);
9개 이하의 문자 스트링은 버퍼 오버플로를 일으키지 않는다. 10 이상의 문자들은 오버플로를 일으킨다. 이것은 언제나 부정확하지만 프로그램 오류나 세그먼트 폴트를 일으키지는 않는다. strncpy는 버퍼에 쓰일 문자의 개수를 제한할 수 있다.
/* better.c - 문제 해결 방법 하나를 설명한다 */
strncpy(buffer, argv[1], sizeof(buffer));
buffer[sizeof(buffer) - 1] = '\0'; /* 문자열의 끝을 분명히 맺는다 */
소울 트레인(Soul Train)은 하이텔에 있던 흑인 음악 동호회 중 하나이다. 과거 BLEX가 활발한 활동을 펼치던 시점에, DJ Uzi 및 그와 뜻이 맞는 이들이 BLEX를 탈퇴하고 Back's Row라는 동호회를 만든 것이 그 시초가 된다. 한국말로 하는 랩을 중시했던 BLEX와는 달리 이들은 영어로 하는 랩에도 나름대로 가치를 부여했으며, 클럽 활동을 통해서 나름대로 많은 매니아를 보유했다. 온라인 및 공연을 중심으로 활동했던 이들은 앨범 같은 작업물은 남기지 못했으나, DJ Uzi가 Future Flow에 들어가게 되면서 Stardom의 주요 멤버들이 Future Flow에 들어가 앨범을 준비하다 무산되기도 하였다. 이후 멤버들의 군입대와 PC 통신의 쇠퇴로 현재 Soul Train은 전설처럼 이름만 남기고 사라졌다. "Y2Soultrain" 등의 단체곡이 존재한다.
한편, 당시 SNP였던 P-Type이 "Y2Soultrain"에 피쳐링으로 참여했는데, P-Type은 소울 트레인 크루의 멤버가 아니다.
조PD를 향한 디스.
DJ Uzi는 그의 곡 Uzi's Mind를 통해 조PD를 디스한 적이 있다. 이 곡은 1999년에 온라인을 통해서 발표된 곡이다. 당시 1집으로 나름의 파장을 불러일으켰던 조PD와 Drunken Tiger, 그리고 "야생 원숭이" 등을 욕한 곡이고, 김진표도 가사에서 "연구는 열심히 하지만 라이브가 살짝 아쉬운 JP"라는 식으로 훑고 넘어간다. 당시 이 곡은 언론에도 보도가 되었고, 아이러니하게도 조PD가 DJ Uzi와 만나서 Stardom에 Uzi를 영입하게 되는 계기가 되었다.
DJ Uzi는 Masterplan 무대에 섰을 때, Masterplan 아티스트와 클럽 관계자들을 싸잡아 욕하는 사건이 있어 큰 파문이 된 적이 있다. 이는 "우지 파문"이라고 해서 큰 사건으로 기록되어있으며, 소설 "진실이 말소된 페이지"에 간략하게 서술되어 있다. 또한, 2001년에 공개된 두 곡 Shubidubidubdub과 This Is How We Run은 둘 다 Masterplan을 디스하는 곡이다.
이는 당시 Soul Train 아티스트들이 공연 때 외국곡을 불렀다가 한국 힙합을 고집하는 Masterplan 공연진들과 갈등을 빚어 Soul Train이 공연을 할 수 없게 되자 만들어진 것이라고 하고 있다. 현재는 모든 감정이 풀어진 상태라고 한다.
4WD &amp; Verbal Jint와의 디스.
SNP에 속해있던 4WD와 Verbal Jint는 조PD와 DJ Uzi를 향한 디스곡 노자를 발표한 적이 있다.
"노자"는 2000년에 발표되었으며, D.O.의 "흑열가", DJ Uzi의 "Uzi's Mind" 등의 가사를 패러디하면서 노골적으로 조PD와 DJ Uzi를 디스하였다. 이 곡에는 Lucy가 보컬을 담당하였으며, 그 당시 생소했던 다음절 라임을 선보여 많은 호응을 얻었다. Verbal Jint가 속해있던 3인조 그룹 "Dien Michel"의 "Movin' It"이라는 곡에도 "get out Uzi!"라는 가사가 들어있다.
한편 이에 대한 반격으로 DJ Uzi 역시 不以兵强天下라는 곡을 발표하였다. 곡의 제목은 "졸개로써 천하를 강하게 만들 수는 없다"라는 뜻이다. 이 곡은 실제로는 Stardom으로써 반격한 곡이나, 참여진인 DJ Uzi, 현상, Deze가 모두 Soul Train 소속이어서 이를 지켜보는 사람들은 "SNP와 Soul Train의 디스전"으로 이 상황을 받아들였다.
formula_2 6.52485 kg m/s
이것은 일반 상대성이론을 적용하지 않았을 때, 플랑크 질량의 물체가 빛의 속도로 움직일 때의 운동량이다.
흥덕왕(興德王, 777년 ~ 836년 12월, 재위 : 826년 10월 ~ 836년 12월)은 신라의 제42대 왕이다. 성은 김(金)이고, 초명은 수종(秀宗), 수승(秀升)이며, 즉위 후에 경휘(景徽)로 개명하였다.
아버지는 원성왕의 장남인 혜충태자(惠忠太子)이며, 어머니는 성목태후 김씨(聖穆太后 金氏)이다. 소성왕과 헌덕왕의 친동생이다. 왕비는 소성왕의 딸 장화부인(章和夫人, 정목왕후로 추존)이다. 헌덕왕의 뒤를 이어 왕위에 올랐으며 청해진(淸海鎭)과 당성진(唐城鎭)을 설치하여 해적의 침탈을 막고 안으로는 백성들의 사치를 법으로 규제하는 등 개혁정치를 통해 흥덕왕은 신라 사회의 총체적인 난국을 극복하려고 했다.
하동 쌍계사 진감선사탑비에서의 진감선사에게 교서를 보낸 기록이 확인된다.
“도의 선사가 지난번에 돌아오고 상인이 이어서 오니 〈우리나라에〉 두 보살이 〈있게〉 되었다.
옛날에 〈두 명의〉 검은 옷을 입은 호걸에 대해 들었는데, 이제 〈두 명의〉 베옷을 걸친 영웅을 보게 되었다.
하늘까지 미치는 자애와 위엄에 온 나라가 기뻐하고 의지한다.
과인은 앞으로 마땅히 동쪽 계림 땅을 행복하고 상서로운 집으로 만들 것이다.”
809년 동복 형 헌덕왕과 함께 정변을 일으켜 조카인 애장왕을 죽이고 헌덕왕을 지지하여 이찬이 되었고, 819년 2월 또 다른 동복형제인 상대등 김숭빈(金崇斌)이 사망하자 상대등에 임명되었다. 헌덕왕에게는 김장렴(金張廉)과 김헌장(金憲章) 등의 왕자들이 존재하였고 이들을 당나라에 입조시킨 기록이 남아있으나, 헌덕왕은 822년 봄 정월, 후사가 없음을 이유로 동생 수종을 태자로 책봉하였다. 826년 10월, 헌덕왕이 죽자 즉위하였다.
827년 봄 정월, 왕이 몸소 신궁에 제사를 지냈다. 당나라 문종(文宗)이 헌덕왕의 붕어(崩御) 소식을 듣고, 조회를 폐지하고 지절사(持節使)로 조문하도록 하였다. 왕을 개부의동삼사 검교태위 사지절대도독 계림주제군사 겸 지절충영해군사 신라왕으로 책봉하였다.
828년 4월 장보고(張保皐)를 청해진 대사(淸海鎭大使)로 삼았다. 장보고는 당나라 서주(徐州)에 들어가 군중소장(軍中小將)이 되었다. 후에 귀국하여 흥덕왕을 알현하고, 군사 1만 명으로 청해진(淸海鎭)을 지키게 되었다. 겨울 12월, 당나라에 들어갔다가 돌아온 사신 대렴(大廉)이 차나무 종자를 가지고 왔기에 왕이 지리산(地理山)에 심게 하였다. 차는 선덕여왕(善德女王) 때부터 있었으나 이때에 와서 크게 유행하였다.
832년 봄과 여름에 가물어 땅이 붉게 탔다. 왕은 정전에 나가지 않고 음식을 줄였으며, 중앙과 지방의 죄수들을 사면하였다. 가을 7월에야 비가 내렸다. 8월, 흉년이 들어 도적이 곳곳에서 일어났다. 10월, 임금이 사람을 파견하여 백성들을 위로하였다.
833년 봄, 나라 안에 큰 기근이 들었다. 여름 4월, 시조묘에 참배하였다. 이 해에 전염병으로 죽은 백성이 많았다.
834년 9월, 왕이 서형산(西兄山) 아래에 행차하여 크게 군대를 사열하고, 무평문(武平門)에서 활쏘기를 관람하였다. 10월, 남쪽 지방의 주와 군을 두루 돌아보았다. 노인과 홀아비, 과부, 고아, 자식 없는 노인들을 찾아 위문하고, 곡식과 베를 형편에 따라 차등을 두어 내려주었다.
835년 봄 2월, 아찬 김균정(金均貞)을 상대등으로 삼았다. 시중 우징이, 그의 아버지 균정이 재상으로 조정에 들어갔기 때문에 사직할 것을 요청하였으므로, 대아찬 김명(金明)을 시중으로 삼았다. 김유신(金庾信)을 추봉(追封)하여 흥무왕(興武王)이라 하였다.
836년 12월, 왕이 붕어(崩御)하자 시호를 흥덕(興德)이라 하였다. 조정에서는 왕의 유언에 따라 장화왕비(章和王妃)의 능에 합장하였다. 왕이 후사를 남기지 못하고 죽자 사촌동생인 균정(均貞)과 균정의 조카 제륭(悌隆)이 왕위를 두고 다투었다.
사치금지령.
흥덕왕과 앵무새.
흥덕왕이 즉위하고 두 달이 지난 826년 12월, 왕비인 장화부인(章和夫人)이 죽자 왕이 몹시 슬퍼하였다. 군신들이 새로운 왕비를 책봉할 것을 진언하였지만 왕은 "쌍쌍인 새도 자기의 짝을 잃으면 슬퍼하는데, 하물며 좋은 배필을 잃고 나서 어찌하여 무정하게도 다시 부인을 얻겠는가?" 하며 후비를 맞아들이지 않았다. 또한 시녀들도 가까이 하지 않았으며 왕의 좌우에 내시 두 사람만을 심부름꾼으로 머물게 하였다. 장화부인을 정목왕후(定穆王后)로 추존하였다.
《삼국유사》에도 흥덕왕이 왕비를 잃은 슬픔을 한 쌍의 새에 비유한 설화가 기록되어 있다. 흥덕왕이 왕위에 오른 지 얼마 지나지 않아 당나라에 사신 갔던 사람이 앵무새 한 쌍을 가지고 돌아왔다. 그런데 오래지 않아 암놈이 죽었고, 홀로 된 숫놈은 슬프게 울기를 그치지 않았다. 왕이 사람을 시켜 앵무새 앞에 거울을 걸어놓게 하였다. 그러자 앵무새는 거울 속에 비친 상이 자기 짝인 줄로만 알고 그 거울을 쪼아대었다. 그러다 곧 그림자라는 것을 알고는 슬피 울다 죽었다. 왕이 노래를 지었다고 하는데 자세한 것은 알 수 없다.
흥덕왕릉비편.
이 밖에도 "太祖星漢…卄四代孫(태조 성한왕의 24대손)" 과 같은 내용을 통해 《삼국사기》와 《삼국유사》 등의 역사서에는 기록되어 있지 않지만 문무왕릉비(文武王陵碑), 태종무열왕의 차남인 김인문(金仁問)의 묘지명, 진철대사탑비문(眞澈大師塔碑文), 원주 흥법사지 진공대사탑 및 석관(原州 興法寺址 眞空大師塔 및 石棺)과 같은 금석문에만 등장하는 신라의 시조로 여겨지는 태조(太祖) 성한(星漢)이라는 이름이 흥덕왕릉비에도 등장한다.
DJ 우지(DJ Uzi, , 1978년 11월 1일 ~ )는 2003년까지 활동했던 대한민국의 래퍼 겸 프로듀서다. Uzi라는 이름은 이스라엘에서 개발된 우지 기관단총을 뜻하며, Uzi the Hikaru라는 이름으로 늘여쓰기도 한다.
1996년 겨울부터 음악에 대한 관심이 생긴 그는, 과거 BLEX에서 활동하다가 빠져나와 "Back's Row"라는 다른 동호회를 만들고 그 동호회의 시삽을 맡았으며, 후에 이 동호회는 Soul Train이 되었다. 음악 활동 시작 후 그는 여러 데모테입을 돌리면서 여러 기획사를 방문했으나 허사였고, 한 기획사에서 댄스그룹의 멤버로 데뷔를 할 예정이었으나 자신의 뜻과 맞지 않음을 깨닫고 데뷔 전에 기획사에서 나온다. 그러던 중 1999년 조PD의 디스곡인 Uzi's Mind를 만들고 이것이 큰 반향을 불러일으키면서 그의 이름이 알려졌다. 아이러니하게도, 얼마 후 그는 조PD의 소속사인 스타덤에 들어가게 되었다. 그리고 이 인연으로 조PD의 My Style 등의 곡에 피쳐링을 했다.
물론 Soul Train으로서 만든 결과물들도 mp3의 형태로 전파되어 여러 곡을 남겼다. 그는 스타덤이 변해서 생긴 Future Flow에서 현상과 함께 듀오로 앨범을 낼 준비를 하고 있었으나, Future Flow의 와해로 인해 무산되어 많은 팬들을 아쉽게 했다. 이후 2003년 음악을 접고 분당 Gusttimo 아이스크림 가게를 운영하다가 2006년 Artclay 강사 과정 수료, 2007년 Funways'l 보조 매니저를 거쳐, 일본으로 유학을 갔다.
디스 곡.
DJ Uzi는 1999년 온라인을 통해 Uzi's Mind라는 곡을 발표, 조PD, 아이삭, 드렁큰 타이거를 디스하였다.
가사에 나오는 "야생 원숭이"에 관해서는 여러 가지 설이 있었으나, 2009년 방송된 힙플라디오 "아이삭의 더 매콤한 라디오"에서 아이삭은 '야생 원숭이'가 아이삭 본인을 가리키는 말임을 밝혔다. 이에 관해서는 둘이 직접 마주하고 화해를 한 상태다. 또한, 김진표 역시 "연구는 열심히 하지만 라이브가 살짝 아쉬운 JP"라는 가사로 짚고 넘어간다. 당시 이 곡은 언론에 "사이버 테러"라는 이름으로 보도가 되었고, 오히려 이후 조PD가 DJ Uzi를 만나 영입하게 된 계기가 되었다. 영입된 이후에도 힙합플레이야 인터뷰에서 Uzi는 조PD의 1집의 전곡이 싫다고 말한 바 있다.
4WD와 Verbal Jint는 조PD와 DJ Uzi를 향한 디스곡 노자를 발표하였다.
"노자"는 2000년에 발표되었으며, 이현도의 "흑열가", DJ Uzi의 "Uzi's Mind" 등의 가사를 패러디하면서 노골적으로 조PD와 DJ Uzi를 디스하였다. 이 곡에는 Lucy가 보컬을 담당하였으며, 그 당시 생소했던 다음절 라임을 선보여 많은 호응을 얻었다. Verbal Jint가 속해있던 3인조 그룹 "Dien Michel"의 "Movin' It"이라는 곡에도 "get out Uzi!"라는 가사가 들어있다.
한편 이에 대한 반격으로 DJ Uzi 역시 不以兵强天下라는 곡을 발표하였다. "졸개로는 천하를 강하게 만들 수 없다"는 뜻의 제목을 가진 이 곡은, DJ Uzi 외에 Deze, 현상 등이 참여하였다. 셋이 모두 Soul Train 출신인 관계로, 이 디스전은 SNP와 Soul Train의 싸움으로 비춰지기도 하였다. Verbal Jint는 Rhythmer와의 인터뷰에서 여전히 DJ Uzi에 대해서 완전히 좋게 생각하지는 않는다고 밝혔다.
알패오의 아들 야고보(, , , ? ※ 62년)는 예수 그리스도의 부르심을 받은 열두 제자 즉 기독교의 사도 가운데 한 사람이다. 야고보라는 이름은 ‘발꿈치를 잡다’라는 뜻이다. 또 다른 사도인 제베대오의 아들 야고보와 동명이인이라 혼동을 피하기 위해 흔히 ‘소(小)야고보’라고 부른다. 야고보는 기독교의 성인 중 한명이다.
기독교에서는 이 야고보를 야고보서의 저자로 알려진 예수의 동생 야고보와 같은 인물인가에 대한 논란이 있다. 로마 가톨릭교회에서는 동일 인물로 여기며 필립보와 똑같은 날짜인 5월 3일이 축일이며, 동방 정교회에서는 다른 인물로 보고 축일은 10월 23일이며, 개신교에서도 대체로 별개의 인물로 보고 있다.
/ 때문에 그는 ‘예수의 형제또는 ‘예수의 동생’으로 언급된다. /-잘못된 정보, 언급하는 야고보는 실제 혈육인 동생이자 초대교회 장로 야고보를 뜻함..)
신약성서에서는 그에 관한 언급이 별로 없다. 전승에 의하면 그는 어려서부터 신앙심이 두터워 엄격하고 경건한 수양 생활을 했기 때문에 고기와 술을 일절 입에 대지 않았으며, 외모를 가꾸지 않았고, 긴 겉옷과 망토만 몸에 걸치고 맨발로 돌아다녔다고 한다. 오랜 기도생활로 그의 무릎은 낙타의 발바닥처럼 되었다. 또한 유대인으로서의 율법도 하루도 거르지 않고 잘 준수하였다.
야고보는 어린 시절부터 예수와 매우 가깝게 생활을 함께하였고 70인 제자 중에 한 제자로 부름을 받았다. 성령 강림 이후, 야고보는 예루살렘 교회를 위탁받아 예루살렘의 첫 번째 주교로 선출되어 교회를 다스리며 포교 활동을 열심히 하였다(사도 12,17; 21,17-18). 야고보는 처음으로 미사의 여러 예식을 제정하여 사용하였고 훗날 그의 예식서는 바실리오와 요한 크리소스톰에 의해 간략하게 축소된다.
또한 그는 그리스도인들에게 수많은 서한을 작성하기도 하였는데, 그 중의 하나가 신약성서에서 야고보 서간이라는 이름으로 전해지고 있다. 한편 베드로가 자신이 기적적으로 감옥을 빠져나온 사실을 알려주라고 이른 사람이 바로 이 야고보이며(사도 12,17), 바울로가 기독교로 개종한 다음 처음으로 접촉한 사람도 역시 야고보였다(사도 15,13-29).
전승에 따르면, 야고보는 그를 시기하고 경계하던 바리사이 파에 의해 순교했다고 전해진다. 바리사이 파는 부활절 날 야고보를 강제로 끌어내어 예루살렘 성전에 끌고 가 각종 감언이설을 늘어놓으며 배교할 것을 강요하였다. 그러나 야고보가 끝까지 배교를 거부하며 버티자 화가 난 바리사이 파는 즉시 그를 성전 꼭대기에서 떠밀려 떨어뜨린 다음 일제히 돌로 쳤기 때문에 야고보는 그 자리에서 순교했다고 한다.
학명(學名, scientific name)은 생물학에서 생물의 종에 붙인 분류학적인 이름이다. 또한 학명의 표기는 종과 속의 이름으로 구성된 이명법(二名法)을 사용한다.
고안.
생물에 학명을 붙여 표기하는 방법을 고안한 사람은 스웨덴의 식물학자 칼 폰 린네이다. 린네는 스스로 많은 식물에 학명을 부여하였다.
학명은 최초 고안자인 린네의 제안에 따라 라틴어 또는 라틴어화한 낱말로 구성되며, 속의 이름과 종의 이름을 나란히 이어 쓴다. 학명 뒤에 이름을 붙인 사람과 이름 붙인 연도를 밝히는 경우도 있다. 예를 들어 오이의 학명은 "Cucumis sativus"이며 Cucumis는 속명(generic name), sativus는 종소명(種小名; specific name 또는 species epithet)이다.
이명법.
이명법(二名法, binomial nomenclature)은 린네가 창안한 학명 명명법으로 생물의 속명과 종소명을 나란히 쓰고, 그 다음에 그 학명을 처음 지은 사람의 이름(성)을 붙이는 방법이다.(명명자의 이름은 생략하기도 하며, 머리글자 하나만 쓰기도 한다).
인쇄물의 경우, 속명과 종명은 이탤릭체로 쓰며 명명자의 이름은 정체로 쓴다. 예를 들어, 벼의 학명은 " Linne인데, 이때 ‘Oryza’는 속명으로 대문자로 시작되는 라틴어 명사이며, ‘sativa’는 종명이고 소문자로 시작되는 라틴어 형용사이다. 그리고 ‘Linne’는 벼에 처음으로 학명을 붙인 명명자의 이름이다.
그러나 학명을 짓는 데는 대단히 까다로운 제약들이 있어서, 요즈음에는 식물과 동물 및 미생물의 명명 규약이 각각 별도로 만들어져 있고 새로운 분류군이 나타날 때는 이 규약에 따라 합법적으로 명명·발표하여야 비로소 인정받게 되어 있다. 이 규약에 의하면, 식물의 이명법은 린네가 1753년에 출판한 《식물의 종》을 출발점으로 하고 있다. 학명에 이명법을 처음으로 도입한 사람은 독일의 스토이델(1821)이지만, 린네는 《식물의 종》의 제10판(1753)에서 이미 학명을 사용하였다. 예를 들면, 3종의 칸나 학명이 다음과 같이 기재되어 있다. (1) Canna foliis ovatis utrinque (잎을) (달걀 모양의) (양쪽 모두) acuminatis nervosis (뾰족하다) (맥이 많다) (2) Canna foliis lanceolatis petiolaris nervosis (바늘 모양의) (자루가 있는) (3) Canna foliis lanceolatis petiolaris enervosis (맥이 없다) 이 때, Canna는 '칸나'라고 하는 속명이며, (1)은 달걀 모양으로 양끝이 뾰족하고 맥을 잘 알아볼 수 있는 칸나, (2)는 바늘 모양으로 잎자루가 있고 맥을 잘 알아볼 수 있는 칸나, (3)은 피침형으로 잎자루가 있고 맥이 보이지 않는 칸나라는 뜻이다. 한편, 린네는 각 학명의 끝 오른쪽 윗부분에 (1)에는 indica(인도산의), (2)에는 angustifolia(가는 잎의), (3)에는 glauca(청백색 자루가 있는)라는 약명을 붙였는데, 이 약명을 종소명으로 붙이는 것이 1868년 파리의 국제 식물학 회의에서 인정되어, Canna라는 속명과 이 종소명으로 학명을 삼게 되었다.
삼명법.
종에 따라서 아종이나 변종이 있을 때에는 그 종의 이름 다음에 그 이름을 표기하는데, 이런 형태를 삼명법이라고 한다. 예를 들어 호랑이(')라는 종이 있다고 할 때, 아종인 시베리아 호랑이는 호랑이와 구분하기 위해 "altaica"를 붙여 "Panthera tigris altaica"로 쓰는 것과 같은 것이다.
학명의 장점.
학명은 두 단어에서 세 단어(아종을 표기할 경우)로 모든 생물 종을 표기할 수 있어 효율적이다. 학명은 전 세계 어디서나 동일하게 쓰이며, 하나의 학명은 오직 하나의 생물 종만을 가리키기 때문에 생물학의 표준으로 사용된다. 예를 들어 명태는 나라마다 다른 이름으로 부르지만, 학명은 "Theragra chalcogramma"로 똑같다. 또한 대부분은 사어인 라틴어로 기록되기 때문에 시간이 지나도 의미가 변화하지 않는 장점이 있다.
세계의 여러 언어에서 불리는 생물의 통상명 중에는 실제 분류와 다르게 불리는 이름들이 많지만, 학명을 사용하면 보다 정확한 생물 분류가 가능하다. 예를 들어 한국어에서는 소목 보다 말목에 더 가깝지만 '소'에 더 가깝게 불리는 코뿔소, 진무맹장목에 속하지만 쥐목에 좀 더 가깝게 불리는 땃쥐, 곤충에 속하지 않지만 '벌레'라고 불리는 짚신벌레가 대표적이며 영어에서는 어류(fish)에 속하지 않지만 '물고기'로 통칭되는 불가사리(starfish)와, 오소리(badger)라고 불리지만 실제로 오소리속에 속하지 않는 벌꿀오소리(honey badger), 일본어에서는 진무맹장목에 속하지만 쥐목()에 더 가깝게 불리는 고슴도치(ハリネズミ(針鼠))를 예로 들 수 있다. 이와 같이 해당 언어에서의 통상명이 생물 분류 단계와 전혀 다른 이름을 사용하는 경우, 혼동하는 것을 방지하기 위해 학명을 사용할 수 있다.
학명의 등록.