일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 대외활동/카카오테크캠퍼스
- 개발/OOP
- 개발/Java
- 개발/Java/Spring
- 취업
- 개발
- 개발/Tools/프레임워크/Spring
- ai
- AI/GPT
- 개발/에러
- 개발/컴퓨터네트워크
- electron
- 개발/언어/Java
- 개발/네트워크
- 개발/보안
- 알고리즘
- 개발/CS/알고리즘
- ⌨️Developer/보안
- AI/ML
- 개발/webrtc
- 개발/CS/OS
- 개발/프레임워크&라이브러리
- 카카오테크캠퍼스
- ⌨️Developer
- 개발/언어론
- 카테캠
- 개발/환경
- 개발/Electron
- 카카오 테크 캠퍼스
- 개발/MySQL
- Today
- Total
목록Computer Science (173)
봄수의 연구실
RSA RSA 암호화 알고리즘은 대표적인 공개키 암호화 기법 중 하나입니다. 송신자와 수신자는 모두 n과 e를 알고 있어야하고, 오직 수신자만이 d를 가집니다 키 생성 RSA 알고리즘에서는 먼저 공개키와 개인키를 생성해야 합니다. 소수 p와 q를 무작위로 선택합니다. n = pq를 계산합니다. n은 매우 큰 수이며, 공개키와 개인키의 생성에 사용됩니다. φ(n) = (p-1)(q-1)을 계산합니다. φ(n)은 오일러 피 함수(Euler’s totient function)로 불립니다 또한, n보다 작은 양의 정수 중 n과 서로소인 수의 개수를 나타냅니다. 1 < e < φ(n)를 만족하는 e를 선택합니다. e는 공개키의 일부로 사용됩니다. d * e ≡ 1 (mod φ(n))을 만족하는 d를 계산합니다. ..
공개 키 오늘은 공개 키 암호의 기본적인 개념을 살펴보고 키 분배 문제에 대한 준비 과정을 알아보자 공개 키 알고리즘은 수학적 함수에 근거해서 만들었다. 서로 다른 두 개의 키를 이용하는 비대칭 방식 두 개의 키를 사용하기 때문에 기밀성과 키 분배, 인증 분야에서 성능이 뛰어나다. 공개 키 암호 시스템은 크게 아래 3 분류로 나눌 수 있다. 암호화/복호화 - 공개키로 메시지를 암호화 디지털 서명 - 자신의 개인키로 복호화 키 교환 - 세션 키 교환을 위해 상호 협조 공개 키 암호에 대한 오해 공개 키 암호가 관용 암호보다 해독에 있어 안전하다 암호 시스템의 안전도는 키의 길이와 암호를 뚫는데 필요한 계산량에 따라 달라진다 근본적으로 공개 키 암호화 관용 암호 중 어느 것이 더 암호 해독에 더 강하다고 말..
정규 문법과 문맥 자유 문법 위는 Noam Chomsky의 4 가지 언어 유형이다. 안으로 들어갈수록 문법의 제약, 구속력이 강해진다고 보면 된다 context-senstive가 한국어, 영어 등이라 생각하면 된다 이 4가지 언어 유형 중 정규 문법과 문맥 자유 문법이 프로그래밍 언어에 딱 맞아서 정규 문법을 이용하여 어휘 분석(lexical analysis)을 수행하고, 문맥 자유 문법을 이용하여 구문 분석(syntax analysis)을 수행합니다. 대부분의 프로그래밍 언어의 오류를 찾기 위해서 문맥 자유 문법을 사용한다 정규 문법(regular grammar) 모든 규칙이 다음과 같은 형태를 가지는 문법을 말합니다. A -> aB A -> a A -> ε A와 B는 비터미널 심볼(nontermina..
프로그래밍 언어 정의하는 방법 언어 인식기(recognizer): 어떤 문자열이 언어 L에 속하는지 판단하는 장치를 의미합니다. 이는 주로 컴파일러의 어휘 분석기, 구문 분석기에서 사용됩니다. 언어 생성기(generator): 어떤 문법을 이용하여 언어 L의 문장들을 생성하는 장치를 의미합니다. 그 후, 언어를 정의하는 방법으로 언어 인식기와 언어 생성기의 관점에서 설명하고 있습니다. 여기서는 정규표현식을 이용하여 언어를 정의하는 방법을 언어 인식기 관점에서 다루고, 문법(grammar)을 이용하여 언어를 정의하는 방법을 언어 생성기 관점에서 다루고 있습니다. 마지막으로, 노트에서는 예시를 통해 언어를 생성하는 방법을 설명하고 있습니다. 이 예시에서는 'S -> S10 | 0’이라는 문법을 이용하여 생성..
어휘 분석(lexical analysis) 위의 사진에서 오늘은 Lexical Analysis에 대해 알아보겠습니다 Token : 문법적으로 의미가 있는 최소 단위 Pattern : 토큰을 서술하는 규칙 Lexeme : 패턴에 의해 매칭 된 문자열 Token에 관하여 토큰은 크게 Special form과 General form으로 나눌 수 있습니다. Special form은 언어 디자이너가 미리 정의한 단어들로, 예약어(keyword), 연산자(operator), 구분자(delimiter)가 해당됩니다. 예약어(keyword)는 프로그래밍 언어에서 미리 정의된 단어 조건문(if, else), 반복문(for, while), 데이터 타입(int, float) 등이 해당됩니다. 예약어들은 프로그래머가 변수명이..
프로그래밍 언어의 구성 프로그래밍 언어의 구성 요소는 크게 구문(Syntax)과 의미론(Semantics)으로 나눌 수 있습니다. 구문은 프로그래밍 언어의 문법적인 부분으로, 프로그래밍 언어에서 올바른 문장을 구성하는 방법을 정의합니다. 이를 통해 프로그래밍 언어를 구성하는 단어, 구문 구조, 문장 등을 정의할 수 있습니다. 언어의 표현식, 문장 그리고 프로그램 단위의 형식 일반적으로 문맥 자유 문법으로 기술 의미론은 프로그래밍 언어의 의미적인 부분으로, 프로그래밍 언어에서 올바른 의미를 가지는 문장을 구성하는 방법을 정의합니다. 이를 통해 프로그래밍 언어에서 올바른 실행 결과를 얻을 수 있도록 문장의 의미를 정의합니다. 표현식, 문장, 프로그램 단위에 대한 의미 연산 의미론, 공리 의미론, 표기 의미론..
블록 암호 기반 MAC 블록 암호를 이용해서 MAC를 생성하는 몇 가지 방법에 대해서 알아보자 암호 - 기반 메시지 인증 코드(Cipher-based Message Authentication Code)(CMAC) 암호-기반 메시지 인증 코드(CMAC)의 생성 과정은 다음과 같습니다. 메시지 M을 n개의 블록으로 나눕니다. 각 블록을 M1, M2, …, Mn으로 표기합니다. CMAC 알고리즘에 사용할 대칭키 K와 부속키 K1을 설정합니다. K는 k 비트의 암호키이며, K1은 n 비트의 부속키입니다. CMAC 알고리즘에서 사용할 암호화 함수를 선택합니다. AES나 3DES 암호화 함수 중 하나를 선택하며, 이에 따라 블록 크기인 b도 결정됩니다. AES의 경우 b는 128비트, 3DES의 경우 b는 64비트..
HMAC HMAC(Hierarchical Message Authentication Code)은 키를 활용한 메시지 인증 방식으로, 메시지 무결성을 보호하는 데 사용됩니다. HMAC은 일반적으로 대칭키를 사용하며, 주어진 입력 메시지와 키를 이용하여 MAC(Message Authentication Code)을 생성합니다. HMAC은 다음과 같은 구성 요소를 사용하여 MAC을 생성합니다. 해시 함수 (Hash function) : SHA-1, SHA-256 등과 같은 해시 함수를 사용합니다. 내부 패딩 (Inner padding) : 0x36과 같은 내부 패딩 값을 사용하여 해시 함수를 적용하기 전 입력 메시지를 처리합니다. 외부 패딩 (Outer padding) : 0x5C와 같은 외부 패딩 값을 사용하여..
Scheme 기본 문법 Scheme 언어의 특징은 아래와 같다 Simple syntax - 간단한 문법 Functional programming - 함수가 일급 객체 취급 받는다 Dynamic typing - 동적 타입 지원 Tail recursion optimization - 꼬리 재귀 최적화 Basic Data Type s-expression은 symbolic expression의 약어로, Lisp 언어에서 모든 코드나 데이터를 나타내는 방식을 말합니다. 이는 리스트 구조를 이용한 트리 구조로 표현됩니다. 따라서 Lisp에서는 코드도 데이터와 마찬가지로 리스트 형태로 표현되어 처리됩니다. S-expression의 데이터 유형 Atom은 숫자, 심볼 등과 같은 단순한 데이터 유형을 나타냅니다. List..
메시지 다이제스트 메시지 다이제스트(message digest)는 데이터 덩어리(예: 메시지, 파일)의 고유한 고정 길이의 해시 값입니다. 이 값은 원본 데이터의 요약된 형태로, 원본 데이터의 변경 없이 동일한 메시지 다이제스트를 생성합니다. 메시지 다이제스트는 암호학에서 해시 함수를 사용하여 생성되며, 이러한 해시 함수는 보안 및 암호화와 관련된 다양한 애플리케이션에서 사용됩니다. 메시지 다이제스트의 몇 가지 주요 특징과 용도는 다음과 같습니다: 데이터 무결성 데이터를 변경하면 메시지 다이제스트도 변경되므로, 전송된 데이터의 무결성을 검증할 수 있습니다. 메시지 다이제스트를 사용하여 원본 데이터가 변경되지 않았는지 확인할 수 있습니다. 고유성 원본 데이터에 대해 생성된 메시지 다이제스트는 고유하며, 다..