짤막한 이야기
-
[2021/01/21][짤막한 이야기 - 키 합의 & 키 전송]짤막한 이야기 2021. 2. 3. 15:17
[2021/01/21][짤막한 이야기 - 키 합의 & 키 전송] 당신이 타인과 “안전한 통신 채널”을 형성하고자 한다면, 우선 “키”를 타인과 교환하여야 한다(이를 “키 수립” 혹은 “키 교환”이라고 한다.). 어떻게? 당신이 직접 키를 그들에게 전달할 수도 있을 것이다(오프라인으로). 그러나 키를 직접 전달할 수 있다면 키 대신 메시지를 전달할 수도 있고 그것이 더 효율적이며, 그럴 경우 키를 교환할 필요가 없기 때문에 항상 유용하다고 할 수는 없다. (물론, 오프라인에서의 키 교환은 당신이 타인과의 “신뢰점(Root of Trust, RoT)”을 형성하기 위한 방법으로는 유용할 수 있지만, 그것은 또 다른 이야기이다.) 이번 예시에서는 “앨리스(Alice)”와 “밥(Bob)”이 비밀키를 공유하려고 한..
-
[2021/01/20][짤막한 이야기 - 평문 & 암호문]짤막한 이야기 2021. 2. 3. 15:17
[2021/01/20][짤막한 이야기 - 평문 & 암호문] 암호학에서 평문이란 암호화 알고리즘이 적용되기 전의 문장을 의미한다. 암호화 알고리즘이 평문에 적용되는 경우, 이를 암호문이라고 한다. 암호문은 평문의 기밀성을 보장하기 위하여 사용되며, 복호화 알고리즘이 적용되기 전까지는 평문의 내용을 파악할 수 없다. 위의 예시에서 암호문 “Lfmmp”를 생성하기 위한 암호화 알고리즘은 단순 “덧셈(+)” 연산이다. 이 예시의 키는 “1”이며, 평문 “Hello”의 각 문자에 1을 더하여 암호문을 생성한 것이다. 몇 개의 숫자를 키로써 사용할 수 있을까? 사용 가능한 키의 총 개수는 총 알파벳의 개수인 26개이다. 즉, 평문 “Z”를 키 ”1”로 암호화하면 암호문은 “A”가 되는 것이다. 이 경우, 키 자체에..
-
[2021/01/19][짤막한 이야기 - 암호학]짤막한 이야기 2021. 2. 3. 15:14
[2021/01/19][짤막한 이야기 - 암호학] 암호학은 “안전한 통신”에 관련된 학문이다. 일반적으로 “평문”에 암호학적 기술을 적용하여 “암호문”으로 변환하고, 이를 타 개체에 전송하는 방법론이다. 우리가 흔히 아는 “패스워드(Password)”는 “암호”라고 칭하기에는 어렵고, 이는 “암호학”을 이용한 “인증” 방법론 중 하나라고 보는 것이 옳다. 암호학에서 제공하고자 하는 속성은 주로 “기밀성”, “무결성”, 그리고 “가용성”이 있다. 기밀성은 보호 대상 개체의 비인가된 “노출”로부터 보호한다는 의미이다. 무결성은 보호 대상 개체의 비인가된 “변조”로부터 보호한다는 의미이다. 가용성은 보호 대상 개체를 “인증된 사용자”가 원할때에 항시 접근 가능하다는 의미이다. 암호학에서는 많은 요소가 중요하게..
-
[2021/01/18][짤막한 이야기 - 섹션 권한]짤막한 이야기 2021. 2. 3. 15:12
[2021/01/18][짤막한 이야기 - 섹션 권한] Windows 프로그램은 헤더와 본문으로 구성된다. 정확히는 “PE 헤더”, “몇몇개의 섹션 헤더”, 그리고 “몇몇개의 섹션 본문”이 프로그램의 구성 요소이다. 각 섹션 헤더에는 이름, 주소, 크기, 권한 등의 섹션 본문에 대한 정보가 저장되어 있다. “읽기/쓰기/실행” 권한은 잘못 설정되면 프로그램이 쉽게 공격받기 때문에 섹션에서 매우 중요한 요소이다. 기본적으로 프로그램에는 쓰기 권한과 실행 권한을 동시에 가지는 섹션이 없도록 설정하는 것이 중요하다. 위의 사항을 만족하면 악성코드가 섹션에 삽입되더라도 이를 실행할 수 없고, 악성코드가 실행 가능하더라도 삽입이 불가능하기 때문에 다소 안전할 수 있다. 이러한 보안 속성을 DEP(Data Execut..
-
[2021/01/15][짤막한 이야기 - 코드 패킹]짤막한 이야기 2021. 2. 3. 15:11
[2021/01/15][짤막한 이야기 - 코드 패킹] 코드 패킹은 소프트웨어 보호 기술의 한 종류이다. 실행 가능한 코드, 혹은 쓰기 가능한 데이터가 특정 알고리즘에 의하여 패킹된다. 패킹에 이용되는 알고리즘은 암호화 알고리즘일 수도 있지만, “+”와 같은 단순 산술 연산이 이용될 수도 있다. 패킹된 영역은 원본 영역(패킹되기 전)의 기능성이 감추어지기 때문에, 악의적인 분석가가 쉽게 분석할 수 없다. 이는 분명 소프트웨어 보호에 효과적인 방법이지만, 패킹된 영역은 CPU가 실행하기 전에 원본 영역으로 복원되어야 하기 때문에 동적 분석에 의하여 분석될 수 있다. 따라서 코드 패킹이 적용된 소프트웨어에는 “언패킹 루틴”이 반드시 존재한다(즉, “패킹된 코드”와 “언패킹 루틴”은 코드 패킹에서 필수 요소이다..
-
[2021/01/04][짤막한 이야기 - 버퍼 오버리드]짤막한 이야기 2021. 2. 3. 15:01
[2021/01/04][짤막한 이야기 - 버퍼 오버리드] 버퍼 오버리드는 메모리 취약점의 한 종류이다. 보통 많은 사람들이 버퍼 오버플로우는 잘 알고 있지만, 버퍼 오버리드의 존재는 그만큼 알려져 있지는 않은 듯 하다. 2014년에는 가장 유명한 오픈소스 암호화 라이브러리 중 하나인 OpenSSL이 이 취약점에 의하여 공격받게 되었다. 이는 “하트블리드”라고 칭해지고 있으며, 수많은 인기 웹사이트가 여전히 취약할 수 있음을 보여준다. 단순해 보일 수 있는 경계검사 누락으로 웹사이트에서는 엄청난 양의 피가 흐르고 있다. #이야기#루니프#버퍼#오버리드#OpenSSL#하트블리드#경계검사 [2021/01/04][Short Story - Buffer OverRead] Buffer overread is one ty..
-
[2021/01/03][짤막한 이야기 - 핀툴]짤막한 이야기 2021. 2. 3. 15:00
[2021/01/03][짤막한 이야기 - 핀툴] 루니프의 모티브가 되는 핀툴. 동적 바이너리 계측(Dynamic Binary Instrumentation, 통칭 DBI) 프레임워크인 “핀(Pin)”을 통하여 구현가능한 모듈을 모두 핀툴이라고 한다. 프로그램(Binary)이 실행되는 중(Dynamic)에 분석용 코드를 삽입(Instrumentation)하여 기능성의 관찰 혹은 변경이 가능하다. 다양한 환경(Windows, Linux, macOS 등)에서 적용가능하기 때문에 활용방안은 많을 것으로 예상된다. #이야기#루니프#핀툴#핀#바이너리#동적분석#계측#윈도우즈#리눅스#맥OS [2021/01/03][Short Story - PinTool] PinTool is the motif of LootNiP. All ..