openssl 10

SoftHSMv2 사용해보기 with Linux, OpenSSL, pkcs11 provider, OpenSC

SoftHSM은 소프트웨어 기반의 하드웨어 보안 모듈(HSM)이다. 즉, SoftHSM은 실제 하드웨어 장비 대신 소프트웨어로 암호화 작업을 수행할 수 있도록 설계되어 있다. 모두 소프트웨어로 구현되어 있는데 HSM이란 말을 쓰기는 좀 그렇지만 PKCS#11 인터페이스를 구현하여, 암호화 키와 인증서 같은 민감한 데이터를 안전하게 저장하고 관리하는 데 사용하기 때문에 기본적인 기능상의 차이는 크게 없을 것이다. 내 추측으로 실제 판매되는 HSM들 중에 절반 이상은 SoftHSM을 참고 또는 이용했을 거다. HSM이 왜 필요한지는 해당 영상으로 이해 가능하다. https://youtu.be/szagwwSLbXo?si=WJQKj4yAo1YFwUye 여기서는 SoftHSM2, OpenSSL, OpenSC, p..

HSM 관련 2024.10.26

Open Quantum Safe의 liboqs(양자내성암호 라이브러리) 빌드

Open Quantum Safe(oqs) 란?양자 내성 암호화의 개발과 프로토타입 제작을 지원하는 오픈 소스 프로젝트여기서 양자 내성 암호라는게 뭔지 간단하게 짚고 넘어가겠다. 그 전에 IBM의 양자컴퓨터의 개발 로드맵 부터 봐보자. 2023년 초에 발표한 자료로 기억하는데 초록색으로 체크된 부분은 모두 저기까지 개발 완료했다는 IBM의 주장?이다.양자컴퓨터 개발만 놓고 보았을 때 상용화하려면 10년 이상은 걸릴 것으로 보인다. 여기까진 기존 암호에 대해 지금 당장 엄청난 영향력을 끼치지 못 할 것 처럼 보인다. 하지만 여기서 중요한 문제가 발생한다. 바로 피터쇼어의 쇼어 알고리즘에 의해서이다. 이 분이 1994년, 양자 컴퓨팅을 이용하여 현 공개키암호 기반 문제를 빠르게 해독할 수 있는 쇼어 알고리즘을..

Network/OpenSSL 2024.01.06

[OverTheWire:Bandit] Level 16 → Level 17

2023.11.28 - [워게임/Bandit (Linux 초보자들을 위한 워게임)] - [OverTheWire:Bandit] Level 15 → Level 16 Level 16 접속정보 컴퓨터의 사용자 이름( 계정명 ): bandit16 호스트(접속해야 할 주소):bandit.labs.overthewire.org 포트 번호: 2220 비밀번호: JQttfApK4SeyHwDlI9SXGR50qclOAil1 (2023.11 기준) PS> ssh bandit16@bandit.labs.overthewire.org -p 2220 문제 및 해설 https://overthewire.org/wargames/bandit/bandit17.html 해설: 다음 레벨의 비밀번호는 현재 레벨의 비밀번호를 로컬호스트의 31000에..

[OverTheWire:Bandit] Level 15 → Level 16

2023.11.26 - [워게임/Bandit (Linux 초보자들을 위한 워게임)] - [OverTheWire:Bandit] Level 14 → Level 15 Bandit Level 15 컴퓨터의 사용자 이름( 계정명 ): bandit15 호스트(접속해야 할 주소):bandit.labs.overthewire.org 포트 번호: 2220 비밀번호: jN2kgmIXJ6fShzhT2avhotn4Zcka6tnt (2023.11 기준) PS> ssh bandit15@bandit.labs.overthewire.org -p 2220 문제 및 해설 문제해석: 다음 단계의 비밀번호는 현재 단계의 비밀번호를 SSL 암호화를 사용하여 로컬 호스트의 포트 30001로 전송하면 검색할 수 있습니다. 해당 문제는 openssl..

[OpenSSL] BigInteger 빅 넘버 라이브러리

"빅 넘버" 또는 "빅넘", BigInteger은 일반적인 정수 데이터 타입의 범위를 넘어선 매우 큰 정수를 의미합니다. 예를 들어, 수백 자리 이상의 정수를 다루는 경우에 필요합니다. 대부분의 프로그래밍 언어는 일반적으로 제공하는 정수 타입의 범위를 초과하는 큰 정수를 다루기 어렵기 때문에, 이런 경우에는 빅 넘버 (Big number) 라이브러리를 사용합니다. 예를 들어, C언어에서는 GMP, OpenSSL 라이브러리와 같은 빅 넘버 라이브러리를 사용하여 큰 정수를 다룰 수 있습니다. 마찬가지로 JAVA에도 BigInteger 라이브러리가 있습니다. Python에서는 내장된 빅 넘버 지원이 있어 별도의 라이브러리 없이도 큰 정수를 다룰 수 있습니다. 다만 이 또한 한계가 있기 때문에 저 같은 경우 P..

