분류 전체보기 51

[OverTheWire:Bandit] Level 1 → Level 2

2023.11.09 - [Bandit 워게임(Linux 연습)] - [OverTheWire:Bandit] Level 0 → Level 1 Bandit Level 1 컴퓨터의 사용자 이름( 계정명 ): bandit1 호스트(접속해야 할 주소):bandit.labs.overthewire.org 포트 번호: 2220 비밀번호: NH2SXQwcBdpmTEzi3bvBHMM9H66vVXjL (2023.11 기준) Windows PowerShell(or bash 등)을 실행시키고 다음과 같이 입력하여 Bandit Level 1에 접속해 줍니다. PS> ssh bandit1@bandit.labs.overthewire.org -p 2220 이제 비밀번호 NH2SXQwcBdpmTEzi3bvBHMM9H66vVXjL를 입력합..

[OverTheWire:Bandit] Level 0 → Level 1

Bandit Level 0 ssh를 활용하여 게임(level 0)에 로그인하는 것이 목표입니다. 이때 ssh라는 명령어를 이용하겠습니다. SSH란? SSH는 "Secure Shell"의 약어로, 네트워크를 통해 다른 컴퓨터에 안전하게 접속하기 위한 프로토콜 및 프로그램입니다. SSH를 사용하면 데이터가 암호화되어 전송되므로, 보안적으로 뛰어난 방법으로 원격으로 다른 컴퓨터에 접속할 수 있습니다. SSH를 사용하여 다른 컴퓨터에 접속하려면 다음 단계를 따르면 됩니다. SSH 클라이언트 설치: 먼저 SSH 클라이언트 프로그램을 설치해야 합니다. 대부분의 리눅스 및 macOS 시스템에는 기본적으로 SSH 클라이언트가 설치되어 있습니다. Windows에서는 PuTTY 또는 OpenSSH 등의 SSH 클라이언트를..

[암호학] 해시함수 Hash Function

Hash Function은 우리말로 해시함수 또는 해쉬함수라고도 하는데 저는 해시함수라고 부르겠습니다. (암호학 수업시절 "해쉬가 아니라 해시라고!" 라는 말이 머리에 박혀있어서 저도 이제는 해시가 아니면 거슬리긴 합니다ㅎㅎ) 해시함수는 임의의 입력값에 대해 고정된 길이의 값을 출력하는 함수입니다. (해시함수를 왜 사용하는지는 아래에서 다루겠습니다.) 예를 들어, MD5(Messsage Digest Algorithm 5)라는 해시함수는 임의의 길이의 입력 데이터를 받아 128비트(16바이트)의 고정된 길이의 해시 값을 생성합니다. 마지막으로, 항상 같은 입력값에 대해 같은 출력값을 생성합니다 저는 아래 온라인 사이트에서 MD5로 해시 값을 생성해 보겠습니다. 프로그램을 이용한 해싱방법은 맨 아래에서 다루..

암호학 강의 2023.11.09

[OverTheWire:Bandit] OverTheWire Bandit 이란?

워게임(Wargame)은 보안 및 해킹 등의 컴퓨터 보안 관련 기술을 연습하고 향상하기 위한 온라인 경진대회 또는 훈련 활동을 말합니다. 이러한 게임들은 다양한 수준과 주제로 구성되어 있으며, 참가자들은 보안 취약점을 찾아내거나 보안 시스템을 우회하는 등의 과제를 수행합니다. 워게임은 실제로 사용되는 보안 기술을 연습하고 익히는 데 효과적인 방법입니다. 이러한 게임들은 다양한 주제를 다루며, 네트워크 보안, 웹 애플리케이션 보안, 리버스 엔지니어링 등 다양한 분야에 대한 훈련을 제공합니다. 또한, 워게임은 컴퓨터 보안 업계에서 인재를 채용하기 위한 수단으로도 활용됩니다. 경기에 참여하고 뛰어난 실력을 발휘한 참가자들은 종종 기업이나 보안 업체로부터의 관심을 받게 됩니다. 워게임의 예로는 OverTheWi..

[OpenSSL] BigInteger 빅 넘버 라이브러리

"빅 넘버" 또는 "빅넘", BigInteger은 일반적인 정수 데이터 타입의 범위를 넘어선 매우 큰 정수를 의미합니다. 예를 들어, 수백 자리 이상의 정수를 다루는 경우에 필요합니다. 대부분의 프로그래밍 언어는 일반적으로 제공하는 정수 타입의 범위를 초과하는 큰 정수를 다루기 어렵기 때문에, 이런 경우에는 빅 넘버 (Big number) 라이브러리를 사용합니다. 예를 들어, C언어에서는 GMP, OpenSSL 라이브러리와 같은 빅 넘버 라이브러리를 사용하여 큰 정수를 다룰 수 있습니다. 마찬가지로 JAVA에도 BigInteger 라이브러리가 있습니다. Python에서는 내장된 빅 넘버 지원이 있어 별도의 라이브러리 없이도 큰 정수를 다룰 수 있습니다. 다만 이 또한 한계가 있기 때문에 저 같은 경우 P..

