전체 글193 [현대암호기초] #03. 무작위성 무작위성: 무작위성이 없으면 모든 연산이 예측가능하므로 암복호화가 불가능하다. 무작위성에 대한 오류 비무작위성을 무작위성으로 오해 무작위성을 비무작위성으로 오해 + 클모고로프 복잡도 (Kolmogorov complexity) : (비트)문자열의 무작위성을 측정한 것으로 유한한 길이를 가진 데이터 열의 복잡성을 나타내는 지표 중 하나 + 확률분포와 무작위성 균등 분포 : 모든 결과의 발생 가능성이 같다. 비균등분포 : 결과의 발생 가능성이 모두 같지는 않은 분포 (많은 확률을 가진 case를 ‘편향되었다’고 한다.) + 엔트로피 : 불확실성, 시스템에 존재하는 무질서의 측도 - 엔트로피가 높을수록 결과들에서 발견되는 확실성이 낮아진다. 확률분포의 엔트로피 : (각 확률 X 그 확률의 이진 로그 곱)의 합의.. 2020. 10. 12. [현대암호기초] #02. OTP + 공격모형 + 암호화 응용 # 일회용 패드 (OTP) one time pad OTP : 가장 안전한 암호 -완전 비밀성을 보장한다. 일회용 패드는 평문P와 무작위 키K를 받아서 암호문 C를 산출한다 이때 K는 평문과 같은 길이이며 P와 K를 XOR하여 C를 얻는다. 일화용 패드는 일화용이며 K를 단 한 번만 사용해야 한다 + OTP가 안전한 이유 어떤 암호문이 주어졌을 때 가능한 모든 평문의 경우 중 일부를 공격자가 배제하지 못하게 한다. ? (완벽한 비밀성을 달성하기 위해서는) OTP의 키가 메시지만큼 길어야 한다 -암호문을 안다고 해도 평문에 대하여 그 길이를 제외한 어떤 정보도 알아낼 수 없다. ? K를 모르는 공격자에게 C의 비트는 모두 무작위해 보인다 -> 만일 키K가 무작위하다면 산출된 C역시 공격자가 보기에 K만큼이나.. 2020. 10. 12. [현대암호기초] #01. 암호화 + 고전암호 # 암호화 # 암호화 : 어떠한 자료를 이해할 수 없는 형태로 만들어서 그 자료의 기밀성(confidentiality)를 보장한다. 암호화를 위해서는 알고리즘과 비밀 값이 필요한데, 암호화 알고리즘 = 암호, Cipher 암호화에 쓰이는 비밀 값 = key -> 비밀키를 모르면 누구도 암호화된 메시지에서 어떤 정보를 알아낼 수 없다. 암호화되지 않은 메시지를 평문 (plain text), 암호화된 메시지를 암호문 (cipher text), 평문과 키를 암호화 함수에 입력하여 암호문을 만들고 암호문과 키를 복호화 함수에 입력하여 평문을 얻는다. ★ 암호문은 평문과 길이가 같거나 더 길다. 하지만 평문보다 짧은 길이의 암호문은 없다 # 고전 암호 # 고전암호: 컴퓨터가 쓰이기 전, 비트가 아닌 문자를 다루는.. 2020. 10. 11. [현대암호기초] #00. 암호화 encryption 2020. 10. 11. # 03. Procedure Call in MIPS # Procedure Call in MIPS * 모든 MIPS instruction은 32bit(=4byte)로 크기가 균일 † procedure : 특정 작업을 수행하기 위한 여러 연산의 묶음 ( =함수) + 호출 이후에도 값이 유지되어야 하는 registe의 저장 + return address의 저장 + argument의 전달 in MIPS, 레지스터의 각 칸은 나름의 각자 역할이 있다. * 0번째 칸은 항상 0만 저장한다 * A함수가 작업하다가 B함수를 호출할 때, A는 이미 레지스터를 맵핑을 하여 사용하고 있었을 것이다. 하지만 B도 레지스터에 맵핑해서 사용하고 싶을 것이다. 더 빠르니까 근데 B가 맵핑해버리면 A함수가 사용하던 데이터가 B에 덮여서 사라져버린다. 따라서 A가 사용하던 데이터(레지.. 2020. 10. 9. # 02. MIPS의 ISA ▶MIPS ISA # MIPS : 밉스 테크놀로지에서 개발한 RISC ISA - MIPS에서는 메모리 주소를 나타내기 위해 총 32bits를 이용한다. # MIPS register & memory ▶ 레지스터 * 레지스터는 총 32개로 나누어져 있어 각 칸은 $0 - $31로 나타낼 수 있다. * instruction에서 피연산자와 결과는 레지스터의 주소값을 지정하는데 이때 레지스터를 구별하기 위해 32(= $$2^5$$ )개의 수를 표현할 수 있어야 하고 즉 최소 5bits가 필요하다. * 레지스터 한 칸은 4byte이고 1byte가 8bit이므로 레지스터 한칸은 32bit로 메모리의 주소를 가리킨다 + 실행할 다음 명령어를 가리키는 특수 목적 레지스터 PC(program counter)가 존재한다. .. 2020. 10. 9. # 01. Instruction + ISA (Instruction Set Architecture) # Instruction? instruction이란 기계어로 컴퓨터가 이해가능한 유일한 단어이며 0과 1의 조합으로 이루어진다. # ISA : 하드웨어와 시스템 소프트웨어의 규약 * CPU애서 사용되는 기계어 하나하나가 ISA에 정의되어있어 CPU는 0과 1의 조합을 정의된 기계어로 해석하여 연산을 실행한다. * 컴파일러는 프로그래머가 작성한 소스코드를 주어진 ISA에 맞게 기계어로 변환한다. + 기계어의 정의에는 연산자와 피연산자 그리고 연산결과 출력 위치가 포함되어야 한다. + 기계어 처리 방법이나 캐시 메모리, I.O디바이스는 정의할 필요 없다. + pipelining 사용여부는 포함되지 않는다. Instruction의 수행 순서 1: Instruction을 memory에서 CPU로 가져간다 2: .. 2020. 10. 9. # 00. 컴퓨터 시스템 컴퓨터의 다음과 같은 명칭의 의미는 이렇다. * 소프트웨어 = 시스템 소프트웨어 + 응용 소프트웨어 * 하드웨어 = 하드웨어 * 시스템소프트웨어 = 운영체제 + 언어처리기 * 컴퓨터시스템 = 하드웨어 + 시스템소프트웨어 그리고 하드웨어와 시스템 소프트웨어의 규약을 ISA , instruction set architecture 라고 한다. 시스템 소프트웨어는 ISA에 의존적인 SW를 의미하며 운영체제와 언어처리기 모두를 일컫는다. + 운영체제(OS) : 컴퓨터 시스템의 자원(하드웨어와 솦트웨어)를 관리하며 컴퓨터 시스템을 사용자가 사용하기 편하도록 UI를 제공한다. + 언어처리기 : 고급언어로 작성한 프로그램을 ISA에 맞게 기계어로 변환 ex) 컴파일러, 어셈블러 * 응용 소프트웨어는 machine in.. 2020. 10. 9. [웹해킹] # 커맨드 인젝션 # 커맨드 인젝션 # : 웹을 통해 시스템명령어(command)를 실행하는 공격 (SQL 인젝션과 더불어 인젝션 리스크와 관련된 주요 공격 기법.) 커맨드 인젝션을 통해 해커가 웹내부에서 시스템 명령어를 실행할 수 있어 심각한 영향을 초래할 수 있다. (ping : 입력된 ip주소의 시스템이 현재 동작하고 있는지 확인할 때 사용하는 커맨드) è ip주소뒤에 ;을 붙인뒤 원하는 커맨드를 추가하면 시스템이 명령어입력으로 인식하여 해커가 입력한 시스템 명령어까지 실행한다. ++ ip주소만 입력했을 때 ++ low단계에서 커맨드 인젝션 입력창에 127.0.0.1;cat /etc/passwd 라고 입력 ping명령어 외에도 cat /etc/passwd를 실행했다. ---이때 웹페이지의 코드를 확인해보자 ping .. 2020. 10. 8. 이전 1 ··· 17 18 19 20 21 22 다음