분류 전체보기
DNS, related vulnerability ( hosts )
DNS, related vulnerability ( hosts )
2016.09.22DNS cache, hosts file, query orderwindowsThe entries in the hosts file are loaded into DNS cache by DNS Client Serviceprograms looks for DNS cache as the first step on name resolution.Domain Name System (DNS) servers are queried.If the name is still not resolved, NetBIOS name resolution sequence is used as a backup. This order can be changed by configuring the NetBIOS node type of the client.실제로..
선형대수 ( Linear Algebra )
선형대수 ( Linear Algebra )
2016.09.19공학에서 선형성이라는 단어는 참 많이나온다. 컴퓨터 공학에서도 물론 등장하거니와 암호학을 공부하다보면 비선형함수를 선형화시키는 공격이 나오기도 한다. 선형대수를 공부하는 이유는, 선형함수를 가우스소거법이나 adjoint matrix, rank어쩌구, eigenvalue 등을 이용해 문제를 단순 연립방정식 노가다 대비 쉽게 해결할 수 있기 때문이다. 이런저런 방법을 코딩에 적용하면 연산을 효율적으로 수행할 수 있다. 스칼라, 스칼라 함수는 소문자로 표현 벡터는 소문자 bold로 표현 행렬은 대문자 bold로 표현 Linearity, 선형성 선형성이란 직선 그래프로 표현될 수 있는 수학적 성질을 의미한다. 직선 그래프로 표현될 수 있다는 것은 두 변수가 정비례(directly proportion) 관계이며 ..
System call / vDSO, vsyscall
System call / vDSO, vsyscall
2016.09.18System callsystem call은 user가 Software Interrupt를 걸 수 있도록 user process에 제공되는 인터페이스(API)다. 대부분의 kernel에서는 user 어플리케이션이 kernel space에 직접 접근하지 못하도록 `` addr_limit``를 설정해 놓았다.특정 프로세스가 kernel space를 수정하거나 하드웨어 디바이스를 직접적으로 조작하는 것을 막기 위해서다.따라서 어플리케이션이 상기 작업을 처리해야 하는 경우 kernel이 대신 작업을 수행하도록 요청하고 그 결과를 반환받는 수 밖에 없는데, 이를 위해 kernel에서 제공하는 인터페이스가 system call이다. 일반적으로 많이들 사용하는 glibc 등도 내부적으로는 system call을 사용하..
Preemptive / Non-preemptive ( 선점형 / 비선점형 스케줄링 )
Preemptive / Non-preemptive ( 선점형 / 비선점형 스케줄링 )
2016.09.18CPU schedulingCPU 스케줄링의 결정 시점은 다음과 같은 프로세스의 상태 변화가 있을 때이다.수행 → 대기 interrupt수행 → 준비 time-out대기 → 준비 wake-up수행 → 종료 * 대기 → 수행 dispatch Preemptive / Non-preemptive비선점형 스케줄링(Non-preemptive Scheduling)비선점형은 위의 결정 시점 중 1번과 4번의 상황에서만 스케줄링이 발생한다.어떤 프로세스가 CPU를 할당 받으면 그 프로세스가 종료되거나 IO request가 발생하여 자발적으로 대기 상태로 들어갈 때까지 계속 실행된다.일반적으로 선점형보다 scheduler 호출 빈도가 낮고 context switching overhead가 적다.즉, 어떤 프로세스가 작업을 ..
IPsec
IPsec
2016.09.17IPsec (wiki)IPsec 자체는 end-to-end security scheme이다.따라서 tunnel mode, transport mode 둘 다 end-to-end를 제공할 수 있지만 tunnel의 경우 host-to-host, network-to-network 등 gateway가 어디에 있느냐에 따라 end-to-end가 아닐 수 있다. ESPEncapsulating Security Payload formatOffsetsOctet160123Octet16Bit1001234567891011121314151617181920212223242526272829303100Security Parameters Index (SPI)432Sequence Number864Payload data………… …… Pad..
PKCS ( Public Key Cryptography Standards )
PKCS ( Public Key Cryptography Standards )
2016.09.14Public Key Cryptography standards, 공개키 암호 표준 ( wiki ) RSA부터 Diffie-Hellman, Password-Based Encryption, Digital Signature까지 공개키에 관련된 RFC를 볼 수 있다. 현재 PKI 표준은 X.509다. ( ITU-T ) PKCS #7 ( RFC 2315 ) Cryptographic Message Syntax Standard ( Digital Envelope ) The enveloped-data content type consists of ①encrypted content of any type and ②encrypted content-encryption keys for one or more recipients. (필..
Naming convention
Naming convention
2016.09.14구글의 스타일 가이드 모음https://github.com/google/styleguide http://docs.navercorp.com/coding-convention/ Helper class / Utility class helper class는 특정 클래스의 작업을 도와주는 유틸리티 클래스라고 생각하면 된다. 어떤 기능을 제공하기는 하는데, 그 자체로 그 어플리케이션의 핵심 로직은 아닌 클래스를 의미한다. 예를 들면 DB를 다룬다거나, 안드로이드에서 CustomTabs를 띄워주는 기능을 한다거나. utility class와 하는 일은 비슷하지만, utility class는 모든 메서드가 static이라는 차이점이 있다. 즉, helper class가 더 큰 개념이라고 보면 된다. 클래스 네이밍 suf..
Pointer
Pointer
2016.09.14추적 주소 값 1284EA43 71 (**a) 125F7458 1284EA43 (*a) 122EF560 (&a) 125F7458 (a) ②→ ①↖ 포인터는 1 2 순서로 이동하며 따라가면 편하다. 포인터는 주소, 0차, 1차, 2차, ...로 생각하면 편하다. 주소 0차 1차 2차 &a a *a **a 122EF560 125F7458 1284EA43 71 포인터를 지원한다는 것은 어떤 변수에 대해 ``c &``연산을 통해 변수의 주소를 구할 수 있음을 의미한다. 자바도 참조개념을 사용하지만 포인터를 지원하지 않는다고 하는 것은 이런 맥락에서다. 포인터 배열과 배열 포인터 ```c int *p[4]; // 포인터 배열. [주소, 주소, 주소, 주소] int (*p)[4]; // 배열 포인터. [크기 4인 ..
객체 지향 5대 원칙 : SOLID
객체 지향 5대 원칙 : SOLID
2016.09.13[위키 link] 단일 책임의 원칙 (SRP, Single Responsibility Principle) 한 클래스는 하나의 책임만 가져야 한다. 어떤 코드를 어디에 두어야 하는가?를 결정할 때 많이 도움이 되는 원칙. '그 클래스를 변경해야 하는 상황,원인,이유가 딱 한가지 인지' 를 보면, 단일 책임으로 제대로 분리되었는지를 확인할 수 있다. 지키지 않는 경우 3.7 뒤엉킨 변경 문제가 발생한다. 클래스는 그 책임을 완전히 캡슐화해서 제공해야 한다. 어떤 클래스에 변경이 발생했을 때, 변경이 발생했다는 그 이유만으로 다른 클래스에도 변경이 발생해야하는 상황이 있어서는 안된다는 것이다. (어떤 사유로 내부 로직을 변경했다면, 거기서 끝나야 한다는 의미) 지키지 않는 경우 3.8 산탄총 수술 문제가 발생..
객체 지향 패러다임
객체 지향 패러다임
2016.09.12객체 지향 객체지향 패러다임을 사용할 때, 객체를 만드는 1순위 원칙은 책임이다. 객체를 물리적 또는 추상적 대상에 비유하는 것이 도움이 된다. (Domain Model에 한해서) Alan Kay : OOP to me means only messaging, local retention and protection and hiding of state-process, (상태 변경 프로세스의 로컬 바운더리 유지, 보호, 숨김. 더 많은 영역에서 상태를 변경 할 수록, 어디서 변경했나 추적하기 어렵고, 이는 예상과 다른 변수값을 유발하며, 버그를 생산한다.) and extreme late-binding of all things. https://velog.io/@eddy_song/alan-kay-OOP http:/..
Birthday Problem & Attack
Birthday Problem & Attack
2016.09.10n명의 사람이 있을 때 생일이 같은 사람이 둘 이상 있을 확률이 p(n)이면,이를 적어도 1명도 겹치지 않을 확률로 바꿀 수 있으므로 이고, 이다. p(n) = 0.5일 때 n은 22.xxx이므로 23명 이상일 때 p(n)은 50% 이상이 된다. Birthday Attack암호학적 해시 함수의 해시 충돌을 찾아내기 위해 몇 번의 시도가 필요한지를 알아내기 위한 방법이다. 실제 birthday attack에서는 가짓수가 365가 아닌 ``c 2^24`` 등 매우 큰 수인데, factorial ( 계승 ) 을 사용하면 계산이 어렵다.따라서 적당히 approximation시켜 사용한다. : 총 가짓수 ( 365일 ) : 시도 횟수 ( 사람 수 ) 일 때, 라는 간단한 식이 나온다. factorial 근사는 스..
Wireless ( IEEE 802.11 )
Wireless ( IEEE 802.11 )
2016.09.10WEP, WPA, WPA2-TKIP 까지는 크랙 가능.WPA2-AES의 경우 dictionary attack이나 brute force를 사용해야 한다. WEP정적키를 사용하는 RC4기반 스트림 암호화. IV는 24bit, 키는 40bit | 104bit이다.단순히 키 앞에 IV를 붙이는 방식으로 64bit | 128bit Seed를 만든 후 이를 RC4에 집어넣고 keystream을 생성한다. keystream과 평문을 XOR해서 암호문을 만든다.ICV는 4byte CRC-32.IV/KeyID는 IV가 3byte, KeyID가 1byte로 총 4byte.IV가 그대로 노출되며, 24bit IV는 birthday attack에 따르면 n = 5000이면 p > 0.5이다.RC4 WPA & WPA2WPA 표..