분류 전체보기

IPsec 패킷 흐름
IPsec 개요ipsec 은 ip 트래픽을 보호하기 위한 프로토콜 집합으로 통신 세션에서 각 ip 패킷을 인증하고 암호화함으로써 보안을 제공한다. ipsec의 대부분의 보안 기능은 두가지 주요 프로토콜에 의해 제공된다.AH (Authentication Header)ESP (Encapsulating Security Payload)IPsec 모드Transport mode : ip packet의 payload만 암호화함Tunnel mode : 전체 ip packet을 암호화하고 새로운 ip header로 감쌈대부분의 vpn 환경에서는 Tunnel mode를 사용하지만 예외적으로 L2TP/IPsec 같은 경우는 Transport mode를 사용하기도 한다.IPsec 역사최초 ipsec 관련 RFC : 1995년..

Linux의 DMA에 대한 간략한 분석
DMA는 CPU 개입없이 주변 장치와 시스템 메모리 간의 양방향 데이터 전송을 가능하게 하는 하드웨어 메커니즘이다. DMA를 사용하면 시스템 CPU가 실제 I/O 데이터 전송 프로세스에서 벗어나 시스템 처리량을 크게 향상시킬 수 있다. DMA는 하드웨어 아키텍처, 특히 주변장치의 버스기술과 밀접한 관련이 있다. How to Use DMA회사에서 mtk-eip93을 포팅하면서 DMA 작업에 대해 분석해보았다. (1) DMA 클록 및 EIP93 엔진 초기화mtk_eip93_probe() { // 1. DMA descriptor 링 초기화 eip93->tx_ring = dma_alloc_coherent(...); eip93->rx_ring = dma_alloc_coherent(...); ..

conntrack 세션을 이용한 iptables 최적화 및 관련 버그
iptables 정책 적용 후에도 기존 세션이 남아 hit count를 업데이트 하고 있는 이슈를 맡게된 계기로상태를 가진 세션 기반 방화벽처리에 대해 조사해보았다. 장애 대응 개요1. iptables rule sequence 수정 후에도 수정 전 정책으로 패킷 카운팅 되고 있음을 확인2. 해당 호스트는 PC ↔ eth0 (UTM) ↔ eth1 (UTM) ↔ 인터넷 의 구조로 PC 에 대한 라우터 역할을 수행하고 있었음3. reply 패킷의 경우 원래 PREROUTING hook을 안타지만 인터넷 → PC 에 대한 reply 패킷은 PREROUTING → FORWARD → POSTROUTING hook을 타고 처리됨4. rule 적용은 PREROUTING hook의 mangle table에서 orig ..
[OS] I/O처리 방식: Non-Blocking
논 블로킹 모드로 프로그래밍을 한다는 것은 먼저 블로킹의 의미 부터 명확히 해야한다. 일반적으로 블로킹은 "운영체제(커널)에게 어떤 요청을 하고 결과를 운영체제가 알려줄 때까지 기다린다" 를 의미한다. 예를 들어 데이터베이스 서버에 요청하고 그 결과를 데이터베이스 서버가 알려줄 때까지 기다린다도 같은 얘기이다.블로킹: 프로그램이 운영체제(커널) 또는 외부 서비스(DB, 네트워크 등) 에 요청을 보내고, 해당 요청의 결과가 반환될 때까지 대기(멈춤) 하는 상태. connect() 를 호출하면 보통은 운영체제가 원격 서버와 연결하고 그 결과를 알려준다. 연결하는데 지연가능한 시간은 1초 이내, 수초 또는 수분이 될 수 있다. 하나의 연결을 위해 이를 수행하는 프로세스는 장시간을 대기(블로킹)할 수 있으며 그..
[Crypto] NEAT, NES
NEAT (National Encryption AlgoriThm) 알고리즘 분석 요약NEAT은 대한민국 국정원이 설계한 비공개 국가 표준 암호 알고리즘으로, 1997년에 국가기관용 표준 암호로 제정되었다. 이 알고리즘은 정부 기관에서 내부 데이터와 문서 암호화를 위해 사용되며, security through obscurity(암호화 원리를 숨김으로써 보안을 유지하는 방식)를 부분적으로 의존하고 있다. 128비트 블록 암호화 알고리즘으로, IDEA(International Data Encryption Algorithm)와 구조적으로 유사하다. 특징암호 구조Feistel 네트워크 기반: 암호화와 복호화 과정이 거의 동일12.5 라운드: 12번의 full-round 연산과 1번의 half-round 연산으로 ..
Base64
Base64, Base32, Base16은 바이너리 데이터를 텍스트 데이터로 인코딩하는 표준 방식으로, 바이너리 데이터를 안전하게 전송하거나 저장하기 위해 사용된다. 이는 주로 이메일, URL, 또는 파일 저장 시 인코딩에 사용된다. Base64 는 64종류의 문자를 이용하기 때문에 인코딩 후에는 1문자당 6bit(64=2^6) 의 정보를 가진다.Base64: 64개의 문자 (A–Z, a–z, 0–9, +, /) → 6bitBase32: 32개의 문자 (A–Z, 2–7) → 5bit숫자 2–7을 사용하는 이유는 혼동을 피하기 위해 (0과 O, 1과 I 구분)Base16: 16개의 문자 (0–9, A–F) → 4bit특성Base64Base32Base16사용 문자 수64 (A–Z, a–z, 0–9, +, /..

Google authenticator를 사용한 2FA 인증 #1 이론
system에 로그인 하기 위한 사용자 이름 과 비밀 번호가 있어야한다. 여기에 보안계층을 추가하기 위해 one time password generator 를 사용할 수 있다. Google Authenticator 에서 사용하는 암호기법을 살펴보면 TOTP, HOTP 두가지를 사용한다. HOTP(Hmac based One Time Password)HMAC 기반 일회용 비밀번호(또는 HOTP) 는 Shared Secret 와 Event Counter를 사용하는 이벤트 기반 OTP 알고리즘 이다. HOTP의 핵심은 비밀 키이다. seed라고도 하는 비밀키는 counter 값과 달리 고정된 값이고, 토큰을 초기화하는 동안 otp 토큰과 서버가 한번만 교환하는 값이다. 그런 다음 비밀키는 클라이언트와 서버에 안..
![[C/interrupt] IRQs: Hardware, Software](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FpqO4a%2FbtsKNWdZV0m%2FAAAAAAAAAAAAAAAAAAAAAJqiI_bjowc5ZADTznV9FeqyoROZNSrymSI0oEWdrC3c%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DTR0knnhXDGjsrmZRWgW3EzgfDOo%253D)
[C/interrupt] IRQs: Hardware, Software
장치들은 처리할 작업이 준비되었음을 컴퓨터 시스템의 다른 부분에 알리기 위해 여러가지 방법을 사용한다.하드웨어와 소프트웨어 간의 비동기 통신을 효율적으로 처리하기 위해 IRQ가 필요하다. IRQ는 하드웨어 장치에서 이벤트가 발생했을 때 CPU가 이를 처리하도록 알려주는 역할을 한다. IRQ 정보를 확인하기 위해 다음 명령어를 사용할 수 있다.$ cat /proc/interrupts또는$ mpstat -A handle_IPI는 ARM 아키텍처에서 다중 프로세서 간 인터럽트(IPI)를 처리하는 함수이다.void handle_IPI(int ipinr, struct pt_regs *regs){ switch (ipinr) { case IPI_TIMER: tick_receive..

NAPI
대부분의 device(nic..) 들은 두가지 방법으로 커널과 통신한다.polling커널 측에서 수행커널이 장치의 레지스터를 읽어 주기적으로 패킷의 수신 여부를 확인장치가 새로운 패킷을 가지고 있을 경우 이를 처리CPU 리소스 절약이 가능하지만, 불필요한 리소스 소모 가능interruptdevice 측에서 수행장치가 새로운 패킷을 받을 경우 하드웨어 IRQ를 사용하여 커널에게 알려 주는 방식커널이 IRQ를 받게 되면, 해당 IRQ를 처리 하기 위해서 미리 등록된 디바이스 드라이버의 인터럽트의 수신 패킷 처리 루틴(Interrupt Handler)을 호출인터럽트 핸들러(top half handler)는 수신한 패킷을 복사하고 큐에 넣은 후softirq를 사용하여 커널이 해당 패킷을 처리 할 수 있도록 한다..