본문 바로가기

전체 글

(6)
블록체인의 이점과 블록체인의 이점이 아닌 것 블록체인 A decentralized, distributed way of managing information across parties who don’t necessarily trust each other but have an interest of common outcome 서로 신뢰하지 않지만 공통의 관심사를 가지는 주체들 끼리 정보(information)를 관리할 수 있는 탈중앙화, 분산화 된 시스템 탈중앙화 (분산 시스템) 다수의 참여자들이 정보의 유지에 참여함 immutability(불변성) 참여자들이 정보가 무결하다는 것을 직접 입증할 수 있음 원장에 기록되는 정보는 삭제되지 않음 암호학적인 기술을 통해 트랜잭션이 원장에 추가된 이후로는 수정되지 않았다는 것을 보장 블록체인을 써서 얻는 이점 ..
Bean Validation 사용 시 API 에러 메시지 처리 개요 REST API에서 입력 데이터 검증을 위해 Bean Validation을 사용 시 에러를 처리하고 에러 메시지를 사용하고 커스텀하는 방법을 알아본다. Validation 설정 Bean Validation을 사용하기 위해 우선 spring-boot-starter-validation 의존성을 추가한다. implementation 'org.springframework.boot:spring-boot-starter-validation'Bean 커스텀 설정 사용자 정의한 Message Source에서 메시지를 지정하여 사용하려면 LocalValidatorFactoryBean을 커스텀하여 메시지 소스를 원하는 경로로 지정할 수 있다. @Bean public MessageSource message..
SolarWinds sunburst 사고 요약 SolarWinds에 대한 supply chain attack 을 통해 공격자가 SolarWinds의 Orion 이라는 제품의 업데이트 서버를 탈취해 정식으로 배포되는 업데이트 버젼에 백도어를 심어 배포한 사고이다. Trojan 유형의 백도어(SUNBURST로 명칭)가 탑재된 패치가 서명까지도 공식 서명이 되어 배포되었으며 이를 업데이트 한 사용자들이 몇달동안 알지 못한 채 방치되었다. 공식 서명이 이루어졌기 때문에 백도어가 심어진 패치가 정상적인 버전처럼 설치되었을 것이고 이로 인해 발견 또한 늦어지게 된 것이다. 또한 탐지를 회피하기 위해 여러가지 방법을 시도한 것이 눈에 띈다. 백도어는 다음과 같은 작업을 수행하였다. 백도어의 트래픽을 실제 SolarWinds SW의 프로토콜 명칭 사용 Vic..
Klaytn BApp 개발을 위한 API 요약 Klaytn블록체인에 트랜잭션을 생성하고 데이터를 읽는데는 여러가지 방법이 있다. 일반적으로 블록체인 플랫폼을 이용하기 위해서는 해당 블록체인에 참여하는 노드를 운영하여야 하지만 Klaytn은 노드들에 간접적으로 접근할 수 있는 아래와 같은 방법들을 제공한다. Klaytn node를 운영하여 블록체인에 직접 명령 호출 KAS(Klaytn API Service) 를 이용한 API 호출 Klip API를 이용하여 Klip 지갑 서비스를 사용 각 방법 중 자신이 필요로 하는 기능과 서비스 형태에 맞도록 골라 사용 할 수 있다. 이런 식으로 특정 주체에서 운영하는 서버를 통해 노드에 접근하는 것은 블록체인의 주요한 특성이자 장점 중 하나인 탈중앙성을 잃는다고 볼 수도 있다. 하지만 어차피 데이터 자체는 암..
IPFS(InterPlanetary File System) InterPlanetary File System IPFS는 마치 토렌트처럼 파일을 분산된 여러 노드에 저장하고 불러올 수 있는 peer-to-peer 블록체인 파일 시스템이다. 기존의 웹 프로토콜은 서버-클라이언트 관계로 어떤 컨텐츠에 접근하려면 서버의 위치(URL) 을 통해 클라이언트와 해당 서버와 직접 통신을 하는 방식이다. 반면 IPFS 프로토콜은 content addressing 이라는 방식을 통해 컨텐츠 자체의 고유한 hash 값(CID)을 통해 컨텐츠를 보유하고 있는 노드를 찾아 컨텐츠를 받아간다. 즉, 컨텐츠에 접근하기 위해 고정된 위치에 있는 서버에 접근하는 것이 아니라 해당 파일을 가지고 있는 가장 가까운 노드에 접근하므로 (노드의 현황에 따라 다르겠지만)보다 효율적으로 자원에 접근할 수..
nginx, docker compose를 이용한 리버스 프록시 구성 개요 진행중인 프로젝트의 초기 PoC 버전 배포를 위해 AWS EC2 인스턴스 1대에 nginx(web server), web(frontend), api(backend) 총 3개의 컨테이너를 띄우고 nginx 웹서버를 구성해 서버사이드에 리버스 프록시 형태로 web, api 접근을 라우팅 하도록 구성하려고 한다. 구성 전체 구성은 다음과 같다. http 포트(80) 에 nginx 를 오픈하고 3000번 포트에 프론트엔드, 8080포트에 백엔드를 구성하였고 / 경로로 오는 호출은 프론트엔드로, /api 경로로 오는 호출은 백엔드로 포워딩 해줄 수 있도록 하는 구성이다. 프론트엔드와 백엔드간의 통신은 public domain을 사용해 이루어지게 되는데 이는 백엔드 API가 외부에 오픈되야하는 API는 아니지..