Session ID Entropy Calculator
얼마 전 OWASP Cheat Sheet Session Management 항목을 읽다가 Session ID의 값에 대한 Entropy(엔트로피)에 대해서 128 Bits 이상이어야 안전하다고 내용을 확인할 수 있었다.
그런데 현재 Session ID를 가지고 바로 몇 Bit이며, 안전한지 안 했는지 알 수가 없어 해당 부분을 쉽게 확인할 수 있는 계산기를 만들어 보았다.
Session ID Entropy 관련 부분은 좀 더 정리하여 다시 한번 작성하도록 하겠다.
그럼 먼저 해당 계산기를 사용하는 방법에 대해서 간단히 알아보도록 하자.
1. 설치 방법
현재 해당 내용에 대해서는 Github에 정리해서 올려놓았다.
일단 해당 계산기를 사용하기 위해서는 Github를 통해서 Clone을 받도록 하자.
- $ git clone https://github.com/happylie/CSId-Calc.git
# Github Clone 받기
$ git clone https://github.com/happylie/CSId-Calc.git
해당 계산기는 기본 라이브러리를 사용함에 따라서 별도로 다른 라이브러리를 설치할 필요가 없다.
2. 실행 방법
2.1 Help(도움말)
이제 실행할 준비가 다 되었으니 실행해보도록 하자.
우선적으로 정상적으로 구동이 되는지 확인하기 위해서 먼저 Help 옵션을 확인하자.
- $ python csid.py -h
- $ python csid.py --help
# Help 옵션 확인
$ python csid.py -h
usage: Check Session ID Entropy Calculator [-h] [-s SID] [-v]
Check Session ID Entropy Calculator
optional arguments:
-h, --help show this help message and exit
-s SID, --session SID
Session ID
-v, --version show program's version number and exit
2.2 Session ID Entropy(세션 ID 엔트로피) 값 확인하기
이제 Session ID의 Entropy(세션 ID의 엔트로피) 값이 안전한지 한번 알아보도록 하자.
Session ID를 확인하는 방법은 여러 방법이 있으나, 제일 쉽게 브라우저에서 제공하는 개발자 도구를 이용하면 된다.
Session ID를 확인하는 방법에 대해서는 일단 넘어가도록 하겠다.
확인된 Session ID 값을 넣어서 확인 해보도록 하자.
- $ python csid.py -s a00a0a100203
- $ python csid.py -s 1a44f079183C8492d55805ef18f1079b0357c8d6
# Python 실행
$ python csid.py -s a00a0a100203
### Session ID Check Entropy ###
+ Session ID : a00a0a100203
+ String Length : 12
+ Characters : 36 Type
+ Strength : 62.0 Bits
+ Result : Vulnerable(At least 128 Bits)
$ python csid.py -s 1a44f079183C8492d55805ef18f1079b0357c8d6
### Session ID Check Entropy ###
+ Session ID : 1a44f079183C8492d55805ef18f1079b0357c8d6
+ String Length : 40
+ Characters : 62 Type
+ Strength : 238.2 Bits
+ Result : Good
실행하고 나면 아래와 같은 항목으로 결과값을 나타낸다.
- Session ID : 입력한 Session ID(세션 ID)
- String Length : Session ID 값의 길이
- Characters : Session ID 값의 조합된 글자 수
- Strength : Session ID 의 강도
- 128 Bits 이상이 안전
- Result : 결과(Vulnerable / Good)
Characters의 조합 된 글자 수는 아래와 같은 기준으로 확인 하여 Strength의 강도를 계산 한다.
- Lower Case : 26
- Upper Case : 26
- Lower & Upper Case : 52
- Arabic numerals : 10
- Lower Case & Arabic numerals : 36
- Upper Case & Arabic numerals : 36
- Lower & Upper Case & Arabic numerals : 62
이제 사용 방법에 대해서 다 알아보았다.
추후 필요한 내용이 있으면 해당 계산기에 대해서 업데이트 하도록 하겠다.
또한, 해당 계산기에 문제가 있거나 아니면 추가할 기능이 필요하다면 Github Issues에 등록해 주거나 댓글로 남겨주면 확인 후 진행하도록 하겠다.
🌵댓글