전체 글 367

인증서

1. 인증서(A 공개키 포함)의 주요 내용버전 (Version):인증서의 X.509 버전 정보.주로 X.509v3(버전 3)이 사용됩니다.시리얼 번호 (Serial Number):인증서의 고유 식별자.CA가 발급한 인증서를 구분하기 위해 사용.서명 알고리즘 (Signature Algorithm):CA가 인증서에 서명할 때 사용한 알고리즘.예: SHA256withRSA, SHA256withECDSA.발급자 정보 (Issuer):인증서를 발급한 CA의 정보.예: CA의 이름, 조직 정보, 국가 정보.유효 기간 (Validity):인증서가 유효한 기간.시작 날짜(Not Before)와 만료 날짜(Not After)를 포함.주체 정보 (Subject):인증서 소유자의 신원 정보.예: A의 이름, 도메인 이름, ..

보안 2024.12.11

자동차 보안 용어

ECU(Engine Control Unit)는 자동차의 전자제어장치로, 차량의 엔진과 관련된 다양한 기능을 제어하고 최적화하는 중요한 컴퓨터 장치입니다. ECU는 자동차의 두뇌 역할을 하며, 엔진의 성능, 연비, 배출가스, 안전성 등을 관리하는 데 사용됩니다. 자동차의 MCU(Microcontroller Unit) 칩은 특정 작업을 수행하기 위해 설계된 소형 컴퓨터 칩입니다. MCU는 자동차의 다양한 전자 제어 시스템에서 사용되며, 차량의 특정 기능을 제어하고 실행하는 역할을 합니다. MCU와 ECU의 차이점ECU(전자제어장치): 시스템 전체를 제어하는 데 사용되는 장치. 여러 MCU를 포함할 수 있음.MCU(마이크로컨트롤러): 특정 작업을 수행하는 칩으로, ECU 내부나 독립적으로 사용될 수 있음.  ..

보안 2024.12.09

PKCS#12 / .p12

PKCS#12와 .p12 파일은 사실상 같은 것을 의미합니다. PKCS#12는 Public-Key Cryptography Standards #12의 약자로, 개인 키와 공개 키(또는 인증서)를 함께 안전하게 저장하고 전송하기 위한 파일 형식 및 표준입니다. .p12는 PKCS#12 파일 형식의 파일 확장자입니다.주요 내용 및 차이점PKCS#12표준의 이름으로, 암호화된 컨테이너 형식을 정의.개인 키, 인증서(공개 키), 중간 CA 인증서 등을 포함.암호화되어 있으며, 이를 열기 위해 **암호(PIN)**가 필요.다양한 운영 체제 및 애플리케이션에서 지원..p12 파일PKCS#12 형식의 파일을 저장한 실제 파일.파일 확장자로 .p12 또는 .pfx를 사용.PKCS#12 표준에 따라 구조화된 내용을 담고 ..

보안 2024.12.09

PKCS#11

PKCS#11은 암호학적 작업 및 키 관리 작업을 위한 암호화 토큰 인터페이스 표준입니다. Public-Key Cryptography Standards (PKCS) 중 하나로, 하드웨어 보안 모듈(Hardware Security Module, HSM), 스마트카드, USB 토큰 등과 같은 보안 장치에서 암호화 서비스를 제공하는 표준 인터페이스입니다.PKCS#11은 애플리케이션과 암호화 장치 간의 통신을 정의하며, 주요 기능으로 암호화/복호화, 디지털 서명, 키 생성 및 관리 등이 있습니다. 여기서 **"인터페이스"**란, 소프트웨어(애플리케이션)와 하드웨어(보안 장치) 간의 상호작용을 가능하게 하는 규칙이나 방법을 말합니다. 쉽게 말해, 두 시스템 간의 의사소통을 위한 공통된 언어와 약속이라고 이해할 수..

보안 2024.12.09

SSL/TLS

