• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Automatic security in Python

 
Greenhorn
Posts: 5
  • Number of slices to send:
    Optional 'thank-you' note:
I need a simple platform-independent Python script that does the following:

I need all of these steps to be safe

Some of the problems are that Python can't wipe data in memory, also I don't know if it is even possible to store encrypted data safely and at the same time decrypt it without any user interaction
 
Saloon Keeper
Posts: 15624
366
  • Number of slices to send:
    Optional 'thank-you' note:
There's a lot you're not telling us.

Is this a web application? Will the code run on a server? What kind of string needs to be encrypted? Why does it need to be decrypted? How long will the string be stored/used? How often will it be retrieved/decrypted? Who's key will be used to encrypt the string?

Security is never "automatic". It depends on a lot of variables that you have to think hard on.
 
Ahmed El-Zeedy
Greenhorn
Posts: 5
  • Number of slices to send:
    Optional 'thank-you' note:

Stephan van Hulst wrote:There's a lot you're not telling us.

Is this a web application? Will the code run on a server? What kind of string needs to be encrypted? Why does it need to be decrypted? How long will the string be stored/used? How often will it be retrieved/decrypted? Who's key will be used to encrypt the string?

Security is never "automatic". It depends on a lot of variables that you have to think hard on.



I want to create an encrypted 7z archive daily using 7-Zip software (i.e. using subprocess.run()), so:
- The sensitive string holds the password
- The string should be decrypted and passed as an argument to 7z exectutable, something like this:

- The code won't run on a server and won't be used in a web app
- It will be retrieved twice daily, once for creating the archive and once for testing its integrity
- It should remain stored for as long as possible, at least 30 days

Regarding the word "automatic", I just meant that everything is done without user involvement while still being secure
 
Stephan van Hulst
Saloon Keeper
Posts: 15624
366
  • Number of slices to send:
    Optional 'thank-you' note:
Well now, you've gone and created a problem: which key are you going to use to encrypt the password?

Either the application will need to ask you for a key so it can decrypt the archive password, or it needs to store the key in some file.

If it needs to ask you for a key, you might as well enter the zip password directly. If instead you store the encryption key on disk, you might as well store the zip password on disk unencrypted.
 
Ahmed El-Zeedy
Greenhorn
Posts: 5
  • Number of slices to send:
    Optional 'thank-you' note:

Stephan van Hulst wrote:Well now, you've gone and created a problem: which key are you going to use to encrypt the password?

Either the application will need to ask you for a key so it can decrypt the archive password, or it needs to store the key in some file.

If it needs to ask you for a key, you might as well enter the zip password directly. If instead you store the encryption key on disk, you might as well store the zip password on disk unencrypted.



