일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Algorithm
- 자료구조
- spring
- python
- Queue
- 문자열
- BFS
- 코테
- dfs
- 공개키 암호화
- 코딩테스트준비
- JPA
- 코딩테스트
- 자바의정석
- Java
- 암호학
- jsp
- 개발자취업
- 알고리즘
- 가상컴퓨팅
- javascript
- js
- DB
- 항해99
- 크루스칼
- 생성자
- sql
- dbms
- data structure
- generic class
- Today
- Total
PLOD
[crypto] Software Security 본문
software security는 software의 어떻게 안전하게 만들것인가에 대해 초점을 맞춘다.
1. HeartBleed
web에서 사용자가 서버와 통신을 할 때 주로 openSSL ,TLS를 사용하는데 사용자가 웹사이트에 접속할 때 서버로부터 정보를 암호화해서 주고 받으며 통신을 하는데 이 과정에서 서버와 사용자가 같은 데이터를 주고받지 않는 소프트웨어적인 문제점(OPENSSL bug로 가능해진 공격이다.)
2. Low-level vulnerability(C, C++) <-> High- level (java, python)
C와 C++ 는 system software language(ex . servers , OS kernels, embedded systems) 이기 때문에 attack 에 굉장히 민감하다. Low-level-vulnerability를 aim 한 대표적인 attack은 buffer-overflow가 있다.
3. Buffer - overflow
stack 영역에서 일어나거나(stack overflow), heap(heap overflow)에서 일어날 수 있다. integer overflow나 over-writing이나 over-reading 하는 경우에도 발생 할수 있다. buffer-overflow 가 일어나게 되면 기본적으로crash(ex.bluescreen)이 일어나고, 개인정보를 훔친다거나 중요한 정보들을 훼손하고 attacker가 원하는 대로 code를 실행할 수 있게 된다.
buffer - overflow를 막기 위해서는 Memory - safety를 하는 것이 중용하다. software security에는 주로 C/C++ 언어가 사용되는데 대표적으로 Stack-canaries , DEP, ASLR, SoftBound, CFI 기법들이 있다.
* C 에서 scanf("%s") 함수는 절때 사용하지 말것!(buffer-overflow 유발)
4. SQL injection
www(World Wide Web) 에서 취약점을 노린 attack 이다.
* 메모리 구조(32bit = 4GB 기준)
1) stack 영역 : local variable (지역 변수) 및 매개 변수 저장, 함수의 호출과 함께 할당, 호출이 끝나면 소멸
2) heap 영역 : 런타임에 크기가 결정됨, 사용자에 의해 동적으로 메모리 할당 및 해제(malloc)
3) data 영역 : 전역 변수 및 static variable(정적 변수) 저장 , 프로그램 시작과 함께 할당되며 프로그램이 종료되면 소멸
4) Text 영역 : code 영역이라고도 함 ,실행 할 프로그램의 코드 저장 , 코드 영역에 저장된 명령어를 하나씩 가져가서 처리
'computer science > Cryptography' 카테고리의 다른 글
[crypto] secret key cryptography (0) | 2023.07.07 |
---|---|
[crypto] Web Security (0) | 2022.12.10 |
[crypto] SSL/TLS (0) | 2022.12.08 |
[crypto]Authentication Protocols (0) | 2022.12.07 |
[crypto] Hash (0) | 2022.12.05 |