Dodatkowe szyfrowanie danych w komunikacji client server

Dodatkowe szyfrowanie danych w komunikacji client server
GA
  • Rejestracja:ponad 4 lata
  • Ostatnio:około rok
  • Postów:68
0

Mam aplikacje desktopową, która przesyła poufne dane do mojej aplikacji webowej.
Chciałbym za wszelką cene się zabezpieczyć przed wyciekiem takich danych, dlatego też rozważam dodatkowe szyfrowanie w postaci klucza publicznego po stronie klienta i prywatnego po stronie serwera, za pomocą którego po prostu zaszyfruje przesyłany payload. Pytanie czy takie coś ma w ogóle sens, czy sam fakt że dane lecą po HTTPS już jest wystarczający?

KE
  • Rejestracja:około 6 lat
  • Ostatnio:około 4 godziny
  • Postów:661
4

Pomijasz jeden ważny aspekt - przed czym (kim) chcesz się bronić? Bo mówiąc "wyciek danych" mam wrażenie, że chodzi ci o kogoś, kto podsłucha twoje połączenie sieciowe po drodze (np. w hotelowym WiFi) i rozszyfruje sobie te dane. W tym przypadku wymuszony HTTPS jest nie do złamania. A krypto asymetryczne pewnie doda ci +10 do poczucia bezpieczeństwa.

Ale - jeśli bronisz się przed użytkownikiem aplikacji, to przecież mogę odpalić debugger i sobie te dane z pamięci wyciągnąć. Na co wtedy szyfrowanie? Może tutaj trzeba się zastanowić?

GA
  • Rejestracja:ponad 4 lata
  • Ostatnio:około rok
  • Postów:68
0

Case jest taki:

  • klient wpisuje w apce desktopowej dane logowania username/password i wysyla je w body/headerach do serwera
  • serwer uderza do innej aplikacji webowej by na podstawie tych danych uzyskac bearer token
  • nastepnie z tym tokenem wykonuje kilka operacji w tej aplikacji webowej i zwraca ich wynik do apki desktopowej
  • username/password trzymany jest po stronie klienta
  • token trzymany jest w pamieci / krotko zyjacym cache tylko na czas wykonania tych kilku operacji, tak by nie pytac o nowy token przy kazdym callu

Wiec jasne, klient aplikacji desktopowej moze sobie wyciagnac swoje hasla, czy moj klucz publiczny, ale to raczej nie problem.
A pozostale przypadki - tutaj wychodzi na to ze sam HTTPS spokojnie wystarczy?

markone_dev
  • Rejestracja:około 3 lata
  • Ostatnio:około 22 godziny
  • Postów:810
4

A pozostale przypadki - tutaj wychodzi na to ze sam HTTPS spokojnie wystarczy?

Używasz aplikacji bankowej czy fb na telefonie? To jest właśnie idealny przykład komunikacji klient-serwer zabezpieczonej TLS-em. Więc jeśli ten sposób zabezpieczenia transmisji jest wystarczajacy dla banków to czym się przejmujesz?

P.S. dlatego programiści powinni mieć podstawowa wiedzę z zakresu sieci komputerowych i serwerów, a nie kłapać dziobem ze wyzyskujo


Programujący korpo architekt chmurowy.
Udzielam konsultacji i szkoleń w obszarze szeroko pojętego cloud computingu (Azure, AWS) i architektury systemów IT. Dla firm i prywatnie.
DevOps to proces nie stanowisko.
edytowany 1x, ostatnio: markone_dev
JB
  • Rejestracja:około 2 lata
  • Ostatnio:4 dni
  • Lokalizacja:Holandia
  • Postów:843
0

Zrób kompresję danych. I w innej formie masz i szybciej będzie chodzić.


AK
  • Rejestracja:ponad 6 lat
  • Ostatnio:około rok
  • Postów:3561
3

Re: dodatkowe szyfrowanie

Zwykle, jak junior programista chce "ulepszyć po fabryce" np jako DODATKOWE szyfrowanie - życie pokazuje że osłabia projekt, np wprowadza dodatkowe punkty crackowania, których nie było wcześniej.

@kelog: @markone_dev: popieram

@johnny_Be_good: jak zwykle nie na temat


Bo C to najlepszy język, każdy uczeń ci to powie
SL
  • Rejestracja:około 7 lat
  • Ostatnio:około 8 godzin
  • Postów:862
0

Wprowadzając dodatkowe szyfrowanie chronisz się przed tym, że nawet jak ktoś ci ukradnię domenę i wsadzi swój certyfikat to twoje dane są bezpieczne.

piotrpo
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 13 godzin
  • Postów:3277
1

Nie ma sensu wprowadzanie dodatkowego (ponad HTTPS) szyfrowania transmisji danych. Zadbaj o to, żeby HTTPS był dobrze skonfigurowany (protokoły, długość klucza, certificate pinning...). Natomiast mając wartościowe dane, należy upewnić się, że są one chronione na każdym etapie, w tym w spoczynku (na dyskach).
Co się stanie, jeżeli ktoś zdobędzie fizyczny dostęp do urządzenia? Dane nadal będą dostępne? Co jeżeli ktoś zdobędzie fizyczny dostęp do do dysku serwera? Jak chronione są backupy? Co w przypadku gdy ktoś włamie się na serwer baz danych? Czy da się zabezpieczyć dane przed odczytaniem przez programistę/devopsa?

Zobacz pozostałe 2 komentarze
KE
Zastanawiam się, jak zabezpieczyć się przed odczytaniem danych przez programistę/devopsa. Bo wg mnie, jest to zupełnie niemożliwe. Jeśli aplikacja ma dostęp do danych, to programista też. Widzimy w organizacjach mnóstwo "security theater" w SSL, szyfrowanie at rest, wszystko cacy, a i tak devops sobie dumpa zrzuci. Bez zaufania ani rusz.
piotrpo
Zależy od przypadku użycia. Ale można trzymać klucze szyfrujące tak, żeby devops (albo pojedynczy devops) nie był w stanie się do nich dostać. Np. kontener ma prawo odczytać jakiegoś keyvaulta, a devops nie. No i popatrz jak są np. ogarniane te kwestie w BitWarden i podobnych.
KE
Akurat fajny przykład podałeś, bo żeby tego vaulta odczytać, to ktoś musiał coś do niego zapisać. Czyli ktoś miał (tudzież ma bo sobie zapisał) ten sekret u siebie na kompie i wracamy do punktu wyjścia. Bezpieczeństwo zależy tylko od zaufania ludziom.
piotrpo
Niekoniecznie. KV może te klucze generować sobie "wewnątrz". Może też być usługą działającą jak Yubi i dokonywać jedynie odszyfrowania. Oczywiście ciężko jest zrobić tak, że "nie da się", ale już "pojedynczy gostek nie może" jest osiągalne.
KE
W sumie racja, jak symetrycznie to chyba widzę jak to by wyglądać mogło. Dzięki :)
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)