isms-p 항목정리 2
2023. 5. 11. 22:32
카테고리 없음
2.8 정보시스템 도입 및 개발 보안 2.8.1 보안 요구사항 정의 정보시스템의 도입⦁개발⦁변경 시 정보보호 및 개인정보보호 관련 법적 요구사항, 최신 보안 취약점, 안전한 코딩방법 등 보안 요구사항을 정의하고 적용하여야 한다. 정보시스템을 신규로 도입⦁개발 또는 변경하는 경우 정보보호 및 개인정보보호 측면의 타당성 검토 및 인수 절차를 수립⦁이행해야 한다. 사전에 수립돼 있는 정보보호 및 개인정보보호 요구사항은 제안요청서(RFP)에 반영한다. 2.8.2 보안 요구사항 검토 및 시험 사전 정의된 보안 요구사항에 따라 정보시스템이 도입 또는 구현되었는지를 검토하기 위하여 법적 요구사항 준수, 최신 보안취약점 점검, 안전한 코딩 구현, 개인정보 영향평가 등의 검토 기준과 절차를 수립⦁이행하고, 발견된 문제점..
[CryptoHack] SYMMETRIC CIPHERS(Bean Counter)
2023. 5. 11. 21:41
워게임/CryptoHack
Bean Counter 문제 나는 PyCrypto의 카운터 모드를 내가 원하는 것을 하기 위해 고심했고, 그래서 나는 ECB 모드에서 직접 CTR모드로 바꾸었다. 내 카운터는 암호 분석가들을 따돌리기 위해 위아래로 움직일 수 있다! 그들이 내 사진을 읽을 가능성은 없다. 풀이 더보기 from Crypto.Cipher import AES KEY = ? class StepUpCounter(object): def __init__(self, value=os.urandom(16), step_up=False): self.value = value.hex() self.step = 1 self.stup = step_up def increment(self): if self.stup: self.newIV = hex(int(..
[CryptoHack] GENERAL(XOR Starter, XOR Properties, Favourite byte, 'You either know, XOR you don't', Lemur XOR)
2023. 5. 10. 07:01
워게임/CryptoHack
XOR Starter 문제 및 설명 XOR은 비트가 같으면 0을 반환하고, 그렇지 않으면 1을 반환하는 비트 연산자입니다. 교과서에서 XOR 연산자는 ⊕로 표시되지만, 대부분의 문제와 프로그래밍 언어에서 '^'이 대신 사용되는 것을 볼 수 있습니다. 더 긴 이진수의 경우, 0110 ^1010 = 1100 비트 단위로 XOR를 수행합니다. 우리는 먼저 정수를 십진법에서 이진법으로 변환하여 정수를 XOR할 수 있다. 먼저 각 문자를 유니코드 문자를 나타내는 정수로 변환하여 문자열을 XOR할 수 있습니다. 문자열 'label'과 정수 13과 XOR 하십시오. 이러한 정수를 다시 문자열로 변환하고 플래그를 crypto{new_string}(으)로 제출하십시오. 풀이 더보기 문제에서 'label'이라는 문자열을 ..
[CryptoHack] SYMMETRIC CIPHERS(PASSWORDS AS KEYS)
2023. 5. 9. 18:42
워게임/CryptoHack
PASSWORDS AS KEYS 문제 대칭 키 알고리즘에서 키는 암호나 다른 예측 가능한 데이터 대신에, 랜덤 바이트여야 합니다. 랜덤 바이트는 암호화 보안 의사 난수 생성기(CSPRNG)를 사용하여 생성되어야 합니다. 키가 어떤 식으로든 예측 가능하면 암호의 보안 수준이 감소하고 암호문에 접근한 공격자가 암호를 해독할 수 있다. 키가 임의의 바이트로 구성된 것처럼 보인다고 해서 키가 반드시 그런 것은 아니다. 이 경우 키는 해싱 기능을 사용하는 간단한 암호에서 파생되어 암호문을 크래킹할 수 있습니다. 이 문제를 해결하기 위해 HTTP 요청을 엔드포인트에 스크립팅하거나, 암호문을 오프라인으로 공격할 수 있습니다. 행운을 빕니다. https://aes.cryptohack.org/passwords_as_ke..
[CryptoHack] SYMMETRIC CIPHERS(Flipping Cookie)
2023. 5. 8. 21:49
워게임/CryptoHack
Flipping Cookie 문제 내 웹사이트에서 쿠키를 구할 수는 있지만, 플래그값을 읽는 데는 도움이 되지 않을 거라고...생각합니다. https://aes.cryptohack.org/flipping_cookie/ 풀이 더보기 from Crypto.Cipher import AES import os from Crypto.Util.Padding import pad, unpad from datetime import datetime, timedelta KEY = ? FLAG = ? @chal.route('/flipping_cookie/check_admin///') def check_admin(cookie, iv): cookie = bytes.fromhex(cookie) iv = bytes.fromhex(iv..
[CryptoHack] SYMMETRIC CIPHERS(ECB ORACLE)
2023. 5. 7. 19:16
워게임/CryptoHack
ECB Oracle 문제 ECB는 간단한 모드로, 각 평문 블록이 완전히 독립적으로 암호화됩니다.. 이러한 경우, 당신의 입력이 비밀 플래그 앞에 붙여지고, 암호화되고, 그게 전부입니다. 우리는 심지어 복호화 기능도 제공하지 않습니다. 아마도 "ECB 오라클"이 있을 때 패딩 오라클이 필요하지 않을까요? https://aes.cryptohack.org/ecb_oracle/ 풀이 더보기 from Crypto.Cipher import AES from Crypto.Util.Padding import pad, unpad KEY = ? FLAG = ? @chal.route('/ecb_oracle/encrypt//') def encrypt(plaintext): plaintext = bytes.fromhex(plai..
[CryptoHack] SYMMETRIC CIPHERS(Triple DES)
2023. 5. 6. 23:14
워게임/CryptoHack
Triple DES 문제 데이터 암호화 표준은 AES의 선구자였으며, 결제 카드 산업과 같은 일부 느린 분야에서 여전히 널리 사용되고 있다. 이 문제는 보안 블록 암호가 가져서는 안 되는 DES의 이상한 약점을 보여준다. 풀이 더보기 from Crypto.Cipher import DES3 from Crypto.Util.Padding import pad IV = os.urandom(8) FLAG = ? def xor(a, b): # xor 2 bytestrings, repeating the 2nd one if necessary return bytes(x ^ y for x,y in zip(a, b * (1 + len(a) // len(b)))) @chal.route('/triple_des/encrypt///..
[CryptoHack] SYMMETRIC CIPHERS(ECB CBC WTF)
2023. 5. 5. 23:31
워게임/CryptoHack
ECB CBC WTF 문제 여기서는 CBC에서 암호화할 수 있지만 ECB에서만 암호를 해독할 수 있습니다. 그건 취약점이 될 수 없어요 왜냐면 그들은 모드가 다르니까요... 그렇죠? https://aes.cryptohack.org/ecbcbcwtf/ 풀이 더보기 from Crypto.Cipher import AES KEY = ? FLAG = ? @chal.route('/ecbcbcwtf/decrypt//') def decrypt(ciphertext): ciphertext = bytes.fromhex(ciphertext) cipher = AES.new(KEY, AES.MODE_ECB) try: decrypted = cipher.decrypt(ciphertext) except ValueError as e: ..
[CryptoHack] SYMMETRIC CIPHERS(Lazy CBC)
2023. 5. 4. 23:59
워게임/CryptoHack
Lazy CBC 문제 나는 게으른 개발자일이고, 내 CBC 암호화가 작동하기를 원합니다. 초기화 벡터에 대한 이 모든 이야기는 무엇인가요? 중요하게 않은 것 같아요. 풀이 더보기 먼저 제공된 사이트와 코드다. from Crypto.Cipher import AES KEY = ? FLAG = ? @chal.route('/lazy_cbc/encrypt//') def encrypt(plaintext): plaintext = bytes.fromhex(plaintext) if len(plaintext) % 16 != 0: return {"error": "Data length must be multiple of 16"} cipher = AES.new(KEY, AES.MODE_CBC, KEY) encrypted = c..