SSH 키는 서버 문을 여는 내 전용 열쇠이고, Ed25519는 더 작고 단단하게 새로 깎은 열쇠예요. 작아도 오래된 RSA 열쇠 못지않게 안전하고 만들고 쓰기도 빨라서 지금은 기본 권장이에요.
비유가 깨지는 곳 열쇠를 건네는 게 아니라 서명으로 '나'임을 증명하는 방식이에요. 아주 오래된 서버, RSA를 요구하는 규정, 일부 하드웨어 토큰에선 아직 RSA가 필요해요. 어느 쪽이든 개인 키는 패스프레이즈로 잠가 둬요.
SSH 키를 만들 때 고르는 서명 알고리즘이다. RSA는 큰 수의 소인수분해가 어렵다는 데 기댄 오래된 방식이고, Ed25519는 Curve25519 타원곡선을 쓰는 EdDSA(Edwards-curve Digital Signature Algorithm) 구현으로 더 짧은 키로 비슷하거나 높은 보안 수준을 낸다. 지금은 Ed25519가 기본 권장이다.
ssh-keygen -t ed25519 -C "you@example.com"ssh-keygen -t rsa -b 4096 -C "you@example.com" # 호환성이 필요할 때
RSA
Ed25519
키 길이
2048~4096비트(3072 이상 권장)
256비트 고정
속도
서명·키 생성이 느림
빠름
서명
크다
작고 결정적(같은 메시지 → 같은 서명)
호환성
거의 모든 환경
OpenSSH 6.5(2014) 이상
Ed25519는 구현 실수가 끼어들 여지가 적게 설계됐다. 서명에 난수가 필요 없어 난수 생성기 결함에 덜 취약하다
RSA를 고를 이유는 아주 오래된 서버, 규정상 RSA 요구, Ed25519를 지원하지 않는 하드웨어 토큰 정도다
개인 키는 패스프레이즈로 잠그고 ssh-agent에 올려 쓴다. CI에서 쓰는 배포 키는 저장소 비밀 변수에 두고 접속 대상의 호스트 키는 known_hosts로 검증한다(GitLab CI/CD 파이프라인)
HTTPS는 HTTP(Hypertext Transfer Protocol) 메시지를 TLS(Transport Layer Security)로 감싸 보내는 방식이다. HTTP 자체는 바뀌지 않고, 그 아래에 암호화 계층이 하나 끼어든다. 기본 포트는 HTTP가 80, HTTPS가 443이다.
XSS(Cross-Site Scripting)는 공격자가 넣은 스크립트가 내 사이트의 출처(origin) 권한으로 사용자 브라우저에서 실행되는 공격이다. 같은 출처의 코드로 돌기 때문에 same-origin-policy가 막아 주지 못한다. 그 스크립트는 페이지를 바꾸고, 로그인한 사용자 행세를 하며 요청을 보내고, JS가 읽을 수 있는 데이터(localStorage의 토큰 등)를 빼 갈 수 있다.
키를 해시 함수(Hash Function)로 배열 인덱스로 바꿔 값을 저장하는 자료구조. 조회·추가·삭제가 평균 O(1)이다. JavaScript의 객체와 Map·Set, 파이썬의 dict·set(python-collections), 자바의 HashMap이 모두 해시 테이블이다.