일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- dns
- pycrpytodome
- weak key
- Hastad
- 웹해킹
- Franklin-Reiter Related Message Attack
- RSA
- Crypto
- dreamhack
- Bandit Level 1 → Level 2
- 드림핵
- picoCTF
- Cube Root Attack
- OverTheWire Bandit Level 1 → Level 2
- spoofing
- overthewire
- redirect
- AES
- Montgomery Reduction
- cryptography
- bandit
- shellcode
- 시스템해킹
- XSS
- arp
- rao
- RSA Common Modulas Attack
- 암호학
- return address overflow
- CSRF
- Today
- Total
목록전체 글 (49)
암호(수학) 등.. 공부한 거 잊을거 같아서 만든 블로그
문제 C/C++ Extension Pack확장과 다른 여러 확장들이 설치된 상태에서 C++디버깅을 하려고 "터미널"->"기본 빌드 작업 구성"을 눌렀을 때, 아래의 사진과는 다르게 CMake 구성만 나오는 현상을 겪었다. (지금은 해결 해서 "C/C++: g++ 활성 파일 빌드..."이 나온다.) 해결 구글링을 해도 해결 방법을 찾지 못해서 설치되어있는 확장을 모조리 제거하고 다시 설치하니 "C/C++: g++ 활성 파일 빌드..."이 나왔다...
vscode에서 ssh 원격 연결을 하기 위해서는 Remote - SSH 라는 확장을 먼저 설치해야 한다. 설치 했으면 Ctrl + Shift + p 를 눌러 Remote-SSH: Open SSH Configuration File... 을 클릭한다. 그러면 다음과 같은 화면이 나오는데 /home/user/.ssh/config 을 들어간다. config 파일을 자신이 연결할 원격에 맞춰서 설정한다. 설정을 했으면 Ctrl + Shift + p 를 입력히고 Remote-SSH: Connect to Host... 를 클릭한다. 클릭을 하면 config 파일에 Host에 설정한 이름이 보이며 이를 클릭하면 원격으로 연결을 하게 된다.
ECB (Electronic Code Book) 운영 모드 ECB 운영 모드는 AES 암호화를 그대로 적용한 모드이다. 평문을 블록의 크기 (128 bit) 만큼 나눈 후, 각각의 블록을 동일한 키로 암호화를 한 결과를 합쳐서 암호문을 완성한다. 복호화는 암호화의 역과정이다. ECB 운영 모드의 취약함 ECB 운영 모드는 단순하게 블록만을 암호화 하기 때문에 다른 블록과의 연관성이 없다. 그러한 이유로 ECB는 취약해서 사용되지 않고 있다. 만약 동일한 평문 블록이 있으면 암호화된 평문 블록들 또한 동일한 값을 가지기 때문에 이를 통해 동일한 평문들을 찾을 수도 있을 것이다. 또한 평문 블록들이 동일한 키로 암호화 되어 이를 이용해 평문을 알아낼 수도 있다. 또한 위의 이미지를 보면 가장 왼쪽 이미지를 ..
AES (Advanced Encrytion Standard) AES 암호는 블록암호로 SPN (Substitution Permutation Network) 구조를 가지며, 블록의 크기는 총 128 bit (16 byte) 이고, key의 길이는 128, 192, 256 이 있다. 블록은 평문을 128 bit 씩 나눈 값들을 말하며, 암호화 할 때 블록들을 내부 상태 (state) 라 부르는 각각의 성분이 1 byte 인 4 by 4 행렬로 다루게 된다. 평문 블록의 바이트값이 s0, s1, ~ , s15 순서로 내부 상태에 배치된다. key의 길이에 따라 10, 12, 14개의 라운드를 가지고 있으며 키 스케쥴 함수 (KeyExpansion) 과 4가지의 연산 (AddRoundKey, SubBytes, ..
이진 탐색 알고리즘이란? 이진 탐색 알고리즘이란 정렬된 배열을 탐색 범위를 절반으로 줄여나가면서 탐색하는 알고리즘이다. 예시 오름차순으로 정렬된 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 배열로 1을 찾는 예시를 들어보겠다. 먼저 배열의 중간 값을 배열의 길이와 2를 나눈 몫의 값에 위치한 값이라고 하자. [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 의 중간 값인 5와 1을 비교하고, 1이 5보다 작으므로 탐색범위를 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 에서 [0, 1, 2, 3, 4] 으로 줄인다. 이제 [0, 1, 2, 3, 4]에서 중간 값인 2가 1보다 크므로 탐색 범위를 [0, 1] 로 줄인다. [0, 1] 에서 중간 값이 우리가 찾..
CRT(Chinese Remainder Theorem)를 이용하면 RSA복호화를 기존 복호화 방식보다 빠르게 할 수 있다. CRT를 이용한 빠른 RSA 복호화 증명 CRT에 의하여 (1), (2)를 만족하는 m이 유일하게 존재. 아래의 식을 위 식의 k에 대입 양변에 q 곱하면 m2 이항 p > q 라고 하면 위 식을 이용하여 복호화 하면 기존 복호화 방법인 보다 빠르게 복호화가 가능하다. (사전에 필요한 값 대부분을 미리 계산하기 때문) 하지만 m1, m2를 아직모르기에 m1 와 m2를 구해보자. m1, m2 구하기 이므로 이다. 따라서 이고 위수(order)가 페르마 소정리에 의하여 p - 1이므로 이다. m2도 위와 같은 방법으로 하면 다음과 같다. 이제 m1과 m2를 알았으므로 위 방법을 사용하여..
개요 일반적으로 매우 큰 지수승의 수에 대해서 연산하는 것은 많은 자원을 이용해야한다. 특히 모듈러 연산 x**e (mod n) 대해서 e가 크면 클수록 매우 많은 공간과 시간을 써야한다. 하지만 다행이도 모듈러 연산의 성질을 이용하여 연산의 오버헤드를 매우 크게 줄일 수 있다. 모듈러 연산의 성질 먼저 모듈러 연산에 대해 모르는 사람들이 있을 수 있기에 간단한 설명을 하자면, 단순하게 나머지를 구하는 연산이라고 말할 수 있다. 예를 들어 a와 b가 있다고 할 때, a를 b로 나눈 나머지를 구하는 것이 모듈러 연산을 수행한 것이다. 이 글은 모듈러 연산에 대한 설명을 위한 글이 아니므로 자세한 내용은 인터넷에서 찾자! 매우 찾기 쉽다 이 모듈러 연산에 대해서 여러가지 성질이 있지만 이 글에서 다룰 성질은..
버블 정렬 버블 정렬이란? 인접한 두 원소의 크기를 비교하여 대소관계에 따라 위치를 교환하거나 교환하지 않음으로 오름차순이나 내림차순으로 데이터를 정렬하는 알고리즘이다. 예시 위의 배열을 버블정렬을 통해 오름차순으로 한번 정렬해 보자 인접한 두 값을 비교하여 큰 값이 왼쪽에 있다면 (큰 값, 작은 값) 두 개의 값의 위치를 서로 바꿔주고, 반대되는 경우 (작은 값, 큰 값) 자리를 바꾸지 않는다. 이 과정을 수행하면 배열에서 가장 큰 값이 배열의 가장 오른쪽에 위치하게 된다. 배열에 가장 큰 값인 5를 오른쪽에 옮겼던 과정을 다시 수행한다. 이때 5는 이미 제자리를 찾았으므로 비교대상에서 제외한다. 비교를 수행하여 배열에서 두 번째로 큰 값인 4가 5 다음에 위치하게 된다. 4와 5가 제자리를 찾았으므로..