I want to protect the password with something that is device-specific (e.g., something like TPM (I have 1.2) but I don't have enough knowledge about it), I don't care much about having the stored password remain accessible since I only store it for automation

If not possible, then maybe I would have to use an easier password or PIN to encrypt it

Regardless, I don't know how to implement these steps securely
 
Stephan van Hulst
Saloon Keeper
Posts: 15624
366
  • Number of slices to send:
    Optional 'thank-you' note:
I did some looking around, but I couldn't find Python libraries that directly target TPM 1.2. That's not to say that there aren't any!

I discovered that Microsoft offers a Python implementation of their TPM software stack. Note that this targets TPM 2.0. Whether it is usable for an architecture that includes TPM 1.2 hardware, I don't know.

Microsoft's CNG API offers a way to store persistent keys in hardware security modules. Maybe you can call it from your Python application using Pybind or Nanobind.

Before we continue recommending an approach to you, please explain the full use case to us. Why are you creating an encrypted archive? What does it contain? On what system will the application be running? How does the current user relate to the archive? Are they the owner of the archive? Are they the owner of the system creating the archive? What happens to the archive after it's created? How does the application get started? Does the application keep running after it's started, or is it invoked periodically?
 
Ahmed El-Zeedy
Greenhorn
Posts: 5
  • Number of slices to send:
    Optional 'thank-you' note:
I appreciate your efforts!

A user uses this software on his Windows PC (and preferably Linux and MacOS too) to create encrypted backups in a folder which is actively synchronized by a cloud sync software of any provider to create cloud backups without worrying about privacy... The scheduling is done by an external scheduling tool (e.g. Task Scheduler)... The program terminates once archive creation and integrity testing is done

After thinking about it, I found out that I totally missed the fact that the data being backed up itself would be stored unencrypted on the user's device; so the data is already vulnerable once his device is compromised; so storing the password securely isn't going to offer any benefit

Anyways, I think I found a solution regarding encrypting the password with OS user credentials: https://pypi.org/project/keyring/
 
Don't get me started about those stupid light bulbs.
reply
    Bookmark Topic Watch Topic
  • New Topic
vceplus-200-125    | boson-200-125    | training-cissp    | actualtests-cissp    | techexams-cissp    | gratisexams-300-075    | pearsonitcertification-210-260    | examsboost-210-260    | examsforall-210-260    | dumps4free-210-260    | reddit-210-260    | cisexams-352-001    | itexamfox-352-001    | passguaranteed-352-001    | passeasily-352-001    | freeccnastudyguide-200-120    | gocertify-200-120    | passcerty-200-120    | certifyguide-70-980    | dumpscollection-70-980    | examcollection-70-534    | cbtnuggets-210-065    | examfiles-400-051    | passitdump-400-051    | pearsonitcertification-70-462    | anderseide-70-347    | thomas-70-533    | research-1V0-605    | topix-102-400    | certdepot-EX200    | pearsonit-640-916    | itproguru-70-533    | reddit-100-105    | channel9-70-346    | anderseide-70-346    | theiia-IIA-CIA-PART3    | certificationHP-hp0-s41    | pearsonitcertification-640-916    | anderMicrosoft-70-534    | cathMicrosoft-70-462    | examcollection-cca-500    | techexams-gcih    | mslearn-70-346    | measureup-70-486    | pass4sure-hp0-s41    | iiba-640-916    | itsecurity-sscp    | cbtnuggets-300-320    | blogged-70-486    | pass4sure-IIA-CIA-PART1    | cbtnuggets-100-101    | developerhandbook-70-486    | lpicisco-101    | mylearn-1V0-605    | tomsitpro-cism    | gnosis-101    | channel9Mic-70-534    | ipass-IIA-CIA-PART1    | forcerts-70-417    | tests-sy0-401    | ipasstheciaexam-IIA-CIA-PART3    | mostcisco-300-135    | buildazure-70-533    | cloudera-cca-500    | pdf4cert-2v0-621    | f5cisco-101    | gocertify-1z0-062    | quora-640-916    | micrcosoft-70-480    | brain2pass-70-417    | examcompass-sy0-401    | global-EX200    | iassc-ICGB    | vceplus-300-115    | quizlet-810-403    | cbtnuggets-70-697    | educationOracle-1Z0-434    | channel9-70-534    | officialcerts-400-051    | examsboost-IIA-CIA-PART1    | networktut-300-135    | teststarter-300-206    | pluralsight-70-486    | coding-70-486    | freeccna-100-101    | digitaltut-300-101    | iiba-CBAP    | virtuallymikebrown-640-916    | isaca-cism    | whizlabs-pmp    | techexams-70-980    | ciscopress-300-115    | techtarget-cism    | pearsonitcertification-300-070    | testking-2v0-621    | isacaNew-cism    | simplilearn-pmi-rmp    | simplilearn-pmp    | educationOracle-1z0-809    | education-1z0-809    | teachertube-1Z0-434    | villanovau-CBAP    | quora-300-206    | certifyguide-300-208    | cbtnuggets-100-105    | flydumps-70-417    | gratisexams-1V0-605    | ituonline-1z0-062    | techexams-cas-002    | simplilearn-70-534    | pluralsight-70-697    | theiia-IIA-CIA-PART1    | itexamtips-400-051    | pearsonitcertification-EX200    | pluralsight-70-480    | learn-hp0-s42    | giac-gpen    | mindhub-102-400    | coursesmsu-CBAP    | examsforall-2v0-621    | developerhandbook-70-487    | root-EX200    | coderanch-1z0-809    | getfreedumps-1z0-062    | comptia-cas-002    | quora-1z0-809    | boson-300-135    | killtest-2v0-621    | learncia-IIA-CIA-PART3    | computer-gcih    | universitycloudera-cca-500    | itexamrun-70-410    | certificationHPv2-hp0-s41    | certskills-100-105    | skipitnow-70-417    | gocertify-sy0-401    | prep4sure-70-417    | simplilearn-cisa    |
http://www.pmsas.pr.gov.br/wp-content/    | http://www.pmsas.pr.gov.br/wp-content/    |