TLS 인증 과정은 클라이언트와 서버 간에 안전한 통신 채널을 설정하기 위한 단계입니다. TLS(Transport Layer Security)는 서버 인증과 선택적으로 클라이언트 인증을 통해 데이터의 기밀성, 무결성, 신뢰성을 보장합니다. . TLS 인증 과정 요약클라이언트와 서버가 TLS 핸드셰이크를 시작합니다.서버 인증서를 통해 서버의 신뢰성을 검증합니다.선택적으로 클라이언트 인증서로 클라이언트를 인증합니다.세션 키를 생성 및 교환하여 암호화된 통신 채널을 설정합니다.이후 대칭키 암호화를 사용해 데이터를 안전하게 전송합니다 TLS 인증 과정 단계별 설명2.1 핸드셰이크 시작클라이언트가 서버에 TLS 연결 요청을 보냅니다.클라이언트는 지원하는 TLS 버전과 암호화 알고리즘 목록(암호군, Cipher S..

보안 2024.12.06

13강, 14강 템플릿

클래스 템플릿스택클래스템플릿의 생성자에서 매개변수로전달되는 클래스의 객체를 저장할수있는 배열공간을 동적으로 할당할텐데그때 디폴트 생성자가 필요할텐데 디폴트생성자를 만들지 않아서 에러가 난다.  Stack의 생성자의 구현부에서  new T[s]; 에서 Person에 디폴트생성자가 필요함   주의 -컴파일할때 값을 알수있게 매개변수를 넣어줘야한다!!  함수템플릿    굳이 T라고 안쓰고 ANY라고 씀  표준템플릿 라이브러리(STL)   순차컨테이너(선형적인 구조) -벡터 : 크기확장이 가능, 끝에 삽입하는것은 빠르나 중간에 삽입하는것은 느림-리스트 : 이중연결리스트 (중간삽입이 효율적임)-데크 : 벡터와 리스트의 혼합형태임 연상 컨테이너 탐색트리와 같은 인덱스구조를 이용하는 컨테이너키를 이용한 효율적인 검색..

수업/C++ 2024.11.30

12강 추상클래스, 상세클래스

=0은 순수가상함수임을 알려주는 그냥 표기임 숫자0 또는 대입이랑 아무관련없음순수가상함수가 있어야 추상클래스임 ㄹㄹ 추상클래스를 상속을 받고 순수가상함수를 구현하면 상세클래스임.  다중상속 1.다중상속의 문제- 함수 이름 중복 2. 중복상속   기초클래스인 Person을 virtual로 상속해야함 그래야 Parttime클래스에서 Person을 하나만상속하게 할수있는거Person에 해당하는 기초클래스의 생성자를 호출해야함!!

수업/C++ 2024.11.28

11. 상속- 가상함수(virtual),업캐스팅,다운캐스팅

정적연결 Person이 부모 Student클래스가 자식일 떄Person *pPt = &harry; ( 자식클래스)일때pPt ->print(); 하면 부모클래스의 print함수가 작동한다.즉, 포인터의 자료형을 가지고 판단한다.  그런데 연결된 객체가 Student객체이니까 Student객체의 print함수를 쓸려면,(Student *) 를 통해서 포인터의 클래스를 바꿔준다. 즉 형변환 해줌.이방법은 위험함.  p2가 Student객체를 가리키고 있으리라는 보장이없다.  동적연결 소멸자를 가상함수로 선언하는 이유 Base* obj = new Derived();:Base 클래스 포인터로 Derived 객체를 생성합니다.delete obj;:Base의 소멸자는 호출되지만, Derived의 소멸자는 호출되지 않..

수업/C++ 2024.11.28

10상속 - 생성자와 소멸자, 가시성지시어

1. 소멸자를 별도로 지정하지 않아도 되는 경우컴파일러가 제공하는 기본 소멸자는 아래와 같은 조건에서 충분히 동작합니다:기본 소멸자의 동작멤버 변수가 **기본 데이터 타입(예: int, double 등)**이거나 **표준 라이브러리 객체(예: std::string, std::vector 등)**인 경우.객체의 메모리를 자동으로 관리할 수 있는 경우.예제: 소멸자를 별도로 지정하지 않아도 되는 상황 int와 std::string은 기본 소멸자가 알아서 정리합니다.동적 메모리를 사용하지 않으므로, 특별한 소멸자 정의가 필요 없습니다.2. 소멸자를 반드시 지정해야 하는 경우사용자가 동적 메모리 관리 또는 리소스 관리를 직접 수행해야 하는 경우에는 반드시 소멸자를 정의해야 합니다.소멸자를 꼭 정의해야 하는 상황..

수업/C++ 2024.11.26

연산자다중정의- 이동대입연산자 , std::move, 형변환연산자

대입연산자의 다중정의a=b; 에서 a가 자기자신객체 , b가 매개변수로 전달됨.데이터의 길이를 나타내는 항목이있고  깊은복사를 해야함 이동대입 연산자좌측피연산자에 대입할 우측 피연산자가 rvalue일때 사용됨 ( 대입후 우측 피연산자의 내용이 더 이상 필요없는 상황)우측 피연산자의 내용을 좌측피연산자로 이동하여 불필요한 복사를 하지 않아도 되게 함&&를 넣어서 rvalue참조를 받게 함const는 없다 우측피연산자의 내용이 바뀌기 때문.대입연산자에의해 v1가 깊은복사로 v3로복사됨 이동대입 연산자가  발동되면 아래와되고  이후 ,임시객체의 소멸자가 작동되서 v1.add(v2)는 없어짐  std::move 함수의 활용 swap함수를 구현할때. 이동 대입 연산자를 이용하면 효율적으로 구현가능인수로 전달되는 ..

수업/C++ 2024.11.26