Secure Coding
소프트웨어 개발 보안 또는 시큐어 코딩(Secure Coding)이란 안전한 소프트웨어 개발을 위해 소스 코드 등에 존재할 수 있는 잠재적인 보안 취약점을 제거하고, 보안을 고려하여 기능을 설계 및 구현하는 등 소프트웨어 개발 과정에서 지켜야 할 일련의 보안 활동을 말한다. 인터넷 홈페이지나 소프트웨어 개발 시 보안 취약점을 악용한 해킹 등 내외부 공격으로부터 시스템을 안전하게 방어할 수 있도록 코딩하는 것이 여기에 해당한다.
미국은 2002년 연방정보보안관리법(FISMA)을 제정해 시큐어 코딩을 의무화했고, 마이크로소프트는 윈도 비스타를 개발할 때 시큐어 코딩을 도입했다. 대한민국의 경우 2012년 12월부터 SW 개발 단계부터 보안 취약점을 제거하는 'SW 개발 보안 의무제'가 시행되었다. 이에 따라 공공기관의 정보화 사업 중 40억원 이상의 발주는 시큐어 코딩을 의무화했고, 2014년 12월 31일까지는 20억원 미만의 사업에도 의무적으로 적용된다.
Key store
Credential Store항목 참조. (OS별, 안전한 키 저장소에 대한 정리)
License key
해당 항목 참조
Key generate
- Stackoverflow - implementation for product keys (closed)
- CodeProject - A simple software key useful to protect software components
Symmetric algorithms are limited, in that any novice cracker with a disassembler can find your key (or the algorithm used to generate one) and make a "keygen".
For this reason, asymmetric cryptology is the way to go. The basic premise is something like this:
- When the user purchases a license from you, you collect certain identifying details about the user and/or their environment (typically, this is just a full name; sometimes a company, too).
- You make a 128-bit MD5 hash of this information.
- Using a 128-bit Elliptic Curve crypto, encrypt this hash using the private key on the server.
- The 128-bit cipher text can be represented to the user as a 25-character string consisting of letters and digits (plus separating dashes for readability). Notice that 26 letters + 10 digits = 36 discreet values, and that 36^25 > 2^128.
- The user types this product key into your registration dialog. The client software converts it back to a 128-bit number (16 bytes), decrypts that using the public key of your EC crypto, and compares the result to an MD5 hash of the user's personal information, which must match what was used for registration.
Python Security Libraries
Python:Libraries#Security 항목 참조.
Application Isolation
Application Sandboxing 또는 Application Containerization. 항목 참조.
Password security
See also
- Authentication
- Information Security
- C++:SecureProgramming (C++)
- Hash function
- Cryptographic hash function
- Secure Remote Password protocol (SRP)
- dmidecode: Linux 하드웨어 정보 확인. (Product UUID 획득)
- Serial code
- License key
- Proof of work
Favorite site
- Wikipedia (en) 시큐어코딩에 대한 설명
- 소프트웨어 보안약점 진단가이드 1
- 소프트웨어 개발보안가이드(2013.11) -1 2
- iOS_Security_Guide_Oct_2014.pdf 3
- Secure Programming for Linux and Unix HOWTO 4
- [추천] NAVER D2 - 안전한 패스워드 저장 5
- [추천] 패스워드 보안의 기술 6
- 조대협의 블로그 - Security-애플리케이션 보안 1. 인증 방식 및 비밀번호 암호화
- [추천] 비밀번호 해시에 소금치기 - 바르게 쓰기 7
References
-
Software_security_weaknesses_diagnosed_Guide_2013.zip ↩
-
Software_Development_Security_Guide_2013.zip ↩
-
IOS_Security_Guide_Oct_2014.pdf ↩
-
Secure-Programs-HOWTO.7z ↩
-
NAVER_D2_-_Secure_password_storage.pdf ↩
-
Technology_of_password_security_-_CODEOK.pdf ↩
-
Salted_Password_Hashing_-_Doing_it_Right.pdf ↩
-
C_Secure_Coding_Guide.pdf ↩
-
Java_Secure_Coding_Guide.pdf ↩