Network/OpenSSL 2023.11.07

[암호학] RSA 암호 (공개키암호) OpenSSL

비전공자를 위해 상세한 정보들은 제외했습니다. 질문은 댓글 달아주시면 최대한 자세하게 답변드리도록 하겠습니다 :) RSA는 정수론과 관련있는 공개키 암호 알고리즘입니다. 1977년 Ron Rivest, Adi Shamir, Leonard Adleman 3명이 인수분해의 어려움을 기반으로 한 공개키암호를 제안했습니다. RSA는 "Rivest-Shamir-Adleman"의 약자로, RSA 암호 시스템은 공개키와 개인키라는 두 개의 키를 사용하여 데이터를 암호화하고 해독하는데 사용됩니다. 공개키는 누구나 알 수 있지만, 해당 키를 사용하여 암호화된 메시지를 해독할 수 없습니다. 개인키는 오직 키의 소유자만이 알고 있어야 하며, 이 키를 사용하여 암호화된 메시지를 해독할 수 있습니다. 여기서 공개키는 누구나 알..

암호학 강의 2023.11.06

[OpenSSL] AES 사용하기

해당 글은 OpenSSL 3.14 버전으로 테스트 하였습니다. OpenSSL 1.X 버전에서 사용가능한 함수가 3.0 이상에서는 사용되지 않는 경우가 있으니 참고해주세요. 2023.10.28 - [OpenSSL] - [OpenSSL] OpenSSL 설치 방법 리눅스(Linux) 2023.10.29 - [OpenSSL] - [OpenSSL] OpenSSL 공식사이트에서 설치 in 윈도우(Windows 11) CLI를 통한 AES 암호화 input.txt는 암호화할 원본 파일을 하나 생성하겠습니다. openssl 명령어만 치면 다음과 같이 어떤 방식으로 암호화할지 선택지가 뜹니다. AES-256-CBC로 암호화를 예시로 사용하겠습니다. $ openssl enc -aes-256-cbc -pbkdf2 -in i..

Network/OpenSSL 2023.11.01

[OpenSSL] OpenSSL 공식사이트에서 설치 in 윈도우(Windows 11)

설치를 위한 사전 준비 프로그램 만약 설치가 잘 안 되어 따라가기 어렵다면 으로 가주세요. Perl 먼저 perl 설치가 필요합니다. 저는 strawberry perl을 설치하겠습니다. http://strawberryperl.com/ 실행시 이런 메시지가 뜨실 수도 있는데 추가 정보를 누르면 실행 버튼이 생깁니다. 실행을 눌러 설치를 완료합니다. cmd나 Windows PowerShell을 켜서 다음과 같이 입력해 보시기 바랍니다. PS> perl -v 다음과 같은 메시지가 뜬다면 설치가 완료된 것입니다. Microsoft Visual C compiler Windows용 C 컴파일러가 필요합니다. 따라서 MinGW나 MSVC 등 취향에 맞는 컴파일러를 설치해 주시면 됩니다. 저는 MSVC를 사용하겠습니다..

Network/OpenSSL 2023.10.29

[OpenSSL] OpenSSL 설치 방법 리눅스(Linux)

Ubuntu & Kali Linux 운영체제에 OpenSSL 설치 방법패키지로 설치하는 방법$ sudo apt update && sudo apt upgrade $ sudo apt install libssl-dev opensslopenssl 공식 사이트에서 설치 공식 다운로드 사이트 - https://www.openssl.org/source/ 저는 가장 최근에 나온 3.14 버전을 다운로드하여 보겠습니다. 빨간색 밑줄로 된 파일입니다.CLI(Command Line Interface) 환경에서는 wget 명령어로 받아줍니다.$ wget https://www.openssl.org/source/openssl-3.1.4.tar.gz압축을 풀어줍니다.$ tar -zxvf openssl-3.1.4.tar.gz압축 해..

Network/OpenSSL 2023.10.28

[OpenSSL] OpenSSL 이란?

OpenSSL은 암호화와 관련된 다양한 프로토콜과 알고리즘을 구현한 오픈 소스 라이브러리입니다. 2014년도에 하트블리드라는 취약점이 발견되긴 했지만 그럼에도 이만한 오픈 소스 라이브러리가 없습니다. 하트블리드 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 하트블리드심장출혈을 나타내는 로고이다. 이 로고와 "하트블리드"라는 이름은 이 문제에 대한 대중의 인식을 이끌어내는데 기여했다.[1][2]CVE 식별자CVE-2014-0160 ko.wikipedia.org 이 라이브러리는 다음과 같은 주요 기능을 제공합니다 암호화 및 복호화: OpenSSL은 대표적인 대칭 및 비대칭 암호화 알고리즘을 구현하고 있습니다. 이를 사용하여 데이터를 암호화하고 복호화할 수 있습니다. 디지털 서명 및 검..

Network/OpenSSL 2023.10.27