본문 바로가기

Computer Science8

개인키 파일 인코딩 종류 for SSH SSH Client로 원격 서버에 접속하기 위한 방법으로는 2가지가 있다 1. ID / PW 2. 개인키 인증서 이번에는 개인키 인증서로 사용할 수 있는 파일들에 대해 알아보려고 한다 이 파일들을 알기 위해서는 인코딩 방식에 대해서 알 필요가 있다 - Text (텍스트) 인코딩 PEM 형식 ASCII 텍스트 기반의 Base64 인코딩을 사용 "-----BEGIN ...-----"와 "-----END ...-----" 태그로 감싸인 구조를 가진다 SSL/TLS 인증서, SSH 키 등에 사용되며, 파일 내용은 텍스트 편집기로 읽을 수 있다 OpenSSH 형식 ASCII 텍스트 기반의 Base64 인코딩을 사용 "-----BEGIN OPENSSH PRIVATE KEY-----"와 "-----END OPENSS.. 2023. 11. 27.
개인키 알고리즘(feat. RSA) 이전 https://code-boki.tistory.com/136 대칭키 / 비대칭키(공개키) 암호화 대칭키 암호화 (Symmetric Key Encryption) 세션 키(Session Key), 공유 키(Shared Key)라고도 부른다 정의: 대칭키 암호화는 같은 키를 암호화와 복호화에 사용 작동 방식 암호화: 보내는 사람이 데이터를 암호 code-boki.tistory.com 이전 글에서의 공개키 암호화에 대해 생각해보자 공개키 암호화에서 중요한건 탈취되어도 상관 없는 공개키가 아닌 개인키이다 어차피 공개키를 통해 누구나 메시지를 암호화할 순 있어도, 해당 메시지를 복호화 할 수 있는건 오직 개인키를 가진 사람뿐이기 때문이다 그럼 어떻게 공개키와 개인키가 안전하게 보호될 수 있는걸까? https:.. 2023. 11. 24.
대칭키 / 비대칭키(공개키) 암호화 대칭키 암호화 (Symmetric Key Encryption) 세션 키(Session Key), 공유 키(Shared Key)라고도 부른다 정의: 대칭키 암호화는 같은 키를 암호화와 복호화에 사용 작동 방식 암호화: 보내는 사람이 데이터를 암호화할 때 키를 사용 전송: 암호화된 데이터가 전송 복호화: 받는 사람이 동일한 키를 사용하여 데이터를 복호화 장점: 빠르고 효율적 단점: 키를 안전하게 공유하는 것이 도전적임(어려움) ⇒ 키 분배 센터 - KDC(Key Distribution Center)를 통해 키 관리의 어려움 해소 알고리즘 종류 AES(Advanced Encryption Standard) - 128/192/256 bit DES(Data Encryption Standard) - 56 bit(실제.. 2023. 11. 20.
소프트웨어 개발 원칙들 모음 어떤 일을 할때의 방법은 여러 사람들이 반복해서 해보고, 100% 정답은 아니지만 99% 올바른 Best Practice가 나오기 마련이다 빅데이터처리를 거쳐서 어떤 일관된 결론을 도출하는것처럼 ㅋㅋ 첫번째로는 소프트웨어 개발 3대 원칙이 있다 1. KISS Keep It Simple Stupid / Keep It Short Simple / Keep it Small Simple 등의 앞글자를 따서 만든 약어라고 한다 '소프트웨어를 설계하거나 코딩하는 행위에서 되도록이면 간단하고 단순하게 만들라'는 원칙이다 소스코드나 설계 내용이 불필요하게 장황하거나 복잡해지는 것을 경계하라는 의미이다 단순할수록 이해하기 쉽고, 이해하기 쉬울수록 버그가 가능할 가능성이 줄어들고, 이는 곧 생산성 향상으로 이어진다 출처: .. 2022. 9. 3.
Terminology(1) - 카멜(Camel) / 케밥(Kebab) / 스네이크(Snake) 케이스 우선 CS를 공부할때 영어로 된 PPT에서 많이 접했던 단어가 있다 바로 Terminology 라고 하는 단어인데, 뜻을 찾아보면 전문용어라고 한다 근데 뭐 편하게 단어라고 해석해도 된다 위의 스크린샷은 인텔리제이의 플러그인 중 하나인 CamelCase를 설치하고 설정창을 열었을때 나오는 화면이다 잘 보면 이름과 함께 형태가 적혀있기에 쉽게 파악할 수 있다 1. kebab-case 케밥은 구글에 검색해보면 서남아시아, 중앙아시아, 남아시아의 구운 고기 요리라고 나온다 그리고 그림을 보면 꼬챙이에 요리들이 꽂혀있는 것을 볼 수 있다 그리고 kebab-case의 형태를 봐도 -로 단어가 이어져 있는 것을 볼 수 있다 케밥케이스는 소문자의 글자와 글자 사이를 -로 이어서 표현한 것을 볼 수 있다 그럼 이제 I.. 2022. 8. 27.
Compile, Link, Build, Run (feat. C vs JAVA) 프로그램을 작성하다보면 컴파일 타임, 런타임이란 용어들을 접하고... 컴파일, 런타임을 검색하다보면 링크, 빌드, 바인드 이런 용어들도 접하게 된다 그럼 이제부터 과연 이게 무엇인지에 대해 알아보자! 나중에 내가 주로 개발하는 언어인 Java와 TypeScript에 대해 말하긴 할것이고, Java는 C#과 많이 비교되는 언어지만.. C언어부터 예로 들어 시작해보겠다 Compile - C언의 컴파일 과정 1. C언어로 프로그램을 만들기 위해선 .c 확장자를 갖고 있는 source file(소스파일)을 작성해야 한다 2. 컴파일을 거치기 전에 Preprocessing(전처리)과정을 거친다. 이 과정에서 #이 붙은 매크로나 전처리기를 해석하거나 해석하지 않거나 등을 선택하고 주석 등을 배제한다 3. 각 CPU.. 2022. 8. 7.
Mixed Content: Let's Encrypt! 등으로 Https를 적용 후 api요청을 http로 보내면 발생하는 브라우저 보안 에러이다 HTTS는 HTTP의 TCP/IP 통신에 SSL(Secure Socket Layer)를 한층 더 위에 얹은 것이다 공개키알고리즘으로 CA(인증 기관)과 암/복호화를 통해 본인인증이 맞는지 검증을 한다 브라우저 내의 자물쇠 모양을 클릭하면 알수있다 우선 이 Mixed Content에러는 https에서 http로 요청을 보낼때 발생한다 해결방법은 4가지가 있다 1. API 요청을 http://~~~ 가 아닌 https://~~~ 로 요청해서 처리하기 2. 페이지의 meta 태그에 내용 추가 -> 아래의 의미는 안전하지 않은 요청들을 https로 업그레이드 해서 요청하겠다는 뜻이다 1번은 하나.. 2022. 6. 27.
HTTP와 HTTPS 차이점 MDN Docs에서 검색을 해보면 - HTTP(Hyper Text Transfer Protocol) 하이퍼텍스트 전송 프로토콜(HTTP)은 HTML과 같은 하이퍼미디어 문서를 전송하기위한 애플리케이션 레이어 프로토콜입니다. 웹 브라우저와 웹 서버간의 커뮤니케이션을위해 디자인되었지만, 다른 목적으로도 사용될 수 있습니다. HTTP는 클라이언트가 요청을 생성하기 위한 연결을 연다음 응답을 받을때 까지 대기하는 전통적인 클라이언트-서버 모델을 따릅니다. HTTP는 무상태 프로토콜이며, 이는 서버가 두 요청간에 어떠한 데이터(상태)도 유지하지 않음을 의미합니다. 일반적으로 안정적인 전송 레이어로 UDP와 달리 메세지를 잃지 않는 프로토콜인 TCP/IP 레이어를 기반으로 사용 합니다. RUDP — 안정적인 업데이.. 2021. 6. 23.