Network 10

OpenSSL provider(oqs provider 예제로 이해)

OpenSSL Provider는 OpenSSL 3.0 이상에서 도입된 기능으로, Provider를 사용하면 OpenSSL의 기능을 확장하고, 특정 요구 사항이나 알고리즘을 구현할 수 있다. 간단하게 말하자면 기존의 OpenSSL이 제공했던 기능들 외에 다른 기능을 사용하고 싶다면 OpenSSL에서 제공하는 C언어 API로 내가 구현한 코드(or open source 등)를 감싸서 사용하는 거다. 이게 기존에 Engine이라는 기능으로 제공되었다고한다. 2023년에 발표한 기능이라 2024년도 기준으로 자료도 별로 없고 OpenSSL 공식 사이트에서 사용법 접하니까 이해가 하나도 안 가더라. 코드 한 줄 짜기 힘들었다. https://docs.openssl.org/3.0/man7/provider/ 좀 더 ..

Network/OpenSSL 2024.10.18

Chrome 키 교환 알고리즘, X25519Kyber768 (유해사이트 차단 뚫림)

키 교환 과정에 대해 너무나 잘 정리해 둔 글이 있어 올린다. 키 교환 과정에 대한 지식이 없다면 해당 글들을 읽어보길 바란다. 아래에서 설명할 유해사이트 차단이 뚫리는 이유에 대해 먼저 TLS 1.3 임이 이유 중 하나임을 알고 가길 바란다.https://aws-hyoh.tistory.com/m/113https://eunhyee.tistory.com/205Kyber768 이란?NIST에서 2022년에 선정한 양자컴퓨터의 공격에도 안전한(안전하다고 여겨지는) 알고리즘이다. 이런 알고리즘을 양자내성알고리즘 줄여서 PQC라고 한다. 그중 Key 교환에 사용되는 알고리즘이고, 풀 네임은 CRYSTALS-KYBER이다. 768은 보안 강도라고 보면 된다. 같은 알고리즘에서 일반적으로 뒤에 오는 숫자가 클수록 보..

Network 2024.05.12

netcat windows 다운로드, 바이러스 조심

netcat 이란? 네트워크 상에서 특정한 컴퓨터와와 통신하기 위한 유틸리티(Utility)로 Netcat을 사용할 수 있다. 줄여서 NC(Network Connection)라고도 부른다. TCP/UDP 프로토콜을 이용하는 환경에서는 범용적으로 적용이 가능하다는 점에서 간단한 네트워크 통신을 위한 목적으로 간단히 사용할 수 있다. 윈도우 공식 다운로드 방법에 앞서... 리눅스 운영체제에서는 Netcat을 사용하기 어렵지 않지만 윈도우(Windows) 운영체제를 사용하는 사람들은 별도의 소프트웨어를 설치해야 한다. 사실 나도 windows에서 netcat으로 간단한 테스트를 위해 다운로드 받기 위해 구글링을 시도했었는데 연관 검색어에 netcat virus라는 키워드가 계속 눈에 띄었다. 왜 저런 키워드가..

Network 2024.03.11

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

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

Network/OpenSSL 2024.01.06

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

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

Network/OpenSSL 2023.11.07

[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

[gRPC] gRPC란? 설치 방법

Golang을 사용하여 gRPC 프로토콜을 공부해 볼 기회가 있었습니다. RPC(remote procedure call)이라는 네트워크 5 계층 프로토콜이 있다는 것은 알고 있었지만 한 번도 사용해 본 적이 없어서 공식문서를 보면서 공부했던 기억이 있습니다. 솔직히 처음에는 감이 오질 않았습니다. 공식 문서를 봐도 타노스의 핑거스냅을 맞은 듯 다음날이면 기억이 삭제되어 있었습니다. (캡틴큐를 마셨던 것 같기도..🤔) 그러므로 저도 정리할 겸 gRPC가 처음이신 분들을 위해 시작합니다. gRPC란? 이해가 안 되더라도 한번 읽어보시길 권장합니다. gRPC는 Google에서 개발한 고성능 RPC (원격 프로시저 호출) 프레임워크입니다. 여기서 RPC란 네트워크를 통해 원격에서 함수 또는 프로시저를 호출하는 ..

Network/gRPC 2023.10.26