Network/OpenSSL 2023.11.07

[암호학] RSA 암호 (공개키암호) OpenSSL

비전공자를 위해 상세한 정보들은 제외했습니다. 질문은 댓글 달아주시면 최대한 자세하게 답변드리도록 하겠습니다 :) RSA는 정수론과 관련있는 공개키 암호 알고리즘입니다. 1977년 Ron Rivest, Adi Shamir, Leonard Adleman 3명이 인수분해의 어려움을 기반으로 한 공개키암호를 제안했습니다. RSA는 "Rivest-Shamir-Adleman"의 약자로, RSA 암호 시스템은 공개키와 개인키라는 두 개의 키를 사용하여 데이터를 암호화하고 해독하는데 사용됩니다. 공개키는 누구나 알 수 있지만, 해당 키를 사용하여 암호화된 메시지를 해독할 수 없습니다. 개인키는 오직 키의 소유자만이 알고 있어야 하며, 이 키를 사용하여 암호화된 메시지를 해독할 수 있습니다. 여기서 공개키는 누구나 알..

암호학 강의 2023.11.06

[암호학] 운용모드(운영모드) Modes of Operation

Modes of Operation은 우리말로 운영모드 또는 운용모드라고도 합니다. 저는 운용모드라고 하겠습니다. 블록암호는 n-bit 평문을 암호화합니다. AES경우 128-bit 블록암호이기 때문에 128-bit를 넘어가는 평문은 128-bit 단위로 나누어 암호화해야 합니다. 만약 평문이 192-bit라면 128-bit 한 블록으로 나누어 암호화하고 나머지 64-bit 평문에는 패딩(Padding)이라는 작업을 해주어 128-bit 크기로 만든 후 암호화를 진행합니다. 즉, 패딩(padding)이란 블록암호 알고리즘에서 블록의 크기를 일정하게 맞추기 위해 일정한 법칙에 따라 블록에 모자란 크기만큼 값을 채워주는 것을 의미합니다. 대표적으로 PKCS#7이라는 패딩 방법이 있습니다. 그렇다면 운용모드는 ..

암호학 강의 2023.11.05

[암호학] 국산 블록 암호 LEA

LEA(Lightweight Encryption Algorithm)는 이름 그대로 빅데이터, 클라우드 등 고속 환경 및 모바일기기 등 경량 환경에서 기밀성을 제공하기 위해 대한민국에서 개발한 128비트 블록암호 알고리즘입니다. 또한 2019년 ISO/IEC의 경량 블록 암호 분야 표준(ISO/IEC 29192-2:2019)으로 제정되었습니다. 국산 블록 암호 알고리즘에는 대표적으로 SEED, ARIA, LEA 등이 있습니다. 2021년에는 국내 여러 연구진들이 모여 만든 PIPO(Plug In, Plug Out)라는 블록 암호도 있습니다. 부채널 공격에도 대응할 수 있는 알고리즘이며 경량 암호 알고리즘입니다. PIPO에 대해 흥미 있으신 분들은 한번 보셔도 좋을 것 같습니다. PIPO 논문, SW코드 더..

암호학 강의 2023.11.02

[OpenSSL] AES 사용하기

해당 글은 OpenSSL 3.14 버전으로 테스트 하였습니다. OpenSSL 1.X 버전에서 사용가능한 함수가 3.0 이상에서는 사용되지 않는 경우가 있으니 참고해주세요. 2023.10.28 - [OpenSSL] - [OpenSSL] OpenSSL 설치 방법 리눅스(Linux) 2023.10.29 - [OpenSSL] - [OpenSSL] OpenSSL 공식사이트에서 설치 in 윈도우(Windows 11) CLI를 통한 AES 암호화 input.txt는 암호화할 원본 파일을 하나 생성하겠습니다. openssl 명령어만 치면 다음과 같이 어떤 방식으로 암호화할지 선택지가 뜹니다. AES-256-CBC로 암호화를 예시로 사용하겠습니다. $ openssl enc -aes-256-cbc -pbkdf2 -in i..

Network/OpenSSL 2023.11.01

[암호학] AES 블록암호 코드 with 설명

AES(Advanced Encryption Standard)는 현재 전 세계적으로 사용되는 대칭키 암호화 알고리즘 중 하나입니다. AES는 미국 국가표준기술연구소(NIST)에서 2001년에 공식적으로 표준으로 채택되었으며, DES(데이터 암호화 표준)의 후속 제품으로 개발되었습니다. https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.197.pdf AES가 개발된 배경 DES의 한계: DES는 1970년대에 개발되었으며, 그 당시에는 충분히 안전한 수준으로 여겨졌습니다. 그러나 시간이 지남에 따라 컴퓨팅 파워가 증가하면서 DES의 키 공간이 너무 작아져서 더 이상 안전하지 않게 되었습니다. 암호학적 요구사항의 변화: 더 안전한 암호화 알고리즘이 필요해졌으며, 미국 정부..

암호학 강의 2023.10.31