본문 바로가기

전체 글131

[C ++] 다중 정의 (Overloading) C++에서 '다중 정의'는 하나(함수 이름, 변수 이름등)가 여러 의미를 동시에 갖는 것을 말한다. C와 달리 C++에서는 매개변수 구성이 달라지거나 어떤 식으로든 함수 원형이 달라지면 이름이 같더라도 전혀 다른 함수가 된다. #include using namespace std; int Add(int a, int b, int c) { cout 2023. 2. 2.
[C ++] 범위 기반 for문 보통 배열 자료구조에 접근할 때 for문을 자주 사용하는데, 이는 배열의 요소가 선언할 때 확정되기 때문이다. 하지만 만일 배열 요소의 개수를 변경하게 된다면? 당연히 for문도 수정해야하는 번거러움이 생긴다. 이를 해결하기위해 범위 기반 for문을 사용하면 수정할 필요성이 사라진다. for(auto 요소변수 : 배열이름) 반복 구문; #include using namespace std; int main(int argc, char *argv[]) { int arr[5] = {10, 20, 30, 40, 50}; // 일반적인 반복문 for(int i = 0; i < 5; ++i) cout 2023. 2. 2.
[C ++] new와 delete연산자 연산자 new와 delete는 C++에서 객체를 동적할당하고 해제하는 '연산자'이다. 만약 단일 인스턴스라면 다음과 형태로 사용된다. 형식 *변수이름 = new 형식; delete 변수이름; 배열이라면 이렇게 사용한다. 형식 *변수이름 = new 형식[요소개수]; delete[] 변수이름; new연산자의 특징중 하나는 "메모리 크기를 정하지 않는다" 라는점이다. #include int main(int argc, char *argv[]) { int *data = new int; int *newdata = new int(10); *data = 5; std::cout 2023. 2. 2.
[C ++] auto C에서 auto 예약어는 기억 분류 지정자이다. 하지만 사실상 C에서 아무도 auto 예약어를 사용하지 않는다. (어차피 생략하게되면 auto로 지정되고 스택을 사용하도록 컴파일하기 때문) #include int main(void) { int a = 10; int b(a); auto c(b); std::cout 2023. 2. 2.
운용모드 개요 현대 블록 암호 중 가장 대표적인 AES는 고정길이(8바이트, 16바이트) 블록을 기준으로 암호화 및 복호화를 수행한다. 그러나 실제 운용환경에서는 평문의 길이가 무척 길고 가변적이기때문에 임이의 길이의 데이터를 암호화하고 복호화하는 방법인 운용 모드가 필요하다. 1. ECB (Electronic codebook, 전자코드북) 운용 모드 중에서 가장 간단한 모드 각 블록이 독립적으로 암/복호화가 이루어진다. => 병렬 처리 가능 블록간의 독립성으로 블록 단위의 패턴이 유지된다. 평문에서 같은 값을 갖는 블록은 대응하는 암호문 블록도 동일하다. 임의의 한 블록에서 오류가 발생하면 다른 블록으로 오류 확산이 일어나지 않는다. 2. CBC (Cipher-Block Chaninning, 암호 블록 체인) .. 2023. 2. 2.
블록암호 암호의 역사 고전암호 스키테일 암호 시저 암호) 모노 알파베틱 암호 현대암호 Claude Shannon : 정보이론의 창시자 혼돈과확산 혼돈 : 키와 암호문의 상관관계를 숨김 ( 치환 이용 [S-BOX] ) 확산 : 평문과 암호문의 상관관계를 숨김 ( 순열 이용 [P-BOX] ) ) 블록암호 블록암호 : 평문과 암호문이 고정된 크기의 블록으로 구성되어 있다. ) DES Date Encryption Standard (데이터 암호화 표준) 64-bit 평문을 받아 56-bit 키를 사용하여 64-bit 데이터를 암호화 복호화 알고리즘은 암호화 알고리즘과 동일하고 키만 reverse order(역순)으로 입력하면 된다. (Feistel 구조) 총 16라운드로 구성 Q. 64-bit 평문을 받았지만 56-bit.. 2023. 2. 2.
정보보호 기본 용어 Module1 보안 용어 정의 보안 자산 : 조직에서 보유하는 가치가 있는 모든 것 ex) 유형자산: 하드웨어 | 무형자산: 소프트웨어 취약점 : 시스템을 위협의 영향에 노출시키는 시스템의 약점 약점 : 공격에 활용될 여지가 있는 오류 보안 약점 : 실제 보안사고에 악용될 수 있는 근본원인 ex) 오류, 버그 보안 취약점 : 위협원이 보안 약점을 악용하여 발생하는 실제적인 위협 위협원 : 어떤 목적을 가지고 위협을 행하거나 지원하는 사람이나 조직 위협 : 자산에 손실을 초래할 수 있는 잠재적 원인이나 행위 위협 행동 : 피해를 입힐 의도로 목표 대상에 취한 모든 행위 위험 : 외부의 위협이 내부의 취약성을 이용하여 각종 자산에 피해를 입힐 수 있는 가능성 Key Point : 보안 조치를 통해 취약점을 .. 2023. 2. 2.
키 관리 Key 유형 대칭키 (대칭키 암호화 및 MAC 함수) 공개키/개인키 (공개키 암호화 및 전자서명) Key generation(키 생성) ) Key Establishment(키 설정) - Key Distribution(키 분배) Session key Establishment(세션키 설정) 세션 키 설정 프로토콜 )))) 키 분배 센터 (Key Distribution Center : KDC) 사전에 약속(공유)된 키가 있어야 가능*하다. 키 번역 센터 (Key Translation Center : KTC) 가볍게 보기 ) ) ) 2023. 2. 2.
인증과 인가 인증과 인가 사용자가 정보 자원에 접근하기 위해서는 다음과 같은 3단계 활동이 요구된다. 1단계: 식별(Identification): 인증 받으려고 하는 사람이 누구인가? "주체가 본인임을 주장하는 것, ID등을 이용하여 본인의 신원을 주장하는것" 2단계: 인증(Authentication): 인증 받으려는 사람이 진짜 그 사람인가? " 주체가 자신이 주장한 신원임을 증명하는 것(개체 인증일 경우), 어떠한 자원을 사용하려는 주체의 신원을 식별하는 작업" 3단계: 인가(Authorization): 이 자원을 사용할 수 있는 사람인가? " 인증을 획득한 주체가 자원에게 접근하여 원하는 작업을 할 수 있는 권한이 있는지 확인하는 것 인증 개체 인증과 메시지 인증으로 구분됨 왼) 개체인증 오) 메시지 인증 메시.. 2023. 2. 2.
공개키 시스템 배경 대칭키 암호의 단점? 대칭키 기반의 암호 기법은 송수신자가 안전하게 대칭키를 공유했다는 가정으로부터 출발한다. 어떻게 키를 안전하게 공유할 것인가? => 키공유가 힘들다 사용자의 수가 늘어날 수록 필요한 비밀키의 개수가 급격히 증가한다. N(N-1)/2 개씩증가 부인 방지를 제공하지 못한다. 공개키 시스템의 원리 공개키 시스템의 도입 RSA 공개키 암호 방식: Rivest, Shamir, Adleman,1978년 공개키 암호의 개요 암호화용 키와 복호화용 키가 다르다 대칭키 암호기법에 비하여 속도가 느리다(약,1000배) 긴 문서의 암호보다 대칭키 암호기법의 비밀키 암호에 사용 공개키 암호 키 관리와 키 분배가 용이하다 키 생성 및 관리 A, B, C 사람과 공개키 암호통신을 할 경우 각자의 공개 .. 2023. 2. 2.