분류 전체보기
-
Ron was Wrong, Whit is Right 문제 및 설명 여기 RSA 공개 키 묶음이 있습니다. 인터넷에 접속한 사람들로부터 그들이 보낸 메시지와 함께 수집되었습니다. excerpt.py 에서 볼 수 있듯이, 모든 사람이 PKCS#1 OAEP를 사용하여 자신의 메시지를 암호화했습니다. 암호 해독이 가능해서는 안 되지만, 일부 키에 문제가 있는 것은 아닐까요? 풀이 더보기 from Crypto.Cipher import PKCS1_OAEP from Crypto.PublicKey import RSA msg = "???" with open('21.pem') as f: key = RSA.importKey(f.read()) cipher = PKCS1_OAEP.new(key) ciphertext = ciph..
[Cryptohack] RSA (Ron was Wrong, Whit is Right)Ron was Wrong, Whit is Right 문제 및 설명 여기 RSA 공개 키 묶음이 있습니다. 인터넷에 접속한 사람들로부터 그들이 보낸 메시지와 함께 수집되었습니다. excerpt.py 에서 볼 수 있듯이, 모든 사람이 PKCS#1 OAEP를 사용하여 자신의 메시지를 암호화했습니다. 암호 해독이 가능해서는 안 되지만, 일부 키에 문제가 있는 것은 아닐까요? 풀이 더보기 from Crypto.Cipher import PKCS1_OAEP from Crypto.PublicKey import RSA msg = "???" with open('21.pem') as f: key = RSA.importKey(f.read()) cipher = PKCS1_OAEP.new(key) ciphertext = ciph..
2023.05.25 -
Transparency 문제 및 설명 HTTPS를 통해 웹 사이트에 연결할 때, 서버가 보내는 첫 번째 TLS 메시지는 서버 TLS 인증서를 포함하는 ServerHello입니다. 브라우저는 TLS 인증서가 유효한지 확인하고 유효하지 않을 경우 TLS 핸드셰이크를 종료합니다. 검증에는 다음 사항이 포함됩니다: - 인증서의 이름이 도메인과 일치합니다 - 인증서가 만료되지 않았습니다 - 인증서는 최종적으로 브라우저 또는 운영 체제에서 신뢰하는 CA(인증 기관)의 루트 키에 의해 서명됩니다("신뢰 체인"을 통해) CA에는 인증서에 서명할 수 있는 권한이 있으므로 인터넷의 보안은 올바른 사용자에게 TLS 인증서를 발급하는 데 따라 달라집니다. 즉, 실제 도메인 소유자에게만 인증서를 발급해야 합니다. 그러나 Win..
[Cryptohack] General (Transparency)Transparency 문제 및 설명 HTTPS를 통해 웹 사이트에 연결할 때, 서버가 보내는 첫 번째 TLS 메시지는 서버 TLS 인증서를 포함하는 ServerHello입니다. 브라우저는 TLS 인증서가 유효한지 확인하고 유효하지 않을 경우 TLS 핸드셰이크를 종료합니다. 검증에는 다음 사항이 포함됩니다: - 인증서의 이름이 도메인과 일치합니다 - 인증서가 만료되지 않았습니다 - 인증서는 최종적으로 브라우저 또는 운영 체제에서 신뢰하는 CA(인증 기관)의 루트 키에 의해 서명됩니다("신뢰 체인"을 통해) CA에는 인증서에 서명할 수 있는 권한이 있으므로 인터넷의 보안은 올바른 사용자에게 TLS 인증서를 발급하는 데 따라 달라집니다. 즉, 실제 도메인 소유자에게만 인증서를 발급해야 합니다. 그러나 Win..
2023.05.24 -
Privacy-Enhanced Mail? 문제및 설명 인코딩 부분에서 살펴본 것처럼 암호화는 큰 정수, 원시 바이트, 16진수 문자열 등 매우 다양한 형식으로 데이터를 처리합니다. 암호화 데이터의 송수신을 지원하기 위해 몇 가지 구조화된 형식이 표준화되었습니다. 이러한 공통 데이터 형식을 인식하고 조작할 수 있습니다. PEM은 키, 인증서 및 기타 암호화 자료를 보내는 데 널리 사용되는 형식입니다. 모양은 다음과 같습니다 base64 인코딩된 데이터를 한 줄의 머리글과 바닥글로 감싸 데이터 구문 분석 방법을 나타냅니다. 헤더와 본문에 정확한 하이픈 수가 있어야 합니다. 그렇지 않으면 암호화 도구가 파일을 인식할 수 없습니다. base64 인코딩된 데이터는 DER 인코딩된 ASN.1 값입니다. 혼란스럽습니..
[Cryptohack] General (Privacy-Enhanced Mail?)Privacy-Enhanced Mail? 문제및 설명 인코딩 부분에서 살펴본 것처럼 암호화는 큰 정수, 원시 바이트, 16진수 문자열 등 매우 다양한 형식으로 데이터를 처리합니다. 암호화 데이터의 송수신을 지원하기 위해 몇 가지 구조화된 형식이 표준화되었습니다. 이러한 공통 데이터 형식을 인식하고 조작할 수 있습니다. PEM은 키, 인증서 및 기타 암호화 자료를 보내는 데 널리 사용되는 형식입니다. 모양은 다음과 같습니다 base64 인코딩된 데이터를 한 줄의 머리글과 바닥글로 감싸 데이터 구문 분석 방법을 나타냅니다. 헤더와 본문에 정확한 하이픈 수가 있어야 합니다. 그렇지 않으면 암호화 도구가 파일을 인식할 수 없습니다. base64 인코딩된 데이터는 DER 인코딩된 ASN.1 값입니다. 혼란스럽습니..
2023.05.23 -
소프트웨어 생명주기(SDLC) - 시스템의 전 공정을 체계화한 절차 SDLC 모델 종류 - 폭포수 모델 : 각 단계를 확실히 마무리 지은 후에 다음 단계로 넘어감, 선형 순차적 모형(고전적 생명주기 모형) - 프로토타이핑 모델 : 프로토타입을 구현해, 고객의 피드백을 반영하며 만들어 간다 - 나선형 모델 : 위험을 최소화하기 위해 점진적으로 개발 - 반복적 모델 : 구축 대상을 나누어 병렬적으로 개발 후 통합하거나, 반복적으로 개발(SDLC 모델) 소프트웨어 개발방법론 - 구조적 방법론 : 전체 시스템을 기능에 따라 나누어 개발하고, 이를 통합.(하향식 방법론) 나씨-슈나이더만 차트 사용(도형식, 제어 논리 구조, 명확한 식별) - 정보공학 방법론 : 정보시스템 개발에 필요한 관리 절차와 작업 기반을 체..
정보처리기사 실기 정리소프트웨어 생명주기(SDLC) - 시스템의 전 공정을 체계화한 절차 SDLC 모델 종류 - 폭포수 모델 : 각 단계를 확실히 마무리 지은 후에 다음 단계로 넘어감, 선형 순차적 모형(고전적 생명주기 모형) - 프로토타이핑 모델 : 프로토타입을 구현해, 고객의 피드백을 반영하며 만들어 간다 - 나선형 모델 : 위험을 최소화하기 위해 점진적으로 개발 - 반복적 모델 : 구축 대상을 나누어 병렬적으로 개발 후 통합하거나, 반복적으로 개발(SDLC 모델) 소프트웨어 개발방법론 - 구조적 방법론 : 전체 시스템을 기능에 따라 나누어 개발하고, 이를 통합.(하향식 방법론) 나씨-슈나이더만 차트 사용(도형식, 제어 논리 구조, 명확한 식별) - 정보공학 방법론 : 정보시스템 개발에 필요한 관리 절차와 작업 기반을 체..
2023.05.22 -
Marin`s Secret 문제 저는 제 비밀 목록에서 소수를 생성하는 초고속 방법을 찾았습니다. 풀이 더보기 #!/usr/bin/env python3 import random from Crypto.Util.number import bytes_to_long, inverse from secret import secrets, flag def get_prime(secret): prime = 1 for _ in range(secret): prime = prime
[Cryptohack] RSA (Marin`s Secret, Fast Primes)Marin`s Secret 문제 저는 제 비밀 목록에서 소수를 생성하는 초고속 방법을 찾았습니다. 풀이 더보기 #!/usr/bin/env python3 import random from Crypto.Util.number import bytes_to_long, inverse from secret import secrets, flag def get_prime(secret): prime = 1 for _ in range(secret): prime = prime
2023.05.22 -
Infinite Descent 문제 큰 소수를 찾는 것은 느리기 때문에 최적화 방법을 고안했습니다. 풀이 더보기 #!/usr/bin/env python3 import random from Crypto.Util.number import bytes_to_long, isPrime FLAG = b"crypto{???????????????????}" def getPrimes(bitsize): r = random.getrandbits(bitsize) p, q = r, r while not isPrime(p): p += random.getrandbits(bitsize//4) while not isPrime(q): q += random.getrandbits(bitsize//8) return p, q m = bytes_..
[Cryptohack] RSA (Infinite Descent)Infinite Descent 문제 큰 소수를 찾는 것은 느리기 때문에 최적화 방법을 고안했습니다. 풀이 더보기 #!/usr/bin/env python3 import random from Crypto.Util.number import bytes_to_long, isPrime FLAG = b"crypto{???????????????????}" def getPrimes(bitsize): r = random.getrandbits(bitsize) p, q = r, r while not isPrime(p): p += random.getrandbits(bitsize//4) while not isPrime(q): q += random.getrandbits(bitsize//8) return p, q m = bytes_..
2023.05.21