2023/04

프로그래밍 언어 설계 원칙 효율성 목적 코드의 효율성 : 번역기가 효율적인 실행 코드를 생성 할 수 있어야 함 일반적으로 정적 코드가 효율이 더 좋습니다. 예를 들어, 파스칼과 C 언어는 타입 처리를 컴파일 시점에 해결하여 실행 시 효율적입니다. 반면, 파이썬은 런타임 때 타입 체크를 하기 때문에 실행 속도가 느려집니다. 번역의 효율성 번역기가 효율적으로 코드를 생성 할 수 있어야 한다 코드 최적화를 통해 더 효율적인 실행 코드를 생성합니다. 구현 용이성 : 설계된 언어로 얼마나 빠르고 쉽게 프로그램을 작성 할 수 있는가 이는 언어의 구문, 표현력, 라이브러리 지원 등이 사용자의 편의를 높여줄수록 좋습니다. 일반성 일반성은 밀접한 관련 개념들을 하나의 일반적인 것으로 결합하는 성질을 말합니다. 예를 들어..
· DEV/Backend
txProcess 분석 백엔드 보일러 플레이트를 만들고 있는데, 옆에 계신 개발자 분이 자신이 짠 코드를 보여주셨다 처음엔 보고 이해가 안되었는데 보다보니, 놀랍다. 내가 갈 길이 멀다 즉 함수 명 그대로 트랜잭션 프로세스만 담당하는 함수이다 이 함수가 존재함으로써 안전하게 트랜잭션 처리가 되고 있음이 자명해졌다 또한 트랜잭션 처리를 하나로 묶음으로써 코드도 간결해졌다 Contents export const txProcess = async (callback: (manager: EntityManager) => Promise) => { const queryRunner = _datasource.createQueryRunner(); await queryRunner.connect(); await queryRunn..
대칭 암호를 이용한 대칭키 분배 대칭 키 암호를 올바로 사용하려면 메시지를 주고 받는 양쪽이 반드시 동일한 키를 공유해야만 하고, 반드시 다른 사람은 그 키에 접근할 수 없도록 해야 한다. 키 분배 기술이란 다른 사람이 키를 보지 못하게 하면서 데이터를 교환하고자 하는 쌍방에게 전달하는 수단을 의미한다. 아래는 키 분배 기술의 예시이다. A가 키를 선택한 뒤 B에게 직접 전달 제3자가 키를 선택한 뒤에 A와 B에게 직접 전달 A와 B의 공유키로 한 사람이 새 키를 작성하고 공유키로 암호화하여 상대방에게 전송 A와 B가 제3자인 C와 암호화된 연결이 확립되어 있다면, C가 암호화된 링크를 통해서 A와 B에게 키를 전달 세션 키와 영구 키를 사용하는 방법 이 방법은 위의 키 분배 기술의 예시 중 4번을 따라..
원격 사용자 인증 원칙 사용자 인증이란 주장하는 신원이나 시스템 개체를 검증하는 과정이라고 정의되어 있다. 식별 단계 : 보안 시스템에서 식별자 제시 검증 단계 : 개체와 식별자를 묶어서 인증 할 수 있도록 인증 정보 제시 또는 생성 핵심은 사용자 인증은 주장된 내용을 검증하는 방식으로 이루어진다. NIST 전자 사용자 인증 모델 전자 사용자 인증이란 전자적으로 정보 시스템에 제시된 사용자 신원에 대해 신뢰를 확립하는 과정이다 시스템은 인증된 신원을 이용하여 인증된 개체가 특정 기능을 수행 할 수 있도록 허가할지 말지를 결정한다. 특정 기능 데이터베이스 트랜잭션 시스템 자원에 대한 접근 등등 SP 800-63-2 E-인증 구조 모델 해당 인증 모델에서는 다수의 개체와 프로시저들이 연관된 사용자 인증용 일..
· ETC/Thinking
운동 다시 시작함 이제 6주 정도 되었나? 올해 초 서울에서 공부하면서 운동량이 급격하게 낮아졌고, 그간 버텨온 마지노선이 와장창 무너졌다 광주에 오고, 헬스장을 바로 등록했다 스트레스 관리의 부족함을 느꼈고, 스트레스도 못느끼게 합법적으로 날 괴롭혀야겠다 싶었다 그냥 변하고 싶었던 것도 크다 운동 방식은 단순 무식하게 군 생활 동안 구조대 형에게 배운 루틴대로 하기로 했다 "견뎌 안죽어 사람이 그렇게 쉽게 죽지 않는다"라 말하던 사람인지라 같이 운동 할 때 너무 힘들었는데 그 때 느낀 해방감이나 성취감을 다시 느끼고 싶었다 6 주 정도 풀업 14개 x 9 set, 팔굽혀 펴기 50개, 달리기 3Km 만 딱 하고 헬스장 나오는걸 반복했다 역시나 효과가 있음 가끔 야식 먹고, 일반식으로 관리하는거 치고는 ..
디지털 서명 NIST에서 정의 한 것에 따르면, 데이터를 암호학적으로 변환한 결과로서 적절하게 구현할 경우 출처인증, 데이터 무결성, 서명인 부인 봉쇄를 검증하는 메커니즘에 사용된다. 디지털 서명은 데이터에 종속되는 비트 패턴으로, 파일, 메시지 또는 다른 유형의 데이터 블록을 입력 값으로 하는 함수 형태의 에이전트에 의해 생성 된다. 디지털 서명 생성과 검증 위의 그림은 일반적인 디지털 서명 생성 절차를 나타낸 그림이다. 디지털 서명은 메세지 출처와 무결성은 지켜주지만, 기밀성을 지켜주지는 못한다. 밥은 메시지 M을 해시 함수에 넣은 후, 디티절 서명 생성 알고리즘을 통해 짧은 블록을 만들어 메시지 M에 첨부한다 앨리스는 받은 비트 블록과 메시지 M을 동일하게 해시 함수-디지털 서명 생성 알고리즘에 넣..
Diffe-hillman 알고리즘 Diffie-Hellman 키 교환은 공개키 암호화 기법 중에서 대칭 키를 공유하기 위해 사용되는 방법입니다. 이 알고리즘의 목적은 두 사용자가 비밀 키를 안전하게 교환하는데 있다 알고리즘 자체는 키를 교환하는데 국한되어서 사용한다 핵심 Diffie-Hellman 키 교환의 핵심은 이산 로그 문제와 모듈러 산술 문제입니다. 이를 이용하여 Alice와 Bob은 비밀 수를 선택하고, 이를 통해 대 키(비밀키)를 생성합니다. 이 알고리즘은 인증 및 기밀성이 보장되지 않으므로, 보안 통신 시스템에서는 이를 보완하기 위해 추가적인 암호화 방법을 사용합니다. 예를 들어, SSL/TLS 프로토콜에서는 Diffie-Hellman 키 교환을 사용하면서, 서버 인증을 위해 디지털 인증서를..
형식 언어 (3) - 형식 문법 표현 방법 형식 언어(formal language)는 규칙적인 구조와 규칙에 따라 생성된 문자열의 집합입니다. 이러한 규칙은 문법(grammar)이라고도 하며, 형식 언어는 이러한 문법에 따라 생성된 문자열들의 집합으로 구성됩니다. 형식 문법은 크게 2 가지 방법으로 정의 할 수 있습니다. 생성 규칙 만을 가지고 표현하거나 G = Vn,Vt, P, S로 정의하는 것입니다 오늘의 규칙 대문자로 표기된 기호와 시작 기호를 나타내는 기호 S는 논터미널 기호입니다. 로 묶어서 나타낸 기호도 논터미널 기호입니다. 소문자 영문자, 연산자 기호, 구분자, 숫자 등은 터미널 기호입니다. 대문자 끝부분의 기호는 터미널과 논터미널 기호를 나타내는 문법 기호입니다. 소문자 영문자는 터미..
형식 언어 (2) - 언어 형식 언어(formal language)는 규칙적인 구조와 규칙에 따라 생성된 문자열의 집합입니다. 이러한 규칙은 문법(grammar)이라고도 하며, 형식 언어는 이러한 문법에 따라 생성된 문자열들의 집합으로 구성됩니다. 오늘 설명할 언어는 의미(Semantic)의 개념은 포함하지 않습니다 L은 언어를 뜻합니다 두 언어의 합집합 두 언어의 접속 L의 거듭 제곱 즉 거듭 제곱한 만큼 뽑는 경우의 수 문제입니다 클리니 클로저, 포지티브 클로저 유도 정의된 문법으로부터 어떤 언어가 생성되는지, 언어가 문법에 맞는지를 알기 위해 유도를 설명한다 α, β 등 그리스어 소문자는 문법 기호로 구성된 문자열을 나타냅니다. 한 번 이상의 유도는 *가 아니라 +로 위에 것을 바꿔야 합니다 유도라..
형식 언어 (1) 문자열 형식 언어(formal language)는 규칙적인 구조와 규칙에 따라 생성된 문자열의 집합입니다. 이러한 규칙은 문법(grammar)이라고도 하며, 형식 언어는 이러한 문법에 따라 생성된 문자열들의 집합으로 구성됩니다. 형식 언어는 컴퓨터 과학에서 중요한 개념으로, 프로그래밍 언어, 데이터베이스 쿼리 언어, 통신 프로토콜 등 다양한 분야에서 사용됩니다. 형식 언어는 종류에 따라 위의 4가지로 분류가 됩니다 형식 언어 정의 1. 알파벳 : 언어의 문장을 이루는 기본적인 기호 알파벳이란 공집합이 아닌 기호들의 유한 집합으로 시그마로 표시한다. 알파벳의 의미는 일반적인 프로그래밍 언어에서 사용하는 문자,기호의 집합이다 2. 문자열 : 알파벳에 대한 문자열은 알파벳에서 정의 된 기호들..
berom
'2023/04 글 목록 (7 Page)